<?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>56085</bug_id>
          
          <creation_ts>2011-03-10 02:57:31 -0800</creation_ts>
          <short_desc>[Refactoring] SpellCheckingResult should be replaced with TextCheckingResult</short_desc>
          <delta_ts>2011-04-05 10:23:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>56369</blocked>
    
    <blocked>56811</blocked>
    
    <blocked>57089</blocked>
    
    <blocked>56368</blocked>
    
    <blocked>57088</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>adele</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jiapu.mail</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>365066</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-10 02:57:31 -0800</bug_when>
    <thetext>These two classes are almost identical so we should kill younger one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365902</commentid>
    <comment_count>1</comment_count>
      <attachid>85454</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-11 02:55:13 -0800</bug_when>
    <thetext>Created attachment 85454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365903</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-11 02:56:30 -0800</bug_when>
    <thetext>Ojan, Ryosuke, could you take a look?
My last change was just wrong and I&apos;d like to fix it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365905</commentid>
    <comment_count>3</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-11 03:04:21 -0800</bug_when>
    <thetext>Attachment 85454 did not build on gtk:
Build output: http://queues.webkit.org/results/8135245</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365906</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-11 03:04:54 -0800</bug_when>
    <thetext>Attachment 85454 did not build on qt:
Build output: http://queues.webkit.org/results/8149237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365907</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-11 03:05:28 -0800</bug_when>
    <thetext>Attachment 85454 did not build on chromium:
Build output: http://queues.webkit.org/results/8141234</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365911</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-11 03:20:43 -0800</bug_when>
    <thetext>Attachment 85454 did not build on win:
Build output: http://queues.webkit.org/results/8132210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366824</commentid>
    <comment_count>7</comment_count>
      <attachid>85643</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-13 21:31:56 -0700</bug_when>
    <thetext>Created attachment 85643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366825</commentid>
    <comment_count>8</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-13 21:45:35 -0700</bug_when>
    <thetext>Attachment 85643 did not build on qt:
Build output: http://queues.webkit.org/results/8179112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366826</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-13 21:51:29 -0700</bug_when>
    <thetext>Attachment 85643 did not build on chromium:
Build output: http://queues.webkit.org/results/8175153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366832</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-13 21:57:15 -0700</bug_when>
    <thetext>Attachment 85643 did not build on win:
Build output: http://queues.webkit.org/results/8181076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366837</commentid>
    <comment_count>11</comment_count>
      <attachid>85645</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-13 22:11:38 -0700</bug_when>
    <thetext>Created attachment 85645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366843</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-13 22:36:43 -0700</bug_when>
    <thetext>Attachment 85645 did not build on chromium:
Build output: http://queues.webkit.org/results/8181083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366864</commentid>
    <comment_count>13</comment_count>
      <attachid>85649</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-13 23:52:01 -0700</bug_when>
    <thetext>Created attachment 85649
Yet another attempt to build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366878</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-14 00:12:44 -0700</bug_when>
    <thetext>Attachment 85649 did not build on chromium:
Build output: http://queues.webkit.org/results/8177170</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366891</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-14 01:42:00 -0700</bug_when>
    <thetext>Attachment 85649 did not build on chromium:
Build output: http://queues.webkit.org/results/8177195</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366904</commentid>
    <comment_count>16</comment_count>
      <attachid>85659</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-14 02:29:06 -0700</bug_when>
    <thetext>Created attachment 85659
fix v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366913</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-14 02:50:59 -0700</bug_when>
    <thetext>Attachment 85659 did not build on chromium:
Build output: http://queues.webkit.org/results/8174241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>366914</commentid>
    <comment_count>18</comment_count>
      <attachid>85662</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-14 03:03:58 -0700</bug_when>
    <thetext>Created attachment 85662
fix v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367118</commentid>
    <comment_count>19</comment_count>
      <attachid>85662</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-14 12:18:17 -0700</bug_when>
    <thetext>Comment on attachment 85662
fix v4

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

&gt; LayoutTests/editing/spelling/spellcheck-paste-grammar.html:9
&gt; +&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;

We need a description here or otherwise we&apos;ll have no idea what this test is testing.

&gt; LayoutTests/editing/spelling/spellcheck-paste-grammar.html:17
&gt; +layoutTestController.setAsynchronousSpellCheckingEnabled(true);
&gt; +layoutTestController.waitUntilDone();

We should wrap this inside an if clause so that we don&apos;t get console errors.

&gt; LayoutTests/platform/gtk/Skipped:302
&gt; +

Nit: do we need an extra line here?

&gt; Source/WebCore/ChangeLog:10
&gt; +        This change revealed that TextCheckerClient::requestCheckingOfString() should have
&gt; +        additional request type parameter thus added it.

You should elaborate more on why behavior change was needed and what kind behavior change we observe after this patch.

&gt; Source/WebCore/editing/Editor.cpp:3632
&gt; +    bool shouldMarkSpelling = textCheckingOptions &amp; MarkSpelling;
&gt; +    bool shouldMarkGrammar = textCheckingOptions &amp; MarkGrammar;
&gt; +    bool shouldShowCorrectionPanel = textCheckingOptions &amp; ShowCorrectionPanel;

It&apos;s not great that there is exact replica of this code in Editor::markAllMisspellingsAndBadGrammarInRanges.

&gt; Source/WebCore/editing/SpellChecker.cpp:106
&gt; +    // Currently we only supports spelling and grammar

Nit: &quot;we only supportS&quot; should be &quot;we only support&quot;.

&gt; Source/WebCore/editing/SpellChecker.cpp:169
&gt; +        // Currently we only supports spelling and grammar

Nit: supportS

&gt; Source/WebCore/editing/SpellChecker.cpp:195
&gt; +        if (results[i].type &amp; TextCheckingTypeSpelling) {
&gt; +            if (!markAt(start, results[i].location, results[i].length, DocumentMarker::Spelling, String()))
&gt; +                break;
&gt; +        }
&gt; +
&gt; +        if (results[i].type &amp; TextCheckingTypeGrammar) {
&gt; +            for (size_t j = 0; j &lt; results[i].details.size(); ++j) {
&gt; +                PositionIterator grammarStart = start;
&gt; +                if (!forwardIterator(grammarStart, results[i].details[j].location - startOffset))
&gt; +                    break;
&gt; +                
&gt; +                PositionIterator grammarEnd = grammarStart;
&gt; +                if (!forwardIterator(grammarEnd, results[i].details[j].length))
&gt; +                    break;
&gt; +                if (!markAt(grammarStart, results[i].details[j].location, results[i].details[j].length, DocumentMarker::Grammar, results[i].details[j].userDescription))
&gt; +                    break;
&gt; +            }

Why are we adding this code?  Does this change behavior?  If so, it&apos;s not great that code change like this is checked in with a big refactoring.  Ideally, we&apos;ll split this into two patches.  r- due to the insufficient description of this change.

&gt; Source/WebCore/platform/text/TextCheckerClient.h:56
&gt; +typedef uint64_t TextCheckingTypeMask;

Why are we typedef-ing uint64_t as TextCheckingTypeMask?  We should just use TextCheckingType instead.  See NodeFlags in Node.h or simply search &quot;1 &lt;&lt; 2&quot; for examples of this usage of enum.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:798
&gt; +static void toCoreTextCheckingResults(NSArray *incomingResults, TextCheckingTypeMask checkingTypes, Vector&lt;TextCheckingResult&gt;&amp; results)

Mn... is it really Mac port&apos;s practice to have these &quot;toCore&quot; functions?

&gt; Tools/DumpRenderTree/LayoutTestController.cpp:2142
&gt; +        { &quot;markersForSelectionStartAsText&quot;, markersForSelectionStartAsTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },

I&apos;m not sure if this is a descriptive name.  Also, is there a plan or a possibility of implementing non-text version of this function?  If not, &quot;asText&quot; is redundant given that JavaScript is dynamically typed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367593</commentid>
    <comment_count>20</comment_count>
      <attachid>85791</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-15 02:55:17 -0700</bug_when>
    <thetext>Created attachment 85791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367594</commentid>
    <comment_count>21</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-15 03:00:55 -0700</bug_when>
    <thetext>Hi Niwa-san, thank you for your review!
I updated the patch to address the feedback.

At first, I split out the behavioral change to Bug 56368, LayoutTest and
DRT change should also go there.
Other comments are inline:

&gt; 
&gt; &gt; Source/WebCore/editing/Editor.cpp:3632
&gt; &gt; +    bool shouldMarkSpelling = textCheckingOptions &amp; MarkSpelling;
&gt; &gt; +    bool shouldMarkGrammar = textCheckingOptions &amp; MarkGrammar;
&gt; &gt; +    bool shouldShowCorrectionPanel = textCheckingOptions &amp; ShowCorrectionPanel;
&gt; 
&gt; It&apos;s not great that there is exact replica of this code in Editor::markAllMisspellingsAndBadGrammarInRanges.
This is a bit tricky. I&apos;d like to handle this on Bug 56369, in which I&apos;m going to introduce
bit-field based struct for representing text checking flags.

&gt; Why are we typedef-ing uint64_t as TextCheckingTypeMask?  We should just use TextCheckingType instead.  See NodeFlags in Node.h or simply search &quot;1 &lt;&lt; 2&quot; for examples of this usage of enum.
&gt; 
I&apos;d like to handle this at Bug 56369.
Even until that, I think named typedef is better than opaque int64_t.

&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:798
&gt; &gt; +static void toCoreTextCheckingResults(NSArray *incomingResults, TextCheckingTypeMask checkingTypes, Vector&lt;TextCheckingResult&gt;&amp; results)
&gt; 
&gt; Mn... is it really Mac port&apos;s practice to have these &quot;toCore&quot; functions?
&gt; 
Good point. I renamed it to core().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367795</commentid>
    <comment_count>22</comment_count>
      <attachid>85791</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-15 11:13:16 -0700</bug_when>
    <thetext>Comment on attachment 85791
Patch

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

Okay, the changes look sane to me.  I have a few questions before r+ing this patch though.

&gt; Source/WebCore/platform/text/TextCheckerClient.h:56
&gt; +typedef uint64_t TextCheckingTypeMask;

Do we really need 64-bit for this?  Can&apos;t we just use unsigned integer here?

&gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:874
&gt; -void EditorClientImpl::requestCheckingOfString(SpellChecker* sender, int identifier, const String&amp; text)
&gt; +void EditorClientImpl::requestCheckingOfString(WebCore::SpellChecker* sender, int identifier, WebCore::TextCheckingTypeMask, const WTF::String&amp; text)

Mn... why do we need to use WebCore::SpellChecker instead of SpellChecker now?

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:1053
&gt; +    _sender-&gt;didCheck(_sequence, core(_results.get(), _types));

Where is this core defined?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368154</commentid>
    <comment_count>23</comment_count>
      <attachid>85901</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-15 20:25:58 -0700</bug_when>
    <thetext>Created attachment 85901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368158</commentid>
    <comment_count>24</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-15 20:32:10 -0700</bug_when>
    <thetext>Hi Ryosuke, thank you for review again!

(In reply to comment #22)
&gt; (From update of attachment 85791 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85791&amp;action=review
&gt; 
&gt; Okay, the changes look sane to me.  I have a few questions before r+ing this patch though.
&gt; 
&gt; &gt; Source/WebCore/platform/text/TextCheckerClient.h:56
&gt; &gt; +typedef uint64_t TextCheckingTypeMask;
&gt; 
&gt; Do we really need 64-bit for this?  Can&apos;t we just use unsigned integer here?
&gt; 
Good point. I just copied from original but now change it to unsigned.

&gt; &gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:874
&gt; &gt; -void EditorClientImpl::requestCheckingOfString(SpellChecker* sender, int identifier, const String&amp; text)
&gt; &gt; +void EditorClientImpl::requestCheckingOfString(WebCore::SpellChecker* sender, int identifier, WebCore::TextCheckingTypeMask, const WTF::String&amp; text)
&gt; 
&gt; Mn... why do we need to use WebCore::SpellChecker instead of SpellChecker now?
&gt; 
Oops. removed.

&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:1053
&gt; &gt; +    _sender-&gt;didCheck(_sequence, core(_results.get(), _types));
&gt; 
&gt; Where is this core defined?
It&apos;s inside WebEditorClient.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371223</commentid>
    <comment_count>25</comment_count>
      <attachid>86422</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-21 22:34:56 -0700</bug_when>
    <thetext>Created attachment 86422
Updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372019</commentid>
    <comment_count>26</comment_count>
      <attachid>86422</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-23 01:20:07 -0700</bug_when>
    <thetext>Comment on attachment 86422
Updated to ToT

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

&gt; Source/WebCore/editing/Editor.h:39
&gt; +#include &quot;TextCheckerClient.h&quot;

Are we including this new header file just because we have TextCheckingTypeMask now?  That doesn&apos;t sound like a great trade-off.  Editor.h is included in many headers and we&apos;d like to keep it as light weight as possible.  Can we for example add TextCheckingType.h to avoid this?  Or can we make textCheckingTypeMaskFor a static function that takes Editor or EditorClient?

&gt; Source/WebCore/editing/SpellChecker.cpp:144
&gt; +    switch (type) {
&gt; +    case TextCheckingTypeSpelling:
&gt; +        return DocumentMarker::Spelling;
&gt; +    case TextCheckingTypeGrammar:
&gt; +        return DocumentMarker::Grammar;
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return DocumentMarker::Grammar;
&gt; +    }

I&apos;m not sure if it&apos;s worth having a switch statement if the enum only has two values but I guess you have a plan to add more values?

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:-1052
&gt; -    else if (type &amp; NSTextCheckingTypeGrammar)
&gt; -        coreType = DocumentMarker::Grammar;

Are you certain that _results doesn&apos;t contain grammarDetails?  Or is it harmless to have grammar details?  New core function adds gramar details to the result.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:-1054
&gt; -        coreType = DocumentMarker::AllMarkers;

In new core function, we don&apos;t ever put AllMarkers.  In fact, I think this will cause a behavior change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373384</commentid>
    <comment_count>27</comment_count>
      <attachid>86906</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-25 00:47:55 -0700</bug_when>
    <thetext>Created attachment 86906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373385</commentid>
    <comment_count>28</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-25 00:51:39 -0700</bug_when>
    <thetext>Hi Ryosuke, thank you for taking a look!
I updated the patch.

(In reply to comment #26)
&gt; (From update of attachment 86422 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86422&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/Editor.h:39
&gt; &gt; +#include &quot;TextCheckerClient.h&quot;
&gt; 
&gt; Are we including this new header file just because we have TextCheckingTypeMask now?  That doesn&apos;t sound like a great trade-off.  Editor.h is included in many headers and we&apos;d like to keep it as light weight as possible.  Can we for example add TextCheckingType.h to avoid this?  Or can we make textCheckingTypeMaskFor a static function that takes Editor or EditorClient?
Moved required definitions to TextChecking.h

&gt; 
&gt; &gt; Source/WebCore/editing/SpellChecker.cpp:144
&gt; &gt; +    switch (type) {
&gt; &gt; +    case TextCheckingTypeSpelling:
&gt; &gt; +        return DocumentMarker::Spelling;
&gt; &gt; +    case TextCheckingTypeGrammar:
&gt; &gt; +        return DocumentMarker::Grammar;
&gt; &gt; +    default:
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +        return DocumentMarker::Grammar;
&gt; &gt; +    }
&gt; 
&gt; I&apos;m not sure if it&apos;s worth having a switch statement if the enum only has two values but I guess you have a plan to add more values?
I have no plan at this time. So replaced it with an if statement.


&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:-1052
&gt; &gt; -    else if (type &amp; NSTextCheckingTypeGrammar)
&gt; &gt; -        coreType = DocumentMarker::Grammar;
&gt; 
&gt; Are you certain that _results doesn&apos;t contain grammarDetails?  Or is it harmless to have grammar details?  New core function adds gramar details to the result.
&gt;
We should care about bad grammar. The current code is wrong. I filed Bug 57089 for this.
 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:-1054
&gt; &gt; -        coreType = DocumentMarker::AllMarkers;
&gt; 
&gt; In new core function, we don&apos;t ever put AllMarkers.  In fact, I think this will cause a behavior change.
Old code did it just for safe. we can safely ignore it. (And we should never reach that path anyway.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378496</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-03 00:20:05 -0700</bug_when>
    <thetext>Jia &amp; Adele, could you verify that the said code change is correct (i.e. only improves Mac port)? In fact, I&apos;d like to wait to r+this patch until your confirmation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378922</commentid>
    <comment_count>30</comment_count>
    <who name="Jia Pu">jiapu.mail</who>
    <bug_when>2011-04-04 11:42:05 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Jia &amp; Adele, could you verify that the said code change is correct (i.e. only improves Mac port)? In fact, I&apos;d like to wait to r+this patch until your confirmation.

Seems fine to me. I tried it in Safari (Mac). All tests that I maintain passed. Although, the patch need to be updated to resolve a trivial conflict in Editor.cpp caused by changeset 82159.

I&apos;m also working in Editor.cpp for bug 57665. But nothing is difficult to resolve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378939</commentid>
    <comment_count>31</comment_count>
      <attachid>86906</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-04 12:01:42 -0700</bug_when>
    <thetext>Comment on attachment 86906
Patch

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

Thank you for the confirmation, Jia.

&gt; Source/WebKit/chromium/src/WebTextCheckingCompletionImpl.cpp:53
&gt; +    switch (error) {
&gt; +    case WebKit::WebTextCheckingResult::ErrorSpelling:
&gt; +        return TextCheckingTypeSpelling;
&gt; +    case WebKit::WebTextCheckingResult::ErrorGrammar:
&gt; +        return TextCheckingTypeGrammar;
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return TextCheckingTypeGrammar;
&gt; +    }

You should also replace this with a if statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379189</commentid>
    <comment_count>32</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-04 16:24:01 -0700</bug_when>
    <thetext>Ryosuke, Jia, thank you for helping! 
I&apos;ll land this after addressing the Ryosuke&apos;s point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379710</commentid>
    <comment_count>33</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-05 10:23:46 -0700</bug_when>
    <thetext>Committed r82952: &lt;http://trac.webkit.org/changeset/82952&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85454</attachid>
            <date>2011-03-11 02:55:13 -0800</date>
            <delta_ts>2011-03-13 21:31:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56085-20110311195511.patch</filename>
            <type>text/plain</type>
            <size>67419</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA2OTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNTI1MWY2N2M3ZTBlMjU0YmJjYmRi
ZmUyN2I4Nzc3ZjgzODQ5MGI3Li40NjllZWQ2N2VhYzFkY2YwYmY2YjY2NzQyYTJlODc2MTU1MWVm
NjRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICBBZGRlZCBhbiBhc3luYyBn
cmFtbWFyIGNoZWNraW5nIHRlc3QsIHdoaWNoIGRpZG4ndCB3b3JrIGJlZm9yZSB0aGlzIGNoYWdu
ZS4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXBhc3RlLWdyYW1tYXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0wMy0xMCAgT2phbiBWYWZh
aSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBh
c3RlLWdyYW1tYXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLXBhc3RlLWdyYW1tYXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2ZjBlNWU0
NGU3OGI0YTM4YjUyOTg5OTkwZDRkOTM5Y2YwMzBiNDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw2IEBACitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKK1BBU1MgMCA8PSB3aW5kb3cubWFya2VyVGV4dC5pbmRleE9mKCdbMCwx
Ml0nKSBpcyB0cnVlCitQQVNTIDAgPD0gd2luZG93Lm1hcmtlclRleHQuaW5kZXhPZignR3JhbW1h
cicpIGlzIHRydWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc0ZWNhZDNmMGQz
ZTYwZmM0NTc2ZDJhMzhjNmM0YjhkMThmMDk0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKQEAgLTAs
MCArMSw1MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzwhLS0gc2hvdWxkIGJlIGJhZCBncmFtbWFyIC0tPgorPGRpdiBpZD0ic291cmNlIiBjb250
ZW50RWRpdGFibGU+dGhlcmUgdGhlcmUuPC9kaXY+Cis8ZGl2IGlkPSJ0YXJnZXQiIGNvbnRlbnRF
ZGl0YWJsZT48L2Rpdj4KKzxzY3JpcHQ+CisKK2xheW91dFRlc3RDb250cm9sbGVyLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKHRydWUpOworbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworCitNQVhfVFJZID0gMTA7CisKK3ZhciBzZWwgPSBkb2N1bWVudC5n
ZXRTZWxlY3Rpb24oKTsKK3ZhciBzb3VyY2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic291
cmNlIik7Cit2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwor
c2VsLnNlbGVjdEFsbENoaWxkcmVuKHNvdXJjZSk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiQ29w
eSIpOworc2VsLnNlbGVjdEFsbENoaWxkcmVuKHRhcmdldCk7Citkb2N1bWVudC5leGVjQ29tbWFu
ZCgiUGFzdGUiKTsKKworZnVuY3Rpb24gd2FpbnRVbml0bFZlcmlmeVBhc3NlZCgpIHsKKyAgICBz
ZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0KTsKKyAgICB3aW5kb3cubWFya2VyVGV4dCA9IGxh
eW91dFRlc3RDb250cm9sbGVyLm1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpOworICAg
IGlmICgwID09IHdpbmRvdy5tYXJrZXJUZXh0Lmxlbmd0aCkgeworICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyB3YWludFVuaXRsVmVyaWZ5UGFzc2VkKCk7IH0sIDApOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc2hvdWxkQmVUcnVlKCIwIDw9IHdpbmRvdy5tYXJrZXJUZXh0
LmluZGV4T2YoJ1swLDEyXScpIik7CisgICAgc2hvdWxkQmVUcnVlKCIwIDw9IHdpbmRvdy5tYXJr
ZXJUZXh0LmluZGV4T2YoJ0dyYW1tYXInKSIpOworICAgIHRhcmdldC5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKHRhcmdldCk7CisgICAgc291cmNlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc291cmNl
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3NldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHdhaW50VW5pdGxWZXJpZnlQYXNzZWQoKTsgfSwgMCk7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dAppbmRleCBjMTAwMThmNGM3YzI4M2EwOWQ0ODAzMzk4NzIxMGNmNzE3NGFmYjlm
Li4wNjdmMzM3Y2IxMmQ0ZWM3YTQxYjY0ZGM0YzU4OTJhMGQwNGM1MmQ3IDEwMDc1NQotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0z
MzY3LDYgKzMzNjcsOSBAQCBCVUdXSzU2MDcyIE1BQyBTTk9XTEVPUEFSRCA6IGZhc3QvcmVwYWlu
dC9yZXBhaW50LWFjcm9zcy13cml0aW5nLW1vZGUtYm91bmRhcnkuaAogQlVHV0s1NjA3MiBNQUMg
U05PV0xFT1BBUkQgOiBmYXN0L3JlcGFpbnQvdGV4dC1lbXBoYXNpcy1oLmh0bWwgPSBJTUFHRQog
QlVHV0s1NjA3MiBXSU4tVklTVEEgOiBmYXN0L3J1YnkvYmFzZS1zaG9ydGVyLXRoYW4tdGV4dC5o
dG1sID0gRkFJTAogCisvLyBEb2Vzbid0IHN1cHBvcnQgZ3JhbW1hciBjaGVjayB5ZXQuCitCVUdN
T1JSSVRBIDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbCA9
IFRFWFQKKwogLy8gV2ViS2l0IHJvbGwgODA1NjQ6ODA2MzEsIHN0aWxsIG5lZWQgdG8gYmUgY2xh
c3NpZmllZAogQlVHUk9MQU5EU1RFSU5FUiBNQUMgOiBmYXN0L292ZXJmbG93L292ZXJmbG93LXJ0
bC12ZXJ0aWNhbC5odG1sID0gSU1BR0UrVEVYVAogQlVHUk9MQU5EU1RFSU5FUiBNQUMgOiBmYXN0
L2xpc3RzLzAwOC12ZXJ0aWNhbC5odG1sID0gSU1BR0UrVEVYVApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tp
cHBlZAppbmRleCAxOGJlNGZjZDhjMDZmZjk3MjlkNGVjYjdkNjYzNGFjNGM0ZjAzNzM0Li40NjI3
NDA5YjljYTM0ZTFiMjNkZjk5ZDc4MWYyMWE1Njk4ZTg1ODJhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZApAQCAtMzE2LDYgKzMxNiw3IEBAIG1lZGlhL21lZGlhLWNhcHRpb25zLmh0bWwKICMg
RGF0YVRyYW5zZmVySXRlbXMgaXMgbm90IHlldCBpbXBsZW1lbnRlZC4KIGVkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLmh0bWwKIAorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CiAjIFRFU1RTIEZBSUxJTkcKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTEyNzksNiArMTI4
MCw3IEBAIG1lZGlhL2NvbnRyb2xzLWRyYWctdGltZWJhci5odG1sCiAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc0MAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGlu
Zy1iYWNrc3BhY2UtYmV0d2Vlbi1saW5lcy5odG1sCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stcGFzdGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIu
aHRtbAogCiAjIEZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA3
NTgKICMgVGhlc2UgcmVxdWlyZSBEUlQgc2V0U2VyaWFsaXplSFRUUExvYWRzIGltcGxlbWVudGF0
aW9uIHRvIGJlIHJlbGlhYmxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LWxlb3BhcmQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBw
ZWQKaW5kZXggNDA0ZTgzMjc3Nzg0NmJjZmM1Yjc0ZTIxYzM1MjU3ZGUxZDllNTQ2MC4uODcyYmU3
NWVjZDQ4NDU3ODdhNTkwMjRiOTc5MWI3NTdlZGMyNjA4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9Ta2lwcGVkCkBAIC05MCw2ICs5MCw3IEBAIGh0dHAvdGVzdHMvbWVkaWEv
dmlkZW8tc2Vla2FibGUtc3RhbGwuaHRtbAogCiAjIEF2YWlsYWJsZSAxMC42IG9yIGxhdGVyCiBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbAogCiAjIERpc2FibGUgdGVzdHMgd2hpY2ggc3Rh
cnRlZCBmYWlsaW5nIGFmdGVyIHI2Njk2MQogIyBGYWlsdXJlcyBsb29rIGxpa2UgYW4gdW5kZXJs
eWluZyBwbGF0Zm9ybSBpc3N1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXRpZ2VyL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtdGlnZXIvU2tpcHBlZApp
bmRleCBhYmQ3MjY3ZjM3OTI1NWY3MmQ2Mzg5YzE4NThkNjE2OThmN2Q1YzVmLi4wZjIwYzFlMDZm
ODQ0Zjk2NDg5OWJjOTFkODQ4YTA5MWE0OGNlNjk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtdGlnZXIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
dGlnZXIvU2tpcHBlZApAQCAtMjExLDYgKzIxMSw3IEBAIGh0dHAvdGVzdHMvbWlzYy80MDEtYWx0
ZXJuYXRpdmUtY29udGVudC5waHAKIAogIyBBdmFpbGFibGUgb25seSAxMC42IG9yIGxhdGVyCiBl
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbAorZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbAogCiAjIERpc2FibGUgc3BlbGxpbmcgdGVzdHMg
Zm9yIGF1dG9jb3JyZWN0aW9uIHBhbmVsCiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zcGVsbGluZy9h
dXRvY29ycmVjdGlvbi1jb250cmFjdGlvbi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRl
eCBhYzUzM2IyMGY2YmNlYTQ1Y2M5MDI4MGUxZDdlNGMwY2QzZDZkN2JkLi5hYTE2NWY2ODA4Yzdj
NzRkZDhlYTY3YjM2OWE2Mjk1NDQyYmZmNjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAg
LTEyMDEsNiArMTIwMSw3IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctYXR0cmlidXRlLWF0
LWNoaWxkLmh0bWwKIAogIyBFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkg
aXMgbm90IGltcGxlbWVudGVkCiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRt
bAorZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbAogCiAjID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ICMKICMgZmFpbGluZyBlZGl0aW5nL3N0eWxlIHRlc3RzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDFmYmMzN2U5MWZjMWZhNTA1NDczYzgyNDgyYTA4YTA1
MTYxNDhiMzcuLmIwMDc0YmUzYjdkNmNjZWIwZjgxZjQ1ODc1ZDY1NTdkMjFjNTFiMDEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC05NzcsNiArOTc3LDcgQEAgZWRpdGluZy9zcGVsbGlu
Zy9zcGVsbGluZy10ZXh0YXJlYS5odG1sCiAKICMgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZygpIGlzIG5vdCBpbXBsZW1lbnRlZAogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXBhc3RlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
Lmh0bWwKIAogIyBJbmRleGVkREIgaXMgbm90IHlldCBlbmFibGVkLgogc3RvcmFnZS9pbmRleGVk
ZGIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA2N2VmZWUyYzc5MWZiNzc3OGIwZjE3MzRkMzkxZWE0MzFiMmVjMzVj
Li4xOWQ1MjZhNDk5YmQ4ZTQwN2VkMjIzZDg1NTg2ZDEzZDlkYzNmMmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRo
IFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAgICAgIFJlbW92ZWQgV2ViQ29yZTo6U3Bl
bGxDaGVja2luZ1Jlc3VsdCBhbmQgcmVwbGFjZWQgaXQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQu
CisgICAgICAgIFRoaXMgY2hhbmdlIHJldmVhbGVkIHRoYXQgVGV4dENoZWNrZXJDbGllbnQ6OnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKCkgc2hvdWxkIGhhdmUKKyAgICAgICAgYWRkaXRpb25hbCBy
ZXF1ZXN0IHR5cGUgcGFyYW1ldGVyIHRodXMgYWRkZWQgaXQuCisKKyAgICAgICAgVGVzdDogZWRp
dGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyk6CisgICAgICAgIChXZWJDb3JlOjptYXJrZXJBc1RleHQpOiBzdGF0aWMgaGVscGVyIGZ1bmN0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRB
c1RleHQpOiBBZGRlZC4gQSBoZWxwZXIgZm9yIHRlc3RpbmcuCisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnRleHRDaGVja2luZ1R5cGVNYXNrRm9yKTogRXh0cmFjdGVkIGZyb20gbWFya0FsbE1p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcygpCisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvcik6IEFkZGVkIGEgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjptYXJrQXQpOiBFeHRyYWN0ZWQgZnJv
bSBkaWRDaGVjaygpLCBBZGRlZCBhIGNoZWNrIGZvciB0aGUgR3JhbW1hckRldGFpbCBvYmplY3Qu
CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBl
ZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5VGV4dENoZWNrZXJDbGllbnQ6OmNoZWNrVGV4dE9mUGFy
YWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2Vy
Q2xpZW50Lmg6CisKIDIwMTEtMDMtMTAgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5k
ZXggNWZjNmEyZDBhOWVkYTMyYzliM2QxZjY3YjAxZTQ1NDgyZDA0OGQ5Yi4uZGY1Y2M0MGJmNWJj
YmIzODYyYjQ3ZmYzYmUwNzVhOGZmYmY2ZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI5
Myw3ICsyOTMsNyBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlcjZhcHBlbmRFUEtjagogX19a
TjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJDMUVQS2NpCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZl
ckMxRXYKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyRDFFdgotX19aTjdXZWJDb3JlMTJTcGVs
bENoZWNrZXI4ZGlkQ2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5TXzE5U3BlbGxDaGVja2luZ1Jlc3Vs
dEVMbTBFRUUKK19fWk43V2ViQ29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZl
Y3RvcklOU18xOFRleHRDaGVja2luZ1Jlc3VsdEVMbTBFRUUKIF9fWk43V2ViQ29yZTEyVGV4dEVu
Y29kaW5nQzFFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFu
Z2VMZW5ndGhFUEtOU181UmFuZ2VFYgogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183RWxlbWVudEVpaWIKQEAgLTExOTksNiArMTE5OSw3
IEBAIF9fWk5LN1dlYkNvcmU2RWRpdG9yMTdzZWxlY3Rpb25IYXNTdHlsZUVpUktOM1dURjZTdHJp
bmdFCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjE3c2hvdWxkRGVsZXRlUmFuZ2VFUE5TXzVSYW5nZUUK
IF9fWk5LN1dlYkNvcmU2RWRpdG9yMjNnZXRDb21wb3NpdGlvblNlbGVjdGlvbkVSalMxXwogX19a
Tks3V2ViQ29yZTZFZGl0b3IzMGFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudEV2CitfX1pO
SzdXZWJDb3JlNkVkaXRvcjMwbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0RXYKIF9fWk5L
N1dlYkNvcmU2RWRpdG9yMzFmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0RXYKIF9fWk5L
N1dlYkNvcmU2RWRpdG9yMzRzZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5nTWFya2VyRm9yRWlpCiBf
X1pOSzdXZWJDb3JlNkVkaXRvcjM3YmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFy
dEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggODgwNzk2NTA2OGE0MzkxMGE5YWQ5
MzY1MWUxNDYyZWNjOGU5Y2Y5YS4uMmU5NTk5ZjJiMGQxYjVkOWM5OTE0MDIxYjVhOGMxZjQzNjUx
MGQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNjQsNyArNjQsNiBAQAogI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9h
cmQuaCIKLSNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRDaGVj
a2luZ0hlbHBlci5oIgogI2luY2x1ZGUgIlJlbW92ZUZvcm1hdENvbW1hbmQuaCIKICNpbmNsdWRl
ICJSZW5kZXJCbG9jay5oIgpAQCAtNDQwLDcgKzQzOSw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21l
bnQsCiAKICAgICBOb2RlKiBub2RlVG9DaGVjayA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5yb290
RWRpdGFibGVFbGVtZW50KCk7CiAgICAgaWYgKG1fc3BlbGxDaGVja2VyLT5jYW5DaGVja0FzeW5j
aHJvbm91c2x5KG5vZGVUb0NoZWNrKSkKLSAgICAgICAgbV9zcGVsbENoZWNrZXItPnJlcXVlc3RD
aGVja2luZ0Zvcihub2RlVG9DaGVjayk7CisgICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0
Q2hlY2tpbmdGb3IodGV4dENoZWNraW5nVHlwZU1hc2tGb3IoTWFya1NwZWxsaW5nIHwgTWFya0dy
YW1tYXIpLCBub2RlVG9DaGVjayk7CiB9CiAKIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29s
IHNtYXJ0UmVwbGFjZSkKQEAgLTIyNzAsNyArMjI2OSw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4
dENoCiAgICAgfQogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAg
ICB1aW50NjRfdCBjaGVja2luZ1R5cGVzID0gMDsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBj
aGVja2luZ1R5cGVzID0gMDsKICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQogICAgICAgICBj
aGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICBpZiAoc2hvdWxk
TWFya0dyYW1tYXIpCkBAIC0zNTkwLDEwICszNTg5LDg4IEBAIGJvb2wgRWRpdG9yOjpzZWxlY3Rp
b25TdGFydEhhc1NwZWxsaW5nTWFya2VyRm9yKGludCBmcm9tLCBpbnQgbGVuZ3RoKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIFN0cmluZyBtYXJrZXJBc1RleHQoY29uc3Qg
RG9jdW1lbnRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIGlmIChE
b2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgJiBtYXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgiU3BlbGxpbmcgIik7CisgICAgaWYgKERvY3VtZW50TWFya2VyOjpHcmFtbWFyICYgbWFy
a2VyLnR5cGUpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIkdyYW1tYXIgIik7CisgICAgaWYgKERv
Y3VtZW50TWFya2VyOjpUZXh0TWF0Y2ggJiBtYXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgiVGV4dE1hdGNoICIpOworICAgIGlmIChEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQg
JiBtYXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiUmVwbGFjZW1lbnQgIik7Cisg
ICAgaWYgKERvY3VtZW50TWFya2VyOjpDb3JyZWN0aW9uSW5kaWNhdG9yICYgbWFya2VyLnR5cGUp
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIkNvcnJlY3Rpb25JbmRpY2F0b3IgIik7CisgICAgaWYg
KERvY3VtZW50TWFya2VyOjpSZWplY3RlZENvcnJlY3Rpb24gJiBtYXJrZXIudHlwZSkKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiUmVqZWN0ZWRDb3JyZWN0aW9uICIpOworICAgIGlmIChEb2N1bWVu
dE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlvbiAmIG1hcmtlci50eXBlKQorICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJTcGVsbENoZWNraW5nRXhlbXB0aW9uICIpOworICAgIHJlc3VsdC5hcHBl
bmQoIlsiKTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1hcmtlci5zdGFydE9m
ZnNldCkpOworICAgIHJlc3VsdC5hcHBlbmQoIiwiKTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmlu
Zzo6bnVtYmVyKG1hcmtlci5lbmRPZmZzZXQpKTsKKyAgICByZXN1bHQuYXBwZW5kKCJdIik7Cisg
ICAgaWYgKCFtYXJrZXIuZGVzY3JpcHRpb24uaXNFbXB0eSgpKSB7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoIigiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtYXJrZXIuZGVzY3JpcHRpb24pOwor
ICAgICAgICByZXN1bHQuYXBwZW5kKCIpIik7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworU3RyaW5nIEVkaXRvcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCkgY29u
c3QKK3sKKyAgICBOb2RlKiBub2RlID0gZmluZEZpcnN0TWFya2FibGUobV9mcmFtZS0+c2VsZWN0
aW9uKCktPnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgaWYgKCFub2RlKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgcmVzdWx0OworICAgIFZlY3RvcjxEb2N1
bWVudE1hcmtlcj4gbWFya2VycyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFy
a2Vyc0Zvck5vZGUobm9kZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXJrZXJzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobWFya2VyQXNUZXh0KG1hcmtlcnNb
aV0pKTsKKyAgICAgICAgaWYgKGkgKyAxIDwgbWFya2Vycy5zaXplKCkpCisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKCIsIik7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogRmxv
YXRSZWN0IEVkaXRvcjo6d2luZG93UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSkgY29u
c3QKIHsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZSgpLT52aWV3KCk7CiAgICAgcmV0dXJu
IHZpZXcgPyB2aWV3LT5jb250ZW50c1RvV2luZG93KEludFJlY3QocmFuZ2UtPmJvdW5kaW5nUmVj
dCgpKSkgOiBGbG9hdFJlY3QoKTsKIH0gICAgICAgIAogCitUZXh0Q2hlY2tpbmdUeXBlTWFzayBF
ZGl0b3I6OnRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENo
ZWNraW5nT3B0aW9ucykKK3sKKyAgICBib29sIHNob3VsZE1hcmtTcGVsbGluZyA9IHRleHRDaGVj
a2luZ09wdGlvbnMgJiBNYXJrU3BlbGxpbmc7CisgICAgYm9vbCBzaG91bGRNYXJrR3JhbW1hciA9
IHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrR3JhbW1hcjsKKyAgICBib29sIHNob3VsZFBlcmZv
cm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQZXJmb3JtUmVwbGFjZW1lbnQ7
CisgICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9u
cyAmIFNob3dDb3JyZWN0aW9uUGFuZWw7CisKKyAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVj
a2luZ1R5cGVzID0gMDsKKyAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQorICAgICAgICBjaGVj
a2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKKyAgICBpZiAoc2hvdWxkTWFy
a0dyYW1tYXIpCisgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1t
YXI7CisgICAgaWYgKHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpCisgICAgICAgIGNoZWNraW5n
VHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgaWYgKHNob3VsZFBlcmZv
cm1SZXBsYWNlbWVudCkgeworICAgICAgICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGlu
azsKKyAgICAgICAgaWYgKGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisg
ICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAg
ICAgaWYgKGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAg
IGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgICAgIGlmIChpc0F1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlw
ZXMgfD0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OworICAgICAgICBpZiAoc2hvdWxkTWFy
a1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQorICAg
ICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAg
ICB9CisKKyAgICByZXR1cm4gY2hlY2tpbmdUeXBlczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggZTFhNzExOTI0NWU4M2JlZDEwZDczZDIw
NWVmZTIxNTQwODVjNTY5ZS4uMDhiN2RiMTRlMzUyNTJmMjk0NDEzMDQzOGQyNjA0NTJjNzEwYmZi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
RWRpdG9ySW5zZXJ0QWN0aW9uLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKICNpbmNsdWRl
ICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJXcml0aW5nRGlyZWN0aW9uLmgiCkBAIC02Miw3ICs2Myw2IEBAIGNsYXNzIFBhc3RlYm9h
cmQ7CiBjbGFzcyBTaW1wbGVGb250RGF0YTsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKIGNsYXNzIFRl
eHQ7Ci1jbGFzcyBUZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNzIFRleHRFdmVudDsKIAogc3RydWN0
IENvbXBvc2l0aW9uVW5kZXJsaW5lIHsKQEAgLTM3OCw2ICszNzgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKICNlbmRpZgogCisg
ICAgU3RyaW5nIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpIGNvbnN0OwogICAgIGJv
b2wgc2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtlckZvcihpbnQgZnJvbSwgaW50IGxlbmd0
aCkgY29uc3Q7CiAgICAgdm9pZCByZW1vdmVTcGVsbEFuZENvcnJlY3Rpb25NYXJrZXJzRnJvbVdv
cmRzVG9CZUVkaXRlZChib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSk7
CiAKQEAgLTQxMSw2ICs0MTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoUGFzdGVib2FyZCopOwogICAgIHZvaWQgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJF
ZGl0aW5nT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFy
KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBib29sIGNoZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5n
ZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4
dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyk7CiAKICAgICB2b2lkIHNl
bGVjdENvbXBvc2l0aW9uKCk7CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3Ry
aW5nJiwgYm9vbCBwcmVzZXJ2ZVNlbGVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAKaW5kZXggNzk4OGU0MTYxMGE1MTliNmE1Y2IyNjMwYzYxMGViZWE4ZmFlNWYy
MS4uZjUyNGEyZjQ4OTc2MjM0ZGU2NjdmZTg4ZGM5ZjQ4NjQzYzdiN2NkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcApAQCAtMTAwLDEzICsxMDAsMTUgQEAgYm9vbCBT
cGVsbENoZWNrZXI6OmlzQ2hlY2thYmxlKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgcmV0dXJuIG5v
ZGUgJiYgbm9kZS0+cmVuZGVyZXIoKTsKIH0KIAotdm9pZCBTcGVsbENoZWNrZXI6OnJlcXVlc3RD
aGVja2luZ0ZvcihOb2RlKiBub2RlKQordm9pZCBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2lu
Z0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBOb2RlKiBub2RlKQogewogICAgIEFTU0VS
VChjYW5DaGVja0FzeW5jaHJvbm91c2x5KG5vZGUpKTsKKyAgICAvLyBDdXJyZW50bHkgd2Ugb25s
eSBzdXBwb3J0cyBzcGVsbGluZyBhbmQgZ3JhbW1hcgorICAgIEFTU0VSVCghKG1hc2sgJiB+KFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSkpOwogCiAg
ICAgaWYgKCFpbml0UmVxdWVzdChub2RlKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50
LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh0aGlzLCBtX3JlcXVlc3RTZXF1ZW5jZSwgbV9yZXF1
ZXN0VGV4dCk7CisgICAgbV9jbGllbnQtPnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1f
cmVxdWVzdFNlcXVlbmNlLCBtYXNrLCBtX3JlcXVlc3RUZXh0KTsKIH0KIAogc3RhdGljIGJvb2wg
Zm9yd2FyZEl0ZXJhdG9yKFBvc2l0aW9uSXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2Up
CkBAIC0xMzEsNyArMTMzLDI3IEBAIHN0YXRpYyBib29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlv
bkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50IGRpc3RhbmNlKQogICAgIHJldHVybiBmYWxzZTsgICAg
CiB9CiAKLXZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZl
Y3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK2Jvb2wgU3BlbGxDaGVja2VyOjpt
YXJrQXQoY29uc3QgUG9zaXRpb25JdGVyYXRvciYgc3RhcnQsIGludCBsb2NhdGlvbiwgaW50IGxl
bmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbikgY29uc3QKK3sKKyAgICBQb3NpdGlvbkl0ZXJhdG9yIGVuZCA9IHN0YXJ0OworICAg
IGlmICghZm9yd2FyZEl0ZXJhdG9yKGVuZCwgbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gVXNlcnMgb3IgSmF2YVNjcmlwdCBhcHBsaWNhdGlvbnMgbWF5IGNoYW5nZSB0
ZXh0IHdoaWxlIGEgc3BlbGwtY2hlY2tlciBjaGVja3MgaXRzCisgICAgLy8gc3BlbGxpbmdzIGlu
IHRoZSBiYWNrZ3JvdW5kLiBUbyBhdm9pZCBhZGRpbmcgbWFya2VycyB0byB0aGUgd29yZHMgbW9k
aWZpZWQgYnkgdXNlcnMgb3IKKyAgICAvLyBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucywgcmV0cmll
dmUgdGhlIHdvcmRzIGluIHRoZSBzcGVjaWZpZWQgcmVnaW9uIGFuZCBjb21wYXJlIHRoZW0gd2l0
aAorICAgIC8vIHRoZSBvcmlnaW5hbCBvbmVzLgorICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKG1fcmVxdWVzdE5vZGUtPmRvY3VtZW50KCksIHN0YXJ0LCBlbmQpOworCisg
ICAgLy8gRklYTUU6IFVzZSB0ZXh0Q29udGVudCgpIGNvbXBhdGlibGUgc3RyaW5nIGNvbnZlcnNp
b24uCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcmFuZ2UtPnRleHQoKTsKKyAgICBTdHJpbmcg
c291cmNlID0gbV9yZXF1ZXN0VGV4dC5zdWJzdHJpbmcobG9jYXRpb24sIGxlbmd0aCk7CisgICAg
aWYgKGRlc3RpbmF0aW9uID09IHNvdXJjZSkKKyAgICAgICAgbV9yZXF1ZXN0Tm9kZS0+ZG9jdW1l
bnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIHR5cGUsIGRlc2NyaXB0aW9u
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGlu
dCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7
CiAgICAgaWYgKCFpc1ZhbGlkKHNlcXVlbmNlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0LDMw
ICsxNjYsMzYgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29u
c3QgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+JiByZXMKICAgICBpbnQgc3RhcnRPZmZzZXQg
PSAwOwogICAgIFBvc2l0aW9uSXRlcmF0b3Igc3RhcnQgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9y
ZU5vZGUobV9yZXF1ZXN0Tm9kZS5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBy
ZXN1bHRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChyZXN1bHRzW2ldLnR5cGUoKSAhPSBE
b2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgJiYgcmVzdWx0c1tpXS50eXBlKCkgIT0gRG9jdW1lbnRN
YXJrZXI6OkdyYW1tYXIpCisgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnRzIHNw
ZWxsaW5nIGFuZCBncmFtbWFyCisgICAgICAgIGlmIChyZXN1bHRzW2ldLnR5cGUgJiB+KFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIFRvIGF2b2lkIG1vdmluZyB0aGUgcG9zaXRpb24g
YmFja3dhcmQsIHdlIGFzc3VtZSB0aGUgZ2l2ZW4gcmVzdWx0cyBhcmUgc29ydGVkIHdpdGgKICAg
ICAgICAgLy8gc3RhcnRPZmZzZXQgYXMgdGhlIG9uZXMgcmV0dXJuZWQgYnkgW05TU3BlbGxDaGVj
a2VyIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nOl0uCi0gICAgICAgIEFTU0VSVChzdGFydE9mZnNl
dCA8PSByZXN1bHRzW2ldLmxvY2F0aW9uKCkpOwotICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRv
cihzdGFydCwgcmVzdWx0c1tpXS5sb2NhdGlvbigpIC0gc3RhcnRPZmZzZXQpKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIFBvc2l0aW9uSXRlcmF0b3IgZW5kID0gc3RhcnQ7Ci0gICAgICAg
IGlmICghZm9yd2FyZEl0ZXJhdG9yKGVuZCwgcmVzdWx0c1tpXS5sZW5ndGgoKSkpCisgICAgICAg
IEFTU0VSVChzdGFydE9mZnNldCA8PSByZXN1bHRzW2ldLmxvY2F0aW9uKTsKKyAgICAgICAgaWYg
KCFmb3J3YXJkSXRlcmF0b3Ioc3RhcnQsIHJlc3VsdHNbaV0ubG9jYXRpb24gLSBzdGFydE9mZnNl
dCkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHRzW2ld
LnR5cGUgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpIHsKKyAgICAgICAgICAgIGlmICghbWFy
a0F0KHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uLCByZXN1bHRzW2ldLmxlbmd0aCwgRG9jdW1l
bnRNYXJrZXI6OlNwZWxsaW5nLCBTdHJpbmcoKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBlICYgVGV4dENoZWNraW5nVHlw
ZUdyYW1tYXIpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgcmVzdWx0c1tp
XS5kZXRhaWxzLnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgUG9zaXRpb25JdGVyYXRv
ciBncmFtbWFyU3RhcnQgPSBzdGFydDsKKyAgICAgICAgICAgICAgICBpZiAoIWZvcndhcmRJdGVy
YXRvcihncmFtbWFyU3RhcnQsIHJlc3VsdHNbaV0uZGV0YWlsc1tqXS5sb2NhdGlvbiAtIHN0YXJ0
T2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgUG9zaXRpb25JdGVyYXRvciBncmFtbWFyRW5kID0gZ3JhbW1hclN0YXJ0
OworICAgICAgICAgICAgICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKGdyYW1tYXJFbmQsIHJlc3Vs
dHNbaV0uZGV0YWlsc1tqXS5sZW5ndGgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBpZiAoIW1hcmtBdChncmFtbWFyU3RhcnQsIHJlc3VsdHNbaV0uZGV0YWls
c1tqXS5sb2NhdGlvbiwgcmVzdWx0c1tpXS5kZXRhaWxzW2pdLmxlbmd0aCwgRG9jdW1lbnRNYXJr
ZXI6OkdyYW1tYXIsIHJlc3VsdHNbaV0uZGV0YWlsc1tqXS51c2VyRGVzY3JpcHRpb24pKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAg
ICAgIC8vIFVzZXJzIG9yIEphdmFTY3JpcHQgYXBwbGljYXRpb25zIG1heSBjaGFuZ2UgdGV4dCB3
aGlsZSBhIHNwZWxsLWNoZWNrZXIgY2hlY2tzIGl0cwotICAgICAgICAvLyBzcGVsbGluZ3MgaW4g
dGhlIGJhY2tncm91bmQuIFRvIGF2b2lkIGFkZGluZyBtYXJrZXJzIHRvIHRoZSB3b3JkcyBtb2Rp
ZmllZCBieSB1c2VycyBvcgotICAgICAgICAvLyBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucywgcmV0
cmlldmUgdGhlIHdvcmRzIGluIHRoZSBzcGVjaWZpZWQgcmVnaW9uIGFuZCBjb21wYXJlIHRoZW0g
d2l0aAotICAgICAgICAvLyB0aGUgb3JpZ2luYWwgb25lcy4KLSAgICAgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9yZXF1ZXN0Tm9kZS0+ZG9jdW1lbnQoKSwgc3RhcnQs
IGVuZCk7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgdGV4dENvbnRlbnQoKSBjb21wYXRpYmxlIHN0
cmluZyBjb252ZXJzaW9uLgotICAgICAgICBTdHJpbmcgZGVzdGluYXRpb24gPSByYW5nZS0+dGV4
dCgpOwotICAgICAgICBTdHJpbmcgc291cmNlID0gbV9yZXF1ZXN0VGV4dC5zdWJzdHJpbmcocmVz
dWx0c1tpXS5sb2NhdGlvbigpLCByZXN1bHRzW2ldLmxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGRl
c3RpbmF0aW9uID09IHNvdXJjZSkKLSAgICAgICAgICAgIG1fcmVxdWVzdE5vZGUtPmRvY3VtZW50
KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLmdldCgpLCByZXN1bHRzW2ldLnR5cGUoKSk7
Ci0KLSAgICAgICAgc3RhcnRPZmZzZXQgPSByZXN1bHRzW2ldLmxvY2F0aW9uKCk7CisgICAgICAg
IHN0YXJ0T2Zmc2V0ID0gcmVzdWx0c1tpXS5sb2NhdGlvbjsKICAgICB9CiAKICAgICBjbGVhclJl
cXVlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCmluZGV4IGQzOTQwZTUw
NGZhYTQ2YTk2NWM3MzgwNGI1OWNmNzExZjc2ZGNiZjguLmQwOTc5ZWZmMmQyNTE3YWM1MmVhODdk
YTY0OTZmNTBhN2RjZmQ5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaApA
QCAtMjcsMzIgKzI3LDE0IEBACiAjZGVmaW5lIFNwZWxsQ2hlY2tlcl9oCiAKICNpbmNsdWRlICJE
b2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4
dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIE5vZGU7Ci0KLWNsYXNzIFNwZWxs
Q2hlY2tpbmdSZXN1bHQgewotcHVibGljOgotICAgIGV4cGxpY2l0IFNwZWxsQ2hlY2tpbmdSZXN1
bHQoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSA9IERvY3VtZW50TWFya2VyOjpTcGVs
bGluZywgaW50IGxvY2F0aW9uID0gMCwgaW50IGxlbmd0aCA9IDApCi0gICAgICAgIDogbV90eXBl
KHR5cGUpCi0gICAgICAgICwgbV9sb2NhdGlvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX2xlbmd0
aChsZW5ndGgpCi0gICAgewotICAgIH0KLQotICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0gCi0gICAgaW50IGxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQotICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aDsgfQotCi1wcml2YXRlOgotICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
IG1fdHlwZTsKLSAgICBpbnQgbV9sb2NhdGlvbjsKLSAgICBpbnQgbV9sZW5ndGg7Ci19OworY2xh
c3MgUG9zaXRpb25JdGVyYXRvcjsKIAogY2xhc3MgU3BlbGxDaGVja2VyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTcGVsbENoZWNrZXIpOwpAQCAtNjUsMTIgKzQ3LDEzIEBAIHB1YmxpYzoK
ICAgICBib29sIGlzQnVzeSgpIGNvbnN0OwogICAgIGJvb2wgaXNWYWxpZChpbnQgc2VxdWVuY2Up
IGNvbnN0OwogICAgIGJvb2wgaXNDaGVja2FibGUoTm9kZSopIGNvbnN0OwotICAgIHZvaWQgcmVx
dWVzdENoZWNraW5nRm9yKE5vZGUqKTsKLSAgICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwg
Y29uc3QgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+Jik7CisgICAgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2ssIE5vZGUqKTsKKyAgICB2b2lkIGRpZENoZWNr
KGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogcHJp
dmF0ZToKICAgICBib29sIGluaXRSZXF1ZXN0KE5vZGUqKTsKICAgICB2b2lkIGNsZWFyUmVxdWVz
dCgpOworICAgIGJvb2wgbWFya0F0KGNvbnN0IFBvc2l0aW9uSXRlcmF0b3ImIHN0YXJ0LCBpbnQg
bG9jYXRpbiwgaW50IGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24pIGNvbnN0OwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVGV4
dENoZWNrZXJDbGllbnQqIG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CmluZGV4IDY5MzVjMzc0NDljNzg5MjhhN2RjNDIwOWQ5ZDUwNzhkMTI2MTRlMGQuLjY2MmM2NzQ5
Y2M3NzhiMTRjZDJhOTUwYWZiMDRiYmEyNDA2NTM0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKQEAgLTQwNywxMSArNDA3LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxHcmFtbWFy
RGV0YWlsPiYsIGludCosIGludCopIHsgfQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAg
ICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIHVp
bnQ2NF90LCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFRleHRDaGVja2luZ1R5
cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKICNlbmRpZgogCiAgICAg
dmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFZlY3RvcjxTdHJpbmc+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4
dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpIHsgfQogfTsKIAogY2xhc3MgRW1wdHlF
ZGl0b3JDbGllbnQgOiBwdWJsaWMgRWRpdG9yQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAppbmRleCBhY2FhMDJjZjYyYTA3MGY5
MGNmOTRjNmUxMjZjNWQwZDY3YmZiYjhlLi44YjFkODEyMjI0ZjU1NTZiY2Y4OTYzN2U5NGNkZjBi
NmEyZGIyZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
aGVja2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hl
Y2tlckNsaWVudC5oCkBAIC01Myw2ICs1Myw4IEBAIGVudW0gVGV4dENoZWNraW5nVHlwZSB7CiAg
ICAgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gID0gMSA8PCA5CiB9OwogCit0eXBlZGVmIHVp
bnQ2NF90IFRleHRDaGVja2luZ1R5cGVNYXNrOworCiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0
IHsKICAgICBUZXh0Q2hlY2tpbmdUeXBlIHR5cGU7CiAgICAgaW50IGxvY2F0aW9uOwpAQCAtNzEs
MTQgKzczLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1
Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwg
aW50IGxlbmd0aCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRp
b24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgPSAwOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0
LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiYgcmVzdWx0cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFn
cmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgVGV4dENoZWNraW5nVHlwZU1hc2sg
Y2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsK
ICNlbmRpZgogCiAgICAgLy8gRm9yIHNwZWxsY2hlY2tlcnMgdGhhdCBzdXBwb3J0IG11bHRpcGxl
IGxhbmd1YWdlcywgaXQncyBvZnRlbiBpbXBvcnRhbnQgdG8gYmUgYWJsZSB0byBpZGVudGlmeSB0
aGUgbGFuZ3VhZ2UgaW4gb3JkZXIgdG8KICAgICAvLyBwcm92aWRlIG1vcmUgYWNjdXJhdGUgY29y
cmVjdGlvbiBzdWdnZXN0aW9ucy4gQ2FsbGVyIGNhbiBwYXNzIGluIG1vcmUgdGV4dCBpbiAiY29u
dGV4dCIgdG8gYWlkIHN1Y2ggc3BlbGxjaGVja2VycyBvbiBsYW5ndWFnZQogICAgIC8vIGlkZW50
aWZpY2F0aW9uLiBOb3JhbWxseSBpdCdzIHRoZSB0ZXh0IHN1cnJvdW5kaW5nIHRoZSAid29yZCIg
Zm9yIHdoaWNoIHdlIGFyZSBnZXR0aW5nIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuCiAgICAgdmly
dHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3Ry
aW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0
cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3Bl
bGxDaGVja2VyKiwgaW50LCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikgPSAw
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwY2JhNDE5NjI1ZGJjYTMx
OWExN2QyOGU1M2U2ZGFmMGRkMzc5ZTY3Li5mNmE1MGFmNzVkMGQzMTkwYThkOTY2OGJkZThkZjg5
OGUxNjkzMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3Bl
bGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1
bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1
CisKKyAgICAgICAgRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAgICAgIAorICAg
ICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL0VkaXRvckNsaWVu
dEltcGwuY3BwOgorCiAyMDExLTAzLTA4ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCAzOGQ0ZjVlZjg5MjM5
ZTA0NWFhZjVmMGY5MTM0NzI2YTM4YTYyMjk5Li5kOWVmZTk4Mjg2MzIzNjZmYzdhMGRlNzU5NGE0
ZWZjMTc2NjM0NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JD
bGllbnRJbXBsLmNwcApAQCAtODcxLDcgKzg3MSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6
Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAg
ICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAotdm9pZCBFZGl0b3JD
bGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwg
aW50IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgRWRpdG9yQ2xpZW50SW1w
bDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKIHsKICAg
ICBtX3dlYlZpZXctPmNsaWVudCgpLT5yZXF1ZXN0Q2hlY2tpbmdPZlRleHQodGV4dCwgbmV3IFdl
YlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsKGlkZW50aWZpZXIsIHNlbmRlcikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCmluZGV4IGI4MWZi
NTYwNTQzMGJmMmY1ZjMzZGU0ODc0YzBiNjZmNmY3Y2M0NmUuLjJlYmM2ZWE1ODA0YjI1M2ZiZTQx
NjM4Njc0NWI5ODcxMTdhYWZkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0VkaXRvckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nl
cyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50
LCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpU
ZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwppbmRleCAxODg3YTIzY2EzYzgyOTVhZDNmYjY3NzJmNTllYTJmZWUwMzc3MDJmLi4y
ZTk3MWU2ZThhNzc4ZjRlOWRmNDc1MjhjYTRjNmNlZTAzN2NiZWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3
aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0wOCAgR3J6ZWdvcnogQ3phamtvd3Nr
aSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50
IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50RWZsLmgKaW5kZXggNTc1YTUwZDI1M2QyOTQwNmM0NmQ4YTM0Y2FmMzY4ZWJhZDhhZTc2
Ny4uNTZiMzMwMDJlYWExN2E4NWI5YjM3MDE2OWQ4YmQ4NDczZmRjM2EyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKQEAgLTEx
NCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3Jk
KGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxT
dHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3Rh
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQp
OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVs
bENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZp
cnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDQwOGRhYjViMjlhYmY2MmU5MGQ4ZmRkZGEw
Zjg2ODRiMDYxYTI3MGQuLjExNjc2MGZhYzY5MDkxMjE3YjZkMWFkOTcwMjA3YTcxODM2ZTNiZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhh
amltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hv
dWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRDaGVja2VyQ2xpZW50RW5jaGFudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDEx
LTAzLTA5ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCmluZGV4IGMy
OTRhM2QwMGYyZGRlNTA2YWFkYTYwNDcxNGEwNWI1ZGQ0NDg3NjEuLjVkOTNjMDcyMTZkOTk1YmZl
MzZjYWZhZGQ5OTBjMGE3ODJmNTJkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCkBAIC00OSw3
ICs0OSw3IEBAIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50RW5jaGFudCA6IHB1YmxpYyBXZWJDb3Jl
OjpUZXh0Q2hlY2tlckNsaWVudCB7CiAgICAgICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZ2V0QXV0
b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwg
aW50IGxlbmd0aCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJh
ZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBX
VEY6OlN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50
LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQog
CiAgICAgICAgIHZvaWQgdXBkYXRlU3BlbGxDaGVja2luZ0xhbmd1YWdlKGNvbnN0IGNoYXIqKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgZnJlZVNwZWxsQ2hlY2tpbmdMYW5ndWFnZShncG9pbnRlciwg
Z3BvaW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCBiMmFlZmNlOGRkODhmNmJhZDk0NDI5
ZTBjN2E2MzFiNzViYjNiYWIzLi40ODBjZmY2ZGY2NmQ4OGQ0YjA3MDkxMTZmN2M3MjMwNjg1MTUy
MDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBN
T1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jl
c3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50SGFpa3U6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0w
NyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAppbmRleCBiYjBkOGFjMTA1ZmNlMjIxNTdhNzAyMDZh
YTRjMTRlYzU5MDdhMGI1Li5jYzIxZmNiODZmMjkxOTRlYTNlODE0ZmEwNTczZDVlNjRjY2JhMTk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEhhaWt1LmgKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRIYWlrdS5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRWRpdG9yQ2xpZW50SGFp
a3UgOiBwdWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgVGV4dENoZWNrZXJDbGllbnQgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBj
b25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0
cmluZyYpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhT
cGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBT
dHJpbmcmKSB7fQogICAgICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tl
cigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgICAgICBib29sIGlzRWRpdGluZygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDdjMGQ4NTg1NWIxNDFiODU1YjRkYzdhZGEzMThjYTM5OGFhZjM0
NDEuLjMwMDhkZGFhMGNlY2U0NjI5MjZlOTA4YzkzYzYwZDA4YTE4OThkZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJp
dGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxh
Y2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgIFJlbW92ZWQgTlNUZXh0Q2hlY2tp
bmdSZXN1bHQgdG8gU3BlbGxDaGVja2luZ1Jlc3VsdCBjb252ZXJ0aW9uLCBhbmQgZXh0cmFjdGVk
CisgICAgICAgIE5TVGV4dENoZWNraW5nUmVzdWx0IHRvIFRleHRDaGVja2luZ1Jlc3VsdCBjb252
ZXJ0aW8gZnJvbSBjaGVja1RleHRPZlBhcmFncmFwaCBtZXRob2QuCisgICAgICAgIGZvciByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyBtZXRob2QuCisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbToKKyAgICAgICAgKHRvQ29yZVRleHRDaGVja2luZ1Jlc3VsdHMpOgorICAg
ICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICgt
W1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgaW5pdFdpdGhTZW5kZXI6V2ViQ29yZTo6c2Vx
dWVuY2U6dHlwZXM6V2ViQ29yZTo6cmVzdWx0czpdKToKKyAgICAgICAgKC1bV2ViRWRpdG9yU3Bl
bGxDaGVja1Jlc3BvbmRlciBwZXJmb3JtXSk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHRdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oOgorCiAyMDExLTAzLTA5ICBKZXNzaWUg
QmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBS
b2Jlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKaW5kZXggMWZhMTMyYWQ2YzViZDQzNzlmZTBiYjg1YzllNmZmMGQ2NmIxMTczNS4u
Mjc3MTM5ZWY2ODVkY2M1NDE3YTJhMWMxNDI5MzkwYjYyYzI5YTFhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEzMCw3
ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmlu
Zyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50
KiBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAg
IHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5n
dGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFy
TG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNr
VGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBj
aGVja2luZ1R5cGVzLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNo
YXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNr
aW5nVHlwZXMsIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3Vs
dHMpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmco
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJik7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RG
OjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KTsK
QEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNG
b3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4
dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRo
b2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxs
Q2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6
U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9u
UGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdC
b3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgV2ViQ29yZTo6RWRpdG9y
Kik7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVh
c29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggNjlkZDU3NDczMWI0
NGI0MzBjMjc0NThlNzIzYjQxYzRkZTUxNzRiMC4uOTc5ZDdiNDc3YzRkZmM1NzRlMTgyN2ExMGIx
YTFkNDZjMDIyMmNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNzk0LDEyICs3OTQsOSBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5n
dGgsIFZlY3RvcgogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tp
bmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCi17CiAjaWYgIWRl
ZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
Ci0gICAgTlNTdHJpbmcgKnRleHRTdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENo
YXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQpIGxlbmd0aDpsZW5ndGggZnJl
ZVdoZW5Eb25lOk5PXTsKLSAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxD
aGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpO
U01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczooY2hlY2tpbmdUeXBlc3xO
U1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50
V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENv
dW50Ok5VTExdOwotICAgIFt0ZXh0U3RyaW5nIHJlbGVhc2VdOworc3RhdGljIHZvaWQgdG9Db3Jl
VGV4dENoZWNraW5nUmVzdWx0cyhOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMsIFRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKQorewogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29taW5nUmVzdWx0IGlu
IGluY29taW5nUmVzdWx0cykgewogICAgICAgICBOU1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29t
aW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUg
PSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07CkBAIC04NzEsNiArODY4LDE2IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwg
aW50IGxlbmd0aCwgdWludDY0CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwog
ICAgICAgICB9CiAgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVj
a1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgVGV4dENoZWNr
aW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJl
c3VsdHMpCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpCisgICAgTlNTdHJpbmcgKnRleHRTdHJpbmcgPSBbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQp
IGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKKyAgICBOU0FycmF5ICppbmNvbWluZ1Jl
c3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6
dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBl
czooY2hlY2tpbmdUeXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpu
aWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhv
Z3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOworICAgIFt0ZXh0U3RyaW5nIHJlbGVhc2VdOwor
ICAgIHRvQ29yZVRleHRDaGVja2luZ1Jlc3VsdHMoaW5jb21pbmdSZXN1bHRzLCBjaGVja2luZ1R5
cGVzLCByZXN1bHRzKTsKICNlbmRpZgogfQogCkBAIC0xMDE3LDU4ICsxMDI0LDM3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpCiB7CiAgICAgV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiBfc2VuZGVyOwogICAgIGludCBfc2VxdWVuY2U7CisgICAgVGV4dENo
ZWNraW5nVHlwZU1hc2sgX3R5cGVzOwogICAgIFJldGFpblB0cjxOU0FycmF5PiBfcmVzdWx0czsK
IH0KLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBz
ZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHM7CistIChpZClp
bml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGlu
dClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2spdHlwZXMgcmVz
dWx0czooTlNBcnJheSopcmVzdWx0czsKIC0gKHZvaWQpcGVyZm9ybTsKLS0gKFdURjo6VmVjdG9y
PFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+KSBfY29yZVJlc3VsdHM7CiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyCi0tIChpZClpbml0V2l0
aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1
ZW5jZSByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCistIChpZClpbml0V2l0aFNlbmRlcjooV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczoo
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2spdHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVz
dWx0cwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIF9zZW5kZXIgPSBzZW5kZXI7CiAgICAgX3NlcXVlbmNlID0gc2Vx
dWVuY2U7CisgICAgX3R5cGVzID0gdHlwZXM7CiAgICAgX3Jlc3VsdHMgPSByZXN1bHRzOwogICAg
IHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKXBlcmZvcm0KIHsKLSAgICBfc2VuZGVyLT5kaWRD
aGVjayhfc2VxdWVuY2UsIFtzZWxmIF9jb3JlUmVzdWx0c10pOwotfQotCi1zdGF0aWMgU3BlbGxD
aGVja2luZ1Jlc3VsdCB0b0NvcmVTcGVsbGluZ1Jlc3VsdChOU1RleHRDaGVja2luZ1Jlc3VsdCog
cmVzdWx0KQotewotICAgIE5TVGV4dENoZWNraW5nVHlwZSB0eXBlID0gW3Jlc3VsdCByZXN1bHRU
eXBlXTsKLSAgICBOU1JhbmdlIHJhbmdlID0gW3Jlc3VsdCByYW5nZV07Ci0gICAgRG9jdW1lbnRN
YXJrZXI6Ok1hcmtlclR5cGUgY29yZVR5cGU7Ci0gICAgaWYgKHR5cGUgJiBOU1RleHRDaGVja2lu
Z1R5cGVTcGVsbGluZykKLSAgICAgICAgY29yZVR5cGUgPSBEb2N1bWVudE1hcmtlcjo6U3BlbGxp
bmc7Ci0gICAgZWxzZSBpZiAodHlwZSAmIE5TVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpCi0gICAg
ICAgIGNvcmVUeXBlID0gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7Ci0gICAgZWxzZQotICAgICAg
ICBjb3JlVHlwZSA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzOwotCi0gICAgcmV0dXJuIFNw
ZWxsQ2hlY2tpbmdSZXN1bHQoY29yZVR5cGUsIHJhbmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGgp
OwotfQotCi0tIChXVEY6OlZlY3RvcjxXZWJDb3JlOjpTcGVsbENoZWNraW5nUmVzdWx0PilfY29y
ZVJlc3VsdHMKLXsKLSAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpTcGVsbENoZWNraW5nUmVzdWx0
PiBjb3JlUmVzdWx0czsKLSAgICBjb3JlUmVzdWx0cy5yZXNlcnZlQ2FwYWNpdHkoW19yZXN1bHRz
LmdldCgpIGNvdW50XSk7Ci0gICAgZm9yIChOU1RleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0IGlu
IF9yZXN1bHRzLmdldCgpKQotICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQodG9Db3JlU3BlbGxp
bmdSZXN1bHQocmVzdWx0KSk7Ci0gICAgcmV0dXJuIGNvcmVSZXN1bHRzOworICAgIFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOworICAgIHRvQ29yZVRleHRDaGVja2luZ1Jl
c3VsdHMoX3Jlc3VsdHMuZ2V0KCksIF90eXBlcywgY29yZVJlc3VsdHMpOworICAgIF9zZW5kZXIt
PmRpZENoZWNrKF9zZXF1ZW5jZSwgY29yZVJlc3VsdHMpOwogfQogCiBAZW5kCiAjZW5kaWYKIAot
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgc2VxdWVuY2UsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVs
bENoZWNrZXIqIHNlbmRlciwgaW50IHNlcXVlbmNlLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzayBjaGVja2luZ1R5cGVzLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAjaWYgIWRlZmluZWQo
QlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAg
TlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIHRleHQubGVuZ3RoKCkpOwpAQCAtMTA3Niw3
ICsxMDYyLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQKICAgICBbW05TU3BlbGxDaGVja2Vy
IHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVxdWVzdENoZWNraW5nT2ZTdHJpbmc6dGV4dCByYW5nZTpy
YW5nZSB0eXBlczpOU1RleHRDaGVja2luZ0FsbFN5c3RlbVR5cGVzIG9wdGlvbnM6MCBpblNwZWxs
RG9jdW1lbnRXaXRoVGFnOjAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyLCBOU0FycmF5KiByZXN1bHRzLCBOU09y
dGhvZ3JhcGh5KiwgTlNJbnRlZ2VyKSB7CiAgICAgICAgICAgICBbY3VycmVudExvb3AgcGVyZm9y
bVNlbGVjdG9yOkBzZWxlY3RvcihwZXJmb3JtKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0YXJnZXQ6W1tbV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlciBhbGxvY10gaW5p
dFdpdGhTZW5kZXI6c2VuZGVyIHNlcXVlbmNlOnNlcXVlbmNlIHJlc3VsdHM6cmVzdWx0c10gYXV0
b3JlbGVhc2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OltbW1dl
YkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2VuZGVyOnNlbmRlciBz
ZXF1ZW5jZTpzZXF1ZW5jZSB0eXBlczpjaGVja2luZ1R5cGVzIHJlc3VsdHM6cmVzdWx0c10gYXV0
b3JlbGVhc2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Om5pbCBv
cmRlcjowIG1vZGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU0RlZmF1bHRSdW5Mb29wTW9k
ZV1dOwogICAgICAgICB9XTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KaW5kZXggMWU4OGFmYzAyYmIyZWYyYTUyNjVlNzlmYWQwZGUyNDBiNjAxMGZjNy4uYWZiNjli
MDM1ODkyOTA0MTBhZTYyMzBlNDA0MTgzZjQ2ZjZkNTRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCkBAIC0xMzA4LDYgKzEzMDgsMTQgQEAgc3RhdGljIGlubGluZSBXZWJE
YXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgcmV0dXJu
IGNvcmVGcmFtZS0+bGF5ZXJUcmVlQXNUZXh0KCk7CiB9CiAKKy0gKE5TU3RyaW5nICopbWFya2Vy
c0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0Cit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IF9wcml2
YXRlLT5jb3JlRnJhbWU7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nXTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS0+bWFya2Vyc0Zv
clNlbGVjdGlvblN0YXJ0QXNUZXh0KCk7Cit9CisKIC0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6
KGludClmcm9tIGxlbmd0aDooaW50KWxlbmd0aAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBf
cHJpdmF0ZS0+Y29yZUZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQ
cml2YXRlLmgKaW5kZXggYjQ5NDI3ZTI1ZDE2NWZhZGM2YjFlYzZhMTNiN2M2NmY4NGNkYTg3Ni4u
NDcwOWQ0NDFiODA5YzEwODUwMzU5NTU2YWVlMWZiZTRkOWU2MTcxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCkBAIC0xNDIsNiArMTQyLDcgQEAgdHlw
ZWRlZiBlbnVtIHsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIGlzIGEgc3BlbGxpbmcgbWFy
a2VyIGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgdGhlIGZvY3VzZWQgbm9kZS4KIC0gKEJPT0wp
aGFzU3BlbGxpbmdNYXJrZXI6KGludClsb2NhdGlvbiBsZW5ndGg6KGludClsZW5ndGg7CistIChO
U1N0cmluZyAqKW1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dDsKIAogLy8gVGhlIHRvcCBv
ZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgogLSAoaWQpYWNjZXNzaWJpbGl0eVJvb3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCmluZGV4IGVkM2Y1ODcyN2Q5ODE5ZjVkZWY3YjdlYThkYmU5ZTQwMTFmOWQzNWEuLjQz
NmQyYjNkZTMyMTY3Y2RlODE1ZDBiYTU4ZjVjYzM1NjI3ODA3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRo
IFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMDkgIFBldGVyIEthc3RpbmcgIDxwa2FzdGlu
Z0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQu
aCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAppbmRl
eCAwNDUwNjAzNTM5MDRjMDU1ZDdjY2YyYWQ0NjFmNWNiOGU4MWFlMWEwLi4wZDhlOGM2Nzk4NGU5
YWQxZjdmMmM1NmI2YzBkMWNmZDY0YmUyMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQs
IGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgU3RyaW5nJikge30K
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwg
aW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikge30KICAg
ICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7
IH0KIAogICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNmYw
NzI3MmQ3NjI5NWRhY2YyMDVmNzAwM2I5ZmJiNThiOWMwYjgzYS4uYTkxZWU1YWZlMmUzMmMxOTY4
ZTdhZDk4ODNjMTUzN2I3NWE4YjRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
U3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdS
ZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MDg1CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAz
LTA5ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDE4YmU0MDA2ZjQzOTJkNzFhYzA3NDUx
ZmIyYTQ3Nzg4ZDM2NjI2MjAuLmYzMGM0MzRhNzA0ZjRjNzhhOGFjOTI2ZDczMWY4MzNhNjViYWJj
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0
aG9kU3RhdGUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmlu
ZyYpIHt9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNr
ZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4
IDcyNGI5MmFhNmM3MDg4ZGJlNmI4NmMwYzQzZjZlYmU4ZTRiYmU3OGYuLjhiZDI2NGI0YTljZWRl
YTY1ZDhjYTIyYWIxOWJhZjM5OWVmNTFlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFj
dG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRD
aGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNF
Lmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpyZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyk6CisKIDIwMTEtMDMtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmggYi9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKaW5kZXggZDkz
ZWNjNWI4ZmQ1ZTM1ZjQ0N2Y5MjFlNDc3NTJkYjMyZTIxNDYyNy4uYTJiMjNiNDg1MzZhOThjOWE1
MDg3YjQxMmY4YmU0YTNhNWJkZjdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaApAQCAtMTAxLDcgKzEwMSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpT
dHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RT
dGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOwotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwg
V2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCAzZTM4NWIxYTczYzI0ZjQ4ZDNjM2NmMDcz
YjY3YTU0NDQzMTBiMzI0Li5jYjQ4MzRjODE4NmU0MGNhMzE0MzA5MjYxMWI3N2IyNjk5YTRkMDIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRX
eDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTA3ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4
LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAppbmRl
eCBkMWQzNTk3MDk3NTljOTAwNjg0Mzc5MjBiNTA1ZTVlZmYyODIyMjRkLi42NWVlNDkzMDU5Mzlj
MjdmNWIwMzYxNjVhNzZjNTVkZGY0ZDUwNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwg
Y29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tl
ckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggYTk4YzdlNTNkYTc1MmYwODY2ZTY5YjQ4OWUyNGNjMTEyYTFlOTM4Zi4uMWUxNDUw
MGVhNDI1NzU3ZGYyNGI2NTcyYjZhNGQ3YTVmOTE2OTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBz
aG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKwogMjAx
MS0wMy0wOSAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTWloYWkgUGFycGFyaXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4
IGI5NTQyODM1OTEzMzc4MGI0Y2VkNjBiZjYzZDk1YTM2YjlkZTE1MGMuLmNlMmNlNjE0MzZlZGE2
ZDE4OWE5MmEzZTc0OTM1MTMzZWNmMzIzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAg
LTQ0MSw3ICs0NDEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0
ZShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNv
bnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGZhODQyNmEzOGU5NGZiZTNmNDE2NTk4OWY4MTUy
ZjNhZDc0ZTYwNzguLjA4N2UzMjA5YTFiMWE2MDI4YmJkMGJmZjhiMmY4YTcyMmVhYzc4NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29u
c3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCk7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1h
ck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPFdlYkNvcmU6OkdyYW1t
YXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0
aCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0
T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNr
aW5nVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQs
IGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMs
IFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICNlbmRpZgog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZGV0YWlsKTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcm
KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVz
c2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVj
dG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRo
b2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6
OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKICNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQp
CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlv
blBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0
aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3JlOjpFZGl0b3IqKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29y
cmVjdGlvblBhbmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCA4
YWYwNDM4MGMxZmZlODRkOTVkZDFmMDgxZmVhMDIwYWE5MTY0OTljLi5jNTMyNzRkYjhiNDZlNWI0
M2MwOGRiNGNlM2VhYzk0ZWRmOTdmZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50
TWFjLm1tCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1
dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0
ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBh
cmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNr
aW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJl
c3VsdHMpCiB7CiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgd2Ugd291bGRuJ3Qg
aGF2ZSB0byBjb3B5IHRoZSB0ZXh0IGhlcmUuCiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3Ro
KSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFy
YWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMDEyYzA2NjgzMDU3NjE3ZjQzNjgzMzUxOTJlYjFjMDdjNWU2
MzdhMC4uMzY1MTZjOTUwZGE3NWUwMjA4YjMwZGY1NmZkNGZmOGY3MTViOTc5NyAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBA
CisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
U3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdS
ZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MDg1CisKKyAgICAgICAgQWRkZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxl
Y3Rpb25TdGFydEFzVGV4dCgpIGZvciB0ZXN0aW5nCisgICAgICAgIG5vbi1zcGVsbGluZyBtYXJr
ZXJzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAobWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0Q2FsbGJhY2spOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNU
ZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlv
blN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9y
U2VsZWN0aW9uU3RhcnRBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91
dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1h
cmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKworMjAxMS0wMy0xMSAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1
ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAobWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0Q2FsbGJh
Y2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlv
blN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0Zv
clNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpt
YXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKwogMjAxMS0w
My0wOSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgSGlkZSBMZWFr
cyBWaWV3ZXIncyBVUkwgcHJvbXB0IGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA5ZjE4NzdjMzcxYzA2YjQzZTViMzU0MzJi
NjY2YzgxNGJlOGZiOGJjLi5lNjMyZTc0NjIzZTMxYTc3OGE5MjE5NDVlNTFmZTAxOTAzNTFiZjMw
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0xODcxLDYgKzE4NzEsMTYgQEAgc3RhdGljIEpTVmFsdWVSZWYgaGFzU3BlbGxpbmdNYXJrZXJD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnUKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIG9rKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYg
bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50KQorICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdGV4
dCA9IGNvbnRyb2xsZXItPm1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpOworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCB0ZXh0LmdldCgpKTsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgbWFya2VyVGV4dEZvckxpc3RJdGVtQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nh
c3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OwpAQCAtMjA3NSw2ICsyMDg1LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImxheWVyVHJlZUFzVGV4dCIsIGxh
eWVyVHJlZUFzVGV4dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9mUGFnZXMi
LCBudW1iZXJPZlBhZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibWFya2VyVGV4dEZv
ckxpc3RJdGVtIiwgbWFya2VyVGV4dEZvckxpc3RJdGVtQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAg
ICAgeyAibWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0IiwgbWFya2Vyc0ZvclNlbGVjdGlv
blN0YXJ0QXNUZXh0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibm90aWZ5RG9uZSIsIG5v
dGlmeURvbmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJPZkFjdGl2ZUFuaW1h
dGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzdXNwZW5kQW5pbWF0aW9ucyIsIHN1c3BlbmRBbmltYXRpb25zQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDRi
MWMwNGUzZjY2OWE5OGMyODA0NDVlMzViOTFiMTA4OWVjNmQ3NjAuLmE1MmYxZThmYTVkMTUzZmVj
M2Q3Nzg5OGY2YzMzNmI5YjdhZDlkNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaApAQCAtMjkxLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFi
b3J0TW9kYWwoKTsKIAogICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBs
ZW5ndGgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtYXJrZXJzRm9yU2VsZWN0aW9u
U3RhcnRBc1RleHQoKTsKIAogICAgIHZvaWQgZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChp
bnQgZGV2aWNlRFBJLCBpbnQgZGV2aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBhdmFp
bGFibGVXaWR0aCwgaW50IGF2YWlsYWJsZUhlaWdodCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBiODkx
ZDFlZDJhYmM5OTc0ZmYwMGE0Y2JmN2MxNmUwZmNmZjdmOWU2Li40MTJjZjlmNmVhY2YxNjM1NzIx
ODQ4MzJlM2RmNjAxN2JhYzRjMmFiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xNTk1LDYgKzE1OTUsMTIg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIEMKICAgICByZXN1bHQtPnNldChtX3NoZWxsLT53ZWJW
aWV3KCktPm1haW5GcmFtZSgpLT5zZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5nTWFya2VyRm9yKGFy
Z3VtZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCkpKTsKIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxs
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAppbmRleCA2MTUwMTMzZTA4NjYwYzJkOTI2ZDllZjkwZGZkMDlmNTRmOTE0YmJj
Li4xYWE3MTk3NmZhMTRjYTg5OWViMTQ2ZTE1ZWM4ODZhOTQ4MTk0NzliIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAg
LTMzNCw2ICszMzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1hcmtlclRleHRGb3JMaXN0SXRl
bShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBoYXNTcGVs
bGluZ01hcmtlcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGU3M2ViNDYyMzI0
NDI3NjhkNTFmMjM4Y2E2YjVkMjAxOTI0OGVmNzUuLmUwZTI3YmZhYjc3YmVlOWI1NGNiNDM1ZDE3
NmExNDkxYzk2MDc2N2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlv
dXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtODc4LDYgKzg3OCwxMiBAQCBib29sIExheW91
dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkK
ICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3ZWJraXRXZWJGcmFtZVNlbGVj
dGlvbkhhc1NwZWxsaW5nTWFya2VyKG1haW5GcmFtZSwgZnJvbSwgbGVuZ3RoKTsKIH0KIAorSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2Vs
ZWN0aW9uU3RhcnRBc1RleHQoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IGRldmljZURQSSwgaW50IGRl
dmljZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGludCBhdmFp
bGFibGVIZWlnaHQpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJf
ZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNzJlYzc1OTg1MzBkZTAx
NDNhYTYxMGQxZDI4MjQyZTUzZjA2Nzc1Yy4uMTgyYmEyOTM2MTMyMTdkZTEyZWIyYmM3ZWJmZmZl
ODIzZDZiYjU4NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMTAwNCw2ICsxMDA0LDE0IEBAIGJvb2wgTGF5b3V0VGVz
dENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQogewog
ICAgIHJldHVybiBbbWFpbkZyYW1lIGhhc1NwZWxsaW5nTWFya2VyOmZyb20gbGVuZ3RoOmxlbmd0
aF07CiB9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCkKK3sKKyAgICBOU1N0cmluZyogdGV4dCA9
IFttYWluRnJhbWUgbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0XTsKKyAgICByZXR1cm4g
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmlu
ZygoQ0ZTdHJpbmdSZWYpdGV4dCkpOworfQorCisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IC8qZGV2aWNlRFBJKi8sIGludCAvKmRl
dmljZVdpZHRoKi8sIGludCAvKmRldmljZUhlaWdodCovLCBpbnQgLyphdmFpbGFibGVXaWR0aCov
LCBpbnQgLyphdmFpbGFibGVIZWlnaHQqLykKIHsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCA3NDA1NWUyMDAwN2M1ZDE2
MWI3NDU3YWFjNjAxNGQyY2NkMjUzNDYwLi40MDQ3MGViMzY3NzMwZjA4ODc5ZWJlZDc5NmUyYjZh
MzlmOGNlNTE3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcApAQCAtODI3LDYgKzgyNywxMiBAQCBib29sIExheW91dFRlc3RDb250
cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQsIGludCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK1FTdHJpbmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFy
dEFzVGV4dCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAiIjsKK30K
KwogUVZhcmlhbnRMaXN0IExheW91dFRlc3RDb250cm9sbGVyOjpub2Rlc0Zyb21SZWN0KGNvbnN0
IFFXZWJFbGVtZW50JiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3AsIHVuc2ln
bmVkIHJpZ2h0LCB1bnNpZ25lZCBib3R0b20sIHVuc2lnbmVkIGxlZnQsIGJvb2wgaWdub3JlQ2xp
cHBpbmcpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpub2Rlc0Zyb21S
ZWN0KGRvY3VtZW50LCB4LCB5LCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIGlnbm9yZUNsaXBw
aW5nKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaAppbmRleCAwYjViYmJhY2M2Y2UwMmYyNmZhZWMyMWJhYmNlNzFiNjJhNmQ5MGNkLi42NTFh
ZTdlNDU1ZjVmNzQ5N2FiYTE0MjZmZWI4YzAwMjRhYjlkYTkzIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0yMjcsNiArMjI3LDcg
QEAgcHVibGljIHNsb3RzOgogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5
IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVy
LgogICAgIHZvaWQgYWJvcnRNb2RhbCgpIHt9CiAgICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihp
bnQgZnJvbSwgaW50IGxlbmd0aCk7CisgICAgUVN0cmluZyBtYXJrZXJzRm9yU2VsZWN0aW9uU3Rh
cnRBc1RleHQoKTsKIAogICAgIFFWYXJpYW50TGlzdCBub2Rlc0Zyb21SZWN0KGNvbnN0IFFXZWJF
bGVtZW50JiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3AsIHVuc2lnbmVkIHJp
Z2h0LCB1bnNpZ25lZCBib3R0b20sIHVuc2lnbmVkIGxlZnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcAppbmRleCAxMmEzYTU1YjhhYjYyNmQ4MjAwY2MxNDM1OGRmMjg5ZjAyNjYxODIx
Li45OGQ4NTFlYzRhOTY4ZGFiNzU4YzIwZTRmYjU2MGY1MzUxNDAxOTk4IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAg
LTE0MTgsNiArMTQxOCwxMiBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGlu
Z01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gcmV0OwogfQogCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxl
Y3Rpb25TdGFydEFzVGV4dCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVy
biBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChpbnQgLypkZXZpY2VEUEkqLywgaW50
IC8qZGV2aWNlV2lkdGgqLywgaW50IC8qZGV2aWNlSGVpZ2h0Ki8sIGludCAvKmF2YWlsYWJsZVdp
ZHRoKi8sIGludCAvKmF2YWlsYWJsZUhlaWdodCovKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RD
b250cm9sbGVyV3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRy
b2xsZXJXeC5jcHAKaW5kZXggYTk1YWE1MDVhZDdjZGQzZGEwNWZjNzg5NmVkOGJmZDcwOGY4OTU4
MC4uNmEyNjljNzEyZmVjYzhmY2M5OTc4Yzk5NzYwMTI3NWVhNjQyZjlkZCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTUx
Niw2ICs1MTYsMTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJr
ZXIoaW50LCBpbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4
dCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4oKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcENvbmZp
Z3VyYXRpb25Gb3JWaWV3cG9ydChpbnQgLypkZXZpY2VEUEkqLywgaW50IC8qZGV2aWNlV2lkdGgq
LywgaW50IC8qZGV2aWNlSGVpZ2h0Ki8sIGludCAvKmF2YWlsYWJsZVdpZHRoKi8sIGludCAvKmF2
YWlsYWJsZUhlaWdodCovKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85643</attachid>
            <date>2011-03-13 21:31:56 -0700</date>
            <delta_ts>2011-03-13 22:11:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56085-20110314133154.patch</filename>
            <type>text/plain</type>
            <size>69061</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA5OTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzAyYjcwMmZiYzFjOWY3MzQ0YzQ0
ZDc3NjQ3NTQyMTkzMzVhNTc3Li4wZDM2Zjk1ZTZjZGUzNzQxOGZhOWZlN2M5ZTA2ZGU0MDFhOGZm
YjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICBBZGRlZCBhbiBhc3luYyBn
cmFtbWFyIGNoZWNraW5nIHRlc3QsIHdoaWNoIGRpZG4ndCB3b3JrIGJlZm9yZSB0aGlzIGNoYWdu
ZS4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXBhc3RlLWdyYW1tYXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0wMy0xMyAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgZXhwZWN0ZWQgcmVzdWx0
cyBhZnRlciByODA5ODIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzZmMGU1ZTQ0ZTc4YjRhMzhiNTI5ODk5OTBkNGQ5MzljZjAzMGI0NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyAwIDw9IHdpbmRvdy5tYXJrZXJUZXh0
LmluZGV4T2YoJ1swLDEyXScpIGlzIHRydWUKK1BBU1MgMCA8PSB3aW5kb3cubWFya2VyVGV4dC5p
bmRleE9mKCdHcmFtbWFyJykgaXMgdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NzRlY2FkM2YwZDNlNjBmYzQ1NzZkMmEzOGM2YzRiOGQxOGYwOTQwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1t
YXIuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPCEtLSBzaG91bGQgYmUgYmFkIGdyYW1tYXIgLS0+Cis8ZGl2IGlk
PSJzb3VyY2UiIGNvbnRlbnRFZGl0YWJsZT50aGVyZSB0aGVyZS48L2Rpdj4KKzxkaXYgaWQ9InRh
cmdldCIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPHNjcmlwdD4KKworbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CitsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK01BWF9UUlkgPSAxMDsKKwordmFyIHNl
bCA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpOwordmFyIHNvdXJjZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzb3VyY2UiKTsKK3ZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4oc291cmNlKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJDb3B5Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0KTsKK2RvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJQYXN0ZSIpOworCitmdW5jdGlvbiB3YWludFVuaXRsVmVyaWZ5UGFz
c2VkKCkgeworICAgIHNlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQpOworICAgIHdpbmRvdy5t
YXJrZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0
QXNUZXh0KCk7CisgICAgaWYgKDAgPT0gd2luZG93Lm1hcmtlclRleHQubGVuZ3RoKSB7CisgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHdhaW50VW5pdGxWZXJpZnlQYXNzZWQoKTsgfSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUoIjAgPD0gd2lu
ZG93Lm1hcmtlclRleHQuaW5kZXhPZignWzAsMTJdJykiKTsKKyAgICBzaG91bGRCZVRydWUoIjAg
PD0gd2luZG93Lm1hcmtlclRleHQuaW5kZXhPZignR3JhbW1hcicpIik7CisgICAgdGFyZ2V0LnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQodGFyZ2V0KTsKKyAgICBzb3VyY2UucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChzb3VyY2UpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworc2V0VGltZW91dChmdW5jdGlvbigpIHsgd2FpbnRVbml0bFZlcmlmeVBhc3NlZCgpOyB9
LCAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGIyY2NmNGUzYWViZGYyZjI2NTQ2OGVhY2Ew
YzM5MmE2MTg2Y2Y3NWIuLmU2MGU3MDJkMjJhZWJlYjIwODQ0NmY4YTQ2YjQxOTJkOTZiZTliZmYg
MTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKQEAgLTMzNjEsNiArMzM2MSw5IEBAIEJVR1dLNTYwNzIgTUFDIFNOT1dMRU9QQVJE
IDogZmFzdC9yZXBhaW50L3JlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3VuZGFyeS5oCiBC
VUdXSzU2MDcyIE1BQyBTTk9XTEVPUEFSRCA6IGZhc3QvcmVwYWludC90ZXh0LWVtcGhhc2lzLWgu
aHRtbCA9IElNQUdFCiBCVUdXSzU2MDcyIFdJTi1WSVNUQSA6IGZhc3QvcnVieS9iYXNlLXNob3J0
ZXItdGhhbi10ZXh0Lmh0bWwgPSBGQUlMCiAKKy8vIERvZXNuJ3Qgc3VwcG9ydCBncmFtbWFyIGNo
ZWNrIHlldC4KK0JVR01PUlJJVEEgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUt
Z3JhbW1hci5odG1sID0gVEVYVAorCiAvLyBpbnRyb2R1Y2VkIGJ5IERhdmUgSHlhdHQgaW4gV0sg
cjgwNTgyCiBCVUdDUjc1NTYxIFdJTiBMSU5VWCA6IGZhc3QvYmxvY2tmbG93L3RleHQtb3JpZW50
YXRpb24tYmFzaWMuaHRtbCA9IElNQUdFK1RFWFQKIEJVR0NSNzU1NjEgTUFDIExFT1BBUkQgOiBm
YXN0L2Jsb2NrZmxvdy90ZXh0LW9yaWVudGF0aW9uLWJhc2ljLmh0bWwgPSBJTUFHRStURVhUCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDVjODZhOGZjMzAwNmJjMzE2MjAxZmEyY2NkMzMw
MDdlZmQ0MzNlZTcuLjA5ZTAyMjNiZGU5MzJjMWFiYTEwN2I1MDFlMmVhYmZkOGQyMzYxYTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0yOTksNiArMjk5LDcgQEAgbWVkaWEvbWVkaWEt
Y2FwdGlvbnMuaHRtbAogIyBEYXRhVHJhbnNmZXJJdGVtcyBpcyBub3QgeWV0IGltcGxlbWVudGVk
LgogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbAogCisKICMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKICMgVEVTVFMgRkFJTElORwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwpAQCAtMTI2NSw2ICsxMjY2LDcgQEAgbWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLmh0bWwK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzQwCiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgRm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDc1OAogIyBUaGVzZSByZXF1aXJlIERSVCBzZXRTZXJpYWxpemVIVFRQ
TG9hZHMgaW1wbGVtZW50YXRpb24gdG8gYmUgcmVsaWFibGUuCkBAIC0xMzE0LDQgKzEzMTYsNCBA
QCBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXJlZGlyZWN0Lnht
bAogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1leHRlcm5hbC1lbnRpdHktcmVk
aXJlY3QueG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MDgxCi1mYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCitmYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9Ta2lwcGVkCmluZGV4IDQwNGU4MzI3Nzc4NDZiY2ZjNWI3NGUyMWMzNTI1
N2RlMWQ5ZTU0NjAuLjg3MmJlNzVlY2Q0ODQ1Nzg3YTU5MDI0Yjk3OTFiNzU3ZWRjMjYwOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZApAQCAtOTAsNiArOTAsNyBA
QCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlZWthYmxlLXN0YWxsLmh0bWwKIAogIyBBdmFpbGFi
bGUgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHRlc3RzIHdoaWNoIHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByNjY5NjEKICMgRmFpbHVyZXMg
bG9vayBsaWtlIGFuIHVuZGVybHlpbmcgcGxhdGZvcm0gaXNzdWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy10aWdlci9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXRpZ2VyL1NraXBwZWQKaW5kZXggYWJkNzI2N2YzNzkyNTVmNzJkNjM4OWMxODU4ZDYxNjk4
ZjdkNWM1Zi4uMGYyMGMxZTA2Zjg0NGY5NjQ4OTliYzkxZDg0OGEwOTFhNDhjZTY5OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKQEAgLTIxMSw2ICsyMTEsNyBAQCBodHRw
L3Rlc3RzL21pc2MvNDAxLWFsdGVybmF0aXZlLWNvbnRlbnQucGhwCiAKICMgQXZhaWxhYmxlIG9u
bHkgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHNwZWxsaW5nIHRlc3RzIGZvciBhdXRvY29ycmVjdGlvbiBwYW5lbAogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rpb24uaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKaW5kZXggYjRkYjJiZDM2ZjhhZjE5Mjg1MDdlNWM1Yzk3YzcyZDAyZGY3
NzNmMy4uOWY1NWI2MGFlMzgzYzg5NDAxNDlkZGZiYjQwNTU3NWE4MGEwOWQ3YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xMjAxLDYgKzEyMDEsNyBAQCBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sCiAKICMgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZygpIGlzIG5vdCBpbXBsZW1lbnRlZAogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLXBhc3RlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLmh0bWwKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIGZhaWxpbmcgZWRpdGlu
Zy9zdHlsZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBiMzYxYzYyNTlmOWEx
MDBmMDY5YWU5Y2FhMTBhNzgzYzU2NDhiNmMzLi4zZWI1N2FkYjc4ODM4OTQ4NjI4MzRlZDc2Zjk3
NDc1ZjgyNDU3ZWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtOTc1LDYgKzk3NSw3
IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAogCiAjIEVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKSBpcyBub3QgaW1wbGVtZW50ZWQKIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgSW5kZXhlZERCIGlzIG5vdCB5ZXQgZW5hYmxl
ZC4KIHN0b3JhZ2UvaW5kZXhlZGRiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNjYjcyM2VlZTA0ZTg1NmJhZjgw
OTJiMGE3MWVhZTUzMzFmOGUzZS4uMTQ3N2JjMmU4NDJiY2ZhZjM3NWVhODlkNWYyMDkxODM3YzUw
YmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisgICAgICAgIAorICAgICAgICBS
ZW1vdmVkIFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQgYW5kIHJlcGxhY2VkIGl0IHdpdGgg
VGV4dENoZWNraW5nUmVzdWx0LgorICAgICAgICBUaGlzIGNoYW5nZSByZXZlYWxlZCB0aGF0IFRl
eHRDaGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpIHNob3VsZCBoYXZlCisg
ICAgICAgIGFkZGl0aW9uYWwgcmVxdWVzdCB0eXBlIHBhcmFtZXRlciB0aHVzIGFkZGVkIGl0Lgor
CisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyQXNUZXh0KTog
c3RhdGljIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya2Vy
c0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KTogQWRkZWQuIEEgaGVscGVyIGZvciB0ZXN0aW5nLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0Zvcik6IEV4dHJh
Y3RlZCBmcm9tIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoKQorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3Ip
OiBBZGRlZCBhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6bWFy
a0F0KTogRXh0cmFjdGVkIGZyb20gZGlkQ2hlY2soKSwgQWRkZWQgYSBjaGVjayBmb3IgdGhlIEdy
YW1tYXJEZXRhaWwgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRD
aGVjayk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xp
ZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRD
aGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oOgorCiAyMDExLTAzLTEzICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGIzZmVkYzE0NDgyNjkyN2MwNTg1ZWUwN2ZiN2ZlYmQ5ZmYyYjA5YmEuLjRl
ZmNjMWZmMGVhZmRhMjhhOWVjMTJhZWYzMzA0ZmEwYjkyNzRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0yOTMsNyArMjkzLDcgQEAgX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXI2YXBwZW5k
RVBLY2oKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyQzFFUEtjaQogX19aTjdXZWJDb3JlMTJT
aGFyZWRCdWZmZXJDMUV2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKLV9fWk43V2Vi
Q29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOVNwZWxsQ2hl
Y2tpbmdSZXN1bHRFTG0wRUVFCitfX1pON1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0Vp
UktOM1dURjZWZWN0b3JJTlNfMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUVFCiBfX1pON1dlYkNv
cmUxMlRleHRFbmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3IxMXJhbmdlTGVuZ3RoRVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRFaWliCkBAIC0xMjA1
LDYgKzEyMDUsNyBAQCBfX1pOSzdXZWJDb3JlNkVkaXRvcjE3c2VsZWN0aW9uSGFzU3R5bGVFaVJL
TjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTZFZGl0b3IxN3Nob3VsZERlbGV0ZVJhbmdlRVBO
U181UmFuZ2VFCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjIzZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb25F
UmpTMV8KIF9fWk5LN1dlYkNvcmU2RWRpdG9yMzBhcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1l
bnRFdgorX19aTks3V2ViQ29yZTZFZGl0b3IzMG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjMxZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjM0c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtl
ckZvckVpaQogX19aTks3V2ViQ29yZTZFZGl0b3IzN2Jhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2Vs
ZWN0aW9uU3RhcnRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhh
NDM5MTBhOWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLjJlOTU5OWYyYjBkMWI1ZDljOTkxNDAyMWI1
YThjMWY0MzY1MTBkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTY0LDcgKzY0
LDYgQEAKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJSZW1vdmVGb3JtYXRDb21tYW5kLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTQ0MCw3ICs0MzksNyBAQCB2b2lkIEVkaXRv
cjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50LAogCiAgICAgTm9kZSogbm9kZVRvQ2hlY2sgPSBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmIChtX3NwZWxsQ2hlY2tlci0+Y2Fu
Q2hlY2tBc3luY2hyb25vdXNseShub2RlVG9DaGVjaykpCi0gICAgICAgIG1fc3BlbGxDaGVja2Vy
LT5yZXF1ZXN0Q2hlY2tpbmdGb3Iobm9kZVRvQ2hlY2spOworICAgICAgICBtX3NwZWxsQ2hlY2tl
ci0+cmVxdWVzdENoZWNraW5nRm9yKHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKE1hcmtTcGVsbGlu
ZyB8IE1hcmtHcmFtbWFyKSwgbm9kZVRvQ2hlY2spOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFj
ZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNl
bWVudCwgYm9vbCBzbWFydFJlcGxhY2UpCkBAIC0yMjcwLDcgKzIyNjksNyBAQCB2b2lkIEVkaXRv
cjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdP
cHRpb25zIHRleHRDaAogICAgIH0KIAogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJl
c3VsdHM7Ci0gICAgdWludDY0X3QgY2hlY2tpbmdUeXBlcyA9IDA7CisgICAgVGV4dENoZWNraW5n
VHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9IDA7CiAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykK
ICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CiAgICAg
aWYgKHNob3VsZE1hcmtHcmFtbWFyKQpAQCAtMzU5MCwxMCArMzU4OSw4OCBAQCBib29sIEVkaXRv
cjo6c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtlckZvcihpbnQgZnJvbSwgaW50IGxlbmd0
aCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBTdHJpbmcgbWFya2VyQXNU
ZXh0KGNvbnN0IERvY3VtZW50TWFya2VyJiBtYXJrZXIpCit7CisgICAgU3RyaW5nIHJlc3VsdDsK
KyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nICYgbWFya2VyLnR5cGUpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoIlNwZWxsaW5nICIpOworICAgIGlmIChEb2N1bWVudE1hcmtlcjo6R3Jh
bW1hciAmIG1hcmtlci50eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJHcmFtbWFyICIpOwor
ICAgIGlmIChEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoICYgbWFya2VyLnR5cGUpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoIlRleHRNYXRjaCAiKTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlJl
cGxhY2VtZW50ICYgbWFya2VyLnR5cGUpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIlJlcGxhY2Vt
ZW50ICIpOworICAgIGlmIChEb2N1bWVudE1hcmtlcjo6Q29ycmVjdGlvbkluZGljYXRvciAmIG1h
cmtlci50eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJDb3JyZWN0aW9uSW5kaWNhdG9yICIp
OworICAgIGlmIChEb2N1bWVudE1hcmtlcjo6UmVqZWN0ZWRDb3JyZWN0aW9uICYgbWFya2VyLnR5
cGUpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIlJlamVjdGVkQ29ycmVjdGlvbiAiKTsKKyAgICBp
ZiAoRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gJiBtYXJrZXIudHlwZSkK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgiU3BlbGxDaGVja2luZ0V4ZW1wdGlvbiAiKTsKKyAgICBy
ZXN1bHQuYXBwZW5kKCJbIik7CisgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJlcihtYXJr
ZXIuc3RhcnRPZmZzZXQpKTsKKyAgICByZXN1bHQuYXBwZW5kKCIsIik7CisgICAgcmVzdWx0LmFw
cGVuZChTdHJpbmc6Om51bWJlcihtYXJrZXIuZW5kT2Zmc2V0KSk7CisgICAgcmVzdWx0LmFwcGVu
ZCgiXSIpOworICAgIGlmICghbWFya2VyLmRlc2NyaXB0aW9uLmlzRW1wdHkoKSkgeworICAgICAg
ICByZXN1bHQuYXBwZW5kKCIoIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobWFya2VyLmRlc2Ny
aXB0aW9uKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiKSIpOworICAgIH0KKworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK1N0cmluZyBFZGl0b3I6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFz
VGV4dCgpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IGZpbmRGaXJzdE1hcmthYmxlKG1fZnJh
bWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpOworICAgIGlmICghbm9k
ZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBW
ZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnMgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5tYXJr
ZXJzKCktPm1hcmtlcnNGb3JOb2RlKG5vZGUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bWFya2Vycy5zaXplKCk7ICsraSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKG1hcmtlckFzVGV4
dChtYXJrZXJzW2ldKSk7CisgICAgICAgIGlmIChpICsgMSA8IG1hcmtlcnMuc2l6ZSgpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCIpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIEZsb2F0UmVjdCBFZGl0b3I6OndpbmRvd1JlY3RGb3JSYW5nZShjb25zdCBSYW5nZSog
cmFuZ2UpIGNvbnN0CiB7CiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUoKS0+dmlldygpOwog
ICAgIHJldHVybiB2aWV3ID8gdmlldy0+Y29udGVudHNUb1dpbmRvdyhJbnRSZWN0KHJhbmdlLT5i
b3VuZGluZ1JlY3QoKSkpIDogRmxvYXRSZWN0KCk7CiB9ICAgICAgICAKIAorVGV4dENoZWNraW5n
VHlwZU1hc2sgRWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0ZvcihUZXh0Q2hlY2tpbmdPcHRp
b25zIHRleHRDaGVja2luZ09wdGlvbnMpCit7CisgICAgYm9vbCBzaG91bGRNYXJrU3BlbGxpbmcg
PSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya1NwZWxsaW5nOworICAgIGJvb2wgc2hvdWxkTWFy
a0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1tYXI7CisgICAgYm9vbCBz
aG91bGRQZXJmb3JtUmVwbGFjZW1lbnQgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgUGVyZm9ybVJl
cGxhY2VtZW50OworICAgIGJvb2wgc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVj
a2luZ09wdGlvbnMgJiBTaG93Q29ycmVjdGlvblBhbmVsOworCisgICAgVGV4dENoZWNraW5nVHlw
ZU1hc2sgY2hlY2tpbmdUeXBlcyA9IDA7CisgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKKyAg
ICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgaWYg
KHNob3VsZE1hcmtHcmFtbWFyKQorICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2lu
Z1R5cGVHcmFtbWFyOworICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQorICAgICAg
ICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIGlmIChz
aG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKKyAgICAgICAgaWYgKGlzQXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNr
aW5nVHlwZUxpbms7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5h
YmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUXVv
dGU7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkpCisg
ICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVEYXNoOworICAgICAg
ICBpZiAoaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkpCisgICAgICAgICAgICBj
aGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKKyAgICAgICAgaWYg
KHNob3VsZE1hcmtTcGVsbGluZyAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJs
ZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJl
Y3Rpb247CisgICAgfQorCisgICAgcmV0dXJuIGNoZWNraW5nVHlwZXM7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUxYTcxMTkyNDVlODNi
ZWQxMGQ3M2QyMDVlZmUyMTU0MDg1YzU2OWUuLjhiZTQ3MzYwZGIyYjZjZmJjYTRhYTU1ZmRkMjgz
NGVhYjgwOTI0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIkVkaXRvckluc2VydEFjdGlvbi5oIgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgi
CiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlRleHRDaGVja2Vy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgpAQCAtNjIsNyArNjMsNiBAQCBjbGFz
cyBQYXN0ZWJvYXJkOwogY2xhc3MgU2ltcGxlRm9udERhdGE7CiBjbGFzcyBTcGVsbENoZWNrZXI7
CiBjbGFzcyBUZXh0OwotY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZlbnQ7
CiAKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGluZSB7CkBAIC0yMjIsNiArMjIyLDE1IEBAIHB1
YmxpYzoKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYs
IFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgdm9pZCBtYXJrQmFk
R3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlv
biwgYm9vbCBtYXJrR3JhbW1hciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVj
dGlvbik7CisKKyAgICBlbnVtIFRleHRDaGVja2luZ09wdGlvbkZsYWdzIHsKKyAgICAgICAgTWFy
a1NwZWxsaW5nID0gMSA8PCAwLAorICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKKyAgICAg
ICAgUGVyZm9ybVJlcGxhY2VtZW50ID0gMSA8PCAyLAorICAgICAgICBTaG93Q29ycmVjdGlvblBh
bmVsID0gMSA8PCAzLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdP
cHRpb25zOworCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICB2b2lkIHVwcGVyY2FzZVdv
cmQoKTsKICAgICB2b2lkIGxvd2VyY2FzZVdvcmQoKTsKQEAgLTIzOSwxNCArMjQ4LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCk7CiAgICAgYm9v
bCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsKICAgICB2b2lkIHRvZ2ds
ZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOwotICAgIGVudW0gVGV4dENoZWNraW5nT3B0
aW9uRmxhZ3MgewotICAgICAgICBNYXJrU3BlbGxpbmcgPSAxIDw8IDAsCi0gICAgICAgIE1hcmtH
cmFtbWFyID0gMSA8PCAxLAotICAgICAgICBQZXJmb3JtUmVwbGFjZW1lbnQgPSAxIDw8IDIsCi0g
ICAgICAgIFNob3dDb3JyZWN0aW9uUGFuZWwgPSAxIDw8IDMsCi0gICAgfTsKLSAgICB0eXBlZGVm
IHVuc2lnbmVkIFRleHRDaGVja2luZ09wdGlvbnM7Ci0KICAgICB2b2lkIG1hcmtBbGxNaXNzcGVs
bGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNw
ZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFtbWFyUmFuZ2UpOwogICAgIHZvaWQgY2hhbmdlQmFja1Rv
UmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZyk7CiAjZW5kaWYKQEAg
LTM3OCw2ICszNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzKTsKICNlbmRpZgogCisgICAgU3RyaW5nIG1hcmtlcnNGb3JTZWxlY3Rp
b25TdGFydEFzVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTcGVsbGlu
Z01hcmtlckZvcihpbnQgZnJvbSwgaW50IGxlbmd0aCkgY29uc3Q7CiAgICAgdm9pZCByZW1vdmVT
cGVsbEFuZENvcnJlY3Rpb25NYXJrZXJzRnJvbVdvcmRzVG9CZUVkaXRlZChib29sIGRvTm90UmVt
b3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSk7CiAKQEAgLTQxMSw2ICs0MTMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCopOwog
ICAgIHZvaWQgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCk7CiAgICAgdm9p
ZCBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBi
b29sIGNoZWNrU3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7
CisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENo
ZWNraW5nT3B0aW9ucyk7CiAKICAgICB2b2lkIHNlbGVjdENvbXBvc2l0aW9uKCk7CiAgICAgdm9p
ZCBjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgYm9vbCBwcmVzZXJ2ZVNlbGVjdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5kZXggNzk4OGU0MTYx
MGE1MTliNmE1Y2IyNjMwYzYxMGViZWE4ZmFlNWYyMS4uZjUyNGEyZjQ4OTc2MjM0ZGU2NjdmZTg4
ZGM5ZjQ4NjQzYzdiN2NkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNw
cApAQCAtMTAwLDEzICsxMDAsMTUgQEAgYm9vbCBTcGVsbENoZWNrZXI6OmlzQ2hlY2thYmxlKE5v
ZGUqIG5vZGUpIGNvbnN0CiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKTsKIH0K
IAotdm9pZCBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0ZvcihOb2RlKiBub2RlKQordm9p
ZCBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayBt
YXNrLCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChjYW5DaGVja0FzeW5jaHJvbm91c2x5KG5v
ZGUpKTsKKyAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0cyBzcGVsbGluZyBhbmQgZ3Jh
bW1hcgorICAgIEFTU0VSVCghKG1hc2sgJiB+KFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRl
eHRDaGVja2luZ1R5cGVHcmFtbWFyKSkpOwogCiAgICAgaWYgKCFpbml0UmVxdWVzdChub2RlKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh0
aGlzLCBtX3JlcXVlc3RTZXF1ZW5jZSwgbV9yZXF1ZXN0VGV4dCk7CisgICAgbV9jbGllbnQtPnJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcmVxdWVzdFNlcXVlbmNlLCBtYXNrLCBtX3Jl
cXVlc3RUZXh0KTsKIH0KIAogc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJhdG9yKFBvc2l0aW9uSXRl
cmF0b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2UpCkBAIC0xMzEsNyArMTMzLDI3IEBAIHN0YXRp
YyBib29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50IGRp
c3RhbmNlKQogICAgIHJldHVybiBmYWxzZTsgICAgCiB9CiAKLXZvaWQgU3BlbGxDaGVja2VyOjpk
aWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYg
cmVzdWx0cykKK2Jvb2wgU3BlbGxDaGVja2VyOjptYXJrQXQoY29uc3QgUG9zaXRpb25JdGVyYXRv
ciYgc3RhcnQsIGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtl
clR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikgY29uc3QKK3sKKyAgICBQb3Np
dGlvbkl0ZXJhdG9yIGVuZCA9IHN0YXJ0OworICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKGVuZCwg
bGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVXNlcnMgb3IgSmF2YVNj
cmlwdCBhcHBsaWNhdGlvbnMgbWF5IGNoYW5nZSB0ZXh0IHdoaWxlIGEgc3BlbGwtY2hlY2tlciBj
aGVja3MgaXRzCisgICAgLy8gc3BlbGxpbmdzIGluIHRoZSBiYWNrZ3JvdW5kLiBUbyBhdm9pZCBh
ZGRpbmcgbWFya2VycyB0byB0aGUgd29yZHMgbW9kaWZpZWQgYnkgdXNlcnMgb3IKKyAgICAvLyBK
YXZhU2NyaXB0IGFwcGxpY2F0aW9ucywgcmV0cmlldmUgdGhlIHdvcmRzIGluIHRoZSBzcGVjaWZp
ZWQgcmVnaW9uIGFuZCBjb21wYXJlIHRoZW0gd2l0aAorICAgIC8vIHRoZSBvcmlnaW5hbCBvbmVz
LgorICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVxdWVzdE5vZGUt
PmRvY3VtZW50KCksIHN0YXJ0LCBlbmQpOworCisgICAgLy8gRklYTUU6IFVzZSB0ZXh0Q29udGVu
dCgpIGNvbXBhdGlibGUgc3RyaW5nIGNvbnZlcnNpb24uCisgICAgU3RyaW5nIGRlc3RpbmF0aW9u
ID0gcmFuZ2UtPnRleHQoKTsKKyAgICBTdHJpbmcgc291cmNlID0gbV9yZXF1ZXN0VGV4dC5zdWJz
dHJpbmcobG9jYXRpb24sIGxlbmd0aCk7CisgICAgaWYgKGRlc3RpbmF0aW9uID09IHNvdXJjZSkK
KyAgICAgICAgbV9yZXF1ZXN0Tm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIo
cmFuZ2UuZ2V0KCksIHR5cGUsIGRlc2NyaXB0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKHNlcXVlbmNl
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0LDMwICsxNjYsMzYgQEAgdm9pZCBTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1
bHQ+JiByZXMKICAgICBpbnQgc3RhcnRPZmZzZXQgPSAwOwogICAgIFBvc2l0aW9uSXRlcmF0b3Ig
c3RhcnQgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobV9yZXF1ZXN0Tm9kZS5nZXQoKSk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIGlmIChyZXN1bHRzW2ldLnR5cGUoKSAhPSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcgJiYg
cmVzdWx0c1tpXS50eXBlKCkgIT0gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpCisgICAgICAgIC8v
IEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnRzIHNwZWxsaW5nIGFuZCBncmFtbWFyCisgICAgICAg
IGlmIChyZXN1bHRzW2ldLnR5cGUgJiB+KFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRD
aGVja2luZ1R5cGVHcmFtbWFyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8v
IFRvIGF2b2lkIG1vdmluZyB0aGUgcG9zaXRpb24gYmFja3dhcmQsIHdlIGFzc3VtZSB0aGUgZ2l2
ZW4gcmVzdWx0cyBhcmUgc29ydGVkIHdpdGgKICAgICAgICAgLy8gc3RhcnRPZmZzZXQgYXMgdGhl
IG9uZXMgcmV0dXJuZWQgYnkgW05TU3BlbGxDaGVja2VyIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
Ol0uCi0gICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA8PSByZXN1bHRzW2ldLmxvY2F0aW9uKCkp
OwotICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihzdGFydCwgcmVzdWx0c1tpXS5sb2NhdGlv
bigpIC0gc3RhcnRPZmZzZXQpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFBvc2l0aW9u
SXRlcmF0b3IgZW5kID0gc3RhcnQ7Ci0gICAgICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKGVuZCwg
cmVzdWx0c1tpXS5sZW5ndGgoKSkpCisgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA8PSByZXN1
bHRzW2ldLmxvY2F0aW9uKTsKKyAgICAgICAgaWYgKCFmb3J3YXJkSXRlcmF0b3Ioc3RhcnQsIHJl
c3VsdHNbaV0ubG9jYXRpb24gLSBzdGFydE9mZnNldCkpCiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgCisgICAgICAgIGlmIChyZXN1bHRzW2ldLnR5cGUgJiBUZXh0Q2hlY2tpbmdUeXBlU3Bl
bGxpbmcpIHsKKyAgICAgICAgICAgIGlmICghbWFya0F0KHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0
aW9uLCByZXN1bHRzW2ldLmxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nLCBTdHJpbmco
KSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVz
dWx0c1tpXS50eXBlICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIHsKKyAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgcmVzdWx0c1tpXS5kZXRhaWxzLnNpemUoKTsgKytqKSB7Cisg
ICAgICAgICAgICAgICAgUG9zaXRpb25JdGVyYXRvciBncmFtbWFyU3RhcnQgPSBzdGFydDsKKyAg
ICAgICAgICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihncmFtbWFyU3RhcnQsIHJlc3VsdHNb
aV0uZGV0YWlsc1tqXS5sb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgUG9zaXRpb25JdGVy
YXRvciBncmFtbWFyRW5kID0gZ3JhbW1hclN0YXJ0OworICAgICAgICAgICAgICAgIGlmICghZm9y
d2FyZEl0ZXJhdG9yKGdyYW1tYXJFbmQsIHJlc3VsdHNbaV0uZGV0YWlsc1tqXS5sZW5ndGgpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoIW1hcmtBdChn
cmFtbWFyU3RhcnQsIHJlc3VsdHNbaV0uZGV0YWlsc1tqXS5sb2NhdGlvbiwgcmVzdWx0c1tpXS5k
ZXRhaWxzW2pdLmxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIHJlc3VsdHNbaV0uZGV0
YWlsc1tqXS51c2VyRGVzY3JpcHRpb24pKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgIC8vIFVzZXJzIG9yIEphdmFTY3JpcHQg
YXBwbGljYXRpb25zIG1heSBjaGFuZ2UgdGV4dCB3aGlsZSBhIHNwZWxsLWNoZWNrZXIgY2hlY2tz
IGl0cwotICAgICAgICAvLyBzcGVsbGluZ3MgaW4gdGhlIGJhY2tncm91bmQuIFRvIGF2b2lkIGFk
ZGluZyBtYXJrZXJzIHRvIHRoZSB3b3JkcyBtb2RpZmllZCBieSB1c2VycyBvcgotICAgICAgICAv
LyBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucywgcmV0cmlldmUgdGhlIHdvcmRzIGluIHRoZSBzcGVj
aWZpZWQgcmVnaW9uIGFuZCBjb21wYXJlIHRoZW0gd2l0aAotICAgICAgICAvLyB0aGUgb3JpZ2lu
YWwgb25lcy4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9y
ZXF1ZXN0Tm9kZS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7Ci0gICAgICAgIC8vIEZJWE1FOiBV
c2UgdGV4dENvbnRlbnQoKSBjb21wYXRpYmxlIHN0cmluZyBjb252ZXJzaW9uLgotICAgICAgICBT
dHJpbmcgZGVzdGluYXRpb24gPSByYW5nZS0+dGV4dCgpOwotICAgICAgICBTdHJpbmcgc291cmNl
ID0gbV9yZXF1ZXN0VGV4dC5zdWJzdHJpbmcocmVzdWx0c1tpXS5sb2NhdGlvbigpLCByZXN1bHRz
W2ldLmxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGRlc3RpbmF0aW9uID09IHNvdXJjZSkKLSAgICAg
ICAgICAgIG1fcmVxdWVzdE5vZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJh
bmdlLmdldCgpLCByZXN1bHRzW2ldLnR5cGUoKSk7Ci0KLSAgICAgICAgc3RhcnRPZmZzZXQgPSBy
ZXN1bHRzW2ldLmxvY2F0aW9uKCk7CisgICAgICAgIHN0YXJ0T2Zmc2V0ID0gcmVzdWx0c1tpXS5s
b2NhdGlvbjsKICAgICB9CiAKICAgICBjbGVhclJlcXVlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsQ2hlY2tlci5oCmluZGV4IGQzOTQwZTUwNGZhYTQ2YTk2NWM3MzgwNGI1OWNmNzExZjc2
ZGNiZjguLmQwOTc5ZWZmMmQyNTE3YWM1MmVhODdkYTY0OTZmNTBhN2RjZmQ5MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaApAQCAtMjcsMzIgKzI3LDE0IEBACiAjZGVmaW5l
IFNwZWxsQ2hlY2tlcl9oCiAKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlci5oIgorI2luY2x1ZGUg
IlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIE5vZGU7Ci0KLWNsYXNzIFNwZWxsQ2hlY2tpbmdSZXN1bHQgewotcHVibGljOgot
ICAgIGV4cGxpY2l0IFNwZWxsQ2hlY2tpbmdSZXN1bHQoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5
cGUgdHlwZSA9IERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgaW50IGxvY2F0aW9uID0gMCwgaW50
IGxlbmd0aCA9IDApCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9sb2NhdGlv
bihsb2NhdGlvbikKLSAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCi0gICAgewotICAgIH0KLQot
ICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0gCi0gICAgaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQot
ICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQotCi1wcml2YXRlOgot
ICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIG1fdHlwZTsKLSAgICBpbnQgbV9sb2NhdGlv
bjsKLSAgICBpbnQgbV9sZW5ndGg7Ci19OworY2xhc3MgUG9zaXRpb25JdGVyYXRvcjsKIAogY2xh
c3MgU3BlbGxDaGVja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTcGVsbENoZWNrZXIp
OwpAQCAtNjUsMTIgKzQ3LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzQnVzeSgpIGNvbnN0Owog
ICAgIGJvb2wgaXNWYWxpZChpbnQgc2VxdWVuY2UpIGNvbnN0OwogICAgIGJvb2wgaXNDaGVja2Fi
bGUoTm9kZSopIGNvbnN0OwotICAgIHZvaWQgcmVxdWVzdENoZWNraW5nRm9yKE5vZGUqKTsKLSAg
ICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFNwZWxsQ2hlY2tpbmdS
ZXN1bHQ+Jik7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1h
c2ssIE5vZGUqKTsKKyAgICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogcHJpdmF0ZToKICAgICBib29sIGluaXRSZXF1ZXN0
KE5vZGUqKTsKICAgICB2b2lkIGNsZWFyUmVxdWVzdCgpOworICAgIGJvb2wgbWFya0F0KGNvbnN0
IFBvc2l0aW9uSXRlcmF0b3ImIHN0YXJ0LCBpbnQgbG9jYXRpbiwgaW50IGxlbmd0aCwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pIGNvbnN0Owog
CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVGV4dENoZWNrZXJDbGllbnQqIG1fY2xpZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGVkOTJmMTEyY2JhODc3ZmQ1MmMz
NDY0MDdmNWI0ZmZlMjYxMjBmNmMuLjQ2YWUxNTJiY2UwODA4OTZlMzgzMDhkMjk0ZmQ4ZTcwOTVm
NTc1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQwNywxMSArNDA3
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29u
c3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCosIGludCopIHsgfQog
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIHVpbnQ2NF90LCBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29u
c3QgVUNoYXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiYpIHsgfTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JX
b3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0
cmluZyYpIHsgfQogfTsKIAogY2xhc3MgRW1wdHlFZGl0b3JDbGllbnQgOiBwdWJsaWMgRWRpdG9y
Q2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENo
ZWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJD
bGllbnQuaAppbmRleCBhY2FhMDJjZjYyYTA3MGY5MGNmOTRjNmUxMjZjNWQwZDY3YmZiYjhlLi44
YjFkODEyMjI0ZjU1NTZiY2Y4OTYzN2U5NGNkZjBiNmEyZGIyZDUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCkBAIC01Myw2ICs1Myw4
IEBAIGVudW0gVGV4dENoZWNraW5nVHlwZSB7CiAgICAgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rp
b24gID0gMSA8PCA5CiB9OwogCit0eXBlZGVmIHVpbnQ2NF90IFRleHRDaGVja2luZ1R5cGVNYXNr
OworCiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0IHsKICAgICBUZXh0Q2hlY2tpbmdUeXBlIHR5
cGU7CiAgICAgaW50IGxvY2F0aW9uOwpAQCAtNzEsMTQgKzczLDE0IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChj
b25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNr
R3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPEdyYW1tYXJE
ZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkg
PSAwOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4
dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVj
a2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50
IGxlbmd0aCwgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKICNlbmRpZgogCiAgICAgLy8gRm9yIHNwZWxs
Y2hlY2tlcnMgdGhhdCBzdXBwb3J0IG11bHRpcGxlIGxhbmd1YWdlcywgaXQncyBvZnRlbiBpbXBv
cnRhbnQgdG8gYmUgYWJsZSB0byBpZGVudGlmeSB0aGUgbGFuZ3VhZ2UgaW4gb3JkZXIgdG8KICAg
ICAvLyBwcm92aWRlIG1vcmUgYWNjdXJhdGUgY29ycmVjdGlvbiBzdWdnZXN0aW9ucy4gQ2FsbGVy
IGNhbiBwYXNzIGluIG1vcmUgdGV4dCBpbiAiY29udGV4dCIgdG8gYWlkIHN1Y2ggc3BlbGxjaGVj
a2VycyBvbiBsYW5ndWFnZQogICAgIC8vIGlkZW50aWZpY2F0aW9uLiBOb3JhbWxseSBpdCdzIHRo
ZSB0ZXh0IHN1cnJvdW5kaW5nIHRoZSAid29yZCIgZm9yIHdoaWNoIHdlIGFyZSBnZXR0aW5nIGNv
cnJlY3Rpb24gc3VnZ2VzdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3Jk
KGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5n
PiYgZ3Vlc3NlcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBUZXh0Q2hlY2tp
bmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBiMWUzOTY0NjI2NzFkMTU2MjlhYzIwYzRkMDI1Nzk2NmU5ZDA2ZmQ0Li5l
MjI4ZGJkM2VhYmY0OWQ3NTMyZDg5MWJhOWJjOWZhYmY2YWJkNmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUg
cmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgRm9sbG93ZWQgdGhlIHNp
Z25hdHVyZSBjaGFuZ2UuCisgICAgICAgIAorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBs
Lmg6CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorCiAyMDExLTAzLTExICBE
YXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSb2xsb3V0IHRoZSBj
aHJvbWl1bSBkZXBzIHJvbGwgYXMgaXQgYWRkcyBhIGRlcGVuZGVuY3kgb24gYSBoZWFkZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXgg
MzhkNGY1ZWY4OTIzOWUwNDVhYWY1ZjBmOTEzNDcyNmEzOGE2MjI5OS4uZDllZmU5ODI4NjMyMzY2
ZmM3YTBkZTc1OTRhNGVmYzE3NjYzNDQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTg3MSw3ICs4NzEsNyBAQCB2b2lkIEVkaXRv
ckNsaWVudEltcGw6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciogdGV4dCwgaW50
IGxlbmd0aCwKICAgICAgICAgKm1pc3NwZWxsaW5nTGVuZ3RoID0gc3BlbGxMZW5ndGg7CiB9CiAK
LXZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVj
a2VyKiBzZW5kZXIsIGludCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIEVk
aXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3Ry
aW5nJik7CiB7CiAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+cmVxdWVzdENoZWNraW5nT2ZUZXh0
KHRleHQsIG5ldyBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbChpZGVudGlmaWVyLCBzZW5k
ZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwu
aAppbmRleCBiODFmYjU2MDU0MzBiZjJmNWYzM2RlNDg3NGMwYjY2ZjZmN2NjNDZlLi4yZWJjNmVh
NTgwNGIyNTNmYmU0MTYzODY3NDViOTg3MTE3YWFmZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxs
Q2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhp
czsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYmJlMmQwZDc0MDA0NTQzNDY1NGJlYzQ4ZWU0YjY5
ZTkxNjk5NjI2YS4uOTk5NTMxMGEwOWY2MDg2ODJiZDU2NTE3MmNlNjUzZWQ2ZGM5NTQxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1l
ICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQg
YmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisgICAgICAgIAorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50RWZsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMTIgIFJ5dWFu
IENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVp
bGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRFZmwuaAppbmRleCA1NzVhNTBkMjUzZDI5NDA2YzQ2ZDhhMzRjYWYzNjhlYmFkOGFlNzY3
Li41NmIzMzAwMmVhYTE3YTg1YjliMzcwMTY5ZDhiZDg0NzNmZGMzYTJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaApAQCAtMTE0
LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQo
Y29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFN0
cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxs
Q2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmly
dHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNDNjNzRmM2EwN2M2MjNkZjg3NDFhN2UxZmU5
YTU0ZDcwZGM0OTEyMy4uOTU1M2JjNjcyNmE0ZTIwY2VkYjk4NzMxMWE0MGZmNGU4YjU4NjhkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaDoKKyAgICAgICAgKFdlYktpdDo6VGV4
dENoZWNrZXJDbGllbnRFbmNoYW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEt
MDMtMTEgIE1hcmNvIFBlZXJlYm9vbSAgPG1hcmNvQHBlZXJlYm9vbS51cz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCmlu
ZGV4IGMyOTRhM2QwMGYyZGRlNTA2YWFkYTYwNDcxNGEwNWI1ZGQ0NDg3NjEuLjVkOTNjMDcyMTZk
OTk1YmZlMzZjYWZhZGQ5OTBjMGE3ODJmNTJkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCkBA
IC00OSw3ICs0OSw3IEBAIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50RW5jaGFudCA6IHB1YmxpYyBX
ZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCB7CiAgICAgICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJp
bmcmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVD
aGFyKiwgaW50IGxlbmd0aCwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBp
bnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBj
b25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVz
c2VzKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNv
cmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcm
KSB7fQogCiAgICAgICAgIHZvaWQgdXBkYXRlU3BlbGxDaGVja2luZ0xhbmd1YWdlKGNvbnN0IGNo
YXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZnJlZVNwZWxsQ2hlY2tpbmdMYW5ndWFnZShncG9p
bnRlciwgZ3BvaW50ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCBiMmFlZmNlOGRkODhmNmJh
ZDk0NDI5ZTBjN2E2MzFiNzViYjNiYWIzLi40ODBjZmY2ZGY2NmQ4OGQ0YjA3MDkxMTZmN2M3MjMw
Njg1MTUyMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAz
LTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVj
a2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50SGFpa3U6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAx
MS0wMy0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAppbmRleCBiYjBkOGFjMTA1ZmNlMjIxNTdh
NzAyMDZhYTRjMTRlYzU5MDdhMGI1Li5jYzIxZmNiODZmMjkxOTRlYTNlODE0ZmEwNTczZDVlNjRj
Y2JhMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEhhaWt1LmgKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRIYWlrdS5oCkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRWRpdG9yQ2xp
ZW50SGFpa3UgOiBwdWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgVGV4dENoZWNrZXJDbGllbnQg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3
b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNv
bnN0IFN0cmluZyYpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBj
b25zdCBTdHJpbmcmKSB7fQogICAgICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0
Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgICAgICBib29sIGlzRWRpdGluZygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGVlZjE2Yjg2NzI4NTQ1MmQzMzUyMWZmYjNmY2NiYThl
YjExZGU0NzUuLmY4ZTcwMjkxZThlNjIxZTcwYTQ2M2RiOTU0NzhkNjkxYzU1YTIyOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJl
IHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgIFJlbW92ZWQgTlNUZXh0
Q2hlY2tpbmdSZXN1bHQgdG8gU3BlbGxDaGVja2luZ1Jlc3VsdCBjb252ZXJ0aW9uLCBhbmQgZXh0
cmFjdGVkCisgICAgICAgIE5TVGV4dENoZWNraW5nUmVzdWx0IHRvIFRleHRDaGVja2luZ1Jlc3Vs
dCBjb252ZXJ0aW8gZnJvbSBjaGVja1RleHRPZlBhcmFncmFwaCBtZXRob2QuCisgICAgICAgIGZv
ciByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyBtZXRob2QuCisgICAgICAgIAorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKHRvQ29yZVRleHRDaGVja2luZ1Jlc3VsdHMp
OgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAg
ICAgICgtW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgaW5pdFdpdGhTZW5kZXI6V2ViQ29y
ZTo6c2VxdWVuY2U6dHlwZXM6V2ViQ29yZTo6cmVzdWx0czpdKToKKyAgICAgICAgKC1bV2ViRWRp
dG9yU3BlbGxDaGVja1Jlc3BvbmRlciBwZXJmb3JtXSk6CisgICAgICAgIChXZWJFZGl0b3JDbGll
bnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHRd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oOgorCiAyMDExLTAzLTEzICBQ
cmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBCcmFkeSBFaWRzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDFmYTEzMmFkNmM1YmQ0Mzc5ZmUwYmI4NWM5ZTZmZjBk
NjZiMTE3MzUuLjI3NzEzOWVmNjg1ZGNjNTQxN2EyYTFjMTQyOTM5MGI2MmMyOWExYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxs
aW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9j
YXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIq
LCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCog
YmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwotICAgIHZpcnR1YWwg
dm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwg
dWludDY0X3QgY2hlY2tpbmdUeXBlcywgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0PiYgcmVzdWx0cyk7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBo
KGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzayBjaGVja2luZ1R5cGVzLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1
bHQ+JiByZXN1bHRzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFt
bWFyU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFp
bCYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3Jk
KGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJv
b2wgc2hvdyk7CkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBn
ZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJp
bmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6
OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJD
b3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBj
b25zdCBXVEY6OlN0cmluZyYpOwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9X
X0xFT1BBUkQpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6
Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIFdlYkNv
cmU6OkVkaXRvciopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdl
YkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IDY5
ZGQ1NzQ3MzFiNDRiNDMwYzI3NDU4ZTcyM2I0MWM0ZGU1MTc0YjAuLjk3OWQ3YjQ3N2M0ZGZjNTc0
ZTE4MjdhMTBiMWExZDQ2YzAyMjJjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTc5NCwxMiArNzk0LDkgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0
LCBpbnQgbGVuZ3RoLCBWZWN0b3IKICNlbmRpZgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2
NF90IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQot
ewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQotICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5ndGg6
bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107Ci0gICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0g
W1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJp
bmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6KGNoZWNr
aW5nVHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGluU3Bl
bGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpO
VUxMIHdvcmRDb3VudDpOVUxMXTsKLSAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKK3N0YXRpYyB2
b2lkIHRvQ29yZVRleHRDaGVja2luZ1Jlc3VsdHMoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBU
ZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PiYgcmVzdWx0cykKK3sKICAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0ICppbmNvbWlu
Z1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKICAgICAgICAgTlNSYW5nZSByZXN1bHRSYW5n
ZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAgICAgIE5TVGV4dENoZWNraW5nVHlwZSBy
ZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwpAQCAtODcxLDYgKzg2OCwx
NiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNo
YXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NAogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
cmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgs
IFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+JiByZXN1bHRzKQoreworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0g
W1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNo
YXIqPih0ZXh0KSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107CisgICAgTlNBcnJheSAq
aW5jb21pbmdSZXN1bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNo
ZWNrU3RyaW5nOnRleHRTdHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVu
Z3RoXSkgdHlwZXM6KGNoZWNraW5nVHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkp
IG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcoKSBvcnRob2dyYXBoeTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKKyAgICBbdGV4dFN0cmluZyBy
ZWxlYXNlXTsKKyAgICB0b0NvcmVUZXh0Q2hlY2tpbmdSZXN1bHRzKGluY29taW5nUmVzdWx0cywg
Y2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CiAjZW5kaWYKIH0KIApAQCAtMTAxNyw1OCArMTAyNCwz
NyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKQogewog
ICAgIFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogX3NlbmRlcjsKICAgICBpbnQgX3NlcXVlbmNlOwor
ICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIF90eXBlczsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4g
X3Jlc3VsdHM7CiB9Ci0tIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSByZXN1bHRzOihOU0FycmF5KilyZXN1bHRz
OworLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNl
cXVlbmNlOihpbnQpc2VxdWVuY2UgdHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNr
KXR5cGVzIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHM7CiAtICh2b2lkKXBlcmZvcm07Ci0tIChX
VEY6OlZlY3RvcjxXZWJDb3JlOjpTcGVsbENoZWNraW5nUmVzdWx0PikgX2NvcmVSZXN1bHRzOwog
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlcgotLSAo
aWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNl
OihpbnQpc2VxdWVuY2UgcmVzdWx0czooTlNBcnJheSopcmVzdWx0cworLSAoaWQpaW5pdFdpdGhT
ZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVu
Y2UgdHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrKXR5cGVzIHJlc3VsdHM6KE5T
QXJyYXkqKXJlc3VsdHMKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2Vs
ZikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBfc2VuZGVyID0gc2VuZGVyOwogICAgIF9zZXF1
ZW5jZSA9IHNlcXVlbmNlOworICAgIF90eXBlcyA9IHR5cGVzOwogICAgIF9yZXN1bHRzID0gcmVz
dWx0czsKICAgICByZXR1cm4gc2VsZjsKIH0KIAogLSAodm9pZClwZXJmb3JtCiB7Ci0gICAgX3Nl
bmRlci0+ZGlkQ2hlY2soX3NlcXVlbmNlLCBbc2VsZiBfY29yZVJlc3VsdHNdKTsKLX0KLQotc3Rh
dGljIFNwZWxsQ2hlY2tpbmdSZXN1bHQgdG9Db3JlU3BlbGxpbmdSZXN1bHQoTlNUZXh0Q2hlY2tp
bmdSZXN1bHQqIHJlc3VsdCkKLXsKLSAgICBOU1RleHRDaGVja2luZ1R5cGUgdHlwZSA9IFtyZXN1
bHQgcmVzdWx0VHlwZV07Ci0gICAgTlNSYW5nZSByYW5nZSA9IFtyZXN1bHQgcmFuZ2VdOwotICAg
IERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIGNvcmVUeXBlOwotICAgIGlmICh0eXBlICYgTlNU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpCi0gICAgICAgIGNvcmVUeXBlID0gRG9jdW1lbnRNYXJr
ZXI6OlNwZWxsaW5nOwotICAgIGVsc2UgaWYgKHR5cGUgJiBOU1RleHRDaGVja2luZ1R5cGVHcmFt
bWFyKQotICAgICAgICBjb3JlVHlwZSA9IERvY3VtZW50TWFya2VyOjpHcmFtbWFyOwotICAgIGVs
c2UKLSAgICAgICAgY29yZVR5cGUgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VyczsKLQotICAg
IHJldHVybiBTcGVsbENoZWNraW5nUmVzdWx0KGNvcmVUeXBlLCByYW5nZS5sb2NhdGlvbiwgcmFu
Z2UubGVuZ3RoKTsKLX0KLQotLSAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jl
c3VsdD4pX2NvcmVSZXN1bHRzCi17Ci0gICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3BlbGxDaGVj
a2luZ1Jlc3VsdD4gY29yZVJlc3VsdHM7Ci0gICAgY29yZVJlc3VsdHMucmVzZXJ2ZUNhcGFjaXR5
KFtfcmVzdWx0cy5nZXQoKSBjb3VudF0pOwotICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQq
IHJlc3VsdCBpbiBfcmVzdWx0cy5nZXQoKSkKLSAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5kKHRv
Q29yZVNwZWxsaW5nUmVzdWx0KHJlc3VsdCkpOwotICAgIHJldHVybiBjb3JlUmVzdWx0czsKKyAg
ICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlUmVzdWx0czsKKyAgICB0b0NvcmVUZXh0
Q2hlY2tpbmdSZXN1bHRzKF9yZXN1bHRzLmdldCgpLCBfdHlwZXMsIGNvcmVSZXN1bHRzKTsKKyAg
ICBfc2VuZGVyLT5kaWRDaGVjayhfc2VxdWVuY2UsIGNvcmVSZXN1bHRzKTsKIH0KIAogQGVuZAog
I2VuZGlmCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhX
ZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IHNlcXVlbmNlLCBjb25zdCBTdHJpbmcm
IHRleHQpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBzZXF1ZW5jZSwgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogI2lm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQogICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01ha2VSYW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKTsK
QEAgLTEwNzYsNyArMTA2Miw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50CiAgICAgW1tOU1Nw
ZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nOnRl
eHQgcmFuZ2U6cmFuZ2UgdHlwZXM6TlNUZXh0Q2hlY2tpbmdBbGxTeXN0ZW1UeXBlcyBvcHRpb25z
OjAgaW5TcGVsbERvY3VtZW50V2l0aFRhZzowIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcjpeKE5TSW50ZWdlciwgTlNBcnJheSogcmVz
dWx0cywgTlNPcnRob2dyYXBoeSosIE5TSW50ZWdlcikgewogICAgICAgICAgICAgW2N1cnJlbnRM
b29wIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocGVyZm9ybSkgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0OltbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIg
YWxsb2NdIGluaXRXaXRoU2VuZGVyOnNlbmRlciBzZXF1ZW5jZTpzZXF1ZW5jZSByZXN1bHRzOnJl
c3VsdHNdIGF1dG9yZWxlYXNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh
cmdldDpbW1tXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aFNlbmRl
cjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVuY2UgdHlwZXM6Y2hlY2tpbmdUeXBlcyByZXN1bHRzOnJl
c3VsdHNdIGF1dG9yZWxlYXNlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1
bWVudDpuaWwgb3JkZXI6MCBtb2RlczpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNEZWZhdWx0
UnVuTG9vcE1vZGVdXTsKICAgICAgICAgfV07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCmluZGV4IDFlODhhZmMwMmJiMmVmMmE1MjY1ZTc5ZmFkMGRlMjQwYjYwMTBm
YzcuLmFmYjY5YjAzNTg5MjkwNDEwYWU2MjMwZTQwNDE4M2Y0NmY2ZDU0YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTMwOCw2ICsxMzA4LDE0IEBAIHN0YXRpYyBp
bmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQog
ICAgIHJldHVybiBjb3JlRnJhbWUtPmxheWVyVHJlZUFzVGV4dCgpOwogfQogCistIChOU1N0cmlu
ZyAqKW1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dAoreworICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ107CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkt
Pm1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpOworfQorCiAtIChCT09MKWhhc1NwZWxs
aW5nTWFya2VyOihpbnQpZnJvbSBsZW5ndGg6KGludClsZW5ndGgKIHsKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lUHJpdmF0ZS5oCmluZGV4IGI0OTQyN2UyNWQxNjVmYWRjNmIxZWM2YTEzYjdjNjZm
ODRjZGE4NzYuLjQ3MDlkNDQxYjgwOWMxMDg1MDM1OTU1NmFlZTFmYmU0ZDllNjE3MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaApAQCAtMTQyLDYgKzE0
Miw3IEBAIHR5cGVkZWYgZW51bSB7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSBpcyBhIHNw
ZWxsaW5nIG1hcmtlciBpbiB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIHRoZSBmb2N1c2VkIG5vZGUu
CiAtIChCT09MKWhhc1NwZWxsaW5nTWFya2VyOihpbnQpbG9jYXRpb24gbGVuZ3RoOihpbnQpbGVu
Z3RoOworLSAoTlNTdHJpbmcgKiltYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQ7CiAKIC8v
IFRoZSB0b3Agb2YgdGhlIGFjY2Vzc2liaWxpdHkgdHJlZS4KIC0gKGlkKWFjY2Vzc2liaWxpdHlS
b290OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwppbmRleCAyYWFlZjU2ZmM2MWQ0YzkwYWI5Y2M2ODY5NGFjNjkwMTgw
ZTQxNGEwLi42YzAxNWVkMDRkMzhiZTEyYTJkMjA4OGE0YWU2YTQzYjU5NTRhNjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9y
cml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVw
bGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTExICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBhdHRlbXB0IGF0IGJ1
aWxkIGZpeCEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50UXQuaAppbmRleCAwNDUwNjAzNTM5MDRjMDU1ZDdjY2YyYWQ0NjFmNWNiOGU4MWFlMWEwLi4w
ZDhlOGM2Nzk4NGU5YWQxZjdmMmM1NmI2YzBkMWNmZDY0YmUyMWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKKysrIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC0xMDksNyArMTA5
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBT
dHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNz
ZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3Qg
U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3Bl
bGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3Ry
aW5nJikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsg
cmV0dXJuIHRoaXM7IH0KIAogICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKaW5kZXggN2YzMjA2MDVhMTFhYTg2ZDZhMzdlZGI1Nzg2NTViMzQ0OTk4ODRlMy4uNzg3ZDA2
M2E4ZDQ2ZDQ0NTYyNGVjZTlkZDNmNWM4MWY0MjE2MjJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtS
ZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBU
ZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcp
OgorCiAyMDExLTAzLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNb3JlIFdpbmRvd3MgYnVpbGQgZml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTYyMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMThiZTQwMDZmNDM5MmQ3MWFjMDc0NTFmYjJh
NDc3ODhkMzY2MjYyMC4uZjMwYzQzNGE3MDRmNGM3OGE4YWM5MjZkNzMxZjgzM2E2NWJhYmMzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RT
dGF0ZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcios
IGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikg
e30KICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigp
IHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggNzI0
YjkyYWE2YzcwODhkYmU2Yjg2YzBjNDNmNmViZThlNGJiZTc4Zi4uOGJkMjY0YjRhOWNlZGVhNjVk
OGNhMjJhYjE5YmFmMzk5ZWY1MWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3Jp
bmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNr
aW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjA4NQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaDoK
KyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50V2luQ0U6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKToKKwogMjAxMS0wMy0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaCBiL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAppbmRleCBkOTNlY2M1
YjhmZDVlMzVmNDQ3ZjkyMWU0Nzc1MmRiMzJlMjE0NjI3Li5hMmIyM2I0ODUzNmE5OGM5YTUwODdi
NDEyZjhiZTRhM2E1YmRmN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmlu
ZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRl
KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcios
IGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRD
aGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDNlMzg1YjFhNzNjMjRmNDhkM2MzY2YwNzNiNjdh
NTQ0NDMxMGIzMjQuLmNiNDgzNGM4MTg2ZTQwY2EzMTQzMDkyNjExYjc3YjI2OTlhNGQwMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBi
ZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYktpdFN1cHBv
cnQvRWRpdG9yQ2xpZW50V3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4Ojpy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMDcgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaCBi
L1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCmluZGV4IGQx
ZDM1OTcwOTc1OWM5MDA2ODQzNzkyMGI1MDVlNWVmZjI4MjIyNGQuLjY1ZWU0OTMwNTkzOWMyN2Y1
YjAzNjE2NWE3NmM1NWRkZjRkNTA3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25z
dCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlw
ZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xp
ZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCA5ODJkNGQzMmU4M2I3YzkxZmNlYTQxMmUyNTgxZWQwMDEyNTllNjgzLi5kNWFlNTU5Nzc0
YTZlYmU2YWE5YjY5NDExYjc3MTc1NGY2MTFhN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBhIHNob3J0
IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorCiAyMDExLTAz
LTEzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGI5NTQyODM1OTEz
Mzc4MGI0Y2VkNjBiZjYzZDk1YTM2YjlkZTE1MGMuLmNlMmNlNjE0MzZlZGE2ZDE4OWE5MmEzZTc0
OTM1MTMzZWNmMzIzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTQ0MSw3ICs0NDEs
NyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3Ry
aW5nJikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJD
b3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBj
b25zdCBXVEY6OlN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IGZhODQyNmEzOGU5NGZiZTNmNDE2NTk4OWY4MTUyZjNhZDc0ZTYwNzgu
LjA4N2UzMjA5YTFiMWE2MDI4YmJkMGJmZjhiMmY4YTcyMmVhYzc4NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcg
Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBt
aXNzcGVsbGVkV29yZCk7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNv
bnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+Jiwg
aW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
Y29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFZl
Y3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgs
IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICNlbmRpZgogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZGV0YWlsKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKTsKQEAgLTE0MCw3
ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChj
b25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4m
IGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tl
ciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKICNpZiBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdmlydHVh
bCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6
UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBs
YWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1l
bnRTdHJpbmdzLCBXZWJDb3JlOjpFZGl0b3IqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCA4YWYwNDM4MGMxZmZl
ODRkOTVkZDFmMDgxZmVhMDIwYWE5MTY0OTljLi5jNTMyNzRkYjhiNDZlNWI0M2MwOGRiNGNlM2Vh
Yzk0ZWRmOTdmZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC0y
NDAsNyArMjQwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbigpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVu
Z3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYg
cmVzdWx0cykKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25z
dCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sg
Y2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgd2Ugd291bGRuJ3QgaGF2ZSB0byBjb3B5
IHRoZSB0ZXh0IGhlcmUuCiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgY2hlY2tpbmdU
eXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoOjpSZXBs
eShyZXN1bHRzKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMTk0MTAwZjBlZTRlODgxZGUwZGI5MGM3OTEwZDM0ZTM0Y2FmOTg1MC4uM2ZmMDhm
NjU4MTY1ZmUxZTUwM2QyOGJiZmFkMjNjNzQ2MmM5NDNlZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDExLTAzLTEx
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2lu
Z1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAg
ICAgQWRkZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFz
VGV4dCgpIGZvciB0ZXN0aW5nCisgICAgICAgIG5vbi1zcGVsbGluZyBtYXJrZXJzLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0Q2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3Rh
cnRBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxl
Y3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVz
dENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vy
c0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKworMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMh
KQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAobWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0Q2FsbGJhY2spOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0
YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2Vs
ZWN0aW9uU3RhcnRBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtl
cnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gv
TGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKwogMjAxMS0wMy0xMyAgSm9lIFdp
bGQgIDxqb3NlcGgud2lsZEBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggMDc3YTBkMjQzNzQ2ZGQ1Mzk3YmNkZjRkYmM5NjQ2NDE3Zjk5
YWUxMy4uZGFmMjM2ZjhhNmJkNzZkMjhkMTcxZDk4MTgzMDJlM2I2YmYwN2E2NCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTkyNSw2ICsx
OTI1LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGhhc1NwZWxsaW5nTWFya2VyQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
Qm9vbGVhbihjb250ZXh0LCBvayk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIG1hcmtlcnNGb3JT
ZWxlY3Rpb25TdGFydEFzVGV4dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
K3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRleHQgPSBjb250cm9s
bGVyLT5tYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKTsKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VTdHJpbmcoY29udGV4dCwgdGV4dC5nZXQoKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVm
IG1hcmtlclRleHRGb3JMaXN0SXRlbUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRl
c3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIxMjks
NiArMjEzOSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0
aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJsYXllclRyZWVBc1RleHQiLCBsYXllclRyZWVBc1Rl
eHRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJPZlBhZ2VzIiwgbnVtYmVyT2ZQ
YWdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm1hcmtlclRleHRGb3JMaXN0SXRlbSIs
IG1hcmtlclRleHRGb3JMaXN0SXRlbUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgIm1hcmtl
cnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCIsIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4
dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm5vdGlmeURvbmUiLCBub3RpZnlEb25lQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zIiwgbnVt
YmVyT2ZBY3RpdmVBbmltYXRpb25zQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic3VzcGVu
ZEFuaW1hdGlvbnMiLCBzdXNwZW5kQW5pbWF0aW9uc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA1NWZlMjIwMGY0NTAw
ZjdkMDQ2NjE0ZmU2Yjc1NzYxZTEyODNkYzA1Li4wMGYyMjY3ODJhOTFmZDkwMGU2ZTZiZGRjNzIw
NTdjODZkMjJlMDAwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTI5MSw2ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhYm9ydE1vZGFsKCk7
CiAKICAgICBib29sIGhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKTsKKyAg
ICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0
KCk7CiAKICAgICB2b2lkIGR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IGRldmljZURQ
SSwgaW50IGRldmljZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgs
IGludCBhdmFpbGFibGVIZWlnaHQpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNjJhY2IxZjk3ZmYwNzRm
YzQ0MThjODAzY2JkNjIxOWMxMzQ3Zjg5NS4uZmJkYzNkZDJjZTE1YzEwODViOTZjNTRkMjY0OGZl
MTA1ZGMyMTE3MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTYwMSw2ICsxNjAxLDEyIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDCiAgICAgcmVzdWx0LT5zZXQobV9zaGVsbC0+d2ViVmlldygpLT5tYWlu
RnJhbWUoKS0+c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtlckZvcihhcmd1bWVudHNbMF0u
dG9JbnQzMigpLCBhcmd1bWVudHNbMV0udG9JbnQzMigpKSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dChjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50
cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgK
aW5kZXggOTkzMjRhOTc1NTlhYjQxZTcwMzEwMmQyMzkwNjk2NzYyMjM5MWI1NC4uYzg0YTRiNDY5
MTUxM2NlYmI2OTM2MWIzYWY2M2RjZjhjZjhjNzA4NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zMzQsNiArMzM0
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaGFzU3BlbGxpbmdNYXJrZXIo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgbWFya2Vyc0Zv
clNlbGVjdGlvblN0YXJ0QXNUZXh0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKIAogICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCA1MjE1NjEyMDc2YzE0ODQ1NmE4YTZh
OTZlMmZkNTY5YTBhNGUxYTBlLi5kNzI0NDI1Y2FmMGExYTRlMDMxZDg2NjdkNjk5NTFhMjA5MmIx
N2VhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKQEAgLTkwMyw2ICs5MDMsMTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpCiAgICAgcmV0dXJu
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6d2Via2l0V2ViRnJhbWVTZWxlY3Rpb25IYXNTcGVs
bGluZ01hcmtlcihtYWluRnJhbWUsIGZyb20sIGxlbmd0aCk7CiB9CiAKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0
QXNUZXh0KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPigpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkdW1w
Q29uZmlndXJhdGlvbkZvclZpZXdwb3J0KGludCBkZXZpY2VEUEksIGludCBkZXZpY2VXaWR0aCwg
aW50IGRldmljZUhlaWdodCwgaW50IGF2YWlsYWJsZVdpZHRoLCBpbnQgYXZhaWxhYmxlSGVpZ2h0
KQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93
ZWJfdmlldyhtYWluRnJhbWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDU4YTdhZGZhMmFhYWNmZWQyNTdlMzc0MDMy
ODY4ZGI2ZTc1YTUxZmIuLmE2ZGRkOGJmNDIyZmRjMzc5NjhiZDA4MGNiOTJkYzZkMzQ3OWFjMDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW0KQEAgLTEwNDgsNiArMTA0OCwxNCBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVy
OjpoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKIHsKICAgICByZXR1cm4g
W21haW5GcmFtZSBoYXNTcGVsbGluZ01hcmtlcjpmcm9tIGxlbmd0aDpsZW5ndGhdOwogfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JT
ZWxlY3Rpb25TdGFydEFzVGV4dCgpCit7CisgICAgTlNTdHJpbmcqIHRleHQgPSBbbWFpbkZyYW1l
IG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dF07CisgICAgcmV0dXJuIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPihBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5n
UmVmKXRleHQpKTsKK30KKworCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wQ29uZmln
dXJhdGlvbkZvclZpZXdwb3J0KGludCAvKmRldmljZURQSSovLCBpbnQgLypkZXZpY2VXaWR0aCov
LCBpbnQgLypkZXZpY2VIZWlnaHQqLywgaW50IC8qYXZhaWxhYmxlV2lkdGgqLywgaW50IC8qYXZh
aWxhYmxlSGVpZ2h0Ki8pCiB7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggYWQ5ZTk2ODU5OGRlNThiOGNhOTJjNThiNmMw
YjcwMzgwZTAzNDc3Ni4uYmU1YzRiZWU2YTRkNGJjNjJmNjA3ZDcxYTQ2NTNmMTQ5NGY0YjIxNiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAKQEAgLTgyNyw2ICs4MjcsMTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFz
U3BlbGxpbmdNYXJrZXIoaW50LCBpbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitRU3RyaW5n
IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gIiI7Cit9CisKIFFWYXJpYW50
TGlzdCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bm9kZXNGcm9tUmVjdChjb25zdCBRV2ViRWxlbWVu
dCYgZG9jdW1lbnQsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wLCB1bnNpZ25lZCByaWdodCwg
dW5zaWduZWQgYm90dG9tLCB1bnNpZ25lZCBsZWZ0LCBib29sIGlnbm9yZUNsaXBwaW5nKQogewog
ICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bm9kZXNGcm9tUmVjdChkb2N1bWVu
dCwgeCwgeSwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBpZ25vcmVDbGlwcGluZyk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXgg
NDFkMGFjYWY3MzA5MDEzMmEzYjE0YjMwNjU2NTE4NGYxOTg5MWIwOS4uZjIyNGRjY2Y3YTFkMGJk
Y2Q5M2NkMDk0NTA3ZTcwYWZmYjRlZWFkZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaApAQCAtMjI3LDYgKzIyNyw3IEBAIHB1YmxpYyBz
bG90czoKICAgICAvLyBFbXB0eSBzdHViIG1ldGhvZCB0byBrZWVwIHBhcml0eSB3aXRoIG9iamVj
dCBtb2RlbCBleHBvc2VkIGJ5IGdsb2JhbCBMYXlvdXRUZXN0Q29udHJvbGxlci4KICAgICB2b2lk
IGFib3J0TW9kYWwoKSB7fQogICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGlu
dCBsZW5ndGgpOworICAgIFFTdHJpbmcgbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCk7
CiAKICAgICBRVmFyaWFudExpc3Qgbm9kZXNGcm9tUmVjdChjb25zdCBRV2ViRWxlbWVudCYgZG9j
dW1lbnQsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wLCB1bnNpZ25lZCByaWdodCwgdW5zaWdu
ZWQgYm90dG9tLCB1bnNpZ25lZCBsZWZ0LCBib29sIGlnbm9yZUNsaXBwaW5nKTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAK
aW5kZXggMWQxNzMwZjhiZTA5Yzc3OGQ3MjUyNGZlODZmYjNjZWNhZjg4NjJiMi4uYTI5ODYxMjc3
NDRlZDkzNDM1MGNjZGViZGEwMTg1YjU4OTEwNWFlYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xNDE4LDYgKzE0
MTgsMTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50
IGZyb20sIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIHJldDsKIH0KIAorSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRB
c1RleHQoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+KCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBD
b25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IC8qZGV2aWNlRFBJKi8sIGludCAvKmRldmljZVdp
ZHRoKi8sIGludCAvKmRldmljZUhlaWdodCovLCBpbnQgLyphdmFpbGFibGVXaWR0aCovLCBpbnQg
LyphdmFpbGFibGVIZWlnaHQqLykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3Bw
CmluZGV4IGU2ZTVjNGVlYzFjMzU3ZDc1NzEzMjcyNjNjMGZkYWVmMTgzN2FjMTguLjQ1MjhhZjU0
OTY5MTY4NmI1ZGQxYjU1Y2U0ZWY3NzU1N2M1OWNjMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCkBAIC01MTYsNiArNTE2LDEy
IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCwgaW50
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91
dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
KCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBDb25maWd1cmF0aW9uRm9y
Vmlld3BvcnQoaW50IC8qZGV2aWNlRFBJKi8sIGludCAvKmRldmljZVdpZHRoKi8sIGludCAvKmRl
dmljZUhlaWdodCovLCBpbnQgLyphdmFpbGFibGVXaWR0aCovLCBpbnQgLyphdmFpbGFibGVIZWln
aHQqLykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85645</attachid>
            <date>2011-03-13 22:11:38 -0700</date>
            <delta_ts>2011-03-13 23:51:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56085-20110314141135.patch</filename>
            <type>text/plain</type>
            <size>70295</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA5OTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzAyYjcwMmZiYzFjOWY3MzQ0YzQ0
ZDc3NjQ3NTQyMTkzMzVhNTc3Li4wZDM2Zjk1ZTZjZGUzNzQxOGZhOWZlN2M5ZTA2ZGU0MDFhOGZm
YjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICBBZGRlZCBhbiBhc3luYyBn
cmFtbWFyIGNoZWNraW5nIHRlc3QsIHdoaWNoIGRpZG4ndCB3b3JrIGJlZm9yZSB0aGlzIGNoYWdu
ZS4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXBhc3RlLWdyYW1tYXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0wMy0xMyAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgZXhwZWN0ZWQgcmVzdWx0
cyBhZnRlciByODA5ODIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzZmMGU1ZTQ0ZTc4YjRhMzhiNTI5ODk5OTBkNGQ5MzljZjAzMGI0NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyAwIDw9IHdpbmRvdy5tYXJrZXJUZXh0
LmluZGV4T2YoJ1swLDEyXScpIGlzIHRydWUKK1BBU1MgMCA8PSB3aW5kb3cubWFya2VyVGV4dC5p
bmRleE9mKCdHcmFtbWFyJykgaXMgdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NzRlY2FkM2YwZDNlNjBmYzQ1NzZkMmEzOGM2YzRiOGQxOGYwOTQwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1t
YXIuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPCEtLSBzaG91bGQgYmUgYmFkIGdyYW1tYXIgLS0+Cis8ZGl2IGlk
PSJzb3VyY2UiIGNvbnRlbnRFZGl0YWJsZT50aGVyZSB0aGVyZS48L2Rpdj4KKzxkaXYgaWQ9InRh
cmdldCIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPHNjcmlwdD4KKworbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CitsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK01BWF9UUlkgPSAxMDsKKwordmFyIHNl
bCA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpOwordmFyIHNvdXJjZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzb3VyY2UiKTsKK3ZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4oc291cmNlKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJDb3B5Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0KTsKK2RvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJQYXN0ZSIpOworCitmdW5jdGlvbiB3YWludFVuaXRsVmVyaWZ5UGFz
c2VkKCkgeworICAgIHNlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQpOworICAgIHdpbmRvdy5t
YXJrZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0
QXNUZXh0KCk7CisgICAgaWYgKDAgPT0gd2luZG93Lm1hcmtlclRleHQubGVuZ3RoKSB7CisgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHdhaW50VW5pdGxWZXJpZnlQYXNzZWQoKTsgfSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUoIjAgPD0gd2lu
ZG93Lm1hcmtlclRleHQuaW5kZXhPZignWzAsMTJdJykiKTsKKyAgICBzaG91bGRCZVRydWUoIjAg
PD0gd2luZG93Lm1hcmtlclRleHQuaW5kZXhPZignR3JhbW1hcicpIik7CisgICAgdGFyZ2V0LnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQodGFyZ2V0KTsKKyAgICBzb3VyY2UucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChzb3VyY2UpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworc2V0VGltZW91dChmdW5jdGlvbigpIHsgd2FpbnRVbml0bFZlcmlmeVBhc3NlZCgpOyB9
LCAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGIyY2NmNGUzYWViZGYyZjI2NTQ2OGVhY2Ew
YzM5MmE2MTg2Y2Y3NWIuLmU2MGU3MDJkMjJhZWJlYjIwODQ0NmY4YTQ2YjQxOTJkOTZiZTliZmYg
MTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKQEAgLTMzNjEsNiArMzM2MSw5IEBAIEJVR1dLNTYwNzIgTUFDIFNOT1dMRU9QQVJE
IDogZmFzdC9yZXBhaW50L3JlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3VuZGFyeS5oCiBC
VUdXSzU2MDcyIE1BQyBTTk9XTEVPUEFSRCA6IGZhc3QvcmVwYWludC90ZXh0LWVtcGhhc2lzLWgu
aHRtbCA9IElNQUdFCiBCVUdXSzU2MDcyIFdJTi1WSVNUQSA6IGZhc3QvcnVieS9iYXNlLXNob3J0
ZXItdGhhbi10ZXh0Lmh0bWwgPSBGQUlMCiAKKy8vIERvZXNuJ3Qgc3VwcG9ydCBncmFtbWFyIGNo
ZWNrIHlldC4KK0JVR01PUlJJVEEgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUt
Z3JhbW1hci5odG1sID0gVEVYVAorCiAvLyBpbnRyb2R1Y2VkIGJ5IERhdmUgSHlhdHQgaW4gV0sg
cjgwNTgyCiBCVUdDUjc1NTYxIFdJTiBMSU5VWCA6IGZhc3QvYmxvY2tmbG93L3RleHQtb3JpZW50
YXRpb24tYmFzaWMuaHRtbCA9IElNQUdFK1RFWFQKIEJVR0NSNzU1NjEgTUFDIExFT1BBUkQgOiBm
YXN0L2Jsb2NrZmxvdy90ZXh0LW9yaWVudGF0aW9uLWJhc2ljLmh0bWwgPSBJTUFHRStURVhUCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDVjODZhOGZjMzAwNmJjMzE2MjAxZmEyY2NkMzMw
MDdlZmQ0MzNlZTcuLjA5ZTAyMjNiZGU5MzJjMWFiYTEwN2I1MDFlMmVhYmZkOGQyMzYxYTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0yOTksNiArMjk5LDcgQEAgbWVkaWEvbWVkaWEt
Y2FwdGlvbnMuaHRtbAogIyBEYXRhVHJhbnNmZXJJdGVtcyBpcyBub3QgeWV0IGltcGxlbWVudGVk
LgogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbAogCisKICMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKICMgVEVTVFMgRkFJTElORwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwpAQCAtMTI2NSw2ICsxMjY2LDcgQEAgbWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLmh0bWwK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzQwCiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgRm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDc1OAogIyBUaGVzZSByZXF1aXJlIERSVCBzZXRTZXJpYWxpemVIVFRQ
TG9hZHMgaW1wbGVtZW50YXRpb24gdG8gYmUgcmVsaWFibGUuCkBAIC0xMzE0LDQgKzEzMTYsNCBA
QCBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXJlZGlyZWN0Lnht
bAogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1leHRlcm5hbC1lbnRpdHktcmVk
aXJlY3QueG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MDgxCi1mYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCitmYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9Ta2lwcGVkCmluZGV4IDQwNGU4MzI3Nzc4NDZiY2ZjNWI3NGUyMWMzNTI1
N2RlMWQ5ZTU0NjAuLjg3MmJlNzVlY2Q0ODQ1Nzg3YTU5MDI0Yjk3OTFiNzU3ZWRjMjYwOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZApAQCAtOTAsNiArOTAsNyBA
QCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlZWthYmxlLXN0YWxsLmh0bWwKIAogIyBBdmFpbGFi
bGUgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHRlc3RzIHdoaWNoIHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByNjY5NjEKICMgRmFpbHVyZXMg
bG9vayBsaWtlIGFuIHVuZGVybHlpbmcgcGxhdGZvcm0gaXNzdWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy10aWdlci9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXRpZ2VyL1NraXBwZWQKaW5kZXggYWJkNzI2N2YzNzkyNTVmNzJkNjM4OWMxODU4ZDYxNjk4
ZjdkNWM1Zi4uMGYyMGMxZTA2Zjg0NGY5NjQ4OTliYzkxZDg0OGEwOTFhNDhjZTY5OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKQEAgLTIxMSw2ICsyMTEsNyBAQCBodHRw
L3Rlc3RzL21pc2MvNDAxLWFsdGVybmF0aXZlLWNvbnRlbnQucGhwCiAKICMgQXZhaWxhYmxlIG9u
bHkgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHNwZWxsaW5nIHRlc3RzIGZvciBhdXRvY29ycmVjdGlvbiBwYW5lbAogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rpb24uaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKaW5kZXggYjRkYjJiZDM2ZjhhZjE5Mjg1MDdlNWM1Yzk3YzcyZDAyZGY3
NzNmMy4uOWY1NWI2MGFlMzgzYzg5NDAxNDlkZGZiYjQwNTU3NWE4MGEwOWQ3YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xMjAxLDYgKzEyMDEsNyBAQCBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sCiAKICMgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZygpIGlzIG5vdCBpbXBsZW1lbnRlZAogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLXBhc3RlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLmh0bWwKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIGZhaWxpbmcgZWRpdGlu
Zy9zdHlsZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBiMzYxYzYyNTlmOWEx
MDBmMDY5YWU5Y2FhMTBhNzgzYzU2NDhiNmMzLi4zZWI1N2FkYjc4ODM4OTQ4NjI4MzRlZDc2Zjk3
NDc1ZjgyNDU3ZWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtOTc1LDYgKzk3NSw3
IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAogCiAjIEVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKSBpcyBub3QgaW1wbGVtZW50ZWQKIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgSW5kZXhlZERCIGlzIG5vdCB5ZXQgZW5hYmxl
ZC4KIHN0b3JhZ2UvaW5kZXhlZGRiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNjYjcyM2VlZTA0ZTg1NmJhZjgw
OTJiMGE3MWVhZTUzMzFmOGUzZS4uMTQ3N2JjMmU4NDJiY2ZhZjM3NWVhODlkNWYyMDkxODM3YzUw
YmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisgICAgICAgIAorICAgICAgICBS
ZW1vdmVkIFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQgYW5kIHJlcGxhY2VkIGl0IHdpdGgg
VGV4dENoZWNraW5nUmVzdWx0LgorICAgICAgICBUaGlzIGNoYW5nZSByZXZlYWxlZCB0aGF0IFRl
eHRDaGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpIHNob3VsZCBoYXZlCisg
ICAgICAgIGFkZGl0aW9uYWwgcmVxdWVzdCB0eXBlIHBhcmFtZXRlciB0aHVzIGFkZGVkIGl0Lgor
CisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyQXNUZXh0KTog
c3RhdGljIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya2Vy
c0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KTogQWRkZWQuIEEgaGVscGVyIGZvciB0ZXN0aW5nLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0Zvcik6IEV4dHJh
Y3RlZCBmcm9tIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoKQorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3Ip
OiBBZGRlZCBhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6bWFy
a0F0KTogRXh0cmFjdGVkIGZyb20gZGlkQ2hlY2soKSwgQWRkZWQgYSBjaGVjayBmb3IgdGhlIEdy
YW1tYXJEZXRhaWwgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRD
aGVjayk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xp
ZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRD
aGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oOgorCiAyMDExLTAzLTEzICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGIzZmVkYzE0NDgyNjkyN2MwNTg1ZWUwN2ZiN2ZlYmQ5ZmYyYjA5YmEuLjRl
ZmNjMWZmMGVhZmRhMjhhOWVjMTJhZWYzMzA0ZmEwYjkyNzRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0yOTMsNyArMjkzLDcgQEAgX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXI2YXBwZW5k
RVBLY2oKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyQzFFUEtjaQogX19aTjdXZWJDb3JlMTJT
aGFyZWRCdWZmZXJDMUV2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKLV9fWk43V2Vi
Q29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOVNwZWxsQ2hl
Y2tpbmdSZXN1bHRFTG0wRUVFCitfX1pON1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0Vp
UktOM1dURjZWZWN0b3JJTlNfMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUVFCiBfX1pON1dlYkNv
cmUxMlRleHRFbmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3IxMXJhbmdlTGVuZ3RoRVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRFaWliCkBAIC0xMjA1
LDYgKzEyMDUsNyBAQCBfX1pOSzdXZWJDb3JlNkVkaXRvcjE3c2VsZWN0aW9uSGFzU3R5bGVFaVJL
TjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTZFZGl0b3IxN3Nob3VsZERlbGV0ZVJhbmdlRVBO
U181UmFuZ2VFCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjIzZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb25F
UmpTMV8KIF9fWk5LN1dlYkNvcmU2RWRpdG9yMzBhcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1l
bnRFdgorX19aTks3V2ViQ29yZTZFZGl0b3IzMG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjMxZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjM0c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtl
ckZvckVpaQogX19aTks3V2ViQ29yZTZFZGl0b3IzN2Jhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2Vs
ZWN0aW9uU3RhcnRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhh
NDM5MTBhOWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLmU3ZGRkNGE4YzY2ZDU3MWM5YTVjNTQxM2Nk
OGUwODIwNjlhNTVmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTY0LDcgKzY0
LDYgQEAKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJSZW1vdmVGb3JtYXRDb21tYW5kLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTQ0MCw3ICs0MzksNyBAQCB2b2lkIEVkaXRv
cjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50LAogCiAgICAgTm9kZSogbm9kZVRvQ2hlY2sgPSBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmIChtX3NwZWxsQ2hlY2tlci0+Y2Fu
Q2hlY2tBc3luY2hyb25vdXNseShub2RlVG9DaGVjaykpCi0gICAgICAgIG1fc3BlbGxDaGVja2Vy
LT5yZXF1ZXN0Q2hlY2tpbmdGb3Iobm9kZVRvQ2hlY2spOworICAgICAgICBtX3NwZWxsQ2hlY2tl
ci0+cmVxdWVzdENoZWNraW5nRm9yKHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKE1hcmtTcGVsbGlu
ZyB8IE1hcmtHcmFtbWFyKSwgbm9kZVRvQ2hlY2spOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFj
ZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNl
bWVudCwgYm9vbCBzbWFydFJlcGxhY2UpCkBAIC0yMjcwLDI2ICsyMjY5LDggQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
T3B0aW9ucyB0ZXh0Q2gKICAgICB9CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBy
ZXN1bHRzOwotICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMgPSAwOwotICAgIGlmIChzaG91bGRN
YXJrU3BlbGxpbmcpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nOwotICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKLSAgICAgICAgY2hlY2tpbmdUeXBl
cyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rp
b25QYW5lbCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbjsKLSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7Ci0gICAgICAgIGlmIChp
c0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGVMaW5rOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4
dENoZWNraW5nVHlwZVF1b3RlOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdU
eXBlRGFzaDsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgp
KQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1l
bnQ7Ci0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uOwotICAgIH0KLSAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1Rl
eHRPZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRM
ZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CisgICAgdGV4dENoZWNrZXIoKS0+Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFncmFwaC50
ZXh0TGVuZ3RoKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHRDaGVja2luZ1R5cGVNYXNrRm9yKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKIAog
I2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICAvLyBJZiB0aGlzIGNoZWNraW5n
IGlzIG9ubHkgZm9yIHNob3dpbmcgY29ycmVjdGlvbiBwYW5lbCwgd2Ugc2hvdWxkbid0IGJvdGhl
ciB0byBtYXJrIG1pc3NwZWxsaW5ncy4KQEAgLTM1OTAsMTAgKzM1NzEsOTEgQEAgYm9vbCBFZGl0
b3I6OnNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZyb20sIGludCBsZW5n
dGgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgU3RyaW5nIG1hcmtlckFz
VGV4dChjb25zdCBEb2N1bWVudE1hcmtlciYgbWFya2VyKQoreworICAgIFN0cmluZyByZXN1bHQ7
CisgICAgaWYgKERvY3VtZW50TWFya2VyOjpTcGVsbGluZyAmIG1hcmtlci50eXBlKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCJTcGVsbGluZyAiKTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIgJiBtYXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiR3JhbW1hciAiKTsK
KyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCAmIG1hcmtlci50eXBlKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCJUZXh0TWF0Y2ggIik7CisgICAgaWYgKERvY3VtZW50TWFya2VyOjpS
ZXBsYWNlbWVudCAmIG1hcmtlci50eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJSZXBsYWNl
bWVudCAiKTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IgJiBt
YXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiQ29ycmVjdGlvbkluZGljYXRvciAi
KTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlJlamVjdGVkQ29ycmVjdGlvbiAmIG1hcmtlci50
eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJSZWplY3RlZENvcnJlY3Rpb24gIik7CisgICAg
aWYgKERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uICYgbWFya2VyLnR5cGUp
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gIik7CisgICAg
cmVzdWx0LmFwcGVuZCgiWyIpOworICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIobWFy
a2VyLnN0YXJ0T2Zmc2V0KSk7CisgICAgcmVzdWx0LmFwcGVuZCgiLCIpOworICAgIHJlc3VsdC5h
cHBlbmQoU3RyaW5nOjpudW1iZXIobWFya2VyLmVuZE9mZnNldCkpOworICAgIHJlc3VsdC5hcHBl
bmQoIl0iKTsKKyAgICBpZiAoIW1hcmtlci5kZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiKCIpOworICAgICAgICByZXN1bHQuYXBwZW5kKG1hcmtlci5kZXNj
cmlwdGlvbik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIikiKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitTdHJpbmcgRWRpdG9yOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRB
c1RleHQoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSBmaW5kRmlyc3RNYXJrYWJsZShtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICBpZiAoIW5v
ZGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyByZXN1bHQ7CisgICAg
VmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtYXJrZXJBc1Rl
eHQobWFya2Vyc1tpXSkpOworICAgICAgICBpZiAoaSArIDEgPCBtYXJrZXJzLnNpemUoKSkKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiBGbG9hdFJlY3QgRWRpdG9yOjp3aW5kb3dSZWN0Rm9yUmFuZ2UoY29uc3QgUmFuZ2Uq
IHJhbmdlKSBjb25zdAogewogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lKCktPnZpZXcoKTsK
ICAgICByZXR1cm4gdmlldyA/IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UmVjdChyYW5nZS0+
Ym91bmRpbmdSZWN0KCkpKSA6IEZsb2F0UmVjdCgpOwogfSAgICAgICAgCiAKK1RleHRDaGVja2lu
Z1R5cGVNYXNrIEVkaXRvcjo6dGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0
aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zKQoreworICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5n
ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKKyAgICBib29sIHNob3VsZE1h
cmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOworICAgIGJvb2wg
c2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93Q29y
cmVjdGlvblBhbmVsOworCisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9
IDA7CisgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKKyAgICAgICAgY2hlY2tpbmdUeXBlcyB8
PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQor
ICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGlm
IChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQorICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAg
ICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQ
ZXJmb3JtUmVwbGFjZW1lbnQ7CisgICAgaWYgKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCkgewor
ICAgICAgICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAg
ICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgaWYgKGlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2lu
Z1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgaWYgKGlzQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNl
bWVudEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZVJlcGxhY2VtZW50OworICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIGlzQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICB9CisjZW5kaWYKKworICAg
IHJldHVybiBjaGVja2luZ1R5cGVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZlMjE1NDA4
NWM1NjllLi44YmU0NzM2MGRiMmI2Y2ZiY2E0YWE1NWZkZDI4MzRlYWI4MDkyNGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFZGl0b3JJbnNl
cnRBY3Rpb24uaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlbGVjdGlv
bkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIldyaXRp
bmdEaXJlY3Rpb24uaCIKQEAgLTYyLDcgKzYzLDYgQEAgY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNz
IFNpbXBsZUZvbnREYXRhOwogY2xhc3MgU3BlbGxDaGVja2VyOwogY2xhc3MgVGV4dDsKLWNsYXNz
IFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRp
b25VbmRlcmxpbmUgewpAQCAtMjIyLDYgKzIyMiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJr
TWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJz
dE1pc3NwZWxsaW5nUmFuZ2UpOwogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pOworCisgICAgZW51bSBU
ZXh0Q2hlY2tpbmdPcHRpb25GbGFncyB7CisgICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwK
KyAgICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCisgICAgICAgIFBlcmZvcm1SZXBsYWNlbWVu
dCA9IDEgPDwgMiwKKyAgICAgICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKKyAgICB9
OworICAgIHR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nT3B0aW9uczsKKwogI2lmIFBMQVRG
T1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CiAgICAgdm9pZCBsb3dl
cmNhc2VXb3JkKCk7CkBAIC0yMzksMTQgKzI0OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2ds
ZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb24oKTsKLSAgICBlbnVtIFRleHRDaGVja2luZ09wdGlvbkZsYWdzIHsKLSAgICAgICAg
TWFya1NwZWxsaW5nID0gMSA8PCAwLAotICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKLSAg
ICAgICAgUGVyZm9ybVJlcGxhY2VtZW50ID0gMSA8PCAyLAotICAgICAgICBTaG93Q29ycmVjdGlv
blBhbmVsID0gMSA8PCAzLAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tp
bmdPcHRpb25zOwotCiAgICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSog
Z3JhbW1hclJhbmdlKTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogI2VuZGlmCkBAIC0zNzgsNiArMzc5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAj
ZW5kaWYKIAorICAgIFN0cmluZyBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKSBjb25z
dDsKICAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZyb20s
IGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlU3BlbGxBbmRDb3JyZWN0aW9uTWFy
a2Vyc0Zyb21Xb3Jkc1RvQmVFZGl0ZWQoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3Jk
Qm91bmRhcnkpOwogCkBAIC00MTEsNiArNDEzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAgICB2b2lkIHJldmVhbFNlbGVj
dGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc09y
QmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nLCBS
ZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOworICAgIFRleHRDaGVja2luZ1R5
cGVNYXNrIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMpOwogCiAg
ICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IDc5ODhlNDE2MTBhNTE5YjZhNWNiMjYzMGM2MTBl
YmVhOGZhZTVmMjEuLmY1MjRhMmY0ODk3NjIzNGRlNjY3ZmU4OGRjOWY0ODY0M2M3YjdjZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTEwMCwxMyArMTAwLDE1
IEBAIGJvb2wgU3BlbGxDaGVja2VyOjppc0NoZWNrYWJsZShOb2RlKiBub2RlKSBjb25zdAogICAg
IHJldHVybiBub2RlICYmIG5vZGUtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2Vy
OjpyZXF1ZXN0Q2hlY2tpbmdGb3IoTm9kZSogbm9kZSkKK3ZvaWQgU3BlbGxDaGVja2VyOjpyZXF1
ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQoY2FuQ2hlY2tBc3luY2hyb25vdXNseShub2RlKSk7CisgICAgLy8gQ3VycmVu
dGx5IHdlIG9ubHkgc3VwcG9ydHMgc3BlbGxpbmcgYW5kIGdyYW1tYXIKKyAgICBBU1NFUlQoISht
YXNrICYgfihUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cikpKTsKIAogICAgIGlmICghaW5pdFJlcXVlc3Qobm9kZSkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NsaWVudC0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVu
Y2UsIG1fcmVxdWVzdFRleHQpOworICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyh0aGlzLCBtX3JlcXVlc3RTZXF1ZW5jZSwgbWFzaywgbV9yZXF1ZXN0VGV4dCk7CiB9CiAKIHN0
YXRpYyBib29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50
IGRpc3RhbmNlKQpAQCAtMTMxLDcgKzEzMywyNyBAQCBzdGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0
b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0b3IsIGludCBkaXN0YW5jZSkKICAgICByZXR1cm4g
ZmFsc2U7ICAgIAogfQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNl
LCBjb25zdCBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitib29sIFNwZWxs
Q2hlY2tlcjo6bWFya0F0KGNvbnN0IFBvc2l0aW9uSXRlcmF0b3ImIHN0YXJ0LCBpbnQgbG9jYXRp
b24sIGludCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24pIGNvbnN0Cit7CisgICAgUG9zaXRpb25JdGVyYXRvciBlbmQgPSBz
dGFydDsKKyAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIGxlbmd0aCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIFVzZXJzIG9yIEphdmFTY3JpcHQgYXBwbGljYXRpb25zIG1h
eSBjaGFuZ2UgdGV4dCB3aGlsZSBhIHNwZWxsLWNoZWNrZXIgY2hlY2tzIGl0cworICAgIC8vIHNw
ZWxsaW5ncyBpbiB0aGUgYmFja2dyb3VuZC4gVG8gYXZvaWQgYWRkaW5nIG1hcmtlcnMgdG8gdGhl
IHdvcmRzIG1vZGlmaWVkIGJ5IHVzZXJzIG9yCisgICAgLy8gSmF2YVNjcmlwdCBhcHBsaWNhdGlv
bnMsIHJldHJpZXZlIHRoZSB3b3JkcyBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBhbmQgY29tcGFy
ZSB0aGVtIHdpdGgKKyAgICAvLyB0aGUgb3JpZ2luYWwgb25lcy4KKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX3JlcXVlc3ROb2RlLT5kb2N1bWVudCgpLCBzdGFydCwg
ZW5kKTsKKworICAgIC8vIEZJWE1FOiBVc2UgdGV4dENvbnRlbnQoKSBjb21wYXRpYmxlIHN0cmlu
ZyBjb252ZXJzaW9uLgorICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHJhbmdlLT50ZXh0KCk7Cisg
ICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vic3RyaW5nKGxvY2F0aW9uLCBsZW5n
dGgpOworICAgIGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCisgICAgICAgIG1fcmVxdWVzdE5v
ZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLmdldCgpLCB0eXBlLCBk
ZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlbGxDaGVja2VyOjpk
aWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKQogewogICAgIGlmICghaXNWYWxpZChzZXF1ZW5jZSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE0NCwzMCArMTY2LDM2IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2Vx
dWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYgcmVzCiAgICAgaW50IHN0
YXJ0T2Zmc2V0ID0gMDsKICAgICBQb3NpdGlvbkl0ZXJhdG9yIHN0YXJ0ID0gZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKG1fcmVxdWVzdE5vZGUuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXS50
eXBlKCkgIT0gRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nICYmIHJlc3VsdHNbaV0udHlwZSgpICE9
IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKQorICAgICAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBz
dXBwb3J0cyBzcGVsbGluZyBhbmQgZ3JhbW1hcgorICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBl
ICYgfihUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBUbyBhdm9pZCBtb3ZpbmcgdGhl
IHBvc2l0aW9uIGJhY2t3YXJkLCB3ZSBhc3N1bWUgdGhlIGdpdmVuIHJlc3VsdHMgYXJlIHNvcnRl
ZCB3aXRoCiAgICAgICAgIC8vIHN0YXJ0T2Zmc2V0IGFzIHRoZSBvbmVzIHJldHVybmVkIGJ5IFtO
U1NwZWxsQ2hlY2tlciByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzpdLgotICAgICAgICBBU1NFUlQo
c3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbigpKTsKLSAgICAgICAgaWYgKCFmb3J3
YXJkSXRlcmF0b3Ioc3RhcnQsIHJlc3VsdHNbaV0ubG9jYXRpb24oKSAtIHN0YXJ0T2Zmc2V0KSkK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQb3NpdGlvbkl0ZXJhdG9yIGVuZCA9IHN0YXJ0
OwotICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIHJlc3VsdHNbaV0ubGVuZ3RoKCkp
KQorICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbik7Cisg
ICAgICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uIC0g
c3RhcnRPZmZzZXQpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAo
cmVzdWx0c1tpXS50eXBlICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSB7CisgICAgICAgICAg
ICBpZiAoIW1hcmtBdChzdGFydCwgcmVzdWx0c1tpXS5sb2NhdGlvbiwgcmVzdWx0c1tpXS5sZW5n
dGgsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgU3RyaW5nKCkpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSAmIFRleHRD
aGVja2luZ1R5cGVHcmFtbWFyKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IHJlc3VsdHNbaV0uZGV0YWlscy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIFBvc2l0
aW9uSXRlcmF0b3IgZ3JhbW1hclN0YXJ0ID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKCFm
b3J3YXJkSXRlcmF0b3IoZ3JhbW1hclN0YXJ0LCByZXN1bHRzW2ldLmRldGFpbHNbal0ubG9jYXRp
b24gLSBzdGFydE9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIFBvc2l0aW9uSXRlcmF0b3IgZ3JhbW1hckVuZCA9IGdy
YW1tYXJTdGFydDsKKyAgICAgICAgICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihncmFtbWFy
RW5kLCByZXN1bHRzW2ldLmRldGFpbHNbal0ubGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKCFtYXJrQXQoZ3JhbW1hclN0YXJ0LCByZXN1bHRz
W2ldLmRldGFpbHNbal0ubG9jYXRpb24sIHJlc3VsdHNbaV0uZGV0YWlsc1tqXS5sZW5ndGgsIERv
Y3VtZW50TWFya2VyOjpHcmFtbWFyLCByZXN1bHRzW2ldLmRldGFpbHNbal0udXNlckRlc2NyaXB0
aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KIAotICAgICAgICAvLyBVc2VycyBvciBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucyBtYXkgY2hh
bmdlIHRleHQgd2hpbGUgYSBzcGVsbC1jaGVja2VyIGNoZWNrcyBpdHMKLSAgICAgICAgLy8gc3Bl
bGxpbmdzIGluIHRoZSBiYWNrZ3JvdW5kLiBUbyBhdm9pZCBhZGRpbmcgbWFya2VycyB0byB0aGUg
d29yZHMgbW9kaWZpZWQgYnkgdXNlcnMgb3IKLSAgICAgICAgLy8gSmF2YVNjcmlwdCBhcHBsaWNh
dGlvbnMsIHJldHJpZXZlIHRoZSB3b3JkcyBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBhbmQgY29t
cGFyZSB0aGVtIHdpdGgKLSAgICAgICAgLy8gdGhlIG9yaWdpbmFsIG9uZXMuCi0gICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVxdWVzdE5vZGUtPmRvY3VtZW50
KCksIHN0YXJ0LCBlbmQpOwotICAgICAgICAvLyBGSVhNRTogVXNlIHRleHRDb250ZW50KCkgY29t
cGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KLSAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0g
cmFuZ2UtPnRleHQoKTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vi
c3RyaW5nKHJlc3VsdHNbaV0ubG9jYXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSk7Ci0gICAg
ICAgIGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCi0gICAgICAgICAgICBtX3JlcXVlc3ROb2Rl
LT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgcmVzdWx0c1tp
XS50eXBlKCkpOwotCi0gICAgICAgIHN0YXJ0T2Zmc2V0ID0gcmVzdWx0c1tpXS5sb2NhdGlvbigp
OworICAgICAgICBzdGFydE9mZnNldCA9IHJlc3VsdHNbaV0ubG9jYXRpb247CiAgICAgfQogCiAg
ICAgY2xlYXJSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRl
eCBkMzk0MGU1MDRmYWE0NmE5NjVjNzM4MDRiNTljZjcxMWY3NmRjYmY4Li5kMDk3OWVmZjJkMjUx
N2FjNTJlYTg3ZGE2NDk2ZjUwYTdkY2ZkOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxD
aGVja2VyLmgKQEAgLTI3LDMyICsyNywxNCBAQAogI2RlZmluZSBTcGVsbENoZWNrZXJfaAogCiAj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBOb2RlOwotCi1j
bGFzcyBTcGVsbENoZWNraW5nUmVzdWx0IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVsbENo
ZWNraW5nUmVzdWx0KERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUgPSBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmcsIGludCBsb2NhdGlvbiA9IDAsIGludCBsZW5ndGggPSAwKQotICAgICAg
ICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCi0gICAgICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQotICAgIHsKLSAgICB9Ci0KLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9IAotICAgIGludCBsb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLQotcHJpdmF0ZToKLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSBtX3R5cGU7Ci0gICAgaW50IG1fbG9jYXRpb247Ci0gICAgaW50IG1fbGVuZ3Ro
OwotfTsKK2NsYXNzIFBvc2l0aW9uSXRlcmF0b3I7CiAKIGNsYXNzIFNwZWxsQ2hlY2tlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3BlbGxDaGVja2VyKTsKQEAgLTY1LDEyICs0NywxMyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1c3koKSBjb25zdDsKICAgICBib29sIGlzVmFsaWQoaW50
IHNlcXVlbmNlKSBjb25zdDsKICAgICBib29sIGlzQ2hlY2thYmxlKE5vZGUqKSBjb25zdDsKLSAg
ICB2b2lkIHJlcXVlc3RDaGVja2luZ0ZvcihOb2RlKik7Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQg
c2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYpOworICAgIHZvaWQg
cmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrLCBOb2RlKik7CisgICAgdm9p
ZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
Jik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpbml0UmVxdWVzdChOb2RlKik7CiAgICAgdm9pZCBj
bGVhclJlcXVlc3QoKTsKKyAgICBib29sIG1hcmtBdChjb25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBz
dGFydCwgaW50IGxvY2F0aW4sIGludCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKSBjb25zdDsKIAogICAgIEZyYW1lKiBtX2ZyYW1l
OwogICAgIFRleHRDaGVja2VyQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAppbmRleCBlZDkyZjExMmNiYTg3N2ZkNTJjMzQ2NDA3ZjViNGZmZTI2MTIwZjZj
Li40NmFlMTUyYmNlMDgwODk2ZTM4MzA4ZDI5NGZkOGU3MDk1ZjU3NWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00MDcsMTEgKzQwNywxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0
b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFy
KiwgaW50LCB1aW50NjRfdCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CisgICAg
dmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIq
LCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KIH07CiAKIGNs
YXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKaW5kZXggYWNhYTAy
Y2Y2MmEwNzBmOTBjZjk0YzZlMTI2YzVkMGQ2N2JmYmI4ZS4uOGIxZDgxMjIyNGY1NTU2YmNmODk2
MzdlOTRjZGYwYjZhMmRiMmQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENoZWNrZXJDbGllbnQuaApAQCAtNTMsNiArNTMsOCBAQCBlbnVtIFRleHRDaGVja2lu
Z1R5cGUgewogICAgIFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICA9IDEgPDwgOQogfTsKIAor
dHlwZWRlZiB1aW50NjRfdCBUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKwogc3RydWN0IFRleHRDaGVj
a2luZ1Jlc3VsdCB7CiAgICAgVGV4dENoZWNraW5nVHlwZSB0eXBlOwogICAgIGludCBsb2NhdGlv
bjsKQEAgLTcxLDE0ICs3MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0
b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVs
bGVkV29yZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25z
dCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3Jh
bW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpID0gMDsKICNpZiBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBV
Q2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEZvciBzcGVsbGNoZWNrZXJzIHRoYXQgc3VwcG9y
dCBtdWx0aXBsZSBsYW5ndWFnZXMsIGl0J3Mgb2Z0ZW4gaW1wb3J0YW50IHRvIGJlIGFibGUgdG8g
aWRlbnRpZnkgdGhlIGxhbmd1YWdlIGluIG9yZGVyIHRvCiAgICAgLy8gcHJvdmlkZSBtb3JlIGFj
Y3VyYXRlIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuIENhbGxlciBjYW4gcGFzcyBpbiBtb3JlIHRl
eHQgaW4gImNvbnRleHQiIHRvIGFpZCBzdWNoIHNwZWxsY2hlY2tlcnMgb24gbGFuZ3VhZ2UKICAg
ICAvLyBpZGVudGlmaWNhdGlvbi4gTm9yYW1sbHkgaXQncyB0aGUgdGV4dCBzdXJyb3VuZGluZyB0
aGUgIndvcmQiIGZvciB3aGljaCB3ZSBhcmUgZ2V0dGluZyBjb3JyZWN0aW9uIHN1Z2dlc3Rpb25z
LgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQs
IGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50
LCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0
cmluZyYpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjFlMzk2
NDYyNjcxZDE1NjI5YWMyMGM0ZDAyNTc5NjZlOWQwNmZkNC4uZTIyOGRiZDNlYWJmNDlkNzUzMmQ4
OTFiYTliYzlmYWJmNmFiZDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENo
ZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjA4NQorCisgICAgICAgIEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgorICAg
ICAgICAKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9F
ZGl0b3JDbGllbnRJbXBsLmNwcDoKKwogMjAxMS0wMy0xMSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUm9sbG91dCB0aGUgY2hyb21pdW0gZGVwcyByb2xsIGFz
IGl0IGFkZHMgYSBkZXBlbmRlbmN5IG9uIGEgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDM4ZDRmNWVmODkyMzllMDQ1YWFm
NWYwZjkxMzQ3MjZhMzhhNjIyOTkuLmQ5ZWZlOTgyODYzMjM2NmZjN2EwZGU3NTk0YTRlZmMxNzY2
MzQ0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudElt
cGwuY3BwCkBAIC04NzEsNyArODcxLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgICAgICpt
aXNzcGVsbGluZ0xlbmd0aCA9IHNwZWxsTGVuZ3RoOwogfQogCi12b2lkIEVkaXRvckNsaWVudElt
cGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOwogewogICAgIG1fd2Vi
Vmlldy0+Y2xpZW50KCktPnJlcXVlc3RDaGVja2luZ09mVGV4dCh0ZXh0LCBuZXcgV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbkltcGwoaWRlbnRpZmllciwgc2VuZGVyKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKaW5kZXggYjgxZmI1NjA1NDMw
YmYyZjVmMzNkZTQ4NzRjMGI2NmY2ZjdjYzQ2ZS4uMmViYzZlYTU4MDRiMjUzZmJlNDE2Mzg2NzQ1
Yjk4NzExN2FhZmRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVj
a2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CmluZGV4IGJiZTJkMGQ3NDAwNDU0MzQ2NTRiZWM0OGVlNGI2OWU5MTY5OTYyNmEuLjk5OTUzMTBh
MDlmNjA4NjgyYmQ1NjUxNzJjZTY1M2VkNmRjOTU0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVm
YWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4
dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjA4NQorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRFZmwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6cmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTEyICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oIGIvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKaW5kZXggNTc1
YTUwZDI1M2QyOTQwNmM0NmQ4YTM0Y2FmMzY4ZWJhZDhhZTc2Ny4uNTZiMzMwMDJlYWExN2E4NWI5
YjM3MDE2OWQ4YmQ4NDczZmRjM2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwg
Y29uc3QgU3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0
IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGll
bnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCmluZGV4IDQzYzc0ZjNhMDdjNjIzZGY4NzQxYTdlMWZlOWE1NGQ3MGRjNDkxMjMuLjk1NTNi
YzY3MjZhNGUyMGNlZGI5ODczMTFhNDBmZjRlOGI1ODY4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgg
VGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJD
bGllbnRFbmNoYW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyQ2xpZW50RW5jaGFu
dDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTExICBNYXJjbyBQZWVyZWJv
b20gIDxtYXJjb0BwZWVyZWJvb20udXM+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBO
b3JvbmhhIFNpbHZhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAppbmRleCBjMjk0YTNkMDBmMmRkZTUw
NmFhZGE2MDQ3MTRhMDViNWRkNDQ4NzYxLi41ZDkzYzA3MjE2ZDk5NWJmZTM2Y2FmYWRkOTkwYzBh
NzgyZjUyZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9U
ZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFz
cyBUZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQgOiBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJD
bGllbnQgewogICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2Vz
dGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFdU
Rjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRp
b24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVz
c2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KIAogICAgICAgICB2b2lk
IHVwZGF0ZVNwZWxsQ2hlY2tpbmdMYW5ndWFnZShjb25zdCBjaGFyKik7CiAgICAgICAgIHN0YXRp
YyB2b2lkIGZyZWVTcGVsbENoZWNraW5nTGFuZ3VhZ2UoZ3BvaW50ZXIsIGdwb2ludGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9o
YWlrdS9DaGFuZ2VMb2cKaW5kZXggYjJhZWZjZThkZDg4ZjZiYWQ5NDQyOWUwYzdhNjMxYjc1YmIz
YmFiMy4uNDgwY2ZmNmRmNjZkODhkNGIwNzA5MTE2ZjdjNzIzMDY4NTE1MjA1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9oYWlr
dS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAg
PG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJl
IHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50SGFpa3UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhh
aWt1OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMDcgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEhhaWt1LmggYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEhhaWt1LmgKaW5kZXggYmIwZDhhYzEwNWZjZTIyMTU3YTcwMjA2YWE0YzE0ZWM1OTA3YTBi
NS4uY2MyMWZjYjg2ZjI5MTk0ZWEzZTgxNGZhMDU3M2Q1ZTY0Y2NiYTE5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3Uu
aApAQCAtMTExLDcgKzExMSw3IEBAIGNsYXNzIEVkaXRvckNsaWVudEhhaWt1IDogcHVibGljIEVk
aXRvckNsaWVudCwgcHVibGljIFRleHRDaGVja2VyQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBj
b250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBTdHJpbmcmKSB7fQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwg
aW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikge30KICAg
ICAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0
aGlzOyB9CiAKICAgICAgICAgYm9vbCBpc0VkaXRpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpp
bmRleCBlZWYxNmI4NjcyODU0NTJkMzM1MjFmZmIzZmNjYmE4ZWIxMWRlNDc1Li5mOGU3MDI5MWU4
ZTYyMWU3MGE0NjNkYjk1NDc4ZDY5MWM1NWEyMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFj
dG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRD
aGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTYwODUKKworICAgICAgICBSZW1vdmVkIE5TVGV4dENoZWNraW5nUmVzdWx0IHRvIFNw
ZWxsQ2hlY2tpbmdSZXN1bHQgY29udmVydGlvbiwgYW5kIGV4dHJhY3RlZAorICAgICAgICBOU1Rl
eHRDaGVja2luZ1Jlc3VsdCB0byBUZXh0Q2hlY2tpbmdSZXN1bHQgY29udmVydGlvIGZyb20gY2hl
Y2tUZXh0T2ZQYXJhZ3JhcGggbWV0aG9kLgorICAgICAgICBmb3IgcmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcgbWV0aG9kLgorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06
CisgICAgICAgICh0b0NvcmVUZXh0Q2hlY2tpbmdSZXN1bHRzKToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVs
bENoZWNrUmVzcG9uZGVyIGluaXRXaXRoU2VuZGVyOldlYkNvcmU6OnNlcXVlbmNlOnR5cGVzOldl
YkNvcmU6OnJlc3VsdHM6XSk6CisgICAgICAgICgtW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25k
ZXIgcGVyZm9ybV0pOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJGcmFtZVByaXZhdGUuaDoKKwogMjAxMS0wMy0xMyAgUHJhdGlrIFNvbGFua2kgIDxwc29s
YW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCAxZmExMzJhZDZjNWJkNDM3OWZlMGJiODVjOWU2ZmYwZDY2YjExNzM1Li4yNzcxMzllZjY4
NWRjYzU0MTdhMmExYzE0MjkzOTBiNjJjMjlhMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTMwLDcgKzEzMCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVD
aGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxs
aW5nTGVuZ3RoKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2Vz
dGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2
b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgV1RGOjpW
ZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwg
aW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlw
ZXMsIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwor
ICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwg
aW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywg
V1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYp
OwogICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNob3cpOwpAQCAtMTM4LDcg
KzEzOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29u
c3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5w
dXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwg
aW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsK
ICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogICAgIHZpcnR1
YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86
OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpT
dHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3JlOjpFZGl0b3IqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNt
aXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA2OWRkNTc0NzMxYjQ0YjQzMGMyNzQ1
OGU3MjNiNDFjNGRlNTE3NGIwLi45NzlkN2I0NzdjNGRmYzU3NGUxODI3YTEwYjFhMWQ0NmMwMjIy
Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tCkBAIC03OTQsMTIgKzc5NCw5IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgVmVjdG9y
CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBo
KGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKLXsKICNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICBOU1N0
cmluZyAqdGV4dFN0cmluZyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQ2hhcmFjdGVyc05v
Q29weTpjb25zdF9jYXN0PFVDaGFyKj4odGV4dCkgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6
Tk9dOwotICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtbTlNTcGVsbENoZWNrZXIgc2hh
cmVkU3BlbGxDaGVja2VyXSBjaGVja1N0cmluZzp0ZXh0U3RyaW5nIHJhbmdlOk5TTWFrZVJhbmdl
KDAsIFt0ZXh0U3RyaW5nIGxlbmd0aF0pIHR5cGVzOihjaGVja2luZ1R5cGVzfE5TVGV4dENoZWNr
aW5nVHlwZU9ydGhvZ3JhcGh5KSBvcHRpb25zOm5pbCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgb3J0aG9ncmFwaHk6TlVMTCB3b3JkQ291bnQ6TlVMTF07
Ci0gICAgW3RleHRTdHJpbmcgcmVsZWFzZV07CitzdGF0aWMgdm9pZCB0b0NvcmVUZXh0Q2hlY2tp
bmdSZXN1bHRzKE5TQXJyYXkgKmluY29taW5nUmVzdWx0cywgVGV4dENoZWNraW5nVHlwZU1hc2sg
Y2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit7CiAg
ICAgZm9yIChOU1RleHRDaGVja2luZ1Jlc3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdS
ZXN1bHRzKSB7CiAgICAgICAgIE5TUmFuZ2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQg
cmFuZ2VdOwogICAgICAgICBOU1RleHRDaGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWlu
Z1Jlc3VsdCByZXN1bHRUeXBlXTsKQEAgLTg3MSw2ICs4NjgsMTYgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3Ro
LCB1aW50NjQKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0K
ICAgICB9Cit9CisjZW5kaWYKKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFy
YWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBUZXh0Q2hlY2tpbmdUeXBlTWFz
ayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sK
KyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkKKyAgICBOU1N0cmluZyAqdGV4dFN0cmluZyA9IFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoQ2hhcmFjdGVyc05vQ29weTpjb25zdF9jYXN0PFVDaGFyKj4odGV4dCkgbGVuZ3RoOmxl
bmd0aCBmcmVlV2hlbkRvbmU6Tk9dOworICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtb
TlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjaGVja1N0cmluZzp0ZXh0U3RyaW5n
IHJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0U3RyaW5nIGxlbmd0aF0pIHR5cGVzOihjaGVja2lu
Z1R5cGVzfE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5KSBvcHRpb25zOm5pbCBpblNwZWxs
RG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgb3J0aG9ncmFwaHk6TlVM
TCB3b3JkQ291bnQ6TlVMTF07CisgICAgW3RleHRTdHJpbmcgcmVsZWFzZV07CisgICAgdG9Db3Jl
VGV4dENoZWNraW5nUmVzdWx0cyhpbmNvbWluZ1Jlc3VsdHMsIGNoZWNraW5nVHlwZXMsIHJlc3Vs
dHMpOwogI2VuZGlmCiB9CiAKQEAgLTEwMTcsNTggKzEwMjQsMzcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkKIHsKICAgICBXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqIF9zZW5kZXI7CiAgICAgaW50IF9zZXF1ZW5jZTsKKyAgICBUZXh0Q2hlY2tpbmdUeXBl
TWFzayBfdHlwZXM7CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9yZXN1bHRzOwogfQotLSAoaWQp
aW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihp
bnQpc2VxdWVuY2UgcmVzdWx0czooTlNBcnJheSopcmVzdWx0czsKKy0gKGlkKWluaXRXaXRoU2Vu
ZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNl
IHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1bHRzOihOU0Fy
cmF5KilyZXN1bHRzOwogLSAodm9pZClwZXJmb3JtOwotLSAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6
U3BlbGxDaGVja2luZ1Jlc3VsdD4pIF9jb3JlUmVzdWx0czsKIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIKLS0gKGlkKWluaXRXaXRoU2VuZGVyOihX
ZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJlc3Vs
dHM6KE5TQXJyYXkqKXJlc3VsdHMKKy0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVs
bENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCiB7CiAg
ICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgX3NlbmRlciA9IHNlbmRlcjsKICAgICBfc2VxdWVuY2UgPSBzZXF1ZW5jZTsKKyAg
ICBfdHlwZXMgPSB0eXBlczsKICAgICBfcmVzdWx0cyA9IHJlc3VsdHM7CiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKIC0gKHZvaWQpcGVyZm9ybQogewotICAgIF9zZW5kZXItPmRpZENoZWNrKF9zZXF1
ZW5jZSwgW3NlbGYgX2NvcmVSZXN1bHRzXSk7Ci19Ci0KLXN0YXRpYyBTcGVsbENoZWNraW5nUmVz
dWx0IHRvQ29yZVNwZWxsaW5nUmVzdWx0KE5TVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQpCi17
Ci0gICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHR5cGUgPSBbcmVzdWx0IHJlc3VsdFR5cGVdOwotICAg
IE5TUmFuZ2UgcmFuZ2UgPSBbcmVzdWx0IHJhbmdlXTsKLSAgICBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSBjb3JlVHlwZTsKLSAgICBpZiAodHlwZSAmIE5TVGV4dENoZWNraW5nVHlwZVNwZWxs
aW5nKQotICAgICAgICBjb3JlVHlwZSA9IERvY3VtZW50TWFya2VyOjpTcGVsbGluZzsKLSAgICBl
bHNlIGlmICh0eXBlICYgTlNUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikKLSAgICAgICAgY29yZVR5
cGUgPSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKLSAgICBlbHNlCi0gICAgICAgIGNvcmVUeXBl
ID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnM7Ci0KLSAgICByZXR1cm4gU3BlbGxDaGVja2lu
Z1Jlc3VsdChjb3JlVHlwZSwgcmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7Ci19Ci0KLS0g
KFdURjo6VmVjdG9yPFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+KV9jb3JlUmVzdWx0cwot
ewotICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1
bHRzOwotICAgIGNvcmVSZXN1bHRzLnJlc2VydmVDYXBhY2l0eShbX3Jlc3VsdHMuZ2V0KCkgY291
bnRdKTsKLSAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQgaW4gX3Jlc3VsdHMu
Z2V0KCkpCi0gICAgICAgIGNvcmVSZXN1bHRzLmFwcGVuZCh0b0NvcmVTcGVsbGluZ1Jlc3VsdChy
ZXN1bHQpKTsKLSAgICByZXR1cm4gY29yZVJlc3VsdHM7CisgICAgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gY29yZVJlc3VsdHM7CisgICAgdG9Db3JlVGV4dENoZWNraW5nUmVzdWx0cyhfcmVz
dWx0cy5nZXQoKSwgX3R5cGVzLCBjb3JlUmVzdWx0cyk7CisgICAgX3NlbmRlci0+ZGlkQ2hlY2so
X3NlcXVlbmNlLCBjb3JlUmVzdWx0cyk7CiB9CiAKIEBlbmQKICNlbmRpZgogCi12b2lkIFdlYkVk
aXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiBzZW5kZXIsIGludCBzZXF1ZW5jZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciog
c2VuZGVyLCBpbnQgc2VxdWVuY2UsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNr
aW5nVHlwZXMsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICNpZiAhZGVmaW5lZChCVUlMRElOR19P
Tl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICBOU1JhbmdlIHJh
bmdlID0gTlNNYWtlUmFuZ2UoMCwgdGV4dC5sZW5ndGgoKSk7CkBAIC0xMDc2LDcgKzEwNjIsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6
U3BlbGxDaGVja2VyKiBzZW5kZXIsIGludAogICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3Bl
bGxDaGVja2VyXSByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzp0ZXh0IHJhbmdlOnJhbmdlIHR5cGVz
Ok5TVGV4dENoZWNraW5nQWxsU3lzdGVtVHlwZXMgb3B0aW9uczowIGluU3BlbGxEb2N1bWVudFdp
dGhUYWc6MCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0ludGVnZXIsIE5TQXJyYXkqIHJlc3VsdHMsIE5TT3J0aG9ncmFwaHkq
LCBOU0ludGVnZXIpIHsKICAgICAgICAgICAgIFtjdXJyZW50TG9vcCBwZXJmb3JtU2VsZWN0b3I6
QHNlbGVjdG9yKHBlcmZvcm0pIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh
cmdldDpbW1tXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aFNlbmRl
cjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVuY2UgcmVzdWx0czpyZXN1bHRzXSBhdXRvcmVsZWFzZV0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6W1tbV2ViRWRpdG9yU3Bl
bGxDaGVja1Jlc3BvbmRlciBhbGxvY10gaW5pdFdpdGhTZW5kZXI6c2VuZGVyIHNlcXVlbmNlOnNl
cXVlbmNlIHR5cGVzOmNoZWNraW5nVHlwZXMgcmVzdWx0czpyZXN1bHRzXSBhdXRvcmVsZWFzZV0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQ6bmlsIG9yZGVyOjAgbW9k
ZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRGVmYXVsdFJ1bkxvb3BNb2RlXV07CiAgICAg
ICAgIH1dOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCAx
ZTg4YWZjMDJiYjJlZjJhNTI2NWU3OWZhZDBkZTI0MGI2MDEwZmM3Li5hZmI2OWIwMzU4OTI5MDQx
MGFlNjIzMGU0MDQxODNmNDZmNmQ1NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KQEAgLTEzMDgsNiArMTMwOCwxNCBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2Ug
KmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICByZXR1cm4gY29yZUZyYW1l
LT5sYXllclRyZWVBc1RleHQoKTsKIH0KIAorLSAoTlNTdHJpbmcgKiltYXJrZXJzRm9yU2VsZWN0
aW9uU3RhcnRBc1RleHQKK3sKKyAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZhdGUtPmNvcmVG
cmFtZTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmddOworICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLT5tYXJrZXJzRm9yU2VsZWN0aW9u
U3RhcnRBc1RleHQoKTsKK30KKwogLSAoQk9PTCloYXNTcGVsbGluZ01hcmtlcjooaW50KWZyb20g
bGVuZ3RoOihpbnQpbGVuZ3RoCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5j
b3JlRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaApp
bmRleCBiNDk0MjdlMjVkMTY1ZmFkYzZiMWVjNmExM2I3YzY2Zjg0Y2RhODc2Li40NzA5ZDQ0MWI4
MDljMTA4NTAzNTk1NTZhZWUxZmJlNGQ5ZTYxNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKQEAgLTE0Miw2ICsxNDIsNyBAQCB0eXBlZGVmIGVudW0g
ewogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlcmUgaXMgYSBzcGVsbGluZyBtYXJrZXIgaW4gdGhl
IHNwZWNpZmllZCByYW5nZSBvZiB0aGUgZm9jdXNlZCBub2RlLgogLSAoQk9PTCloYXNTcGVsbGlu
Z01hcmtlcjooaW50KWxvY2F0aW9uIGxlbmd0aDooaW50KWxlbmd0aDsKKy0gKE5TU3RyaW5nICop
bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0OwogCiAvLyBUaGUgdG9wIG9mIHRoZSBhY2Nl
c3NpYmlsaXR5IHRyZWUuCiAtIChpZClhY2Nlc3NpYmlsaXR5Um9vdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5k
ZXggMmFhZWY1NmZjNjFkNGM5MGFiOWNjNjg2OTRhYzY5MDE4MGU0MTRhMC4uNmMwMTVlZDA0ZDM4
YmUxMmEyZDIwODhhNGFlNmE0M2I1OTU0YTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3Jp
bmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNr
aW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjA4NQorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKToKKwogMjAxMS0wMy0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgYXR0ZW1wdCBhdCBidWlsZCBmaXghCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmggYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKaW5kZXggMDQ1MDYw
MzUzOTA0YzA1NWQ3Y2NmMmFkNDYxZjVjYjhlODFhZTFhMC4uMGQ4ZThjNjc5ODRlOWFkMWY3ZjJj
NTZiNmMwZDFjZmQ2NGJlMjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBT
dHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpIHt9CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgdmlydHVh
bCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKICAg
ICBib29sIGlzRWRpdGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDdmMzIwNjA1YTEx
YWE4NmQ2YTM3ZWRiNTc4NjU1YjM0NDk5ODg0ZTMuLjc4N2QwNjNhOGQ0NmQ0NDU2MjRlY2U5ZGQz
ZjVjODFmNDIxNjIyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0w
My0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hl
Y2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0xMSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBXaW5kb3dzIGJ1
aWxkIGZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjE2
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCmluZGV4IDE4YmU0MDA2ZjQzOTJkNzFhYzA3NDUxZmIyYTQ3Nzg4ZDM2NjI2MjAuLmYzMGM0
MzRhNzA0ZjRjNzhhOGFjOTI2ZDczMWY4MzNhNjViYWJjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMTIsNyArMTEy
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRl
KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcios
IGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRD
aGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IDcyNGI5MmFhNmM3MDg4ZGJlNmI4NmMw
YzQzZjZlYmU4ZTRiYmU3OGYuLjhiZDI2NGI0YTljZWRlYTY1ZDhjYTIyYWIxOWJhZjM5OWVmNTFl
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVz
dWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmg6CisgICAgICAgIChXZWJLaXQ6OkVk
aXRvckNsaWVudFdpbkNFOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMDcg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFdpbkNFLmggYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFdpbkNFLmgKaW5kZXggZDkzZWNjNWI4ZmQ1ZTM1ZjQ0N2Y5MjFlNDc3
NTJkYjMyZTIxNDYyNy4uYTJiMjNiNDg1MzZhOThjOWE1MDg3YjQxMmY4YmU0YTNhNWJkZjdlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50V2luQ0UuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6
U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3Ry
aW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29u
c3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGll
bnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxv
ZwppbmRleCAzZTM4NWIxYTczYzI0ZjQ4ZDNjM2NmMDczYjY3YTU0NDQzMTBiMzI0Li5jYjQ4MzRj
ODE4NmU0MGNhMzE0MzA5MjYxMWI3N2IyNjk5YTRkMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZh
Y3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0
Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcpOgorCiAyMDExLTAzLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAppbmRleCBkMWQzNTk3MDk3NTljOTAwNjg0Mzc5
MjBiNTA1ZTVlZmYyODIyMjRkLi42NWVlNDkzMDU5MzljMjdmNWIwMzYxNjVhNzZjNTVkZGY0ZDUw
NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xp
ZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50
V3guaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0
YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7
IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTgyZDRkMzJlODNiN2M5
MWZjZWE0MTJlMjU4MWVkMDAxMjU5ZTY4My4uZDVhZTU1OTc3NGE2ZWJlNmFhOWI2OTQxMWI3NzE3
NTRmNjExYTdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTAzLTExICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVn
IFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6cmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKwogMjAxMS0wMy0xMyAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBiOTU0MjgzNTkxMzM3ODBiNGNlZDYwYmY2M2Q5NWEz
NmI5ZGUxNTBjLi5jZTJjZTYxNDM2ZWRhNmQxODlhOTJhM2U3NDkzNTEzM2VjZjMyM2Y3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwg
aW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBmYTg0
MjZhMzhlOTRmYmUzZjQxNjU5ODlmODE1MmYzYWQ3NGU2MDc4Li4wODdlMzIwOWExYjFhNjAyOGJi
ZDBiZmY4YjJmOGE3MjJlYWM3ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEzMSw3ICsx
MzEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2Vz
dGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpOwogICAg
IHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5n
dGgsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0
aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0g
ICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBp
bnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8V2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFy
YWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVz
dWx0PiYgcmVzdWx0cyk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdV
SVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJE
ZXRhaWwmIGRldGFpbCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlz
c3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJik7CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBj
b25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6
U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNv
cmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNv
bnN0IFdURjo6U3RyaW5nJik7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlv
blBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5lbEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgV2ViQ29yZTo6
RWRpdG9yKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29y
ZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJF
ZGl0b3JDbGllbnRNYWMubW0KaW5kZXggOGFmMDQzODBjMWZmZTg0ZDk1ZGQxZjA4MWZlYTAyMGFh
OTE2NDk5Yy4uYzUzMjc0ZGI4YjQ2ZTViNDNjMDhkYjRjZTNlYWM5NGVkZjk3ZmUwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRp
dG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tp
bmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBs
ZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogICAgIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBiZSBuaWNlIGlmIHdlIHdvdWxkbid0IGhhdmUgdG8gY29weSB0aGUgdGV4dCBoZXJlLgogICAg
IG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0aCksIGNoZWNraW5nVHlwZXMpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaDo6UmVwbHkocmVzdWx0cykpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE5NDEwMGYwZWU0
ZTg4MWRlMGRiOTBjNzkxMGQzNGUzNGNhZjk4NTAuLjNmZjA4ZjY1ODE2NWZlMWU1MDNkMjhiYmZh
ZDIzYzc0NjJjOTQzZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1v
cnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJl
cGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgIEFkZGVkIExheW91dFRlc3RD
b250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKSBmb3IgdGVzdGluZwor
ICAgICAgICBub24tc3BlbGxpbmcgbWFya2Vycy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKG1hcmtlcnNGb3JTZWxlY3Rpb25T
dGFydEFzVGV4dENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0
aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxl
Y3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0
VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1h
cmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFz
VGV4dCk6CisKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBh
IHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKG1hcmtlcnNGb3JT
ZWxlY3Rpb25TdGFydEFzVGV4dENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtl
cnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRB
c1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVy
V3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rp
b25TdGFydEFzVGV4dCk6CisKIDIwMTEtMDMtMTMgIEpvZSBXaWxkICA8am9zZXBoLndpbGRAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDA3N2EwZDI0Mzc0NmRkNTM5N2JjZGY0ZGJjOTY0NjQxN2Y5OWFlMTMuLmRhZjIzNmY4YTZiZDc2
ZDI4ZDE3MWQ5ODE4MzAyZTNiNmJmMDdhNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTE5MjUsNiArMTkyNSwxNiBAQCBzdGF0aWMgSlNW
YWx1ZVJlZiBoYXNTcGVsbGluZ01hcmtlckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdQogICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgb2sp
OwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHRD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50
Q291bnQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKwor
ICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0
VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiB0ZXh0ID0gY29udHJvbGxlci0+bWFya2Vyc0ZvclNlbGVj
dGlvblN0YXJ0QXNUZXh0KCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQs
IHRleHQuZ2V0KCkpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBtYXJrZXJUZXh0Rm9yTGlzdEl0
ZW1DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0yMTI5LDYgKzIxMzksNyBAQCBKU1N0YXRp
Y0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAg
ICAgeyAibGF5ZXJUcmVlQXNUZXh0IiwgbGF5ZXJUcmVlQXNUZXh0Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAibnVtYmVyT2ZQYWdlcyIsIG51bWJlck9mUGFnZXNDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0iLCBtYXJrZXJUZXh0Rm9yTGlzdEl0
ZW1DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRB
c1RleHQiLCBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJub3RpZnlEb25lIiwgbm90aWZ5RG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgIm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyIsIG51bWJlck9mQWN0aXZlQW5pbWF0aW9u
c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInN1c3BlbmRBbmltYXRpb25zIiwgc3VzcGVu
ZEFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNTVmZTIyMDBmNDUwMGY3ZDA0NjYxNGZlNmI3NTc2MWUx
MjgzZGMwNS4uMDBmMjI2NzgyYTkxZmQ5MDBlNmU2YmRkYzcyMDU3Yzg2ZDIyZTAwMCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0yOTEsNiArMjkx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWJvcnRNb2RhbCgpOwogCiAgICAgYm9vbCBoYXNTcGVs
bGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCk7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpOwogCiAgICAgdm9pZCBkdW1w
Q29uZmlndXJhdGlvbkZvclZpZXdwb3J0KGludCBkZXZpY2VEUEksIGludCBkZXZpY2VXaWR0aCwg
aW50IGRldmljZUhlaWdodCwgaW50IGF2YWlsYWJsZVdpZHRoLCBpbnQgYXZhaWxhYmxlSGVpZ2h0
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IDYyYWNiMWY5N2ZmMDc0ZmM0NDE4YzgwM2NiZDYyMTljMTM0
N2Y4OTUuLmZiZGMzZGQyY2UxNWMxMDg1Yjk2YzU0ZDI2NDhmZTEwNWRjMjExNzEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKQEAgLTE2MDEsNiArMTYwMSwxMiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpo
YXNTcGVsbGluZ01hcmtlcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQwogICAg
IHJlc3VsdC0+c2V0KG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCktPnNlbGVjdGlvblN0
YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgYXJndW1lbnRz
WzFdLnRvSW50MzIoKSkpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJz
Rm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXN1bHQtPnNldE51
bGwoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50
ZXJ2YWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDk5MzI0YTk3NTU5YWI0
MWU3MDMxMDJkMjM5MDY5Njc2MjIzOTFiNTQuLmM4NGE0YjQ2OTE1MTNjZWJiNjkzNjFiM2FmNjNk
Y2Y4Y2Y4YzcwODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzM0LDYgKzMzNCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbWFya2VyVGV4dEZvckxpc3RJdGVtKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKICAgICB2b2lkIGhhc1NwZWxsaW5nTWFya2VyKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4
dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICB2b2lkIHNldE1p
bmltdW1UaW1lckludGVydmFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAKaW5kZXggNTIxNTYxMjA3NmMxNDg0NTZhOGE2YTk2ZTJmZDU2OWEwYTRlMWEwZS4u
ZDcyNDQyNWNhZjBhMWE0ZTAzMWQ4NjY3ZDY5OTUxYTIwOTJiMTdlYSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC05
MDMsNiArOTAzLDEyIEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFy
a2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OndlYmtpdFdlYkZyYW1lU2VsZWN0aW9uSGFzU3BlbGxpbmdNYXJrZXIobWFpbkZyYW1l
LCBmcm9tLCBsZW5ndGgpOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpCit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oKTsK
K30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3
cG9ydChpbnQgZGV2aWNlRFBJLCBpbnQgZGV2aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGlu
dCBhdmFpbGFibGVXaWR0aCwgaW50IGF2YWlsYWJsZUhlaWdodCkKIHsKICAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQppbmRleCA1OGE3YWRmYTJhYWFjZmVkMjU3ZTM3NDAzMjg2OGRiNmU3NWE1MWZiLi5hNmRk
ZDhiZjQyMmZkYzM3OTY4YmQwODBjYjkyZGM2ZDM0NzlhYzA5IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0xMDQ4LDYg
KzEwNDgsMTQgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIo
aW50IGZyb20sIGludCBsZW5ndGgpCiB7CiAgICAgcmV0dXJuIFttYWluRnJhbWUgaGFzU3BlbGxp
bmdNYXJrZXI6ZnJvbSBsZW5ndGg6bGVuZ3RoXTsKIH0KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQo
KQoreworICAgIE5TU3RyaW5nKiB0ZXh0ID0gW21haW5GcmFtZSBtYXJrZXJzRm9yU2VsZWN0aW9u
U3RhcnRBc1RleHRdOworICAgIHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oQWRvcHQs
IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZil0ZXh0KSk7Cit9CisKKwog
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChp
bnQgLypkZXZpY2VEUEkqLywgaW50IC8qZGV2aWNlV2lkdGgqLywgaW50IC8qZGV2aWNlSGVpZ2h0
Ki8sIGludCAvKmF2YWlsYWJsZVdpZHRoKi8sIGludCAvKmF2YWlsYWJsZUhlaWdodCovKQogewog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
Y3BwCmluZGV4IGFkOWU5Njg1OThkZTU4YjhjYTkyYzU4YjZjMGI3MDM4MGUwMzQ3NzYuLmJlNWM0
YmVlNmE0ZDRiYzYyZjYwN2Q3MWE0NjUzZjE0OTRmNGIyMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC04MjcsNiArODI3
LDEyIEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCwg
aW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorUVN0cmluZyBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuICIiOworfQorCiBRVmFyaWFudExpc3QgTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om5vZGVzRnJvbVJlY3QoY29uc3QgUVdlYkVsZW1lbnQmIGRvY3VtZW50LCBpbnQgeCwg
aW50IHksIHVuc2lnbmVkIHRvcCwgdW5zaWduZWQgcmlnaHQsIHVuc2lnbmVkIGJvdHRvbSwgdW5z
aWduZWQgbGVmdCwgYm9vbCBpZ25vcmVDbGlwcGluZykKIHsKICAgICByZXR1cm4gRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6Om5vZGVzRnJvbVJlY3QoZG9jdW1lbnQsIHgsIHksIHRvcCwgcmlnaHQs
IGJvdHRvbSwgbGVmdCwgaWdub3JlQ2xpcHBpbmcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCmluZGV4IDQxZDBhY2FmNzMwOTAxMzJhM2Ix
NGIzMDY1NjUxODRmMTk4OTFiMDkuLmYyMjRkY2NmN2ExZDBiZGNkOTNjZDA5NDUwN2U3MGFmZmI0
ZWVhZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmgKQEAgLTIyNyw2ICsyMjcsNyBAQCBwdWJsaWMgc2xvdHM6CiAgICAgLy8gRW1wdHkg
c3R1YiBtZXRob2QgdG8ga2VlcCBwYXJpdHkgd2l0aCBvYmplY3QgbW9kZWwgZXhwb3NlZCBieSBn
bG9iYWwgTGF5b3V0VGVzdENvbnRyb2xsZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFsKCkge30KICAg
ICBib29sIGhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKTsKKyAgICBRU3Ry
aW5nIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpOwogCiAgICAgUVZhcmlhbnRMaXN0
IG5vZGVzRnJvbVJlY3QoY29uc3QgUVdlYkVsZW1lbnQmIGRvY3VtZW50LCBpbnQgeCwgaW50IHks
IHVuc2lnbmVkIHRvcCwgdW5zaWduZWQgcmlnaHQsIHVuc2lnbmVkIGJvdHRvbSwgdW5zaWduZWQg
bGVmdCwgYm9vbCBpZ25vcmVDbGlwcGluZyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCmluZGV4IDFkMTczMGY4YmUwOWM3
NzhkNzI1MjRmZTg2ZmIzY2VjYWY4ODYyYjIuLmEyOTg2MTI3NzQ0ZWQ5MzQzNTBjY2RlYmRhMDE4
NWI1ODkxMDVhZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAtMTQxOCw2ICsxNDE4LDEyIEBAIGJvb2wgTGF5b3V0
VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQog
ICAgIHJldHVybiByZXQ7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPigpOwor
fQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdw
b3J0KGludCAvKmRldmljZURQSSovLCBpbnQgLypkZXZpY2VXaWR0aCovLCBpbnQgLypkZXZpY2VI
ZWlnaHQqLywgaW50IC8qYXZhaWxhYmxlV2lkdGgqLywgaW50IC8qYXZhaWxhYmxlSGVpZ2h0Ki8p
CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAppbmRleCBlNmU1YzRlZWMxYzM1
N2Q3NTcxMzI3MjYzYzBmZGFlZjE4MzdhYzE4Li40NTI4YWY1NDk2OTE2ODZiNWRkMWI1NWNlNGVm
Nzc1NTdjNTljYzM0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcApAQCAtNTE2LDYgKzUxNiwxMiBAQCBib29sIExheW91dFRlc3RD
b250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQsIGludCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFy
a2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
CisgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPigpOworfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KGludCAvKmRldmlj
ZURQSSovLCBpbnQgLypkZXZpY2VXaWR0aCovLCBpbnQgLypkZXZpY2VIZWlnaHQqLywgaW50IC8q
YXZhaWxhYmxlV2lkdGgqLywgaW50IC8qYXZhaWxhYmxlSGVpZ2h0Ki8pCiB7CiAgICAgLy8gRklY
TUU6IEltcGxlbWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85649</attachid>
            <date>2011-03-13 23:52:01 -0700</date>
            <delta_ts>2011-03-14 02:29:00 -0700</delta_ts>
            <desc>Yet another attempt to build fix</desc>
            <filename>bug-56085-20110314155159.patch</filename>
            <type>text/plain</type>
            <size>70294</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA5OTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzAyYjcwMmZiYzFjOWY3MzQ0YzQ0
ZDc3NjQ3NTQyMTkzMzVhNTc3Li4wZDM2Zjk1ZTZjZGUzNzQxOGZhOWZlN2M5ZTA2ZGU0MDFhOGZm
YjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICBBZGRlZCBhbiBhc3luYyBn
cmFtbWFyIGNoZWNraW5nIHRlc3QsIHdoaWNoIGRpZG4ndCB3b3JrIGJlZm9yZSB0aGlzIGNoYWdu
ZS4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXBhc3RlLWdyYW1tYXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0wMy0xMyAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgZXhwZWN0ZWQgcmVzdWx0
cyBhZnRlciByODA5ODIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzZmMGU1ZTQ0ZTc4YjRhMzhiNTI5ODk5OTBkNGQ5MzljZjAzMGI0NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyAwIDw9IHdpbmRvdy5tYXJrZXJUZXh0
LmluZGV4T2YoJ1swLDEyXScpIGlzIHRydWUKK1BBU1MgMCA8PSB3aW5kb3cubWFya2VyVGV4dC5p
bmRleE9mKCdHcmFtbWFyJykgaXMgdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NzRlY2FkM2YwZDNlNjBmYzQ1NzZkMmEzOGM2YzRiOGQxOGYwOTQwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1t
YXIuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPCEtLSBzaG91bGQgYmUgYmFkIGdyYW1tYXIgLS0+Cis8ZGl2IGlk
PSJzb3VyY2UiIGNvbnRlbnRFZGl0YWJsZT50aGVyZSB0aGVyZS48L2Rpdj4KKzxkaXYgaWQ9InRh
cmdldCIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPHNjcmlwdD4KKworbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CitsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK01BWF9UUlkgPSAxMDsKKwordmFyIHNl
bCA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpOwordmFyIHNvdXJjZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzb3VyY2UiKTsKK3ZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4oc291cmNlKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJDb3B5Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0KTsKK2RvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJQYXN0ZSIpOworCitmdW5jdGlvbiB3YWludFVuaXRsVmVyaWZ5UGFz
c2VkKCkgeworICAgIHNlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQpOworICAgIHdpbmRvdy5t
YXJrZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0
QXNUZXh0KCk7CisgICAgaWYgKDAgPT0gd2luZG93Lm1hcmtlclRleHQubGVuZ3RoKSB7CisgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHdhaW50VW5pdGxWZXJpZnlQYXNzZWQoKTsgfSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUoIjAgPD0gd2lu
ZG93Lm1hcmtlclRleHQuaW5kZXhPZignWzAsMTJdJykiKTsKKyAgICBzaG91bGRCZVRydWUoIjAg
PD0gd2luZG93Lm1hcmtlclRleHQuaW5kZXhPZignR3JhbW1hcicpIik7CisgICAgdGFyZ2V0LnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQodGFyZ2V0KTsKKyAgICBzb3VyY2UucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChzb3VyY2UpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworc2V0VGltZW91dChmdW5jdGlvbigpIHsgd2FpbnRVbml0bFZlcmlmeVBhc3NlZCgpOyB9
LCAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGIyY2NmNGUzYWViZGYyZjI2NTQ2OGVhY2Ew
YzM5MmE2MTg2Y2Y3NWIuLmU2MGU3MDJkMjJhZWJlYjIwODQ0NmY4YTQ2YjQxOTJkOTZiZTliZmYg
MTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKQEAgLTMzNjEsNiArMzM2MSw5IEBAIEJVR1dLNTYwNzIgTUFDIFNOT1dMRU9QQVJE
IDogZmFzdC9yZXBhaW50L3JlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3VuZGFyeS5oCiBC
VUdXSzU2MDcyIE1BQyBTTk9XTEVPUEFSRCA6IGZhc3QvcmVwYWludC90ZXh0LWVtcGhhc2lzLWgu
aHRtbCA9IElNQUdFCiBCVUdXSzU2MDcyIFdJTi1WSVNUQSA6IGZhc3QvcnVieS9iYXNlLXNob3J0
ZXItdGhhbi10ZXh0Lmh0bWwgPSBGQUlMCiAKKy8vIERvZXNuJ3Qgc3VwcG9ydCBncmFtbWFyIGNo
ZWNrIHlldC4KK0JVR01PUlJJVEEgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUt
Z3JhbW1hci5odG1sID0gVEVYVAorCiAvLyBpbnRyb2R1Y2VkIGJ5IERhdmUgSHlhdHQgaW4gV0sg
cjgwNTgyCiBCVUdDUjc1NTYxIFdJTiBMSU5VWCA6IGZhc3QvYmxvY2tmbG93L3RleHQtb3JpZW50
YXRpb24tYmFzaWMuaHRtbCA9IElNQUdFK1RFWFQKIEJVR0NSNzU1NjEgTUFDIExFT1BBUkQgOiBm
YXN0L2Jsb2NrZmxvdy90ZXh0LW9yaWVudGF0aW9uLWJhc2ljLmh0bWwgPSBJTUFHRStURVhUCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDVjODZhOGZjMzAwNmJjMzE2MjAxZmEyY2NkMzMw
MDdlZmQ0MzNlZTcuLjA5ZTAyMjNiZGU5MzJjMWFiYTEwN2I1MDFlMmVhYmZkOGQyMzYxYTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0yOTksNiArMjk5LDcgQEAgbWVkaWEvbWVkaWEt
Y2FwdGlvbnMuaHRtbAogIyBEYXRhVHJhbnNmZXJJdGVtcyBpcyBub3QgeWV0IGltcGxlbWVudGVk
LgogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbAogCisKICMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKICMgVEVTVFMgRkFJTElORwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwpAQCAtMTI2NSw2ICsxMjY2LDcgQEAgbWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLmh0bWwK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzQwCiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgRm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDc1OAogIyBUaGVzZSByZXF1aXJlIERSVCBzZXRTZXJpYWxpemVIVFRQ
TG9hZHMgaW1wbGVtZW50YXRpb24gdG8gYmUgcmVsaWFibGUuCkBAIC0xMzE0LDQgKzEzMTYsNCBA
QCBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXJlZGlyZWN0Lnht
bAogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1leHRlcm5hbC1lbnRpdHktcmVk
aXJlY3QueG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MDgxCi1mYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCitmYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9Ta2lwcGVkCmluZGV4IDQwNGU4MzI3Nzc4NDZiY2ZjNWI3NGUyMWMzNTI1
N2RlMWQ5ZTU0NjAuLjg3MmJlNzVlY2Q0ODQ1Nzg3YTU5MDI0Yjk3OTFiNzU3ZWRjMjYwOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZApAQCAtOTAsNiArOTAsNyBA
QCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlZWthYmxlLXN0YWxsLmh0bWwKIAogIyBBdmFpbGFi
bGUgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHRlc3RzIHdoaWNoIHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByNjY5NjEKICMgRmFpbHVyZXMg
bG9vayBsaWtlIGFuIHVuZGVybHlpbmcgcGxhdGZvcm0gaXNzdWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy10aWdlci9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXRpZ2VyL1NraXBwZWQKaW5kZXggYWJkNzI2N2YzNzkyNTVmNzJkNjM4OWMxODU4ZDYxNjk4
ZjdkNWM1Zi4uMGYyMGMxZTA2Zjg0NGY5NjQ4OTliYzkxZDg0OGEwOTFhNDhjZTY5OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKQEAgLTIxMSw2ICsyMTEsNyBAQCBodHRw
L3Rlc3RzL21pc2MvNDAxLWFsdGVybmF0aXZlLWNvbnRlbnQucGhwCiAKICMgQXZhaWxhYmxlIG9u
bHkgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHNwZWxsaW5nIHRlc3RzIGZvciBhdXRvY29ycmVjdGlvbiBwYW5lbAogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rpb24uaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKaW5kZXggYjRkYjJiZDM2ZjhhZjE5Mjg1MDdlNWM1Yzk3YzcyZDAyZGY3
NzNmMy4uOWY1NWI2MGFlMzgzYzg5NDAxNDlkZGZiYjQwNTU3NWE4MGEwOWQ3YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xMjAxLDYgKzEyMDEsNyBAQCBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sCiAKICMgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZygpIGlzIG5vdCBpbXBsZW1lbnRlZAogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLXBhc3RlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLmh0bWwKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIGZhaWxpbmcgZWRpdGlu
Zy9zdHlsZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBiMzYxYzYyNTlmOWEx
MDBmMDY5YWU5Y2FhMTBhNzgzYzU2NDhiNmMzLi4zZWI1N2FkYjc4ODM4OTQ4NjI4MzRlZDc2Zjk3
NDc1ZjgyNDU3ZWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtOTc1LDYgKzk3NSw3
IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAogCiAjIEVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKSBpcyBub3QgaW1wbGVtZW50ZWQKIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgSW5kZXhlZERCIGlzIG5vdCB5ZXQgZW5hYmxl
ZC4KIHN0b3JhZ2UvaW5kZXhlZGRiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNjYjcyM2VlZTA0ZTg1NmJhZjgw
OTJiMGE3MWVhZTUzMzFmOGUzZS4uMTQ3N2JjMmU4NDJiY2ZhZjM3NWVhODlkNWYyMDkxODM3YzUw
YmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisgICAgICAgIAorICAgICAgICBS
ZW1vdmVkIFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQgYW5kIHJlcGxhY2VkIGl0IHdpdGgg
VGV4dENoZWNraW5nUmVzdWx0LgorICAgICAgICBUaGlzIGNoYW5nZSByZXZlYWxlZCB0aGF0IFRl
eHRDaGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpIHNob3VsZCBoYXZlCisg
ICAgICAgIGFkZGl0aW9uYWwgcmVxdWVzdCB0eXBlIHBhcmFtZXRlciB0aHVzIGFkZGVkIGl0Lgor
CisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyQXNUZXh0KTog
c3RhdGljIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya2Vy
c0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KTogQWRkZWQuIEEgaGVscGVyIGZvciB0ZXN0aW5nLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0Zvcik6IEV4dHJh
Y3RlZCBmcm9tIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoKQorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3Ip
OiBBZGRlZCBhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6bWFy
a0F0KTogRXh0cmFjdGVkIGZyb20gZGlkQ2hlY2soKSwgQWRkZWQgYSBjaGVjayBmb3IgdGhlIEdy
YW1tYXJEZXRhaWwgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRD
aGVjayk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xp
ZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRD
aGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oOgorCiAyMDExLTAzLTEzICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGIzZmVkYzE0NDgyNjkyN2MwNTg1ZWUwN2ZiN2ZlYmQ5ZmYyYjA5YmEuLjRl
ZmNjMWZmMGVhZmRhMjhhOWVjMTJhZWYzMzA0ZmEwYjkyNzRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0yOTMsNyArMjkzLDcgQEAgX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXI2YXBwZW5k
RVBLY2oKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyQzFFUEtjaQogX19aTjdXZWJDb3JlMTJT
aGFyZWRCdWZmZXJDMUV2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKLV9fWk43V2Vi
Q29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOVNwZWxsQ2hl
Y2tpbmdSZXN1bHRFTG0wRUVFCitfX1pON1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0Vp
UktOM1dURjZWZWN0b3JJTlNfMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUVFCiBfX1pON1dlYkNv
cmUxMlRleHRFbmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3IxMXJhbmdlTGVuZ3RoRVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRFaWliCkBAIC0xMjA1
LDYgKzEyMDUsNyBAQCBfX1pOSzdXZWJDb3JlNkVkaXRvcjE3c2VsZWN0aW9uSGFzU3R5bGVFaVJL
TjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTZFZGl0b3IxN3Nob3VsZERlbGV0ZVJhbmdlRVBO
U181UmFuZ2VFCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjIzZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb25F
UmpTMV8KIF9fWk5LN1dlYkNvcmU2RWRpdG9yMzBhcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1l
bnRFdgorX19aTks3V2ViQ29yZTZFZGl0b3IzMG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjMxZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjM0c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtl
ckZvckVpaQogX19aTks3V2ViQ29yZTZFZGl0b3IzN2Jhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2Vs
ZWN0aW9uU3RhcnRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhh
NDM5MTBhOWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLmU3ZGRkNGE4YzY2ZDU3MWM5YTVjNTQxM2Nk
OGUwODIwNjlhNTVmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTY0LDcgKzY0
LDYgQEAKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJSZW1vdmVGb3JtYXRDb21tYW5kLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTQ0MCw3ICs0MzksNyBAQCB2b2lkIEVkaXRv
cjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50LAogCiAgICAgTm9kZSogbm9kZVRvQ2hlY2sgPSBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmIChtX3NwZWxsQ2hlY2tlci0+Y2Fu
Q2hlY2tBc3luY2hyb25vdXNseShub2RlVG9DaGVjaykpCi0gICAgICAgIG1fc3BlbGxDaGVja2Vy
LT5yZXF1ZXN0Q2hlY2tpbmdGb3Iobm9kZVRvQ2hlY2spOworICAgICAgICBtX3NwZWxsQ2hlY2tl
ci0+cmVxdWVzdENoZWNraW5nRm9yKHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKE1hcmtTcGVsbGlu
ZyB8IE1hcmtHcmFtbWFyKSwgbm9kZVRvQ2hlY2spOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFj
ZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNl
bWVudCwgYm9vbCBzbWFydFJlcGxhY2UpCkBAIC0yMjcwLDI2ICsyMjY5LDggQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
T3B0aW9ucyB0ZXh0Q2gKICAgICB9CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBy
ZXN1bHRzOwotICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMgPSAwOwotICAgIGlmIChzaG91bGRN
YXJrU3BlbGxpbmcpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nOwotICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKLSAgICAgICAgY2hlY2tpbmdUeXBl
cyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rp
b25QYW5lbCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbjsKLSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7Ci0gICAgICAgIGlmIChp
c0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGVMaW5rOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4
dENoZWNraW5nVHlwZVF1b3RlOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdU
eXBlRGFzaDsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgp
KQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1l
bnQ7Ci0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uOwotICAgIH0KLSAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1Rl
eHRPZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRM
ZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CisgICAgdGV4dENoZWNrZXIoKS0+Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFncmFwaC50
ZXh0TGVuZ3RoKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHRDaGVja2luZ1R5cGVNYXNrRm9yKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKIAog
I2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICAvLyBJZiB0aGlzIGNoZWNraW5n
IGlzIG9ubHkgZm9yIHNob3dpbmcgY29ycmVjdGlvbiBwYW5lbCwgd2Ugc2hvdWxkbid0IGJvdGhl
ciB0byBtYXJrIG1pc3NwZWxsaW5ncy4KQEAgLTM1OTAsMTAgKzM1NzEsOTEgQEAgYm9vbCBFZGl0
b3I6OnNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZyb20sIGludCBsZW5n
dGgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgU3RyaW5nIG1hcmtlckFz
VGV4dChjb25zdCBEb2N1bWVudE1hcmtlciYgbWFya2VyKQoreworICAgIFN0cmluZyByZXN1bHQ7
CisgICAgaWYgKERvY3VtZW50TWFya2VyOjpTcGVsbGluZyAmIG1hcmtlci50eXBlKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCJTcGVsbGluZyAiKTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIgJiBtYXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiR3JhbW1hciAiKTsK
KyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCAmIG1hcmtlci50eXBlKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCJUZXh0TWF0Y2ggIik7CisgICAgaWYgKERvY3VtZW50TWFya2VyOjpS
ZXBsYWNlbWVudCAmIG1hcmtlci50eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJSZXBsYWNl
bWVudCAiKTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IgJiBt
YXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiQ29ycmVjdGlvbkluZGljYXRvciAi
KTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlJlamVjdGVkQ29ycmVjdGlvbiAmIG1hcmtlci50
eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJSZWplY3RlZENvcnJlY3Rpb24gIik7CisgICAg
aWYgKERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uICYgbWFya2VyLnR5cGUp
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gIik7CisgICAg
cmVzdWx0LmFwcGVuZCgiWyIpOworICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIobWFy
a2VyLnN0YXJ0T2Zmc2V0KSk7CisgICAgcmVzdWx0LmFwcGVuZCgiLCIpOworICAgIHJlc3VsdC5h
cHBlbmQoU3RyaW5nOjpudW1iZXIobWFya2VyLmVuZE9mZnNldCkpOworICAgIHJlc3VsdC5hcHBl
bmQoIl0iKTsKKyAgICBpZiAoIW1hcmtlci5kZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiKCIpOworICAgICAgICByZXN1bHQuYXBwZW5kKG1hcmtlci5kZXNj
cmlwdGlvbik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIikiKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitTdHJpbmcgRWRpdG9yOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRB
c1RleHQoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSBmaW5kRmlyc3RNYXJrYWJsZShtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICBpZiAoIW5v
ZGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyByZXN1bHQ7CisgICAg
VmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtYXJrZXJBc1Rl
eHQobWFya2Vyc1tpXSkpOworICAgICAgICBpZiAoaSArIDEgPCBtYXJrZXJzLnNpemUoKSkKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiBGbG9hdFJlY3QgRWRpdG9yOjp3aW5kb3dSZWN0Rm9yUmFuZ2UoY29uc3QgUmFuZ2Uq
IHJhbmdlKSBjb25zdAogewogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lKCktPnZpZXcoKTsK
ICAgICByZXR1cm4gdmlldyA/IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UmVjdChyYW5nZS0+
Ym91bmRpbmdSZWN0KCkpKSA6IEZsb2F0UmVjdCgpOwogfSAgICAgICAgCiAKK1RleHRDaGVja2lu
Z1R5cGVNYXNrIEVkaXRvcjo6dGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0
aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zKQoreworICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5n
ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKKyAgICBib29sIHNob3VsZE1h
cmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOworICAgIGJvb2wg
c2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93Q29y
cmVjdGlvblBhbmVsOworCisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9
IDA7CisgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKKyAgICAgICAgY2hlY2tpbmdUeXBlcyB8
PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQor
ICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGlm
IChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQorICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAg
ICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQ
ZXJmb3JtUmVwbGFjZW1lbnQ7CisgICAgaWYgKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCkgewor
ICAgICAgICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAg
ICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgaWYgKGlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2lu
Z1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgaWYgKGlzQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNl
bWVudEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZVJlcGxhY2VtZW50OworICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIGlzQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICB9CisjZW5kaWYKKworICAg
IHJldHVybiBjaGVja2luZ1R5cGVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZlMjE1NDA4
NWM1NjllLi44YmU0NzM2MGRiMmI2Y2ZiY2E0YWE1NWZkZDI4MzRlYWI4MDkyNGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFZGl0b3JJbnNl
cnRBY3Rpb24uaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlbGVjdGlv
bkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIldyaXRp
bmdEaXJlY3Rpb24uaCIKQEAgLTYyLDcgKzYzLDYgQEAgY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNz
IFNpbXBsZUZvbnREYXRhOwogY2xhc3MgU3BlbGxDaGVja2VyOwogY2xhc3MgVGV4dDsKLWNsYXNz
IFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRp
b25VbmRlcmxpbmUgewpAQCAtMjIyLDYgKzIyMiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJr
TWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJz
dE1pc3NwZWxsaW5nUmFuZ2UpOwogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pOworCisgICAgZW51bSBU
ZXh0Q2hlY2tpbmdPcHRpb25GbGFncyB7CisgICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwK
KyAgICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCisgICAgICAgIFBlcmZvcm1SZXBsYWNlbWVu
dCA9IDEgPDwgMiwKKyAgICAgICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKKyAgICB9
OworICAgIHR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nT3B0aW9uczsKKwogI2lmIFBMQVRG
T1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CiAgICAgdm9pZCBsb3dl
cmNhc2VXb3JkKCk7CkBAIC0yMzksMTQgKzI0OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2ds
ZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb24oKTsKLSAgICBlbnVtIFRleHRDaGVja2luZ09wdGlvbkZsYWdzIHsKLSAgICAgICAg
TWFya1NwZWxsaW5nID0gMSA8PCAwLAotICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKLSAg
ICAgICAgUGVyZm9ybVJlcGxhY2VtZW50ID0gMSA8PCAyLAotICAgICAgICBTaG93Q29ycmVjdGlv
blBhbmVsID0gMSA8PCAzLAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tp
bmdPcHRpb25zOwotCiAgICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSog
Z3JhbW1hclJhbmdlKTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogI2VuZGlmCkBAIC0zNzgsNiArMzc5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAj
ZW5kaWYKIAorICAgIFN0cmluZyBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKSBjb25z
dDsKICAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZyb20s
IGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlU3BlbGxBbmRDb3JyZWN0aW9uTWFy
a2Vyc0Zyb21Xb3Jkc1RvQmVFZGl0ZWQoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3Jk
Qm91bmRhcnkpOwogCkBAIC00MTEsNiArNDEzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAgICB2b2lkIHJldmVhbFNlbGVj
dGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc09y
QmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nLCBS
ZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOworICAgIFRleHRDaGVja2luZ1R5
cGVNYXNrIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMpOwogCiAg
ICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IDc5ODhlNDE2MTBhNTE5YjZhNWNiMjYzMGM2MTBl
YmVhOGZhZTVmMjEuLmY1MjRhMmY0ODk3NjIzNGRlNjY3ZmU4OGRjOWY0ODY0M2M3YjdjZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTEwMCwxMyArMTAwLDE1
IEBAIGJvb2wgU3BlbGxDaGVja2VyOjppc0NoZWNrYWJsZShOb2RlKiBub2RlKSBjb25zdAogICAg
IHJldHVybiBub2RlICYmIG5vZGUtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2Vy
OjpyZXF1ZXN0Q2hlY2tpbmdGb3IoTm9kZSogbm9kZSkKK3ZvaWQgU3BlbGxDaGVja2VyOjpyZXF1
ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQoY2FuQ2hlY2tBc3luY2hyb25vdXNseShub2RlKSk7CisgICAgLy8gQ3VycmVu
dGx5IHdlIG9ubHkgc3VwcG9ydHMgc3BlbGxpbmcgYW5kIGdyYW1tYXIKKyAgICBBU1NFUlQoISht
YXNrICYgfihUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cikpKTsKIAogICAgIGlmICghaW5pdFJlcXVlc3Qobm9kZSkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NsaWVudC0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVu
Y2UsIG1fcmVxdWVzdFRleHQpOworICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyh0aGlzLCBtX3JlcXVlc3RTZXF1ZW5jZSwgbWFzaywgbV9yZXF1ZXN0VGV4dCk7CiB9CiAKIHN0
YXRpYyBib29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50
IGRpc3RhbmNlKQpAQCAtMTMxLDcgKzEzMywyNyBAQCBzdGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0
b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0b3IsIGludCBkaXN0YW5jZSkKICAgICByZXR1cm4g
ZmFsc2U7ICAgIAogfQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNl
LCBjb25zdCBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitib29sIFNwZWxs
Q2hlY2tlcjo6bWFya0F0KGNvbnN0IFBvc2l0aW9uSXRlcmF0b3ImIHN0YXJ0LCBpbnQgbG9jYXRp
b24sIGludCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24pIGNvbnN0Cit7CisgICAgUG9zaXRpb25JdGVyYXRvciBlbmQgPSBz
dGFydDsKKyAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIGxlbmd0aCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIFVzZXJzIG9yIEphdmFTY3JpcHQgYXBwbGljYXRpb25zIG1h
eSBjaGFuZ2UgdGV4dCB3aGlsZSBhIHNwZWxsLWNoZWNrZXIgY2hlY2tzIGl0cworICAgIC8vIHNw
ZWxsaW5ncyBpbiB0aGUgYmFja2dyb3VuZC4gVG8gYXZvaWQgYWRkaW5nIG1hcmtlcnMgdG8gdGhl
IHdvcmRzIG1vZGlmaWVkIGJ5IHVzZXJzIG9yCisgICAgLy8gSmF2YVNjcmlwdCBhcHBsaWNhdGlv
bnMsIHJldHJpZXZlIHRoZSB3b3JkcyBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBhbmQgY29tcGFy
ZSB0aGVtIHdpdGgKKyAgICAvLyB0aGUgb3JpZ2luYWwgb25lcy4KKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX3JlcXVlc3ROb2RlLT5kb2N1bWVudCgpLCBzdGFydCwg
ZW5kKTsKKworICAgIC8vIEZJWE1FOiBVc2UgdGV4dENvbnRlbnQoKSBjb21wYXRpYmxlIHN0cmlu
ZyBjb252ZXJzaW9uLgorICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHJhbmdlLT50ZXh0KCk7Cisg
ICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vic3RyaW5nKGxvY2F0aW9uLCBsZW5n
dGgpOworICAgIGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCisgICAgICAgIG1fcmVxdWVzdE5v
ZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLmdldCgpLCB0eXBlLCBk
ZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlbGxDaGVja2VyOjpk
aWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKQogewogICAgIGlmICghaXNWYWxpZChzZXF1ZW5jZSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE0NCwzMCArMTY2LDM2IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2Vx
dWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYgcmVzCiAgICAgaW50IHN0
YXJ0T2Zmc2V0ID0gMDsKICAgICBQb3NpdGlvbkl0ZXJhdG9yIHN0YXJ0ID0gZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKG1fcmVxdWVzdE5vZGUuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXS50
eXBlKCkgIT0gRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nICYmIHJlc3VsdHNbaV0udHlwZSgpICE9
IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKQorICAgICAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBz
dXBwb3J0cyBzcGVsbGluZyBhbmQgZ3JhbW1hcgorICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBl
ICYgfihUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBUbyBhdm9pZCBtb3ZpbmcgdGhl
IHBvc2l0aW9uIGJhY2t3YXJkLCB3ZSBhc3N1bWUgdGhlIGdpdmVuIHJlc3VsdHMgYXJlIHNvcnRl
ZCB3aXRoCiAgICAgICAgIC8vIHN0YXJ0T2Zmc2V0IGFzIHRoZSBvbmVzIHJldHVybmVkIGJ5IFtO
U1NwZWxsQ2hlY2tlciByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzpdLgotICAgICAgICBBU1NFUlQo
c3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbigpKTsKLSAgICAgICAgaWYgKCFmb3J3
YXJkSXRlcmF0b3Ioc3RhcnQsIHJlc3VsdHNbaV0ubG9jYXRpb24oKSAtIHN0YXJ0T2Zmc2V0KSkK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQb3NpdGlvbkl0ZXJhdG9yIGVuZCA9IHN0YXJ0
OwotICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIHJlc3VsdHNbaV0ubGVuZ3RoKCkp
KQorICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbik7Cisg
ICAgICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uIC0g
c3RhcnRPZmZzZXQpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAo
cmVzdWx0c1tpXS50eXBlICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSB7CisgICAgICAgICAg
ICBpZiAoIW1hcmtBdChzdGFydCwgcmVzdWx0c1tpXS5sb2NhdGlvbiwgcmVzdWx0c1tpXS5sZW5n
dGgsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgU3RyaW5nKCkpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSAmIFRleHRD
aGVja2luZ1R5cGVHcmFtbWFyKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IHJlc3VsdHNbaV0uZGV0YWlscy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIFBvc2l0
aW9uSXRlcmF0b3IgZ3JhbW1hclN0YXJ0ID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKCFm
b3J3YXJkSXRlcmF0b3IoZ3JhbW1hclN0YXJ0LCByZXN1bHRzW2ldLmRldGFpbHNbal0ubG9jYXRp
b24gLSBzdGFydE9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIFBvc2l0aW9uSXRlcmF0b3IgZ3JhbW1hckVuZCA9IGdy
YW1tYXJTdGFydDsKKyAgICAgICAgICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihncmFtbWFy
RW5kLCByZXN1bHRzW2ldLmRldGFpbHNbal0ubGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKCFtYXJrQXQoZ3JhbW1hclN0YXJ0LCByZXN1bHRz
W2ldLmRldGFpbHNbal0ubG9jYXRpb24sIHJlc3VsdHNbaV0uZGV0YWlsc1tqXS5sZW5ndGgsIERv
Y3VtZW50TWFya2VyOjpHcmFtbWFyLCByZXN1bHRzW2ldLmRldGFpbHNbal0udXNlckRlc2NyaXB0
aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KIAotICAgICAgICAvLyBVc2VycyBvciBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucyBtYXkgY2hh
bmdlIHRleHQgd2hpbGUgYSBzcGVsbC1jaGVja2VyIGNoZWNrcyBpdHMKLSAgICAgICAgLy8gc3Bl
bGxpbmdzIGluIHRoZSBiYWNrZ3JvdW5kLiBUbyBhdm9pZCBhZGRpbmcgbWFya2VycyB0byB0aGUg
d29yZHMgbW9kaWZpZWQgYnkgdXNlcnMgb3IKLSAgICAgICAgLy8gSmF2YVNjcmlwdCBhcHBsaWNh
dGlvbnMsIHJldHJpZXZlIHRoZSB3b3JkcyBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBhbmQgY29t
cGFyZSB0aGVtIHdpdGgKLSAgICAgICAgLy8gdGhlIG9yaWdpbmFsIG9uZXMuCi0gICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVxdWVzdE5vZGUtPmRvY3VtZW50
KCksIHN0YXJ0LCBlbmQpOwotICAgICAgICAvLyBGSVhNRTogVXNlIHRleHRDb250ZW50KCkgY29t
cGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KLSAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0g
cmFuZ2UtPnRleHQoKTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vi
c3RyaW5nKHJlc3VsdHNbaV0ubG9jYXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSk7Ci0gICAg
ICAgIGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCi0gICAgICAgICAgICBtX3JlcXVlc3ROb2Rl
LT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgcmVzdWx0c1tp
XS50eXBlKCkpOwotCi0gICAgICAgIHN0YXJ0T2Zmc2V0ID0gcmVzdWx0c1tpXS5sb2NhdGlvbigp
OworICAgICAgICBzdGFydE9mZnNldCA9IHJlc3VsdHNbaV0ubG9jYXRpb247CiAgICAgfQogCiAg
ICAgY2xlYXJSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRl
eCBkMzk0MGU1MDRmYWE0NmE5NjVjNzM4MDRiNTljZjcxMWY3NmRjYmY4Li5kMDk3OWVmZjJkMjUx
N2FjNTJlYTg3ZGE2NDk2ZjUwYTdkY2ZkOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxD
aGVja2VyLmgKQEAgLTI3LDMyICsyNywxNCBAQAogI2RlZmluZSBTcGVsbENoZWNrZXJfaAogCiAj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBOb2RlOwotCi1j
bGFzcyBTcGVsbENoZWNraW5nUmVzdWx0IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVsbENo
ZWNraW5nUmVzdWx0KERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUgPSBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmcsIGludCBsb2NhdGlvbiA9IDAsIGludCBsZW5ndGggPSAwKQotICAgICAg
ICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCi0gICAgICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQotICAgIHsKLSAgICB9Ci0KLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9IAotICAgIGludCBsb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLQotcHJpdmF0ZToKLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSBtX3R5cGU7Ci0gICAgaW50IG1fbG9jYXRpb247Ci0gICAgaW50IG1fbGVuZ3Ro
OwotfTsKK2NsYXNzIFBvc2l0aW9uSXRlcmF0b3I7CiAKIGNsYXNzIFNwZWxsQ2hlY2tlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3BlbGxDaGVja2VyKTsKQEAgLTY1LDEyICs0NywxMyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1c3koKSBjb25zdDsKICAgICBib29sIGlzVmFsaWQoaW50
IHNlcXVlbmNlKSBjb25zdDsKICAgICBib29sIGlzQ2hlY2thYmxlKE5vZGUqKSBjb25zdDsKLSAg
ICB2b2lkIHJlcXVlc3RDaGVja2luZ0ZvcihOb2RlKik7Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQg
c2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYpOworICAgIHZvaWQg
cmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrLCBOb2RlKik7CisgICAgdm9p
ZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
Jik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpbml0UmVxdWVzdChOb2RlKik7CiAgICAgdm9pZCBj
bGVhclJlcXVlc3QoKTsKKyAgICBib29sIG1hcmtBdChjb25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBz
dGFydCwgaW50IGxvY2F0aW4sIGludCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKSBjb25zdDsKIAogICAgIEZyYW1lKiBtX2ZyYW1l
OwogICAgIFRleHRDaGVja2VyQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAppbmRleCBlZDkyZjExMmNiYTg3N2ZkNTJjMzQ2NDA3ZjViNGZmZTI2MTIwZjZj
Li40NmFlMTUyYmNlMDgwODk2ZTM4MzA4ZDI5NGZkOGU3MDk1ZjU3NWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00MDcsMTEgKzQwNywxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0
b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFy
KiwgaW50LCB1aW50NjRfdCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CisgICAg
dmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIq
LCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KIH07CiAKIGNs
YXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKaW5kZXggYWNhYTAy
Y2Y2MmEwNzBmOTBjZjk0YzZlMTI2YzVkMGQ2N2JmYmI4ZS4uOGIxZDgxMjIyNGY1NTU2YmNmODk2
MzdlOTRjZGYwYjZhMmRiMmQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENoZWNrZXJDbGllbnQuaApAQCAtNTMsNiArNTMsOCBAQCBlbnVtIFRleHRDaGVja2lu
Z1R5cGUgewogICAgIFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICA9IDEgPDwgOQogfTsKIAor
dHlwZWRlZiB1aW50NjRfdCBUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKwogc3RydWN0IFRleHRDaGVj
a2luZ1Jlc3VsdCB7CiAgICAgVGV4dENoZWNraW5nVHlwZSB0eXBlOwogICAgIGludCBsb2NhdGlv
bjsKQEAgLTcxLDE0ICs3MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0
b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVs
bGVkV29yZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25z
dCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3Jh
bW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpID0gMDsKICNpZiBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBV
Q2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEZvciBzcGVsbGNoZWNrZXJzIHRoYXQgc3VwcG9y
dCBtdWx0aXBsZSBsYW5ndWFnZXMsIGl0J3Mgb2Z0ZW4gaW1wb3J0YW50IHRvIGJlIGFibGUgdG8g
aWRlbnRpZnkgdGhlIGxhbmd1YWdlIGluIG9yZGVyIHRvCiAgICAgLy8gcHJvdmlkZSBtb3JlIGFj
Y3VyYXRlIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuIENhbGxlciBjYW4gcGFzcyBpbiBtb3JlIHRl
eHQgaW4gImNvbnRleHQiIHRvIGFpZCBzdWNoIHNwZWxsY2hlY2tlcnMgb24gbGFuZ3VhZ2UKICAg
ICAvLyBpZGVudGlmaWNhdGlvbi4gTm9yYW1sbHkgaXQncyB0aGUgdGV4dCBzdXJyb3VuZGluZyB0
aGUgIndvcmQiIGZvciB3aGljaCB3ZSBhcmUgZ2V0dGluZyBjb3JyZWN0aW9uIHN1Z2dlc3Rpb25z
LgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQs
IGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50
LCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0
cmluZyYpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjFlMzk2
NDYyNjcxZDE1NjI5YWMyMGM0ZDAyNTc5NjZlOWQwNmZkNC4uZTIyOGRiZDNlYWJmNDlkNzUzMmQ4
OTFiYTliYzlmYWJmNmFiZDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENo
ZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjA4NQorCisgICAgICAgIEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgorICAg
ICAgICAKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9F
ZGl0b3JDbGllbnRJbXBsLmNwcDoKKwogMjAxMS0wMy0xMSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUm9sbG91dCB0aGUgY2hyb21pdW0gZGVwcyByb2xsIGFz
IGl0IGFkZHMgYSBkZXBlbmRlbmN5IG9uIGEgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDM4ZDRmNWVmODkyMzllMDQ1YWFm
NWYwZjkxMzQ3MjZhMzhhNjIyOTkuLjA2ZTk4YTI3MmJlM2U4NWFjZTI3MTM0NzY2MjVlOTUwN2U0
MGEyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudElt
cGwuY3BwCkBAIC04NzEsNyArODcxLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgICAgICpt
aXNzcGVsbGluZ0xlbmd0aCA9IHNwZWxsTGVuZ3RoOwogfQogCi12b2lkIEVkaXRvckNsaWVudElt
cGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiAgICAgbV93ZWJW
aWV3LT5jbGllbnQoKS0+cmVxdWVzdENoZWNraW5nT2ZUZXh0KHRleHQsIG5ldyBXZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uSW1wbChpZGVudGlmaWVyLCBzZW5kZXIpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAppbmRleCBiODFmYjU2MDU0MzBi
ZjJmNWYzM2RlNDg3NGMwYjY2ZjZmN2NjNDZlLi4yZWJjNmVhNTgwNGIyNTNmYmU0MTYzODY3NDVi
OTg3MTE3YWFmZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xp
ZW50SW1wbC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3Qg
V1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
V2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgY29uc3QgV1RGOjpTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dENoZWNr
ZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggYmJlMmQwZDc0MDA0NTQzNDY1NGJlYzQ4ZWU0YjY5ZTkxNjk5NjI2YS4uOTk5NTMxMGEw
OWY2MDg2ODJiZDU2NTE3MmNlNjUzZWQ2ZGM5NTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZh
Y3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0
Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU2MDg1CisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMTIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaAppbmRleCA1NzVh
NTBkMjUzZDI5NDA2YzQ2ZDhhMzRjYWYzNjhlYmFkOGFlNzY3Li41NmIzMzAwMmVhYTE3YTg1Yjli
MzcwMTY5ZDhiZDg0NzNmZGMzYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBj
b25zdCBTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3Qg
V1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVN
YXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVu
dCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKaW5kZXggNDNjNzRmM2EwN2M2MjNkZjg3NDFhN2UxZmU5YTU0ZDcwZGM0OTEyMy4uOTU1M2Jj
NjcyNmE0ZTIwY2VkYjk4NzMxMWE0MGZmNGU4YjU4NjhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtS
ZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBU
ZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNs
aWVudEVuY2hhbnQuaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXJDbGllbnRFbmNoYW50
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMTEgIE1hcmNvIFBlZXJlYm9v
bSAgPG1hcmNvQHBlZXJlYm9vbS51cz4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5v
cm9uaGEgU2lsdmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCmluZGV4IGMyOTRhM2QwMGYyZGRlNTA2
YWFkYTYwNDcxNGEwNWI1ZGQ0NDg3NjEuLjVkOTNjMDcyMTZkOTk1YmZlMzZjYWZhZGQ5OTBjMGE3
ODJmNTJkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Rl
eHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNz
IFRleHRDaGVja2VyQ2xpZW50RW5jaGFudCA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0Q2hlY2tlckNs
aWVudCB7CiAgICAgICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0
aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgV1RG
OjpWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlv
biwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNz
ZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogCiAgICAgICAgIHZvaWQg
dXBkYXRlU3BlbGxDaGVja2luZ0xhbmd1YWdlKGNvbnN0IGNoYXIqKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgZnJlZVNwZWxsQ2hlY2tpbmdMYW5ndWFnZShncG9pbnRlciwgZ3BvaW50ZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwppbmRleCBiMmFlZmNlOGRkODhmNmJhZDk0NDI5ZTBjN2E2MzFiNzViYjNi
YWIzLi40ODBjZmY2ZGY2NmQ4OGQ0YjA3MDkxMTZmN2M3MjMwNjg1MTUyMDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUg
cmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRIYWlrdS5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50SGFp
a3U6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0wNyAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50SGFpa3UuaCBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50SGFpa3UuaAppbmRleCBiYjBkOGFjMTA1ZmNlMjIxNTdhNzAyMDZhYTRjMTRlYzU5MDdhMGI1
Li5jYzIxZmNiODZmMjkxOTRlYTNlODE0ZmEwNTczZDVlNjRjY2JhMTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKKysr
IGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5o
CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgRWRpdG9yQ2xpZW50SGFpa3UgOiBwdWJsaWMgRWRp
dG9yQ2xpZW50LCBwdWJsaWMgVGV4dENoZWNrZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNv
bnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHdp
bGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1l
dGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpIHt9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBp
bnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7fQogICAg
ICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRo
aXM7IH0KIAogICAgICAgICBib29sIGlzRWRpdGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGVlZjE2Yjg2NzI4NTQ1MmQzMzUyMWZmYjNmY2NiYThlYjExZGU0NzUuLmY4ZTcwMjkxZThl
NjIxZTcwYTQ2M2RiOTU0NzhkNjkxYzU1YTIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNSBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENo
ZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjA4NQorCisgICAgICAgIFJlbW92ZWQgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgdG8gU3Bl
bGxDaGVja2luZ1Jlc3VsdCBjb252ZXJ0aW9uLCBhbmQgZXh0cmFjdGVkCisgICAgICAgIE5TVGV4
dENoZWNraW5nUmVzdWx0IHRvIFRleHRDaGVja2luZ1Jlc3VsdCBjb252ZXJ0aW8gZnJvbSBjaGVj
a1RleHRPZlBhcmFncmFwaCBtZXRob2QuCisgICAgICAgIGZvciByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyBtZXRob2QuCisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToK
KyAgICAgICAgKHRvQ29yZVRleHRDaGVja2luZ1Jlc3VsdHMpOgorICAgICAgICAoV2ViRWRpdG9y
Q2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICgtW1dlYkVkaXRvclNwZWxs
Q2hlY2tSZXNwb25kZXIgaW5pdFdpdGhTZW5kZXI6V2ViQ29yZTo6c2VxdWVuY2U6dHlwZXM6V2Vi
Q29yZTo6cmVzdWx0czpdKToKKyAgICAgICAgKC1bV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRl
ciBwZXJmb3JtXSk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJG
cmFtZSBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHRdKToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkZyYW1lUHJpdmF0ZS5oOgorCiAyMDExLTAzLTEzICBQcmF0aWsgU29sYW5raSAgPHBzb2xh
bmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmlu
ZGV4IDFmYTEzMmFkNmM1YmQ0Mzc5ZmUwYmI4NWM5ZTZmZjBkNjZiMTE3MzUuLjI3NzEzOWVmNjg1
ZGNjNTQxN2EyYTFjMTQyOTM5MGI2MmMyOWExYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMzAsNyArMTMwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNo
YXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxp
bmdMZW5ndGgpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0
aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBXVEY6OlZl
Y3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBp
bnQqIGJhZEdyYW1tYXJMZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFn
cmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBl
cywgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7Cisg
ICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBp
bnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBX
VEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7
CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdyk7CkBAIC0xMzgsNyAr
MTM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25z
dCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9v
bCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOwog
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdmlydHVh
bCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6
UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNl
ZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0
cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYg
YWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIFdlYkNvcmU6OkVkaXRvciopOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21p
c3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IDY5ZGQ1NzQ3MzFiNDRiNDMwYzI3NDU4
ZTcyM2I0MWM0ZGU1MTc0YjAuLjk3OWQ3YjQ3N2M0ZGZjNTc0ZTE4MjdhMTBiMWExZDQ2YzAyMjJj
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KQEAgLTc5NCwxMiArNzk0LDkgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBWZWN0b3IK
ICNlbmRpZgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
Y29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQotewogI2lmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIE5TU3Ry
aW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9D
b3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpO
T107Ci0gICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFy
ZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6KGNoZWNraW5nVHlwZXN8TlNUZXh0Q2hlY2tp
bmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3Bl
bGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpOVUxMIHdvcmRDb3VudDpOVUxMXTsK
LSAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKK3N0YXRpYyB2b2lkIHRvQ29yZVRleHRDaGVja2lu
Z1Jlc3VsdHMoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzLCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBj
aGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKICAg
ICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0ICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jl
c3VsdHMpIHsKICAgICAgICAgTlNSYW5nZSByZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCBy
YW5nZV07CiAgICAgICAgIE5TVGV4dENoZWNraW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5n
UmVzdWx0IHJlc3VsdFR5cGVdOwpAQCAtODcxLDYgKzg2OCwxNiBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgs
IHVpbnQ2NAogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfQog
ICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2luZ1R5cGVNYXNr
IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorewor
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQorICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5ndGg6bGVu
Z3RoIGZyZWVXaGVuRG9uZTpOT107CisgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcg
cmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6KGNoZWNraW5n
VHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpOVUxM
IHdvcmRDb3VudDpOVUxMXTsKKyAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKKyAgICB0b0NvcmVU
ZXh0Q2hlY2tpbmdSZXN1bHRzKGluY29taW5nUmVzdWx0cywgY2hlY2tpbmdUeXBlcywgcmVzdWx0
cyk7CiAjZW5kaWYKIH0KIApAQCAtMTAxNyw1OCArMTAyNCwzNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKQogewogICAgIFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciogX3NlbmRlcjsKICAgICBpbnQgX3NlcXVlbmNlOworICAgIFRleHRDaGVja2luZ1R5cGVN
YXNrIF90eXBlczsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gX3Jlc3VsdHM7CiB9Ci0tIChpZClp
bml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGlu
dClzZXF1ZW5jZSByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzOworLSAoaWQpaW5pdFdpdGhTZW5k
ZXI6KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2Ug
dHlwZXM6KFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrKXR5cGVzIHJlc3VsdHM6KE5TQXJy
YXkqKXJlc3VsdHM7CiAtICh2b2lkKXBlcmZvcm07Ci0tIChXVEY6OlZlY3RvcjxXZWJDb3JlOjpT
cGVsbENoZWNraW5nUmVzdWx0PikgX2NvcmVSZXN1bHRzOwogQGVuZAogCiBAaW1wbGVtZW50YXRp
b24gV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlcgotLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdl
YkNvcmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgcmVzdWx0
czooTlNBcnJheSopcmVzdWx0cworLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNwZWxs
Q2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgdHlwZXM6KFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVNYXNrKXR5cGVzIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHMKIHsKICAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICBfc2VuZGVyID0gc2VuZGVyOwogICAgIF9zZXF1ZW5jZSA9IHNlcXVlbmNlOworICAg
IF90eXBlcyA9IHR5cGVzOwogICAgIF9yZXN1bHRzID0gcmVzdWx0czsKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIAogLSAodm9pZClwZXJmb3JtCiB7Ci0gICAgX3NlbmRlci0+ZGlkQ2hlY2soX3NlcXVl
bmNlLCBbc2VsZiBfY29yZVJlc3VsdHNdKTsKLX0KLQotc3RhdGljIFNwZWxsQ2hlY2tpbmdSZXN1
bHQgdG9Db3JlU3BlbGxpbmdSZXN1bHQoTlNUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCkKLXsK
LSAgICBOU1RleHRDaGVja2luZ1R5cGUgdHlwZSA9IFtyZXN1bHQgcmVzdWx0VHlwZV07Ci0gICAg
TlNSYW5nZSByYW5nZSA9IFtyZXN1bHQgcmFuZ2VdOwotICAgIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlIGNvcmVUeXBlOwotICAgIGlmICh0eXBlICYgTlNUZXh0Q2hlY2tpbmdUeXBlU3BlbGxp
bmcpCi0gICAgICAgIGNvcmVUeXBlID0gRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOwotICAgIGVs
c2UgaWYgKHR5cGUgJiBOU1RleHRDaGVja2luZ1R5cGVHcmFtbWFyKQotICAgICAgICBjb3JlVHlw
ZSA9IERvY3VtZW50TWFya2VyOjpHcmFtbWFyOwotICAgIGVsc2UKLSAgICAgICAgY29yZVR5cGUg
PSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VyczsKLQotICAgIHJldHVybiBTcGVsbENoZWNraW5n
UmVzdWx0KGNvcmVUeXBlLCByYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKLX0KLQotLSAo
V1RGOjpWZWN0b3I8V2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jlc3VsdD4pX2NvcmVSZXN1bHRzCi17
Ci0gICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jlc3VsdD4gY29yZVJlc3Vs
dHM7Ci0gICAgY29yZVJlc3VsdHMucmVzZXJ2ZUNhcGFjaXR5KFtfcmVzdWx0cy5nZXQoKSBjb3Vu
dF0pOwotICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCBpbiBfcmVzdWx0cy5n
ZXQoKSkKLSAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5kKHRvQ29yZVNwZWxsaW5nUmVzdWx0KHJl
c3VsdCkpOwotICAgIHJldHVybiBjb3JlUmVzdWx0czsKKyAgICBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiBjb3JlUmVzdWx0czsKKyAgICB0b0NvcmVUZXh0Q2hlY2tpbmdSZXN1bHRzKF9yZXN1
bHRzLmdldCgpLCBfdHlwZXMsIGNvcmVSZXN1bHRzKTsKKyAgICBfc2VuZGVyLT5kaWRDaGVjayhf
c2VxdWVuY2UsIGNvcmVSZXN1bHRzKTsKIH0KIAogQGVuZAogI2VuZGlmCiAKLXZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIq
IHNlbmRlciwgaW50IHNlcXVlbmNlLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBz
ZW5kZXIsIGludCBzZXF1ZW5jZSwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tp
bmdUeXBlcywgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIE5TUmFuZ2UgcmFu
Z2UgPSBOU01ha2VSYW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKTsKQEAgLTEwNzYsNyArMTA2Miw3IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpT
cGVsbENoZWNrZXIqIHNlbmRlciwgaW50CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVs
bENoZWNrZXJdIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nOnRleHQgcmFuZ2U6cmFuZ2UgdHlwZXM6
TlNUZXh0Q2hlY2tpbmdBbGxTeXN0ZW1UeXBlcyBvcHRpb25zOjAgaW5TcGVsbERvY3VtZW50V2l0
aFRhZzowIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TSW50ZWdlciwgTlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dyYXBoeSos
IE5TSW50ZWdlcikgewogICAgICAgICAgICAgW2N1cnJlbnRMb29wIHBlcmZvcm1TZWxlY3RvcjpA
c2VsZWN0b3IocGVyZm9ybSkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy
Z2V0OltbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2VuZGVy
OnNlbmRlciBzZXF1ZW5jZTpzZXF1ZW5jZSByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpbW1tXZWJFZGl0b3JTcGVs
bENoZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aFNlbmRlcjpzZW5kZXIgc2VxdWVuY2U6c2Vx
dWVuY2UgdHlwZXM6Y2hlY2tpbmdUeXBlcyByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudDpuaWwgb3JkZXI6MCBtb2Rl
czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNEZWZhdWx0UnVuTG9vcE1vZGVdXTsKICAgICAg
ICAgfV07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDFl
ODhhZmMwMmJiMmVmMmE1MjY1ZTc5ZmFkMGRlMjQwYjYwMTBmYzcuLmFmYjY5YjAzNTg5MjkwNDEw
YWU2MjMwZTQwNDE4M2Y0NmY2ZDU0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQpAQCAtMTMwOCw2ICsxMzA4LDE0IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAq
ZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIHJldHVybiBjb3JlRnJhbWUt
PmxheWVyVHJlZUFzVGV4dCgpOwogfQogCistIChOU1N0cmluZyAqKW1hcmtlcnNGb3JTZWxlY3Rp
b25TdGFydEFzVGV4dAoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZy
YW1lOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmlu
Z107CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCktPm1hcmtlcnNGb3JTZWxlY3Rpb25T
dGFydEFzVGV4dCgpOworfQorCiAtIChCT09MKWhhc1NwZWxsaW5nTWFya2VyOihpbnQpZnJvbSBs
ZW5ndGg6KGludClsZW5ndGgKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gX3ByaXZhdGUtPmNv
cmVGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCmlu
ZGV4IGI0OTQyN2UyNWQxNjVmYWRjNmIxZWM2YTEzYjdjNjZmODRjZGE4NzYuLjQ3MDlkNDQxYjgw
OWMxMDg1MDM1OTU1NmFlZTFmYmU0ZDllNjE3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZVByaXZhdGUuaApAQCAtMTQyLDYgKzE0Miw3IEBAIHR5cGVkZWYgZW51bSB7
CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSBpcyBhIHNwZWxsaW5nIG1hcmtlciBpbiB0aGUg
c3BlY2lmaWVkIHJhbmdlIG9mIHRoZSBmb2N1c2VkIG5vZGUuCiAtIChCT09MKWhhc1NwZWxsaW5n
TWFya2VyOihpbnQpbG9jYXRpb24gbGVuZ3RoOihpbnQpbGVuZ3RoOworLSAoTlNTdHJpbmcgKilt
YXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQ7CiAKIC8vIFRoZSB0b3Agb2YgdGhlIGFjY2Vz
c2liaWxpdHkgdHJlZS4KIC0gKGlkKWFjY2Vzc2liaWxpdHlSb290OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRl
eCAyYWFlZjU2ZmM2MWQ0YzkwYWI5Y2M2ODY5NGFjNjkwMTgwZTQxNGEwLi42YzAxNWVkMDRkMzhi
ZTEyYTJkMjA4OGE0YWU2YTQzYjU5NTRhNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3Rvcmlu
Z10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tp
bmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU2MDg1CisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcpOgorCiAyMDExLTAzLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBhdHRlbXB0IGF0IGJ1aWxkIGZpeCEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaCBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAppbmRleCAwNDUwNjAz
NTM5MDRjMDU1ZDdjY2YyYWQ0NjFmNWNiOGU4MWFlMWEwLi4wZDhlOGM2Nzk4NGU5YWQxZjdmMmM1
NmI2YzBkMWNmZDY0YmUyMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0
cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1l
dGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgU3RyaW5nJikge30KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJikge30KICAgICB2aXJ0dWFs
IFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAg
IGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggN2YzMjA2MDVhMTFh
YTg2ZDZhMzdlZGI1Nzg2NTViMzQ0OTk4ODRlMy4uNzg3ZDA2M2E4ZDQ2ZDQ0NTYyNGVjZTlkZDNm
NWM4MWY0MjE2MjJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAz
LTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVj
a2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTExICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBNb3JlIFdpbmRvd3MgYnVp
bGQgZml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyMTYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggMThiZTQwMDZmNDM5MmQ3MWFjMDc0NTFmYjJhNDc3ODhkMzY2MjYyMC4uZjMwYzQz
NGE3MDRmNGM3OGE4YWM5MjZkNzMxZjgzM2E2NWJhYmMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTExMiw3ICsxMTIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwg
aW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggNzI0YjkyYWE2YzcwODhkYmU2Yjg2YzBj
NDNmNmViZThlNGJiZTc4Zi4uOGJkMjY0YjRhOWNlZGVhNjVkOGNhMjJhYjE5YmFmMzk5ZWY1MWVh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1
bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaDoKKyAgICAgICAgKFdlYktpdDo6RWRp
dG9yQ2xpZW50V2luQ0U6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0wNyAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50V2luQ0UuaCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50V2luQ0UuaAppbmRleCBkOTNlY2M1YjhmZDVlMzVmNDQ3ZjkyMWU0Nzc1
MmRiMzJlMjE0NjI3Li5hMmIyM2I0ODUzNmE5OGM5YTUwODdiNDEyZjhiZTRhM2E1YmRmN2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJp
bmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3Jl
OjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25z
dCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVu
dCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9n
CmluZGV4IDNlMzg1YjFhNzNjMjRmNDhkM2MzY2YwNzNiNjdhNTQ0NDMxMGIzMjQuLmNiNDgzNGM4
MTg2ZTQwY2EzMTQzMDkyNjExYjc3YjI2OTlhNGQwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFj
dG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRD
aGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFd4OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6CisKIDIwMTEtMDMtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCmluZGV4IGQxZDM1OTcwOTc1OWM5MDA2ODQzNzky
MGI1MDVlNWVmZjI4MjIyNGQuLjY1ZWU0OTMwNTkzOWMyN2Y1YjAzNjE2NWE3NmM1NWRkZjRkNTA3
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGll
bnRXeC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRX
eC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3Rh
dGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3Ry
aW5nJikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsg
cmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5ODJkNGQzMmU4M2I3Yzkx
ZmNlYTQxMmUyNTgxZWQwMDEyNTllNjgzLi5kNWFlNTU5Nzc0YTZlYmU2YWE5YjY5NDExYjc3MTc1
NGY2MTFhN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMTEgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcg
VVJMIChPT1BTISkKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVu
dDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorCiAyMDExLTAzLTEzICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGI5NTQyODM1OTEzMzc4MGI0Y2VkNjBiZjYzZDk1YTM2
YjlkZTE1MGMuLmNlMmNlNjE0MzZlZGE2ZDE4OWE5MmEzZTc0OTM1MTMzZWNmMzIzZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3Jl
OjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGZhODQy
NmEzOGU5NGZiZTNmNDE2NTk4OWY4MTUyZjNhZDc0ZTYwNzguLjA4N2UzMjA5YTFiMWE2MDI4YmJk
MGJmZjhiMmY4YTcyMmVhYzc4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTMxLDcgKzEz
MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0
aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCk7CiAgICAg
dmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0
aCwgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRp
b24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAg
ICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGlu
dCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1
bHQ+JiByZXN1bHRzKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJ
V2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRl
dGFpbCYgZGV0YWlsKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNz
cGVsbGVkV29yZChjb25zdCBTdHJpbmcmKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNv
bnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29u
c3QgV1RGOjpTdHJpbmcmKTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9u
UGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3JlOjpF
ZGl0b3IqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3Jl
OjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVk
aXRvckNsaWVudE1hYy5tbQppbmRleCA4YWYwNDM4MGMxZmZlODRkOTVkZDFmMDgxZmVhMDIwYWE5
MTY0OTljLi5jNTMyNzRkYjhiNDZlNWI0M2MwOGRiNGNlM2VhYzk0ZWRmOTdmZTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0
b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9m
UGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2lu
Z1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxl
bmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAgICAgLy8gRklYTUU6IEl0IHdvdWxk
IGJlIG5pY2UgaWYgd2Ugd291bGRuJ3QgaGF2ZSB0byBjb3B5IHRoZSB0ZXh0IGhlcmUuCiAgICAg
bV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFn
cmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTk0MTAwZjBlZTRl
ODgxZGUwZGI5MGM3OTEwZDM0ZTM0Y2FmOTg1MC4uM2ZmMDhmNjU4MTY1ZmUxZTUwM2QyOGJiZmFk
MjNjNzQ2MmM5NDNlZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9y
cml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVw
bGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgQWRkZWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpIGZvciB0ZXN0aW5nCisg
ICAgICAgIG5vbi1zcGVsbGluZyBtYXJrZXJzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAobWFya2Vyc0ZvclNlbGVjdGlvblN0
YXJ0QXNUZXh0Q2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRp
Y0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVj
dGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFy
a2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHA6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNU
ZXh0KToKKworMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEg
c2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAobWFya2Vyc0ZvclNl
bGVjdGlvblN0YXJ0QXNUZXh0Q2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vy
c0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFz
VGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJX
eC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlv
blN0YXJ0QXNUZXh0KToKKwogMjAxMS0wMy0xMyAgSm9lIFdpbGQgIDxqb3NlcGgud2lsZEBub2tp
YS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4u
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
MDc3YTBkMjQzNzQ2ZGQ1Mzk3YmNkZjRkYmM5NjQ2NDE3Zjk5YWUxMy4uZGFmMjM2ZjhhNmJkNzZk
MjhkMTcxZDk4MTgzMDJlM2I2YmYwN2E2NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTkyNSw2ICsxOTI1LDE2IEBAIHN0YXRpYyBKU1Zh
bHVlUmVmIGhhc1NwZWxsaW5nTWFya2VyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBvayk7
CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRD
b3VudCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHRleHQgPSBjb250cm9sbGVyLT5tYXJrZXJzRm9yU2VsZWN0
aW9uU3RhcnRBc1RleHQoKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwg
dGV4dC5nZXQoKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIG1hcmtlclRleHRGb3JMaXN0SXRl
bUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTIxMjksNiArMjEzOSw3IEBAIEpTU3RhdGlj
RnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAg
ICB7ICJsYXllclRyZWVBc1RleHQiLCBsYXllclRyZWVBc1RleHRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJudW1iZXJPZlBhZ2VzIiwgbnVtYmVyT2ZQYWdlc0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgIm1hcmtlclRleHRGb3JMaXN0SXRlbSIsIG1hcmtlclRleHRGb3JMaXN0SXRl
bUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgIm1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFz
VGV4dCIsIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgIm5vdGlmeURvbmUiLCBub3RpZnlEb25lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAibnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zIiwgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25z
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic3VzcGVuZEFuaW1hdGlvbnMiLCBzdXNwZW5k
QW5pbWF0aW9uc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAppbmRleCA1NWZlMjIwMGY0NTAwZjdkMDQ2NjE0ZmU2Yjc1NzYxZTEy
ODNkYzA1Li4wMGYyMjY3ODJhOTFmZDkwMGU2ZTZiZGRjNzIwNTdjODZkMjJlMDAwIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTI5MSw2ICsyOTEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhYm9ydE1vZGFsKCk7CiAKICAgICBib29sIGhhc1NwZWxs
aW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCk7CiAKICAgICB2b2lkIGR1bXBD
b25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IGRldmljZURQSSwgaW50IGRldmljZVdpZHRoLCBp
bnQgZGV2aWNlSGVpZ2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGludCBhdmFpbGFibGVIZWlnaHQp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggNjJhY2IxZjk3ZmYwNzRmYzQ0MThjODAzY2JkNjIxOWMxMzQ3
Zjg5NS4uZmJkYzNkZDJjZTE1YzEwODViOTZjNTRkMjY0OGZlMTA1ZGMyMTE3MSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcApAQCAtMTYwMSw2ICsxNjAxLDEyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhh
c1NwZWxsaW5nTWFya2VyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDCiAgICAg
cmVzdWx0LT5zZXQobV9zaGVsbC0+d2ViVmlldygpLT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uU3Rh
cnRIYXNTcGVsbGluZ01hcmtlckZvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBhcmd1bWVudHNb
MV0udG9JbnQzMigpKSk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNG
b3JTZWxlY3Rpb25TdGFydEFzVGV4dChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
KiByZXN1bHQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRl
cnZhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0
KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggOTkzMjRhOTc1NTlhYjQx
ZTcwMzEwMmQyMzkwNjk2NzYyMjM5MWI1NC4uYzg0YTRiNDY5MTUxM2NlYmI2OTM2MWIzYWY2M2Rj
ZjhjZjhjNzA4NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zMzQsNiArMzM0LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogICAgIHZvaWQgaGFzU3BlbGxpbmdNYXJrZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIHZvaWQgc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAppbmRleCA1MjE1NjEyMDc2YzE0ODQ1NmE4YTZhOTZlMmZkNTY5YTBhNGUxYTBlLi5k
NzI0NDI1Y2FmMGExYTRlMDMxZDg2NjdkNjk5NTFhMjA5MmIxN2VhIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTkw
Myw2ICs5MDMsMTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJr
ZXIoaW50IGZyb20sIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6d2Via2l0V2ViRnJhbWVTZWxlY3Rpb25IYXNTcGVsbGluZ01hcmtlcihtYWluRnJhbWUs
IGZyb20sIGxlbmd0aCk7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPigpOwor
fQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdw
b3J0KGludCBkZXZpY2VEUEksIGludCBkZXZpY2VXaWR0aCwgaW50IGRldmljZUhlaWdodCwgaW50
IGF2YWlsYWJsZVdpZHRoLCBpbnQgYXZhaWxhYmxlSGVpZ2h0KQogewogICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFj
Lm1tCmluZGV4IDU4YTdhZGZhMmFhYWNmZWQyNTdlMzc0MDMyODY4ZGI2ZTc1YTUxZmIuLmE2ZGRk
OGJmNDIyZmRjMzc5NjhiZDA4MGNiOTJkYzZkMzQ3OWFjMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTEwNDgsNiAr
MTA0OCwxNCBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihp
bnQgZnJvbSwgaW50IGxlbmd0aCkKIHsKICAgICByZXR1cm4gW21haW5GcmFtZSBoYXNTcGVsbGlu
Z01hcmtlcjpmcm9tIGxlbmd0aDpsZW5ndGhdOwogfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgp
Cit7CisgICAgTlNTdHJpbmcqIHRleHQgPSBbbWFpbkZyYW1lIG1hcmtlcnNGb3JTZWxlY3Rpb25T
dGFydEFzVGV4dF07CisgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwg
SlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKXRleHQpKTsKK30KKworCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KGlu
dCAvKmRldmljZURQSSovLCBpbnQgLypkZXZpY2VXaWR0aCovLCBpbnQgLypkZXZpY2VIZWlnaHQq
LywgaW50IC8qYXZhaWxhYmxlV2lkdGgqLywgaW50IC8qYXZhaWxhYmxlSGVpZ2h0Ki8pCiB7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAKaW5kZXggYWQ5ZTk2ODU5OGRlNThiOGNhOTJjNThiNmMwYjcwMzgwZTAzNDc3Ni4uYmU1YzRi
ZWU2YTRkNGJjNjJmNjA3ZDcxYTQ2NTNmMTQ5NGY0YjIxNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKQEAgLTgyNyw2ICs4Mjcs
MTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50LCBp
bnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVy
OjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKKyAgICByZXR1cm4gIiI7Cit9CisKIFFWYXJpYW50TGlzdCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bm9kZXNGcm9tUmVjdChjb25zdCBRV2ViRWxlbWVudCYgZG9jdW1lbnQsIGludCB4LCBp
bnQgeSwgdW5zaWduZWQgdG9wLCB1bnNpZ25lZCByaWdodCwgdW5zaWduZWQgYm90dG9tLCB1bnNp
Z25lZCBsZWZ0LCBib29sIGlnbm9yZUNsaXBwaW5nKQogewogICAgIHJldHVybiBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6bm9kZXNGcm9tUmVjdChkb2N1bWVudCwgeCwgeSwgdG9wLCByaWdodCwg
Ym90dG9tLCBsZWZ0LCBpZ25vcmVDbGlwcGluZyk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggNDFkMGFjYWY3MzA5MDEzMmEzYjE0
YjMwNjU2NTE4NGYxOTg5MWIwOS4uZjIyNGRjY2Y3YTFkMGJkY2Q5M2NkMDk0NTA3ZTcwYWZmYjRl
ZWFkZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuaApAQCAtMjI3LDYgKzIyNyw3IEBAIHB1YmxpYyBzbG90czoKICAgICAvLyBFbXB0eSBz
dHViIG1ldGhvZCB0byBrZWVwIHBhcml0eSB3aXRoIG9iamVjdCBtb2RlbCBleHBvc2VkIGJ5IGds
b2JhbCBMYXlvdXRUZXN0Q29udHJvbGxlci4KICAgICB2b2lkIGFib3J0TW9kYWwoKSB7fQogICAg
IGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpOworICAgIFFTdHJp
bmcgbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCk7CiAKICAgICBRVmFyaWFudExpc3Qg
bm9kZXNGcm9tUmVjdChjb25zdCBRV2ViRWxlbWVudCYgZG9jdW1lbnQsIGludCB4LCBpbnQgeSwg
dW5zaWduZWQgdG9wLCB1bnNpZ25lZCByaWdodCwgdW5zaWduZWQgYm90dG9tLCB1bnNpZ25lZCBs
ZWZ0LCBib29sIGlnbm9yZUNsaXBwaW5nKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggMWQxNzMwZjhiZTA5Yzc3
OGQ3MjUyNGZlODZmYjNjZWNhZjg4NjJiMi4uYTI5ODYxMjc3NDRlZDkzNDM1MGNjZGViZGEwMTg1
YjU4OTEwNWFlYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xNDE4LDYgKzE0MTgsMTIgQEAgYm9vbCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpCiAg
ICAgcmV0dXJuIHJldDsKIH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RD
b250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7Cit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3Bv
cnQoaW50IC8qZGV2aWNlRFBJKi8sIGludCAvKmRldmljZVdpZHRoKi8sIGludCAvKmRldmljZUhl
aWdodCovLCBpbnQgLyphdmFpbGFibGVXaWR0aCovLCBpbnQgLyphdmFpbGFibGVIZWlnaHQqLykK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCmluZGV4IGU2ZTVjNGVlYzFjMzU3
ZDc1NzEzMjcyNjNjMGZkYWVmMTgzN2FjMTguLjQ1MjhhZjU0OTY5MTY4NmI1ZGQxYjU1Y2U0ZWY3
NzU1N2M1OWNjMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRl
c3RDb250cm9sbGVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRl
c3RDb250cm9sbGVyV3guY3BwCkBAIC01MTYsNiArNTE2LDEyIEBAIGJvb2wgTGF5b3V0VGVzdENv
bnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCwgaW50KQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJr
ZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
KyAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7Cit9CisKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IC8qZGV2aWNl
RFBJKi8sIGludCAvKmRldmljZVdpZHRoKi8sIGludCAvKmRldmljZUhlaWdodCovLCBpbnQgLyph
dmFpbGFibGVXaWR0aCovLCBpbnQgLyphdmFpbGFibGVIZWlnaHQqLykKIHsKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85659</attachid>
            <date>2011-03-14 02:29:06 -0700</date>
            <delta_ts>2011-03-14 03:03:52 -0700</delta_ts>
            <desc>fix v3</desc>
            <filename>bug-56085-20110314182904.patch</filename>
            <type>text/plain</type>
            <size>70317</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA5OTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzAyYjcwMmZiYzFjOWY3MzQ0YzQ0
ZDc3NjQ3NTQyMTkzMzVhNTc3Li4wZDM2Zjk1ZTZjZGUzNzQxOGZhOWZlN2M5ZTA2ZGU0MDFhOGZm
YjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICBBZGRlZCBhbiBhc3luYyBn
cmFtbWFyIGNoZWNraW5nIHRlc3QsIHdoaWNoIGRpZG4ndCB3b3JrIGJlZm9yZSB0aGlzIGNoYWdu
ZS4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXBhc3RlLWdyYW1tYXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0wMy0xMyAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgZXhwZWN0ZWQgcmVzdWx0
cyBhZnRlciByODA5ODIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzZmMGU1ZTQ0ZTc4YjRhMzhiNTI5ODk5OTBkNGQ5MzljZjAzMGI0NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyAwIDw9IHdpbmRvdy5tYXJrZXJUZXh0
LmluZGV4T2YoJ1swLDEyXScpIGlzIHRydWUKK1BBU1MgMCA8PSB3aW5kb3cubWFya2VyVGV4dC5p
bmRleE9mKCdHcmFtbWFyJykgaXMgdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NzRlY2FkM2YwZDNlNjBmYzQ1NzZkMmEzOGM2YzRiOGQxOGYwOTQwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1t
YXIuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPCEtLSBzaG91bGQgYmUgYmFkIGdyYW1tYXIgLS0+Cis8ZGl2IGlk
PSJzb3VyY2UiIGNvbnRlbnRFZGl0YWJsZT50aGVyZSB0aGVyZS48L2Rpdj4KKzxkaXYgaWQ9InRh
cmdldCIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPHNjcmlwdD4KKworbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CitsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK01BWF9UUlkgPSAxMDsKKwordmFyIHNl
bCA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpOwordmFyIHNvdXJjZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzb3VyY2UiKTsKK3ZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4oc291cmNlKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJDb3B5Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0KTsKK2RvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJQYXN0ZSIpOworCitmdW5jdGlvbiB3YWludFVuaXRsVmVyaWZ5UGFz
c2VkKCkgeworICAgIHNlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQpOworICAgIHdpbmRvdy5t
YXJrZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0
QXNUZXh0KCk7CisgICAgaWYgKDAgPT0gd2luZG93Lm1hcmtlclRleHQubGVuZ3RoKSB7CisgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHdhaW50VW5pdGxWZXJpZnlQYXNzZWQoKTsgfSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUoIjAgPD0gd2lu
ZG93Lm1hcmtlclRleHQuaW5kZXhPZignWzAsMTJdJykiKTsKKyAgICBzaG91bGRCZVRydWUoIjAg
PD0gd2luZG93Lm1hcmtlclRleHQuaW5kZXhPZignR3JhbW1hcicpIik7CisgICAgdGFyZ2V0LnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQodGFyZ2V0KTsKKyAgICBzb3VyY2UucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChzb3VyY2UpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworc2V0VGltZW91dChmdW5jdGlvbigpIHsgd2FpbnRVbml0bFZlcmlmeVBhc3NlZCgpOyB9
LCAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGIyY2NmNGUzYWViZGYyZjI2NTQ2OGVhY2Ew
YzM5MmE2MTg2Y2Y3NWIuLmU2MGU3MDJkMjJhZWJlYjIwODQ0NmY4YTQ2YjQxOTJkOTZiZTliZmYg
MTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKQEAgLTMzNjEsNiArMzM2MSw5IEBAIEJVR1dLNTYwNzIgTUFDIFNOT1dMRU9QQVJE
IDogZmFzdC9yZXBhaW50L3JlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3VuZGFyeS5oCiBC
VUdXSzU2MDcyIE1BQyBTTk9XTEVPUEFSRCA6IGZhc3QvcmVwYWludC90ZXh0LWVtcGhhc2lzLWgu
aHRtbCA9IElNQUdFCiBCVUdXSzU2MDcyIFdJTi1WSVNUQSA6IGZhc3QvcnVieS9iYXNlLXNob3J0
ZXItdGhhbi10ZXh0Lmh0bWwgPSBGQUlMCiAKKy8vIERvZXNuJ3Qgc3VwcG9ydCBncmFtbWFyIGNo
ZWNrIHlldC4KK0JVR01PUlJJVEEgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUt
Z3JhbW1hci5odG1sID0gVEVYVAorCiAvLyBpbnRyb2R1Y2VkIGJ5IERhdmUgSHlhdHQgaW4gV0sg
cjgwNTgyCiBCVUdDUjc1NTYxIFdJTiBMSU5VWCA6IGZhc3QvYmxvY2tmbG93L3RleHQtb3JpZW50
YXRpb24tYmFzaWMuaHRtbCA9IElNQUdFK1RFWFQKIEJVR0NSNzU1NjEgTUFDIExFT1BBUkQgOiBm
YXN0L2Jsb2NrZmxvdy90ZXh0LW9yaWVudGF0aW9uLWJhc2ljLmh0bWwgPSBJTUFHRStURVhUCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDVjODZhOGZjMzAwNmJjMzE2MjAxZmEyY2NkMzMw
MDdlZmQ0MzNlZTcuLjA5ZTAyMjNiZGU5MzJjMWFiYTEwN2I1MDFlMmVhYmZkOGQyMzYxYTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0yOTksNiArMjk5LDcgQEAgbWVkaWEvbWVkaWEt
Y2FwdGlvbnMuaHRtbAogIyBEYXRhVHJhbnNmZXJJdGVtcyBpcyBub3QgeWV0IGltcGxlbWVudGVk
LgogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbAogCisKICMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKICMgVEVTVFMgRkFJTElORwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwpAQCAtMTI2NSw2ICsxMjY2LDcgQEAgbWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLmh0bWwK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzQwCiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgRm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDc1OAogIyBUaGVzZSByZXF1aXJlIERSVCBzZXRTZXJpYWxpemVIVFRQ
TG9hZHMgaW1wbGVtZW50YXRpb24gdG8gYmUgcmVsaWFibGUuCkBAIC0xMzE0LDQgKzEzMTYsNCBA
QCBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXJlZGlyZWN0Lnht
bAogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1leHRlcm5hbC1lbnRpdHktcmVk
aXJlY3QueG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MDgxCi1mYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCitmYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9Ta2lwcGVkCmluZGV4IDQwNGU4MzI3Nzc4NDZiY2ZjNWI3NGUyMWMzNTI1
N2RlMWQ5ZTU0NjAuLjg3MmJlNzVlY2Q0ODQ1Nzg3YTU5MDI0Yjk3OTFiNzU3ZWRjMjYwOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZApAQCAtOTAsNiArOTAsNyBA
QCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlZWthYmxlLXN0YWxsLmh0bWwKIAogIyBBdmFpbGFi
bGUgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHRlc3RzIHdoaWNoIHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByNjY5NjEKICMgRmFpbHVyZXMg
bG9vayBsaWtlIGFuIHVuZGVybHlpbmcgcGxhdGZvcm0gaXNzdWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy10aWdlci9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXRpZ2VyL1NraXBwZWQKaW5kZXggYWJkNzI2N2YzNzkyNTVmNzJkNjM4OWMxODU4ZDYxNjk4
ZjdkNWM1Zi4uMGYyMGMxZTA2Zjg0NGY5NjQ4OTliYzkxZDg0OGEwOTFhNDhjZTY5OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKQEAgLTIxMSw2ICsyMTEsNyBAQCBodHRw
L3Rlc3RzL21pc2MvNDAxLWFsdGVybmF0aXZlLWNvbnRlbnQucGhwCiAKICMgQXZhaWxhYmxlIG9u
bHkgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHNwZWxsaW5nIHRlc3RzIGZvciBhdXRvY29ycmVjdGlvbiBwYW5lbAogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rpb24uaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKaW5kZXggYjRkYjJiZDM2ZjhhZjE5Mjg1MDdlNWM1Yzk3YzcyZDAyZGY3
NzNmMy4uOWY1NWI2MGFlMzgzYzg5NDAxNDlkZGZiYjQwNTU3NWE4MGEwOWQ3YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xMjAxLDYgKzEyMDEsNyBAQCBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sCiAKICMgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZygpIGlzIG5vdCBpbXBsZW1lbnRlZAogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLXBhc3RlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLmh0bWwKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIGZhaWxpbmcgZWRpdGlu
Zy9zdHlsZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBiMzYxYzYyNTlmOWEx
MDBmMDY5YWU5Y2FhMTBhNzgzYzU2NDhiNmMzLi4zZWI1N2FkYjc4ODM4OTQ4NjI4MzRlZDc2Zjk3
NDc1ZjgyNDU3ZWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtOTc1LDYgKzk3NSw3
IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAogCiAjIEVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKSBpcyBub3QgaW1wbGVtZW50ZWQKIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgSW5kZXhlZERCIGlzIG5vdCB5ZXQgZW5hYmxl
ZC4KIHN0b3JhZ2UvaW5kZXhlZGRiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNjYjcyM2VlZTA0ZTg1NmJhZjgw
OTJiMGE3MWVhZTUzMzFmOGUzZS4uMTQ3N2JjMmU4NDJiY2ZhZjM3NWVhODlkNWYyMDkxODM3YzUw
YmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisgICAgICAgIAorICAgICAgICBS
ZW1vdmVkIFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQgYW5kIHJlcGxhY2VkIGl0IHdpdGgg
VGV4dENoZWNraW5nUmVzdWx0LgorICAgICAgICBUaGlzIGNoYW5nZSByZXZlYWxlZCB0aGF0IFRl
eHRDaGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpIHNob3VsZCBoYXZlCisg
ICAgICAgIGFkZGl0aW9uYWwgcmVxdWVzdCB0eXBlIHBhcmFtZXRlciB0aHVzIGFkZGVkIGl0Lgor
CisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyQXNUZXh0KTog
c3RhdGljIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya2Vy
c0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KTogQWRkZWQuIEEgaGVscGVyIGZvciB0ZXN0aW5nLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0Zvcik6IEV4dHJh
Y3RlZCBmcm9tIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoKQorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3Ip
OiBBZGRlZCBhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6bWFy
a0F0KTogRXh0cmFjdGVkIGZyb20gZGlkQ2hlY2soKSwgQWRkZWQgYSBjaGVjayBmb3IgdGhlIEdy
YW1tYXJEZXRhaWwgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRD
aGVjayk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xp
ZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRD
aGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oOgorCiAyMDExLTAzLTEzICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGIzZmVkYzE0NDgyNjkyN2MwNTg1ZWUwN2ZiN2ZlYmQ5ZmYyYjA5YmEuLjRl
ZmNjMWZmMGVhZmRhMjhhOWVjMTJhZWYzMzA0ZmEwYjkyNzRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0yOTMsNyArMjkzLDcgQEAgX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXI2YXBwZW5k
RVBLY2oKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyQzFFUEtjaQogX19aTjdXZWJDb3JlMTJT
aGFyZWRCdWZmZXJDMUV2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKLV9fWk43V2Vi
Q29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOVNwZWxsQ2hl
Y2tpbmdSZXN1bHRFTG0wRUVFCitfX1pON1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0Vp
UktOM1dURjZWZWN0b3JJTlNfMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUVFCiBfX1pON1dlYkNv
cmUxMlRleHRFbmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3IxMXJhbmdlTGVuZ3RoRVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRFaWliCkBAIC0xMjA1
LDYgKzEyMDUsNyBAQCBfX1pOSzdXZWJDb3JlNkVkaXRvcjE3c2VsZWN0aW9uSGFzU3R5bGVFaVJL
TjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTZFZGl0b3IxN3Nob3VsZERlbGV0ZVJhbmdlRVBO
U181UmFuZ2VFCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjIzZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb25F
UmpTMV8KIF9fWk5LN1dlYkNvcmU2RWRpdG9yMzBhcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1l
bnRFdgorX19aTks3V2ViQ29yZTZFZGl0b3IzMG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjMxZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjM0c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtl
ckZvckVpaQogX19aTks3V2ViQ29yZTZFZGl0b3IzN2Jhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2Vs
ZWN0aW9uU3RhcnRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhh
NDM5MTBhOWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLmU3ZGRkNGE4YzY2ZDU3MWM5YTVjNTQxM2Nk
OGUwODIwNjlhNTVmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTY0LDcgKzY0
LDYgQEAKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJSZW1vdmVGb3JtYXRDb21tYW5kLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTQ0MCw3ICs0MzksNyBAQCB2b2lkIEVkaXRv
cjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50LAogCiAgICAgTm9kZSogbm9kZVRvQ2hlY2sgPSBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmIChtX3NwZWxsQ2hlY2tlci0+Y2Fu
Q2hlY2tBc3luY2hyb25vdXNseShub2RlVG9DaGVjaykpCi0gICAgICAgIG1fc3BlbGxDaGVja2Vy
LT5yZXF1ZXN0Q2hlY2tpbmdGb3Iobm9kZVRvQ2hlY2spOworICAgICAgICBtX3NwZWxsQ2hlY2tl
ci0+cmVxdWVzdENoZWNraW5nRm9yKHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKE1hcmtTcGVsbGlu
ZyB8IE1hcmtHcmFtbWFyKSwgbm9kZVRvQ2hlY2spOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFj
ZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNl
bWVudCwgYm9vbCBzbWFydFJlcGxhY2UpCkBAIC0yMjcwLDI2ICsyMjY5LDggQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
T3B0aW9ucyB0ZXh0Q2gKICAgICB9CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBy
ZXN1bHRzOwotICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMgPSAwOwotICAgIGlmIChzaG91bGRN
YXJrU3BlbGxpbmcpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nOwotICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKLSAgICAgICAgY2hlY2tpbmdUeXBl
cyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rp
b25QYW5lbCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbjsKLSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7Ci0gICAgICAgIGlmIChp
c0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGVMaW5rOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4
dENoZWNraW5nVHlwZVF1b3RlOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdU
eXBlRGFzaDsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgp
KQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1l
bnQ7Ci0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uOwotICAgIH0KLSAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1Rl
eHRPZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRM
ZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CisgICAgdGV4dENoZWNrZXIoKS0+Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFncmFwaC50
ZXh0TGVuZ3RoKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHRDaGVja2luZ1R5cGVNYXNrRm9yKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKIAog
I2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICAvLyBJZiB0aGlzIGNoZWNraW5n
IGlzIG9ubHkgZm9yIHNob3dpbmcgY29ycmVjdGlvbiBwYW5lbCwgd2Ugc2hvdWxkbid0IGJvdGhl
ciB0byBtYXJrIG1pc3NwZWxsaW5ncy4KQEAgLTM1OTAsMTAgKzM1NzEsOTEgQEAgYm9vbCBFZGl0
b3I6OnNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZyb20sIGludCBsZW5n
dGgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgU3RyaW5nIG1hcmtlckFz
VGV4dChjb25zdCBEb2N1bWVudE1hcmtlciYgbWFya2VyKQoreworICAgIFN0cmluZyByZXN1bHQ7
CisgICAgaWYgKERvY3VtZW50TWFya2VyOjpTcGVsbGluZyAmIG1hcmtlci50eXBlKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCJTcGVsbGluZyAiKTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIgJiBtYXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiR3JhbW1hciAiKTsK
KyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCAmIG1hcmtlci50eXBlKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCJUZXh0TWF0Y2ggIik7CisgICAgaWYgKERvY3VtZW50TWFya2VyOjpS
ZXBsYWNlbWVudCAmIG1hcmtlci50eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJSZXBsYWNl
bWVudCAiKTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IgJiBt
YXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiQ29ycmVjdGlvbkluZGljYXRvciAi
KTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlJlamVjdGVkQ29ycmVjdGlvbiAmIG1hcmtlci50
eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJSZWplY3RlZENvcnJlY3Rpb24gIik7CisgICAg
aWYgKERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uICYgbWFya2VyLnR5cGUp
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gIik7CisgICAg
cmVzdWx0LmFwcGVuZCgiWyIpOworICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIobWFy
a2VyLnN0YXJ0T2Zmc2V0KSk7CisgICAgcmVzdWx0LmFwcGVuZCgiLCIpOworICAgIHJlc3VsdC5h
cHBlbmQoU3RyaW5nOjpudW1iZXIobWFya2VyLmVuZE9mZnNldCkpOworICAgIHJlc3VsdC5hcHBl
bmQoIl0iKTsKKyAgICBpZiAoIW1hcmtlci5kZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiKCIpOworICAgICAgICByZXN1bHQuYXBwZW5kKG1hcmtlci5kZXNj
cmlwdGlvbik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIikiKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitTdHJpbmcgRWRpdG9yOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRB
c1RleHQoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSBmaW5kRmlyc3RNYXJrYWJsZShtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICBpZiAoIW5v
ZGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyByZXN1bHQ7CisgICAg
VmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtYXJrZXJBc1Rl
eHQobWFya2Vyc1tpXSkpOworICAgICAgICBpZiAoaSArIDEgPCBtYXJrZXJzLnNpemUoKSkKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiBGbG9hdFJlY3QgRWRpdG9yOjp3aW5kb3dSZWN0Rm9yUmFuZ2UoY29uc3QgUmFuZ2Uq
IHJhbmdlKSBjb25zdAogewogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lKCktPnZpZXcoKTsK
ICAgICByZXR1cm4gdmlldyA/IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UmVjdChyYW5nZS0+
Ym91bmRpbmdSZWN0KCkpKSA6IEZsb2F0UmVjdCgpOwogfSAgICAgICAgCiAKK1RleHRDaGVja2lu
Z1R5cGVNYXNrIEVkaXRvcjo6dGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0
aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zKQoreworICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5n
ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKKyAgICBib29sIHNob3VsZE1h
cmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOworICAgIGJvb2wg
c2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93Q29y
cmVjdGlvblBhbmVsOworCisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9
IDA7CisgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKKyAgICAgICAgY2hlY2tpbmdUeXBlcyB8
PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQor
ICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGlm
IChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQorICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAg
ICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQ
ZXJmb3JtUmVwbGFjZW1lbnQ7CisgICAgaWYgKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCkgewor
ICAgICAgICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAg
ICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgaWYgKGlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2lu
Z1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgaWYgKGlzQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNl
bWVudEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZVJlcGxhY2VtZW50OworICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIGlzQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICB9CisjZW5kaWYKKworICAg
IHJldHVybiBjaGVja2luZ1R5cGVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZlMjE1NDA4
NWM1NjllLi44YmU0NzM2MGRiMmI2Y2ZiY2E0YWE1NWZkZDI4MzRlYWI4MDkyNGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFZGl0b3JJbnNl
cnRBY3Rpb24uaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlbGVjdGlv
bkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIldyaXRp
bmdEaXJlY3Rpb24uaCIKQEAgLTYyLDcgKzYzLDYgQEAgY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNz
IFNpbXBsZUZvbnREYXRhOwogY2xhc3MgU3BlbGxDaGVja2VyOwogY2xhc3MgVGV4dDsKLWNsYXNz
IFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRp
b25VbmRlcmxpbmUgewpAQCAtMjIyLDYgKzIyMiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJr
TWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJz
dE1pc3NwZWxsaW5nUmFuZ2UpOwogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pOworCisgICAgZW51bSBU
ZXh0Q2hlY2tpbmdPcHRpb25GbGFncyB7CisgICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwK
KyAgICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCisgICAgICAgIFBlcmZvcm1SZXBsYWNlbWVu
dCA9IDEgPDwgMiwKKyAgICAgICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKKyAgICB9
OworICAgIHR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nT3B0aW9uczsKKwogI2lmIFBMQVRG
T1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CiAgICAgdm9pZCBsb3dl
cmNhc2VXb3JkKCk7CkBAIC0yMzksMTQgKzI0OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2ds
ZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb24oKTsKLSAgICBlbnVtIFRleHRDaGVja2luZ09wdGlvbkZsYWdzIHsKLSAgICAgICAg
TWFya1NwZWxsaW5nID0gMSA8PCAwLAotICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKLSAg
ICAgICAgUGVyZm9ybVJlcGxhY2VtZW50ID0gMSA8PCAyLAotICAgICAgICBTaG93Q29ycmVjdGlv
blBhbmVsID0gMSA8PCAzLAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tp
bmdPcHRpb25zOwotCiAgICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSog
Z3JhbW1hclJhbmdlKTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogI2VuZGlmCkBAIC0zNzgsNiArMzc5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAj
ZW5kaWYKIAorICAgIFN0cmluZyBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKSBjb25z
dDsKICAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZyb20s
IGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlU3BlbGxBbmRDb3JyZWN0aW9uTWFy
a2Vyc0Zyb21Xb3Jkc1RvQmVFZGl0ZWQoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3Jk
Qm91bmRhcnkpOwogCkBAIC00MTEsNiArNDEzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAgICB2b2lkIHJldmVhbFNlbGVj
dGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc09y
QmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nLCBS
ZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOworICAgIFRleHRDaGVja2luZ1R5
cGVNYXNrIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMpOwogCiAg
ICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IDc5ODhlNDE2MTBhNTE5YjZhNWNiMjYzMGM2MTBl
YmVhOGZhZTVmMjEuLmY1MjRhMmY0ODk3NjIzNGRlNjY3ZmU4OGRjOWY0ODY0M2M3YjdjZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTEwMCwxMyArMTAwLDE1
IEBAIGJvb2wgU3BlbGxDaGVja2VyOjppc0NoZWNrYWJsZShOb2RlKiBub2RlKSBjb25zdAogICAg
IHJldHVybiBub2RlICYmIG5vZGUtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2Vy
OjpyZXF1ZXN0Q2hlY2tpbmdGb3IoTm9kZSogbm9kZSkKK3ZvaWQgU3BlbGxDaGVja2VyOjpyZXF1
ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQoY2FuQ2hlY2tBc3luY2hyb25vdXNseShub2RlKSk7CisgICAgLy8gQ3VycmVu
dGx5IHdlIG9ubHkgc3VwcG9ydHMgc3BlbGxpbmcgYW5kIGdyYW1tYXIKKyAgICBBU1NFUlQoISht
YXNrICYgfihUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cikpKTsKIAogICAgIGlmICghaW5pdFJlcXVlc3Qobm9kZSkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NsaWVudC0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVu
Y2UsIG1fcmVxdWVzdFRleHQpOworICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyh0aGlzLCBtX3JlcXVlc3RTZXF1ZW5jZSwgbWFzaywgbV9yZXF1ZXN0VGV4dCk7CiB9CiAKIHN0
YXRpYyBib29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50
IGRpc3RhbmNlKQpAQCAtMTMxLDcgKzEzMywyNyBAQCBzdGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0
b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0b3IsIGludCBkaXN0YW5jZSkKICAgICByZXR1cm4g
ZmFsc2U7ICAgIAogfQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNl
LCBjb25zdCBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitib29sIFNwZWxs
Q2hlY2tlcjo6bWFya0F0KGNvbnN0IFBvc2l0aW9uSXRlcmF0b3ImIHN0YXJ0LCBpbnQgbG9jYXRp
b24sIGludCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24pIGNvbnN0Cit7CisgICAgUG9zaXRpb25JdGVyYXRvciBlbmQgPSBz
dGFydDsKKyAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIGxlbmd0aCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIFVzZXJzIG9yIEphdmFTY3JpcHQgYXBwbGljYXRpb25zIG1h
eSBjaGFuZ2UgdGV4dCB3aGlsZSBhIHNwZWxsLWNoZWNrZXIgY2hlY2tzIGl0cworICAgIC8vIHNw
ZWxsaW5ncyBpbiB0aGUgYmFja2dyb3VuZC4gVG8gYXZvaWQgYWRkaW5nIG1hcmtlcnMgdG8gdGhl
IHdvcmRzIG1vZGlmaWVkIGJ5IHVzZXJzIG9yCisgICAgLy8gSmF2YVNjcmlwdCBhcHBsaWNhdGlv
bnMsIHJldHJpZXZlIHRoZSB3b3JkcyBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBhbmQgY29tcGFy
ZSB0aGVtIHdpdGgKKyAgICAvLyB0aGUgb3JpZ2luYWwgb25lcy4KKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX3JlcXVlc3ROb2RlLT5kb2N1bWVudCgpLCBzdGFydCwg
ZW5kKTsKKworICAgIC8vIEZJWE1FOiBVc2UgdGV4dENvbnRlbnQoKSBjb21wYXRpYmxlIHN0cmlu
ZyBjb252ZXJzaW9uLgorICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHJhbmdlLT50ZXh0KCk7Cisg
ICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vic3RyaW5nKGxvY2F0aW9uLCBsZW5n
dGgpOworICAgIGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCisgICAgICAgIG1fcmVxdWVzdE5v
ZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLmdldCgpLCB0eXBlLCBk
ZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlbGxDaGVja2VyOjpk
aWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKQogewogICAgIGlmICghaXNWYWxpZChzZXF1ZW5jZSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE0NCwzMCArMTY2LDM2IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2Vx
dWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYgcmVzCiAgICAgaW50IHN0
YXJ0T2Zmc2V0ID0gMDsKICAgICBQb3NpdGlvbkl0ZXJhdG9yIHN0YXJ0ID0gZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKG1fcmVxdWVzdE5vZGUuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXS50
eXBlKCkgIT0gRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nICYmIHJlc3VsdHNbaV0udHlwZSgpICE9
IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKQorICAgICAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBz
dXBwb3J0cyBzcGVsbGluZyBhbmQgZ3JhbW1hcgorICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBl
ICYgfihUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBUbyBhdm9pZCBtb3ZpbmcgdGhl
IHBvc2l0aW9uIGJhY2t3YXJkLCB3ZSBhc3N1bWUgdGhlIGdpdmVuIHJlc3VsdHMgYXJlIHNvcnRl
ZCB3aXRoCiAgICAgICAgIC8vIHN0YXJ0T2Zmc2V0IGFzIHRoZSBvbmVzIHJldHVybmVkIGJ5IFtO
U1NwZWxsQ2hlY2tlciByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzpdLgotICAgICAgICBBU1NFUlQo
c3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbigpKTsKLSAgICAgICAgaWYgKCFmb3J3
YXJkSXRlcmF0b3Ioc3RhcnQsIHJlc3VsdHNbaV0ubG9jYXRpb24oKSAtIHN0YXJ0T2Zmc2V0KSkK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQb3NpdGlvbkl0ZXJhdG9yIGVuZCA9IHN0YXJ0
OwotICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIHJlc3VsdHNbaV0ubGVuZ3RoKCkp
KQorICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbik7Cisg
ICAgICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uIC0g
c3RhcnRPZmZzZXQpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAo
cmVzdWx0c1tpXS50eXBlICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSB7CisgICAgICAgICAg
ICBpZiAoIW1hcmtBdChzdGFydCwgcmVzdWx0c1tpXS5sb2NhdGlvbiwgcmVzdWx0c1tpXS5sZW5n
dGgsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgU3RyaW5nKCkpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSAmIFRleHRD
aGVja2luZ1R5cGVHcmFtbWFyKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IHJlc3VsdHNbaV0uZGV0YWlscy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIFBvc2l0
aW9uSXRlcmF0b3IgZ3JhbW1hclN0YXJ0ID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKCFm
b3J3YXJkSXRlcmF0b3IoZ3JhbW1hclN0YXJ0LCByZXN1bHRzW2ldLmRldGFpbHNbal0ubG9jYXRp
b24gLSBzdGFydE9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIFBvc2l0aW9uSXRlcmF0b3IgZ3JhbW1hckVuZCA9IGdy
YW1tYXJTdGFydDsKKyAgICAgICAgICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihncmFtbWFy
RW5kLCByZXN1bHRzW2ldLmRldGFpbHNbal0ubGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKCFtYXJrQXQoZ3JhbW1hclN0YXJ0LCByZXN1bHRz
W2ldLmRldGFpbHNbal0ubG9jYXRpb24sIHJlc3VsdHNbaV0uZGV0YWlsc1tqXS5sZW5ndGgsIERv
Y3VtZW50TWFya2VyOjpHcmFtbWFyLCByZXN1bHRzW2ldLmRldGFpbHNbal0udXNlckRlc2NyaXB0
aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KIAotICAgICAgICAvLyBVc2VycyBvciBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucyBtYXkgY2hh
bmdlIHRleHQgd2hpbGUgYSBzcGVsbC1jaGVja2VyIGNoZWNrcyBpdHMKLSAgICAgICAgLy8gc3Bl
bGxpbmdzIGluIHRoZSBiYWNrZ3JvdW5kLiBUbyBhdm9pZCBhZGRpbmcgbWFya2VycyB0byB0aGUg
d29yZHMgbW9kaWZpZWQgYnkgdXNlcnMgb3IKLSAgICAgICAgLy8gSmF2YVNjcmlwdCBhcHBsaWNh
dGlvbnMsIHJldHJpZXZlIHRoZSB3b3JkcyBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBhbmQgY29t
cGFyZSB0aGVtIHdpdGgKLSAgICAgICAgLy8gdGhlIG9yaWdpbmFsIG9uZXMuCi0gICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVxdWVzdE5vZGUtPmRvY3VtZW50
KCksIHN0YXJ0LCBlbmQpOwotICAgICAgICAvLyBGSVhNRTogVXNlIHRleHRDb250ZW50KCkgY29t
cGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KLSAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0g
cmFuZ2UtPnRleHQoKTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vi
c3RyaW5nKHJlc3VsdHNbaV0ubG9jYXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSk7Ci0gICAg
ICAgIGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCi0gICAgICAgICAgICBtX3JlcXVlc3ROb2Rl
LT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgcmVzdWx0c1tp
XS50eXBlKCkpOwotCi0gICAgICAgIHN0YXJ0T2Zmc2V0ID0gcmVzdWx0c1tpXS5sb2NhdGlvbigp
OworICAgICAgICBzdGFydE9mZnNldCA9IHJlc3VsdHNbaV0ubG9jYXRpb247CiAgICAgfQogCiAg
ICAgY2xlYXJSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRl
eCBkMzk0MGU1MDRmYWE0NmE5NjVjNzM4MDRiNTljZjcxMWY3NmRjYmY4Li5kMDk3OWVmZjJkMjUx
N2FjNTJlYTg3ZGE2NDk2ZjUwYTdkY2ZkOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxD
aGVja2VyLmgKQEAgLTI3LDMyICsyNywxNCBAQAogI2RlZmluZSBTcGVsbENoZWNrZXJfaAogCiAj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBOb2RlOwotCi1j
bGFzcyBTcGVsbENoZWNraW5nUmVzdWx0IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVsbENo
ZWNraW5nUmVzdWx0KERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUgPSBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmcsIGludCBsb2NhdGlvbiA9IDAsIGludCBsZW5ndGggPSAwKQotICAgICAg
ICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCi0gICAgICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQotICAgIHsKLSAgICB9Ci0KLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9IAotICAgIGludCBsb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLQotcHJpdmF0ZToKLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSBtX3R5cGU7Ci0gICAgaW50IG1fbG9jYXRpb247Ci0gICAgaW50IG1fbGVuZ3Ro
OwotfTsKK2NsYXNzIFBvc2l0aW9uSXRlcmF0b3I7CiAKIGNsYXNzIFNwZWxsQ2hlY2tlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3BlbGxDaGVja2VyKTsKQEAgLTY1LDEyICs0NywxMyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1c3koKSBjb25zdDsKICAgICBib29sIGlzVmFsaWQoaW50
IHNlcXVlbmNlKSBjb25zdDsKICAgICBib29sIGlzQ2hlY2thYmxlKE5vZGUqKSBjb25zdDsKLSAg
ICB2b2lkIHJlcXVlc3RDaGVja2luZ0ZvcihOb2RlKik7Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQg
c2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYpOworICAgIHZvaWQg
cmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrLCBOb2RlKik7CisgICAgdm9p
ZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
Jik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpbml0UmVxdWVzdChOb2RlKik7CiAgICAgdm9pZCBj
bGVhclJlcXVlc3QoKTsKKyAgICBib29sIG1hcmtBdChjb25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBz
dGFydCwgaW50IGxvY2F0aW4sIGludCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKSBjb25zdDsKIAogICAgIEZyYW1lKiBtX2ZyYW1l
OwogICAgIFRleHRDaGVja2VyQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAppbmRleCBlZDkyZjExMmNiYTg3N2ZkNTJjMzQ2NDA3ZjViNGZmZTI2MTIwZjZj
Li40NmFlMTUyYmNlMDgwODk2ZTM4MzA4ZDI5NGZkOGU3MDk1ZjU3NWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00MDcsMTEgKzQwNywxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0
b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFy
KiwgaW50LCB1aW50NjRfdCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CisgICAg
dmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIq
LCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KIH07CiAKIGNs
YXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKaW5kZXggYWNhYTAy
Y2Y2MmEwNzBmOTBjZjk0YzZlMTI2YzVkMGQ2N2JmYmI4ZS4uOGIxZDgxMjIyNGY1NTU2YmNmODk2
MzdlOTRjZGYwYjZhMmRiMmQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENoZWNrZXJDbGllbnQuaApAQCAtNTMsNiArNTMsOCBAQCBlbnVtIFRleHRDaGVja2lu
Z1R5cGUgewogICAgIFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICA9IDEgPDwgOQogfTsKIAor
dHlwZWRlZiB1aW50NjRfdCBUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKwogc3RydWN0IFRleHRDaGVj
a2luZ1Jlc3VsdCB7CiAgICAgVGV4dENoZWNraW5nVHlwZSB0eXBlOwogICAgIGludCBsb2NhdGlv
bjsKQEAgLTcxLDE0ICs3MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0
b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVs
bGVkV29yZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25z
dCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3Jh
bW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpID0gMDsKICNpZiBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBV
Q2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEZvciBzcGVsbGNoZWNrZXJzIHRoYXQgc3VwcG9y
dCBtdWx0aXBsZSBsYW5ndWFnZXMsIGl0J3Mgb2Z0ZW4gaW1wb3J0YW50IHRvIGJlIGFibGUgdG8g
aWRlbnRpZnkgdGhlIGxhbmd1YWdlIGluIG9yZGVyIHRvCiAgICAgLy8gcHJvdmlkZSBtb3JlIGFj
Y3VyYXRlIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuIENhbGxlciBjYW4gcGFzcyBpbiBtb3JlIHRl
eHQgaW4gImNvbnRleHQiIHRvIGFpZCBzdWNoIHNwZWxsY2hlY2tlcnMgb24gbGFuZ3VhZ2UKICAg
ICAvLyBpZGVudGlmaWNhdGlvbi4gTm9yYW1sbHkgaXQncyB0aGUgdGV4dCBzdXJyb3VuZGluZyB0
aGUgIndvcmQiIGZvciB3aGljaCB3ZSBhcmUgZ2V0dGluZyBjb3JyZWN0aW9uIHN1Z2dlc3Rpb25z
LgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQs
IGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50
LCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0
cmluZyYpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjFlMzk2
NDYyNjcxZDE1NjI5YWMyMGM0ZDAyNTc5NjZlOWQwNmZkNC4uZTIyOGRiZDNlYWJmNDlkNzUzMmQ4
OTFiYTliYzlmYWJmNmFiZDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENo
ZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjA4NQorCisgICAgICAgIEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgorICAg
ICAgICAKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9F
ZGl0b3JDbGllbnRJbXBsLmNwcDoKKwogMjAxMS0wMy0xMSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUm9sbG91dCB0aGUgY2hyb21pdW0gZGVwcyByb2xsIGFz
IGl0IGFkZHMgYSBkZXBlbmRlbmN5IG9uIGEgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDM4ZDRmNWVmODkyMzllMDQ1YWFm
NWYwZjkxMzQ3MjZhMzhhNjIyOTkuLjE3ZTBkODI0MWQ1OTcwNGRlYWY3ZWI2NjUwY2ExMjQ4ZjQy
MTdjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVu
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudElt
cGwuY3BwCkBAIC04NzEsNyArODcxLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgICAgICpt
aXNzcGVsbGluZ0xlbmd0aCA9IHNwZWxsTGVuZ3RoOwogfQogCi12b2lkIEVkaXRvckNsaWVudElt
cGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmlu
ZyYgdGV4dCkKIHsKICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5yZXF1ZXN0Q2hlY2tpbmdPZlRl
eHQodGV4dCwgbmV3IFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsKGlkZW50aWZpZXIsIHNl
bmRlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9y
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1w
bC5oCmluZGV4IGI4MWZiNTYwNTQzMGJmMmY1ZjMzZGU0ODc0YzBiNjZmNmY3Y2M0NmUuLjJlYmM2
ZWE1ODA0YjI1M2ZiZTQxNjM4Njc0NWI5ODcxMTdhYWZkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0
YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVk
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3Bl
bGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNv
cmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOwogCiAgICAgdmly
dHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0
aGlzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBiYmUyZDBkNzQwMDQ1NDM0NjU0YmVjNDhlZTRi
NjllOTE2OTk2MjZhLi45OTk1MzEwYTA5ZjYwODY4MmJkNTY1MTcyY2U2NTNlZDZkYzk1NDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3Vs
ZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0xMiAgUnl1
YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBi
dWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5oCmluZGV4IDU3NWE1MGQyNTNkMjk0MDZjNDZkOGEzNGNhZjM2OGViYWQ4YWU3
NjcuLjU2YjMzMDAyZWFhMTdhODViOWIzNzAxNjlkOGJkODQ3M2ZkYzNhMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCkBAIC0x
MTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29y
ZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8
U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0
YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVk
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3Bl
bGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KICAgICB2
aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0M2M3NGYzYTA3YzYyM2RmODc0MWE3ZTFm
ZTlhNTRkNzBkYzQ5MTIzLi45NTUzYmM2NzI2YTRlMjBjZWRiOTg3MzExYTQwZmY0ZThiNTg2OGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBI
YWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNo
b3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oOgorICAgICAgICAoV2ViS2l0OjpU
ZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAx
MS0wMy0xMSAgTWFyY28gUGVlcmVib29tICA8bWFyY29AcGVlcmVib29tLnVzPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmgK
aW5kZXggYzI5NGEzZDAwZjJkZGU1MDZhYWRhNjA0NzE0YTA1YjVkZDQ0ODc2MS4uNWQ5M2MwNzIx
NmQ5OTViZmUzNmNhZmFkZDk5MGMwYTc4MmY1MmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgVGV4dENoZWNrZXJDbGllbnRFbmNoYW50IDogcHVibGlj
IFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0
cmluZyYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqLCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYs
IGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpTdHJpbmcmIHdvcmQs
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1
ZXNzZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmlu
ZyYpIHt9CiAKICAgICAgICAgdm9pZCB1cGRhdGVTcGVsbENoZWNraW5nTGFuZ3VhZ2UoY29uc3Qg
Y2hhciopOwogICAgICAgICBzdGF0aWMgdm9pZCBmcmVlU3BlbGxDaGVja2luZ0xhbmd1YWdlKGdw
b2ludGVyLCBncG9pbnRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4IGIyYWVmY2U4ZGQ4OGY2
YmFkOTQ0MjllMGM3YTYzMWI3NWJiM2JhYjMuLjQ4MGNmZjZkZjY2ZDg4ZDRiMDcwOTExNmY3Yzcy
MzA2ODUxNTIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEt
MDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENo
ZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAy
MDExLTAzLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oIGIvU291cmNlL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCmluZGV4IGJiMGQ4YWMxMDVmY2UyMjE1
N2E3MDIwNmFhNGMxNGVjNTkwN2EwYjUuLmNjMjFmY2I4NmYyOTE5NGVhM2U4MTRmYTA1NzNkNWU2
NGNjYmExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEhhaWt1LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBFZGl0b3JD
bGllbnRIYWlrdSA6IHB1YmxpYyBFZGl0b3JDbGllbnQsIHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVu
dCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcm
IHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwg
Y29uc3QgU3RyaW5nJikge30KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ss
IGNvbnN0IFN0cmluZyYpIHt9CiAgICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRl
eHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNFZGl0aW5nKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZWVmMTZiODY3Mjg1NDUyZDMzNTIxZmZiM2ZjY2Jh
OGViMTFkZTQ3NS4uZjhlNzAyOTFlOGU2MjFlNzBhNDYzZGI5NTQ3OGQ2OTFjNTVhMjI5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1l
ICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQg
YmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgUmVtb3ZlZCBOU1Rl
eHRDaGVja2luZ1Jlc3VsdCB0byBTcGVsbENoZWNraW5nUmVzdWx0IGNvbnZlcnRpb24sIGFuZCBl
eHRyYWN0ZWQKKyAgICAgICAgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgdG8gVGV4dENoZWNraW5nUmVz
dWx0IGNvbnZlcnRpbyBmcm9tIGNoZWNrVGV4dE9mUGFyYWdyYXBoIG1ldGhvZC4KKyAgICAgICAg
Zm9yIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nIG1ldGhvZC4KKyAgICAgICAgCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAodG9Db3JlVGV4dENoZWNraW5nUmVzdWx0
cyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAg
ICAgICAgKC1bV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlciBpbml0V2l0aFNlbmRlcjpXZWJD
b3JlOjpzZXF1ZW5jZTp0eXBlczpXZWJDb3JlOjpyZXN1bHRzOl0pOgorICAgICAgICAoLVtXZWJF
ZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIHBlcmZvcm1dKToKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4
dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6CisKIDIwMTEtMDMtMTMg
IFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMWZhMTMyYWQ2YzViZDQzNzlmZTBiYjg1YzllNmZm
MGQ2NmIxMTczNS4uMjc3MTM5ZWY2ODVkY2M1NDE3YTJhMWMxNDI5MzkwYjYyYzI5YTFhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3Bl
bGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdM
b2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0
cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hh
ciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50
KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7Ci0gICAgdmlydHVh
bCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3Ro
LCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVNYXNrIGNoZWNraW5nVHlwZXMsIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jl
c3VsdD4mIHJlc3VsdHMpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdy
YW1tYXJTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0
YWlsJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdv
cmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxsaW5nVUko
Ym9vbCBzaG93KTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0
cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdU
Rjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ss
IGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NO
T1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3Jl
OjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFj
ZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywgV2Vi
Q29yZTo6RWRpdG9yKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwo
V2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXgg
NjlkZDU3NDczMWI0NGI0MzBjMjc0NThlNzIzYjQxYzRkZTUxNzRiMC4uOTc5ZDdiNDc3YzRkZmM1
NzRlMTgyN2ExMGIxYTFkNDZjMDIyMmNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNzk0LDEyICs3OTQsOSBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRl
eHQsIGludCBsZW5ndGgsIFZlY3RvcgogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWlu
dDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMp
Ci17CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpCi0gICAgTlNTdHJpbmcgKnRleHRTdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQpIGxlbmd0
aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKLSAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMg
PSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0
cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczooY2hl
Y2tpbmdUeXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwgaW5T
cGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5
Ok5VTEwgd29yZENvdW50Ok5VTExdOwotICAgIFt0ZXh0U3RyaW5nIHJlbGVhc2VdOworc3RhdGlj
IHZvaWQgdG9Db3JlVGV4dENoZWNraW5nUmVzdWx0cyhOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMs
IFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+JiByZXN1bHRzKQorewogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKmluY29t
aW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewogICAgICAgICBOU1JhbmdlIHJlc3VsdFJh
bmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hlY2tpbmdUeXBl
IHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07CkBAIC04NzEsNiArODY4
LDE2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBV
Q2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0
aCwgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4mIHJlc3VsdHMpCit7CisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgTlNTdHJpbmcgKnRleHRTdHJpbmcg
PSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxV
Q2hhcio+KHRleHQpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKKyAgICBOU0FycmF5
ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0g
Y2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBs
ZW5ndGhdKSB0eXBlczooY2hlY2tpbmdUeXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBo
eSkgb3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVu
dFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOworICAgIFt0ZXh0U3RyaW5n
IHJlbGVhc2VdOworICAgIHRvQ29yZVRleHRDaGVja2luZ1Jlc3VsdHMoaW5jb21pbmdSZXN1bHRz
LCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsKICNlbmRpZgogfQogCkBAIC0xMDE3LDU4ICsxMDI0
LDM3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpCiB7
CiAgICAgV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBfc2VuZGVyOwogICAgIGludCBfc2VxdWVuY2U7
CisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgX3R5cGVzOwogICAgIFJldGFpblB0cjxOU0FycmF5
PiBfcmVzdWx0czsKIH0KLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3Vs
dHM7CistIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIg
c2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2spdHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0czsKIC0gKHZvaWQpcGVyZm9ybTsKLS0g
KFdURjo6VmVjdG9yPFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+KSBfY29yZVJlc3VsdHM7
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyCi0t
IChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVu
Y2U6KGludClzZXF1ZW5jZSByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCistIChpZClpbml0V2l0
aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1
ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2spdHlwZXMgcmVzdWx0czoo
TlNBcnJheSopcmVzdWx0cwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFz
ZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIF9zZW5kZXIgPSBzZW5kZXI7CiAgICAgX3Nl
cXVlbmNlID0gc2VxdWVuY2U7CisgICAgX3R5cGVzID0gdHlwZXM7CiAgICAgX3Jlc3VsdHMgPSBy
ZXN1bHRzOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKXBlcmZvcm0KIHsKLSAgICBf
c2VuZGVyLT5kaWRDaGVjayhfc2VxdWVuY2UsIFtzZWxmIF9jb3JlUmVzdWx0c10pOwotfQotCi1z
dGF0aWMgU3BlbGxDaGVja2luZ1Jlc3VsdCB0b0NvcmVTcGVsbGluZ1Jlc3VsdChOU1RleHRDaGVj
a2luZ1Jlc3VsdCogcmVzdWx0KQotewotICAgIE5TVGV4dENoZWNraW5nVHlwZSB0eXBlID0gW3Jl
c3VsdCByZXN1bHRUeXBlXTsKLSAgICBOU1JhbmdlIHJhbmdlID0gW3Jlc3VsdCByYW5nZV07Ci0g
ICAgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgY29yZVR5cGU7Ci0gICAgaWYgKHR5cGUgJiBO
U1RleHRDaGVja2luZ1R5cGVTcGVsbGluZykKLSAgICAgICAgY29yZVR5cGUgPSBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmc7Ci0gICAgZWxzZSBpZiAodHlwZSAmIE5TVGV4dENoZWNraW5nVHlwZUdy
YW1tYXIpCi0gICAgICAgIGNvcmVUeXBlID0gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7Ci0gICAg
ZWxzZQotICAgICAgICBjb3JlVHlwZSA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzOwotCi0g
ICAgcmV0dXJuIFNwZWxsQ2hlY2tpbmdSZXN1bHQoY29yZVR5cGUsIHJhbmdlLmxvY2F0aW9uLCBy
YW5nZS5sZW5ndGgpOwotfQotCi0tIChXVEY6OlZlY3RvcjxXZWJDb3JlOjpTcGVsbENoZWNraW5n
UmVzdWx0PilfY29yZVJlc3VsdHMKLXsKLSAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpTcGVsbENo
ZWNraW5nUmVzdWx0PiBjb3JlUmVzdWx0czsKLSAgICBjb3JlUmVzdWx0cy5yZXNlcnZlQ2FwYWNp
dHkoW19yZXN1bHRzLmdldCgpIGNvdW50XSk7Ci0gICAgZm9yIChOU1RleHRDaGVja2luZ1Jlc3Vs
dCogcmVzdWx0IGluIF9yZXN1bHRzLmdldCgpKQotICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQo
dG9Db3JlU3BlbGxpbmdSZXN1bHQocmVzdWx0KSk7Ci0gICAgcmV0dXJuIGNvcmVSZXN1bHRzOwor
ICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOworICAgIHRvQ29yZVRl
eHRDaGVja2luZ1Jlc3VsdHMoX3Jlc3VsdHMuZ2V0KCksIF90eXBlcywgY29yZVJlc3VsdHMpOwor
ICAgIF9zZW5kZXItPmRpZENoZWNrKF9zZXF1ZW5jZSwgY29yZVJlc3VsdHMpOwogfQogCiBAZW5k
CiAjZW5kaWYKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgc2VxdWVuY2UsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhX
ZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IHNlcXVlbmNlLCBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAj
aWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpCiAgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIHRleHQubGVuZ3RoKCkp
OwpAQCAtMTA3Niw3ICsxMDYyLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQKICAgICBbW05T
U3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVxdWVzdENoZWNraW5nT2ZTdHJpbmc6
dGV4dCByYW5nZTpyYW5nZSB0eXBlczpOU1RleHRDaGVja2luZ0FsbFN5c3RlbVR5cGVzIG9wdGlv
bnM6MCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOjAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyLCBOU0FycmF5KiBy
ZXN1bHRzLCBOU09ydGhvZ3JhcGh5KiwgTlNJbnRlZ2VyKSB7CiAgICAgICAgICAgICBbY3VycmVu
dExvb3AgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihwZXJmb3JtKSAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6W1tbV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRl
ciBhbGxvY10gaW5pdFdpdGhTZW5kZXI6c2VuZGVyIHNlcXVlbmNlOnNlcXVlbmNlIHJlc3VsdHM6
cmVzdWx0c10gYXV0b3JlbGVhc2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGFyZ2V0OltbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2Vu
ZGVyOnNlbmRlciBzZXF1ZW5jZTpzZXF1ZW5jZSB0eXBlczpjaGVja2luZ1R5cGVzIHJlc3VsdHM6
cmVzdWx0c10gYXV0b3JlbGVhc2VdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3VtZW50Om5pbCBvcmRlcjowIG1vZGVzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpOU0RlZmF1
bHRSdW5Mb29wTW9kZV1dOwogICAgICAgICB9XTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KaW5kZXggMWU4OGFmYzAyYmIyZWYyYTUyNjVlNzlmYWQwZGUyNDBiNjAx
MGZjNy4uYWZiNjliMDM1ODkyOTA0MTBhZTYyMzBlNDA0MTgzZjQ2ZjZkNTRiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xMzA4LDYgKzEzMDgsMTQgQEAgc3RhdGlj
IGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAgICAgcmV0dXJuIGNvcmVGcmFtZS0+bGF5ZXJUcmVlQXNUZXh0KCk7CiB9CiAKKy0gKE5TU3Ry
aW5nICopbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0Cit7CisgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nXTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3Io
KS0+bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCk7Cit9CisKIC0gKEJPT0wpaGFzU3Bl
bGxpbmdNYXJrZXI6KGludClmcm9tIGxlbmd0aDooaW50KWxlbmd0aAogewogICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWVQcml2YXRlLmgKaW5kZXggYjQ5NDI3ZTI1ZDE2NWZhZGM2YjFlYzZhMTNiN2M2
NmY4NGNkYTg3Ni4uNDcwOWQ0NDFiODA5YzEwODUwMzU5NTU2YWVlMWZiZTRkOWU2MTcxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCkBAIC0xNDIsNiAr
MTQyLDcgQEAgdHlwZWRlZiBlbnVtIHsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZXJlIGlzIGEg
c3BlbGxpbmcgbWFya2VyIGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgdGhlIGZvY3VzZWQgbm9k
ZS4KIC0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClsb2NhdGlvbiBsZW5ndGg6KGludCls
ZW5ndGg7CistIChOU1N0cmluZyAqKW1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dDsKIAog
Ly8gVGhlIHRvcCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgogLSAoaWQpYWNjZXNzaWJpbGl0
eVJvb3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDJhYWVmNTZmYzYxZDRjOTBhYjljYzY4Njk0YWM2OTAx
ODBlNDE0YTAuLjZjMDE1ZWQwNGQzOGJlMTJhMmQyMDg4YTRhZTZhNDNiNTk1NGE2MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dFF0OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMTEgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGF0dGVtcHQgYXQg
YnVpbGQgZml4IQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5oCmluZGV4IDA0NTA2MDM1MzkwNGMwNTVkN2NjZjJhZDQ2MWY1Y2I4ZTgxYWUxYTAu
LjBkOGU4YzY3OTg0ZTlhZDFmN2YyYzU2YjZjMGQxY2ZkNjRiZTIxZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKQEAgLTEwOSw3ICsx
MDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0
IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vl
c3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25z
dCBTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhT
cGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBT
dHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkg
eyByZXR1cm4gdGhpczsgfQogCiAgICAgYm9vbCBpc0VkaXRpbmcoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCA3ZjMyMDYwNWExMWFhODZkNmEzN2VkYjU3ODY1NWIzNDQ5OTg4NGUzLi43ODdk
MDYzYThkNDZkNDQ1NjI0ZWNlOWRkM2Y1YzgxZjQyMTYyMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRo
IFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6CisKIDIwMTEtMDMtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1vcmUgV2luZG93cyBidWlsZCBmaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjIxNgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAxOGJlNDAwNmY0MzkyZDcxYWMwNzQ1MWZi
MmE0Nzc4OGQzNjYyNjIwLi5mMzBjNDM0YTcwNGY0Yzc4YThhYzkyNmQ3MzFmODMzYTY1YmFiYzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhv
ZFN0YXRlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhX
ZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcm
KSB7fQogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2Vy
KCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCA3
MjRiOTJhYTZjNzA4OGRiZTZiODZjMGM0M2Y2ZWJlOGU0YmJlNzhmLi44YmQyNjRiNGE5Y2VkZWE2
NWQ4Y2EyMmFiMTliYWYzOTllZjUxZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3Rv
cmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hl
Y2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5o
OgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRXaW5DRTo6cmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcpOgorCiAyMDExLTAzLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oIGIvU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCmluZGV4IGQ5M2Vj
YzViOGZkNWUzNWY0NDdmOTIxZTQ3NzUyZGIzMmUyMTQ2MjcuLmEyYjIzYjQ4NTM2YTk4YzlhNTA4
N2I0MTJmOGJlNGEzYTViZGY3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3Ry
aW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3Rh
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggM2UzODViMWE3M2MyNGY0OGQzYzNjZjA3M2I2
N2E1NDQ0MzEwYjMyNC4uY2I0ODM0YzgxODZlNDBjYTMxNDMwOTI2MTFiNzdiMjY5OWE0ZDAyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxk
IGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9FZGl0b3JDbGllbnRXeC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6
OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0wNyAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5o
IGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKaW5kZXgg
ZDFkMzU5NzA5NzU5YzkwMDY4NDM3OTIwYjUwNWU1ZWZmMjgyMjI0ZC4uNjVlZTQ5MzA1OTM5YzI3
ZjViMDM2MTY1YTc2YzU1ZGRmNGQ1MDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNv
bnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJD
bGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDk4MmQ0ZDMyZTgzYjdjOTFmY2VhNDEyZTI1ODFlZDAwMTI1OWU2ODMuLmQ1YWU1NTk3
NzRhNmViZTZhYTliNjk0MTFiNzcxNzU0ZjYxMWE3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hv
cnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisKIDIwMTEt
MDMtMTMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggYjk1NDI4MzU5
MTMzNzgwYjRjZWQ2MGJmNjNkOTVhMzZiOWRlMTUwYy4uY2UyY2U2MTQzNmVkYTZkMTg5YTkyYTNl
NzQ5MzUxMzNlY2YzMjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNDQxLDcgKzQ0
MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpT
dHJpbmcmKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ss
IGNvbnN0IFdURjo6U3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggZmE4NDI2YTM4ZTk0ZmJlM2Y0MTY1OTg5ZjgxNTJmM2FkNzRlNjA3
OC4uMDg3ZTMyMDlhMWIxYTYwMjhiYmQwYmZmOGIyZjhhNzIyZWFjNzg3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcm
IG1pc3NwZWxsZWRXb3JkKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmco
Y29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4m
LCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFw
aChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywg
VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAgIHZpcnR1
YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0
aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFdl
YkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogI2VuZGlmCiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBkZXRhaWwpOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpOwpAQCAtMTQw
LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3Jk
KGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5n
PiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOwogI2lmIFBMQVRGT1JNKE1B
QykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICAgICB2aXJ0
dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZv
OjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNl
bWVudFN0cmluZ3MsIFdlYkNvcmU6OkVkaXRvciopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNz
Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFu
ZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDhhZjA0MzgwYzFm
ZmU4NGQ5NWRkMWYwODFmZWEwMjBhYTkxNjQ5OWMuLmM1MzI3NGRiOGI0NmU1YjQzYzA4ZGI0Y2Uz
ZWFjOTRlZGY5N2ZlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAg
LTI0MCw3ICsyNDAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBs
ZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
JiByZXN1bHRzKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNv
bnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFz
ayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsK
ICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB3ZSB3b3VsZG4ndCBoYXZlIHRvIGNv
cHkgdGhlIHRleHQgaGVyZS4KICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZyh0ZXh0LCBsZW5ndGgpLCBjaGVja2lu
Z1R5cGVzKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGg6OlJl
cGx5KHJlc3VsdHMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAxOTQxMDBmMGVlNGU4ODFkZTBkYjkwYzc5MTBkMzRlMzRjYWY5ODUwLi4zZmYw
OGY2NTgxNjVmZTFlNTAzZDI4YmJmYWQyM2M3NDYyYzk0M2VmIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMDMt
MTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNr
aW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAg
ICAgICBBZGRlZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0
QXNUZXh0KCkgZm9yIHRlc3RpbmcKKyAgICAgICAgbm9uLXNwZWxsaW5nIG1hcmtlcnMuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHRDYWxsYmFjayk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1Rl
eHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
Y3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25T
dGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNl
bGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJr
ZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorCisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1l
ICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09Q
UyEpCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHRDYWxsYmFjayk6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1Rl
eHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9u
U3RhcnRBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JT
ZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFy
a2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorCiAyMDExLTAzLTEzICBKb2Ug
V2lsZCAgPGpvc2VwaC53aWxkQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAppbmRleCAwNzdhMGQyNDM3NDZkZDUzOTdiY2RmNGRiYzk2NDY0MTdm
OTlhZTEzLi5kYWYyMzZmOGE2YmQ3NmQyOGQxNzFkOTgxODMwMmUzYjZiZjA3YTY0IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xOTI1LDYg
KzE5MjUsMTYgQEAgc3RhdGljIEpTVmFsdWVSZWYgaGFzU3BlbGxpbmdNYXJrZXJDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnUKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VCb29sZWFuKGNvbnRleHQsIG9rKTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgbWFya2Vyc0Zv
clNlbGVjdGlvblN0YXJ0QXNUZXh0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQoreworICAgIGlmIChhcmd1bWVudENvdW50KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdGV4dCA9IGNvbnRy
b2xsZXItPm1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpOworICAgIHJldHVybiBKU1Zh
bHVlTWFrZVN0cmluZyhjb250ZXh0LCB0ZXh0LmdldCgpKTsKK30KKwogc3RhdGljIEpTVmFsdWVS
ZWYgbWFya2VyVGV4dEZvckxpc3RJdGVtQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewog
ICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0
VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMjEy
OSw2ICsyMTM5LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0
YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImxheWVyVHJlZUFzVGV4dCIsIGxheWVyVHJlZUFz
VGV4dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9mUGFnZXMiLCBudW1iZXJP
ZlBhZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibWFya2VyVGV4dEZvckxpc3RJdGVt
IiwgbWFya2VyVGV4dEZvckxpc3RJdGVtQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAibWFy
a2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0IiwgbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNU
ZXh0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibm90aWZ5RG9uZSIsIG5vdGlmeURvbmVD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBu
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzdXNw
ZW5kQW5pbWF0aW9ucyIsIHN1c3BlbmRBbmltYXRpb25zQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDU1ZmUyMjAwZjQ1
MDBmN2QwNDY2MTRmZTZiNzU3NjFlMTI4M2RjMDUuLjAwZjIyNjc4MmE5MWZkOTAwZTZlNmJkZGM3
MjA1N2M4NmQyMmUwMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaApAQCAtMjkxLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFib3J0TW9kYWwo
KTsKIAogICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpOwor
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1Rl
eHQoKTsKIAogICAgIHZvaWQgZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChpbnQgZGV2aWNl
RFBJLCBpbnQgZGV2aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBhdmFpbGFibGVXaWR0
aCwgaW50IGF2YWlsYWJsZUhlaWdodCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA2MmFjYjFmOTdmZjA3
NGZjNDQxOGM4MDNjYmQ2MjE5YzEzNDdmODk1Li5mYmRjM2RkMmNlMTVjMTA4NWI5NmM1NGQyNjQ4
ZmUxMDVkYzIxMTcxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xNjAxLDYgKzE2MDEsMTIgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIEMKICAgICByZXN1bHQtPnNldChtX3NoZWxsLT53ZWJWaWV3KCktPm1h
aW5GcmFtZSgpLT5zZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5nTWFya2VyRm9yKGFyZ3VtZW50c1sw
XS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCkpKTsKIH0KIAordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAppbmRleCA5OTMyNGE5NzU1OWFiNDFlNzAzMTAyZDIzOTA2OTY3NjIyMzkxYjU0Li5jODRhNGI0
NjkxNTEzY2ViYjY5MzYxYjNhZjYzZGNmOGNmOGM3MDg2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTMzNCw2ICsz
MzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1hcmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBoYXNTcGVsbGluZ01hcmtl
cihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBtYXJrZXJz
Rm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDUyMTU2MTIwNzZjMTQ4NDU2YThh
NmE5NmUyZmQ1NjlhMGE0ZTFhMGUuLmQ3MjQ0MjVjYWYwYTFhNGUwMzFkODY2N2Q2OTk1MWEyMDky
YjE3ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RD
b250cm9sbGVyR3RrLmNwcApAQCAtOTAzLDYgKzkwMywxMiBAQCBib29sIExheW91dFRlc3RDb250
cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKICAgICByZXR1
cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3ZWJraXRXZWJGcmFtZVNlbGVjdGlvbkhhc1Nw
ZWxsaW5nTWFya2VyKG1haW5GcmFtZSwgZnJvbSwgbGVuZ3RoKTsKIH0KIAorSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3Rh
cnRBc1RleHQoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+KCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1
bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IGRldmljZURQSSwgaW50IGRldmljZVdpZHRo
LCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGludCBhdmFpbGFibGVIZWln
aHQpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X3dlYl92aWV3KG1haW5GcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNThhN2FkZmEyYWFhY2ZlZDI1N2UzNzQw
MzI4NjhkYjZlNzVhNTFmYi4uYTZkZGQ4YmY0MjJmZGMzNzk2OGJkMDgwY2I5MmRjNmQzNDc5YWMw
OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbQpAQCAtMTA0OCw2ICsxMDQ4LDE0IEBAIGJvb2wgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQogewogICAgIHJldHVy
biBbbWFpbkZyYW1lIGhhc1NwZWxsaW5nTWFya2VyOmZyb20gbGVuZ3RoOmxlbmd0aF07CiB9CisK
K0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0Zv
clNlbGVjdGlvblN0YXJ0QXNUZXh0KCkKK3sKKyAgICBOU1N0cmluZyogdGV4dCA9IFttYWluRnJh
bWUgbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0XTsKKyAgICByZXR1cm4gSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJp
bmdSZWYpdGV4dCkpOworfQorCisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBDb25m
aWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IC8qZGV2aWNlRFBJKi8sIGludCAvKmRldmljZVdpZHRo
Ki8sIGludCAvKmRldmljZUhlaWdodCovLCBpbnQgLyphdmFpbGFibGVXaWR0aCovLCBpbnQgLyph
dmFpbGFibGVIZWlnaHQqLykKIHsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCBhZDllOTY4NTk4ZGU1OGI4Y2E5MmM1OGI2
YzBiNzAzODBlMDM0Nzc2Li5iZTVjNGJlZTZhNGQ0YmM2MmY2MDdkNzFhNDY1M2YxNDk0ZjRiMjE2
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcApAQCAtODI3LDYgKzgyNywxMiBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpo
YXNTcGVsbGluZ01hcmtlcihpbnQsIGludCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK1FTdHJp
bmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgp
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAiIjsKK30KKwogUVZhcmlh
bnRMaXN0IExheW91dFRlc3RDb250cm9sbGVyOjpub2Rlc0Zyb21SZWN0KGNvbnN0IFFXZWJFbGVt
ZW50JiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3AsIHVuc2lnbmVkIHJpZ2h0
LCB1bnNpZ25lZCBib3R0b20sIHVuc2lnbmVkIGxlZnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcpCiB7
CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpub2Rlc0Zyb21SZWN0KGRvY3Vt
ZW50LCB4LCB5LCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIGlnbm9yZUNsaXBwaW5nKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAppbmRl
eCA0MWQwYWNhZjczMDkwMTMyYTNiMTRiMzA2NTY1MTg0ZjE5ODkxYjA5Li5mMjI0ZGNjZjdhMWQw
YmRjZDkzY2QwOTQ1MDdlNzBhZmZiNGVlYWRlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0yMjcsNiArMjI3LDcgQEAgcHVibGlj
IHNsb3RzOgogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2Jq
ZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250cm9sbGVyLgogICAgIHZv
aWQgYWJvcnRNb2RhbCgpIHt9CiAgICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwg
aW50IGxlbmd0aCk7CisgICAgUVN0cmluZyBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQo
KTsKIAogICAgIFFWYXJpYW50TGlzdCBub2Rlc0Zyb21SZWN0KGNvbnN0IFFXZWJFbGVtZW50JiBk
b2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3AsIHVuc2lnbmVkIHJpZ2h0LCB1bnNp
Z25lZCBib3R0b20sIHVuc2lnbmVkIGxlZnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4u
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cAppbmRleCAxZDE3MzBmOGJlMDljNzc4ZDcyNTI0ZmU4NmZiM2NlY2FmODg2MmIyLi5hMjk4NjEy
Nzc0NGVkOTM0MzUwY2NkZWJkYTAxODViNTg5MTA1YWVjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTE0MTgsNiAr
MTQxOCwxMiBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihp
bnQgZnJvbSwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gcmV0OwogfQogCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFy
dEFzVGV4dCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4oKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVt
cENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChpbnQgLypkZXZpY2VEUEkqLywgaW50IC8qZGV2aWNl
V2lkdGgqLywgaW50IC8qZGV2aWNlSGVpZ2h0Ki8sIGludCAvKmF2YWlsYWJsZVdpZHRoKi8sIGlu
dCAvKmF2YWlsYWJsZUhlaWdodCovKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVy
V3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5j
cHAKaW5kZXggZTZlNWM0ZWVjMWMzNTdkNzU3MTMyNzI2M2MwZmRhZWYxODM3YWMxOC4uNDUyOGFm
NTQ5NjkxNjg2YjVkZDFiNTVjZTRlZjc3NTU3YzU5Y2MzNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKQEAgLTUxNiw2ICs1MTYs
MTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoaW50LCBp
bnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5
b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4oKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVtcENvbmZpZ3VyYXRpb25G
b3JWaWV3cG9ydChpbnQgLypkZXZpY2VEUEkqLywgaW50IC8qZGV2aWNlV2lkdGgqLywgaW50IC8q
ZGV2aWNlSGVpZ2h0Ki8sIGludCAvKmF2YWlsYWJsZVdpZHRoKi8sIGludCAvKmF2YWlsYWJsZUhl
aWdodCovKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85662</attachid>
            <date>2011-03-14 03:03:58 -0700</date>
            <delta_ts>2011-03-15 02:55:11 -0700</delta_ts>
            <desc>fix v4</desc>
            <filename>bug-56085-20110314190355.patch</filename>
            <type>text/plain</type>
            <size>72156</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA5OTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzAyYjcwMmZiYzFjOWY3MzQ0YzQ0
ZDc3NjQ3NTQyMTkzMzVhNTc3Li4wZDM2Zjk1ZTZjZGUzNzQxOGZhOWZlN2M5ZTA2ZGU0MDFhOGZm
YjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSBy
ZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICBBZGRlZCBhbiBhc3luYyBn
cmFtbWFyIGNoZWNraW5nIHRlc3QsIHdoaWNoIGRpZG4ndCB3b3JrIGJlZm9yZSB0aGlzIGNoYWdu
ZS4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXBhc3RlLWdyYW1tYXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMS0wMy0xMyAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgZXhwZWN0ZWQgcmVzdWx0
cyBhZnRlciByODA5ODIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzZmMGU1ZTQ0ZTc4YjRhMzhiNTI5ODk5OTBkNGQ5MzljZjAzMGI0NAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyAwIDw9IHdpbmRvdy5tYXJrZXJUZXh0
LmluZGV4T2YoJ1swLDEyXScpIGlzIHRydWUKK1BBU1MgMCA8PSB3aW5kb3cubWFya2VyVGV4dC5p
bmRleE9mKCdHcmFtbWFyJykgaXMgdHJ1ZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUtZ3JhbW1hci5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1tYXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NzRlY2FkM2YwZDNlNjBmYzQ1NzZkMmEzOGM2YzRiOGQxOGYwOTQwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLWdyYW1t
YXIuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXNlbGVjdGlvbi1zaGFyZWQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPCEtLSBzaG91bGQgYmUgYmFkIGdyYW1tYXIgLS0+Cis8ZGl2IGlk
PSJzb3VyY2UiIGNvbnRlbnRFZGl0YWJsZT50aGVyZSB0aGVyZS48L2Rpdj4KKzxkaXYgaWQ9InRh
cmdldCIgY29udGVudEVkaXRhYmxlPjwvZGl2PgorPHNjcmlwdD4KKworbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CitsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK01BWF9UUlkgPSAxMDsKKwordmFyIHNl
bCA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpOwordmFyIHNvdXJjZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzb3VyY2UiKTsKK3ZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4oc291cmNlKTsKK2RvY3VtZW50LmV4
ZWNDb21tYW5kKCJDb3B5Iik7CitzZWwuc2VsZWN0QWxsQ2hpbGRyZW4odGFyZ2V0KTsKK2RvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJQYXN0ZSIpOworCitmdW5jdGlvbiB3YWludFVuaXRsVmVyaWZ5UGFz
c2VkKCkgeworICAgIHNlbC5zZWxlY3RBbGxDaGlsZHJlbih0YXJnZXQpOworICAgIHdpbmRvdy5t
YXJrZXJUZXh0ID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0
QXNUZXh0KCk7CisgICAgaWYgKDAgPT0gd2luZG93Lm1hcmtlclRleHQubGVuZ3RoKSB7CisgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHdhaW50VW5pdGxWZXJpZnlQYXNzZWQoKTsgfSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaG91bGRCZVRydWUoIjAgPD0gd2lu
ZG93Lm1hcmtlclRleHQuaW5kZXhPZignWzAsMTJdJykiKTsKKyAgICBzaG91bGRCZVRydWUoIjAg
PD0gd2luZG93Lm1hcmtlclRleHQuaW5kZXhPZignR3JhbW1hcicpIik7CisgICAgdGFyZ2V0LnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQodGFyZ2V0KTsKKyAgICBzb3VyY2UucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChzb3VyY2UpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworc2V0VGltZW91dChmdW5jdGlvbigpIHsgd2FpbnRVbml0bFZlcmlmeVBhc3NlZCgpOyB9
LCAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGIyY2NmNGUzYWViZGYyZjI2NTQ2OGVhY2Ew
YzM5MmE2MTg2Y2Y3NWIuLmU2MGU3MDJkMjJhZWJlYjIwODQ0NmY4YTQ2YjQxOTJkOTZiZTliZmYg
MTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKQEAgLTMzNjEsNiArMzM2MSw5IEBAIEJVR1dLNTYwNzIgTUFDIFNOT1dMRU9QQVJE
IDogZmFzdC9yZXBhaW50L3JlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3VuZGFyeS5oCiBC
VUdXSzU2MDcyIE1BQyBTTk9XTEVPUEFSRCA6IGZhc3QvcmVwYWludC90ZXh0LWVtcGhhc2lzLWgu
aHRtbCA9IElNQUdFCiBCVUdXSzU2MDcyIFdJTi1WSVNUQSA6IGZhc3QvcnVieS9iYXNlLXNob3J0
ZXItdGhhbi10ZXh0Lmh0bWwgPSBGQUlMCiAKKy8vIERvZXNuJ3Qgc3VwcG9ydCBncmFtbWFyIGNo
ZWNrIHlldC4KK0JVR01PUlJJVEEgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUt
Z3JhbW1hci5odG1sID0gVEVYVAorCiAvLyBpbnRyb2R1Y2VkIGJ5IERhdmUgSHlhdHQgaW4gV0sg
cjgwNTgyCiBCVUdDUjc1NTYxIFdJTiBMSU5VWCA6IGZhc3QvYmxvY2tmbG93L3RleHQtb3JpZW50
YXRpb24tYmFzaWMuaHRtbCA9IElNQUdFK1RFWFQKIEJVR0NSNzU1NjEgTUFDIExFT1BBUkQgOiBm
YXN0L2Jsb2NrZmxvdy90ZXh0LW9yaWVudGF0aW9uLWJhc2ljLmh0bWwgPSBJTUFHRStURVhUCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDVjODZhOGZjMzAwNmJjMzE2MjAxZmEyY2NkMzMw
MDdlZmQ0MzNlZTcuLjA5ZTAyMjNiZGU5MzJjMWFiYTEwN2I1MDFlMmVhYmZkOGQyMzYxYTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0yOTksNiArMjk5LDcgQEAgbWVkaWEvbWVkaWEt
Y2FwdGlvbnMuaHRtbAogIyBEYXRhVHJhbnNmZXJJdGVtcyBpcyBub3QgeWV0IGltcGxlbWVudGVk
LgogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMuaHRtbAogCisKICMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKICMgVEVTVFMgRkFJTElORwogIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwpAQCAtMTI2NSw2ICsxMjY2LDcgQEAgbWVkaWEvY29udHJvbHMtZHJhZy10aW1lYmFyLmh0bWwK
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzQwCiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsaW5nLWJhY2tzcGFjZS1iZXR3ZWVuLWxpbmVzLmh0bWwKIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgRm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDc1OAogIyBUaGVzZSByZXF1aXJlIERSVCBzZXRTZXJpYWxpemVIVFRQ
TG9hZHMgaW1wbGVtZW50YXRpb24gdG8gYmUgcmVsaWFibGUuCkBAIC0xMzE0LDQgKzEzMTYsNCBA
QCBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXJlZGlyZWN0Lnht
bAogaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1leHRlcm5hbC1lbnRpdHktcmVk
aXJlY3QueG1sCiAKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MDgxCi1mYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCitmYXN0L2pzL2xhcmdlLWV4cHJlc3Npb25zLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9Ta2lwcGVkCmluZGV4IDQwNGU4MzI3Nzc4NDZiY2ZjNWI3NGUyMWMzNTI1
N2RlMWQ5ZTU0NjAuLjg3MmJlNzVlY2Q0ODQ1Nzg3YTU5MDI0Yjk3OTFiNzU3ZWRjMjYwOGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZApAQCAtOTAsNiArOTAsNyBA
QCBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXNlZWthYmxlLXN0YWxsLmh0bWwKIAogIyBBdmFpbGFi
bGUgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHRlc3RzIHdoaWNoIHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByNjY5NjEKICMgRmFpbHVyZXMg
bG9vayBsaWtlIGFuIHVuZGVybHlpbmcgcGxhdGZvcm0gaXNzdWUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy10aWdlci9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXRpZ2VyL1NraXBwZWQKaW5kZXggYWJkNzI2N2YzNzkyNTVmNzJkNjM4OWMxODU4ZDYxNjk4
ZjdkNWM1Zi4uMGYyMGMxZTA2Zjg0NGY5NjQ4OTliYzkxZDg0OGEwOTFhNDhjZTY5OSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQKQEAgLTIxMSw2ICsyMTEsNyBAQCBodHRw
L3Rlc3RzL21pc2MvNDAxLWFsdGVybmF0aXZlLWNvbnRlbnQucGhwCiAKICMgQXZhaWxhYmxlIG9u
bHkgMTAuNiBvciBsYXRlcgogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwK
K2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFyLmh0bWwKIAogIyBEaXNh
YmxlIHNwZWxsaW5nIHRlc3RzIGZvciBhdXRvY29ycmVjdGlvbiBwYW5lbAogcGxhdGZvcm0vbWFj
L2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rpb24uaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKaW5kZXggYjRkYjJiZDM2ZjhhZjE5Mjg1MDdlNWM1Yzk3YzcyZDAyZGY3
NzNmMy4uOWY1NWI2MGFlMzgzYzg5NDAxNDlkZGZiYjQwNTU3NWE4MGEwOWQ3YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xMjAxLDYgKzEyMDEsNyBAQCBlZGl0aW5nL3NwZWxsaW5nL3Nw
ZWxsaW5nLWF0dHJpYnV0ZS1hdC1jaGlsZC5odG1sCiAKICMgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZygpIGlzIG5vdCBpbXBsZW1lbnRlZAogZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLXBhc3RlLmh0bWwKK2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1n
cmFtbWFyLmh0bWwKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIGZhaWxpbmcgZWRpdGlu
Zy9zdHlsZSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBiMzYxYzYyNTlmOWEx
MDBmMDY5YWU5Y2FhMTBhNzgzYzU2NDhiNmMzLi4zZWI1N2FkYjc4ODM4OTQ4NjI4MzRlZDc2Zjk3
NDc1ZjgyNDU3ZWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtOTc1LDYgKzk3NSw3
IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdGV4dGFyZWEuaHRtbAogCiAjIEVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKSBpcyBub3QgaW1wbGVtZW50ZWQKIGVkaXRp
bmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sCitlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stcGFzdGUtZ3JhbW1hci5odG1sCiAKICMgSW5kZXhlZERCIGlzIG5vdCB5ZXQgZW5hYmxl
ZC4KIHN0b3JhZ2UvaW5kZXhlZGRiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjNjYjcyM2VlZTA0ZTg1NmJhZjgw
OTJiMGE3MWVhZTUzMzFmOGUzZS4uMTQ3N2JjMmU4NDJiY2ZhZjM3NWVhODlkNWYyMDkxODM3YzUw
YmQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisgICAgICAgIAorICAgICAgICBS
ZW1vdmVkIFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQgYW5kIHJlcGxhY2VkIGl0IHdpdGgg
VGV4dENoZWNraW5nUmVzdWx0LgorICAgICAgICBUaGlzIGNoYW5nZSByZXZlYWxlZCB0aGF0IFRl
eHRDaGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpIHNob3VsZCBoYXZlCisg
ICAgICAgIGFkZGl0aW9uYWwgcmVxdWVzdCB0eXBlIHBhcmFtZXRlciB0aHVzIGFkZGVkIGl0Lgor
CisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS1ncmFtbWFy
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6bWFya2VyQXNUZXh0KTog
c3RhdGljIGhlbHBlciBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya2Vy
c0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KTogQWRkZWQuIEEgaGVscGVyIGZvciB0ZXN0aW5nLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0Zvcik6IEV4dHJh
Y3RlZCBmcm9tIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoKQorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3Ip
OiBBZGRlZCBhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6bWFy
a0F0KTogRXh0cmFjdGVkIGZyb20gZGlkQ2hlY2soKSwgQWRkZWQgYSBjaGVjayBmb3IgdGhlIEdy
YW1tYXJEZXRhaWwgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRD
aGVjayk6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRDaGVja2VyQ2xp
ZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eVRleHRD
aGVja2VyQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oOgorCiAyMDExLTAzLTEzICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGIzZmVkYzE0NDgyNjkyN2MwNTg1ZWUwN2ZiN2ZlYmQ5ZmYyYjA5YmEuLjRl
ZmNjMWZmMGVhZmRhMjhhOWVjMTJhZWYzMzA0ZmEwYjkyNzRhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0yOTMsNyArMjkzLDcgQEAgX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXI2YXBwZW5k
RVBLY2oKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyQzFFUEtjaQogX19aTjdXZWJDb3JlMTJT
aGFyZWRCdWZmZXJDMUV2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKLV9fWk43V2Vi
Q29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOVNwZWxsQ2hl
Y2tpbmdSZXN1bHRFTG0wRUVFCitfX1pON1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0Vp
UktOM1dURjZWZWN0b3JJTlNfMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUVFCiBfX1pON1dlYkNv
cmUxMlRleHRFbmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJUZXh0SXRl
cmF0b3IxMXJhbmdlTGVuZ3RoRVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJh
dG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRFaWliCkBAIC0xMjA1
LDYgKzEyMDUsNyBAQCBfX1pOSzdXZWJDb3JlNkVkaXRvcjE3c2VsZWN0aW9uSGFzU3R5bGVFaVJL
TjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTZFZGl0b3IxN3Nob3VsZERlbGV0ZVJhbmdlRVBO
U181UmFuZ2VFCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjIzZ2V0Q29tcG9zaXRpb25TZWxlY3Rpb25F
UmpTMV8KIF9fWk5LN1dlYkNvcmU2RWRpdG9yMzBhcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1l
bnRFdgorX19aTks3V2ViQ29yZTZFZGl0b3IzMG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjMxZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjM0c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtl
ckZvckVpaQogX19aTks3V2ViQ29yZTZFZGl0b3IzN2Jhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2Vs
ZWN0aW9uU3RhcnRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhh
NDM5MTBhOWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLmU3ZGRkNGE4YzY2ZDU3MWM5YTVjNTQxM2Nk
OGUwODIwNjlhNTVmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTY0LDcgKzY0
LDYgQEAKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJSZW1vdmVGb3JtYXRDb21tYW5kLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTQ0MCw3ICs0MzksNyBAQCB2b2lkIEVkaXRv
cjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50LAogCiAgICAgTm9kZSogbm9kZVRvQ2hlY2sgPSBtX2ZyYW1lLT5zZWxlY3Rp
b24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmIChtX3NwZWxsQ2hlY2tlci0+Y2Fu
Q2hlY2tBc3luY2hyb25vdXNseShub2RlVG9DaGVjaykpCi0gICAgICAgIG1fc3BlbGxDaGVja2Vy
LT5yZXF1ZXN0Q2hlY2tpbmdGb3Iobm9kZVRvQ2hlY2spOworICAgICAgICBtX3NwZWxsQ2hlY2tl
ci0+cmVxdWVzdENoZWNraW5nRm9yKHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKE1hcmtTcGVsbGlu
ZyB8IE1hcmtHcmFtbWFyKSwgbm9kZVRvQ2hlY2spOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFj
ZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNl
bWVudCwgYm9vbCBzbWFydFJlcGxhY2UpCkBAIC0yMjcwLDI2ICsyMjY5LDggQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5n
T3B0aW9ucyB0ZXh0Q2gKICAgICB9CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBy
ZXN1bHRzOwotICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMgPSAwOwotICAgIGlmIChzaG91bGRN
YXJrU3BlbGxpbmcpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nOwotICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKLSAgICAgICAgY2hlY2tpbmdUeXBl
cyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rp
b25QYW5lbCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVj
dGlvbjsKLSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7Ci0gICAgICAgIGlmIChp
c0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGVMaW5rOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4
dENoZWNraW5nVHlwZVF1b3RlOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0
aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdU
eXBlRGFzaDsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgp
KQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1l
bnQ7Ci0gICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uOwotICAgIH0KLSAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1Rl
eHRPZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRM
ZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CisgICAgdGV4dENoZWNrZXIoKS0+Y2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFncmFwaC50
ZXh0TGVuZ3RoKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHRDaGVja2luZ1R5cGVNYXNrRm9yKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKIAog
I2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICAvLyBJZiB0aGlzIGNoZWNraW5n
IGlzIG9ubHkgZm9yIHNob3dpbmcgY29ycmVjdGlvbiBwYW5lbCwgd2Ugc2hvdWxkbid0IGJvdGhl
ciB0byBtYXJrIG1pc3NwZWxsaW5ncy4KQEAgLTM1OTAsMTAgKzM1NzEsOTEgQEAgYm9vbCBFZGl0
b3I6OnNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZyb20sIGludCBsZW5n
dGgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgU3RyaW5nIG1hcmtlckFz
VGV4dChjb25zdCBEb2N1bWVudE1hcmtlciYgbWFya2VyKQoreworICAgIFN0cmluZyByZXN1bHQ7
CisgICAgaWYgKERvY3VtZW50TWFya2VyOjpTcGVsbGluZyAmIG1hcmtlci50eXBlKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCJTcGVsbGluZyAiKTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIgJiBtYXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiR3JhbW1hciAiKTsK
KyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCAmIG1hcmtlci50eXBlKQorICAgICAg
ICByZXN1bHQuYXBwZW5kKCJUZXh0TWF0Y2ggIik7CisgICAgaWYgKERvY3VtZW50TWFya2VyOjpS
ZXBsYWNlbWVudCAmIG1hcmtlci50eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJSZXBsYWNl
bWVudCAiKTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IgJiBt
YXJrZXIudHlwZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiQ29ycmVjdGlvbkluZGljYXRvciAi
KTsKKyAgICBpZiAoRG9jdW1lbnRNYXJrZXI6OlJlamVjdGVkQ29ycmVjdGlvbiAmIG1hcmtlci50
eXBlKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJSZWplY3RlZENvcnJlY3Rpb24gIik7CisgICAg
aWYgKERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9uICYgbWFya2VyLnR5cGUp
CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gIik7CisgICAg
cmVzdWx0LmFwcGVuZCgiWyIpOworICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIobWFy
a2VyLnN0YXJ0T2Zmc2V0KSk7CisgICAgcmVzdWx0LmFwcGVuZCgiLCIpOworICAgIHJlc3VsdC5h
cHBlbmQoU3RyaW5nOjpudW1iZXIobWFya2VyLmVuZE9mZnNldCkpOworICAgIHJlc3VsdC5hcHBl
bmQoIl0iKTsKKyAgICBpZiAoIW1hcmtlci5kZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiKCIpOworICAgICAgICByZXN1bHQuYXBwZW5kKG1hcmtlci5kZXNj
cmlwdGlvbik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIikiKTsKKyAgICB9CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitTdHJpbmcgRWRpdG9yOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRB
c1RleHQoKSBjb25zdAoreworICAgIE5vZGUqIG5vZGUgPSBmaW5kRmlyc3RNYXJrYWJsZShtX2Zy
YW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICBpZiAoIW5v
ZGUpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyByZXN1bHQ7CisgICAg
VmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5tYXJrZXJzRm9yTm9kZShub2RlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtYXJrZXJBc1Rl
eHQobWFya2Vyc1tpXSkpOworICAgICAgICBpZiAoaSArIDEgPCBtYXJrZXJzLnNpemUoKSkKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiBGbG9hdFJlY3QgRWRpdG9yOjp3aW5kb3dSZWN0Rm9yUmFuZ2UoY29uc3QgUmFuZ2Uq
IHJhbmdlKSBjb25zdAogewogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lKCktPnZpZXcoKTsK
ICAgICByZXR1cm4gdmlldyA/IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UmVjdChyYW5nZS0+
Ym91bmRpbmdSZWN0KCkpKSA6IEZsb2F0UmVjdCgpOwogfSAgICAgICAgCiAKK1RleHRDaGVja2lu
Z1R5cGVNYXNrIEVkaXRvcjo6dGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0
aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zKQoreworICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5n
ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKKyAgICBib29sIHNob3VsZE1h
cmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOworICAgIGJvb2wg
c2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93Q29y
cmVjdGlvblBhbmVsOworCisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9
IDA7CisgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKKyAgICAgICAgY2hlY2tpbmdUeXBlcyB8
PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQor
ICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGlm
IChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQorICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAg
ICBib29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQ
ZXJmb3JtUmVwbGFjZW1lbnQ7CisgICAgaWYgKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCkgewor
ICAgICAgICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAg
ICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgaWYgKGlz
QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2lu
Z1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgaWYgKGlzQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZURhc2g7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNl
bWVudEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZVJlcGxhY2VtZW50OworICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIGlzQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICB9CisjZW5kaWYKKworICAg
IHJldHVybiBjaGVja2luZ1R5cGVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZlMjE1NDA4
NWM1NjllLi44YmU0NzM2MGRiMmI2Y2ZiY2E0YWE1NWZkZDI4MzRlYWI4MDkyNGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFZGl0b3JJbnNl
cnRBY3Rpb24uaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlbGVjdGlv
bkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIldyaXRp
bmdEaXJlY3Rpb24uaCIKQEAgLTYyLDcgKzYzLDYgQEAgY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNz
IFNpbXBsZUZvbnREYXRhOwogY2xhc3MgU3BlbGxDaGVja2VyOwogY2xhc3MgVGV4dDsKLWNsYXNz
IFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRp
b25VbmRlcmxpbmUgewpAQCAtMjIyLDYgKzIyMiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJr
TWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJz
dE1pc3NwZWxsaW5nUmFuZ2UpOwogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pOworCisgICAgZW51bSBU
ZXh0Q2hlY2tpbmdPcHRpb25GbGFncyB7CisgICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwK
KyAgICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCisgICAgICAgIFBlcmZvcm1SZXBsYWNlbWVu
dCA9IDEgPDwgMiwKKyAgICAgICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKKyAgICB9
OworICAgIHR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nT3B0aW9uczsKKwogI2lmIFBMQVRG
T1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CiAgICAgdm9pZCBsb3dl
cmNhc2VXb3JkKCk7CkBAIC0yMzksMTQgKzI0OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2ds
ZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGlu
Z0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb24oKTsKLSAgICBlbnVtIFRleHRDaGVja2luZ09wdGlvbkZsYWdzIHsKLSAgICAgICAg
TWFya1NwZWxsaW5nID0gMSA8PCAwLAotICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKLSAg
ICAgICAgUGVyZm9ybVJlcGxhY2VtZW50ID0gMSA8PCAyLAotICAgICAgICBTaG93Q29ycmVjdGlv
blBhbmVsID0gMSA8PCAzLAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tp
bmdPcHRpb25zOwotCiAgICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcklu
UmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSog
Z3JhbW1hclJhbmdlKTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogI2VuZGlmCkBAIC0zNzgsNiArMzc5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7CiAj
ZW5kaWYKIAorICAgIFN0cmluZyBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKSBjb25z
dDsKICAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoaW50IGZyb20s
IGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlU3BlbGxBbmRDb3JyZWN0aW9uTWFy
a2Vyc0Zyb21Xb3Jkc1RvQmVFZGl0ZWQoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQXRXb3Jk
Qm91bmRhcnkpOwogCkBAIC00MTEsNiArNDEzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAgICB2b2lkIHJldmVhbFNlbGVj
dGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc09y
QmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nLCBS
ZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOworICAgIFRleHRDaGVja2luZ1R5
cGVNYXNrIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMpOwogCiAg
ICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IDc5ODhlNDE2MTBhNTE5YjZhNWNiMjYzMGM2MTBl
YmVhOGZhZTVmMjEuLmY1MjRhMmY0ODk3NjIzNGRlNjY3ZmU4OGRjOWY0ODY0M2M3YjdjZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTEwMCwxMyArMTAwLDE1
IEBAIGJvb2wgU3BlbGxDaGVja2VyOjppc0NoZWNrYWJsZShOb2RlKiBub2RlKSBjb25zdAogICAg
IHJldHVybiBub2RlICYmIG5vZGUtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2Vy
OjpyZXF1ZXN0Q2hlY2tpbmdGb3IoTm9kZSogbm9kZSkKK3ZvaWQgU3BlbGxDaGVja2VyOjpyZXF1
ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgTm9kZSogbm9kZSkKIHsK
ICAgICBBU1NFUlQoY2FuQ2hlY2tBc3luY2hyb25vdXNseShub2RlKSk7CisgICAgLy8gQ3VycmVu
dGx5IHdlIG9ubHkgc3VwcG9ydHMgc3BlbGxpbmcgYW5kIGdyYW1tYXIKKyAgICBBU1NFUlQoISht
YXNrICYgfihUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cikpKTsKIAogICAgIGlmICghaW5pdFJlcXVlc3Qobm9kZSkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2NsaWVudC0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVu
Y2UsIG1fcmVxdWVzdFRleHQpOworICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyh0aGlzLCBtX3JlcXVlc3RTZXF1ZW5jZSwgbWFzaywgbV9yZXF1ZXN0VGV4dCk7CiB9CiAKIHN0
YXRpYyBib29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50
IGRpc3RhbmNlKQpAQCAtMTMxLDcgKzEzMywyNyBAQCBzdGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0
b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0b3IsIGludCBkaXN0YW5jZSkKICAgICByZXR1cm4g
ZmFsc2U7ICAgIAogfQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNl
LCBjb25zdCBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitib29sIFNwZWxs
Q2hlY2tlcjo6bWFya0F0KGNvbnN0IFBvc2l0aW9uSXRlcmF0b3ImIHN0YXJ0LCBpbnQgbG9jYXRp
b24sIGludCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24pIGNvbnN0Cit7CisgICAgUG9zaXRpb25JdGVyYXRvciBlbmQgPSBz
dGFydDsKKyAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIGxlbmd0aCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIFVzZXJzIG9yIEphdmFTY3JpcHQgYXBwbGljYXRpb25zIG1h
eSBjaGFuZ2UgdGV4dCB3aGlsZSBhIHNwZWxsLWNoZWNrZXIgY2hlY2tzIGl0cworICAgIC8vIHNw
ZWxsaW5ncyBpbiB0aGUgYmFja2dyb3VuZC4gVG8gYXZvaWQgYWRkaW5nIG1hcmtlcnMgdG8gdGhl
IHdvcmRzIG1vZGlmaWVkIGJ5IHVzZXJzIG9yCisgICAgLy8gSmF2YVNjcmlwdCBhcHBsaWNhdGlv
bnMsIHJldHJpZXZlIHRoZSB3b3JkcyBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBhbmQgY29tcGFy
ZSB0aGVtIHdpdGgKKyAgICAvLyB0aGUgb3JpZ2luYWwgb25lcy4KKyAgICBSZWZQdHI8UmFuZ2U+
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX3JlcXVlc3ROb2RlLT5kb2N1bWVudCgpLCBzdGFydCwg
ZW5kKTsKKworICAgIC8vIEZJWE1FOiBVc2UgdGV4dENvbnRlbnQoKSBjb21wYXRpYmxlIHN0cmlu
ZyBjb252ZXJzaW9uLgorICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHJhbmdlLT50ZXh0KCk7Cisg
ICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vic3RyaW5nKGxvY2F0aW9uLCBsZW5n
dGgpOworICAgIGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCisgICAgICAgIG1fcmVxdWVzdE5v
ZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLmdldCgpLCB0eXBlLCBk
ZXNjcmlwdGlvbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU3BlbGxDaGVja2VyOjpk
aWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKQogewogICAgIGlmICghaXNWYWxpZChzZXF1ZW5jZSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE0NCwzMCArMTY2LDM2IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2Vx
dWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYgcmVzCiAgICAgaW50IHN0
YXJ0T2Zmc2V0ID0gMDsKICAgICBQb3NpdGlvbkl0ZXJhdG9yIHN0YXJ0ID0gZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKG1fcmVxdWVzdE5vZGUuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXS50
eXBlKCkgIT0gRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nICYmIHJlc3VsdHNbaV0udHlwZSgpICE9
IERvY3VtZW50TWFya2VyOjpHcmFtbWFyKQorICAgICAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBz
dXBwb3J0cyBzcGVsbGluZyBhbmQgZ3JhbW1hcgorICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBl
ICYgfihUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBUbyBhdm9pZCBtb3ZpbmcgdGhl
IHBvc2l0aW9uIGJhY2t3YXJkLCB3ZSBhc3N1bWUgdGhlIGdpdmVuIHJlc3VsdHMgYXJlIHNvcnRl
ZCB3aXRoCiAgICAgICAgIC8vIHN0YXJ0T2Zmc2V0IGFzIHRoZSBvbmVzIHJldHVybmVkIGJ5IFtO
U1NwZWxsQ2hlY2tlciByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzpdLgotICAgICAgICBBU1NFUlQo
c3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbigpKTsKLSAgICAgICAgaWYgKCFmb3J3
YXJkSXRlcmF0b3Ioc3RhcnQsIHJlc3VsdHNbaV0ubG9jYXRpb24oKSAtIHN0YXJ0T2Zmc2V0KSkK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQb3NpdGlvbkl0ZXJhdG9yIGVuZCA9IHN0YXJ0
OwotICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIHJlc3VsdHNbaV0ubGVuZ3RoKCkp
KQorICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbik7Cisg
ICAgICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uIC0g
c3RhcnRPZmZzZXQpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBpZiAo
cmVzdWx0c1tpXS50eXBlICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSB7CisgICAgICAgICAg
ICBpZiAoIW1hcmtBdChzdGFydCwgcmVzdWx0c1tpXS5sb2NhdGlvbiwgcmVzdWx0c1tpXS5sZW5n
dGgsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZywgU3RyaW5nKCkpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSAmIFRleHRD
aGVja2luZ1R5cGVHcmFtbWFyKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8
IHJlc3VsdHNbaV0uZGV0YWlscy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIFBvc2l0
aW9uSXRlcmF0b3IgZ3JhbW1hclN0YXJ0ID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKCFm
b3J3YXJkSXRlcmF0b3IoZ3JhbW1hclN0YXJ0LCByZXN1bHRzW2ldLmRldGFpbHNbal0ubG9jYXRp
b24gLSBzdGFydE9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIFBvc2l0aW9uSXRlcmF0b3IgZ3JhbW1hckVuZCA9IGdy
YW1tYXJTdGFydDsKKyAgICAgICAgICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihncmFtbWFy
RW5kLCByZXN1bHRzW2ldLmRldGFpbHNbal0ubGVuZ3RoKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKCFtYXJrQXQoZ3JhbW1hclN0YXJ0LCByZXN1bHRz
W2ldLmRldGFpbHNbal0ubG9jYXRpb24sIHJlc3VsdHNbaV0uZGV0YWlsc1tqXS5sZW5ndGgsIERv
Y3VtZW50TWFya2VyOjpHcmFtbWFyLCByZXN1bHRzW2ldLmRldGFpbHNbal0udXNlckRlc2NyaXB0
aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KIAotICAgICAgICAvLyBVc2VycyBvciBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucyBtYXkgY2hh
bmdlIHRleHQgd2hpbGUgYSBzcGVsbC1jaGVja2VyIGNoZWNrcyBpdHMKLSAgICAgICAgLy8gc3Bl
bGxpbmdzIGluIHRoZSBiYWNrZ3JvdW5kLiBUbyBhdm9pZCBhZGRpbmcgbWFya2VycyB0byB0aGUg
d29yZHMgbW9kaWZpZWQgYnkgdXNlcnMgb3IKLSAgICAgICAgLy8gSmF2YVNjcmlwdCBhcHBsaWNh
dGlvbnMsIHJldHJpZXZlIHRoZSB3b3JkcyBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBhbmQgY29t
cGFyZSB0aGVtIHdpdGgKLSAgICAgICAgLy8gdGhlIG9yaWdpbmFsIG9uZXMuCi0gICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVxdWVzdE5vZGUtPmRvY3VtZW50
KCksIHN0YXJ0LCBlbmQpOwotICAgICAgICAvLyBGSVhNRTogVXNlIHRleHRDb250ZW50KCkgY29t
cGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KLSAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0g
cmFuZ2UtPnRleHQoKTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vi
c3RyaW5nKHJlc3VsdHNbaV0ubG9jYXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSk7Ci0gICAg
ICAgIGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCi0gICAgICAgICAgICBtX3JlcXVlc3ROb2Rl
LT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgcmVzdWx0c1tp
XS50eXBlKCkpOwotCi0gICAgICAgIHN0YXJ0T2Zmc2V0ID0gcmVzdWx0c1tpXS5sb2NhdGlvbigp
OworICAgICAgICBzdGFydE9mZnNldCA9IHJlc3VsdHNbaV0ubG9jYXRpb247CiAgICAgfQogCiAg
ICAgY2xlYXJSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRl
eCBkMzk0MGU1MDRmYWE0NmE5NjVjNzM4MDRiNTljZjcxMWY3NmRjYmY4Li5kMDk3OWVmZjJkMjUx
N2FjNTJlYTg3ZGE2NDk2ZjUwYTdkY2ZkOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxD
aGVja2VyLmgKQEAgLTI3LDMyICsyNywxNCBAQAogI2RlZmluZSBTcGVsbENoZWNrZXJfaAogCiAj
aW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBOb2RlOwotCi1j
bGFzcyBTcGVsbENoZWNraW5nUmVzdWx0IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVsbENo
ZWNraW5nUmVzdWx0KERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUgPSBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmcsIGludCBsb2NhdGlvbiA9IDAsIGludCBsZW5ndGggPSAwKQotICAgICAg
ICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCi0gICAgICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQotICAgIHsKLSAgICB9Ci0KLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9IAotICAgIGludCBsb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLQotcHJpdmF0ZToKLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSBtX3R5cGU7Ci0gICAgaW50IG1fbG9jYXRpb247Ci0gICAgaW50IG1fbGVuZ3Ro
OwotfTsKK2NsYXNzIFBvc2l0aW9uSXRlcmF0b3I7CiAKIGNsYXNzIFNwZWxsQ2hlY2tlciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3BlbGxDaGVja2VyKTsKQEAgLTY1LDEyICs0NywxMyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1c3koKSBjb25zdDsKICAgICBib29sIGlzVmFsaWQoaW50
IHNlcXVlbmNlKSBjb25zdDsKICAgICBib29sIGlzQ2hlY2thYmxlKE5vZGUqKSBjb25zdDsKLSAg
ICB2b2lkIHJlcXVlc3RDaGVja2luZ0ZvcihOb2RlKik7Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQg
c2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYpOworICAgIHZvaWQg
cmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrLCBOb2RlKik7CisgICAgdm9p
ZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
Jik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpbml0UmVxdWVzdChOb2RlKik7CiAgICAgdm9pZCBj
bGVhclJlcXVlc3QoKTsKKyAgICBib29sIG1hcmtBdChjb25zdCBQb3NpdGlvbkl0ZXJhdG9yJiBz
dGFydCwgaW50IGxvY2F0aW4sIGludCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKSBjb25zdDsKIAogICAgIEZyYW1lKiBtX2ZyYW1l
OwogICAgIFRleHRDaGVja2VyQ2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAppbmRleCBlZDkyZjExMmNiYTg3N2ZkNTJjMzQ2NDA3ZjViNGZmZTI2MTIwZjZj
Li40NmFlMTUyYmNlMDgwODk2ZTM4MzA4ZDI5NGZkOGU3MDk1ZjU3NWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00MDcsMTEgKzQwNywxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0
b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFy
KiwgaW50LCB1aW50NjRfdCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CisgICAg
dmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIq
LCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KIH07CiAKIGNs
YXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKaW5kZXggYWNhYTAy
Y2Y2MmEwNzBmOTBjZjk0YzZlMTI2YzVkMGQ2N2JmYmI4ZS4uOGIxZDgxMjIyNGY1NTU2YmNmODk2
MzdlOTRjZGYwYjZhMmRiMmQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENoZWNrZXJDbGllbnQuaApAQCAtNTMsNiArNTMsOCBAQCBlbnVtIFRleHRDaGVja2lu
Z1R5cGUgewogICAgIFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICA9IDEgPDwgOQogfTsKIAor
dHlwZWRlZiB1aW50NjRfdCBUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKwogc3RydWN0IFRleHRDaGVj
a2luZ1Jlc3VsdCB7CiAgICAgVGV4dENoZWNraW5nVHlwZSB0eXBlOwogICAgIGludCBsb2NhdGlv
bjsKQEAgLTcxLDE0ICs3MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0
b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVs
bGVkV29yZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25z
dCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3Jh
bW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpID0gMDsKICNpZiBQTEFURk9STShN
QUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBV
Q2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEZvciBzcGVsbGNoZWNrZXJzIHRoYXQgc3VwcG9y
dCBtdWx0aXBsZSBsYW5ndWFnZXMsIGl0J3Mgb2Z0ZW4gaW1wb3J0YW50IHRvIGJlIGFibGUgdG8g
aWRlbnRpZnkgdGhlIGxhbmd1YWdlIGluIG9yZGVyIHRvCiAgICAgLy8gcHJvdmlkZSBtb3JlIGFj
Y3VyYXRlIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuIENhbGxlciBjYW4gcGFzcyBpbiBtb3JlIHRl
eHQgaW4gImNvbnRleHQiIHRvIGFpZCBzdWNoIHNwZWxsY2hlY2tlcnMgb24gbGFuZ3VhZ2UKICAg
ICAvLyBpZGVudGlmaWNhdGlvbi4gTm9yYW1sbHkgaXQncyB0aGUgdGV4dCBzdXJyb3VuZGluZyB0
aGUgIndvcmQiIGZvciB3aGljaCB3ZSBhcmUgZ2V0dGluZyBjb3JyZWN0aW9uIHN1Z2dlc3Rpb25z
LgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQs
IGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50
LCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0
cmluZyYpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjFlMzk2
NDYyNjcxZDE1NjI5YWMyMGM0ZDAyNTc5NjZlOWQwNmZkNC4uNTdhM2UyMDg4MWIyMGI4YzEyN2Y5
ZTRmOWZkZWI2NjliYmI5Nzc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0
b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENo
ZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjA4NQorCisgICAgICAgIEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgorICAg
ICAgICAKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9F
ZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxl
dGlvbkltcGwuY3BwCisKIDIwMTEtMDMtMTEgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJvbGxvdXQgdGhlIGNocm9taXVtIGRlcHMgcm9sbCBhcyBpdCBhZGRz
IGEgZGVwZW5kZW5jeSBvbiBhIGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCAzOGQ0ZjVlZjg5MjM5ZTA0NWFhZjVmMGY5MTM0
NzI2YTM4YTYyMjk5Li4xN2UwZDgyNDFkNTk3MDRkZWFmN2ViNjY1MGNhMTI0OGY0MjE3YzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApA
QCAtODcxLDcgKzg3MSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09m
U3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAgICAqbWlzc3BlbGxp
bmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBpZGVudGlmaWVy
LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmIHRleHQp
CiB7CiAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+cmVxdWVzdENoZWNraW5nT2ZUZXh0KHRleHQs
IG5ldyBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbChpZGVudGlmaWVyLCBzZW5kZXIpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAppbmRl
eCBiODFmYjU2MDU0MzBiZjJmNWYzM2RlNDg3NGMwYjY2ZjZmN2NjNDZlLi4yZWJjNmVhNTgwNGIy
NTNmYmU0MTYzODY3NDViOTg3MTE3YWFmZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tl
ciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdD
b21wbGV0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uSW1wbC5jcHAKaW5kZXggMjc1OTc5MDJhYWEyMjVmMTIzODk0NGU4ZDVl
NTQ1MDdhNDFlMTAxZC4uNzcwOWM2YjJkNjU1NjRkOGE4NTBlNWRmOGQ3MzEzYmQ4NjFkNzRjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29t
cGxldGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRD
aGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcApAQCAtMzQsMTYgKzM0LDM2IEBACiAjaW5jbHVkZSAi
U3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCiAjaW5j
bHVkZSAiV2ViVmVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgVmVjdG9y
PFNwZWxsQ2hlY2tpbmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3QgV2ViVmVjdG9yPFdlYlRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitzdGF0aWMgVGV4dENoZWNraW5nVHlwZSB0b0Nv
cmVDaGVja2luZ1R5cGUoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvciBlcnJvcikKIHsKLSAg
ICBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4gY29yZVJlc3VsdHM7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgKytpKQotICAgICAgICBjb3JlUmVzdWx0cy5h
cHBlbmQoU3BlbGxDaGVja2luZ1Jlc3VsdChzdGF0aWNfY2FzdDxEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZT4ocmVzdWx0c1tpXS5lcnJvcigpKSwgcmVzdWx0c1tpXS5wb3NpdGlvbigpLCByZXN1
bHRzW2ldLmxlbmd0aCgpKSk7CisgICAgc3dpdGNoIChlcnJvcikgeworICAgIGNhc2UgV2ViS2l0
OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yU3BlbGxpbmc6CisgICAgICAgIHJldHVybiBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgY2FzZSBXZWJLaXQ6OldlYlRleHRDaGVja2lu
Z1Jlc3VsdDo6RXJyb3JHcmFtbWFyOgorICAgICAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZUdy
YW1tYXI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICB9Cit9CisKK3N0YXRpYyBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQoreworICAgIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IGNvcmVSZXN1bHRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0
cy5zaXplKCk7ICsraSkgeyAKKyAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IGNvcmVSZXN1bHQ7
CisgICAgICAgIGNvcmVSZXN1bHQudHlwZSA9IHRvQ29yZUNoZWNraW5nVHlwZShyZXN1bHRzW2ld
LmVycm9yKCkpOworICAgICAgICBjb3JlUmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0c1tpXS5wb3Np
dGlvbigpOworICAgICAgICBjb3JlUmVzdWx0Lmxlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoKCk7
CisgICAgICAgIGNvcmVSZXN1bHRzLmFwcGVuZChjb3JlUmVzdWx0KTsKKyAgICB9CisKICAgICBy
ZXR1cm4gY29yZVJlc3VsdHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBiYmUyZDBkNzQwMDQ1
NDM0NjU0YmVjNDhlZTRiNjllOTE2OTk2MjZhLi45OTk1MzEwYTA5ZjYwODY4MmJkNTY1MTcyY2U2
NTNlZDZkYzk1NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMt
MTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNr
aW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAg
ICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwog
MjAxMS0wMy0xMiAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCmluZGV4IDU3NWE1MGQyNTNkMjk0MDZjNDZkOGEz
NGNhZjM2OGViYWQ4YWU3NjcuLjU2YjMzMDAyZWFhMTdhODViOWIzNzAxNjlkOGJkODQ3M2ZkYzNh
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBn
ZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4
dCwgV1RGOjpWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3Rh
dGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3Ry
aW5nJikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsg
cmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0M2M3NGYzYTA3
YzYyM2RmODc0MWE3ZTFmZTlhNTRkNzBkYzQ5MTIzLi45NTUzYmM2NzI2YTRlMjBjZWRiOTg3MzEx
YTQwZmY0ZThiNTg2OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEt
MDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENo
ZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oOgorICAg
ICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQ6OnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKToKKwogMjAxMS0wMy0xMSAgTWFyY28gUGVlcmVib29tICA8bWFyY29AcGVlcmVib29t
LnVzPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50
RW5jaGFudC5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJD
bGllbnRFbmNoYW50LmgKaW5kZXggYzI5NGEzZDAwZjJkZGU1MDZhYWRhNjA0NzE0YTA1YjVkZDQ0
ODc2MS4uNWQ5M2MwNzIxNmQ5OTViZmUzNmNhZmFkZDk5MGMwYTc4MmY1MmRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNo
YW50LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJD
bGllbnRFbmNoYW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgVGV4dENoZWNrZXJDbGllbnRF
bmNoYW50IDogcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKICAgICAgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29y
ZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFy
T2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpH
cmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJM
ZW5ndGgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RG
OjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4mIGd1ZXNzZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmlu
ZyYpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJD
b3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBj
b25zdCBXVEY6OlN0cmluZyYpIHt9CiAKICAgICAgICAgdm9pZCB1cGRhdGVTcGVsbENoZWNraW5n
TGFuZ3VhZ2UoY29uc3QgY2hhciopOwogICAgICAgICBzdGF0aWMgdm9pZCBmcmVlU3BlbGxDaGVj
a2luZ0xhbmd1YWdlKGdwb2ludGVyLCBncG9pbnRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4
IGIyYWVmY2U4ZGQ4OGY2YmFkOTQ0MjllMGM3YTYzMWI3NWJiM2JhYjMuLjQ4MGNmZjZkZjY2ZDg4
ZDRiMDcwOTExNmY3YzcyMzA2ODUxNTIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFj
dG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRD
aGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcpOgorCiAyMDExLTAzLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oIGIvU291cmNl
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCmluZGV4IGJi
MGQ4YWMxMDVmY2UyMjE1N2E3MDIwNmFhNGMxNGVjNTkwN2EwYjUuLmNjMjFmY2I4NmYyOTE5NGVh
M2U4MTRmYTA1NzNkNWU2NGNjYmExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3Uv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKQEAgLTExMSw3ICsxMTEsNyBA
QCBjbGFzcyBFZGl0b3JDbGllbnRIYWlrdSA6IHB1YmxpYyBFZGl0b3JDbGllbnQsIHB1YmxpYyBU
ZXh0Q2hlY2tlckNsaWVudCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29y
ZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmlu
Zz4mIGd1ZXNzZXMpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3Rh
dGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFi
bGVkKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxs
Q2hlY2tlciosIGludCwgY29uc3QgU3RyaW5nJikge30KKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgICAgIHZpcnR1YWwgVGV4dENo
ZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJv
b2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZWVmMTZiODY3Mjg1NDUy
ZDMzNTIxZmZiM2ZjY2JhOGViMTFkZTQ3NS4uZjhlNzAyOTFlOGU2MjFlNzBhNDYzZGI5NTQ3OGQ2
OTFjNTVhMjI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAzLTEx
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2lu
Z1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAg
ICAgUmVtb3ZlZCBOU1RleHRDaGVja2luZ1Jlc3VsdCB0byBTcGVsbENoZWNraW5nUmVzdWx0IGNv
bnZlcnRpb24sIGFuZCBleHRyYWN0ZWQKKyAgICAgICAgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgdG8g
VGV4dENoZWNraW5nUmVzdWx0IGNvbnZlcnRpbyBmcm9tIGNoZWNrVGV4dE9mUGFyYWdyYXBoIG1l
dGhvZC4KKyAgICAgICAgZm9yIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nIG1ldGhvZC4KKyAgICAg
ICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAodG9Db3JlVGV4
dENoZWNraW5nUmVzdWx0cyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9m
UGFyYWdyYXBoKToKKyAgICAgICAgKC1bV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlciBpbml0
V2l0aFNlbmRlcjpXZWJDb3JlOjpzZXF1ZW5jZTp0eXBlczpXZWJDb3JlOjpyZXN1bHRzOl0pOgor
ICAgICAgICAoLVtXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIHBlcmZvcm1dKToKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIG1hcmtlcnNGb3JTZWxl
Y3Rpb25TdGFydEFzVGV4dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6
CisKIDIwMTEtMDMtMTMgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMWZhMTMyYWQ2YzViZDQz
NzlmZTBiYjg1YzllNmZmMGQ2NmIxMTczNS4uMjc3MTM5ZWY2ODVkY2M1NDE3YTJhMWMxNDI5Mzkw
YjYyYzI5YTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGlu
dCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmly
dHVhbCBXVEY6OlN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29y
ZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0
cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1t
YXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0
aCk7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0
ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBXVEY6OlZlY3RvcjxXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFdURjo6VmVjdG9yPFdlYkNvcmU6
OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
cGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpHcmFtbWFyRGV0YWlsJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlX
aXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3Jk
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBn
dWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIq
LCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rp
b25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6
OlN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0
cmluZywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2Vt
ZW50U3RyaW5ncywgV2ViQ29yZTo6RWRpdG9yKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5l
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0KaW5kZXggNjlkZDU3NDczMWI0NGI0MzBjMjc0NThlNzIzYjQxYzRkZTUxNzRiMC4u
OTc5ZDdiNDc3YzRkZmM1NzRlMTgyN2ExMGIxYTFkNDZjMDIyMmNmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNzk0
LDEyICs3OTQsOSBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmco
Y29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFZlY3RvcgogI2VuZGlmCiB9CiAKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwg
aW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4mIHJlc3VsdHMpCi17CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgTlNTdHJpbmcgKnRleHRTdHJpbmcgPSBb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxVQ2hh
cio+KHRleHQpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKLSAgICBOU0FycmF5ICpp
bmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hl
Y2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5n
dGhdKSB0eXBlczooY2hlY2tpbmdUeXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSkg
b3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRh
ZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOwotICAgIFt0ZXh0U3RyaW5nIHJl
bGVhc2VdOworc3RhdGljIHZvaWQgdG9Db3JlVGV4dENoZWNraW5nUmVzdWx0cyhOU0FycmF5ICpp
bmNvbWluZ1Jlc3VsdHMsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorewogICAgIGZvciAoTlNUZXh0Q2hlY2tp
bmdSZXN1bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewogICAgICAgICBO
U1JhbmdlIHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNU
ZXh0Q2hlY2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07
CkBAIC04NzEsNiArODY4LDE2IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBh
cmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0CiAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQorfQorI2VuZGlmCisK
K3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciog
dGV4dCwgaW50IGxlbmd0aCwgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVj
dG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit7CisjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgTlNTdHJp
bmcgKnRleHRTdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aENoYXJhY3RlcnNOb0Nv
cHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5P
XTsKKyAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3BlbGxDaGVja2VyIHNoYXJl
ZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5nZTpOU01ha2VSYW5nZSgw
LCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczooY2hlY2tpbmdUeXBlc3xOU1RleHRDaGVja2lu
Z1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwgaW5TcGVsbERvY3VtZW50V2l0aFRhZzpzcGVs
bENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29yZENvdW50Ok5VTExdOwor
ICAgIFt0ZXh0U3RyaW5nIHJlbGVhc2VdOworICAgIHRvQ29yZVRleHRDaGVja2luZ1Jlc3VsdHMo
aW5jb21pbmdSZXN1bHRzLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsKICNlbmRpZgogfQogCkBA
IC0xMDE3LDU4ICsxMDI0LDM3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhv
ZFN0YXRlKGJvb2wpCiB7CiAgICAgV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBfc2VuZGVyOwogICAg
IGludCBfc2VxdWVuY2U7CisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgX3R5cGVzOwogICAgIFJl
dGFpblB0cjxOU0FycmF5PiBfcmVzdWx0czsKIH0KLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJD
b3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJlc3VsdHM6
KE5TQXJyYXkqKXJlc3VsdHM7CistIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxD
aGVja2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4
dENoZWNraW5nVHlwZU1hc2spdHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0czsKIC0gKHZv
aWQpcGVyZm9ybTsKLS0gKFdURjo6VmVjdG9yPFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+
KSBfY29yZVJlc3VsdHM7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJFZGl0b3JTcGVsbENo
ZWNrUmVzcG9uZGVyCi0tIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSByZXN1bHRzOihOU0FycmF5KilyZXN1bHRz
CistIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2Vx
dWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sp
dHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0cwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5p
dF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIF9zZW5kZXIgPSBz
ZW5kZXI7CiAgICAgX3NlcXVlbmNlID0gc2VxdWVuY2U7CisgICAgX3R5cGVzID0gdHlwZXM7CiAg
ICAgX3Jlc3VsdHMgPSByZXN1bHRzOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKXBl
cmZvcm0KIHsKLSAgICBfc2VuZGVyLT5kaWRDaGVjayhfc2VxdWVuY2UsIFtzZWxmIF9jb3JlUmVz
dWx0c10pOwotfQotCi1zdGF0aWMgU3BlbGxDaGVja2luZ1Jlc3VsdCB0b0NvcmVTcGVsbGluZ1Jl
c3VsdChOU1RleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0KQotewotICAgIE5TVGV4dENoZWNraW5n
VHlwZSB0eXBlID0gW3Jlc3VsdCByZXN1bHRUeXBlXTsKLSAgICBOU1JhbmdlIHJhbmdlID0gW3Jl
c3VsdCByYW5nZV07Ci0gICAgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgY29yZVR5cGU7Ci0g
ICAgaWYgKHR5cGUgJiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZykKLSAgICAgICAgY29yZVR5
cGUgPSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc7Ci0gICAgZWxzZSBpZiAodHlwZSAmIE5TVGV4
dENoZWNraW5nVHlwZUdyYW1tYXIpCi0gICAgICAgIGNvcmVUeXBlID0gRG9jdW1lbnRNYXJrZXI6
OkdyYW1tYXI7Ci0gICAgZWxzZQotICAgICAgICBjb3JlVHlwZSA9IERvY3VtZW50TWFya2VyOjpB
bGxNYXJrZXJzOwotCi0gICAgcmV0dXJuIFNwZWxsQ2hlY2tpbmdSZXN1bHQoY29yZVR5cGUsIHJh
bmdlLmxvY2F0aW9uLCByYW5nZS5sZW5ndGgpOwotfQotCi0tIChXVEY6OlZlY3RvcjxXZWJDb3Jl
OjpTcGVsbENoZWNraW5nUmVzdWx0PilfY29yZVJlc3VsdHMKLXsKLSAgICBXVEY6OlZlY3RvcjxX
ZWJDb3JlOjpTcGVsbENoZWNraW5nUmVzdWx0PiBjb3JlUmVzdWx0czsKLSAgICBjb3JlUmVzdWx0
cy5yZXNlcnZlQ2FwYWNpdHkoW19yZXN1bHRzLmdldCgpIGNvdW50XSk7Ci0gICAgZm9yIChOU1Rl
eHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0IGluIF9yZXN1bHRzLmdldCgpKQotICAgICAgICBjb3Jl
UmVzdWx0cy5hcHBlbmQodG9Db3JlU3BlbGxpbmdSZXN1bHQocmVzdWx0KSk7Ci0gICAgcmV0dXJu
IGNvcmVSZXN1bHRzOworICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRz
OworICAgIHRvQ29yZVRleHRDaGVja2luZ1Jlc3VsdHMoX3Jlc3VsdHMuZ2V0KCksIF90eXBlcywg
Y29yZVJlc3VsdHMpOworICAgIF9zZW5kZXItPmRpZENoZWNrKF9zZXF1ZW5jZSwgY29yZVJlc3Vs
dHMpOwogfQogCiBAZW5kCiAjZW5kaWYKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgc2VxdWVu
Y2UsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IHNlcXVlbmNl
LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBjb25zdCBTdHJp
bmcmIHRleHQpCiB7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpCiAgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAs
IHRleHQubGVuZ3RoKCkpOwpAQCAtMTA3Niw3ICsxMDYyLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc2VuZGVy
LCBpbnQKICAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmc6dGV4dCByYW5nZTpyYW5nZSB0eXBlczpOU1RleHRDaGVja2luZ0FsbFN5
c3RlbVR5cGVzIG9wdGlvbnM6MCBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOjAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRl
Z2VyLCBOU0FycmF5KiByZXN1bHRzLCBOU09ydGhvZ3JhcGh5KiwgTlNJbnRlZ2VyKSB7CiAgICAg
ICAgICAgICBbY3VycmVudExvb3AgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihwZXJmb3JtKSAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6W1tbV2ViRWRpdG9yU3Bl
bGxDaGVja1Jlc3BvbmRlciBhbGxvY10gaW5pdFdpdGhTZW5kZXI6c2VuZGVyIHNlcXVlbmNlOnNl
cXVlbmNlIHJlc3VsdHM6cmVzdWx0c10gYXV0b3JlbGVhc2VdCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGFyZ2V0OltbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxs
b2NdIGluaXRXaXRoU2VuZGVyOnNlbmRlciBzZXF1ZW5jZTpzZXF1ZW5jZSB0eXBlczpjaGVja2lu
Z1R5cGVzIHJlc3VsdHM6cmVzdWx0c10gYXV0b3JlbGVhc2VdCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Om5pbCBvcmRlcjowIG1vZGVzOltOU0FycmF5IGFycmF5V2l0
aE9iamVjdDpOU0RlZmF1bHRSdW5Mb29wTW9kZV1dOwogICAgICAgICB9XTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMWU4OGFmYzAyYmIyZWYyYTUyNjVl
NzlmYWQwZGUyNDBiNjAxMGZjNy4uYWZiNjliMDM1ODkyOTA0MTBhZTYyMzBlNDA0MTgzZjQ2ZjZk
NTRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xMzA4LDYgKzEz
MDgsMTQgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCiAgICAgcmV0dXJuIGNvcmVGcmFtZS0+bGF5ZXJUcmVlQXNUZXh0KCk7
CiB9CiAKKy0gKE5TU3RyaW5nICopbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0Cit7Cisg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7CisgICAgaWYgKCFjb3Jl
RnJhbWUpCisgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nXTsKKyAgICByZXR1cm4gY29y
ZUZyYW1lLT5lZGl0b3IoKS0+bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCk7Cit9CisK
IC0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClmcm9tIGxlbmd0aDooaW50KWxlbmd0aAog
ewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKaW5kZXggYjQ5NDI3ZTI1ZDE2NWZh
ZGM2YjFlYzZhMTNiN2M2NmY4NGNkYTg3Ni4uNDcwOWQ0NDFiODA5YzEwODUwMzU5NTU2YWVlMWZi
ZTRkOWU2MTcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0
ZS5oCkBAIC0xNDIsNiArMTQyLDcgQEAgdHlwZWRlZiBlbnVtIHsKIAogLy8gUmV0dXJucyB3aGV0
aGVyIHRoZXJlIGlzIGEgc3BlbGxpbmcgbWFya2VyIGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2Yg
dGhlIGZvY3VzZWQgbm9kZS4KIC0gKEJPT0wpaGFzU3BlbGxpbmdNYXJrZXI6KGludClsb2NhdGlv
biBsZW5ndGg6KGludClsZW5ndGg7CistIChOU1N0cmluZyAqKW1hcmtlcnNGb3JTZWxlY3Rpb25T
dGFydEFzVGV4dDsKIAogLy8gVGhlIHRvcCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLgogLSAo
aWQpYWNjZXNzaWJpbGl0eVJvb3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDJhYWVmNTZmYzYxZDRjOTBh
YjljYzY4Njk0YWM2OTAxODBlNDE0YTAuLjZjMDE1ZWQwNGQzOGJlMTJhMmQyMDg4YTRhZTZhNDNi
NTk1NGE2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVz
dWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudFF0OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMt
MTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IGF0dGVtcHQgYXQgYnVpbGQgZml4IQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCmluZGV4IDA0NTA2MDM1MzkwNGMwNTVkN2NjZjJhZDQ2
MWY1Y2I4ZTgxYWUxYTAuLjBkOGU4YzY3OTg0ZTlhZDFmN2YyYzU2YjZjMGQxY2ZkNjRiZTIxZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
LmgKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNz
ZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0
b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFi
bGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVj
a2VyKiwgaW50LCBjb25zdCBTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQq
IHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgYm9vbCBpc0VkaXRpbmcoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA3ZjMyMDYwNWExMWFhODZkNmEzN2VkYjU3ODY1NWIz
NDQ5OTg4NGUzLi43ODdkMDYzYThkNDZkNDQ1NjI0ZWNlOWRkM2Y1YzgxZjQyMTYyMmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBi
ZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgV2luZG93cyBidWlsZCBmaXggZm9yIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjIxNgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAxOGJlNDAwNmY0
MzkyZDcxYWMwNzQ1MWZiMmE0Nzc4OGQzNjYyNjIwLi5mMzBjNDM0YTcwNGY0Yzc4YThhYzkyNmQ3
MzFmODMzYTY1YmFiYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3Ry
aW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29u
c3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGll
bnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0No
YW5nZUxvZwppbmRleCA3MjRiOTJhYTZjNzA4OGRiZTZiODZjMGM0M2Y2ZWJlOGU0YmJlNzhmLi44
YmQyNjRiNGE5Y2VkZWE2NWQ4Y2EyMmFiMTliYWYzOTllZjUxZWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0
YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFj
ZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRXaW5DRS5oOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRXaW5DRTo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5D
RS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5D
RS5oCmluZGV4IGQ5M2VjYzViOGZkNWUzNWY0NDdmOTIxZTQ3NzUyZGIzMmUyMTQ2MjcuLmEyYjIz
YjQ4NTM2YTk4YzlhNTA4N2I0MTJmOGJlNGEzYTViZGY3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKQEAgLTEw
MSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3Jk
KGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNl
dElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0
ZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGlu
dCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30K
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsg
cmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggM2UzODViMWE3M2My
NGY0OGQzYzNjZjA3M2I2N2E1NDQ0MzEwYjMyNC4uY2I0ODM0YzgxODZlNDBjYTMxNDMwOTI2MTFi
NzdiMjY5OWE0ZDAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0x
MSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tp
bmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAg
ICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50V3g6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0wNyAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNs
aWVudFd4LmgKaW5kZXggZDFkMzU5NzA5NzU5YzkwMDY4NDM3OTIwYjUwNWU1ZWZmMjgyMjI0ZC4u
NjVlZTQ5MzA1OTM5YzI3ZjViMDM2MTY1YTc2YzU1ZGRmNGQ1MDcyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKKysrIGIvU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKQEAgLTExNCw3ICsxMTQs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwot
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1
YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDk4MmQ0ZDMyZTgzYjdjOTFmY2VhNDEyZTI1ODFlZDAwMTI1
OWU2ODMuLmQ1YWU1NTk3NzRhNmViZTZhYTliNjk0MTFiNzcxNzU0ZjYxMWE3ZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFn
cmFwaCk6CisKIDIwMTEtMDMtMTMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
aW5kZXggYjk1NDI4MzU5MTMzNzgwYjRjZWQ2MGJmNjNkOTVhMzZiOWRlMTUwYy4uY2UyY2U2MTQz
NmVkYTZkMTg5YTkyYTNlNzQ5MzUxMzNlY2YzMjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhv
ZFN0YXRlKGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggZmE4NDI2YTM4ZTk0ZmJlM2Y0MTY1OTg5
ZjgxNTJmM2FkNzRlNjA3OC4uMDg3ZTMyMDlhMWIxYTYwMjhiYmQwYmZmOGIyZjhhNzIyZWFjNzg3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29y
ZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tH
cmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8V2ViQ29yZTo6
R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFy
TGVuZ3RoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VS
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVj
a1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3Qg
Y2hlY2tpbmdUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3Vs
dHMpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciog
dGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdU
eXBlcywgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogI2Vu
ZGlmCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhj
b25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBkZXRhaWwpOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0
cmluZyYpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdl
dEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0
LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9v
bCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2Vi
Q29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOwog
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVP
UEFSRCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3Jy
ZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91
bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0
ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIFdlYkNvcmU6OkVkaXRvciopOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3Np
bmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmlu
ZGV4IDhhZjA0MzgwYzFmZmU4NGQ5NWRkMWYwODFmZWEwMjBhYTkxNjQ5OWMuLmM1MzI3NGRiOGI0
NmU1YjQzYzA4ZGI0Y2UzZWFjOTRlZGY5N2ZlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JD
bGllbnRNYWMubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9n
Z2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNo
YXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4
dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0cykKIHsKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB3ZSB3b3Vs
ZG4ndCBoYXZlIHRvIGNvcHkgdGhlIHRleHQgaGVyZS4KICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZyh0ZXh0LCBs
ZW5ndGgpLCBjaGVja2luZ1R5cGVzKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0
T2ZQYXJhZ3JhcGg6OlJlcGx5KHJlc3VsdHMpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxOTQxMDBmMGVlNGU4ODFkZTBkYjkwYzc5MTBkMzRl
MzRjYWY5ODUwLi4zZmYwOGY2NTgxNjVmZTFlNTAzZDI4YmJmYWQyM2M3NDYyYzk0M2VmIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NTcgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9y
aW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVj
a2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTYwODUKKworICAgICAgICBBZGRlZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0Zv
clNlbGVjdGlvblN0YXJ0QXNUZXh0KCkgZm9yIHRlc3RpbmcKKyAgICAgICAgbm9uLXNwZWxsaW5n
IG1hcmtlcnMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHRDYWxsYmFjayk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3Rh
cnRBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2Vs
ZWN0aW9uU3RhcnRBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtl
cnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorCisyMDExLTAzLTEx
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBh
bmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHRD
YWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRB
c1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2Vs
ZWN0aW9uU3RhcnRBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjptYXJr
ZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQpOgorCiAy
MDExLTAzLTEzICBKb2UgV2lsZCAgPGpvc2VwaC53aWxkQG5va2lhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwNzdhMGQyNDM3NDZkZDUzOTdi
Y2RmNGRiYzk2NDY0MTdmOTlhZTEzLi5kYWYyMzZmOGE2YmQ3NmQyOGQxNzFkOTgxODMwMmUzYjZi
ZjA3YTY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC0xOTI1LDYgKzE5MjUsMTYgQEAgc3RhdGljIEpTVmFsdWVSZWYgaGFzU3BlbGxpbmdN
YXJrZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnUKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIG9rKTsKIH0KIAorc3RhdGljIEpTVmFs
dWVSZWYgbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0Q2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50KQorICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJv
bGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNP
YmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gdGV4dCA9IGNvbnRyb2xsZXItPm1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpOwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCB0ZXh0LmdldCgpKTsKK30KKwog
c3RhdGljIEpTVmFsdWVSZWYgbWFya2VyVGV4dEZvckxpc3RJdGVtQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOwpAQCAtMjEyOSw2ICsyMTM5LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImxheWVyVHJlZUFzVGV4
dCIsIGxheWVyVHJlZUFzVGV4dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9m
UGFnZXMiLCBudW1iZXJPZlBhZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibWFya2Vy
VGV4dEZvckxpc3RJdGVtIiwgbWFya2VyVGV4dEZvckxpc3RJdGVtQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAibWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0IiwgbWFya2Vyc0ZvclNl
bGVjdGlvblN0YXJ0QXNUZXh0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibm90aWZ5RG9u
ZSIsIG5vdGlmeURvbmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJPZkFjdGl2
ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzdXNwZW5kQW5pbWF0aW9ucyIsIHN1c3BlbmRBbmltYXRpb25zQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmlu
ZGV4IDU1ZmUyMjAwZjQ1MDBmN2QwNDY2MTRmZTZiNzU3NjFlMTI4M2RjMDUuLjAwZjIyNjc4MmE5
MWZkOTAwZTZlNmJkZGM3MjA1N2M4NmQyMmUwMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMjkxLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFib3J0TW9kYWwoKTsKIAogICAgIGJvb2wgaGFzU3BlbGxpbmdNYXJrZXIoaW50IGZyb20s
IGludCBsZW5ndGgpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtYXJrZXJzRm9yU2Vs
ZWN0aW9uU3RhcnRBc1RleHQoKTsKIAogICAgIHZvaWQgZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3
cG9ydChpbnQgZGV2aWNlRFBJLCBpbnQgZGV2aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGlu
dCBhdmFpbGFibGVXaWR0aCwgaW50IGF2YWlsYWJsZUhlaWdodCk7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRl
eCA2MmFjYjFmOTdmZjA3NGZjNDQxOGM4MDNjYmQ2MjE5YzEzNDdmODk1Li5mYmRjM2RkMmNlMTVj
MTA4NWI5NmM1NGQyNjQ4ZmUxMDVkYzIxMTcxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xNjAxLDYgKzE2
MDEsMTIgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYXJrZXIoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIEMKICAgICByZXN1bHQtPnNldChtX3NoZWxs
LT53ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5zZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5nTWFya2Vy
Rm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCkpKTsKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNU
ZXh0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5z
ZXROdWxsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAppbmRleCA5OTMyNGE5NzU1OWFiNDFlNzAzMTAyZDIzOTA2OTY3NjIy
MzkxYjU0Li5jODRhNGI0NjkxNTEzY2ViYjY5MzYxYjNhZjYzZGNmOGNmOGM3MDg2IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmgKQEAgLTMzNCw2ICszMzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1hcmtlclRleHRGb3JM
aXN0SXRlbShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBo
YXNTcGVsbGluZ01hcmtlcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Cisg
ICAgdm9pZCBtYXJrZXJzRm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDUyMTU2
MTIwNzZjMTQ4NDU2YThhNmE5NmUyZmQ1NjlhMGE0ZTFhMGUuLmQ3MjQ0MjVjYWYwYTFhNGUwMzFk
ODY2N2Q2OTk1MWEyMDkyYjE3ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtOTAzLDYgKzkwMywxMiBAQCBib29s
IExheW91dFRlc3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxl
bmd0aCkKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3ZWJraXRXZWJGcmFt
ZVNlbGVjdGlvbkhhc1NwZWxsaW5nTWFya2VyKG1haW5GcmFtZSwgZnJvbSwgbGVuZ3RoKTsKIH0K
IAorSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjptYXJrZXJz
Rm9yU2VsZWN0aW9uU3RhcnRBc1RleHQoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7Cit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IGRldmljZURQSSwg
aW50IGRldmljZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGlu
dCBhdmFpbGFibGVIZWlnaHQpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtp
dF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNThhN2FkZmEy
YWFhY2ZlZDI1N2UzNzQwMzI4NjhkYjZlNzVhNTFmYi4uYTZkZGQ4YmY0MjJmZGMzNzk2OGJkMDgw
Y2I5MmRjNmQzNDc5YWMwOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9M
YXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMTA0OCw2ICsxMDQ4LDE0IEBAIGJvb2wgTGF5
b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3Ro
KQogewogICAgIHJldHVybiBbbWFpbkZyYW1lIGhhc1NwZWxsaW5nTWFya2VyOmZyb20gbGVuZ3Ro
Omxlbmd0aF07CiB9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0KCkKK3sKKyAgICBOU1N0cmluZyog
dGV4dCA9IFttYWluRnJhbWUgbWFya2Vyc0ZvclNlbGVjdGlvblN0YXJ0QXNUZXh0XTsKKyAgICBy
ZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhD
RlN0cmluZygoQ0ZTdHJpbmdSZWYpdGV4dCkpOworfQorCisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IC8qZGV2aWNlRFBJKi8sIGlu
dCAvKmRldmljZVdpZHRoKi8sIGludCAvKmRldmljZUhlaWdodCovLCBpbnQgLyphdmFpbGFibGVX
aWR0aCovLCBpbnQgLyphdmFpbGFibGVIZWlnaHQqLykKIHsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAppbmRleCBhZDllOTY4NTk4
ZGU1OGI4Y2E5MmM1OGI2YzBiNzAzODBlMDM0Nzc2Li5iZTVjNGJlZTZhNGQ0YmM2MmY2MDdkNzFh
NDY1M2YxNDk0ZjRiMjE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcApAQCAtODI3LDYgKzgyNywxMiBAQCBib29sIExheW91dFRl
c3RDb250cm9sbGVyOjpoYXNTcGVsbGluZ01hcmtlcihpbnQsIGludCkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK1FTdHJpbmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rp
b25TdGFydEFzVGV4dCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAi
IjsKK30KKwogUVZhcmlhbnRMaXN0IExheW91dFRlc3RDb250cm9sbGVyOjpub2Rlc0Zyb21SZWN0
KGNvbnN0IFFXZWJFbGVtZW50JiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3As
IHVuc2lnbmVkIHJpZ2h0LCB1bnNpZ25lZCBib3R0b20sIHVuc2lnbmVkIGxlZnQsIGJvb2wgaWdu
b3JlQ2xpcHBpbmcpCiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpub2Rl
c0Zyb21SZWN0KGRvY3VtZW50LCB4LCB5LCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIGlnbm9y
ZUNsaXBwaW5nKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuaAppbmRleCA0MWQwYWNhZjczMDkwMTMyYTNiMTRiMzA2NTY1MTg0ZjE5ODkxYjA5
Li5mMjI0ZGNjZjdhMWQwYmRjZDkzY2QwOTQ1MDdlNzBhZmZiNGVlYWRlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCkBAIC0yMjcsNiAr
MjI3LDcgQEAgcHVibGljIHNsb3RzOgogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAg
cGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIExheW91dFRlc3RDb250
cm9sbGVyLgogICAgIHZvaWQgYWJvcnRNb2RhbCgpIHt9CiAgICAgYm9vbCBoYXNTcGVsbGluZ01h
cmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCk7CisgICAgUVN0cmluZyBtYXJrZXJzRm9yU2VsZWN0
aW9uU3RhcnRBc1RleHQoKTsKIAogICAgIFFWYXJpYW50TGlzdCBub2Rlc0Zyb21SZWN0KGNvbnN0
IFFXZWJFbGVtZW50JiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3AsIHVuc2ln
bmVkIHJpZ2h0LCB1bnNpZ25lZCBib3R0b20sIHVuc2lnbmVkIGxlZnQsIGJvb2wgaWdub3JlQ2xp
cHBpbmcpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcAppbmRleCAxZDE3MzBmOGJlMDljNzc4ZDcyNTI0ZmU4NmZiM2NlY2Fm
ODg2MmIyLi5hMjk4NjEyNzc0NGVkOTM0MzUwY2NkZWJkYTAxODViNTg5MTA1YWVjIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAKQEAgLTE0MTgsNiArMTQxOCwxMiBAQCBib29sIExheW91dFRlc3RDb250cm9sbGVyOjpoYXNT
cGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gcmV0OwogfQog
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNG
b3JTZWxlY3Rpb25TdGFydEFzVGV4dCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChpbnQgLypkZXZpY2VEUEkq
LywgaW50IC8qZGV2aWNlV2lkdGgqLywgaW50IC8qZGV2aWNlSGVpZ2h0Ki8sIGludCAvKmF2YWls
YWJsZVdpZHRoKi8sIGludCAvKmF2YWlsYWJsZUhlaWdodCovKQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91
dFRlc3RDb250cm9sbGVyV3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVz
dENvbnRyb2xsZXJXeC5jcHAKaW5kZXggZTZlNWM0ZWVjMWMzNTdkNzU3MTMyNzI2M2MwZmRhZWYx
ODM3YWMxOC4uNDUyOGFmNTQ5NjkxNjg2YjVkZDFiNTVjZTRlZjc3NTU3YzU5Y2MzNCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAK
QEAgLTUxNiw2ICs1MTYsMTIgQEAgYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxp
bmdNYXJrZXIoaW50LCBpbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1hcmtlcnNGb3JTZWxlY3Rpb25TdGFy
dEFzVGV4dCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4oKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZHVt
cENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChpbnQgLypkZXZpY2VEUEkqLywgaW50IC8qZGV2aWNl
V2lkdGgqLywgaW50IC8qZGV2aWNlSGVpZ2h0Ki8sIGludCAvKmF2YWlsYWJsZVdpZHRoKi8sIGlu
dCAvKmF2YWlsYWJsZUhlaWdodCovKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85791</attachid>
            <date>2011-03-15 02:55:17 -0700</date>
            <delta_ts>2011-03-15 20:25:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56085-20110315185514.patch</filename>
            <type>text/plain</type>
            <size>47672</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA5OTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiM2NiNzIzZWVlMDRlODU2
YmFmODA5MmIwYTcxZWFlNTMzMWY4ZTNlLi5lOWNjMGQ2OTUxMGYwNGNlNTEwYzZhNjkwYzU1NWVk
MDFiYzg1MWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTEgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0
IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAg
ICAgIFJlbW92ZWQgV2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jlc3VsdCBhbmQgcmVwbGFjZWQgaXQg
d2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gYWRkZWQg
VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkgc2hvdWxkIGhhdmUK
KyAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgYXMgYSBwYXJhbWV0ZXIgdG8gY29udHJvbCB0
ZXh0IGNoZWNraW5nIHR5cGUuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VT
ZWxlY3Rpb25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dGV4dENoZWNraW5nVHlwZU1hc2tGb3IpOiBFeHRyYWN0ZWQgZnJvbSBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKCkKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVj
a2luZ0Zvcik6IEFkZGVkIGEgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyOjptYXJrQXQpOiBFeHRyYWN0ZWQgZnJvbSBkaWRDaGVjaygpLCBBZGRlZCBhIGNoZWNrIGZv
ciB0aGUgR3JhbW1hckRldGFpbCBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5VGV4dENo
ZWNrZXJDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVt
cHR5VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMTMgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggd2luZG93cyBidWlsZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KaW5kZXggYjNmZWRjMTQ0ODI2OTI3YzA1ODVlZTA3ZmI3ZmViZDlmZjJi
MDliYS4uZWRkYTI1YzU3ZWZkYTYzY2JkZjMxMTMyMzY4NGZmZWM2NGIwMTc2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KQEAgLTI5Myw3ICsyOTMsNyBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZl
cjZhcHBlbmRFUEtjagogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJDMUVQS2NpCiBfX1pON1dl
YkNvcmUxMlNoYXJlZEJ1ZmZlckMxRXYKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyRDFFdgot
X19aTjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4ZGlkQ2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5TXzE5
U3BlbGxDaGVja2luZ1Jlc3VsdEVMbTBFRUUKK19fWk43V2ViQ29yZTEyU3BlbGxDaGVja2VyOGRp
ZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRDaGVja2luZ1Jlc3VsdEVMbTBFRUUKIF9f
Wk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUx
MlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181UmFuZ2VFYgogX19aTjdXZWJDb3JlMTJU
ZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183RWxlbWVudEVpaWIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA4ODA3OTY1MDY4YTQzOTEwYTlhZDkzNjUx
ZTE0NjJlY2M4ZTljZjlhLi5lYmVlYTc1NWMwZGM2MTRlMzA4MjZhOGY3MDk5ZGViYzU0MjI5Yzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC02NCw3ICs2NCw2IEBACiAjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5o
IgotI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNraW5n
SGVscGVyLmgiCiAjaW5jbHVkZSAiUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrLmgiCkBAIC00NDAsNyArNDM5LDcgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxl
Y3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwK
IAogICAgIE5vZGUqIG5vZGVUb0NoZWNrID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0
YWJsZUVsZW1lbnQoKTsKICAgICBpZiAobV9zcGVsbENoZWNrZXItPmNhbkNoZWNrQXN5bmNocm9u
b3VzbHkobm9kZVRvQ2hlY2spKQotICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNr
aW5nRm9yKG5vZGVUb0NoZWNrKTsKKyAgICAgICAgbV9zcGVsbENoZWNrZXItPnJlcXVlc3RDaGVj
a2luZ0Zvcih0ZXh0Q2hlY2tpbmdUeXBlTWFza0ZvcihNYXJrU3BlbGxpbmcgfCBNYXJrR3JhbW1h
ciksIG5vZGVUb0NoZWNrKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRo
VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21h
cnRSZXBsYWNlKQpAQCAtMjI3MCwyNiArMjI2OSw4IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENo
CiAgICAgfQogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICB1
aW50NjRfdCBjaGVja2luZ1R5cGVzID0gMDsKLSAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nKQot
ICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKLSAgICBp
ZiAoc2hvdWxkTWFya0dyYW1tYXIpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNr
aW5nVHlwZUdyYW1tYXI7Ci0gICAgaWYgKHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpCi0gICAg
ICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247Ci0gICAgaWYg
KHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCkgewotICAgICAgICBpZiAoaXNBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hl
Y2tpbmdUeXBlTGluazsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25F
bmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVR
dW90ZTsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkK
LSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZURhc2g7Ci0gICAg
ICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKLSAgICAgICAgICAg
IGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OwotICAgICAgICBp
ZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5h
YmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29y
cmVjdGlvbjsKLSAgICB9Ci0gICAgdGV4dENoZWNrZXIoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
cGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFncmFwaC50ZXh0TGVuZ3RoKCksIGNoZWNr
aW5nVHlwZXMsIHJlc3VsdHMpOworICAgIHRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdy
YXBoKHBhcmFncmFwaC50ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdUeXBl
TWFza0Zvcih0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cyk7CiAKICNpZiBTVVBQT1JUX0FV
VE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgLy8gSWYgdGhpcyBjaGVja2luZyBpcyBvbmx5IGZvciBz
aG93aW5nIGNvcnJlY3Rpb24gcGFuZWwsIHdlIHNob3VsZG4ndCBib3RoZXIgdG8gbWFyayBtaXNz
cGVsbGluZ3MuCkBAIC0zNTk2LDQgKzM1NzcsMzcgQEAgRmxvYXRSZWN0IEVkaXRvcjo6d2luZG93
UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSkgY29uc3QKICAgICByZXR1cm4gdmlldyA/
IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UmVjdChyYW5nZS0+Ym91bmRpbmdSZWN0KCkpKSA6
IEZsb2F0UmVjdCgpOwogfSAgICAgICAgCiAKK1RleHRDaGVja2luZ1R5cGVNYXNrIEVkaXRvcjo6
dGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdP
cHRpb25zKQoreworICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNraW5nT3B0
aW9ucyAmIE1hcmtTcGVsbGluZzsKKyAgICBib29sIHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENo
ZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOworICAgIGJvb2wgc2hvdWxkU2hvd0NvcnJlY3Rp
b25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93Q29ycmVjdGlvblBhbmVsOworCisg
ICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9IDA7CisgICAgaWYgKHNob3Vs
ZE1hcmtTcGVsbGluZykKKyAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBl
U3BlbGxpbmc7CisgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQorICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGlmIChzaG91bGRTaG93Q29ycmVj
dGlvblBhbmVsKQorICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3Jy
ZWN0aW9uOworCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICBib29sIHNob3VsZFBlcmZv
cm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQZXJmb3JtUmVwbGFjZW1lbnQ7
CisgICAgaWYgKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCkgeworICAgICAgICBpZiAoaXNBdXRv
bWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8
PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgaWYgKGlzQXV0b21hdGljUXVvdGVTdWJz
dGl0dXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVj
a2luZ1R5cGVRdW90ZTsKKyAgICAgICAgaWYgKGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVu
YWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZURh
c2g7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKKyAg
ICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50Owor
ICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3Jy
ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlQ29ycmVjdGlvbjsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBjaGVja2luZ1R5
cGVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZlMjE1NDA4NWM1NjllLi5iZmI0ZmQwMzY0
YzVkOTZlNTk0MzA1MTE5NGY4OGQ2ODJlOTgxOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRBY3Rpb24uaCIKICNpbmNs
dWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIldyaXRpbmdEaXJlY3Rpb24uaCIKQEAg
LTYyLDcgKzYzLDYgQEAgY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNzIFNpbXBsZUZvbnREYXRhOwog
Y2xhc3MgU3BlbGxDaGVja2VyOwogY2xhc3MgVGV4dDsKLWNsYXNzIFRleHRDaGVja2VyQ2xpZW50
OwogY2xhc3MgVGV4dEV2ZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmUgewpAQCAt
MjIyLDYgKzIyMiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2Up
OwogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogICAg
IHZvaWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pOworCisgICAgZW51bSBUZXh0Q2hlY2tpbmdPcHRpb25G
bGFncyB7CisgICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwKKyAgICAgICAgTWFya0dyYW1t
YXIgPSAxIDw8IDEsCisgICAgICAgIFBlcmZvcm1SZXBsYWNlbWVudCA9IDEgPDwgMiwKKyAgICAg
ICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKKyAgICB9OworICAgIHR5cGVkZWYgdW5z
aWduZWQgVGV4dENoZWNraW5nT3B0aW9uczsKKwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCiAg
ICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CiAgICAgdm9pZCBsb3dlcmNhc2VXb3JkKCk7CkBAIC0y
MzksMTQgKzI0OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBs
YWNlbWVudCgpOwogICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVk
KCk7CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKLSAgICBl
bnVtIFRleHRDaGVja2luZ09wdGlvbkZsYWdzIHsKLSAgICAgICAgTWFya1NwZWxsaW5nID0gMSA8
PCAwLAotICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKLSAgICAgICAgUGVyZm9ybVJlcGxh
Y2VtZW50ID0gMSA8PCAyLAotICAgICAgICBTaG93Q29ycmVjdGlvblBhbmVsID0gMSA8PCAzLAot
ICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdPcHRpb25zOwotCiAgICAg
dm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2lu
Z09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKTsKICAg
ICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcpOwogI2VuZGlmCkBAIC00MTEsNiArNDEyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAgICB2b2lkIHJldmVhbFNl
bGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5n
c09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5n
LCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOworICAgIFRleHRDaGVja2lu
Z1R5cGVNYXNrIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVja2luZ09wdGlvbnMpOwog
CiAgICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IDc5ODhlNDE2MTBhNTE5YjZhNWNiMjYzMGM2
MTBlYmVhOGZhZTVmMjEuLmMzMThhMDE1NTQ5MTI5ZTg4Njg3Yjg0YzVhMmQ0MGJjYzQ3ZDQ0NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTEwMCwxMyArMTAw
LDEzIEBAIGJvb2wgU3BlbGxDaGVja2VyOjppc0NoZWNrYWJsZShOb2RlKiBub2RlKSBjb25zdAog
ICAgIHJldHVybiBub2RlICYmIG5vZGUtPnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgU3BlbGxDaGVj
a2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoTm9kZSogbm9kZSkKK3ZvaWQgU3BlbGxDaGVja2VyOjpy
ZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgTm9kZSogbm9kZSkK
IHsKICAgICBBU1NFUlQoY2FuQ2hlY2tBc3luY2hyb25vdXNseShub2RlKSk7CiAKICAgICBpZiAo
IWluaXRSZXF1ZXN0KG5vZGUpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jbGllbnQtPnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcmVxdWVzdFNlcXVlbmNlLCBtX3JlcXVlc3RUZXh0
KTsKKyAgICBtX2NsaWVudC0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodGhpcywgbV9yZXF1ZXN0
U2VxdWVuY2UsIG1hc2ssIG1fcmVxdWVzdFRleHQpOwogfQogCiBzdGF0aWMgYm9vbCBmb3J3YXJk
SXRlcmF0b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0b3IsIGludCBkaXN0YW5jZSkKQEAgLTEz
MSw3ICsxMzEsMjEgQEAgc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJhdG9yKFBvc2l0aW9uSXRlcmF0
b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2UpCiAgICAgcmV0dXJuIGZhbHNlOyAgICAKIH0KIAot
dm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFNw
ZWxsQ2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorc3RhdGljIERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlIHRvTWFya2VyVHlwZShUZXh0Q2hlY2tpbmdUeXBlIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc6CisgICAgICAgIHJl
dHVybiBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc7CisgICAgY2FzZSBUZXh0Q2hlY2tpbmdUeXBl
R3JhbW1hcjoKKyAgICAgICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpHcmFtbWFyOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gRG9j
dW1lbnRNYXJrZXI6OkdyYW1tYXI7CisgICAgfQorfQorCisvLyBDdXJyZW5udGx5IGlnbm9yaW5n
IFRleHRDaGVja2luZ1Jlc3VsdDo6ZGV0YWlscyBidXQgc2hvdWxkIGJlIGhhbmRsZWQuIFNlZSBC
dWcgNTYzNjguCit2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25z
dCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsKICAgICBpZiAoIWlzVmFs
aWQoc2VxdWVuY2UpKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTYgKzE1OCwxNiBAQCB2b2lk
IFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8U3BlbGxD
aGVja2luZ1Jlc3VsdD4mIHJlcwogICAgIGludCBzdGFydE9mZnNldCA9IDA7CiAgICAgUG9zaXRp
b25JdGVyYXRvciBzdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShtX3JlcXVlc3RO
b2RlLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSgpICE9IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZyAmJiByZXN1bHRzW2ldLnR5cGUoKSAhPSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcikK
KyAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcg
JiYgcmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgLy8gVG8gYXZvaWQgbW92aW5nIHRoZSBwb3NpdGlvbiBi
YWNrd2FyZCwgd2UgYXNzdW1lIHRoZSBnaXZlbiByZXN1bHRzIGFyZSBzb3J0ZWQgd2l0aAogICAg
ICAgICAvLyBzdGFydE9mZnNldCBhcyB0aGUgb25lcyByZXR1cm5lZCBieSBbTlNTcGVsbENoZWNr
ZXIgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmc6XS4KLSAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0
IDw9IHJlc3VsdHNbaV0ubG9jYXRpb24oKSk7Ci0gICAgICAgIGlmICghZm9yd2FyZEl0ZXJhdG9y
KHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uKCkgLSBzdGFydE9mZnNldCkpCisgICAgICAgIEFT
U0VSVChzdGFydE9mZnNldCA8PSByZXN1bHRzW2ldLmxvY2F0aW9uKTsKKyAgICAgICAgaWYgKCFm
b3J3YXJkSXRlcmF0b3Ioc3RhcnQsIHJlc3VsdHNbaV0ubG9jYXRpb24gLSBzdGFydE9mZnNldCkp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgUG9zaXRpb25JdGVyYXRvciBlbmQgPSBzdGFy
dDsKLSAgICAgICAgaWYgKCFmb3J3YXJkSXRlcmF0b3IoZW5kLCByZXN1bHRzW2ldLmxlbmd0aCgp
KSkKKyAgICAgICAgaWYgKCFmb3J3YXJkSXRlcmF0b3IoZW5kLCByZXN1bHRzW2ldLmxlbmd0aCkp
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBVc2VycyBvciBKYXZhU2NyaXB0IGFw
cGxpY2F0aW9ucyBtYXkgY2hhbmdlIHRleHQgd2hpbGUgYSBzcGVsbC1jaGVja2VyIGNoZWNrcyBp
dHMKQEAgLTE2MywxMSArMTc3LDExIEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQg
c2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYgcmVzCiAgICAgICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVxdWVzdE5vZGUtPmRvY3Vt
ZW50KCksIHN0YXJ0LCBlbmQpOwogICAgICAgICAvLyBGSVhNRTogVXNlIHRleHRDb250ZW50KCkg
Y29tcGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KICAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9u
ID0gcmFuZ2UtPnRleHQoKTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQu
c3Vic3RyaW5nKHJlc3VsdHNbaV0ubG9jYXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSk7Cisg
ICAgICAgIFN0cmluZyBzb3VyY2UgPSBtX3JlcXVlc3RUZXh0LnN1YnN0cmluZyhyZXN1bHRzW2ld
LmxvY2F0aW9uLCByZXN1bHRzW2ldLmxlbmd0aCk7CiAgICAgICAgIGlmIChkZXN0aW5hdGlvbiA9
PSBzb3VyY2UpCi0gICAgICAgICAgICBtX3JlcXVlc3ROb2RlLT5kb2N1bWVudCgpLT5tYXJrZXJz
KCktPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgcmVzdWx0c1tpXS50eXBlKCkpOworICAgICAgICAg
ICAgbV9yZXF1ZXN0Tm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIocmFuZ2Uu
Z2V0KCksIHRvTWFya2VyVHlwZShyZXN1bHRzW2ldLnR5cGUpKTsKIAotICAgICAgICBzdGFydE9m
ZnNldCA9IHJlc3VsdHNbaV0ubG9jYXRpb24oKTsKKyAgICAgICAgc3RhcnRPZmZzZXQgPSByZXN1
bHRzW2ldLmxvY2F0aW9uOwogICAgIH0KIAogICAgIGNsZWFyUmVxdWVzdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKaW5kZXggZDM5NDBlNTA0ZmFhNDZhOTY1YzczODA0YjU5
Y2Y3MTFmNzZkY2JmOC4uNGJjYjg5ZTU5ODVjZDFiZDNjNjJlYTliZmFkMDdkOWQ0Y2FlMWIzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIFNwZWxsQ2hlY2tlcl9oCiAKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlci5oIgorI2lu
Y2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDI1ICszNiw2IEBAIGNsYXNzIFRleHRDaGVj
a2VyQ2xpZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBOb2RlOwogCi1jbGFzcyBTcGVsbENoZWNr
aW5nUmVzdWx0IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVsbENoZWNraW5nUmVzdWx0KERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUgPSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcs
IGludCBsb2NhdGlvbiA9IDAsIGludCBsZW5ndGggPSAwKQotICAgICAgICA6IG1fdHlwZSh0eXBl
KQotICAgICAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9sZW5ndGgobGVu
Z3RoKQotICAgIHsKLSAgICB9Ci0KLSAgICBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9IAotICAgIGludCBsb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGg7IH0KLQotcHJpdmF0ZToKLSAgICBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSBtX3R5
cGU7Ci0gICAgaW50IG1fbG9jYXRpb247Ci0gICAgaW50IG1fbGVuZ3RoOwotfTsKLQogY2xhc3Mg
U3BlbGxDaGVja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTcGVsbENoZWNrZXIpOwog
cHVibGljOgpAQCAtNjUsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1c3koKSBjb25z
dDsKICAgICBib29sIGlzVmFsaWQoaW50IHNlcXVlbmNlKSBjb25zdDsKICAgICBib29sIGlzQ2hl
Y2thYmxlKE5vZGUqKSBjb25zdDsKLSAgICB2b2lkIHJlcXVlc3RDaGVja2luZ0ZvcihOb2RlKik7
Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNr
aW5nUmVzdWx0PiYpOworICAgIHZvaWQgcmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5
cGVNYXNrLCBOb2RlKik7CisgICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpbml0UmVx
dWVzdChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAKaW5kZXggZTU1NTNmZDEwMjkyZmU1ODdmMGUyMzMwZDE2NWU4ZTE3NzI4ZTQxZC4uNDhm
YWVlOTU0NTA2YmM4NTRhMDc3NDg2ZmFjOTAzNzRlNGVhZmE2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIFN0
cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFy
KGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgZ3JhbW1hckRl
dGFpbEluZGV4ID0gMDsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNo
ZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwg
VGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAg
ICAgICAgICAgICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBjaGVja0dy
YW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1t
YXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogICAgICAgICAgICAgICAgIG1fY2xpZW50
LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdHJpbmcuY2hh
cmFjdGVycygpLCBwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCksIGNoZWNraW5nVHlwZXMsIHJlc3Vs
dHMpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CkBAIC01MzUsNyArNTM1LDcgQEAgVmVjdG9y
PFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFt
bWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAgICBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMg
PSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5n
VHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIFRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nOwogICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFw
aChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgY2hl
Y2tpbmdUeXBlcywgcmVzdWx0cyk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApp
bmRleCBlZDkyZjExMmNiYTg3N2ZkNTJjMzQ2NDA3ZjViNGZmZTI2MTIwZjZjLi40NmFlMTUyYmNl
MDgwODk2ZTM4MzA4ZDI5NGZkOGU3MDk1ZjU3NWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCkBAIC00MDcsMTEgKzQwNywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0b3I8R3JhbW1hckRl
dGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAg
dmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCB1aW50
NjRfdCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CisgICAgdmlydHVhbCB2b2lk
IGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0Q2hlY2tpbmdUeXBl
TWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIFRleHRD
aGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KIH07CiAKIGNsYXNzIEVtcHR5RWRp
dG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKaW5kZXggYWNhYTAyY2Y2MmEwNzBmOTBj
Zjk0YzZlMTI2YzVkMGQ2N2JmYmI4ZS4uOGIxZDgxMjIyNGY1NTU2YmNmODk2MzdlOTRjZGYwYjZh
MmRiMmQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hl
Y2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNr
ZXJDbGllbnQuaApAQCAtNTMsNiArNTMsOCBAQCBlbnVtIFRleHRDaGVja2luZ1R5cGUgewogICAg
IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICA9IDEgPDwgOQogfTsKIAordHlwZWRlZiB1aW50
NjRfdCBUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7
CiAgICAgVGV4dENoZWNraW5nVHlwZSB0eXBlOwogICAgIGludCBsb2NhdGlvbjsKQEAgLTcxLDE0
ICs3MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdn
ZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGlu
dCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9u
LCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpID0gMDsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQot
ICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwg
aW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNo
ZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKSA9IDA7CiAj
ZW5kaWYKIAogICAgIC8vIEZvciBzcGVsbGNoZWNrZXJzIHRoYXQgc3VwcG9ydCBtdWx0aXBsZSBs
YW5ndWFnZXMsIGl0J3Mgb2Z0ZW4gaW1wb3J0YW50IHRvIGJlIGFibGUgdG8gaWRlbnRpZnkgdGhl
IGxhbmd1YWdlIGluIG9yZGVyIHRvCiAgICAgLy8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlIGNvcnJl
Y3Rpb24gc3VnZ2VzdGlvbnMuIENhbGxlciBjYW4gcGFzcyBpbiBtb3JlIHRleHQgaW4gImNvbnRl
eHQiIHRvIGFpZCBzdWNoIHNwZWxsY2hlY2tlcnMgb24gbGFuZ3VhZ2UKICAgICAvLyBpZGVudGlm
aWNhdGlvbi4gTm9yYW1sbHkgaXQncyB0aGUgdGV4dCBzdXJyb3VuZGluZyB0aGUgIndvcmQiIGZv
ciB3aGljaCB3ZSBhcmUgZ2V0dGluZyBjb3JyZWN0aW9uIHN1Z2dlc3Rpb25zLgogICAgIHZpcnR1
YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmlu
ZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBTdHJp
bmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxs
Q2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpID0gMDsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYjFlMzk2NDYyNjcxZDE1NjI5
YWMyMGM0ZDAyNTc5NjZlOWQwNmZkNC4uNTdhM2UyMDg4MWIyMGI4YzEyN2Y5ZTRmOWZkZWI2Njli
YmI5Nzc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
MS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxs
Q2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQor
CisgICAgICAgIEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgorICAgICAgICAKKyAgICAg
ICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3Bw
CisKIDIwMTEtMDMtMTEgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJvbGxvdXQgdGhlIGNocm9taXVtIGRlcHMgcm9sbCBhcyBpdCBhZGRzIGEgZGVwZW5kZW5j
eSBvbiBhIGhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmNwcAppbmRleCAzOGQ0ZjVlZjg5MjM5ZTA0NWFhZjVmMGY5MTM0NzI2YTM4YTYyMjk5
Li4xN2UwZDgyNDFkNTk3MDRkZWFmN2ViNjY1MGNhMTI0OGY0MjE3YzMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAtODcxLDcgKzg3
MSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0
IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSBz
cGVsbExlbmd0aDsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
V2ViQ29yZTo6U3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBpZGVudGlmaWVyLCBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmIHRleHQpCiB7CiAgICAgbV93
ZWJWaWV3LT5jbGllbnQoKS0+cmVxdWVzdENoZWNraW5nT2ZUZXh0KHRleHQsIG5ldyBXZWJUZXh0
Q2hlY2tpbmdDb21wbGV0aW9uSW1wbChpZGVudGlmaWVyLCBzZW5kZXIpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAppbmRleCBiODFmYjU2MDU0
MzBiZjJmNWYzM2RlNDg3NGMwYjY2ZjZmN2NjNDZlLi4yZWJjNmVhNTgwNGIyNTNmYmU0MTYzODY3
NDViOTg3MTE3YWFmZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9y
Q2xpZW50SW1wbC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29u
c3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6VGV4dENo
ZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0
aW9uSW1wbC5jcHAKaW5kZXggMjc1OTc5MDJhYWEyMjVmMTIzODk0NGU4ZDVlNTQ1MDdhNDFlMTAx
ZC4uNzcwOWM2YjJkNjU1NjRkOGE4NTBlNWRmOGQ3MzEzYmQ4NjFkNzRjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb25JbXBsLmNwcApAQCAtMzQsMTYgKzM0LDM2IEBACiAjaW5jbHVkZSAiU3BlbGxDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVmVj
dG9yLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgVmVjdG9yPFNwZWxsQ2hlY2tp
bmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jl
c3VsdD4mIHJlc3VsdHMpCitzdGF0aWMgVGV4dENoZWNraW5nVHlwZSB0b0NvcmVDaGVja2luZ1R5
cGUoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvciBlcnJvcikKIHsKLSAgICBWZWN0b3I8U3Bl
bGxDaGVja2luZ1Jlc3VsdD4gY29yZVJlc3VsdHM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByZXN1bHRzLnNpemUoKTsgKytpKQotICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQoU3BlbGxD
aGVja2luZ1Jlc3VsdChzdGF0aWNfY2FzdDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4ocmVz
dWx0c1tpXS5lcnJvcigpKSwgcmVzdWx0c1tpXS5wb3NpdGlvbigpLCByZXN1bHRzW2ldLmxlbmd0
aCgpKSk7CisgICAgc3dpdGNoIChlcnJvcikgeworICAgIGNhc2UgV2ViS2l0OjpXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ6OkVycm9yU3BlbGxpbmc6CisgICAgICAgIHJldHVybiBUZXh0Q2hlY2tpbmdU
eXBlU3BlbGxpbmc7CisgICAgY2FzZSBXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJy
b3JHcmFtbWFyOgorICAgICAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICB9Cit9CisKK3N0YXRpYyBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1bHRzKQoreworICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNv
cmVSZXN1bHRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsr
aSkgeyAKKyAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IGNvcmVSZXN1bHQ7CisgICAgICAgIGNv
cmVSZXN1bHQudHlwZSA9IHRvQ29yZUNoZWNraW5nVHlwZShyZXN1bHRzW2ldLmVycm9yKCkpOwor
ICAgICAgICBjb3JlUmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0c1tpXS5wb3NpdGlvbigpOworICAg
ICAgICBjb3JlUmVzdWx0Lmxlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoKCk7CisgICAgICAgIGNv
cmVSZXN1bHRzLmFwcGVuZChjb3JlUmVzdWx0KTsKKyAgICB9CisKICAgICByZXR1cm4gY29yZVJl
c3VsdHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBiYmUyZDBkNzQwMDQ1NDM0NjU0YmVjNDhl
ZTRiNjllOTE2OTk2MjZhLi45OTk1MzEwYTA5ZjYwODY4MmJkNTY1MTcyY2U2NTNlZDZkYzk1NDFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBI
YWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNo
b3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0xMiAg
Unl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEVmbC5oCmluZGV4IDU3NWE1MGQyNTNkMjk0MDZjNDZkOGEzNGNhZjM2OGViYWQ4
YWU3NjcuLjU2YjMzMDAyZWFhMTdhODViOWIzNzAxNjlkOGJkODQ3M2ZkYzNhMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCkBA
IC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9y
V29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0
b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFi
bGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6
U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwg
V2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KICAg
ICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA0M2M3NGYzYTA3YzYyM2RmODc0MWE3
ZTFmZTlhNTRkNzBkYzQ5MTIzLi45NTUzYmM2NzI2YTRlMjBjZWRiOTg3MzExYTQwZmY0ZThiNTg2
OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0
IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oOgorICAgICAgICAoV2ViS2l0
OjpUZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwog
MjAxMS0wMy0xMSAgTWFyY28gUGVlcmVib29tICA8bWFyY29AcGVlcmVib29tLnVzPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50
LmgKaW5kZXggYzI5NGEzZDAwZjJkZGU1MDZhYWRhNjA0NzE0YTA1YjVkZDQ0ODc2MS4uNWQ5M2Mw
NzIxNmQ5OTViZmUzNmNhZmFkZDk5MGMwYTc4MmY1MmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgVGV4dENoZWNrZXJDbGllbnRFbmNoYW50IDogcHVi
bGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCBXVEY6OlN0
cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6
OlN0cmluZyYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29u
c3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWls
PiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpTdHJpbmcmIHdv
cmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IGd1ZXNzZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
V2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CiAKICAgICAgICAgdm9pZCB1cGRhdGVTcGVsbENoZWNraW5nTGFuZ3VhZ2UoY29u
c3QgY2hhciopOwogICAgICAgICBzdGF0aWMgdm9pZCBmcmVlU3BlbGxDaGVja2luZ0xhbmd1YWdl
KGdwb2ludGVyLCBncG9pbnRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4IGIyYWVmY2U4ZGQ4
OGY2YmFkOTQ0MjllMGM3YTYzMWI3NWJiM2JhYjMuLjQ4MGNmZjZkZjY2ZDg4ZDRiMDcwOTExNmY3
YzcyMzA2ODUxNTIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVs
bENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3Vs
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgor
CiAyMDExLTAzLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oIGIvU291cmNlL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCmluZGV4IGJiMGQ4YWMxMDVmY2Uy
MjE1N2E3MDIwNmFhNGMxNGVjNTkwN2EwYjUuLmNjMjFmY2I4NmYyOTE5NGVhM2U4MTRmYTA1NzNk
NWU2NGNjYmExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBFZGl0
b3JDbGllbnRIYWlrdSA6IHB1YmxpYyBFZGl0b3JDbGllbnQsIHB1YmxpYyBUZXh0Q2hlY2tlckNs
aWVudCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJp
bmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgU3RyaW5nJikge30KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2ssIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQq
IHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNFZGl0aW5n
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZWVmMTZiODY3Mjg1NDUyZDMzNTIxZmZiM2Zj
Y2JhOGViMTFkZTQ3NS4uZjhlNzAyOTFlOGU2MjFlNzBhNDYzZGI5NTQ3OGQ2OTFjNTVhMjI5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgUmVtb3ZlZCBO
U1RleHRDaGVja2luZ1Jlc3VsdCB0byBTcGVsbENoZWNraW5nUmVzdWx0IGNvbnZlcnRpb24sIGFu
ZCBleHRyYWN0ZWQKKyAgICAgICAgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgdG8gVGV4dENoZWNraW5n
UmVzdWx0IGNvbnZlcnRpbyBmcm9tIGNoZWNrVGV4dE9mUGFyYWdyYXBoIG1ldGhvZC4KKyAgICAg
ICAgZm9yIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nIG1ldGhvZC4KKyAgICAgICAgCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAodG9Db3JlVGV4dENoZWNraW5nUmVz
dWx0cyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToK
KyAgICAgICAgKC1bV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlciBpbml0V2l0aFNlbmRlcjpX
ZWJDb3JlOjpzZXF1ZW5jZTp0eXBlczpXZWJDb3JlOjpyZXN1bHRzOl0pOgorICAgICAgICAoLVtX
ZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIHBlcmZvcm1dKToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFz
VGV4dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6CisKIDIwMTEtMDMt
MTMgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMWZhMTMyYWQ2YzViZDQzNzlmZTBiYjg1Yzll
NmZmMGQ2NmIxMTczNS4uMjc3MTM5ZWY2ODVkY2M1NDE3YTJhMWMxNDI5MzkwYjYyYzI5YTFhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNr
U3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxp
bmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmlydHVhbCBXVEY6OlN0
cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6
OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+Jiwg
aW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7Ci0gICAgdmly
dHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVu
Z3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2lu
Z1Jlc3VsdD4mIHJlc3VsdHMpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0
aEdyYW1tYXJTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFy
RGV0YWlsJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxl
ZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxsaW5n
VUkoYm9vbCBzaG93KTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6
OlN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywg
V2ViQ29yZTo6RWRpdG9yKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFu
ZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5k
ZXggNjlkZDU3NDczMWI0NGI0MzBjMjc0NThlNzIzYjQxYzRkZTUxNzRiMC4uMjU4ZDc2Y2YxMWQz
YmJlMTdjZjhhYTI3YjU2MDhmNDBlYzFlZjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNzk0LDEyICs3OTQsMTEg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFy
KiB0ZXh0LCBpbnQgbGVuZ3RoLCBWZWN0b3IKICNlbmRpZgogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgs
IHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKQotewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKQotICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBs
ZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107Ci0gICAgTlNBcnJheSAqaW5jb21pbmdSZXN1
bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRl
eHRTdHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6
KGNoZWNraW5nVHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmls
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dy
YXBoeTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKLSAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKK3N0
YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVz
dWx0cywgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcykKK3sKKyAgICBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworCiAgICAgZm9yIChOU1RleHRDaGVja2luZ1Jl
c3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7CiAgICAgICAgIE5TUmFu
Z2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VdOwogICAgICAgICBOU1RleHRD
aGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKQEAg
LTg3MSw2ICs4NzAsMTggQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdy
YXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjQKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0czsKK30KKyNlbmRpZgorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2luZ1R5cGVNYXNr
IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorewor
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQorICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5ndGg6bGVu
Z3RoIGZyZWVXaGVuRG9uZTpOT107CisgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcg
cmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6KGNoZWNraW5n
VHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpOVUxM
IHdvcmRDb3VudDpOVUxMXTsKKyAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKKyAgICByZXN1bHRz
ID0gY29yZShpbmNvbWluZ1Jlc3VsdHMsIGNoZWNraW5nVHlwZXMpOwogI2VuZGlmCiB9CiAKQEAg
LTEwMTcsNTggKzEwMjgsMzUgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9k
U3RhdGUoYm9vbCkKIHsKICAgICBXZWJDb3JlOjpTcGVsbENoZWNrZXIqIF9zZW5kZXI7CiAgICAg
aW50IF9zZXF1ZW5jZTsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBfdHlwZXM7CiAgICAgUmV0
YWluUHRyPE5TQXJyYXk+IF9yZXN1bHRzOwogfQotLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNv
cmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgcmVzdWx0czoo
TlNBcnJheSopcmVzdWx0czsKKy0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzOwogLSAodm9p
ZClwZXJmb3JtOwotLSAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jlc3VsdD4p
IF9jb3JlUmVzdWx0czsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkVkaXRvclNwZWxsQ2hl
Y2tSZXNwb25kZXIKLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIq
KXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHMK
Ky0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1
ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayl0
eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgX3NlbmRlciA9IHNl
bmRlcjsKICAgICBfc2VxdWVuY2UgPSBzZXF1ZW5jZTsKKyAgICBfdHlwZXMgPSB0eXBlczsKICAg
ICBfcmVzdWx0cyA9IHJlc3VsdHM7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpcGVy
Zm9ybQogewotICAgIF9zZW5kZXItPmRpZENoZWNrKF9zZXF1ZW5jZSwgW3NlbGYgX2NvcmVSZXN1
bHRzXSk7Ci19Ci0KLXN0YXRpYyBTcGVsbENoZWNraW5nUmVzdWx0IHRvQ29yZVNwZWxsaW5nUmVz
dWx0KE5TVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQpCi17Ci0gICAgTlNUZXh0Q2hlY2tpbmdU
eXBlIHR5cGUgPSBbcmVzdWx0IHJlc3VsdFR5cGVdOwotICAgIE5TUmFuZ2UgcmFuZ2UgPSBbcmVz
dWx0IHJhbmdlXTsKLSAgICBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSBjb3JlVHlwZTsKLSAg
ICBpZiAodHlwZSAmIE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKQotICAgICAgICBjb3JlVHlw
ZSA9IERvY3VtZW50TWFya2VyOjpTcGVsbGluZzsKLSAgICBlbHNlIGlmICh0eXBlICYgTlNUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hcikKLSAgICAgICAgY29yZVR5cGUgPSBEb2N1bWVudE1hcmtlcjo6
R3JhbW1hcjsKLSAgICBlbHNlCi0gICAgICAgIGNvcmVUeXBlID0gRG9jdW1lbnRNYXJrZXI6OkFs
bE1hcmtlcnM7Ci0KLSAgICByZXR1cm4gU3BlbGxDaGVja2luZ1Jlc3VsdChjb3JlVHlwZSwgcmFu
Z2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7Ci19Ci0KLS0gKFdURjo6VmVjdG9yPFdlYkNvcmU6
OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+KV9jb3JlUmVzdWx0cwotewotICAgIFdURjo6VmVjdG9yPFdl
YkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOwotICAgIGNvcmVSZXN1bHRz
LnJlc2VydmVDYXBhY2l0eShbX3Jlc3VsdHMuZ2V0KCkgY291bnRdKTsKLSAgICBmb3IgKE5TVGV4
dENoZWNraW5nUmVzdWx0KiByZXN1bHQgaW4gX3Jlc3VsdHMuZ2V0KCkpCi0gICAgICAgIGNvcmVS
ZXN1bHRzLmFwcGVuZCh0b0NvcmVTcGVsbGluZ1Jlc3VsdChyZXN1bHQpKTsKLSAgICByZXR1cm4g
Y29yZVJlc3VsdHM7CisgICAgX3NlbmRlci0+ZGlkQ2hlY2soX3NlcXVlbmNlLCBjb3JlKF9yZXN1
bHRzLmdldCgpLCBfdHlwZXMpKTsKIH0KIAogQGVuZAogI2VuZGlmCiAKLXZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNl
bmRlciwgaW50IHNlcXVlbmNlLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBzZW5k
ZXIsIGludCBzZXF1ZW5jZSwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdU
eXBlcywgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIE5TUmFuZ2UgcmFuZ2Ug
PSBOU01ha2VSYW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKTsKQEAgLTEwNzYsNyArMTA2NCw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVs
bENoZWNrZXIqIHNlbmRlciwgaW50CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENo
ZWNrZXJdIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nOnRleHQgcmFuZ2U6cmFuZ2UgdHlwZXM6TlNU
ZXh0Q2hlY2tpbmdBbGxTeXN0ZW1UeXBlcyBvcHRpb25zOjAgaW5TcGVsbERvY3VtZW50V2l0aFRh
ZzowIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TSW50ZWdlciwgTlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dyYXBoeSosIE5T
SW50ZWdlcikgewogICAgICAgICAgICAgW2N1cnJlbnRMb29wIHBlcmZvcm1TZWxlY3RvcjpAc2Vs
ZWN0b3IocGVyZm9ybSkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
OltbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2VuZGVyOnNl
bmRlciBzZXF1ZW5jZTpzZXF1ZW5jZSByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpbW1tXZWJFZGl0b3JTcGVsbENo
ZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aFNlbmRlcjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVu
Y2UgdHlwZXM6Y2hlY2tpbmdUeXBlcyByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudDpuaWwgb3JkZXI6MCBtb2Rlczpb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNEZWZhdWx0UnVuTG9vcE1vZGVdXTsKICAgICAgICAg
fV07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMmFhZWY1NmZjNjFkNGM5MGFiOWNjNjg2OTRh
YzY5MDE4MGU0MTRhMC4uNmMwMTVlZDA0ZDM4YmUxMmEyZDIwODhhNGFlNmE0M2I1OTU0YTYxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxk
IGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorICAgICAgICAKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50UXQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0xMSAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgYXR0ZW1w
dCBhdCBidWlsZCBmaXghCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmgKaW5kZXggMDQ1MDYwMzUzOTA0YzA1NWQ3Y2NmMmFkNDYxZjVjYjhlODFh
ZTFhMC4uMGQ4ZThjNjc5ODRlOWFkMWY3ZjJjNTZiNmMwZDFjZmQ2NGJlMjFmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaApAQCAtMTA5
LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQo
Y29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+
JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQs
IGNvbnN0IFN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNv
bnN0IFN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNr
ZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICBib29sIGlzRWRpdGluZygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IDdmMzIwNjA1YTExYWE4NmQ2YTM3ZWRiNTc4NjU1YjM0NDk5ODg0ZTMu
Ljc4N2QwNjNhOGQ0NmQ0NDU2MjRlY2U5ZGQzZjVjODFmNDIxNjIyZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2Vk
IHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKToKKwogMjAxMS0wMy0xMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTW9yZSBXaW5kb3dzIGJ1aWxkIGZpeCBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDE4YmU0MDA2ZjQzOTJkNzFhYzA3
NDUxZmIyYTQ3Nzg4ZDM2NjI2MjAuLmYzMGM0MzRhNzA0ZjRjNzhhOGFjOTI2ZDczMWY4MzNhNjVi
YWJjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0
TWV0aG9kU3RhdGUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENo
ZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmlu
ZGV4IDcyNGI5MmFhNmM3MDg4ZGJlNmI4NmMwYzQzZjZlYmU4ZTRiYmU3OGYuLjhiZDI2NGI0YTlj
ZWRlYTY1ZDhjYTIyYWIxOWJhZjM5OWVmNTFlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1Jl
ZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRl
eHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdp
bkNFLmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKaW5kZXgg
ZDkzZWNjNWI4ZmQ1ZTM1ZjQ0N2Y5MjFlNDc3NTJkYjMyZTIxNDYyNy4uYTJiMjNiNDg1MzZhOThj
OWE1MDg3YjQxMmY4YmU0YTNhNWJkZjdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaApAQCAtMTAxLDcgKzEwMSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RG
OjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRo
b2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOwot
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1
YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhp
czsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCAzZTM4NWIxYTczYzI0ZjQ4ZDNjM2Nm
MDczYjY3YTU0NDQzMTBiMzI0Li5jYjQ4MzRjODE4NmU0MGNhMzE0MzA5MjYxMWI3N2IyNjk5YTRk
MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEg
SGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBz
aG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRXeDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTA3ICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVu
dFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaApp
bmRleCBkMWQzNTk3MDk3NTljOTAwNjg0Mzc5MjBiNTA1ZTVlZmYyODIyMjRkLi42NWVlNDkzMDU5
MzljMjdmNWIwMzYxNjVhNzZjNTVkZGY0ZDUwNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hl
Y2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggOTgyZDRkMzJlODNiN2M5MWZjZWE0MTJlMjU4MWVkMDAxMjU5ZTY4My4uZDVh
ZTU1OTc3NGE2ZWJlNmFhOWI2OTQxMWI3NzE3NTRmNjExYTdkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQg
YSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKwog
MjAxMS0wMy0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBiOTU0
MjgzNTkxMzM3ODBiNGNlZDYwYmY2M2Q5NWEzNmI5ZGUxNTBjLi5jZTJjZTYxNDM2ZWRhNmQxODlh
OTJhM2U3NDkzNTEzM2VjZjMyM2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NDEs
NyArNDQxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9v
bCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBX
VEY6OlN0cmluZyYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAppbmRleCBmYTg0MjZhMzhlOTRmYmUzZjQxNjU5ODlmODE1MmYzYWQ3
NGU2MDc4Li4wODdlMzIwOWExYjFhNjAyOGJiZDBiZmY4YjJmOGE3MjJlYWM3ODc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0
cmluZyYgbWlzc3BlbGxlZFdvcmQpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0
cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0
YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwog
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFy
YWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5
cGVzLCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CisgICAg
dmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQg
bGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLCBWZWN0
b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7CiAjZW5kaWYKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmIGRldGFpbCk7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJik7CkBA
IC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0Zv
cldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZlY3RvcjxT
dHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3Rh
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQp
OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVs
bENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQogICAg
IHZpcnR1YWwgdm9pZCBzaG93Q29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OkNvcnJlY3Rpb25QYW5l
bEluZm86OlBhbmVsVHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncywgV2ViQ29yZTo6RWRpdG9yKik7CiAgICAgdmlydHVhbCB2b2lkIGRp
c21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rp
b25QYW5lbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KaW5kZXggOGFmMDQz
ODBjMWZmZTg0ZDk1ZGQxZjA4MWZlYTAyMGFhOTE2NDk5Yy4uYzUzMjc0ZGI4YjQ2ZTViNDNjMDhk
YjRjZTNlYWM5NGVkZjk3ZmUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5t
bQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0b2dnbGVBdXRvbWF0
aWNTcGVsbGluZ0NvcnJlY3Rpb24oKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwg
aW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4mIHJlc3VsdHMpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRz
KQogewogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHdlIHdvdWxkbid0IGhhdmUg
dG8gY29weSB0aGUgdGV4dCBoZXJlLgogICAgIG1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3RyaW5nKHRleHQsIGxlbmd0aCksIGNo
ZWNraW5nVHlwZXMpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFw
aDo6UmVwbHkocmVzdWx0cykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85901</attachid>
            <date>2011-03-15 20:25:58 -0700</date>
            <delta_ts>2011-03-21 22:34:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56085-20110316122555.patch</filename>
            <type>text/plain</type>
            <size>47737</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEyMDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZDM3MGMyZjRkNzlmN2I5
ZmNjOTg2M2I0OTkzOWM2MDA3NDRjNDJiLi5kOTBhYzg4N2M5M2NiNGZhZjk2ZTBkNDA2YmNiZjUx
YWNjZjY0MjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTEgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0
IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAg
ICAgIFJlbW92ZWQgV2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jlc3VsdCBhbmQgcmVwbGFjZWQgaXQg
d2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gYWRkZWQg
VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkgc2hvdWxkIGhhdmUK
KyAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgYXMgYSBwYXJhbWV0ZXIgdG8gY29udHJvbCB0
ZXh0IGNoZWNraW5nIHR5cGUuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VT
ZWxlY3Rpb25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dGV4dENoZWNraW5nVHlwZU1hc2tGb3IpOiBFeHRyYWN0ZWQgZnJvbSBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKCkKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVj
a2luZ0Zvcik6IEFkZGVkIGEgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyOjptYXJrQXQpOiBFeHRyYWN0ZWQgZnJvbSBkaWRDaGVjaygpLCBBZGRlZCBhIGNoZWNrIGZv
ciB0aGUgR3JhbW1hckRldGFpbCBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5VGV4dENo
ZWNrZXJDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVt
cHR5VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMTUgIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBmODhiMGRlZDBjNTVjOWY5OTA2YmU4Nzg5Nzcz
ZDcwOTg5YjZlNTUyLi40NDY3MWU1MjRhMWVkZDQzOWNhNjg2ZDZlMjBmOTJjNTA4Zjk2MDMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjkyLDcgKzI5Miw3IEBAIF9fWk43V2ViQ29yZTEyU2hh
cmVkQnVmZmVyNmFwcGVuZEVQS2NqCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckMxRVBLY2kK
IF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyQzFFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZm
ZXJEMUV2Ci1fX1pON1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0VpUktOM1dURjZWZWN0
b3JJTlNfMTlTcGVsbENoZWNraW5nUmVzdWx0RUxtMEVFRQorX19aTjdXZWJDb3JlMTJTcGVsbENo
ZWNrZXI4ZGlkQ2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5TXzE4VGV4dENoZWNraW5nUmVzdWx0RUxt
MEVFRQogX19aTjdXZWJDb3JlMTJUZXh0RW5jb2RpbmdDMUVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMTFyYW5nZUxlbmd0aEVQS05TXzVSYW5nZUViCiBfX1pON1dl
YkNvcmUxMlRleHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzdFbGVt
ZW50RWlpYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg4MDc5NjUwNjhhNDM5MTBh
OWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLmViZWVhNzU1YzBkYzYxNGUzMDgyNmE4ZjcwOTlkZWJj
NTQyMjljNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTY0LDcgKzY0LDYgQEAK
ICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYXN0
ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJSZW1vdmVGb3JtYXRDb21tYW5kLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTQ0MCw3ICs0MzksNyBAQCB2b2lkIEVkaXRvcjo6cmVw
bGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZy
YWdtZW50LAogCiAgICAgTm9kZSogbm9kZVRvQ2hlY2sgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmIChtX3NwZWxsQ2hlY2tlci0+Y2FuQ2hlY2tB
c3luY2hyb25vdXNseShub2RlVG9DaGVjaykpCi0gICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1
ZXN0Q2hlY2tpbmdGb3Iobm9kZVRvQ2hlY2spOworICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVx
dWVzdENoZWNraW5nRm9yKHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKE1hcmtTcGVsbGluZyB8IE1h
cmtHcmFtbWFyKSwgbm9kZVRvQ2hlY2spOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVj
dGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwg
Ym9vbCBzbWFydFJlcGxhY2UpCkBAIC0yMjcwLDI2ICsyMjY5LDggQEAgdm9pZCBFZGl0b3I6Om1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9u
cyB0ZXh0Q2gKICAgICB9CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRz
OwotICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMgPSAwOwotICAgIGlmIChzaG91bGRNYXJrU3Bl
bGxpbmcpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OwotICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5l
bCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsK
LSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7Ci0gICAgICAgIGlmIChpc0F1dG9t
YXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9
IFRleHRDaGVja2luZ1R5cGVMaW5rOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0
aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNr
aW5nVHlwZVF1b3RlOwotICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5h
YmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlRGFz
aDsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpKQotICAg
ICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7Ci0g
ICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2lu
Z1R5cGVDb3JyZWN0aW9uOwotICAgIH0KLSAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBh
cmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5ndGgo
KSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CisgICAgdGV4dENoZWNrZXIoKS0+Y2hlY2tUZXh0
T2ZQYXJhZ3JhcGgocGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFncmFwaC50ZXh0TGVu
Z3RoKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDaGVj
a2luZ1R5cGVNYXNrRm9yKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKIAogI2lmIFNV
UFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICAvLyBJZiB0aGlzIGNoZWNraW5nIGlzIG9u
bHkgZm9yIHNob3dpbmcgY29ycmVjdGlvbiBwYW5lbCwgd2Ugc2hvdWxkbid0IGJvdGhlciB0byBt
YXJrIG1pc3NwZWxsaW5ncy4KQEAgLTM1OTYsNCArMzU3NywzNyBAQCBGbG9hdFJlY3QgRWRpdG9y
Ojp3aW5kb3dSZWN0Rm9yUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlKSBjb25zdAogICAgIHJldHVy
biB2aWV3ID8gdmlldy0+Y29udGVudHNUb1dpbmRvdyhJbnRSZWN0KHJhbmdlLT5ib3VuZGluZ1Jl
Y3QoKSkpIDogRmxvYXRSZWN0KCk7CiB9ICAgICAgICAKIAorVGV4dENoZWNraW5nVHlwZU1hc2sg
RWRpdG9yOjp0ZXh0Q2hlY2tpbmdUeXBlTWFza0ZvcihUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRD
aGVja2luZ09wdGlvbnMpCit7CisgICAgYm9vbCBzaG91bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hl
Y2tpbmdPcHRpb25zICYgTWFya1NwZWxsaW5nOworICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIg
PSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya0dyYW1tYXI7CisgICAgYm9vbCBzaG91bGRTaG93
Q29ycmVjdGlvblBhbmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFNob3dDb3JyZWN0aW9uUGFu
ZWw7CisKKyAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzID0gMDsKKyAgICBp
ZiAoc2hvdWxkTWFya1NwZWxsaW5nKQorICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZzsKKyAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIpCisgICAgICAgIGNo
ZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgaWYgKHNob3VsZFNo
b3dDb3JyZWN0aW9uUGFuZWwpCisgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZUNvcnJlY3Rpb247CisKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgIGJvb2wgc2hv
dWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFBlcmZvcm1SZXBs
YWNlbWVudDsKKyAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7CisgICAgICAgIGlm
IChpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2lu
Z1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVMaW5rOworICAgICAgICBpZiAoaXNBdXRvbWF0aWNR
dW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZVF1b3RlOworICAgICAgICBpZiAoaXNBdXRvbWF0aWNEYXNoU3Vic3Rp
dHV0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tp
bmdUeXBlRGFzaDsKKyAgICAgICAgaWYgKGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxl
ZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFj
ZW1lbnQ7CisgICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgaXNBdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGNo
ZWNraW5nVHlwZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCmluZGV4IGUxYTcxMTkyNDVlODNiZWQxMGQ3M2QyMDVlZmUyMTU0MDg1YzU2OWUuLmJm
YjRmZDAzNjRjNWQ5NmU1OTQzMDUxMTk0Zjg4ZDY4MmU5ODE4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkVkaXRvckluc2VydEFjdGlvbi5o
IgogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlv
bi5oIgpAQCAtNjIsNyArNjMsNiBAQCBjbGFzcyBQYXN0ZWJvYXJkOwogY2xhc3MgU2ltcGxlRm9u
dERhdGE7CiBjbGFzcyBTcGVsbENoZWNrZXI7CiBjbGFzcyBUZXh0OwotY2xhc3MgVGV4dENoZWNr
ZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZlbnQ7CiAKIHN0cnVjdCBDb21wb3NpdGlvblVuZGVybGlu
ZSB7CkBAIC0yMjIsNiArMjIyLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtNaXNzcGVsbGlu
Z3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxp
bmdSYW5nZSk7CiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
Jik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBtYXJrR3JhbW1hciwgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7CisKKyAgICBlbnVtIFRleHRDaGVja2lu
Z09wdGlvbkZsYWdzIHsKKyAgICAgICAgTWFya1NwZWxsaW5nID0gMSA8PCAwLAorICAgICAgICBN
YXJrR3JhbW1hciA9IDEgPDwgMSwKKyAgICAgICAgUGVyZm9ybVJlcGxhY2VtZW50ID0gMSA8PCAy
LAorICAgICAgICBTaG93Q29ycmVjdGlvblBhbmVsID0gMSA8PCAzLAorICAgIH07CisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdPcHRpb25zOworCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVP
UEFSRCkKICAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKICAgICB2b2lkIGxvd2VyY2FzZVdvcmQo
KTsKQEAgLTIzOSwxNCArMjQ4LDYgQEAgcHVibGljOgogICAgIHZvaWQgdG9nZ2xlQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50KCk7CiAgICAgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bkVuYWJsZWQoKTsKICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigp
OwotICAgIGVudW0gVGV4dENoZWNraW5nT3B0aW9uRmxhZ3MgewotICAgICAgICBNYXJrU3BlbGxp
bmcgPSAxIDw8IDAsCi0gICAgICAgIE1hcmtHcmFtbWFyID0gMSA8PCAxLAotICAgICAgICBQZXJm
b3JtUmVwbGFjZW1lbnQgPSAxIDw8IDIsCi0gICAgICAgIFNob3dDb3JyZWN0aW9uUGFuZWwgPSAx
IDw8IDMsCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIFRleHRDaGVja2luZ09wdGlvbnM7
Ci0KICAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4
dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFtbWFyUmFu
Z2UpOwogICAgIHZvaWQgY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZyk7CiAjZW5kaWYKQEAgLTQxMSw2ICs0MTIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCopOwogICAgIHZvaWQg
cmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKCk7CiAgICAgdm9pZCBtYXJrTWlz
c3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBib29sIGNoZWNr
U3BlbGxpbmcsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CisgICAgVGV4
dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0
aW9ucyk7CiAKICAgICB2b2lkIHNlbGVjdENvbXBvc2l0aW9uKCk7CiAgICAgdm9pZCBjb25maXJt
Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgYm9vbCBwcmVzZXJ2ZVNlbGVjdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5kZXggNzk4OGU0MTYxMGE1MTliNmE1
Y2IyNjMwYzYxMGViZWE4ZmFlNWYyMS4uYzMxOGEwMTU1NDkxMjllODg2ODdiODRjNWEyZDQwYmNj
NDdkNDQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcApAQCAtMTAw
LDEzICsxMDAsMTMgQEAgYm9vbCBTcGVsbENoZWNrZXI6OmlzQ2hlY2thYmxlKE5vZGUqIG5vZGUp
IGNvbnN0CiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKTsKIH0KIAotdm9pZCBT
cGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0ZvcihOb2RlKiBub2RlKQordm9pZCBTcGVsbENo
ZWNrZXI6OnJlcXVlc3RDaGVja2luZ0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBOb2Rl
KiBub2RlKQogewogICAgIEFTU0VSVChjYW5DaGVja0FzeW5jaHJvbm91c2x5KG5vZGUpKTsKIAog
ICAgIGlmICghaW5pdFJlcXVlc3Qobm9kZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NsaWVu
dC0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodGhpcywgbV9yZXF1ZXN0U2VxdWVuY2UsIG1fcmVx
dWVzdFRleHQpOworICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh0aGlzLCBt
X3JlcXVlc3RTZXF1ZW5jZSwgbWFzaywgbV9yZXF1ZXN0VGV4dCk7CiB9CiAKIHN0YXRpYyBib29s
IGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50IGRpc3RhbmNl
KQpAQCAtMTMxLDcgKzEzMSwyMSBAQCBzdGF0aWMgYm9vbCBmb3J3YXJkSXRlcmF0b3IoUG9zaXRp
b25JdGVyYXRvciYgaXRlcmF0b3IsIGludCBkaXN0YW5jZSkKICAgICByZXR1cm4gZmFsc2U7ICAg
IAogfQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBW
ZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitzdGF0aWMgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGUgdG9NYXJrZXJUeXBlKFRleHRDaGVja2luZ1R5cGUgdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzoKKyAg
ICAgICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzsKKyAgICBjYXNlIFRleHRDaGVj
a2luZ1R5cGVHcmFtbWFyOgorICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKKyAgICB9Cit9CisKKy8vIEN1cnJlbm50bHkg
aWdub3JpbmcgVGV4dENoZWNraW5nUmVzdWx0OjpkZXRhaWxzIGJ1dCBzaG91bGQgYmUgaGFuZGxl
ZC4gU2VlIEJ1ZyA1NjM2OC4KK3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVu
Y2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogICAgIGlm
ICghaXNWYWxpZChzZXF1ZW5jZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NCwxNiArMTU4LDE2
IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3Rv
cjxTcGVsbENoZWNraW5nUmVzdWx0PiYgcmVzCiAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gMDsKICAg
ICBQb3NpdGlvbkl0ZXJhdG9yIHN0YXJ0ID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG1f
cmVxdWVzdE5vZGUuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5z
aXplKCk7ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBlKCkgIT0gRG9jdW1lbnRN
YXJrZXI6OlNwZWxsaW5nICYmIHJlc3VsdHNbaV0udHlwZSgpICE9IERvY3VtZW50TWFya2VyOjpH
cmFtbWFyKQorICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZyAmJiByZXN1bHRzW2ldLnR5cGUgIT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBUbyBhdm9pZCBtb3ZpbmcgdGhlIHBv
c2l0aW9uIGJhY2t3YXJkLCB3ZSBhc3N1bWUgdGhlIGdpdmVuIHJlc3VsdHMgYXJlIHNvcnRlZCB3
aXRoCiAgICAgICAgIC8vIHN0YXJ0T2Zmc2V0IGFzIHRoZSBvbmVzIHJldHVybmVkIGJ5IFtOU1Nw
ZWxsQ2hlY2tlciByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzpdLgotICAgICAgICBBU1NFUlQoc3Rh
cnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbigpKTsKLSAgICAgICAgaWYgKCFmb3J3YXJk
SXRlcmF0b3Ioc3RhcnQsIHJlc3VsdHNbaV0ubG9jYXRpb24oKSAtIHN0YXJ0T2Zmc2V0KSkKKyAg
ICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0IDw9IHJlc3VsdHNbaV0ubG9jYXRpb24pOworICAgICAg
ICBpZiAoIWZvcndhcmRJdGVyYXRvcihzdGFydCwgcmVzdWx0c1tpXS5sb2NhdGlvbiAtIHN0YXJ0
T2Zmc2V0KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBQb3NpdGlvbkl0ZXJhdG9yIGVu
ZCA9IHN0YXJ0OwotICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIHJlc3VsdHNbaV0u
bGVuZ3RoKCkpKQorICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihlbmQsIHJlc3VsdHNbaV0u
bGVuZ3RoKSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8vIFVzZXJzIG9yIEphdmFT
Y3JpcHQgYXBwbGljYXRpb25zIG1heSBjaGFuZ2UgdGV4dCB3aGlsZSBhIHNwZWxsLWNoZWNrZXIg
Y2hlY2tzIGl0cwpAQCAtMTYzLDExICsxNzcsMTEgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENo
ZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+JiByZXMK
ICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9yZXF1ZXN0Tm9k
ZS0+ZG9jdW1lbnQoKSwgc3RhcnQsIGVuZCk7CiAgICAgICAgIC8vIEZJWE1FOiBVc2UgdGV4dENv
bnRlbnQoKSBjb21wYXRpYmxlIHN0cmluZyBjb252ZXJzaW9uLgogICAgICAgICBTdHJpbmcgZGVz
dGluYXRpb24gPSByYW5nZS0+dGV4dCgpOwotICAgICAgICBTdHJpbmcgc291cmNlID0gbV9yZXF1
ZXN0VGV4dC5zdWJzdHJpbmcocmVzdWx0c1tpXS5sb2NhdGlvbigpLCByZXN1bHRzW2ldLmxlbmd0
aCgpKTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vic3RyaW5nKHJl
c3VsdHNbaV0ubG9jYXRpb24sIHJlc3VsdHNbaV0ubGVuZ3RoKTsKICAgICAgICAgaWYgKGRlc3Rp
bmF0aW9uID09IHNvdXJjZSkKLSAgICAgICAgICAgIG1fcmVxdWVzdE5vZGUtPmRvY3VtZW50KCkt
Pm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLmdldCgpLCByZXN1bHRzW2ldLnR5cGUoKSk7Cisg
ICAgICAgICAgICBtX3JlcXVlc3ROb2RlLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtl
cihyYW5nZS5nZXQoKSwgdG9NYXJrZXJUeXBlKHJlc3VsdHNbaV0udHlwZSkpOwogCi0gICAgICAg
IHN0YXJ0T2Zmc2V0ID0gcmVzdWx0c1tpXS5sb2NhdGlvbigpOworICAgICAgICBzdGFydE9mZnNl
dCA9IHJlc3VsdHNbaV0ubG9jYXRpb247CiAgICAgfQogCiAgICAgY2xlYXJSZXF1ZXN0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCBkMzk0MGU1MDRmYWE0NmE5NjVj
NzM4MDRiNTljZjcxMWY3NmRjYmY4Li40YmNiODllNTk4NWNkMWJkM2M2MmVhOWJmYWQwN2Q5ZDRj
YWUxYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgU3BlbGxDaGVja2VyX2gKIAogI2luY2x1ZGUgIkRvY3VtZW50TWFya2Vy
LmgiCisjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMjUgKzM2LDYgQEAgY2xhc3Mg
VGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIE5vZGU7CiAKLWNsYXNzIFNw
ZWxsQ2hlY2tpbmdSZXN1bHQgewotcHVibGljOgotICAgIGV4cGxpY2l0IFNwZWxsQ2hlY2tpbmdS
ZXN1bHQoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSA9IERvY3VtZW50TWFya2VyOjpT
cGVsbGluZywgaW50IGxvY2F0aW9uID0gMCwgaW50IGxlbmd0aCA9IDApCi0gICAgICAgIDogbV90
eXBlKHR5cGUpCi0gICAgICAgICwgbV9sb2NhdGlvbihsb2NhdGlvbikKLSAgICAgICAgLCBtX2xl
bmd0aChsZW5ndGgpCi0gICAgewotICAgIH0KLQotICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0gCi0gICAgaW50IGxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQotICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX2xlbmd0aDsgfQotCi1wcml2YXRlOgotICAgIERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlIG1fdHlwZTsKLSAgICBpbnQgbV9sb2NhdGlvbjsKLSAgICBpbnQgbV9sZW5ndGg7Ci19Owot
CiBjbGFzcyBTcGVsbENoZWNrZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNwZWxsQ2hl
Y2tlcik7CiBwdWJsaWM6CkBAIC02NSw4ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzQnVz
eSgpIGNvbnN0OwogICAgIGJvb2wgaXNWYWxpZChpbnQgc2VxdWVuY2UpIGNvbnN0OwogICAgIGJv
b2wgaXNDaGVja2FibGUoTm9kZSopIGNvbnN0OwotICAgIHZvaWQgcmVxdWVzdENoZWNraW5nRm9y
KE5vZGUqKTsKLSAgICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFNw
ZWxsQ2hlY2tpbmdSZXN1bHQ+Jik7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENo
ZWNraW5nVHlwZU1hc2ssIE5vZGUqKTsKKyAgICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwg
Y29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKIAogcHJpdmF0ZToKICAgICBib29s
IGluaXRSZXF1ZXN0KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcAppbmRleCBlNTU1M2ZkMTAyOTJmZTU4N2YwZTIzMzBkMTY1ZThlMTc3Mjhl
NDFkLi40OGZhZWU5NTQ1MDZiYzg1NGEwNzc0ODZmYWM5MDM3NGU0ZWFmYTZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0yNzQsNyArMjc0
LDcgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJh
ZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBn
cmFtbWFyRGV0YWlsSW5kZXggPSAwOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgdWlu
dDY0X3QgY2hlY2tpbmdUeXBlcyA9IGNoZWNrR3JhbW1hciA/IChUZXh0Q2hlY2tpbmdUeXBlU3Bl
bGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikgOiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxp
bmc7CisgICAgICAgICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9
IGNoZWNrR3JhbW1hciA/IChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdU
eXBlR3JhbW1hcikgOiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CiAgICAgICAgICAgICAgICAg
bV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0
cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgY2hlY2tpbmdUeXBl
cywgcmVzdWx0cyk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKQEAgLTUzNSw3ICs1MzUsNyBA
QCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVk
T3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbAogICAgICAgICByZXR1cm4gZ3Vlc3NlczsKIAogICAg
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7Ci0gICAgdWludDY0X3QgY2hlY2tp
bmdUeXBlcyA9IGNoZWNrR3JhbW1hciA/IChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hcikgOiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgVGV4
dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9IGNoZWNrR3JhbW1hciA/IChUZXh0Q2hl
Y2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikgOiBUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmc7CiAgICAgbV9jbGllbnQtPnRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9m
UGFyYWdyYXBoKHBhcmFncmFwaC50ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGgudGV4dExlbmd0
aCgpLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IGVkOTJmMTEyY2JhODc3ZmQ1MmMzNDY0MDdmNWI0ZmZlMjYxMjBmNmMuLjQ2
YWUxNTJiY2UwODA4OTZlMzgzMDhkMjk0ZmQ4ZTcwOTVmNTc1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQwNywxMSArNDA3LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQsIFZlY3RvcjxH
cmFtbWFyRGV0YWlsPiYsIGludCosIGludCopIHsgfQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBp
bnQsIHVpbnQ2NF90LCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQsIFRleHRDaGVj
a2luZ1R5cGVNYXNrLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsgfTsKICNlbmRpZgog
CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgU3RyaW5nJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGlu
dCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpIHsgfQogfTsKIAogY2xhc3Mg
RW1wdHlFZGl0b3JDbGllbnQgOiBwdWJsaWMgRWRpdG9yQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAppbmRleCBhY2FhMDJjZjYy
YTA3MGY5MGNmOTRjNmUxMjZjNWQwZDY3YmZiYjhlLi4xNjkyNzgxNDNiYTRiOWNjM2RlNDgzMGQ1
ZjhmZWQ3YjFlNmNlNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDaGVja2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0Q2hlY2tlckNsaWVudC5oCkBAIC01Myw2ICs1Myw4IEBAIGVudW0gVGV4dENoZWNraW5nVHlw
ZSB7CiAgICAgVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb24gID0gMSA8PCA5CiB9OwogCit0eXBl
ZGVmIHVuc2lnbmVkIFRleHRDaGVja2luZ1R5cGVNYXNrOworCiBzdHJ1Y3QgVGV4dENoZWNraW5n
UmVzdWx0IHsKICAgICBUZXh0Q2hlY2tpbmdUeXBlIHR5cGU7CiAgICAgaW50IGxvY2F0aW9uOwpA
QCAtNzEsMTQgKzczLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRX
b3JkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVD
aGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFy
TG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgPSAwOwogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xF
T1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFy
KiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiYgcmVzdWx0cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgVGV4dENoZWNraW5nVHlw
ZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMp
ID0gMDsKICNlbmRpZgogCiAgICAgLy8gRm9yIHNwZWxsY2hlY2tlcnMgdGhhdCBzdXBwb3J0IG11
bHRpcGxlIGxhbmd1YWdlcywgaXQncyBvZnRlbiBpbXBvcnRhbnQgdG8gYmUgYWJsZSB0byBpZGVu
dGlmeSB0aGUgbGFuZ3VhZ2UgaW4gb3JkZXIgdG8KICAgICAvLyBwcm92aWRlIG1vcmUgYWNjdXJh
dGUgY29ycmVjdGlvbiBzdWdnZXN0aW9ucy4gQ2FsbGVyIGNhbiBwYXNzIGluIG1vcmUgdGV4dCBp
biAiY29udGV4dCIgdG8gYWlkIHN1Y2ggc3BlbGxjaGVja2VycyBvbiBsYW5ndWFnZQogICAgIC8v
IGlkZW50aWZpY2F0aW9uLiBOb3JhbWxseSBpdCdzIHRoZSB0ZXh0IHN1cnJvdW5kaW5nIHRoZSAi
d29yZCIgZm9yIHdoaWNoIHdlIGFyZSBnZXR0aW5nIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuCiAg
ICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29u
c3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNv
bnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoU3BlbGxDaGVja2VyKiwgaW50LCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5n
JikgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA0NWY2ODYxODA5
N2ZlOTA3MDVjYTVhMWQ0ZTMxNDVmM2E3NDY0ZjMyLi4yYTU0MzQyOWNiYThhMjU0ZjAxNjhlYjkw
ZTY5MmE4YzQyMmExZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3Rvcmlu
Z10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tp
bmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU2MDg1CisKKyAgICAgICAgRm9sbG93ZWQgdGhlIHNpZ25hdHVyZSBjaGFuZ2UuCisgICAgICAg
IAorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL0VkaXRv
ckNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SW1wbC5jcHAKKwogMjAxMS0wMy0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgxMTQ0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCAz
OGQ0ZjVlZjg5MjM5ZTA0NWFhZjVmMGY5MTM0NzI2YTM4YTYyMjk5Li41MTVmYTRhYjYyOWI3MTc2
NTk3NzQ3NDBiNjFlMDAxZjRiNDE3ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAtODcxLDcgKzg3MSw3IEBAIHZvaWQgRWRpdG9y
Q2xpZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQg
bGVuZ3RoLAogICAgICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAot
dm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNr
ZXIqIHNlbmRlciwgaW50IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3ZvaWQgRWRp
dG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiBzZW5k
ZXIsIGludCBpZGVudGlmaWVyLCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgU3RyaW5nJiB0
ZXh0KQogewogICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPnJlcXVlc3RDaGVja2luZ09mVGV4dCh0
ZXh0LCBuZXcgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwoaWRlbnRpZmllciwgc2VuZGVy
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgK
aW5kZXggYjgxZmI1NjA1NDMwYmYyZjVmMzNkZTQ4NzRjMGI2NmY2ZjdjYzQ2ZS4uMmViYzZlYTU4
MDRiMjUzZmJlNDE2Mzg2NzQ1Yjk4NzExN2FhZmRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwot
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6
VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CiAKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbkltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4
dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwCmluZGV4IDI3NTk3OTAyYWFhMjI1ZjEyMzg5NDRl
OGQ1ZTU0NTA3YTQxZTEwMWQuLjc3MDljNmIyZDY1NTY0ZDhhODUwZTVkZjhkNzMxM2JkODYxZDc0
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJU
ZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAKQEAgLTM0LDE2ICszNCwzNiBAQAogI2luY2x1
ZGUgIlNwZWxsQ2hlY2tlci5oIgogI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgog
I2luY2x1ZGUgIldlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIFZl
Y3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorc3RhdGljIFRleHRDaGVja2luZ1R5cGUg
dG9Db3JlQ2hlY2tpbmdUeXBlKFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3IgZXJyb3IpCiB7
Ci0gICAgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkKLSAgICAgICAgY29yZVJlc3Vs
dHMuYXBwZW5kKFNwZWxsQ2hlY2tpbmdSZXN1bHQoc3RhdGljX2Nhc3Q8RG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGU+KHJlc3VsdHNbaV0uZXJyb3IoKSksIHJlc3VsdHNbaV0ucG9zaXRpb24oKSwg
cmVzdWx0c1tpXS5sZW5ndGgoKSkpOworICAgIHN3aXRjaCAoZXJyb3IpIHsKKyAgICBjYXNlIFdl
YktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxsaW5nOgorICAgICAgICByZXR1
cm4gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIGNhc2UgV2ViS2l0OjpXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcjoKKyAgICAgICAgcmV0dXJuIFRleHRDaGVja2luZ1R5
cGVHcmFtbWFyOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgfQorfQorCitzdGF0
aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJWZWN0
b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKKyAgICBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiBjb3JlUmVzdWx0czsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJl
c3VsdHMuc2l6ZSgpOyArK2kpIHsgCisgICAgICAgIFRleHRDaGVja2luZ1Jlc3VsdCBjb3JlUmVz
dWx0OworICAgICAgICBjb3JlUmVzdWx0LnR5cGUgPSB0b0NvcmVDaGVja2luZ1R5cGUocmVzdWx0
c1tpXS5lcnJvcigpKTsKKyAgICAgICAgY29yZVJlc3VsdC5sb2NhdGlvbiA9IHJlc3VsdHNbaV0u
cG9zaXRpb24oKTsKKyAgICAgICAgY29yZVJlc3VsdC5sZW5ndGggPSByZXN1bHRzW2ldLmxlbmd0
aCgpOworICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQoY29yZVJlc3VsdCk7CisgICAgfQorCiAg
ICAgcmV0dXJuIGNvcmVSZXN1bHRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggYTIwYzUyZTJh
NjM0MTg0YTNhOTBkY2MwYWE5MDFmNmQwOTYwZTdlMS4uNDkxODc3ZmY2NTg5MDU0NjAxNjE3MDVi
ZmE1Nzc0YWVkYTcyYTQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxD
aGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1Cisg
ICAgICAgIAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6
CisKIDIwMTEtMDMtMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFRyeSB0byBmaXggdGhlIEVGTCBidWlsZC1idXN0YWdlIHRoYXQgdGhlaXIgRVdTIGJvdCBk
aWQgbm90IHNlZSwgYnV0IHRoZWlyIGNvcmUtYnVpbGRlciBkaWQuICAoc2lnaCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKaW5kZXgg
NTc1YTUwZDI1M2QyOTQwNmM0NmQ4YTM0Y2FmMzY4ZWJhZDhhZTc2Ny4uNTZiMzMwMDJlYWExN2E4
NWI5YjM3MDE2OWQ4YmQ4NDczZmRjM2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29y
ZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNv
bnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJD
bGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IGMyZGY3NzExMmU1NmVjMDMzNDAwMzUxODZiOWQxNjFhMTI2N2VlMWUuLmE5
ZjczYTcwNTlmN2MxZmMyODhlZDlmZmI2OGUwNmYxNDQ3NmUyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdp
dGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNr
ZXJDbGllbnRFbmNoYW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyQ2xpZW50RW5j
aGFudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTE1ICBJbHlhIFNoZXJt
YW4gIDxpc2hlcm1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBD
aGFuZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRD
aGVja2VyQ2xpZW50RW5jaGFudC5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
VGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmgKaW5kZXggYzI5NGEzZDAwZjJkZGU1MDZhYWRhNjA0
NzE0YTA1YjVkZDQ0ODc2MS4uNWQ5M2MwNzIxNmQ5OTViZmUzNmNhZmFkZDk5MGMwYTc4MmY1MmRk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNr
ZXJDbGllbnRFbmNoYW50LmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
VGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgVGV4dENo
ZWNrZXJDbGllbnRFbmNoYW50IDogcHVibGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsK
ICAgICAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JN
aXNzcGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3Rv
cjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQq
IGJhZEdyYW1tYXJMZW5ndGgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0Zvcldv
cmQoY29uc3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25z
dCBXVEY6OlN0cmluZyYpIHt9CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAKICAgICAgICAgdm9pZCB1cGRhdGVT
cGVsbENoZWNraW5nTGFuZ3VhZ2UoY29uc3QgY2hhciopOwogICAgICAgICBzdGF0aWMgdm9pZCBm
cmVlU3BlbGxDaGVja2luZ0xhbmd1YWdlKGdwb2ludGVyLCBncG9pbnRlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hh
bmdlTG9nCmluZGV4IGIyYWVmY2U4ZGQ4OGY2YmFkOTQ0MjllMGM3YTYzMWI3NWJiM2JhYjMuLjQ4
MGNmZjZkZjY2ZDg4ZDRiMDcwOTExNmY3YzcyMzA2ODUxNTIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNl
ZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEhhaWt1Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlr
dS5oIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlr
dS5oCmluZGV4IGJiMGQ4YWMxMDVmY2UyMjE1N2E3MDIwNmFhNGMxNGVjNTkwN2EwYjUuLmNjMjFm
Y2I4NmYyOTE5NGVhM2U4MTRmYTA1NzNkNWU2NGNjYmExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKQEAgLTEx
MSw3ICsxMTEsNyBAQCBjbGFzcyBFZGl0b3JDbGllbnRIYWlrdSA6IHB1YmxpYyBFZGl0b3JDbGll
bnQsIHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVudCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRH
dWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwg
VmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElu
cHV0TWV0aG9kU3RhdGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3Rh
dGUoYm9vbCBlbmFibGVkKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgU3RyaW5nJikge30KKyAgICAgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2Vi
Q29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgICAgIHZp
cnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQog
CiAgICAgICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZDc3
NTc3MmI1ZWY5Zjk2YjQ2YWM0Y2FkM2E1YTc4M2Y2MjRmZDZjYy4uY2YxNjgxNDZlYzkxY2ZjZmZh
Yjc3ZmJmNTZhMDQ5N2Q5MDg4MmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
U3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdS
ZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MDg1CisKKyAgICAgICAgUmVtb3ZlZCBOU1RleHRDaGVja2luZ1Jlc3VsdCB0byBTcGVsbENoZWNr
aW5nUmVzdWx0IGNvbnZlcnRpb24sIGFuZCBleHRyYWN0ZWQKKyAgICAgICAgTlNUZXh0Q2hlY2tp
bmdSZXN1bHQgdG8gVGV4dENoZWNraW5nUmVzdWx0IGNvbnZlcnRpbyBmcm9tIGNoZWNrVGV4dE9m
UGFyYWdyYXBoIG1ldGhvZC4KKyAgICAgICAgZm9yIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nIG1l
dGhvZC4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAg
ICAodG9Db3JlVGV4dENoZWNraW5nUmVzdWx0cyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6
OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKC1bV2ViRWRpdG9yU3BlbGxDaGVja1Jl
c3BvbmRlciBpbml0V2l0aFNlbmRlcjpXZWJDb3JlOjpzZXF1ZW5jZTp0eXBlczpXZWJDb3JlOjpy
ZXN1bHRzOl0pOgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIHBlcmZv
cm1dKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcp
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIG1h
cmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWVQcml2YXRlLmg6CisKIDIwMTEtMDMtMTUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CiAKICAgICAgICAgRm9yZ290IHRvIHNhdmUgYSBtb2RpZmljYXRpb24gdG8gdGhpcyBm
aWxlIHdoZW4gY29tbWl0dGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMWZhMTMyYWQ2YzViZDQzNzlmZTBiYjg1Yzll
NmZmMGQ2NmIxMTczNS4uMjc3MTM5ZWY2ODVkY2M1NDE3YTJhMWMxNDI5MzkwYjYyYzI5YTFhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNr
U3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxp
bmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmlydHVhbCBXVEY6OlN0
cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6
OlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+Jiwg
aW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7Ci0gICAgdmly
dHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVu
Z3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2lu
Z1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2lu
Z1Jlc3VsdD4mIHJlc3VsdHMpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0
aEdyYW1tYXJTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFy
RGV0YWlsJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxl
ZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxsaW5n
VUkoYm9vbCBzaG93KTsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6
OlN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2ssIGNvbnN0IFdURjo6U3RyaW5nJik7CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1NOT1dfTEVPUEFSRCkKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJD
b3JlOjpDb3JyZWN0aW9uUGFuZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgYm91bmRpbmdCb3hPZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFdURjo6U3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncywg
V2ViQ29yZTo6RWRpdG9yKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFu
ZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0NvcnJlY3Rpb25QYW5lbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5k
ZXggNjlkZDU3NDczMWI0NGI0MzBjMjc0NThlNzIzYjQxYzRkZTUxNzRiMC4uMjU4ZDc2Y2YxMWQz
YmJlMTdjZjhhYTI3YjU2MDhmNDBlYzFlZjdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNzk0LDEyICs3OTQsMTEg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFy
KiB0ZXh0LCBpbnQgbGVuZ3RoLCBWZWN0b3IKICNlbmRpZgogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgs
IHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKQotewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKQotICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBs
ZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107Ci0gICAgTlNBcnJheSAqaW5jb21pbmdSZXN1
bHRzID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRl
eHRTdHJpbmcgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6
KGNoZWNraW5nVHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmls
IGluU3BlbGxEb2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dy
YXBoeTpOVUxMIHdvcmRDb3VudDpOVUxMXTsKLSAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKK3N0
YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlKE5TQXJyYXkgKmluY29taW5nUmVz
dWx0cywgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcykKK3sKKyAgICBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworCiAgICAgZm9yIChOU1RleHRDaGVja2luZ1Jl
c3VsdCAqaW5jb21pbmdSZXN1bHQgaW4gaW5jb21pbmdSZXN1bHRzKSB7CiAgICAgICAgIE5TUmFu
Z2UgcmVzdWx0UmFuZ2UgPSBbaW5jb21pbmdSZXN1bHQgcmFuZ2VdOwogICAgICAgICBOU1RleHRD
aGVja2luZ1R5cGUgcmVzdWx0VHlwZSA9IFtpbmNvbWluZ1Jlc3VsdCByZXN1bHRUeXBlXTsKQEAg
LTg3MSw2ICs4NzAsMTggQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdy
YXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjQKICAgICAgICAgICAgIHJl
c3VsdHMuYXBwZW5kKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0czsKK30KKyNlbmRpZgorCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVja2luZ1R5cGVNYXNr
IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorewor
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQorICAgIE5TU3RyaW5nICp0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5ndGg6bGVu
Z3RoIGZyZWVXaGVuRG9uZTpOT107CisgICAgTlNBcnJheSAqaW5jb21pbmdSZXN1bHRzID0gW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIGNoZWNrU3RyaW5nOnRleHRTdHJpbmcg
cmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHRTdHJpbmcgbGVuZ3RoXSkgdHlwZXM6KGNoZWNraW5n
VHlwZXN8TlNUZXh0Q2hlY2tpbmdUeXBlT3J0aG9ncmFwaHkpIG9wdGlvbnM6bmlsIGluU3BlbGxE
b2N1bWVudFdpdGhUYWc6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBvcnRob2dyYXBoeTpOVUxM
IHdvcmRDb3VudDpOVUxMXTsKKyAgICBbdGV4dFN0cmluZyByZWxlYXNlXTsKKyAgICByZXN1bHRz
ID0gY29yZShpbmNvbWluZ1Jlc3VsdHMsIGNoZWNraW5nVHlwZXMpOwogI2VuZGlmCiB9CiAKQEAg
LTEwMTcsNTggKzEwMjgsMzUgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9k
U3RhdGUoYm9vbCkKIHsKICAgICBXZWJDb3JlOjpTcGVsbENoZWNrZXIqIF9zZW5kZXI7CiAgICAg
aW50IF9zZXF1ZW5jZTsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBfdHlwZXM7CiAgICAgUmV0
YWluUHRyPE5TQXJyYXk+IF9yZXN1bHRzOwogfQotLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNv
cmU6OlNwZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgcmVzdWx0czoo
TlNBcnJheSopcmVzdWx0czsKKy0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzOwogLSAodm9p
ZClwZXJmb3JtOwotLSAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jlc3VsdD4p
IF9jb3JlUmVzdWx0czsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkVkaXRvclNwZWxsQ2hl
Y2tSZXNwb25kZXIKLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIq
KXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHMK
Ky0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1
ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayl0
eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgX3NlbmRlciA9IHNl
bmRlcjsKICAgICBfc2VxdWVuY2UgPSBzZXF1ZW5jZTsKKyAgICBfdHlwZXMgPSB0eXBlczsKICAg
ICBfcmVzdWx0cyA9IHJlc3VsdHM7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpcGVy
Zm9ybQogewotICAgIF9zZW5kZXItPmRpZENoZWNrKF9zZXF1ZW5jZSwgW3NlbGYgX2NvcmVSZXN1
bHRzXSk7Ci19Ci0KLXN0YXRpYyBTcGVsbENoZWNraW5nUmVzdWx0IHRvQ29yZVNwZWxsaW5nUmVz
dWx0KE5TVGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQpCi17Ci0gICAgTlNUZXh0Q2hlY2tpbmdU
eXBlIHR5cGUgPSBbcmVzdWx0IHJlc3VsdFR5cGVdOwotICAgIE5TUmFuZ2UgcmFuZ2UgPSBbcmVz
dWx0IHJhbmdlXTsKLSAgICBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSBjb3JlVHlwZTsKLSAg
ICBpZiAodHlwZSAmIE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKQotICAgICAgICBjb3JlVHlw
ZSA9IERvY3VtZW50TWFya2VyOjpTcGVsbGluZzsKLSAgICBlbHNlIGlmICh0eXBlICYgTlNUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hcikKLSAgICAgICAgY29yZVR5cGUgPSBEb2N1bWVudE1hcmtlcjo6
R3JhbW1hcjsKLSAgICBlbHNlCi0gICAgICAgIGNvcmVUeXBlID0gRG9jdW1lbnRNYXJrZXI6OkFs
bE1hcmtlcnM7Ci0KLSAgICByZXR1cm4gU3BlbGxDaGVja2luZ1Jlc3VsdChjb3JlVHlwZSwgcmFu
Z2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7Ci19Ci0KLS0gKFdURjo6VmVjdG9yPFdlYkNvcmU6
OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+KV9jb3JlUmVzdWx0cwotewotICAgIFdURjo6VmVjdG9yPFdl
YkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOwotICAgIGNvcmVSZXN1bHRz
LnJlc2VydmVDYXBhY2l0eShbX3Jlc3VsdHMuZ2V0KCkgY291bnRdKTsKLSAgICBmb3IgKE5TVGV4
dENoZWNraW5nUmVzdWx0KiByZXN1bHQgaW4gX3Jlc3VsdHMuZ2V0KCkpCi0gICAgICAgIGNvcmVS
ZXN1bHRzLmFwcGVuZCh0b0NvcmVTcGVsbGluZ1Jlc3VsdChyZXN1bHQpKTsKLSAgICByZXR1cm4g
Y29yZVJlc3VsdHM7CisgICAgX3NlbmRlci0+ZGlkQ2hlY2soX3NlcXVlbmNlLCBjb3JlKF9yZXN1
bHRzLmdldCgpLCBfdHlwZXMpKTsKIH0KIAogQGVuZAogI2VuZGlmCiAKLXZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNl
bmRlciwgaW50IHNlcXVlbmNlLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBzZW5k
ZXIsIGludCBzZXF1ZW5jZSwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdU
eXBlcywgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIE5TUmFuZ2UgcmFuZ2Ug
PSBOU01ha2VSYW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKTsKQEAgLTEwNzYsNyArMTA2NCw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVs
bENoZWNrZXIqIHNlbmRlciwgaW50CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENo
ZWNrZXJdIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nOnRleHQgcmFuZ2U6cmFuZ2UgdHlwZXM6TlNU
ZXh0Q2hlY2tpbmdBbGxTeXN0ZW1UeXBlcyBvcHRpb25zOjAgaW5TcGVsbERvY3VtZW50V2l0aFRh
ZzowIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TSW50ZWdlciwgTlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dyYXBoeSosIE5T
SW50ZWdlcikgewogICAgICAgICAgICAgW2N1cnJlbnRMb29wIHBlcmZvcm1TZWxlY3RvcjpAc2Vs
ZWN0b3IocGVyZm9ybSkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
OltbW1dlYkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2VuZGVyOnNl
bmRlciBzZXF1ZW5jZTpzZXF1ZW5jZSByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpbW1tXZWJFZGl0b3JTcGVsbENo
ZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aFNlbmRlcjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVu
Y2UgdHlwZXM6Y2hlY2tpbmdUeXBlcyByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudDpuaWwgb3JkZXI6MCBtb2Rlczpb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6TlNEZWZhdWx0UnVuTG9vcE1vZGVdXTsKICAgICAgICAg
fV07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYTczMWIwMDZhYzYyOWNkMjM2MzQxY2U0N2E1
YWIwMjZhYjczNzM0ZS4uMzEzMWM2NzliZTkyYWY4NzRhNjg4OGNhYTgyZTRmYWNkNzIyYjIwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxk
IGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorICAgICAgICAKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50UXQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0xNSAgS2V2aW4g
T2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuaAppbmRleCAwNDUwNjAzNTM5MDRjMDU1ZDdjY2YyYWQ0NjFmNWNiOGU4MWFl
MWEwLi4wZDhlOGM2Nzk4NGU5YWQxZjdmMmM1NmI2YzBkMWNmZDY0YmUyMWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCkBAIC0xMDks
NyArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChj
b25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4m
IGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwg
Y29uc3QgU3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoU3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29u
c3QgU3RyaW5nJikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tl
cigpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggN2YzMjA2MDVhMTFhYTg2ZDZhMzdlZGI1Nzg2NTViMzQ0OTk4ODRlMy4u
Nzg3ZDA2M2E4ZDQ2ZDQ0NTYyNGVjZTlkZDNmNWM4MWY0MjE2MjJkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQg
d2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcpOgorCiAyMDExLTAzLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBNb3JlIFdpbmRvd3MgYnVpbGQgZml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYyMTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMThiZTQwMDZmNDM5MmQ3MWFjMDc0
NTFmYjJhNDc3ODhkMzY2MjYyMC4uZjMwYzQzNGE3MDRmNGM3OGE4YWM5MjZkNzMxZjgzM2E2NWJh
YmMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3Ry
aW5nJikge30KICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hl
Y2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5k
ZXggNzI0YjkyYWE2YzcwODhkYmU2Yjg2YzBjNDNmNmViZThlNGJiZTc4Zi4uOGJkMjY0YjRhOWNl
ZGVhNjVkOGNhMjJhYjE5YmFmMzk5ZWY1MWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW5jZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVm
YWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4
dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjA4NQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2lu
Q0UuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50V2luQ0U6OnJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKToKKwogMjAxMS0wMy0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaCBiL1NvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAppbmRleCBk
OTNlY2M1YjhmZDVlMzVmNDQ3ZjkyMWU0Nzc1MmRiMzJlMjE0NjI3Li5hMmIyM2I0ODUzNmE5OGM5
YTUwODdiNDEyZjhiZTRhM2E1YmRmN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCkBAIC0xMDEsNyArMTAxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6
OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlz
OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDJhMzgxMmJlNDJkMjM5MjgxZDk2OWIw
OGRjNTc1MDc2YzQwNmMxYjguLmEwZWEyODFiN2ZkODI0N2ViMGU4ZjA4YzQxNjJiNjI0NDk0NzJm
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBI
YWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNo
b3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYktp
dFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dFd4OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMTUgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRp
dG9yQ2xpZW50V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGll
bnRXeC5oCmluZGV4IGQxZDM1OTcwOTc1OWM5MDA2ODQzNzkyMGI1MDVlNWVmZjI4MjIyNGQuLjY1
ZWU0OTMwNTkzOWMyN2Y1YjAzNjE2NWE3NmM1NWRkZjRkNTA3MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCkBAIC0xMTQsNyArMTE0LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6
VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KICAgICB2aXJ0dWFs
IFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCAyYjA2NTUyNzAwYjY0ZWI4YjIxNzhjODkwNTA5MTIwNzdhMjQz
YjYxLi45ZjIyOTM2MDc5NjU0ZGExMmZmMjZkNmJhODVmZDIxYzA1NjA5NmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgpOgorCiAyMDExLTAzLTE1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IGI5NTQyODM1OTEzMzc4MGI0Y2VkNjBiZjYzZDk1YTM2YjlkZTE1MGMuLmNlMmNlNjE0MzZl
ZGE2ZDE4OWE5MmEzZTc0OTM1MTMzZWNmMzIzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RT
dGF0ZShib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQs
IGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVj
a2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGZhODQyNmEzOGU5NGZiZTNmNDE2NTk4OWY4
MTUyZjNhZDc0ZTYwNzguLjA4N2UzMjA5YTFiMWE2MDI4YmJkMGJmZjhiMmY4YTcyMmVhYzc4NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCk7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3Jh
bW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPFdlYkNvcmU6Okdy
YW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxl
bmd0aCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikg
JiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNo
ZWNraW5nVHlwZXMsIFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRz
KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRl
eHQsIGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlw
ZXMsIFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICNlbmRp
ZgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29u
c3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZGV0YWlsKTsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRH
dWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwg
VmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRN
ZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wg
ZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNv
cmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50
LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKICNp
ZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BB
UkQpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVj
dGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5k
aW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVy
bmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzLCBXZWJDb3JlOjpFZGl0b3IqKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5n
Q29ycmVjdGlvblBhbmVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRl
eCA4YWYwNDM4MGMxZmZlODRkOTVkZDFmMDgxZmVhMDIwYWE5MTY0OTljLi5jNTMyNzRkYjhiNDZl
NWI0M2MwOGRiNGNlM2VhYzk0ZWRmOTdmZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xp
ZW50TWFjLm1tCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2ds
ZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFy
KiB0ZXh0LCBpbnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpCiB7CiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgd2Ugd291bGRu
J3QgaGF2ZSB0byBjb3B5IHRoZSB0ZXh0IGhlcmUuCiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVu
Z3RoKSwgY2hlY2tpbmdUeXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9m
UGFyYWdyYXBoOjpSZXBseShyZXN1bHRzKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86422</attachid>
            <date>2011-03-21 22:34:56 -0700</date>
            <delta_ts>2011-03-25 00:47:49 -0700</delta_ts>
            <desc>Updated to ToT</desc>
            <filename>bug-56085-20110322143454.patch</filename>
            <type>text/plain</type>
            <size>47613</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE2NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYzg2NDE2NjEyZDQ5MDlk
NWU0ZWI3YmExZjk2MzMwOTg1MWM0OTk0Li41Y2I4OWIzMTdjMmUwYTQzMjQ5NGE4ZDRiZDNlZmVi
ZDdhMWE1MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTEgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0
IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAg
ICAgIFJlbW92ZWQgV2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jlc3VsdCBhbmQgcmVwbGFjZWQgaXQg
d2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gYWRkZWQg
VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkgc2hvdWxkIGhhdmUK
KyAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgYXMgYSBwYXJhbWV0ZXIgdG8gY29udHJvbCB0
ZXh0IGNoZWNraW5nIHR5cGUuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VT
ZWxlY3Rpb25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dGV4dENoZWNraW5nVHlwZU1hc2tGb3IpOiBFeHRyYWN0ZWQgZnJvbSBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKCkKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVj
a2luZ0Zvcik6IEFkZGVkIGEgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyOjptYXJrQXQpOiBFeHRyYWN0ZWQgZnJvbSBkaWRDaGVjaygpLCBBZGRlZCBhIGNoZWNrIGZv
ciB0aGUgR3JhbW1hckRldGFpbCBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5VGV4dENo
ZWNrZXJDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVt
cHR5VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMjEgIEFiaGlz
aGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBF
cmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggM2U2OGI1NGJlNjhlOThiYzUzM2Q5
ZjQ4ZDg1MjdiODA5NmVmNGNhMi4uOTVhY2VjNGM2NTA5NGU0NzIwNGZkNmQwYjg5OTdlNzkwYWVm
NDBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTI5MCw3ICsyOTAsNyBAQCBfX1pON1dlYkNv
cmUxMlNoYXJlZEJ1ZmZlcjZhcHBlbmRFUEtjagogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJD
MUVQS2NpCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckMxRXYKIF9fWk43V2ViQ29yZTEyU2hh
cmVkQnVmZmVyRDFFdgotX19aTjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4ZGlkQ2hlY2tFaVJLTjNX
VEY2VmVjdG9ySU5TXzE5U3BlbGxDaGVja2luZ1Jlc3VsdEVMbTBFRUUKK19fWk43V2ViQ29yZTEy
U3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRDaGVja2luZ1Jl
c3VsdEVMbTBFRUUKIF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktOM1dURjZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181UmFuZ2VFYgog
X19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBO
U183RWxlbWVudEVpaWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA4ODA3OTY1MDY4
YTQzOTEwYTlhZDkzNjUxZTE0NjJlY2M4ZTljZjlhLi5lYmVlYTc1NWMwZGM2MTRlMzA4MjZhOGY3
MDk5ZGViYzU0MjI5Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC02NCw3ICs2
NCw2IEBACiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGFzdGVib2FyZC5oIgotI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW5jbHVkZSAiUmVtb3ZlRm9ybWF0Q29tbWFuZC5o
IgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCkBAIC00NDAsNyArNDM5LDcgQEAgdm9pZCBFZGl0
b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCwKIAogICAgIE5vZGUqIG5vZGVUb0NoZWNrID0gbV9mcmFtZS0+c2VsZWN0
aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAgICBpZiAobV9zcGVsbENoZWNrZXItPmNh
bkNoZWNrQXN5bmNocm9ub3VzbHkobm9kZVRvQ2hlY2spKQotICAgICAgICBtX3NwZWxsQ2hlY2tl
ci0+cmVxdWVzdENoZWNraW5nRm9yKG5vZGVUb0NoZWNrKTsKKyAgICAgICAgbV9zcGVsbENoZWNr
ZXItPnJlcXVlc3RDaGVja2luZ0Zvcih0ZXh0Q2hlY2tpbmdUeXBlTWFza0ZvcihNYXJrU3BlbGxp
bmcgfCBNYXJrR3JhbW1hciksIG5vZGVUb0NoZWNrKTsKIH0KIAogdm9pZCBFZGl0b3I6OnJlcGxh
Y2VTZWxlY3Rpb25XaXRoVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0UmVwbGFj
ZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlKQpAQCAtMjI3MCwyNiArMjI2OSw4IEBAIHZvaWQgRWRp
dG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2lu
Z09wdGlvbnMgdGV4dENoCiAgICAgfQogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4g
cmVzdWx0czsKLSAgICB1aW50NjRfdCBjaGVja2luZ1R5cGVzID0gMDsKLSAgICBpZiAoc2hvdWxk
TWFya1NwZWxsaW5nKQotICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZzsKLSAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIpCi0gICAgICAgIGNoZWNraW5nVHlw
ZXMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7Ci0gICAgaWYgKHNob3VsZFNob3dDb3JyZWN0
aW9uUGFuZWwpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJl
Y3Rpb247Ci0gICAgaWYgKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCkgewotICAgICAgICBpZiAo
aXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdU
eXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljUXVv
dGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCi0gICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRl
eHRDaGVja2luZ1R5cGVRdW90ZTsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5n
VHlwZURhc2g7Ci0gICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQo
KSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2Vt
ZW50OwotICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxp
bmdDb3JyZWN0aW9uRW5hYmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKLSAgICB9Ci0gICAgdGV4dENoZWNrZXIoKS0+Y2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgocGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFncmFwaC50ZXh0
TGVuZ3RoKCksIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMpOworICAgIHRleHRDaGVja2VyKCktPmNo
ZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaC50ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGgu
dGV4dExlbmd0aCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXh0Q2hlY2tpbmdUeXBlTWFza0Zvcih0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cyk7CiAK
ICNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgLy8gSWYgdGhpcyBjaGVja2lu
ZyBpcyBvbmx5IGZvciBzaG93aW5nIGNvcnJlY3Rpb24gcGFuZWwsIHdlIHNob3VsZG4ndCBib3Ro
ZXIgdG8gbWFyayBtaXNzcGVsbGluZ3MuCkBAIC0zNTk2LDQgKzM1NzcsMzcgQEAgRmxvYXRSZWN0
IEVkaXRvcjo6d2luZG93UmVjdEZvclJhbmdlKGNvbnN0IFJhbmdlKiByYW5nZSkgY29uc3QKICAg
ICByZXR1cm4gdmlldyA/IHZpZXctPmNvbnRlbnRzVG9XaW5kb3coSW50UmVjdChyYW5nZS0+Ym91
bmRpbmdSZWN0KCkpKSA6IEZsb2F0UmVjdCgpOwogfSAgICAgICAgCiAKK1RleHRDaGVja2luZ1R5
cGVNYXNrIEVkaXRvcjo6dGV4dENoZWNraW5nVHlwZU1hc2tGb3IoVGV4dENoZWNraW5nT3B0aW9u
cyB0ZXh0Q2hlY2tpbmdPcHRpb25zKQoreworICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0g
dGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZzsKKyAgICBib29sIHNob3VsZE1hcmtH
cmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtHcmFtbWFyOworICAgIGJvb2wgc2hv
dWxkU2hvd0NvcnJlY3Rpb25QYW5lbCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBTaG93Q29ycmVj
dGlvblBhbmVsOworCisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9IDA7
CisgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZykKKyAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQorICAg
ICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGlmIChz
aG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQorICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRD
aGVja2luZ1R5cGVDb3JyZWN0aW9uOworCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyAgICBi
b29sIHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBQZXJm
b3JtUmVwbGFjZW1lbnQ7CisgICAgaWYgKHNob3VsZFBlcmZvcm1SZXBsYWNlbWVudCkgeworICAg
ICAgICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAg
Y2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKKyAgICAgICAgaWYgKGlzQXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2luZ1R5
cGVzIHw9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKKyAgICAgICAgaWYgKGlzQXV0b21hdGljRGFz
aFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4
dENoZWNraW5nVHlwZURhc2g7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dEVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlw
ZVJlcGxhY2VtZW50OworICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIGlzQXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBl
cyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICB9CisjZW5kaWYKKworICAgIHJl
dHVybiBjaGVja2luZ1R5cGVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAppbmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZlMjE1NDA4NWM1
NjllLi5iZmI0ZmQwMzY0YzVkOTZlNTk0MzA1MTE5NGY4OGQ2ODJlOTgxOGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRB
Y3Rpb24uaCIKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIldyaXRpbmdE
aXJlY3Rpb24uaCIKQEAgLTYyLDcgKzYzLDYgQEAgY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNzIFNp
bXBsZUZvbnREYXRhOwogY2xhc3MgU3BlbGxDaGVja2VyOwogY2xhc3MgVGV4dDsKLWNsYXNzIFRl
eHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OwogCiBzdHJ1Y3QgQ29tcG9zaXRpb25V
bmRlcmxpbmUgewpAQCAtMjIyLDYgKzIyMiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrTWlz
c3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1p
c3NwZWxsaW5nUmFuZ2UpOwogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIsIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pOworCisgICAgZW51bSBUZXh0
Q2hlY2tpbmdPcHRpb25GbGFncyB7CisgICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwKKyAg
ICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCisgICAgICAgIFBlcmZvcm1SZXBsYWNlbWVudCA9
IDEgPDwgMiwKKyAgICAgICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKKyAgICB9Owor
ICAgIHR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nT3B0aW9uczsKKwogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CiAgICAgdm9pZCBsb3dlcmNh
c2VXb3JkKCk7CkBAIC0yMzksMTQgKzI0OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2dsZUF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogICAgIGJvb2wgaXNBdXRvbWF0aWNTcGVsbGluZ0Nv
cnJlY3Rpb25FbmFibGVkKCk7CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJl
Y3Rpb24oKTsKLSAgICBlbnVtIFRleHRDaGVja2luZ09wdGlvbkZsYWdzIHsKLSAgICAgICAgTWFy
a1NwZWxsaW5nID0gMSA8PCAwLAotICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKLSAgICAg
ICAgUGVyZm9ybVJlcGxhY2VtZW50ID0gMSA8PCAyLAotICAgICAgICBTaG93Q29ycmVjdGlvblBh
bmVsID0gMSA8PCAzLAotICAgIH07Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdP
cHRpb25zOwotCiAgICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFu
Z2VzKFRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3Jh
bW1hclJhbmdlKTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0
cmluZyYgcmVwbGFjZWRTdHJpbmcpOwogI2VuZGlmCkBAIC00MTEsNiArNDEyLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAg
ICB2b2lkIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQg
bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9v
bCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwor
ICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKFRleHRDaGVj
a2luZ09wdGlvbnMpOwogCiAgICAgdm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwogICAgIHZvaWQg
Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYsIGJvb2wgcHJlc2VydmVTZWxlY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IDc5ODhlNDE2MTBh
NTE5YjZhNWNiMjYzMGM2MTBlYmVhOGZhZTVmMjEuLmMzMThhMDE1NTQ5MTI5ZTg4Njg3Yjg0YzVh
MmQ0MGJjYzQ3ZDQ0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAK
QEAgLTEwMCwxMyArMTAwLDEzIEBAIGJvb2wgU3BlbGxDaGVja2VyOjppc0NoZWNrYWJsZShOb2Rl
KiBub2RlKSBjb25zdAogICAgIHJldHVybiBub2RlICYmIG5vZGUtPnJlbmRlcmVyKCk7CiB9CiAK
LXZvaWQgU3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoTm9kZSogbm9kZSkKK3ZvaWQg
U3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFz
aywgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoY2FuQ2hlY2tBc3luY2hyb25vdXNseShub2Rl
KSk7CiAKICAgICBpZiAoIWluaXRSZXF1ZXN0KG5vZGUpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jbGllbnQtPnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcmVxdWVzdFNlcXVlbmNl
LCBtX3JlcXVlc3RUZXh0KTsKKyAgICBtX2NsaWVudC0+cmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
dGhpcywgbV9yZXF1ZXN0U2VxdWVuY2UsIG1hc2ssIG1fcmVxdWVzdFRleHQpOwogfQogCiBzdGF0
aWMgYm9vbCBmb3J3YXJkSXRlcmF0b3IoUG9zaXRpb25JdGVyYXRvciYgaXRlcmF0b3IsIGludCBk
aXN0YW5jZSkKQEAgLTEzMSw3ICsxMzEsMjEgQEAgc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJhdG9y
KFBvc2l0aW9uSXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2UpCiAgICAgcmV0dXJuIGZh
bHNlOyAgICAKIH0KIAotdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZSwg
Y29uc3QgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorc3RhdGljIERvY3Vt
ZW50TWFya2VyOjpNYXJrZXJUeXBlIHRvTWFya2VyVHlwZShUZXh0Q2hlY2tpbmdUeXBlIHR5cGUp
Cit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxp
bmc6CisgICAgICAgIHJldHVybiBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc7CisgICAgY2FzZSBU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjoKKyAgICAgICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpH
cmFtbWFyOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7CisgICAgfQorfQorCisvLyBDdXJy
ZW5udGx5IGlnbm9yaW5nIFRleHRDaGVja2luZ1Jlc3VsdDo6ZGV0YWlscyBidXQgc2hvdWxkIGJl
IGhhbmRsZWQuIFNlZSBCdWcgNTYzNjguCit2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50
IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsK
ICAgICBpZiAoIWlzVmFsaWQoc2VxdWVuY2UpKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTYg
KzE1OCwxNiBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25z
dCBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4mIHJlcwogICAgIGludCBzdGFydE9mZnNldCA9
IDA7CiAgICAgUG9zaXRpb25JdGVyYXRvciBzdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3Jl
Tm9kZShtX3JlcXVlc3ROb2RlLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJl
c3VsdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSgpICE9IERv
Y3VtZW50TWFya2VyOjpTcGVsbGluZyAmJiByZXN1bHRzW2ldLnR5cGUoKSAhPSBEb2N1bWVudE1h
cmtlcjo6R3JhbW1hcikKKyAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSAhPSBUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2luZ1R5cGVHcmFt
bWFyKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gVG8gYXZvaWQgbW92aW5n
IHRoZSBwb3NpdGlvbiBiYWNrd2FyZCwgd2UgYXNzdW1lIHRoZSBnaXZlbiByZXN1bHRzIGFyZSBz
b3J0ZWQgd2l0aAogICAgICAgICAvLyBzdGFydE9mZnNldCBhcyB0aGUgb25lcyByZXR1cm5lZCBi
eSBbTlNTcGVsbENoZWNrZXIgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmc6XS4KLSAgICAgICAgQVNT
RVJUKHN0YXJ0T2Zmc2V0IDw9IHJlc3VsdHNbaV0ubG9jYXRpb24oKSk7Ci0gICAgICAgIGlmICgh
Zm9yd2FyZEl0ZXJhdG9yKHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uKCkgLSBzdGFydE9mZnNl
dCkpCisgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCA8PSByZXN1bHRzW2ldLmxvY2F0aW9uKTsK
KyAgICAgICAgaWYgKCFmb3J3YXJkSXRlcmF0b3Ioc3RhcnQsIHJlc3VsdHNbaV0ubG9jYXRpb24g
LSBzdGFydE9mZnNldCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgUG9zaXRpb25JdGVy
YXRvciBlbmQgPSBzdGFydDsKLSAgICAgICAgaWYgKCFmb3J3YXJkSXRlcmF0b3IoZW5kLCByZXN1
bHRzW2ldLmxlbmd0aCgpKSkKKyAgICAgICAgaWYgKCFmb3J3YXJkSXRlcmF0b3IoZW5kLCByZXN1
bHRzW2ldLmxlbmd0aCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBVc2VycyBv
ciBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucyBtYXkgY2hhbmdlIHRleHQgd2hpbGUgYSBzcGVsbC1j
aGVja2VyIGNoZWNrcyBpdHMKQEAgLTE2MywxMSArMTc3LDExIEBAIHZvaWQgU3BlbGxDaGVja2Vy
OjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0
PiYgcmVzCiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVx
dWVzdE5vZGUtPmRvY3VtZW50KCksIHN0YXJ0LCBlbmQpOwogICAgICAgICAvLyBGSVhNRTogVXNl
IHRleHRDb250ZW50KCkgY29tcGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KICAgICAgICAgU3Ry
aW5nIGRlc3RpbmF0aW9uID0gcmFuZ2UtPnRleHQoKTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9
IG1fcmVxdWVzdFRleHQuc3Vic3RyaW5nKHJlc3VsdHNbaV0ubG9jYXRpb24oKSwgcmVzdWx0c1tp
XS5sZW5ndGgoKSk7CisgICAgICAgIFN0cmluZyBzb3VyY2UgPSBtX3JlcXVlc3RUZXh0LnN1YnN0
cmluZyhyZXN1bHRzW2ldLmxvY2F0aW9uLCByZXN1bHRzW2ldLmxlbmd0aCk7CiAgICAgICAgIGlm
IChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCi0gICAgICAgICAgICBtX3JlcXVlc3ROb2RlLT5kb2N1
bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgcmVzdWx0c1tpXS50eXBl
KCkpOworICAgICAgICAgICAgbV9yZXF1ZXN0Tm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5h
ZGRNYXJrZXIocmFuZ2UuZ2V0KCksIHRvTWFya2VyVHlwZShyZXN1bHRzW2ldLnR5cGUpKTsKIAot
ICAgICAgICBzdGFydE9mZnNldCA9IHJlc3VsdHNbaV0ubG9jYXRpb24oKTsKKyAgICAgICAgc3Rh
cnRPZmZzZXQgPSByZXN1bHRzW2ldLmxvY2F0aW9uOwogICAgIH0KIAogICAgIGNsZWFyUmVxdWVz
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKaW5kZXggZDM5NDBlNTA0ZmFh
NDZhOTY1YzczODA0YjU5Y2Y3MTFmNzZkY2JmOC4uNGJjYjg5ZTU5ODVjZDFiZDNjNjJlYTliZmFk
MDdkOWQ0Y2FlMWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIFNwZWxsQ2hlY2tlcl9oCiAKICNpbmNsdWRlICJEb2N1bWVu
dE1hcmtlci5oIgorI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDI1ICszNiw2IEBA
IGNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBOb2RlOwogCi1j
bGFzcyBTcGVsbENoZWNraW5nUmVzdWx0IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVsbENo
ZWNraW5nUmVzdWx0KERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUgPSBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmcsIGludCBsb2NhdGlvbiA9IDAsIGludCBsZW5ndGggPSAwKQotICAgICAg
ICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCi0gICAgICAg
ICwgbV9sZW5ndGgobGVuZ3RoKQotICAgIHsKLSAgICB9Ci0KLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9IAotICAgIGludCBsb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KLQotcHJpdmF0ZToKLSAgICBEb2N1bWVudE1hcmtlcjo6
TWFya2VyVHlwZSBtX3R5cGU7Ci0gICAgaW50IG1fbG9jYXRpb247Ci0gICAgaW50IG1fbGVuZ3Ro
OwotfTsKLQogY2xhc3MgU3BlbGxDaGVja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
cGVsbENoZWNrZXIpOwogcHVibGljOgpAQCAtNjUsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0J1c3koKSBjb25zdDsKICAgICBib29sIGlzVmFsaWQoaW50IHNlcXVlbmNlKSBjb25zdDsK
ICAgICBib29sIGlzQ2hlY2thYmxlKE5vZGUqKSBjb25zdDsKLSAgICB2b2lkIHJlcXVlc3RDaGVj
a2luZ0ZvcihOb2RlKik7Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZl
Y3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYpOworICAgIHZvaWQgcmVxdWVzdENoZWNraW5nRm9y
KFRleHRDaGVja2luZ1R5cGVNYXNrLCBOb2RlKik7CisgICAgdm9pZCBkaWRDaGVjayhpbnQgc2Vx
dWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBpbml0UmVxdWVzdChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggZTU1NTNmZDEwMjkyZmU1ODdmMGUyMzMwZDE2NWU4
ZTE3NzI4ZTQxZC4uNDhmYWVlOTU0NTA2YmM4NTRhMDc3NDg2ZmFjOTAzNzRlNGVhZmE2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMjc0
LDcgKzI3NCw3IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxs
aW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgdW5z
aWduZWQgZ3JhbW1hckRldGFpbEluZGV4ID0gMDsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgICAgICAgICAg
ICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nOworICAgICAgICAgICAgICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5n
VHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENo
ZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogICAgICAgICAg
ICAgICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJh
Z3JhcGhTdHJpbmcuY2hhcmFjdGVycygpLCBwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCksIGNoZWNr
aW5nVHlwZXMsIHJlc3VsdHMpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CkBAIC01MzUsNyAr
NTM1LDcgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlz
c3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7
CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgIHVpbnQ2NF90
IGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
IHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwor
ICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAo
VGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4
dENoZWNraW5nVHlwZVNwZWxsaW5nOwogICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVj
a1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRl
eHRMZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CiAgICAgCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAppbmRleCBlZDkyZjExMmNiYTg3N2ZkNTJjMzQ2NDA3ZjViNGZmZTI2MTIw
ZjZjLi40NmFlMTUyYmNlMDgwODk2ZTM4MzA4ZDI5NGZkOGU3MDk1ZjU3NWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00MDcsMTEgKzQwNywxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBW
ZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1B
QykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVD
aGFyKiwgaW50LCB1aW50NjRfdCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07Cisg
ICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBU
ZXh0Q2hlY2tpbmdUeXBlTWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAj
ZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNr
ZXIqLCBpbnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KIH07CiAK
IGNsYXNzIEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKaW5kZXggYWNh
YTAyY2Y2MmEwNzBmOTBjZjk0YzZlMTI2YzVkMGQ2N2JmYmI4ZS4uMTY5Mjc4MTQzYmE0YjljYzNk
ZTQ4MzBkNWY4ZmVkN2IxZTZjZTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENoZWNrZXJDbGllbnQuaApAQCAtNTMsNiArNTMsOCBAQCBlbnVtIFRleHRDaGVj
a2luZ1R5cGUgewogICAgIFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICA9IDEgPDwgOQogfTsK
IAordHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKwogc3RydWN0IFRleHRD
aGVja2luZ1Jlc3VsdCB7CiAgICAgVGV4dENoZWNraW5nVHlwZSB0eXBlOwogICAgIGludCBsb2Nh
dGlvbjsKQEAgLTcxLDE0ICs3MywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNz
cGVsbGVkV29yZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhj
b25zdCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYsIGludCogYmFk
R3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpID0gMDsKICNpZiBQTEFURk9S
TShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25z
dCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVj
a2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEZvciBzcGVsbGNoZWNrZXJzIHRoYXQgc3Vw
cG9ydCBtdWx0aXBsZSBsYW5ndWFnZXMsIGl0J3Mgb2Z0ZW4gaW1wb3J0YW50IHRvIGJlIGFibGUg
dG8gaWRlbnRpZnkgdGhlIGxhbmd1YWdlIGluIG9yZGVyIHRvCiAgICAgLy8gcHJvdmlkZSBtb3Jl
IGFjY3VyYXRlIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuIENhbGxlciBjYW4gcGFzcyBpbiBtb3Jl
IHRleHQgaW4gImNvbnRleHQiIHRvIGFpZCBzdWNoIHNwZWxsY2hlY2tlcnMgb24gbGFuZ3VhZ2UK
ICAgICAvLyBpZGVudGlmaWNhdGlvbi4gTm9yYW1sbHkgaXQncyB0aGUgdGV4dCBzdXJyb3VuZGlu
ZyB0aGUgIndvcmQiIGZvciB3aGljaCB3ZSBhcmUgZ2V0dGluZyBjb3JyZWN0aW9uIHN1Z2dlc3Rp
b25zLgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdv
cmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwg
aW50LCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0
IFN0cmluZyYpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWQ1
OGFmNGY1MDNkMTRmZWRkNzMyNTY2MThjNjk4NTkxNWM5YjM3ZC4uMzE3NmYzMGY1YzE4Yjg4OTZi
NDVlZDhhYWUxMTA4M2JjYWM5MWQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVm
YWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4
dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjA4NQorCisgICAgICAgIEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgor
ICAgICAgICAKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNy
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29t
cGxldGlvbkltcGwuY3BwCisKIDIwMTEtMDMtMjEgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDM4ZDRmNWVmODky
MzllMDQ1YWFmNWYwZjkxMzQ3MjZhMzhhNjIyOTkuLjUxNWZhNGFiNjI5YjcxNzY1OTc3NDc0MGI2
MWUwMDFmNGI0MTdkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Vk
aXRvckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRv
ckNsaWVudEltcGwuY3BwCkBAIC04NzEsNyArODcxLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBs
OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAg
ICAgICAgICptaXNzcGVsbGluZ0xlbmd0aCA9IHNwZWxsTGVuZ3RoOwogfQogCi12b2lkIEVkaXRv
ckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2VuZGVy
LCBpbnQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBFZGl0b3JDbGllbnRJ
bXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IGlk
ZW50aWZpZXIsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAg
ICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+cmVxdWVzdENoZWNraW5nT2ZUZXh0KHRleHQsIG5ldyBX
ZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbChpZGVudGlmaWVyLCBzZW5kZXIpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAppbmRleCBiODFm
YjU2MDU0MzBiZjJmNWYzM2RlNDg3NGMwYjY2ZjZmN2NjNDZlLi4yZWJjNmVhNTgwNGIyNTNmYmU0
MTYzODY3NDViOTg3MTE3YWFmZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNz
ZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0
aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdD
b21wbGV0aW9uSW1wbC5jcHAKaW5kZXggMjc1OTc5MDJhYWEyMjVmMTIzODk0NGU4ZDVlNTQ1MDdh
NDFlMTAxZC4uNzcwOWM2YjJkNjU1NjRkOGE4NTBlNWRmOGQ3MzEzYmQ4NjFkNzRjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlv
bkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb25JbXBsLmNwcApAQCAtMzQsMTYgKzM0LDM2IEBACiAjaW5jbHVkZSAiU3BlbGxD
aGVja2VyLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAi
V2ViVmVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgVmVjdG9yPFNwZWxs
Q2hlY2tpbmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVj
a2luZ1Jlc3VsdD4mIHJlc3VsdHMpCitzdGF0aWMgVGV4dENoZWNraW5nVHlwZSB0b0NvcmVDaGVj
a2luZ1R5cGUoV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvciBlcnJvcikKIHsKLSAgICBWZWN0
b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4gY29yZVJlc3VsdHM7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgKytpKQotICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQo
U3BlbGxDaGVja2luZ1Jlc3VsdChzdGF0aWNfY2FzdDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZT4ocmVzdWx0c1tpXS5lcnJvcigpKSwgcmVzdWx0c1tpXS5wb3NpdGlvbigpLCByZXN1bHRzW2ld
Lmxlbmd0aCgpKSk7CisgICAgc3dpdGNoIChlcnJvcikgeworICAgIGNhc2UgV2ViS2l0OjpXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yU3BlbGxpbmc6CisgICAgICAgIHJldHVybiBUZXh0Q2hl
Y2tpbmdUeXBlU3BlbGxpbmc7CisgICAgY2FzZSBXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3Vs
dDo6RXJyb3JHcmFtbWFyOgorICAgICAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICB9Cit9CisKK3N0YXRpYyBWZWN0b3I8
VGV4dENoZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQoreworICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+IGNvcmVSZXN1bHRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXpl
KCk7ICsraSkgeyAKKyAgICAgICAgVGV4dENoZWNraW5nUmVzdWx0IGNvcmVSZXN1bHQ7CisgICAg
ICAgIGNvcmVSZXN1bHQudHlwZSA9IHRvQ29yZUNoZWNraW5nVHlwZShyZXN1bHRzW2ldLmVycm9y
KCkpOworICAgICAgICBjb3JlUmVzdWx0LmxvY2F0aW9uID0gcmVzdWx0c1tpXS5wb3NpdGlvbigp
OworICAgICAgICBjb3JlUmVzdWx0Lmxlbmd0aCA9IHJlc3VsdHNbaV0ubGVuZ3RoKCk7CisgICAg
ICAgIGNvcmVSZXN1bHRzLmFwcGVuZChjb3JlUmVzdWx0KTsKKyAgICB9CisKICAgICByZXR1cm4g
Y29yZVJlc3VsdHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA1YmUxNmQ5YzExMGJiZTAwNmI3
NmRhOWYxNTRlMWM5N2RiZDUyNTFjLi42OGEyNGU2MWM0ZDM0NmUwOWFmZWU3YjIxOWNjNzVlNTFk
MDZlOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVz
dWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0w
My0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50RWZsLmgKaW5kZXggNTc1YTUwZDI1M2QyOTQwNmM0NmQ4YTM0Y2FmMzY4
ZWJhZDhhZTc2Ny4uNTZiMzMwMDJlYWExN2E4NWI5YjM3MDE2OWQ4YmQ4NDczZmRjM2EyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
LmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNz
ZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBXVEY6
OlZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0
TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29s
IGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJD
b3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwg
aW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7
fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4g
dGhpczsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGU2ZTdiOWY3YTcxOTdjMzA3
M2QwMGIyZGJlMDc4MjM2MWEzYzIzNjQuLjE3Y2RlNzQ1NDcyMTJlZGVjNWE4NDUwMjcyMDI0Y2Ji
NzJlOTZmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAg
TU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdS
ZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50Lmg6CisgICAgICAgIChX
ZWJLaXQ6OlRleHRDaGVja2VyQ2xpZW50RW5jaGFudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcp
OgorCiAyMDExLTAzLTIxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1RleHRDaGVja2VyQ2xpZW50RW5jaGFudC5oIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50
LmgKaW5kZXggYzI5NGEzZDAwZjJkZGU1MDZhYWRhNjA0NzE0YTA1YjVkZDQ0ODc2MS4uNWQ5M2Mw
NzIxNmQ5OTViZmUzNmNhZmFkZDk5MGMwYTc4MmY1MmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgVGV4dENoZWNrZXJDbGllbnRFbmNoYW50IDogcHVi
bGljIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCBXVEY6OlN0
cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBXVEY6
OlN0cmluZyYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29u
c3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWls
PiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpTdHJpbmcmIHdv
cmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IGd1ZXNzZXMpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
V2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CiAKICAgICAgICAgdm9pZCB1cGRhdGVTcGVsbENoZWNraW5nTGFuZ3VhZ2UoY29u
c3QgY2hhciopOwogICAgICAgICBzdGF0aWMgdm9pZCBmcmVlU3BlbGxDaGVja2luZ0xhbmd1YWdl
KGdwb2ludGVyLCBncG9pbnRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2hhaWt1L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4IGIyYWVmY2U4ZGQ4
OGY2YmFkOTQ0MjllMGM3YTYzMWI3NWJiM2JhYjMuLjQ4MGNmZjZkZjY2ZDg4ZDRiMDcwOTExNmY3
YzcyMzA2ODUxNTIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVs
bENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3Vs
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRIYWlrdTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgor
CiAyMDExLTAzLTA3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oIGIvU291cmNlL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCmluZGV4IGJiMGQ4YWMxMDVmY2Uy
MjE1N2E3MDIwNmFhNGMxNGVjNTkwN2EwYjUuLmNjMjFmY2I4NmYyOTE5NGVhM2U4MTRmYTA1NzNk
NWU2NGNjYmExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50SGFpa3UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBFZGl0
b3JDbGllbnRIYWlrdSA6IHB1YmxpYyBFZGl0b3JDbGllbnQsIHB1YmxpYyBUZXh0Q2hlY2tlckNs
aWVudCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJp
bmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGlu
dCwgY29uc3QgU3RyaW5nJikge30KKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2ssIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQq
IHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNFZGl0aW5n
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNWJiODJjZGRkNDQxOTA5MGRiNzljNmY3OGVk
YmI1NzFhZTllNTYzNS4uZDdlYWFkNTQ2YWY3YjBmMDNiOGVkNzFkMWZmYzMzN2U4ODEwMGJlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgUmVtb3ZlZCBO
U1RleHRDaGVja2luZ1Jlc3VsdCB0byBTcGVsbENoZWNraW5nUmVzdWx0IGNvbnZlcnRpb24sIGFu
ZCBleHRyYWN0ZWQKKyAgICAgICAgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgdG8gVGV4dENoZWNraW5n
UmVzdWx0IGNvbnZlcnRpbyBmcm9tIGNoZWNrVGV4dE9mUGFyYWdyYXBoIG1ldGhvZC4KKyAgICAg
ICAgZm9yIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nIG1ldGhvZC4KKyAgICAgICAgCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAodG9Db3JlVGV4dENoZWNraW5nUmVz
dWx0cyk6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToK
KyAgICAgICAgKC1bV2ViRWRpdG9yU3BlbGxDaGVja1Jlc3BvbmRlciBpbml0V2l0aFNlbmRlcjpX
ZWJDb3JlOjpzZXF1ZW5jZTp0eXBlczpXZWJDb3JlOjpyZXN1bHRzOl0pOgorICAgICAgICAoLVtX
ZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIHBlcmZvcm1dKToKKyAgICAgICAgKFdlYkVkaXRv
ckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFz
VGV4dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6CisKIDIwMTEtMDMt
MjEgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBCcmFkeSBFaWRzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDFmYTEzMmFkNmM1YmQ0Mzc5ZmUwYmI4NWM5ZTZm
ZjBkNjZiMTE3MzUuLjI3NzEzOWVmNjg1ZGNjNTQxN2EyYTFjMTQyOTM5MGI2MmMyOWExYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5n
TG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJp
bmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpT
dHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNo
YXIqLCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGlu
dCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwotICAgIHZpcnR1
YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0
aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVzdWx0PiYgcmVzdWx0cyk7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdy
YXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlTWFzayBjaGVja2luZ1R5cGVzLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdS
ZXN1bHQ+JiByZXN1bHRzKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhH
cmFtbWFyU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRl
dGFpbCYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRX
b3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJ
KGJvb2wgc2hvdyk7CkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpT
dHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBX
VEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhX
ZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNr
LCBjb25zdCBXVEY6OlN0cmluZyYpOwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9T
Tk9XX0xFT1BBUkQpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29y
ZTo6Q29ycmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIHJlcGxh
Y2VkU3RyaW5nLCBjb25zdCBXVEY6OlN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBsYWNlbWVudFN0cmluZ3MsIFdl
YkNvcmU6OkVkaXRvciopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBhbmVs
KFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IDY5ZGQ1NzQ3MzFiNDRiNDMwYzI3NDU4ZTcyM2I0MWM0ZGU1MTc0YjAuLjI1OGQ3NmNmMTFkM2Ji
ZTE3Y2Y4YWEyN2I1NjA4ZjQwZWMxZWY3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTc5NCwxMiArNzk0LDExIEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciog
dGV4dCwgaW50IGxlbmd0aCwgVmVjdG9yCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1
aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0
cykKLXsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKLSAgICBOU1N0cmluZyAqdGV4dFN0cmluZyA9IFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoQ2hhcmFjdGVyc05vQ29weTpjb25zdF9jYXN0PFVDaGFyKj4odGV4dCkgbGVu
Z3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dOwotICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0
cyA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjaGVja1N0cmluZzp0ZXh0
U3RyaW5nIHJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0U3RyaW5nIGxlbmd0aF0pIHR5cGVzOihj
aGVja2luZ1R5cGVzfE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5KSBvcHRpb25zOm5pbCBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgb3J0aG9ncmFw
aHk6TlVMTCB3b3JkQ291bnQ6TlVMTF07Ci0gICAgW3RleHRTdHJpbmcgcmVsZWFzZV07CitzdGF0
aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gY29yZShOU0FycmF5ICppbmNvbWluZ1Jlc3Vs
dHMsIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMpCit7CisgICAgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKwogICAgIGZvciAoTlNUZXh0Q2hlY2tpbmdSZXN1
bHQgKmluY29taW5nUmVzdWx0IGluIGluY29taW5nUmVzdWx0cykgewogICAgICAgICBOU1Jhbmdl
IHJlc3VsdFJhbmdlID0gW2luY29taW5nUmVzdWx0IHJhbmdlXTsKICAgICAgICAgTlNUZXh0Q2hl
Y2tpbmdUeXBlIHJlc3VsdFR5cGUgPSBbaW5jb21pbmdSZXN1bHQgcmVzdWx0VHlwZV07CkBAIC04
NzEsNiArODcwLDE4IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFw
aChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0CiAgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dHM7Cit9CisjZW5kaWYKKwordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdy
YXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBj
aGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKKyNp
ZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVP
UEFSRCkKKyAgICBOU1N0cmluZyAqdGV4dFN0cmluZyA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRX
aXRoQ2hhcmFjdGVyc05vQ29weTpjb25zdF9jYXN0PFVDaGFyKj4odGV4dCkgbGVuZ3RoOmxlbmd0
aCBmcmVlV2hlbkRvbmU6Tk9dOworICAgIE5TQXJyYXkgKmluY29taW5nUmVzdWx0cyA9IFtbTlNT
cGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjaGVja1N0cmluZzp0ZXh0U3RyaW5nIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0U3RyaW5nIGxlbmd0aF0pIHR5cGVzOihjaGVja2luZ1R5
cGVzfE5TVGV4dENoZWNraW5nVHlwZU9ydGhvZ3JhcGh5KSBvcHRpb25zOm5pbCBpblNwZWxsRG9j
dW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgb3J0aG9ncmFwaHk6TlVMTCB3
b3JkQ291bnQ6TlVMTF07CisgICAgW3RleHRTdHJpbmcgcmVsZWFzZV07CisgICAgcmVzdWx0cyA9
IGNvcmUoaW5jb21pbmdSZXN1bHRzLCBjaGVja2luZ1R5cGVzKTsKICNlbmRpZgogfQogCkBAIC0x
MDE3LDU4ICsxMDI4LDM1IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0
YXRlKGJvb2wpCiB7CiAgICAgV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBfc2VuZGVyOwogICAgIGlu
dCBfc2VxdWVuY2U7CisgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgX3R5cGVzOwogICAgIFJldGFp
blB0cjxOU0FycmF5PiBfcmVzdWx0czsKIH0KLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3Jl
OjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJlc3VsdHM6KE5T
QXJyYXkqKXJlc3VsdHM7CistIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKilzZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENo
ZWNraW5nVHlwZU1hc2spdHlwZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0czsKIC0gKHZvaWQp
cGVyZm9ybTsKLS0gKFdURjo6VmVjdG9yPFdlYkNvcmU6OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+KSBf
Y29yZVJlc3VsdHM7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJFZGl0b3JTcGVsbENoZWNr
UmVzcG9uZGVyCi0tIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilz
ZW5kZXIgc2VxdWVuY2U6KGludClzZXF1ZW5jZSByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCist
IChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVja2VyKilzZW5kZXIgc2VxdWVu
Y2U6KGludClzZXF1ZW5jZSB0eXBlczooV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2spdHlw
ZXMgcmVzdWx0czooTlNBcnJheSopcmVzdWx0cwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIF9zZW5kZXIgPSBzZW5k
ZXI7CiAgICAgX3NlcXVlbmNlID0gc2VxdWVuY2U7CisgICAgX3R5cGVzID0gdHlwZXM7CiAgICAg
X3Jlc3VsdHMgPSByZXN1bHRzOwogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKXBlcmZv
cm0KIHsKLSAgICBfc2VuZGVyLT5kaWRDaGVjayhfc2VxdWVuY2UsIFtzZWxmIF9jb3JlUmVzdWx0
c10pOwotfQotCi1zdGF0aWMgU3BlbGxDaGVja2luZ1Jlc3VsdCB0b0NvcmVTcGVsbGluZ1Jlc3Vs
dChOU1RleHRDaGVja2luZ1Jlc3VsdCogcmVzdWx0KQotewotICAgIE5TVGV4dENoZWNraW5nVHlw
ZSB0eXBlID0gW3Jlc3VsdCByZXN1bHRUeXBlXTsKLSAgICBOU1JhbmdlIHJhbmdlID0gW3Jlc3Vs
dCByYW5nZV07Ci0gICAgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgY29yZVR5cGU7Ci0gICAg
aWYgKHR5cGUgJiBOU1RleHRDaGVja2luZ1R5cGVTcGVsbGluZykKLSAgICAgICAgY29yZVR5cGUg
PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc7Ci0gICAgZWxzZSBpZiAodHlwZSAmIE5TVGV4dENo
ZWNraW5nVHlwZUdyYW1tYXIpCi0gICAgICAgIGNvcmVUeXBlID0gRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXI7Ci0gICAgZWxzZQotICAgICAgICBjb3JlVHlwZSA9IERvY3VtZW50TWFya2VyOjpBbGxN
YXJrZXJzOwotCi0gICAgcmV0dXJuIFNwZWxsQ2hlY2tpbmdSZXN1bHQoY29yZVR5cGUsIHJhbmdl
LmxvY2F0aW9uLCByYW5nZS5sZW5ndGgpOwotfQotCi0tIChXVEY6OlZlY3RvcjxXZWJDb3JlOjpT
cGVsbENoZWNraW5nUmVzdWx0PilfY29yZVJlc3VsdHMKLXsKLSAgICBXVEY6OlZlY3RvcjxXZWJD
b3JlOjpTcGVsbENoZWNraW5nUmVzdWx0PiBjb3JlUmVzdWx0czsKLSAgICBjb3JlUmVzdWx0cy5y
ZXNlcnZlQ2FwYWNpdHkoW19yZXN1bHRzLmdldCgpIGNvdW50XSk7Ci0gICAgZm9yIChOU1RleHRD
aGVja2luZ1Jlc3VsdCogcmVzdWx0IGluIF9yZXN1bHRzLmdldCgpKQotICAgICAgICBjb3JlUmVz
dWx0cy5hcHBlbmQodG9Db3JlU3BlbGxpbmdSZXN1bHQocmVzdWx0KSk7Ci0gICAgcmV0dXJuIGNv
cmVSZXN1bHRzOworICAgIF9zZW5kZXItPmRpZENoZWNrKF9zZXF1ZW5jZSwgY29yZShfcmVzdWx0
cy5nZXQoKSwgX3R5cGVzKSk7CiB9CiAKIEBlbmQKICNlbmRpZgogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBzZW5k
ZXIsIGludCBzZXF1ZW5jZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc2VuZGVy
LCBpbnQgc2VxdWVuY2UsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlw
ZXMsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdF
UikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICBOU1JhbmdlIHJhbmdlID0g
TlNNYWtlUmFuZ2UoMCwgdGV4dC5sZW5ndGgoKSk7CkBAIC0xMDc2LDcgKzEwNjQsNyBAQCB2b2lk
IFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxD
aGVja2VyKiBzZW5kZXIsIGludAogICAgIFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVj
a2VyXSByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzp0ZXh0IHJhbmdlOnJhbmdlIHR5cGVzOk5TVGV4
dENoZWNraW5nQWxsU3lzdGVtVHlwZXMgb3B0aW9uczowIGluU3BlbGxEb2N1bWVudFdpdGhUYWc6
MCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXI6XihOU0ludGVnZXIsIE5TQXJyYXkqIHJlc3VsdHMsIE5TT3J0aG9ncmFwaHkqLCBOU0lu
dGVnZXIpIHsKICAgICAgICAgICAgIFtjdXJyZW50TG9vcCBwZXJmb3JtU2VsZWN0b3I6QHNlbGVj
dG9yKHBlcmZvcm0pIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpb
W1tXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIGFsbG9jXSBpbml0V2l0aFNlbmRlcjpzZW5k
ZXIgc2VxdWVuY2U6c2VxdWVuY2UgcmVzdWx0czpyZXN1bHRzXSBhdXRvcmVsZWFzZV0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6W1tbV2ViRWRpdG9yU3BlbGxDaGVj
a1Jlc3BvbmRlciBhbGxvY10gaW5pdFdpdGhTZW5kZXI6c2VuZGVyIHNlcXVlbmNlOnNlcXVlbmNl
IHR5cGVzOmNoZWNraW5nVHlwZXMgcmVzdWx0czpyZXN1bHRzXSBhdXRvcmVsZWFzZV0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQ6bmlsIG9yZGVyOjAgbW9kZXM6W05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5TRGVmYXVsdFJ1bkxvb3BNb2RlXV07CiAgICAgICAgIH1d
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDlkMjkzNmZkNDhiNThkNTVkMDRlMzI3YTM3ZTY5
ZDQ4NWVhOWNjMTYuLjVjODViOGEyZGM4ZmY2MzRhMjkyZjc3YTM3ZWJlZWZmOTgwZjNkYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBi
ZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFF0OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMjEgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1
cnlha292LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5oCmluZGV4IDA0NTA2MDM1MzkwNGMwNTVkN2NjZjJhZDQ2MWY1Y2I4ZTgxYWUxYTAuLjBk
OGU4YzY3OTg0ZTlhZDFmN2YyYzU2YjZjMGQxY2ZkNjRiZTIxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKQEAgLTEwOSw3ICsxMDks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0
cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nl
cyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBT
dHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVs
bENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJp
bmcmKSB7fQogICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyBy
ZXR1cm4gdGhpczsgfQogCiAgICAgYm9vbCBpc0VkaXRpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwppbmRleCBmNGRkNDlhOTYxYzZiMGQxOTJlNDY1MjhkMTgzOTNhZTJlMDQ4NTVhLi44NGI5ZDQ2
NGIyNmY2Y2RjZTNiN2FhMWU2ZjZkOTQ4YjNjZTgwMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1Jl
ZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRl
eHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6
CisKIDIwMTEtMDMtMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDE4YmU0MDA2ZjQzOTJkNzFhYzA3
NDUxZmIyYTQ3Nzg4ZDM2NjI2MjAuLmYzMGM0MzRhNzA0ZjRjNzhhOGFjOTI2ZDczMWY4MzNhNjVi
YWJjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0
TWV0aG9kU3RhdGUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0
cmluZyYpIHt9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENo
ZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmlu
ZGV4IDcyNGI5MmFhNmM3MDg4ZGJlNmI4NmMwYzQzZjZlYmU4ZTRiYmU3OGYuLjhiZDI2NGI0YTlj
ZWRlYTY1ZDhjYTIyYWIxOWJhZjM5OWVmNTFlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1Jl
ZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRl
eHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTYwODUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdp
bkNFLmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyk6CisKIDIwMTEtMDMtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKaW5kZXgg
ZDkzZWNjNWI4ZmQ1ZTM1ZjQ0N2Y5MjFlNDc3NTJkYjMyZTIxNDYyNy4uYTJiMjNiNDg1MzZhOThj
OWE1MDg3YjQxMmY4YmU0YTNhNWJkZjdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaApAQCAtMTAxLDcgKzEwMSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgV1RG
OjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRo
b2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOwot
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1
YWwgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhp
czsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCA1ODM3NjU5MWE3NWNjYTliNDBmZjFh
MDc2ZWE5ODg2YzAwNWM1MTM3Li5hNjVkNzc0NjJlMjc1MTAxYTE0OTE1ZDZmMjdhNWM1ZGZiY2E4
NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEg
SGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBz
aG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRXeDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOgorCiAyMDExLTAzLTIxICBDaGFuZyBTaHUg
IDxjc2h1QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5
YWtvdi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JD
bGllbnRXeC5oIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4
LmgKaW5kZXggZDFkMzU5NzA5NzU5YzkwMDY4NDM3OTIwYjUwNWU1ZWZmMjgyMjI0ZC4uNjVlZTQ5
MzA1OTM5YzI3ZjViMDM2MTY1YTc2YzU1ZGRmNGQ1MDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKKysrIGIvU291cmNlL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIq
LCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQogICAgIHZpcnR1YWwgVGV4
dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDVhM2JjMzRiYTUyMDkzZjZiZTk2ZmZmNDYyOGU3NTQ0NGY1MDg0NTMu
LmYxNmU5ZTRlMWEyYTY0MTNkNGE1ZWVkOGYxZWU0OTI3ZTA1ZWJkZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
ZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaCk6
CisKIDIwMTEtMDMtMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBNYWMgcmVsZWFzZSBidWlsZHMgYWZ0ZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggYjk1NDI4
MzU5MTMzNzgwYjRjZWQ2MGJmNjNkOTVhMzZiOWRlMTUwYy4uY2UyY2U2MTQzNmVkYTZkMTg5YTky
YTNlNzQ5MzUxMzNlY2YzMjNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNDQxLDcg
KzQ0MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RG
OjpTdHJpbmcmKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2ssIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKaW5kZXggZmE4NDI2YTM4ZTk0ZmJlM2Y0MTY1OTg5ZjgxNTJmM2FkNzRl
NjA3OC4uMDg3ZTMyMDlhMWIxYTYwMjhiYmQwYmZmOGIyZjhhNzIyZWFjNzg3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmIG1pc3NwZWxsZWRXb3JkKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJp
bmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFp
bD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKICNp
ZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFn
cmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBl
cywgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOworICAgIHZp
cnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxl
bmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9y
PFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogI2VuZGlmCiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBkZXRhaWwpOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpOwpAQCAt
MTQwLDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JX
b3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3Ry
aW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRl
KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxD
aGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOwogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKICAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFuZWxJ
bmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZlJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVSZXBs
YWNlbWVudFN0cmluZ3MsIFdlYkNvcmU6OkVkaXRvciopOwogICAgIHZpcnR1YWwgdm9pZCBkaXNt
aXNzQ29ycmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9u
UGFuZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IDhhZjA0Mzgw
YzFmZmU4NGQ5NWRkMWYwODFmZWEwMjBhYTkxNjQ5OWMuLmM1MzI3NGRiOGI0NmU1YjQzYzA4ZGI0
Y2UzZWFjOTRlZGY5N2ZlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0K
QEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6dG9nZ2xlQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGlu
dCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+JiByZXN1bHRzKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBo
KGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzayBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykK
IHsKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB3ZSB3b3VsZG4ndCBoYXZlIHRv
IGNvcHkgdGhlIHRleHQgaGVyZS4KICAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZyh0ZXh0LCBsZW5ndGgpLCBjaGVj
a2luZ1R5cGVzKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2hlY2tUZXh0T2ZQYXJhZ3JhcGg6
OlJlcGx5KHJlc3VsdHMpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86906</attachid>
            <date>2011-03-25 00:47:55 -0700</date>
            <delta_ts>2011-04-04 12:01:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56085-20110325164753.patch</filename>
            <type>text/plain</type>
            <size>48121</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE5MzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZjQwZGEwOGExNTc1YTgx
NDRlYzBlNzFlMzBiMTBlZmZkZWQzYzdhLi41YTc0MDA5MjA0ODhlNTdjZjE5OGJjNGUzOWRhMGVk
NDFlNjRkZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDMtMTEgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBTcGVsbENoZWNraW5nUmVzdWx0
IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2luZ1Jlc3VsdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYwODUKKyAgICAgICAgCisgICAg
ICAgIFJlbW92ZWQgV2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jlc3VsdCBhbmQgcmVwbGFjZWQgaXQg
d2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQuCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gYWRkZWQg
VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkgc2hvdWxkIGhhdmUK
KyAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgYXMgYSBwYXJhbWV0ZXIgdG8gY29udHJvbCB0
ZXh0IGNoZWNraW5nIHR5cGUuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VT
ZWxlY3Rpb25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6dGV4dENoZWNraW5nVHlwZU1hc2tGb3IpOiBFeHRyYWN0ZWQgZnJvbSBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKCkKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVj
a2luZ0Zvcik6IEFkZGVkIGEgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyOjptYXJrQXQpOiBFeHRyYWN0ZWQgZnJvbSBkaWRDaGVjaygpLCBBZGRlZCBhIGNoZWNrIGZv
ciB0aGUgR3JhbW1hckRldGFpbCBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5VGV4dENo
ZWNrZXJDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkVt
cHR5VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMjQgIFN0ZXBo
YW5pZSBMZXdpcyAgPHNsZXdpc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmYgR2FyZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGQxOWU0ZTRjNDdkZjc1NzU4NTM0YTI5
NmU0ZTBjM2RjMmIwMjVkYzMuLjQyOTFhYTY3M2MzMjQ4ZWM5MWQxZjkxMjI3MGVhYWUwNDRkYjNl
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yOTIsNyArMjkyLDcgQEAgX19aTjdXZWJDb3Jl
MTJTaGFyZWRCdWZmZXJDMUVQS2NpCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckMxRVBLaGkK
IF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyQzFFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZm
ZXJEMUV2Ci1fX1pON1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0VpUktOM1dURjZWZWN0
b3JJTlNfMTlTcGVsbENoZWNraW5nUmVzdWx0RUxtMEVFRQorX19aTjdXZWJDb3JlMTJTcGVsbENo
ZWNrZXI4ZGlkQ2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5TXzE4VGV4dENoZWNraW5nUmVzdWx0RUxt
MEVFRQogX19aTjdXZWJDb3JlMTJUZXh0RW5jb2RpbmdDMUVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMTFyYW5nZUxlbmd0aEVQS05TXzVSYW5nZUViCiBfX1pON1dl
YkNvcmUxMlRleHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzdFbGVt
ZW50RWlpYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGEyMmE0ZjE3NjZhY2MzZDI0
OTkwNWFlNDJhMzA1OTNkZTgxODNkOTUuLjNiMGM1N2RmODI4NTc3YWRmMzI2OGY5YTJmM2EyMzlm
MzMxODVhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTY0LDcgKzY0LDYgQEAK
ICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYXN0
ZWJvYXJkLmgiCi0jaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJSZW1vdmVGb3JtYXRDb21tYW5kLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTQ0MCw3ICs0MzksNyBAQCB2b2lkIEVkaXRvcjo6cmVw
bGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZy
YWdtZW50LAogCiAgICAgTm9kZSogbm9kZVRvQ2hlY2sgPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+
cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmIChtX3NwZWxsQ2hlY2tlci0+Y2FuQ2hlY2tB
c3luY2hyb25vdXNseShub2RlVG9DaGVjaykpCi0gICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1
ZXN0Q2hlY2tpbmdGb3Iobm9kZVRvQ2hlY2spOworICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVx
dWVzdENoZWNraW5nRm9yKHRleHRDaGVja2luZ1R5cGVNYXNrRm9yKE1hcmtTcGVsbGluZyB8IE1h
cmtHcmFtbWFyKSwgbm9kZVRvQ2hlY2spOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVj
dGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwg
Ym9vbCBzbWFydFJlcGxhY2UpCkBAIC0yMjYxLDI4ICsyMjYwLDggQEAgdm9pZCBFZGl0b3I6Om1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9u
cyB0ZXh0Q2gKICAgICB9CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRz
OwotICAgIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMgPSAwOwotICAgIGlmIChzaG91bGRNYXJrU3Bl
bGxpbmcpCi0gICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OwotICAgIGlmIChzaG91bGRNYXJrR3JhbW1hcikKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5l
bCkKLSAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsK
LSAgICBpZiAoc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50KSB7Ci0jaWYgVVNFKEFVVE9NQVRJQ19U
RVhUX1JFUExBQ0VNRU5UKQotICAgICAgICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZCgpKQotICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGlu
azsKLSAgICAgICAgaWYgKGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCi0g
ICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVRdW90ZTsKLSAgICAg
ICAgaWYgKGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKLSAgICAgICAgICAg
IGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZURhc2g7Ci0gICAgICAgIGlmIChpc0F1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSkKLSAgICAgICAgICAgIGNoZWNraW5nVHlw
ZXMgfD0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OwotICAgICAgICBpZiAoc2hvdWxkTWFy
a1NwZWxsaW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQotICAg
ICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKLSNl
bmRpZgotICAgIH0KLSAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJh
Z3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgY2hlY2tpbmdU
eXBlcywgcmVzdWx0cyk7CisgICAgdGV4dENoZWNrZXIoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
cGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFncmFwaC50ZXh0TGVuZ3RoKCksIAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDaGVja2luZ1R5cGVNYXNr
Rm9yKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKIAogI2lmIFNVUFBPUlRfQVVUT0NP
UlJFQ1RJT05fUEFORUwKICAgICAvLyBJZiB0aGlzIGNoZWNraW5nIGlzIG9ubHkgZm9yIHNob3dp
bmcgY29ycmVjdGlvbiBwYW5lbCwgd2Ugc2hvdWxkbid0IGJvdGhlciB0byBtYXJrIG1pc3NwZWxs
aW5ncy4KQEAgLTM1OTYsNCArMzU3NSwzNyBAQCBGbG9hdFJlY3QgRWRpdG9yOjp3aW5kb3dSZWN0
Rm9yUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlKSBjb25zdAogICAgIHJldHVybiB2aWV3ID8gdmll
dy0+Y29udGVudHNUb1dpbmRvdyhJbnRSZWN0KHJhbmdlLT5ib3VuZGluZ1JlY3QoKSkpIDogRmxv
YXRSZWN0KCk7CiB9ICAgICAgICAKIAorVGV4dENoZWNraW5nVHlwZU1hc2sgRWRpdG9yOjp0ZXh0
Q2hlY2tpbmdUeXBlTWFza0ZvcihUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2luZ09wdGlv
bnMpCit7CisgICAgYm9vbCBzaG91bGRNYXJrU3BlbGxpbmcgPSB0ZXh0Q2hlY2tpbmdPcHRpb25z
ICYgTWFya1NwZWxsaW5nOworICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tp
bmdPcHRpb25zICYgTWFya0dyYW1tYXI7CisgICAgYm9vbCBzaG91bGRTaG93Q29ycmVjdGlvblBh
bmVsID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFNob3dDb3JyZWN0aW9uUGFuZWw7CisKKyAgICBU
ZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzID0gMDsKKyAgICBpZiAoc2hvdWxkTWFy
a1NwZWxsaW5nKQorICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVTcGVs
bGluZzsKKyAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIpCisgICAgICAgIGNoZWNraW5nVHlwZXMg
fD0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgaWYgKHNob3VsZFNob3dDb3JyZWN0aW9u
UGFuZWwpCisgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rp
b247CisKKyNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCisgICAgYm9vbCBzaG91
bGRQZXJmb3JtUmVwbGFjZW1lbnQgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgUGVyZm9ybVJlcGxh
Y2VtZW50OworICAgIGlmIChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKKyAgICAgICAgaWYg
KGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5n
VHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUxpbms7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBU
ZXh0Q2hlY2tpbmdUeXBlUXVvdGU7CisgICAgICAgIGlmIChpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2lu
Z1R5cGVEYXNoOworICAgICAgICBpZiAoaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVk
KCkpCisgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNl
bWVudDsKKyAgICAgICAgaWYgKHNob3VsZE1hcmtTcGVsbGluZyAmJiBpc0F1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4
dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gY2hl
Y2tpbmdUeXBlczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKaW5kZXggNWZlMzQ1ZGE3NzE4N2UyZTc4MTdjNGMzOGJmOTI1MDgzMTZmMDFkZi4uMWNl
NzI3ZGIwZGU0ZTI0YjdkNWMzMGZhMjBlZjlmMmViOTQ4ZmNhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCkBAIC0yMjMsNiArMjIzLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtNaXNzcGVs
bGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3Bl
bGxpbmdSYW5nZSk7CiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBtYXJrR3JhbW1hciwgY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7CisKKyAgICBlbnVtIFRleHRDaGVj
a2luZ09wdGlvbkZsYWdzIHsKKyAgICAgICAgTWFya1NwZWxsaW5nID0gMSA8PCAwLAorICAgICAg
ICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKKyAgICAgICAgUGVyZm9ybVJlcGxhY2VtZW50ID0gMSA8
PCAyLAorICAgICAgICBTaG93Q29ycmVjdGlvblBhbmVsID0gMSA8PCAzLAorICAgIH07CisgICAg
dHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdPcHRpb25zOworCiAjaWYgVVNFKEFVVE9NQVRJ
Q19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZvaWQgdXBwZXJjYXNlV29yZCgpOwogICAgIHZvaWQg
bG93ZXJjYXNlV29yZCgpOwpAQCAtMjQyLDE0ICsyNTEsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB0
b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKICNlbmRpZgogCi0gICAgZW51bSBU
ZXh0Q2hlY2tpbmdPcHRpb25GbGFncyB7Ci0gICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwK
LSAgICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCi0gICAgICAgIFBlcmZvcm1SZXBsYWNlbWVu
dCA9IDEgPDwgMiwKLSAgICAgICAgU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMywKLSAgICB9
OwotICAgIHR5cGVkZWYgdW5zaWduZWQgVGV4dENoZWNraW5nT3B0aW9uczsKLQogICAgIHZvaWQg
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRp
b25zLCBSYW5nZSogc3BlbGxpbmdSYW5nZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CiAgICAgdm9p
ZCBjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
KTsKIApAQCAtNDEzLDYgKzQxNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChQYXN0ZWJvYXJkKik7CiAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb25BZnRl
ckVkaXRpbmdPcGVyYXRpb24oKTsKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1t
YXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgY2hlY2tTcGVsbGluZywgUmVmUHRyPFJh
bmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayB0
ZXh0Q2hlY2tpbmdUeXBlTWFza0ZvcihUZXh0Q2hlY2tpbmdPcHRpb25zKTsKIAogICAgIHZvaWQg
c2VsZWN0Q29tcG9zaXRpb24oKTsKICAgICB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBT
dHJpbmcmLCBib29sIHByZXNlcnZlU2VsZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcAppbmRleCA3OTg4ZTQxNjEwYTUxOWI2YTVjYjI2MzBjNjEwZWJlYThmYWU1
ZjIxLi5mZWRjYzA3NzNlNmU3OTgxZjZhOTAyMzkzMTYxNjdiYjc0N2VkYmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBib29s
IFNwZWxsQ2hlY2tlcjo6aXNDaGVja2FibGUoTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4g
bm9kZSAmJiBub2RlLT5yZW5kZXJlcigpOwogfQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6cmVxdWVz
dENoZWNraW5nRm9yKE5vZGUqIG5vZGUpCit2b2lkIFNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNr
aW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIE5vZGUqIG5vZGUpCiB7CiAgICAgQVNT
RVJUKGNhbkNoZWNrQXN5bmNocm9ub3VzbHkobm9kZSkpOwogCiAgICAgaWYgKCFpbml0UmVxdWVz
dChub2RlKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LT5yZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyh0aGlzLCBtX3JlcXVlc3RTZXF1ZW5jZSwgbV9yZXF1ZXN0VGV4dCk7CisgICAgbV9j
bGllbnQtPnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcmVxdWVzdFNlcXVlbmNlLCBt
YXNrLCBtX3JlcXVlc3RUZXh0KTsKIH0KIAogc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJhdG9yKFBv
c2l0aW9uSXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2UpCkBAIC0xMzEsNyArMTMxLDE2
IEBAIHN0YXRpYyBib29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRv
ciwgaW50IGRpc3RhbmNlKQogICAgIHJldHVybiBmYWxzZTsgICAgCiB9CiAKLXZvaWQgU3BlbGxD
aGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5n
UmVzdWx0PiYgcmVzdWx0cykKK3N0YXRpYyBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0b01h
cmtlclR5cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQoreworICAgIGlmICh0eXBlID09IFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZykKKyAgICAgICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpTcGVs
bGluZzsKKyAgICBBU1NFUlQodHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcik7CisgICAg
cmV0dXJuIERvY3VtZW50TWFya2VyOjpHcmFtbWFyOworfQorCisvLyBDdXJyZW5udGx5IGlnbm9y
aW5nIFRleHRDaGVja2luZ1Jlc3VsdDo6ZGV0YWlscyBidXQgc2hvdWxkIGJlIGhhbmRsZWQuIFNl
ZSBCdWcgNTYzNjguCit2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBj
b25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsKICAgICBpZiAoIWlz
VmFsaWQoc2VxdWVuY2UpKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsMTYgKzE1MywxNiBAQCB2
b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8U3Bl
bGxDaGVja2luZ1Jlc3VsdD4mIHJlcwogICAgIGludCBzdGFydE9mZnNldCA9IDA7CiAgICAgUG9z
aXRpb25JdGVyYXRvciBzdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShtX3JlcXVl
c3ROb2RlLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSgpICE9IERvY3VtZW50TWFya2Vy
OjpTcGVsbGluZyAmJiByZXN1bHRzW2ldLnR5cGUoKSAhPSBEb2N1bWVudE1hcmtlcjo6R3JhbW1h
cikKKyAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxp
bmcgJiYgcmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gVG8gYXZvaWQgbW92aW5nIHRoZSBwb3NpdGlv
biBiYWNrd2FyZCwgd2UgYXNzdW1lIHRoZSBnaXZlbiByZXN1bHRzIGFyZSBzb3J0ZWQgd2l0aAog
ICAgICAgICAvLyBzdGFydE9mZnNldCBhcyB0aGUgb25lcyByZXR1cm5lZCBieSBbTlNTcGVsbENo
ZWNrZXIgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmc6XS4KLSAgICAgICAgQVNTRVJUKHN0YXJ0T2Zm
c2V0IDw9IHJlc3VsdHNbaV0ubG9jYXRpb24oKSk7Ci0gICAgICAgIGlmICghZm9yd2FyZEl0ZXJh
dG9yKHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uKCkgLSBzdGFydE9mZnNldCkpCisgICAgICAg
IEFTU0VSVChzdGFydE9mZnNldCA8PSByZXN1bHRzW2ldLmxvY2F0aW9uKTsKKyAgICAgICAgaWYg
KCFmb3J3YXJkSXRlcmF0b3Ioc3RhcnQsIHJlc3VsdHNbaV0ubG9jYXRpb24gLSBzdGFydE9mZnNl
dCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgUG9zaXRpb25JdGVyYXRvciBlbmQgPSBz
dGFydDsKLSAgICAgICAgaWYgKCFmb3J3YXJkSXRlcmF0b3IoZW5kLCByZXN1bHRzW2ldLmxlbmd0
aCgpKSkKKyAgICAgICAgaWYgKCFmb3J3YXJkSXRlcmF0b3IoZW5kLCByZXN1bHRzW2ldLmxlbmd0
aCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBVc2VycyBvciBKYXZhU2NyaXB0
IGFwcGxpY2F0aW9ucyBtYXkgY2hhbmdlIHRleHQgd2hpbGUgYSBzcGVsbC1jaGVja2VyIGNoZWNr
cyBpdHMKQEAgLTE2MywxMSArMTcyLDExIEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhp
bnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiYgcmVzCiAgICAg
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVxdWVzdE5vZGUtPmRv
Y3VtZW50KCksIHN0YXJ0LCBlbmQpOwogICAgICAgICAvLyBGSVhNRTogVXNlIHRleHRDb250ZW50
KCkgY29tcGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KICAgICAgICAgU3RyaW5nIGRlc3RpbmF0
aW9uID0gcmFuZ2UtPnRleHQoKTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9IG1fcmVxdWVzdFRl
eHQuc3Vic3RyaW5nKHJlc3VsdHNbaV0ubG9jYXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSk7
CisgICAgICAgIFN0cmluZyBzb3VyY2UgPSBtX3JlcXVlc3RUZXh0LnN1YnN0cmluZyhyZXN1bHRz
W2ldLmxvY2F0aW9uLCByZXN1bHRzW2ldLmxlbmd0aCk7CiAgICAgICAgIGlmIChkZXN0aW5hdGlv
biA9PSBzb3VyY2UpCi0gICAgICAgICAgICBtX3JlcXVlc3ROb2RlLT5kb2N1bWVudCgpLT5tYXJr
ZXJzKCktPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgcmVzdWx0c1tpXS50eXBlKCkpOworICAgICAg
ICAgICAgbV9yZXF1ZXN0Tm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIocmFu
Z2UuZ2V0KCksIHRvTWFya2VyVHlwZShyZXN1bHRzW2ldLnR5cGUpKTsKIAotICAgICAgICBzdGFy
dE9mZnNldCA9IHJlc3VsdHNbaV0ubG9jYXRpb24oKTsKKyAgICAgICAgc3RhcnRPZmZzZXQgPSBy
ZXN1bHRzW2ldLmxvY2F0aW9uOwogICAgIH0KIAogICAgIGNsZWFyUmVxdWVzdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKaW5kZXggZDM5NDBlNTA0ZmFhNDZhOTY1YzczODA0
YjU5Y2Y3MTFmNzZkY2JmOC4uNGJjYjg5ZTU5ODVjZDFiZDNjNjJlYTliZmFkMDdkOWQ0Y2FlMWIz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIFNwZWxsQ2hlY2tlcl9oCiAKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlci5oIgor
I2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDI1ICszNiw2IEBAIGNsYXNzIFRleHRD
aGVja2VyQ2xpZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBOb2RlOwogCi1jbGFzcyBTcGVsbENo
ZWNraW5nUmVzdWx0IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVsbENoZWNraW5nUmVzdWx0
KERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUgPSBEb2N1bWVudE1hcmtlcjo6U3BlbGxp
bmcsIGludCBsb2NhdGlvbiA9IDAsIGludCBsZW5ndGggPSAwKQotICAgICAgICA6IG1fdHlwZSh0
eXBlKQotICAgICAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCi0gICAgICAgICwgbV9sZW5ndGgo
bGVuZ3RoKQotICAgIHsKLSAgICB9Ci0KLSAgICBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9IAotICAgIGludCBsb2NhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KLSAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9sZW5ndGg7IH0KLQotcHJpdmF0ZToKLSAgICBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSBt
X3R5cGU7Ci0gICAgaW50IG1fbG9jYXRpb247Ci0gICAgaW50IG1fbGVuZ3RoOwotfTsKLQogY2xh
c3MgU3BlbGxDaGVja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTcGVsbENoZWNrZXIp
OwogcHVibGljOgpAQCAtNjUsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0J1c3koKSBj
b25zdDsKICAgICBib29sIGlzVmFsaWQoaW50IHNlcXVlbmNlKSBjb25zdDsKICAgICBib29sIGlz
Q2hlY2thYmxlKE5vZGUqKSBjb25zdDsKLSAgICB2b2lkIHJlcXVlc3RDaGVja2luZ0ZvcihOb2Rl
Kik7Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxTcGVsbENo
ZWNraW5nUmVzdWx0PiYpOworICAgIHZvaWQgcmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2lu
Z1R5cGVNYXNrLCBOb2RlKik7CisgICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpbml0
UmVxdWVzdChOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hl
bHBlci5jcHAKaW5kZXggMDA5YzgwNzQxNDMxNThkYzY5NjI0ZDk5ZTY2ZmFiYTBiMzgyZDJlMy4u
MzkxMmE0OWY0ZmU5NjdkN2Q1YjgxMWI3OTI5MjI3MDM2YmYzZjhlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMjc0LDcgKzI3NCw3IEBA
IFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFt
bWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgZ3JhbW1h
ckRldGFpbEluZGV4ID0gMDsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgICAgICAgICAgICAgIHVpbnQ2NF90
IGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
IHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwor
ICAgICAgICAgICAgICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBjaGVj
a0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdy
YW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdHJpbmcu
Y2hhcmFjdGVycygpLCBwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCksIGNoZWNraW5nVHlwZXMsIHJl
c3VsdHMpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7CkBAIC01MjQsNyArNTI0LDcgQEAgVmVj
dG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5n
cmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgcmV0dXJuIGd1ZXNzZXM7CiAKICAgICBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwotICAgIHVpbnQ2NF90IGNoZWNraW5nVHlw
ZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNr
aW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIFRleHRDaGVj
a2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMgPSBjaGVja0dyYW1tYXIgPyAoVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIDogVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nOwogICAgIG1fY2xpZW50LT50ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFn
cmFwaChwYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5ndGgoKSwg
Y2hlY2tpbmdUeXBlcywgcmVzdWx0cyk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAppbmRleCAyYzEwODNjNTE4NjcyYjQyMmZiMDUxY2FkOTc2NzU3OTc0MDgyNWJmLi5jOTJmNjhj
NzMxMDJhNmVlN2Q2ZWE0ZDU2M2E3NTk1MzdmNGIzYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCkBAIC00MDcsMTEgKzQwNywxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0b3I8R3JhbW1h
ckRldGFpbD4mLCBpbnQqLCBpbnQqKSB7IH0KIAogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJ
TkcpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwg
aW50LCB1aW50NjRfdCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CisgICAgdmly
dHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCBUZXh0Q2hl
Y2tpbmdUeXBlTWFzaywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5kaWYK
IAogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqLCBp
bnQsIFRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBTdHJpbmcmKSB7IH0KIH07CiAKIGNsYXNz
IEVtcHR5RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKaW5kZXggOGFiYmVkNDEy
MzFkNjgxNjg1NmIxZjc3ZDQ3YTNiYWYxMWQxNGU0MC4uZDE2YWRlMTY0NjBhZDcwZjM3ZWI5ZThk
NDE0ZGY2MWY2N2NmYzhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q2hlY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dENoZWNrZXJDbGllbnQuaApAQCAtNDUsMTYgKzQ1LDYgQEAgc3RydWN0IEdyYW1tYXJEZXRh
aWwgewogICAgIFN0cmluZyB1c2VyRGVzY3JpcHRpb247CiB9OwogCi1lbnVtIFRleHRDaGVja2lu
Z1R5cGUgewotICAgIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAgICA9IDEgPDwgMSwKLSAgICBU
ZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAgICAgPSAxIDw8IDIsCi0gICAgVGV4dENoZWNraW5nVHlw
ZUxpbmsgICAgICAgID0gMSA8PCA1LAotICAgIFRleHRDaGVja2luZ1R5cGVRdW90ZSAgICAgICA9
IDEgPDwgNiwKLSAgICBUZXh0Q2hlY2tpbmdUeXBlRGFzaCAgICAgICAgPSAxIDw8IDcsCi0gICAg
VGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID0gMSA8PCA4LAotICAgIFRleHRDaGVja2luZ1R5
cGVDb3JyZWN0aW9uICA9IDEgPDwgOQotfTsKLQogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdCB7
CiAgICAgVGV4dENoZWNraW5nVHlwZSB0eXBlOwogICAgIGludCBsb2NhdGlvbjsKQEAgLTcyLDE1
ICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmlu
Zyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50
KiBtaXNzcGVsbGluZ0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1dG9Db3Jy
ZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdv
cmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNo
YXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJM
b2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSA9IDA7CisKICNpZiBVU0UoVU5JRklFRF9U
RVhUX0NIRUNLSU5HKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25z
dCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9y
PFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFRleHRDaGVj
a2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHRzKSA9IDA7CiAjZW5kaWYKIAogICAgIC8vIEZvciBzcGVsbGNoZWNrZXJzIHRoYXQgc3Vw
cG9ydCBtdWx0aXBsZSBsYW5ndWFnZXMsIGl0J3Mgb2Z0ZW4gaW1wb3J0YW50IHRvIGJlIGFibGUg
dG8gaWRlbnRpZnkgdGhlIGxhbmd1YWdlIGluIG9yZGVyIHRvCiAgICAgLy8gcHJvdmlkZSBtb3Jl
IGFjY3VyYXRlIGNvcnJlY3Rpb24gc3VnZ2VzdGlvbnMuIENhbGxlciBjYW4gcGFzcyBpbiBtb3Jl
IHRleHQgaW4gImNvbnRleHQiIHRvIGFpZCBzdWNoIHNwZWxsY2hlY2tlcnMgb24gbGFuZ3VhZ2UK
ICAgICAvLyBpZGVudGlmaWNhdGlvbi4gTm9yYW1sbHkgaXQncyB0aGUgdGV4dCBzdXJyb3VuZGlu
ZyB0aGUgIndvcmQiIGZvciB3aGljaCB3ZSBhcmUgZ2V0dGluZyBjb3JyZWN0aW9uIHN1Z2dlc3Rp
b25zLgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdv
cmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiwg
aW50LCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0
IFN0cmluZyYpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENoZWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDaGVja2luZy5oCmluZGV4IDAyMmZiODI0M2IyZGRmMWFiN2RhOWZlNTA1MmUwYTIyYmE1NWM0
YjQuLmQyMDQwZDVlYWZiY2ZmYmVjZDdlYjU2NjlkNTU4MzIwOTEyODM5MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcuaApAQCAtNDIsNiArNDIsMTggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2RlZmluZSBXVEZfVVNFX0FVVE9NQVRJQ19URVhUX1JFUExB
Q0VNRU5UIDEKICNlbmRpZgogCitlbnVtIFRleHRDaGVja2luZ1R5cGUgeworICAgIFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZyAgICA9IDEgPDwgMSwKKyAgICBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
ciAgICAgPSAxIDw8IDIsCisgICAgVGV4dENoZWNraW5nVHlwZUxpbmsgICAgICAgID0gMSA8PCA1
LAorICAgIFRleHRDaGVja2luZ1R5cGVRdW90ZSAgICAgICA9IDEgPDwgNiwKKyAgICBUZXh0Q2hl
Y2tpbmdUeXBlRGFzaCAgICAgICAgPSAxIDw8IDcsCisgICAgVGV4dENoZWNraW5nVHlwZVJlcGxh
Y2VtZW50ID0gMSA8PCA4LAorICAgIFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uICA9IDEgPDwg
OQorfTsKKwordHlwZWRlZiB1bnNpZ25lZCBUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKwogfQogCiAj
ZW5kaWYgLy8gVGV4dENoZWNraW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYzcz
NjU4MWQ3MDg2ZmMwZGU5NzE2OWVmZGQzOTk2YTA1NzYxNWJkYS4uZjMxYzk0ZDM3Y2I1MTgzZjc3
NmY5Y2Q5NDcxODRlOTM1ZTYxNzE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVm
YWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4
dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NjA4NQorCisgICAgICAgIEZvbGxvd2VkIHRoZSBzaWduYXR1cmUgY2hhbmdlLgor
ICAgICAgICAKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNy
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29t
cGxldGlvbkltcGwuY3BwCisKIDIwMTEtMDMtMjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MTkx
NiBhbmQgcjgxOTE3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmNwcAppbmRleCAzOGQ0ZjVlZjg5MjM5ZTA0NWFhZjVmMGY5MTM0NzI2YTM4YTYyMjk5
Li41MTVmYTRhYjYyOWI3MTc2NTk3NzQ3NDBiNjFlMDAxZjRiNDE3ZDdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAtODcxLDcgKzg3
MSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0
IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSBz
cGVsbExlbmd0aDsKIH0KIAotdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
U3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBpZGVudGlmaWVyLCBUZXh0Q2hlY2tpbmdUeXBlTWFz
aywgY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPnJlcXVl
c3RDaGVja2luZ09mVGV4dCh0ZXh0LCBuZXcgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwo
aWRlbnRpZmllciwgc2VuZGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmgKaW5kZXggYjgxZmI1NjA1NDMwYmYyZjVmMzNkZTQ4NzRjMGI2NmY2
ZjdjYzQ2ZS4uMmViYzZlYTU4MDRiMjUzZmJlNDE2Mzg2NzQ1Yjk4NzExN2FhZmRlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaApAQCAtMTE0LDcg
KzExNCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNl
dElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0
ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tl
ciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tl
cigpIHsgcmV0dXJuIHRoaXM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwCmluZGV4IGI5ZTUy
MjcxMzJmNDIwNGZmNWM3ZDI1NmU0ZWU5YWFiYTZkZmJhMTUuLjY5NDNiMGE5N2QyNWRkMGUwZjhi
MjUxM2EzNGNhYjE0ZjliM2M2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAKQEAgLTM0LDE2
ICszNCwzNiBAQAogI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgogI2luY2x1ZGUgIldlYlRleHRD
aGVja2luZ1Jlc3VsdC5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotc3RhdGljIFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRz
KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorc3RhdGlj
IFRleHRDaGVja2luZ1R5cGUgdG9Db3JlQ2hlY2tpbmdUeXBlKFdlYlRleHRDaGVja2luZ1Jlc3Vs
dDo6RXJyb3IgZXJyb3IpCiB7Ci0gICAgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+IGNvcmVS
ZXN1bHRzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkK
LSAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5kKFNwZWxsQ2hlY2tpbmdSZXN1bHQoc3RhdGljX2Nh
c3Q8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+KHJlc3VsdHNbaV0uZXJyb3IpLCByZXN1bHRz
W2ldLnBvc2l0aW9uLCByZXN1bHRzW2ldLmxlbmd0aCkpOworICAgIHN3aXRjaCAoZXJyb3IpIHsK
KyAgICBjYXNlIFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxsaW5nOgor
ICAgICAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIGNhc2UgV2ViS2l0
OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcjoKKyAgICAgICAgcmV0dXJuIFRl
eHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAg
fQorfQorCitzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhj
b25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKKyAgICBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjb3JlUmVzdWx0czsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyArK2kpIHsgCisgICAgICAgIFRleHRDaGVja2luZ1Jl
c3VsdCBjb3JlUmVzdWx0OworICAgICAgICBjb3JlUmVzdWx0LnR5cGUgPSB0b0NvcmVDaGVja2lu
Z1R5cGUocmVzdWx0c1tpXS5lcnJvcik7CisgICAgICAgIGNvcmVSZXN1bHQubG9jYXRpb24gPSBy
ZXN1bHRzW2ldLnBvc2l0aW9uOworICAgICAgICBjb3JlUmVzdWx0Lmxlbmd0aCA9IHJlc3VsdHNb
aV0ubGVuZ3RoOworICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQoY29yZVJlc3VsdCk7CisgICAg
fQorCiAgICAgcmV0dXJuIGNvcmVSZXN1bHRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMTA2
ZjYwZmFkZTQzZjFmYjU3M2E3Y2JjOWQ1ZDZhZGI2MzcwNTFkNi4uY2NmNmZjMzI4NzNlMWM5MWM1
MmFlNDAyMGMyMDI3Nzc2YTI1YjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10g
U3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdS
ZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
MDg1CisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5o
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyk6CisKIDIwMTEtMDMtMjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MTkxNiBhbmQgcjgx
OTE3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuaAppbmRleCA1NzVhNTBkMjUzZDI5NDA2YzQ2ZDhhMzRjYWYzNjhlYmFkOGFlNzY3Li41
NmIzMzAwMmVhYTE3YTg1YjliMzcwMTY5ZDhiZDg0NzNmZGMzYTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaApAQCAtMTE0LDcg
KzExNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29u
c3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFN0cmlu
Zz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CiAgICAgdmlydHVh
bCBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggOTFiMzkwN2RkM2MyNmU0OWNhNzI0ZjMyMDIzOWQy
ZDZkYjM1ODhjMS4uMzg2ZGU4YTkxMTk4MjFjMjU5YjE0YTE4YzM3NjliOWU2NThiODA2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1l
ICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtSZWZhY3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQg
YmUgcmVwbGFjZWQgd2l0aCBUZXh0Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MDg1CisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENo
ZWNrZXJDbGllbnRFbmNoYW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisKIDIwMTEtMDMt
MjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MTkxNiBhbmQgcjgxOTE3LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvVGV4dENoZWNrZXJDbGllbnRFbmNoYW50
LmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVu
Y2hhbnQuaAppbmRleCBjMjk0YTNkMDBmMmRkZTUwNmFhZGE2MDQ3MTRhMDViNWRkNDQ4NzYxLi41
ZDkzYzA3MjE2ZDk5NWJmZTM2Y2FmYWRkOTkwYzBhNzgyZjUyZGRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudEVu
Y2hhbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudEVuY2hhbnQg
OiBwdWJsaWMgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGllbnQgewogICAgICAgICB2aXJ0dWFsIFdU
Rjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0
IFdURjo6U3RyaW5nJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmlu
Zyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFdURjo6VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJE
ZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBXVEY6OlN0cmlu
ZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgZ3Vlc3Nlcyk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30K
KyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdU
Rjo6U3RyaW5nJikge30KIAogICAgICAgICB2b2lkIHVwZGF0ZVNwZWxsQ2hlY2tpbmdMYW5ndWFn
ZShjb25zdCBjaGFyKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGZyZWVTcGVsbENoZWNraW5nTGFu
Z3VhZ2UoZ3BvaW50ZXIsIGdwb2ludGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaGFp
a3UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggYzhkZWM3
MzVjZTZhNmY4YzgwZDYyYWViYTJiYjY0ZjY1NTlmZTdkZi4uZDM1OTFhY2FjYmQzMjU4YzFjNGZk
NmZkNGFjNjU1ZWQ4YjEzYTNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9oYWlrdS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3Jpbmdd
IFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5n
UmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NjA4NQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEhhaWt1OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6CisKIDIwMTEtMDMtMjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MTkxNiBhbmQgcjgxOTE3
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRIYWlrdS5oIGIvU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRIYWlrdS5oCmluZGV4IGJiMGQ4YWMxMDVmY2UyMjE1N2E3MDIwNmFhNGMxNGVjNTkwN2Ew
YjUuLmNjMjFmY2I4NmYyOTE5NGVhM2U4MTRmYTA1NzNkNWU2NGNjYmExOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1
LmgKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBFZGl0b3JDbGllbnRIYWlrdSA6IHB1YmxpYyBF
ZGl0b3JDbGllbnQsIHB1YmxpYyBUZXh0Q2hlY2tlckNsaWVudCB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYg
Y29udGV4dCwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldElucHV0
TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgU3RyaW5nJikge30KKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlcios
IGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpIHt9CiAg
ICAgICAgIHZpcnR1YWwgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1cm4g
dGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNFZGl0aW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggOTM5MWM0NWQzNmI4ZWMxMThjZmE1OTNmMjllNTU2YWVkZTU2YTZmMy4uODdmN2U0NzBm
ZTlmMzdkYWFmOTc4MjdkM2E2NDkyYzI3MGExOTY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDExLTAzLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtSZWZh
Y3RvcmluZ10gU3BlbGxDaGVja2luZ1Jlc3VsdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBUZXh0
Q2hlY2tpbmdSZXN1bHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU2MDg1CisKKyAgICAgICAgUmVtb3ZlZCBOU1RleHRDaGVja2luZ1Jlc3VsdCB0byBT
cGVsbENoZWNraW5nUmVzdWx0IGNvbnZlcnRpb24sIGFuZCBleHRyYWN0ZWQKKyAgICAgICAgTlNU
ZXh0Q2hlY2tpbmdSZXN1bHQgdG8gVGV4dENoZWNraW5nUmVzdWx0IGNvbnZlcnRpbyBmcm9tIGNo
ZWNrVGV4dE9mUGFyYWdyYXBoIG1ldGhvZC4KKyAgICAgICAgZm9yIHJlcXVlc3RDaGVja2luZ09m
U3RyaW5nIG1ldGhvZC4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
OgorICAgICAgICAodG9Db3JlVGV4dENoZWNraW5nUmVzdWx0cyk6CisgICAgICAgIChXZWJFZGl0
b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKC1bV2ViRWRpdG9yU3Bl
bGxDaGVja1Jlc3BvbmRlciBpbml0V2l0aFNlbmRlcjpXZWJDb3JlOjpzZXF1ZW5jZTp0eXBlczpX
ZWJDb3JlOjpyZXN1bHRzOl0pOgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9u
ZGVyIHBlcmZvcm1dKToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dl
YkZyYW1lIG1hcmtlcnNGb3JTZWxlY3Rpb25TdGFydEFzVGV4dF0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViRnJhbWVQcml2YXRlLmg6CisKIDIwMTEtMDMtMjMgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CmluZGV4IDQxMmNiNDU5YjE3ODkzZTdkYTVjMjhhZGY4MTQ4ZDQ1NTgwNmRmMDIuLjBlNTIxMDIz
NjgyYmExMjE5MjQzZTFkZGMzMGNiM2RkZTIzMDA3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xMzAsNyArMTMwLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3Bl
bGxpbmdMZW5ndGgpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdn
ZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFs
IHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBXVEY6
OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9u
LCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBh
cmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0X3QgY2hlY2tpbmdU
eXBlcywgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cyk7
CisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0
LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVz
LCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5n
Jik7CiAgICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdyk7CkBAIC0xMzgs
NyArMTM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChj
b25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIFdURjo6
VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJ
bnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUo
Ym9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
V2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIq
LCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYp
OwogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19P
Tl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCiAgICAgdmly
dHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBhbmVsSW5m
bzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBs
YWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFj
ZW1lbnRTdHJpbmdzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25QYW5lbChX
ZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBk
Zjk4NWNlMDMxNDk0ZmRhMTliMTAwMjkzYjM4MDgxMTMzYmVlODc2Li5jZGQ5YjhhZjRiYmE2NDM1
YmIxNzMzNzE5Y2QwNzQ3NmNkMGY3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC03OTAsMTIgKzc5MCwxMSBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRl
eHQsIGludCBsZW5ndGgsIFZlY3RvcgogI2VuZGlmCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWlu
dDY0X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMp
Ci17CiAjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpCi0gICAgTlNTdHJpbmcgKnRleHRTdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQpIGxlbmd0
aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKLSAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMg
PSBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0
cmluZyByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczooY2hl
Y2tpbmdUeXBlc3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwgaW5T
cGVsbERvY3VtZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5
Ok5VTEwgd29yZENvdW50Ok5VTExdOwotICAgIFt0ZXh0U3RyaW5nIHJlbGVhc2VdOworc3RhdGlj
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IGNvcmUoTlNBcnJheSAqaW5jb21pbmdSZXN1bHRz
LCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzKQoreworICAgIFZlY3RvcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisKICAgICBmb3IgKE5TVGV4dENoZWNraW5nUmVzdWx0
ICppbmNvbWluZ1Jlc3VsdCBpbiBpbmNvbWluZ1Jlc3VsdHMpIHsKICAgICAgICAgTlNSYW5nZSBy
ZXN1bHRSYW5nZSA9IFtpbmNvbWluZ1Jlc3VsdCByYW5nZV07CiAgICAgICAgIE5TVGV4dENoZWNr
aW5nVHlwZSByZXN1bHRUeXBlID0gW2luY29taW5nUmVzdWx0IHJlc3VsdFR5cGVdOwpAQCAtODY3
LDYgKzg2NiwxOCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
Y29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NAogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KKworICAgIHJldHVybiByZXN1bHRz
OworfQorI2VuZGlmCisKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFw
aChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hl
Y2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit7CisjaWYg
IWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpCisgICAgTlNTdHJpbmcgKnRleHRTdHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aENoYXJhY3RlcnNOb0NvcHk6Y29uc3RfY2FzdDxVQ2hhcio+KHRleHQpIGxlbmd0aDpsZW5ndGgg
ZnJlZVdoZW5Eb25lOk5PXTsKKyAgICBOU0FycmF5ICppbmNvbWluZ1Jlc3VsdHMgPSBbW05TU3Bl
bGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gY2hlY2tTdHJpbmc6dGV4dFN0cmluZyByYW5n
ZTpOU01ha2VSYW5nZSgwLCBbdGV4dFN0cmluZyBsZW5ndGhdKSB0eXBlczooY2hlY2tpbmdUeXBl
c3xOU1RleHRDaGVja2luZ1R5cGVPcnRob2dyYXBoeSkgb3B0aW9uczpuaWwgaW5TcGVsbERvY3Vt
ZW50V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIG9ydGhvZ3JhcGh5Ok5VTEwgd29y
ZENvdW50Ok5VTExdOworICAgIFt0ZXh0U3RyaW5nIHJlbGVhc2VdOworICAgIHJlc3VsdHMgPSBj
b3JlKGluY29taW5nUmVzdWx0cywgY2hlY2tpbmdUeXBlcyk7CiAjZW5kaWYKIH0KIApAQCAtOTY1
LDU4ICs5NzYsMzUgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUo
Ym9vbCkKIHsKICAgICBXZWJDb3JlOjpTcGVsbENoZWNrZXIqIF9zZW5kZXI7CiAgICAgaW50IF9z
ZXF1ZW5jZTsKKyAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBfdHlwZXM7CiAgICAgUmV0YWluUHRy
PE5TQXJyYXk+IF9yZXN1bHRzOwogfQotLSAoaWQpaW5pdFdpdGhTZW5kZXI6KFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlciopc2VuZGVyIHNlcXVlbmNlOihpbnQpc2VxdWVuY2UgcmVzdWx0czooTlNBcnJh
eSopcmVzdWx0czsKKy0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIq
KXNlbmRlciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdUeXBlTWFzayl0eXBlcyByZXN1bHRzOihOU0FycmF5KilyZXN1bHRzOwogLSAodm9pZClwZXJm
b3JtOwotLSAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6U3BlbGxDaGVja2luZ1Jlc3VsdD4pIF9jb3Jl
UmVzdWx0czsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkVkaXRvclNwZWxsQ2hlY2tSZXNw
b25kZXIKLS0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRl
ciBzZXF1ZW5jZTooaW50KXNlcXVlbmNlIHJlc3VsdHM6KE5TQXJyYXkqKXJlc3VsdHMKKy0gKGlk
KWluaXRXaXRoU2VuZGVyOihXZWJDb3JlOjpTcGVsbENoZWNrZXIqKXNlbmRlciBzZXF1ZW5jZToo
aW50KXNlcXVlbmNlIHR5cGVzOihXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayl0eXBlcyBy
ZXN1bHRzOihOU0FycmF5KilyZXN1bHRzCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAg
ICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgX3NlbmRlciA9IHNlbmRlcjsK
ICAgICBfc2VxdWVuY2UgPSBzZXF1ZW5jZTsKKyAgICBfdHlwZXMgPSB0eXBlczsKICAgICBfcmVz
dWx0cyA9IHJlc3VsdHM7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpcGVyZm9ybQog
ewotICAgIF9zZW5kZXItPmRpZENoZWNrKF9zZXF1ZW5jZSwgW3NlbGYgX2NvcmVSZXN1bHRzXSk7
Ci19Ci0KLXN0YXRpYyBTcGVsbENoZWNraW5nUmVzdWx0IHRvQ29yZVNwZWxsaW5nUmVzdWx0KE5T
VGV4dENoZWNraW5nUmVzdWx0KiByZXN1bHQpCi17Ci0gICAgTlNUZXh0Q2hlY2tpbmdUeXBlIHR5
cGUgPSBbcmVzdWx0IHJlc3VsdFR5cGVdOwotICAgIE5TUmFuZ2UgcmFuZ2UgPSBbcmVzdWx0IHJh
bmdlXTsKLSAgICBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSBjb3JlVHlwZTsKLSAgICBpZiAo
dHlwZSAmIE5TVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKQotICAgICAgICBjb3JlVHlwZSA9IERv
Y3VtZW50TWFya2VyOjpTcGVsbGluZzsKLSAgICBlbHNlIGlmICh0eXBlICYgTlNUZXh0Q2hlY2tp
bmdUeXBlR3JhbW1hcikKLSAgICAgICAgY29yZVR5cGUgPSBEb2N1bWVudE1hcmtlcjo6R3JhbW1h
cjsKLSAgICBlbHNlCi0gICAgICAgIGNvcmVUeXBlID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtl
cnM7Ci0KLSAgICByZXR1cm4gU3BlbGxDaGVja2luZ1Jlc3VsdChjb3JlVHlwZSwgcmFuZ2UubG9j
YXRpb24sIHJhbmdlLmxlbmd0aCk7Ci19Ci0KLS0gKFdURjo6VmVjdG9yPFdlYkNvcmU6OlNwZWxs
Q2hlY2tpbmdSZXN1bHQ+KV9jb3JlUmVzdWx0cwotewotICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6
OlNwZWxsQ2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOwotICAgIGNvcmVSZXN1bHRzLnJlc2Vy
dmVDYXBhY2l0eShbX3Jlc3VsdHMuZ2V0KCkgY291bnRdKTsKLSAgICBmb3IgKE5TVGV4dENoZWNr
aW5nUmVzdWx0KiByZXN1bHQgaW4gX3Jlc3VsdHMuZ2V0KCkpCi0gICAgICAgIGNvcmVSZXN1bHRz
LmFwcGVuZCh0b0NvcmVTcGVsbGluZ1Jlc3VsdChyZXN1bHQpKTsKLSAgICByZXR1cm4gY29yZVJl
c3VsdHM7CisgICAgX3NlbmRlci0+ZGlkQ2hlY2soX3NlcXVlbmNlLCBjb3JlKF9yZXN1bHRzLmdl
dCgpLCBfdHlwZXMpKTsKIH0KIAogQGVuZAogI2VuZGlmCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNlbmRlciwg
aW50IHNlcXVlbmNlLCBjb25zdCBTdHJpbmcmIHRleHQpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6
cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBzZW5kZXIsIGlu
dCBzZXF1ZW5jZSwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywg
Y29uc3QgU3RyaW5nJiB0ZXh0KQogewogI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIE5TUmFuZ2UgcmFuZ2UgPSBOU01h
a2VSYW5nZSgwLCB0ZXh0Lmxlbmd0aCgpKTsKQEAgLTEwMjQsNyArMTAxMiw3IEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNr
ZXIqIHNlbmRlciwgaW50CiAgICAgW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJd
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nOnRleHQgcmFuZ2U6cmFuZ2UgdHlwZXM6TlNUZXh0Q2hl
Y2tpbmdBbGxTeXN0ZW1UeXBlcyBvcHRpb25zOjAgaW5TcGVsbERvY3VtZW50V2l0aFRhZzowIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TSW50ZWdlciwgTlNBcnJheSogcmVzdWx0cywgTlNPcnRob2dyYXBoeSosIE5TSW50ZWdl
cikgewogICAgICAgICAgICAgW2N1cnJlbnRMb29wIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3Io
cGVyZm9ybSkgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OltbW1dl
YkVkaXRvclNwZWxsQ2hlY2tSZXNwb25kZXIgYWxsb2NdIGluaXRXaXRoU2VuZGVyOnNlbmRlciBz
ZXF1ZW5jZTpzZXF1ZW5jZSByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDpbW1tXZWJFZGl0b3JTcGVsbENoZWNrUmVz
cG9uZGVyIGFsbG9jXSBpbml0V2l0aFNlbmRlcjpzZW5kZXIgc2VxdWVuY2U6c2VxdWVuY2UgdHlw
ZXM6Y2hlY2tpbmdUeXBlcyByZXN1bHRzOnJlc3VsdHNdIGF1dG9yZWxlYXNlXQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudDpuaWwgb3JkZXI6MCBtb2RlczpbTlNBcnJh
eSBhcnJheVdpdGhPYmplY3Q6TlNEZWZhdWx0UnVuTG9vcE1vZGVdXTsKICAgICAgICAgfV07CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYmJiZTZhMTI3ZjQxYzgzYWQ3NGI0Y2JmYTkxNzY4NDY0
MDgwNzRmNi4uMzlhOWM4ZWYwYmVkZjYwODA3YjA1MGQ3ZDk1NmQxYWJjNDk1ZTBlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1v
cnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJl
cGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorICAgICAgICAKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0yNCAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjgxOTE2IGFuZCByODE5MTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgKaW5kZXggMDQ1MDYwMzUzOTA0YzA1NWQ3Y2NmMmFk
NDYxZjVjYjhlODFhZTFhMC4uMGQ4ZThjNjc5ODRlOWFkMWY3ZjJjNTZiNmMwZDFjZmQ2NGJlMjFm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0R3Vl
c3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIFZl
Y3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0
aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVu
YWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENo
ZWNrZXIqLCBpbnQsIGNvbnN0IFN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5n
VHlwZU1hc2ssIGNvbnN0IFN0cmluZyYpIHt9CiAgICAgdmlydHVhbCBUZXh0Q2hlY2tlckNsaWVu
dCogdGV4dENoZWNrZXIoKSB7IHJldHVybiB0aGlzOyB9CiAKICAgICBib29sIGlzRWRpdGluZygp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDgyNGEwZTcwYzk0NDdiM2Q0MjNhODc2NmIyOTBh
MDI3MDUyMWJmNDYuLjZjOWQ1YmNhYjlmNjgwZmQ1MWNiMzY5MDliMmU3ZDliODUwZmY4OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMy0xMSAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNwZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxk
IGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVzdWx0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4NQorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAxMS0wMy0yNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjgxOTE2IGFuZCByODE5MTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDE4YmU0MDA2ZjQzOTJkNzFhYzA3NDUxZmIyYTQ3
Nzg4ZDM2NjI2MjAuLmYzMGM0MzRhNzA0ZjRjNzhhOGFjOTI2ZDczMWY4MzNhNjViYWJjMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3Rh
dGUoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNv
cmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpIHt9
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7
IHJldHVybiB0aGlzOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGFkMGQ0
NmRiMWZjYWI3ZjEzMDI5NjYxYzBjYjQ1YWU2NDI0ZTM5NmEuLjY3MjhiYTI2YjYwZDFlZTcyYWIy
MzRhMjYxZWI1OTdiYmNmZjg1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1JlZmFjdG9yaW5n
XSBTcGVsbENoZWNraW5nUmVzdWx0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIFRleHRDaGVja2lu
Z1Jlc3VsdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTYwODUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmg6Cisg
ICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudFdpbkNFOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
Zyk6CisKIDIwMTEtMDMtMjQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MTkxNiBhbmQgcjgxOTE3
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRXaW5DRS5oCmluZGV4IGQ5M2VjYzViOGZkNWUzNWY0NDdmOTIxZTQ3NzUyZGIzMmUyMTQ2
MjcuLmEyYjIzYjQ4NTM2YTk4YzlhNTA4N2I0MTJmOGJlNGEzYTViZGY3ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNF
LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldEd1ZXNz
ZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29u
dGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3Ry
aW5nJikge30KICAgICB2aXJ0dWFsIFdlYkNvcmU6OlRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hl
Y2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggMzVl
NWM5MzdmN2M5NTVmY2YwMGQzMTAyNjQ0NGViMjZiZDZlMDcyYy4uNTk5ZTM5ZmQ3MjI0NTk0MzVj
YzQzMGNlMzljMGY1ZjRkYjQyYzdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0wMy0xMSAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUmVmYWN0b3JpbmddIFNw
ZWxsQ2hlY2tpbmdSZXN1bHQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggVGV4dENoZWNraW5nUmVz
dWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjA4
NQorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKToKKwogMjAx
MS0wMy0yNCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgxOTE2IGFuZCByODE5MTcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaCBiL1Nv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCmluZGV4IGQxZDM1
OTcwOTc1OWM5MDA2ODQzNzkyMGI1MDVlNWVmZjI4MjIyNGQuLjY1ZWU0OTMwNTkzOWMyN2Y1YjAz
NjE2NWE3NmM1NWRkZjRkNTA3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9FZGl0b3JDbGllbnRXeC5oCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBX
VEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2ssIGNvbnN0IFdURjo6U3RyaW5nJikge30KICAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50
KiB0ZXh0Q2hlY2tlcigpIHsgcmV0dXJuIHRoaXM7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA2ZTM2Mjc4ZTdkMWY5ZTA0NGM2MDJjZTY0YTJjZGY2NDJhZGMzYzE4Li41MjE2ZDE2ZGZjYjdh
ZmRhNWYwNTZiOWMyMGI0M2ZmYWM0ZGZiNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDMtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRl
c2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRp
dG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkVkaXRvckNsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorCiAyMDExLTAzLTI0
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByODE5MTYgYW5kIHI4MTkxNy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAppbmRleCBiOTU0MjgzNTkxMzM3ODBiNGNlZDYwYmY2M2Q5NWEzNmI5ZGUxNTBjLi5j
ZTJjZTYxNDM2ZWRhNmQxODlhOTJhM2U3NDkzNTEzM2VjZjMyM2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCkBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElu
cHV0TWV0aG9kU3RhdGUoYm9vbCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA5MjAwYWYwODA5ZGI1YTA5
MmEwYWJkZTBkOGVmN2UwNmY4YjYzMGI5Li5hYTBhMTEwNmM2NDcwZGM2MjM0ZDllMzkxMDJjY2M3
OWQ1NWY3MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3Nw
ZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpOwogICAgIHZpcnR1YWwgdm9p
ZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxX
ZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJh
ZEdyYW1tYXJMZW5ndGgpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2
b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCB1
aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0cyk7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0
IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBj
aGVja2luZ1R5cGVzLCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0
cyk7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFy
U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmIGRldGFp
bCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJik7CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcm
IGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RT
dGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3Ry
aW5nJik7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29y
cmVjdGlvblBhbmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFs
dGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCA3YTk1YTcyYTU4ZjYz
OTM5M2YxMDY0MDgwODc1ZDFiNDIyM2NlOWVhLi4wOTYzMTJkNGRhNmYzZDlkZDMzMjU5YWRjODdk
ZmNhMDVmYzJhZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC0y
NDAsNyArMjQwLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRvZ2dsZUF1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbigpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVu
Z3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYg
cmVzdWx0cykKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1RleHRPZlBhcmFncmFwaChjb25z
dCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sg
Y2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7CiAg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgd2Ugd291bGRuJ3QgaGF2ZSB0byBjb3B5
IHRoZSB0ZXh0IGhlcmUuCiAgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpDaGVja1RleHRPZlBhcmFncmFwaChTdHJpbmcodGV4dCwgbGVuZ3RoKSwgY2hlY2tpbmdU
eXBlcyksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNoZWNrVGV4dE9mUGFyYWdyYXBoOjpSZXBs
eShyZXN1bHRzKSk7Cg==
</data>
<flag name="review"
          id="79266"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>