<?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>37768</bug_id>
          
          <creation_ts>2010-04-18 00:56:33 -0700</creation_ts>
          <short_desc>Web Inspector: differentiate element highlight colors for margin and padding</short_desc>
          <delta_ts>2011-09-01 05:37:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>66779</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="lensco">lensco</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>efidler</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>jon.rimmer</cc>
    
    <cc>keishi</cc>
    
    <cc>m4olivei</cc>
    
    <cc>paulirish</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213725</commentid>
    <comment_count>0</comment_count>
    <who name="lensco">lensco</who>
    <bug_when>2010-04-18 00:56:33 -0700</bug_when>
    <thetext>The way an element on page is highlighted could be improved by using different colors for padding and margin, so you can easily discern them. Also, don&apos;t use borders for the highlight, they are very confusing. Perhaps it would be best, for continuity&apos;s sake, to adopt the Firebug way of highlighting: yellow overlay for margins, purple overlay for padding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369030</commentid>
    <comment_count>1</comment_count>
    <who name="matt">m4olivei</who>
    <bug_when>2011-03-17 06:25:28 -0700</bug_when>
    <thetext>I would also really like to see this go into the web inspector.  I think the yellow for margin, blue for padding color scheme that Firebug introduced is standard in a lot of peoples minds including mine.  This simple change could go a long way in improving the usability of the web inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452278</commentid>
    <comment_count>2</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-17 08:47:58 -0700</bug_when>
    <thetext>A Chromium UI guy suggests the following colors:

margin: rgba(246, 178, 107, .66) overlay, rgb(180, 95, 4) border
border: rgba(255, 229, 153, .66) overlay, rgb(127, 96, 0) border
padding: rgba(147, 196, 125, .55) overlay, rgb(55, 118, 28) border
content: rgba(111, 168, 220, .66) overlay, rgb(9, 83, 148) border</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452304</commentid>
    <comment_count>3</comment_count>
      <attachid>104180</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-17 09:54:05 -0700</bug_when>
    <thetext>Created attachment 104180
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452314</commentid>
    <comment_count>4</comment_count>
      <attachid>104186</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-17 10:05:24 -0700</bug_when>
    <thetext>Created attachment 104186
[PATCH] Altered hover backgrounds for the Metrics pane sections to follow the new highlight</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452317</commentid>
    <comment_count>5</comment_count>
      <attachid>104188</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-17 10:08:23 -0700</bug_when>
    <thetext>Created attachment 104188
[IMAGE] Screenshot of the new tooltip

The tooltip has received an arrow which moves to the left or right edge of the tooltip if the related element is beyond the left or right edge of the viewport, respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452321</commentid>
    <comment_count>6</comment_count>
      <attachid>104186</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 10:12:35 -0700</bug_when>
    <thetext>Comment on attachment 104186
[PATCH] Altered hover backgrounds for the Metrics pane sections to follow the new highlight

Attachment 104186 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9419027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452340</commentid>
    <comment_count>7</comment_count>
    <who name="lensco">lensco</who>
    <bug_when>2011-08-17 10:32:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; A Chromium UI guy suggests the following colors:
&gt; 
&gt; margin: rgba(246, 178, 107, .66) overlay, rgb(180, 95, 4) border
&gt; border: rgba(255, 229, 153, .66) overlay, rgb(127, 96, 0) border
&gt; padding: rgba(147, 196, 125, .55) overlay, rgb(55, 118, 28) border
&gt; content: rgba(111, 168, 220, .66) overlay, rgb(9, 83, 148) border

Still think the borders make it more confusing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452349</commentid>
    <comment_count>8</comment_count>
      <attachid>104191</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-17 10:44:51 -0700</bug_when>
    <thetext>Created attachment 104191
[PATCH] Compilability fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452378</commentid>
    <comment_count>9</comment_count>
      <attachid>104191</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-17 11:09:35 -0700</bug_when>
    <thetext>Comment on attachment 104191
[PATCH] Compilability fixed

Attachment 104191 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9404986</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452900</commentid>
    <comment_count>10</comment_count>
      <attachid>104312</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-18 01:04:58 -0700</bug_when>
    <thetext>Created attachment 104312
[PATCH] Global initializers fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>452917</commentid>
    <comment_count>11</comment_count>
      <attachid>104312</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-18 02:21:41 -0700</bug_when>
    <thetext>Comment on attachment 104312
[PATCH] Global initializers fix attempt

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

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:110
&gt; +    DEFINE_STATIC_LOCAL(Color, contentBoxColor, (111, 168, 220, 168));

Defining the {r:,g:,b:,a:} structure and passing it into highlightNode as
highlightNode({marginColor: {}, borderOutlineColor: {}, etc...)
highlightRect({color:, outlineColor})

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:243
&gt; +    if (!fixedFontFamily.isEmpty()) {

Consider extracting method

&gt; Source/WebCore/inspector/front-end/inspector.css:1892
&gt; +    background-color: rgba(246, 178, 107, .66);

You could set these from the JavaScript code (along with the highligthNode calls).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453753</commentid>
    <comment_count>12</comment_count>
      <attachid>104493</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-19 05:14:02 -0700</bug_when>
    <thetext>Created attachment 104493
[PATCH] Comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453782</commentid>
    <comment_count>13</comment_count>
      <attachid>104493</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 06:18:55 -0700</bug_when>
    <thetext>Comment on attachment 104493
[PATCH] Comments addressed

Attachment 104493 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9432243</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453794</commentid>
    <comment_count>14</comment_count>
      <attachid>104493</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-19 06:35:45 -0700</bug_when>
    <thetext>Comment on attachment 104493
[PATCH] Comments addressed

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

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:186
&gt; +        FontFamily* currFamily = 0;

currentFamily

&gt; Source/WebCore/inspector/DOMNodeHighlighter.h:42
&gt; +struct HighlightColors {

I&apos;d rather make it a struct with non-const fields.

&gt; Source/WebCore/inspector/DOMNodeHighlighter.h:73
&gt; +    const bool hasContent;

Why do you need these?

&gt; Source/WebCore/inspector/Inspector.json:1063
&gt; +                    { &quot;name&quot;: &quot;frameId&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;Identifier of the frame to highlight&quot; },

No need to highlight frame&apos;s box model, make it similar to rect.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:101
&gt; +Color parseColor(const RefPtr&lt;InspectorObject&gt;* color)

colorObject

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:114
&gt; +    bool success = (*color)-&gt;getNumber(red, &amp;r);

Just inline &quot;r&quot;

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:125
&gt; +    return Color(r, g, b, static_cast&lt;int&gt;(a * 255));

what if a == 5 ?

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1050
&gt; +void InspectorDOMAgent::highlightNode(ErrorString* error, int nodeId, const RefPtr&lt;InspectorObject&gt;* contentColor, const RefPtr&lt;InspectorObject&gt;* contentOutlineColor, const RefPtr&lt;InspectorObject&gt;* paddingColor, const RefPtr&lt;InspectorObject&gt;* paddingOutlineColor, const RefPtr&lt;InspectorObject&gt;* borderColor, const RefPtr&lt;InspectorObject&gt;* borderOutlineColor, const RefPtr&lt;InspectorObject&gt;* marginColor, const RefPtr&lt;InspectorObject&gt;* marginOutlineColor)

Could you format parameters as a column?

&gt; Source/WebCore/inspector/front-end/Color.js:171
&gt; +        if (&quot;_protocolRGBA&quot; in this)

this._protocolRGBA

&gt; Source/WebCore/inspector/front-end/Color.js:681
&gt; +    Content: new WebInspector.Color(&quot;rgba(111, 168, 220, .66)&quot;),

You should define these by components.

&gt; Source/WebCore/inspector/front-end/inspector.js:420
&gt; +            DOMAgent.highlightNode.apply(DOMAgent, highlightArgs);

Please use new DOMAgent.highlightNode.invoke({}) notation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453900</commentid>
    <comment_count>15</comment_count>
      <attachid>104519</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-19 10:14:26 -0700</bug_when>
    <thetext>Created attachment 104519
[PATCH] Comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453907</commentid>
    <comment_count>16</comment_count>
      <attachid>104519</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 10:22:39 -0700</bug_when>
    <thetext>Comment on attachment 104519
[PATCH] Comments addressed

Attachment 104519 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9438368</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453911</commentid>
    <comment_count>17</comment_count>
      <attachid>104522</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-19 10:28:55 -0700</bug_when>
    <thetext>Created attachment 104522
[PATCH] Compilability fixed for Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453953</commentid>
    <comment_count>18</comment_count>
      <attachid>104522</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-19 11:38:47 -0700</bug_when>
    <thetext>Comment on attachment 104522
[PATCH] Compilability fixed for Mac

Attachment 104522 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9432392</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454543</commentid>
    <comment_count>19</comment_count>
      <attachid>104665</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-22 05:59:27 -0700</bug_when>
    <thetext>Created attachment 104665
[PATCH] Simplified box model parts highlighting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454544</commentid>
    <comment_count>20</comment_count>
      <attachid>104665</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 06:02:57 -0700</bug_when>
    <thetext>Comment on attachment 104665
[PATCH] Simplified box model parts highlighting

Attachment 104665 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9461805</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454546</commentid>
    <comment_count>21</comment_count>
      <attachid>104665</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-22 06:03:46 -0700</bug_when>
    <thetext>Comment on attachment 104665
[PATCH] Simplified box model parts highlighting

Attachment 104665 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9466725</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454549</commentid>
    <comment_count>22</comment_count>
      <attachid>104665</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 06:06:41 -0700</bug_when>
    <thetext>Comment on attachment 104665
[PATCH] Simplified box model parts highlighting

Attachment 104665 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/9465746</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454550</commentid>
    <comment_count>23</comment_count>
      <attachid>104665</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-22 06:08:04 -0700</bug_when>
    <thetext>Comment on attachment 104665
[PATCH] Simplified box model parts highlighting

Attachment 104665 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9467716</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454551</commentid>
    <comment_count>24</comment_count>
      <attachid>104665</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-08-22 06:08:24 -0700</bug_when>
    <thetext>Comment on attachment 104665
[PATCH] Simplified box model parts highlighting

Attachment 104665 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9466727</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454587</commentid>
    <comment_count>25</comment_count>
      <attachid>104676</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-22 07:24:47 -0700</bug_when>
    <thetext>Created attachment 104676
[PATCH] Build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454588</commentid>
    <comment_count>26</comment_count>
      <attachid>104677</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-22 07:26:58 -0700</bug_when>
    <thetext>Created attachment 104677
[PATCH] Commented method removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454591</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-22 07:29:01 -0700</bug_when>
    <thetext>Attachment 104676 did not pass style-queue:

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

Source/WebCore/inspector/DOMNodeHighlighter.cpp:72:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/inspector/DOMNodeHighlighter.cpp:73:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/inspector/DOMNodeHighlighter.cpp:96:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455250</commentid>
    <comment_count>28</comment_count>
      <attachid>104677</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-23 01:40:58 -0700</bug_when>
    <thetext>Comment on attachment 104677
[PATCH] Commented method removed

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

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:119
&gt; +    if (hasBorder &amp;&amp; (!hasPadding || borderQuad != paddingQuad)) {

I&apos;d rather get rid of this logic.

&gt; Source/WebCore/inspector/Inspector.json:1064
&gt; +                    { &quot;name&quot;: &quot;showInfo&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Whether the node info tooltip should be shown.&quot; },

optional: true, false by default.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1089
&gt; +        m_highlightData = adoptPtr(new HighlightData());

Could you make node and rect belong to this data as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455389</commentid>
    <comment_count>29</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-23 06:50:31 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 104677 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104677&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:119
&gt; &gt; +    if (hasBorder &amp;&amp; (!hasPadding || borderQuad != paddingQuad)) {
&gt; 
&gt; I&apos;d rather get rid of this logic.

This is not so easy without having a separate highlighting mode, leaving as is for now, as discussed offline.

&gt; &gt; Source/WebCore/inspector/Inspector.json:1064
&gt; &gt; +                    { &quot;name&quot;: &quot;showInfo&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Whether the node info tooltip should be shown.&quot; },
&gt; 
&gt; optional: true, false by default.

Done.

&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1089
&gt; &gt; +        m_highlightData = adoptPtr(new HighlightData());
&gt; 
&gt; Could you make node and rect belong to this data as well?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455390</commentid>
    <comment_count>30</comment_count>
      <attachid>104840</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-23 06:51:18 -0700</bug_when>
    <thetext>Created attachment 104840
[PATCH] Protocol-related comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455393</commentid>
    <comment_count>31</comment_count>
      <attachid>104840</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-23 06:58:55 -0700</bug_when>
    <thetext>Comment on attachment 104840
[PATCH] Protocol-related comments addressed

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

&gt; Source/WebCore/inspector/Inspector.json:887
&gt; +                &quot;id&quot;: &quot;ElementHighlightConfig&quot;,

BOxHighlightConfig</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455401</commentid>
    <comment_count>32</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-23 07:39:18 -0700</bug_when>
    <thetext>Committed r93603: &lt;http://trac.webkit.org/changeset/93603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455418</commentid>
    <comment_count>33</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-23 08:33:39 -0700</bug_when>
    <thetext>Mac build fix by pfeldman: http://trac.webkit.org/changeset/93604</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458758</commentid>
    <comment_count>34</comment_count>
    <who name="Jon Rimmer">jon.rimmer</who>
    <bug_when>2011-08-30 01:06:27 -0700</bug_when>
    <thetext>From lensco&apos;s original bug report: &quot;Also, don&apos;t use borders for the highlight, they are very confusing&quot;

There are still borders around the highlights, even though they make zero sense. So I don&apos;t see how this bug is really resolved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459956</commentid>
    <comment_count>35</comment_count>
    <who name="Paul Irish">paulirish</who>
    <bug_when>2011-08-31 14:51:22 -0700</bug_when>
    <thetext>An additional request that I&apos;ve also received..

&gt;  visually show margins differently that have collapsed with other margins? Like maybe give the color a stripy pattern?

Possible? Desired?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460393</commentid>
    <comment_count>36</comment_count>
    <who name="lensco">lensco</who>
    <bug_when>2011-09-01 05:37:09 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; An additional request that I&apos;ve also received..
&gt; 
&gt; &gt;  visually show margins differently that have collapsed with other margins? Like maybe give the color a stripy pattern?
&gt; 
&gt; Possible? Desired?

If possible, a striped pattern might make a lot of sense, and will help people grasp the idea of collapsed margins.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104180</attachid>
            <date>2011-08-17 09:54:05 -0700</date>
            <delta_ts>2011-08-17 10:05:24 -0700</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>15236</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDk5ZDZlMGM5ODljNjdlNTk1ZGZhMzZmNjBlNjAxNzQzZDBlYzY3N2YKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBXZWQgQXVnIDEw
IDEzOjUwOjQ1IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y0OGFhMS4uZmQz
MzgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTA4LTE3ICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorCiAyMDExLTA4LTE3ICBTYWlsZXNoIEFn
cmF3YWwgIDxzYWlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bSBNYWM6IEZpeCBp
c3N1ZSB3aGVyZSBzY3JvbGxiYXIgd291bGRuJ3QgYmUgZHJhd24gdW50aWwgcGFnZSBmaW5pc2hl
ZCBsb2FkaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0
ZXIuY3BwCmluZGV4IDM5YmE4OWUuLjI4MTY3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCisjaW5jbHVkZSAiRm9udEZh
bWlseS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC00Nyw2ICs0OCwyOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKKyNkZWZpbmUgVE9PTFRJUF9GT05UX0ZBTUlMSUVTKHNp
emUsIC4uLikgXAorc3RhdGljIHVuc2lnbmVkIHRvb2x0aXBGb250RmFjZVNpemUgPSBzaXplO1wK
K3N0YXRpYyBTdHJpbmcgdG9vbHRpcEZvbnRGYWNlW10gPSB7IF9fVkFfQVJHU19fIH07CisKKyNp
ZiBPUyhXSU5ET1dTKQorVE9PTFRJUF9GT05UX0ZBTUlMSUVTKDIsIFN0cmluZygiQ29uc29sYXMi
KSwgU3RyaW5nKCJMdWNpZGEgQ29uc29sZSIpKQorI2VsaWYgT1MoVU5JWCkKK1RPT0xUSVBfRk9O
VF9GQU1JTElFUygxLCBTdHJpbmcoImRlamF2dSBzYW5zIG1vbm8iKSkKKyNlbGlmIE9TKE1BQ19P
U19YKQorVE9PTFRJUF9GT05UX0ZBTUlMSUVTKDIsIFN0cmluZygiTWVubG8iKSwgU3RyaW5nKCJN
b25hY28iKSkKKyNlbmRpZgorLy8gSW4gdGhlIGRlZmF1bHQgY2FzZSwgd2UgZ2V0IHRoZSBzZXR0
aW5ncy1wcm92aWRlZCBtb25vc3BhY2UgZm9udC4KKworY29uc3Qgc3RhdGljIGludCByZWN0SW5m
bGF0ZVB4ID0gNDsKK2NvbnN0IHN0YXRpYyBpbnQgZm9udEhlaWdodFB4ID0gMTI7Citjb25zdCBz
dGF0aWMgaW50IGJvcmRlcldpZHRoUHggPSAxOworY29uc3Qgc3RhdGljIGludCB0b29sdGlwUGFk
ZGluZyA9IDQ7CisKK2NvbnN0IHN0YXRpYyBpbnQgYXJyb3dUaXBPZmZzZXQgPSAyMDsKK2NvbnN0
IHN0YXRpYyBpbnQgYXJyb3dIZWlnaHQgPSA3OworY29uc3Qgc3RhdGljIGludCBhcnJvd0hhbGZX
aWR0aCA9IDc7CisKIFBhdGggcXVhZFRvUGF0aChjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiB7CiAg
ICAgUGF0aCBxdWFkUGF0aDsKQEAgLTU4LDEwICs4MSw5IEBAIFBhdGggcXVhZFRvUGF0aChjb25z
dCBGbG9hdFF1YWQmIHF1YWQpCiAgICAgcmV0dXJuIHF1YWRQYXRoOwogfQogCi12b2lkIGRyYXdP
dXRsaW5lZFF1YWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1
YWQsIGNvbnN0IENvbG9yJiBmaWxsQ29sb3IpCit2b2lkIGRyYXdPdXRsaW5lZFF1YWQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IENvbG9yJiBm
aWxsQ29sb3IsIGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IpCiB7CiAgICAgc3RhdGljIGNvbnN0
IGludCBvdXRsaW5lVGhpY2tuZXNzID0gMjsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3Igb3V0bGlu
ZUNvbG9yKDYyLCA4NiwgMTgwLCAyMjgpOwogCiAgICAgUGF0aCBxdWFkUGF0aCA9IHF1YWRUb1Bh
dGgocXVhZCk7CiAKQEAgLTgzLDQ3ICsxMDUsNTMgQEAgdm9pZCBkcmF3T3V0bGluZWRRdWFkKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBDb2wK
ICAgICBjb250ZXh0LmZpbGxQYXRoKHF1YWRQYXRoKTsKIH0KIAotdm9pZCBkcmF3T3V0bGluZWRR
dWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1
YWQsIGNvbnN0IEZsb2F0UXVhZCYgY2xpcFF1YWQsIGNvbnN0IENvbG9yJiBmaWxsQ29sb3IpCit2
b2lkIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgRmxvYXRRdWFkJiBjbGlwUXVhZCwgY29uc3QgQ29s
b3ImIGZpbGxDb2xvciwgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcikKIHsKICAgICBjb250ZXh0
LnNhdmUoKTsKICAgICBQYXRoIGNsaXBRdWFkUGF0aCA9IHF1YWRUb1BhdGgoY2xpcFF1YWQpOwog
ICAgIGNvbnRleHQuY2xpcE91dChjbGlwUXVhZFBhdGgpOwotICAgIGRyYXdPdXRsaW5lZFF1YWQo
Y29udGV4dCwgcXVhZCwgZmlsbENvbG9yKTsKKyAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQs
IHF1YWQsIGZpbGxDb2xvciwgb3V0bGluZUNvbG9yKTsKICAgICBjb250ZXh0LnJlc3RvcmUoKTsK
IH0KIAogdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRRdWFkJiBjb250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVh
ZCwgY29uc3QgRmxvYXRRdWFkJiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1
YWQsIERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0TW9kZSBtb2RlKQogewotICAgIHN0YXRp
YyBjb25zdCBDb2xvciBjb250ZW50Qm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTI4KTsKLSAgICBz
dGF0aWMgY29uc3QgQ29sb3IgcGFkZGluZ0JveENvbG9yKDEyNSwgMTczLCAyMTcsIDE2MCk7Ci0g
ICAgc3RhdGljIGNvbnN0IENvbG9yIGJvcmRlckJveENvbG9yKDEyNSwgMTczLCAyMTcsIDE5Mik7
Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIG1hcmdpbkJveENvbG9yKDEyNSwgMTczLCAyMTcsIDIy
OCk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgY29udGVudEJveENvbG9yLCAoMTEx
LCAxNjgsIDIyMCwgMTY4KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgcGFkZGlu
Z0JveENvbG9yLCAoMTQ3LCAxOTYsIDEyNSwgMTI4KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDb2xvciwgYm9yZGVyQm94Q29sb3IsICgyNTUsIDIyOSwgMTUzLCAxNjgpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKENvbG9yLCBtYXJnaW5Cb3hDb2xvciwgKDI0NiwgMTc4LCAxMDcsIDE2
OCkpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgY29udGVudE91dGxpbmVDb2xv
ciwgKDksIDgzLCAxNDgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBwYWRkaW5n
T3V0bGluZUNvbG9yLCAoNTUsIDExOCwgMjgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENv
bG9yLCBib3JkZXJPdXRsaW5lQ29sb3IsICgxMjcsIDk2LCAwKSk7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDb2xvciwgbWFyZ2luT3V0bGluZUNvbG9yLCAoMTgwLCA5NSwgNCkpOwogCiAgICAg
RmxvYXRRdWFkIGNsaXBRdWFkOwogICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6
SGlnaGxpZ2h0TWFyZ2luIHx8IChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0
QWxsICYmIG1hcmdpblF1YWQgIT0gYm9yZGVyUXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxpbmVk
UXVhZFdpdGhDbGlwKGNvbnRleHQsIG1hcmdpblF1YWQsIGJvcmRlclF1YWQsIG1hcmdpbkJveENv
bG9yKTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIG1hcmdpblF1
YWQsIGJvcmRlclF1YWQsIG1hcmdpbkJveENvbG9yLCBtYXJnaW5PdXRsaW5lQ29sb3IpOwogICAg
ICAgICBjbGlwUXVhZCA9IGJvcmRlclF1YWQ7CiAgICAgfQogICAgIGlmIChtb2RlID09IERPTU5v
ZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0Qm9yZGVyIHx8IChtb2RlID09IERPTU5vZGVIaWdobGln
aHRlcjo6SGlnaGxpZ2h0QWxsICYmIGJvcmRlclF1YWQgIT0gcGFkZGluZ1F1YWQpKSB7Ci0gICAg
ICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBib3JkZXJRdWFkLCBwYWRkaW5n
UXVhZCwgYm9yZGVyQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAo
Y29udGV4dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGJvcmRlckJveENvbG9yLCBib3JkZXJP
dXRsaW5lQ29sb3IpOwogICAgICAgICBjbGlwUXVhZCA9IHBhZGRpbmdRdWFkOwogICAgIH0KICAg
ICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodFBhZGRpbmcgfHwgKG1v
ZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgcGFkZGluZ1F1YWQgIT0g
Y29udGVudFF1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0
LCBwYWRkaW5nUXVhZCwgY29udGVudFF1YWQsIHBhZGRpbmdCb3hDb2xvcik7CisgICAgICAgIGRy
YXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1YWQs
IHBhZGRpbmdCb3hDb2xvciwgcGFkZGluZ091dGxpbmVDb2xvcik7CiAgICAgICAgIGNsaXBRdWFk
ID0gY29udGVudFF1YWQ7CiAgICAgfQogICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGlnaHRl
cjo6SGlnaGxpZ2h0Q29udGVudCB8fCBtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxp
Z2h0QWxsKQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGNvbnRlbnRRdWFkLCBj
b250ZW50Qm94Q29sb3IpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGNvbnRl
bnRRdWFkLCBjb250ZW50Qm94Q29sb3IsIGNvbnRlbnRPdXRsaW5lQ29sb3IpOwogICAgIGVsc2UK
LSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGNsaXBRdWFkLCBjbGlw
UXVhZCwgY29udGVudEJveENvbG9yKTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlw
KGNvbnRleHQsIGNsaXBRdWFkLCBjbGlwUXVhZCwgY29udGVudEJveENvbG9yLCBjb250ZW50T3V0
bGluZUNvbG9yKTsKIH0KIAogdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5k
ZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBs
aW5lQm94UXVhZHMpCiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGxpbmVCb3hDb2xvcigxMjUs
IDE3MywgMjE3LCAxMjgpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGxpbmVCb3hD
b2xvciwgKDExMSwgMTY4LCAyMjAsIDE2OCkpOyAvLyBTYW1lIGFzIGNvbnRlbnRCb3hDb2xvci4K
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBsaW5lQm94T3V0bGluZUNvbG9yLCAoOSwg
ODMsIDE0OCkpOyAvLyBTYW1lIGFzIGNvbnRlbnRPdXRsaW5lQ29sb3IuCiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxpbmVCb3hRdWFkcy5zaXplKCk7ICsraSkKLSAgICAgICAgZHJhd091
dGxpbmVkUXVhZChjb250ZXh0LCBsaW5lQm94UXVhZHNbaV0sIGxpbmVCb3hDb2xvcik7CisgICAg
ICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgbGluZUJveFF1YWRzW2ldLCBsaW5lQm94Q29s
b3IsIGxpbmVCb3hPdXRsaW5lQ29sb3IpOwogfQogCiBpbmxpbmUgSW50U2l6ZSBmcmFtZVRvTWFp
bkZyYW1lT2Zmc2V0KEZyYW1lKiBmcmFtZSkKQEAgLTEzMiw1MCArMTYwLDEwOCBAQCBpbmxpbmUg
SW50U2l6ZSBmcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4g
bWFpbkZyYW1lUG9pbnQgLSBJbnRQb2ludCgpOwogfQogCitpbnQgZHJhd1N1YnN0cmluZyhjb25z
dCBUZXh0UnVuJiBnbG9iYWxUZXh0UnVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLCBjb25zdCBD
b2xvciYgdGV4dENvbG9yLCBjb25zdCBGb250JiBmb250LCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEludFBvaW50JiB0aXRsZUJhc2VQb2ludCwgaW50IGZvbnRIZWlnaHRQeCwgY29u
c3QgSW50UmVjdCYgdGl0bGVSZWN0KQoreworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRD
b2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBn
bG9iYWxUZXh0UnVuLCBJbnRQb2ludCh0aXRsZVJlY3QueCgpICsgcmVjdEluZmxhdGVQeCwgdGl0
bGVSZWN0LnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSksIG9mZnNldCwgb2Zmc2V0
ICsgbGVuZ3RoKTsKKyAgICByZXR1cm4gb2Zmc2V0ICsgbGVuZ3RoOworfQorCitpbnQgY2FsY3Vs
YXRlQXJyb3dUaXBYKGNvbnN0IEludFJlY3QmIGFuY2hvckJveCwgY29uc3QgSW50UmVjdCYgdGl0
bGVSZWN0KQoreworICAgIGludCBhbmNob3JYID0gYW5jaG9yQm94LngoKTsKKworICAgIC8vIENo
ZWNrIGZvciBoZWF2aWx5IG1pc2FsaWduZWQgdG9vbHRpcCBmaXJzdC4KKyAgICBpZiAodGl0bGVS
ZWN0LngoKSA+IGFuY2hvckJveC5tYXhYKCkpCisgICAgICAgIHJldHVybiB0aXRsZVJlY3QueCgp
ICsgYXJyb3dIYWxmV2lkdGg7CisKKyAgICBpZiAodGl0bGVSZWN0Lm1heFgoKSA8IGFuY2hvclgp
CisgICAgICAgIHJldHVybiB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGg7CisKKyAg
ICBpbnQgeCA9IHRpdGxlUmVjdC54KCkgKyBhcnJvd1RpcE9mZnNldDsKKyAgICBpZiAoeCA8IGFu
Y2hvclgpCisgICAgICAgIHggPSBhbmNob3JYICsgYXJyb3dUaXBPZmZzZXQ7CisgICAgaWYgKHgg
PiB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGgpCisgICAgICAgIHggPSB0aXRsZVJl
Y3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGg7CisKKyAgICByZXR1cm4geDsKK30KKwogdm9pZCBk
cmF3RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgY29u
c3QgSW50UmVjdCYgYm91bmRpbmdCb3gsIGNvbnN0IEludFJlY3QmIGFuY2hvckJveCwgY29uc3Qg
RmxvYXRSZWN0JiBvdmVybGF5UmVjdCwgV2ViQ29yZTo6U2V0dGluZ3MqIHNldHRpbmdzKQogewot
ICAgIHN0YXRpYyBjb25zdCBpbnQgcmVjdEluZmxhdGVQeCA9IDQ7Ci0gICAgc3RhdGljIGNvbnN0
IGludCBmb250SGVpZ2h0UHggPSAxMjsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlcldpZHRo
UHggPSAxOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRvb2x0aXBCYWNrZ3JvdW5k
Q29sb3IsICgyNTUsIDI1NSwgMTk0LCAyNTUpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENv
bG9yLCB0b29sdGlwQm9yZGVyQ29sb3IsIChDb2xvcjo6YmxhY2spKTsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENvbG9yLCB0b29sdGlwRm9udENvbG9yLCAoQ29sb3I6OmJsYWNrKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgYmFja2dyb3VuZENvbG9yLCAoMjU1LCAyNTUsIDE5
NCwgMjU1KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdGFnQ29sb3IsICgxMzYs
IDE4LCAxMjgpKTsgLy8gU2FtZSBhcyAud2Via2l0LWh0bWwtdGFnLgorICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ29sb3IsIGF0dHJDb2xvciwgKDI2LCAyNiwgMTY2KSk7IC8vIFNhbWUgYXMgLndl
YmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZS4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9y
LCBub3JtYWxDb2xvciwgKENvbG9yOjpibGFjaykpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q29sb3IsIHB4QW5kQm9yZGVyQ29sb3IsICgxMjgsIDEyOCwgMTI4KSk7CisKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgcHhTdHJpbmcsICgicHgiKSk7CisgICAgY29uc3Qgc3RhdGlj
IFVDaGFyIHRpbWVzVUNoYXJbXSA9IHsgMHgwMEQ3LCAwIH07CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHRpbWVzU3RyaW5nLCAodGltZXNVQ2hhcikpOyAvLyAmdGltZXM7IHN0cmlu
ZworCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENhY2hlUHVyZ2VQcmV2ZW50ZXI7
CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwog
ICAgIGJvb2wgaXNYSFRNTCA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmlzWEhUTUxEb2N1bWVudCgp
OwotICAgIFN0cmluZyBub2RlVGl0bGUgPSBpc1hIVE1MID8gZWxlbWVudC0+bm9kZU5hbWUoKSA6
IGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKTsKKyAgICBTdHJpbmcgbm9kZVRpdGxlKGlzWEhU
TUwgPyBlbGVtZW50LT5ub2RlTmFtZSgpIDogZWxlbWVudC0+bm9kZU5hbWUoKS5sb3dlcigpKTsK
KyAgICB1bnNpZ25lZCB0YWdOYW1lTGVuZ3RoID0gbm9kZVRpdGxlLmxlbmd0aCgpOworCiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsK
KyAgICB1bnNpZ25lZCBpZFN0cmluZ0xlbmd0aCA9IDA7CisgICAgU3RyaW5nIGlkU3RyaW5nOwog
ICAgIGlmICghaWRWYWx1ZS5pc051bGwoKSAmJiAhaWRWYWx1ZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgbm9kZVRpdGxlICs9ICIjIjsKICAgICAgICAgbm9kZVRpdGxlICs9IGlkVmFsdWU7CisgICAg
ICAgIGlkU3RyaW5nTGVuZ3RoID0gMSArIGlkVmFsdWUubGVuZ3RoKCk7CiAgICAgfQorCisgICAg
SGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOworICAgIHVuc2lnbmVkIGNsYXNz
ZXNTdHJpbmdMZW5ndGggPSAwOwogICAgIGlmIChlbGVtZW50LT5oYXNDbGFzcygpICYmIGVsZW1l
bnQtPmlzU3R5bGVkRWxlbWVudCgpKSB7CiAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcm
IGNsYXNzTmFtZXNTdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCkt
PmNsYXNzTmFtZXMoKTsKICAgICAgICAgc2l6ZV90IGNsYXNzTmFtZUNvdW50ID0gY2xhc3NOYW1l
c1N0cmluZy5zaXplKCk7Ci0gICAgICAgIGlmIChjbGFzc05hbWVDb3VudCkgewotICAgICAgICAg
ICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOwotICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjbGFzc05hbWVDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBjbGFzc05hbWVzU3RyaW5nW2ldOwot
ICAgICAgICAgICAgICAgIGlmICh1c2VkQ2xhc3NOYW1lcy5jb250YWlucyhjbGFzc05hbWUpKQot
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB1c2VkQ2xhc3NO
YW1lcy5hZGQoY2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICBub2RlVGl0bGUgKz0gIi4iOwot
ICAgICAgICAgICAgICAgIG5vZGVUaXRsZSArPSBjbGFzc05hbWU7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1lQ291bnQ7ICsraSkgeworICAg
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBjbGFzc05hbWVzU3RyaW5n
W2ldOworICAgICAgICAgICAgaWYgKHVzZWRDbGFzc05hbWVzLmNvbnRhaW5zKGNsYXNzTmFtZSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB1c2VkQ2xhc3NOYW1lcy5h
ZGQoY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIG5vZGVUaXRsZSArPSAiLiI7CisgICAgICAgICAg
ICBub2RlVGl0bGUgKz0gY2xhc3NOYW1lOworICAgICAgICAgICAgY2xhc3Nlc1N0cmluZ0xlbmd0
aCArPSAxICsgY2xhc3NOYW1lLmxlbmd0aCgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbm9k
ZVRpdGxlICs9ICIgWyI7Ci0gICAgbm9kZVRpdGxlICs9IFN0cmluZzo6bnVtYmVyKGJvdW5kaW5n
Qm94LndpZHRoKCkpOwotICAgIG5vZGVUaXRsZS5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KDB4
MDBENykpOyAvLyAmdGltZXM7Ci0gICAgbm9kZVRpdGxlICs9IFN0cmluZzo6bnVtYmVyKGJvdW5k
aW5nQm94LmhlaWdodCgpKTsKLSAgICBub2RlVGl0bGUgKz0gIl0iOworICAgIFN0cmluZyB3aWR0
aE51bWJlclBhcnQgPSAiICIgKyBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC53aWR0aCgpKTsK
KyAgICBub2RlVGl0bGUgKz0gd2lkdGhOdW1iZXJQYXJ0ICsgcHhTdHJpbmc7CisgICAgbm9kZVRp
dGxlICs9IHRpbWVzU3RyaW5nOyAvLyAmdGltZXM7IHN1cnJvdW5kZWQgYnkgc3BhY2VzCisgICAg
U3RyaW5nIGhlaWdodE51bWJlclBhcnQgPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC5oZWln
aHQoKSk7CisgICAgbm9kZVRpdGxlICs9IGhlaWdodE51bWJlclBhcnQgKyBweFN0cmluZzsKIAog
ICAgIEZvbnREZXNjcmlwdGlvbiBkZXNjOwotICAgIEZvbnRGYW1pbHkgZmFtaWx5OwotICAgIGZh
bWlseS5zZXRGYW1pbHkoc2V0dGluZ3MtPmZpeGVkRm9udEZhbWlseSgpKTsKLSAgICBkZXNjLnNl
dEZhbWlseShmYW1pbHkpOworICAgIGRlc2Muc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9u
dFJlbmRlcmluZ01vZGUoKSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmaXhlZEZvbnRGYW1p
bHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KCk7CisgICAgaWYgKCFmaXhlZEZvbnRGYW1p
bHkuaXNFbXB0eSgpKSB7CisgICAgICAgIGRlc2Muc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3Jp
cHRpb246Ok1vbm9zcGFjZUZhbWlseSk7CisgICAgICAgIEF0b21pY1N0cmluZyBmYWNlOworICAg
ICAgICBGb250RmFtaWx5KiBjdXJyRmFtaWx5ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHRvb2x0aXBGb250RmFjZVNpemU7ICsraSkgeworICAgICAgICAgICAgZmFjZSA9
IEF0b21pY1N0cmluZyh0b29sdGlwRm9udEZhY2VbaV0pOworICAgICAgICAgICAgaWYgKCFjdXJy
RmFtaWx5KSB7CisgICAgICAgICAgICAgICAgZGVzYy5maXJzdEZhbWlseSgpLnNldEZhbWlseShm
YWNlKTsKKyAgICAgICAgICAgICAgICBkZXNjLmZpcnN0RmFtaWx5KCkuYXBwZW5kRmFtaWx5KDAp
OworICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSAmZGVzYy5maXJzdEZhbWlseSgpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkRm9udEZhbWls
eT4gbmV3RmFtaWx5ID0gU2hhcmVkRm9udEZhbWlseTo6Y3JlYXRlKCk7CisgICAgICAgICAgICAg
ICAgbmV3RmFtaWx5LT5zZXRGYW1pbHkoZmFjZSk7CisgICAgICAgICAgICAgICAgY3VyckZhbWls
eS0+YXBwZW5kRmFtaWx5KG5ld0ZhbWlseSk7CisgICAgICAgICAgICAgICAgY3VyckZhbWlseSA9
IG5ld0ZhbWlseS5nZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBSZWZQ
dHI8U2hhcmVkRm9udEZhbWlseT4gbmV3RmFtaWx5ID0gU2hhcmVkRm9udEZhbWlseTo6Y3JlYXRl
KCk7CisgICAgICAgIG5ld0ZhbWlseS0+c2V0RmFtaWx5KGZpeGVkRm9udEZhbWlseSk7CisgICAg
ICAgIGN1cnJGYW1pbHktPmFwcGVuZEZhbWlseShuZXdGYW1pbHkpOworICAgICAgICBjdXJyRmFt
aWx5ID0gbmV3RmFtaWx5LmdldCgpOworICAgIH0KICAgICBkZXNjLnNldENvbXB1dGVkU2l6ZShm
b250SGVpZ2h0UHgpOwogICAgIEZvbnQgZm9udCA9IEZvbnQoZGVzYywgMCwgMCk7CiAgICAgZm9u
dC51cGRhdGUoMCk7CkBAIC0yMTEsMTIgKzI5Nyw0MiBAQCB2b2lkIGRyYXdFbGVtZW50VGl0bGUo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBjb25zdCBJbnRSZWN0JiBib3Vu
ZAogICAgICAgICBkeSA9IG92ZXJsYXlSZWN0LnkoKSAtIHRpdGxlUmVjdC55KCkgKyBib3JkZXJX
aWR0aFB4OwogCiAgICAgdGl0bGVSZWN0Lm1vdmUoZHgsIGR5KTsKLSAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKHRvb2x0aXBCb3JkZXJDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAg
ICBib29sIGlzQXJyb3dBdFRvcCA9IHRpdGxlUmVjdC55KCkgPiBhbmNob3JCb3gueSgpOworICAg
IHRpdGxlUmVjdC5tb3ZlKDAsIHRvb2x0aXBQYWRkaW5nICogKGlzQXJyb3dBdFRvcCA/IDEgOiAt
MSkpOworCisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihweEFuZEJvcmRlckNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhib3JkZXJX
aWR0aFB4KTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0b29sdGlwQmFja2dyb3VuZENvbG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3Jv
dW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGNvbnRleHQuZHJhd1JlY3QodGl0
bGVSZWN0KTsKLSAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0b29sdGlwRm9udENvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIG5vZGVUaXRsZVJ1
biwgSW50UG9pbnQodGl0bGVSZWN0LngoKSArIHJlY3RJbmZsYXRlUHgsIHRpdGxlUmVjdC55KCkg
KyBmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpKTsKKworICAgIHsKKyAgICAgICAgaW50IGFy
cm93VGlwWCA9IGNhbGN1bGF0ZUFycm93VGlwWChhbmNob3JCb3gsIHRpdGxlUmVjdCk7CisgICAg
ICAgIEZsb2F0UG9pbnQgYXJyb3dQb2ludHNbM107CisgICAgICAgIGZsb2F0IGFycm93QmFzZVkg
PSBpc0Fycm93QXRUb3AgPyB0aXRsZVJlY3QueSgpIDogdGl0bGVSZWN0Lm1heFkoKTsKKyAgICAg
ICAgYXJyb3dQb2ludHNbMF0gPSBGbG9hdFBvaW50KGFycm93VGlwWCAtIGFycm93SGFsZldpZHRo
LCBhcnJvd0Jhc2VZKTsKKyAgICAgICAgYXJyb3dQb2ludHNbMV0gPSBGbG9hdFBvaW50KGFycm93
VGlwWCwgYXJyb3dCYXNlWSArIGFycm93SGVpZ2h0ICogKGlzQXJyb3dBdFRvcCA/IC0xIDogMSkp
OworICAgICAgICBhcnJvd1BvaW50c1syXSA9IEZsb2F0UG9pbnQoYXJyb3dUaXBYICsgYXJyb3dI
YWxmV2lkdGgsIGFycm93QmFzZVkpOworICAgICAgICBjb250ZXh0LmRyYXdDb252ZXhQb2x5Z29u
KDMsIGFycm93UG9pbnRzKTsKKworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGJhY2tn
cm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGJvcmRlcldpZHRoUHggKyAxKTsKKyAgICAgICAgSW50
UG9pbnQgc3RhcnRQb2ludCA9IEludFBvaW50KGFycm93UG9pbnRzWzBdLngoKSArIDEsIGFycm93
UG9pbnRzWzBdLnkoKSk7CisgICAgICAgIEludFBvaW50IGVuZFBvaW50ID0gSW50UG9pbnQoYXJy
b3dQb2ludHNbMl0ueCgpIC0gMSwgYXJyb3dQb2ludHNbMl0ueSgpKTsKKyAgICAgICAgY29udGV4
dC5kcmF3TGluZShzdGFydFBvaW50LCBlbmRQb2ludCk7CisgICAgfQorCisgICAgaW50IGN1cnJl
bnRQb3MgPSAwOworICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1biwg
Y3VycmVudFBvcywgdGFnTmFtZUxlbmd0aCwgdGFnQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxl
QmFzZVBvaW50LCBmb250SGVpZ2h0UHgsIHRpdGxlUmVjdCk7CisgICAgaWYgKGlkU3RyaW5nTGVu
Z3RoKQorICAgICAgICBjdXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1
cnJlbnRQb3MsIGlkU3RyaW5nTGVuZ3RoLCBhdHRyQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxl
QmFzZVBvaW50LCBmb250SGVpZ2h0UHgsIHRpdGxlUmVjdCk7CisgICAgaWYgKGNsYXNzZXNTdHJp
bmdMZW5ndGgpCisgICAgICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1
biwgY3VycmVudFBvcywgY2xhc3Nlc1N0cmluZ0xlbmd0aCwgYXR0ckNvbG9yLCBmb250LCBjb250
ZXh0LCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4LCB0aXRsZVJlY3QpOworICAgIGN1cnJl
bnRQb3MgPSBkcmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgd2lkdGhOdW1i
ZXJQYXJ0Lmxlbmd0aCgpLCBub3JtYWxDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVCYXNlUG9p
bnQsIGZvbnRIZWlnaHRQeCwgdGl0bGVSZWN0KTsKKyAgICBjdXJyZW50UG9zID0gZHJhd1N1YnN0
cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHB4U3RyaW5nLmxlbmd0aCgpICsgdGltZXNT
dHJpbmcubGVuZ3RoKCksIHB4QW5kQm9yZGVyQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlQmFz
ZVBvaW50LCBmb250SGVpZ2h0UHgsIHRpdGxlUmVjdCk7CisgICAgY3VycmVudFBvcyA9IGRyYXdT
dWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBoZWlnaHROdW1iZXJQYXJ0Lmxlbmd0
aCgpLCBub3JtYWxDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVCYXNlUG9pbnQsIGZvbnRIZWln
aHRQeCwgdGl0bGVSZWN0KTsKKyAgICBkcmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1biwgY3VycmVu
dFBvcywgcHhTdHJpbmcubGVuZ3RoKCksIHB4QW5kQm9yZGVyQ29sb3IsIGZvbnQsIGNvbnRleHQs
IHRpdGxlQmFzZVBvaW50LCBmb250SGVpZ2h0UHgsIHRpdGxlUmVjdCk7CiB9CiAKIH0gLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104186</attachid>
            <date>2011-08-17 10:05:24 -0700</date>
            <delta_ts>2011-08-17 10:44:51 -0700</delta_ts>
            <desc>[PATCH] Altered hover backgrounds for the Metrics pane sections to follow the new highlight</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>16571</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGNmMzVhNmQ0OTI5MTU3MGVjMjgyYjllNmNlNzQxMGU2NDhhNzIxM2UKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBXZWQgQXVnIDEw
IDEzOjUwOjQ1IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y0OGFhMS4uZjNk
MzFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA4LTE3ICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5tZXRyaWNzIC5tYXJnaW4uaG92ZXJlZCk6
CisgICAgICAgICgubWV0cmljcyAuYm9yZGVyLmhvdmVyZWQpOgorICAgICAgICAoLm1ldHJpY3Mg
LnBhZGRpbmcuaG92ZXJlZCk6CisgICAgICAgICgubWV0cmljcyAuY29udGVudC5ob3ZlcmVkKToK
KwogMjAxMS0wOC0xNyAgU2FpbGVzaCBBZ3Jhd2FsICA8c2FpbEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQ2hyb21pdW0gTWFjOiBGaXggaXNzdWUgd2hlcmUgc2Nyb2xsYmFyIHdvdWxkbid0IGJl
IGRyYXduIHVudGlsIHBhZ2UgZmluaXNoZWQgbG9hZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAzOWJhODllLi4yODE2N2YyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZvbnRD
YWNoZS5oIgorI2luY2x1ZGUgIkZvbnRGYW1pbHkuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDcs
NiArNDgsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogCisjZGVmaW5l
IFRPT0xUSVBfRk9OVF9GQU1JTElFUyhzaXplLCAuLi4pIFwKK3N0YXRpYyB1bnNpZ25lZCB0b29s
dGlwRm9udEZhY2VTaXplID0gc2l6ZTtcCitzdGF0aWMgU3RyaW5nIHRvb2x0aXBGb250RmFjZVtd
ID0geyBfX1ZBX0FSR1NfXyB9OworCisjaWYgT1MoV0lORE9XUykKK1RPT0xUSVBfRk9OVF9GQU1J
TElFUygyLCBTdHJpbmcoIkNvbnNvbGFzIiksIFN0cmluZygiTHVjaWRhIENvbnNvbGUiKSkKKyNl
bGlmIE9TKFVOSVgpCitUT09MVElQX0ZPTlRfRkFNSUxJRVMoMSwgU3RyaW5nKCJkZWphdnUgc2Fu
cyBtb25vIikpCisjZWxpZiBPUyhNQUNfT1NfWCkKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygyLCBT
dHJpbmcoIk1lbmxvIiksIFN0cmluZygiTW9uYWNvIikpCisjZW5kaWYKKy8vIEluIHRoZSBkZWZh
dWx0IGNhc2UsIHdlIGdldCB0aGUgc2V0dGluZ3MtcHJvdmlkZWQgbW9ub3NwYWNlIGZvbnQuCisK
K2NvbnN0IHN0YXRpYyBpbnQgcmVjdEluZmxhdGVQeCA9IDQ7Citjb25zdCBzdGF0aWMgaW50IGZv
bnRIZWlnaHRQeCA9IDEyOworY29uc3Qgc3RhdGljIGludCBib3JkZXJXaWR0aFB4ID0gMTsKK2Nv
bnN0IHN0YXRpYyBpbnQgdG9vbHRpcFBhZGRpbmcgPSA0OworCitjb25zdCBzdGF0aWMgaW50IGFy
cm93VGlwT2Zmc2V0ID0gMjA7Citjb25zdCBzdGF0aWMgaW50IGFycm93SGVpZ2h0ID0gNzsKK2Nv
bnN0IHN0YXRpYyBpbnQgYXJyb3dIYWxmV2lkdGggPSA3OworCiBQYXRoIHF1YWRUb1BhdGgoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKQogewogICAgIFBhdGggcXVhZFBhdGg7CkBAIC01OCwxMCArODEs
OSBAQCBQYXRoIHF1YWRUb1BhdGgoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogICAgIHJldHVybiBx
dWFkUGF0aDsKIH0KIAotdm9pZCBkcmF3T3V0bGluZWRRdWFkKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBDb2xvciYgZmlsbENvbG9yKQordm9p
ZCBkcmF3T3V0bGluZWRRdWFkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRR
dWFkJiBxdWFkLCBjb25zdCBDb2xvciYgZmlsbENvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNv
bG9yKQogewogICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVRoaWNrbmVzcyA9IDI7Ci0gICAg
c3RhdGljIGNvbnN0IENvbG9yIG91dGxpbmVDb2xvcig2MiwgODYsIDE4MCwgMjI4KTsKIAogICAg
IFBhdGggcXVhZFBhdGggPSBxdWFkVG9QYXRoKHF1YWQpOwogCkBAIC04Myw0NyArMTA1LDUzIEBA
IHZvaWQgZHJhd091dGxpbmVkUXVhZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UXVhZCYgcXVhZCwgY29uc3QgQ29sCiAgICAgY29udGV4dC5maWxsUGF0aChxdWFkUGF0aCk7
CiB9CiAKLXZvaWQgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBGbG9hdFF1YWQmIGNsaXBRdWFkLCBj
b25zdCBDb2xvciYgZmlsbENvbG9yKQordm9pZCBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEZsb2F0
UXVhZCYgY2xpcFF1YWQsIGNvbnN0IENvbG9yJiBmaWxsQ29sb3IsIGNvbnN0IENvbG9yJiBvdXRs
aW5lQ29sb3IpCiB7CiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgUGF0aCBjbGlwUXVhZFBhdGgg
PSBxdWFkVG9QYXRoKGNsaXBRdWFkKTsKICAgICBjb250ZXh0LmNsaXBPdXQoY2xpcFF1YWRQYXRo
KTsKLSAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIHF1YWQsIGZpbGxDb2xvcik7CisgICAg
ZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBxdWFkLCBmaWxsQ29sb3IsIG91dGxpbmVDb2xvcik7
CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgZHJhd0hpZ2hsaWdodEZvckJveChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVudFF1YWQsIGNv
bnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9yZGVyUXVhZCwg
Y29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdo
dE1vZGUgbW9kZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgY29udGVudEJveENvbG9yKDEy
NSwgMTczLCAyMTcsIDEyOCk7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIHBhZGRpbmdCb3hDb2xv
cigxMjUsIDE3MywgMjE3LCAxNjApOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBib3JkZXJCb3hD
b2xvcigxMjUsIDE3MywgMjE3LCAxOTIpOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBtYXJnaW5C
b3hDb2xvcigxMjUsIDE3MywgMjE3LCAyMjgpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29s
b3IsIGNvbnRlbnRCb3hDb2xvciwgKDExMSwgMTY4LCAyMjAsIDE2OCkpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ29sb3IsIHBhZGRpbmdCb3hDb2xvciwgKDE0NywgMTk2LCAxMjUsIDEyOCkp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGJvcmRlckJveENvbG9yLCAoMjU1LCAy
MjksIDE1MywgMTY4KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgbWFyZ2luQm94
Q29sb3IsICgyNDYsIDE3OCwgMTA3LCAxNjgpKTsKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q29sb3IsIGNvbnRlbnRPdXRsaW5lQ29sb3IsICg5LCA4MywgMTQ4KSk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDb2xvciwgcGFkZGluZ091dGxpbmVDb2xvciwgKDU1LCAxMTgsIDI4KSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgYm9yZGVyT3V0bGluZUNvbG9yLCAoMTI3LCA5
NiwgMCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIG1hcmdpbk91dGxpbmVDb2xv
ciwgKDE4MCwgOTUsIDQpKTsKIAogICAgIEZsb2F0UXVhZCBjbGlwUXVhZDsKICAgICBpZiAobW9k
ZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1hcmdpbiB8fCAobW9kZSA9PSBET01O
b2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCAmJiBtYXJnaW5RdWFkICE9IGJvcmRlclF1YWQp
KSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFk
LCBib3JkZXJRdWFkLCBtYXJnaW5Cb3hDb2xvcik7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRX
aXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBtYXJnaW5Cb3hDb2xvciwg
bWFyZ2luT3V0bGluZUNvbG9yKTsKICAgICAgICAgY2xpcFF1YWQgPSBib3JkZXJRdWFkOwogICAg
IH0KICAgICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEJvcmRlciB8
fCAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCAmJiBib3JkZXJRdWFk
ICE9IHBhZGRpbmdRdWFkKSkgewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29u
dGV4dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGJvcmRlckJveENvbG9yKTsKKyAgICAgICAg
ZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFk
LCBib3JkZXJCb3hDb2xvciwgYm9yZGVyT3V0bGluZUNvbG9yKTsKICAgICAgICAgY2xpcFF1YWQg
PSBwYWRkaW5nUXVhZDsKICAgICB9CiAgICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVy
OjpIaWdobGlnaHRQYWRkaW5nIHx8IChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxp
Z2h0QWxsICYmIHBhZGRpbmdRdWFkICE9IGNvbnRlbnRRdWFkKSkgewotICAgICAgICBkcmF3T3V0
bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBwYWRk
aW5nQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwg
cGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBwYWRkaW5nQm94Q29sb3IsIHBhZGRpbmdPdXRsaW5l
Q29sb3IpOwogICAgICAgICBjbGlwUXVhZCA9IGNvbnRlbnRRdWFkOwogICAgIH0KICAgICBpZiAo
bW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodENvbnRlbnQgfHwgbW9kZSA9PSBE
T01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCkKLSAgICAgICAgZHJhd091dGxpbmVkUXVh
ZChjb250ZXh0LCBjb250ZW50UXVhZCwgY29udGVudEJveENvbG9yKTsKKyAgICAgICAgZHJhd091
dGxpbmVkUXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgY29udGVudEJveENvbG9yLCBjb250ZW50
T3V0bGluZUNvbG9yKTsKICAgICBlbHNlCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xp
cChjb250ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNvbnRlbnRCb3hDb2xvcik7CisgICAgICAg
IGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNv
bnRlbnRCb3hDb2xvciwgY29udGVudE91dGxpbmVDb2xvcik7CiB9CiAKIHZvaWQgZHJhd0hpZ2hs
aWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgbGluZUJveFF1YWRzKQogewotICAgIHN0YXRpYyBjb25z
dCBDb2xvciBsaW5lQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTI4KTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENvbG9yLCBsaW5lQm94Q29sb3IsICgxMTEsIDE2OCwgMjIwLCAxNjgpKTsgLy8g
U2FtZSBhcyBjb250ZW50Qm94Q29sb3IuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwg
bGluZUJveE91dGxpbmVDb2xvciwgKDksIDgzLCAxNDgpKTsgLy8gU2FtZSBhcyBjb250ZW50T3V0
bGluZUNvbG9yLgogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lQm94UXVhZHMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgbGluZUJveFF1YWRz
W2ldLCBsaW5lQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGxp
bmVCb3hRdWFkc1tpXSwgbGluZUJveENvbG9yLCBsaW5lQm94T3V0bGluZUNvbG9yKTsKIH0KIAog
aW5saW5lIEludFNpemUgZnJhbWVUb01haW5GcmFtZU9mZnNldChGcmFtZSogZnJhbWUpCkBAIC0x
MzIsNTAgKzE2MCwxMDggQEAgaW5saW5lIEludFNpemUgZnJhbWVUb01haW5GcmFtZU9mZnNldChG
cmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIG1haW5GcmFtZVBvaW50IC0gSW50UG9pbnQoKTsKIH0K
IAoraW50IGRyYXdTdWJzdHJpbmcoY29uc3QgVGV4dFJ1biYgZ2xvYmFsVGV4dFJ1biwgaW50IG9m
ZnNldCwgaW50IGxlbmd0aCwgY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgRm9udCYgZm9u
dCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgdGl0bGVCYXNlUG9p
bnQsIGludCBmb250SGVpZ2h0UHgsIGNvbnN0IEludFJlY3QmIHRpdGxlUmVjdCkKK3sKKyAgICBj
b250ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IGNvbnRleHQuZHJhd1RleHQoZm9udCwgZ2xvYmFsVGV4dFJ1biwgSW50UG9pbnQodGl0bGVSZWN0
LngoKSArIHJlY3RJbmZsYXRlUHgsIHRpdGxlUmVjdC55KCkgKyBmb250LmZvbnRNZXRyaWNzKCku
aGVpZ2h0KCkpLCBvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7CisgICAgcmV0dXJuIG9mZnNldCAr
IGxlbmd0aDsKK30KKworaW50IGNhbGN1bGF0ZUFycm93VGlwWChjb25zdCBJbnRSZWN0JiBhbmNo
b3JCb3gsIGNvbnN0IEludFJlY3QmIHRpdGxlUmVjdCkKK3sKKyAgICBpbnQgYW5jaG9yWCA9IGFu
Y2hvckJveC54KCk7CisKKyAgICAvLyBDaGVjayBmb3IgaGVhdmlseSBtaXNhbGlnbmVkIHRvb2x0
aXAgZmlyc3QuCisgICAgaWYgKHRpdGxlUmVjdC54KCkgPiBhbmNob3JCb3gubWF4WCgpKQorICAg
ICAgICByZXR1cm4gdGl0bGVSZWN0LngoKSArIGFycm93SGFsZldpZHRoOworCisgICAgaWYgKHRp
dGxlUmVjdC5tYXhYKCkgPCBhbmNob3JYKQorICAgICAgICByZXR1cm4gdGl0bGVSZWN0Lm1heFgo
KSAtIGFycm93SGFsZldpZHRoOworCisgICAgaW50IHggPSB0aXRsZVJlY3QueCgpICsgYXJyb3dU
aXBPZmZzZXQ7CisgICAgaWYgKHggPCBhbmNob3JYKQorICAgICAgICB4ID0gYW5jaG9yWCArIGFy
cm93VGlwT2Zmc2V0OworICAgIGlmICh4ID4gdGl0bGVSZWN0Lm1heFgoKSAtIGFycm93SGFsZldp
ZHRoKQorICAgICAgICB4ID0gdGl0bGVSZWN0Lm1heFgoKSAtIGFycm93SGFsZldpZHRoOworCisg
ICAgcmV0dXJuIHg7Cit9CisKIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIE5vZGUqIG5vZGUsIGNvbnN0IEludFJlY3QmIGJvdW5kaW5nQm94LCBjb25zdCBJ
bnRSZWN0JiBhbmNob3JCb3gsIGNvbnN0IEZsb2F0UmVjdCYgb3ZlcmxheVJlY3QsIFdlYkNvcmU6
OlNldHRpbmdzKiBzZXR0aW5ncykKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHJlY3RJbmZsYXRl
UHggPSA0OwotICAgIHN0YXRpYyBjb25zdCBpbnQgZm9udEhlaWdodFB4ID0gMTI7Ci0gICAgc3Rh
dGljIGNvbnN0IGludCBib3JkZXJXaWR0aFB4ID0gMTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENvbG9yLCB0b29sdGlwQmFja2dyb3VuZENvbG9yLCAoMjU1LCAyNTUsIDE5NCwgMjU1KSk7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEJvcmRlckNvbG9yLCAoQ29sb3I6
OmJsYWNrKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEZvbnRDb2xv
ciwgKENvbG9yOjpibGFjaykpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGJhY2tn
cm91bmRDb2xvciwgKDI1NSwgMjU1LCAxOTQsIDI1NSkpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ29sb3IsIHRhZ0NvbG9yLCAoMTM2LCAxOCwgMTI4KSk7IC8vIFNhbWUgYXMgLndlYmtpdC1o
dG1sLXRhZy4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBhdHRyQ29sb3IsICgyNiwg
MjYsIDE2NikpOyAvLyBTYW1lIGFzIC53ZWJraXQtaHRtbC1hdHRyaWJ1dGUtdmFsdWUuCisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgbm9ybWFsQ29sb3IsIChDb2xvcjo6YmxhY2spKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBweEFuZEJvcmRlckNvbG9yLCAoMTI4LCAx
MjgsIDEyOCkpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHB4U3RyaW5nLCAo
InB4IikpOworICAgIGNvbnN0IHN0YXRpYyBVQ2hhciB0aW1lc1VDaGFyW10gPSB7IDB4MDBENywg
MCB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0aW1lc1N0cmluZywgKHRpbWVz
VUNoYXIpKTsgLy8gJnRpbWVzOyBzdHJpbmcKKwogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVy
IGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihub2RlKTsKICAgICBib29sIGlzWEhUTUwgPSBlbGVtZW50LT5kb2N1
bWVudCgpLT5pc1hIVE1MRG9jdW1lbnQoKTsKLSAgICBTdHJpbmcgbm9kZVRpdGxlID0gaXNYSFRN
TCA/IGVsZW1lbnQtPm5vZGVOYW1lKCkgOiBlbGVtZW50LT5ub2RlTmFtZSgpLmxvd2VyKCk7Cisg
ICAgU3RyaW5nIG5vZGVUaXRsZShpc1hIVE1MID8gZWxlbWVudC0+bm9kZU5hbWUoKSA6IGVsZW1l
bnQtPm5vZGVOYW1lKCkubG93ZXIoKSk7CisgICAgdW5zaWduZWQgdGFnTmFtZUxlbmd0aCA9IG5v
ZGVUaXRsZS5sZW5ndGgoKTsKKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRWYWx1ZSA9IGVs
ZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAgdW5zaWduZWQgaWRTdHJpbmdMZW5ndGggPSAw
OworICAgIFN0cmluZyBpZFN0cmluZzsKICAgICBpZiAoIWlkVmFsdWUuaXNOdWxsKCkgJiYgIWlk
VmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5vZGVUaXRsZSArPSAiIyI7CiAgICAgICAgIG5v
ZGVUaXRsZSArPSBpZFZhbHVlOworICAgICAgICBpZFN0cmluZ0xlbmd0aCA9IDEgKyBpZFZhbHVl
Lmxlbmd0aCgpOwogICAgIH0KKworICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xhc3NO
YW1lczsKKyAgICB1bnNpZ25lZCBjbGFzc2VzU3RyaW5nTGVuZ3RoID0gMDsKICAgICBpZiAoZWxl
bWVudC0+aGFzQ2xhc3MoKSAmJiBlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkgewogICAgICAg
ICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzU3RyaW5nID0gc3RhdGljX2Nhc3Q8
U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCk7CiAgICAgICAgIHNpemVfdCBj
bGFzc05hbWVDb3VudCA9IGNsYXNzTmFtZXNTdHJpbmcuc2l6ZSgpOwotICAgICAgICBpZiAoY2xh
c3NOYW1lQ291bnQpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xh
c3NOYW1lczsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1lQ291
bnQ7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1l
ID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKLSAgICAgICAgICAgICAgICBpZiAodXNlZENsYXNzTmFt
ZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNsYXNzTmFtZSk7Ci0gICAgICAgICAg
ICAgICAgbm9kZVRpdGxlICs9ICIuIjsKLSAgICAgICAgICAgICAgICBub2RlVGl0bGUgKz0gY2xh
c3NOYW1lOwotICAgICAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNs
YXNzTmFtZUNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2xh
c3NOYW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKKyAgICAgICAgICAgIGlmICh1c2VkQ2xhc3NO
YW1lcy5jb250YWlucyhjbGFzc05hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNsYXNzTmFtZSk7CisgICAgICAgICAgICBub2Rl
VGl0bGUgKz0gIi4iOworICAgICAgICAgICAgbm9kZVRpdGxlICs9IGNsYXNzTmFtZTsKKyAgICAg
ICAgICAgIGNsYXNzZXNTdHJpbmdMZW5ndGggKz0gMSArIGNsYXNzTmFtZS5sZW5ndGgoKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIG5vZGVUaXRsZSArPSAiIFsiOwotICAgIG5vZGVUaXRsZSAr
PSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC53aWR0aCgpKTsKLSAgICBub2RlVGl0bGUuYXBw
ZW5kKHN0YXRpY19jYXN0PFVDaGFyPigweDAwRDcpKTsgLy8gJnRpbWVzOwotICAgIG5vZGVUaXRs
ZSArPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgbm9kZVRpdGxl
ICs9ICJdIjsKKyAgICBTdHJpbmcgd2lkdGhOdW1iZXJQYXJ0ID0gIiAiICsgU3RyaW5nOjpudW1i
ZXIoYm91bmRpbmdCb3gud2lkdGgoKSk7CisgICAgbm9kZVRpdGxlICs9IHdpZHRoTnVtYmVyUGFy
dCArIHB4U3RyaW5nOworICAgIG5vZGVUaXRsZSArPSB0aW1lc1N0cmluZzsgLy8gJnRpbWVzOyBz
dXJyb3VuZGVkIGJ5IHNwYWNlcworICAgIFN0cmluZyBoZWlnaHROdW1iZXJQYXJ0ID0gU3RyaW5n
OjpudW1iZXIoYm91bmRpbmdCb3guaGVpZ2h0KCkpOworICAgIG5vZGVUaXRsZSArPSBoZWlnaHRO
dW1iZXJQYXJ0ICsgcHhTdHJpbmc7CiAKICAgICBGb250RGVzY3JpcHRpb24gZGVzYzsKLSAgICBG
b250RmFtaWx5IGZhbWlseTsKLSAgICBmYW1pbHkuc2V0RmFtaWx5KHNldHRpbmdzLT5maXhlZEZv
bnRGYW1pbHkoKSk7Ci0gICAgZGVzYy5zZXRGYW1pbHkoZmFtaWx5KTsKKyAgICBkZXNjLnNldFJl
bmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZml4ZWRGb250RmFtaWx5ID0gc2V0dGluZ3MtPmZpeGVkRm9udEZhbWlseSgp
OworICAgIGlmICghZml4ZWRGb250RmFtaWx5LmlzRW1wdHkoKSkgeworICAgICAgICBkZXNjLnNl
dEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkpOworICAgICAg
ICBBdG9taWNTdHJpbmcgZmFjZTsKKyAgICAgICAgRm9udEZhbWlseSogY3VyckZhbWlseSA9IDA7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b29sdGlwRm9udEZhY2VTaXplOyAr
K2kpIHsKKyAgICAgICAgICAgIGZhY2UgPSBBdG9taWNTdHJpbmcodG9vbHRpcEZvbnRGYWNlW2ld
KTsKKyAgICAgICAgICAgIGlmICghY3VyckZhbWlseSkgeworICAgICAgICAgICAgICAgIGRlc2Mu
Zmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoZmFjZSk7CisgICAgICAgICAgICAgICAgZGVzYy5maXJz
dEZhbWlseSgpLmFwcGVuZEZhbWlseSgwKTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0g
JmRlc2MuZmlyc3RGYW1pbHkoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNoYXJlZEZvbnRGYW1pbHk6
OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIG5ld0ZhbWlseS0+c2V0RmFtaWx5KGZhY2UpOwor
ICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPmFwcGVuZEZhbWlseShuZXdGYW1pbHkpOworICAg
ICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9
IFNoYXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgpOworICAgICAgICBuZXdGYW1pbHktPnNldEZhbWls
eShmaXhlZEZvbnRGYW1pbHkpOworICAgICAgICBjdXJyRmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3
RmFtaWx5KTsKKyAgICAgICAgY3VyckZhbWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKKyAgICB9CiAg
ICAgZGVzYy5zZXRDb21wdXRlZFNpemUoZm9udEhlaWdodFB4KTsKICAgICBGb250IGZvbnQgPSBG
b250KGRlc2MsIDAsIDApOwogICAgIGZvbnQudXBkYXRlKDApOwpAQCAtMjExLDEyICsyOTcsNDIg
QEAgdm9pZCBkcmF3RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSog
bm9kZSwgY29uc3QgSW50UmVjdCYgYm91bmQKICAgICAgICAgZHkgPSBvdmVybGF5UmVjdC55KCkg
LSB0aXRsZVJlY3QueSgpICsgYm9yZGVyV2lkdGhQeDsKIAogICAgIHRpdGxlUmVjdC5tb3ZlKGR4
LCBkeSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih0b29sdGlwQm9yZGVyQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworCisgICAgYm9vbCBpc0Fycm93QXRUb3AgPSB0aXRsZVJlY3Qu
eSgpID4gYW5jaG9yQm94LnkoKTsKKyAgICB0aXRsZVJlY3QubW92ZSgwLCB0b29sdGlwUGFkZGlu
ZyAqIChpc0Fycm93QXRUb3AgPyAxIDogLTEpKTsKKworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29s
b3IocHhBbmRCb3JkZXJDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5z
ZXRTdHJva2VUaGlja25lc3MoYm9yZGVyV2lkdGhQeCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29s
b3IodG9vbHRpcEJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ICAgICBjb250ZXh0LmRyYXdSZWN0KHRpdGxlUmVjdCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29s
b3IodG9vbHRpcEZvbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC5k
cmF3VGV4dChmb250LCBub2RlVGl0bGVSdW4sIEludFBvaW50KHRpdGxlUmVjdC54KCkgKyByZWN0
SW5mbGF0ZVB4LCB0aXRsZVJlY3QueSgpICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKSk7
CisKKyAgICB7CisgICAgICAgIGludCBhcnJvd1RpcFggPSBjYWxjdWxhdGVBcnJvd1RpcFgoYW5j
aG9yQm94LCB0aXRsZVJlY3QpOworICAgICAgICBGbG9hdFBvaW50IGFycm93UG9pbnRzWzNdOwor
ICAgICAgICBmbG9hdCBhcnJvd0Jhc2VZID0gaXNBcnJvd0F0VG9wID8gdGl0bGVSZWN0LnkoKSA6
IHRpdGxlUmVjdC5tYXhZKCk7CisgICAgICAgIGFycm93UG9pbnRzWzBdID0gRmxvYXRQb2ludChh
cnJvd1RpcFggLSBhcnJvd0hhbGZXaWR0aCwgYXJyb3dCYXNlWSk7CisgICAgICAgIGFycm93UG9p
bnRzWzFdID0gRmxvYXRQb2ludChhcnJvd1RpcFgsIGFycm93QmFzZVkgKyBhcnJvd0hlaWdodCAq
IChpc0Fycm93QXRUb3AgPyAtMSA6IDEpKTsKKyAgICAgICAgYXJyb3dQb2ludHNbMl0gPSBGbG9h
dFBvaW50KGFycm93VGlwWCArIGFycm93SGFsZldpZHRoLCBhcnJvd0Jhc2VZKTsKKyAgICAgICAg
Y29udGV4dC5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvd1BvaW50cyk7CisKKyAgICAgICAgY29u
dGV4dC5zZXRTdHJva2VDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhib3JkZXJX
aWR0aFB4ICsgMSk7CisgICAgICAgIEludFBvaW50IHN0YXJ0UG9pbnQgPSBJbnRQb2ludChhcnJv
d1BvaW50c1swXS54KCkgKyAxLCBhcnJvd1BvaW50c1swXS55KCkpOworICAgICAgICBJbnRQb2lu
dCBlbmRQb2ludCA9IEludFBvaW50KGFycm93UG9pbnRzWzJdLngoKSAtIDEsIGFycm93UG9pbnRz
WzJdLnkoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0xpbmUoc3RhcnRQb2ludCwgZW5kUG9pbnQp
OworICAgIH0KKworICAgIGludCBjdXJyZW50UG9zID0gMDsKKyAgICBjdXJyZW50UG9zID0gZHJh
d1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHRhZ05hbWVMZW5ndGgsIHRhZ0Nv
bG9yLCBmb250LCBjb250ZXh0LCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4LCB0aXRsZVJl
Y3QpOworICAgIGlmIChpZFN0cmluZ0xlbmd0aCkKKyAgICAgICAgY3VycmVudFBvcyA9IGRyYXdT
dWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBpZFN0cmluZ0xlbmd0aCwgYXR0ckNv
bG9yLCBmb250LCBjb250ZXh0LCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4LCB0aXRsZVJl
Y3QpOworICAgIGlmIChjbGFzc2VzU3RyaW5nTGVuZ3RoKQorICAgICAgICBjdXJyZW50UG9zID0g
ZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIGNsYXNzZXNTdHJpbmdMZW5n
dGgsIGF0dHJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVCYXNlUG9pbnQsIGZvbnRIZWlnaHRQ
eCwgdGl0bGVSZWN0KTsKKyAgICBjdXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVS
dW4sIGN1cnJlbnRQb3MsIHdpZHRoTnVtYmVyUGFydC5sZW5ndGgoKSwgbm9ybWFsQ29sb3IsIGZv
bnQsIGNvbnRleHQsIHRpdGxlQmFzZVBvaW50LCBmb250SGVpZ2h0UHgsIHRpdGxlUmVjdCk7Cisg
ICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBw
eFN0cmluZy5sZW5ndGgoKSArIHRpbWVzU3RyaW5nLmxlbmd0aCgpLCBweEFuZEJvcmRlckNvbG9y
LCBmb250LCBjb250ZXh0LCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4LCB0aXRsZVJlY3Qp
OworICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBv
cywgaGVpZ2h0TnVtYmVyUGFydC5sZW5ndGgoKSwgbm9ybWFsQ29sb3IsIGZvbnQsIGNvbnRleHQs
IHRpdGxlQmFzZVBvaW50LCBmb250SGVpZ2h0UHgsIHRpdGxlUmVjdCk7CisgICAgZHJhd1N1YnN0
cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHB4U3RyaW5nLmxlbmd0aCgpLCBweEFuZEJv
cmRlckNvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4LCB0
aXRsZVJlY3QpOwogfQogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBmMDdlMmMzLi5h
MjU3ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCkBAIC0xODg5LDcgKzE4ODksNyBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNp
ZGViYXItcGFuZS1zdWJ0aXRsZSB7CiB9CiAKIC5tZXRyaWNzIC5tYXJnaW4uaG92ZXJlZCB7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEzOSwgMTgyLCAyMjEpOworICAgIGJhY2tncm91bmQt
Y29sb3I6IHJnYmEoMjQ2LCAxNzgsIDEwNywgLjY2KTsKIH0KIAogLm1ldHJpY3MgLmJvcmRlciB7
CkBAIC0xOTAzLDcgKzE5MDMsNyBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFu
ZS1zdWJ0aXRsZSB7CiB9CiAKIC5tZXRyaWNzIC5ib3JkZXIuaG92ZXJlZCB7Ci0gICAgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDE1NywgMTkzLCAyMjYpOworICAgIGJhY2tncm91bmQtY29sb3I6IHJn
YmEoMjU1LCAyMjksIDE1MywgLjY2KTsKIH0KIAogLm1ldHJpY3MgLnBhZGRpbmcgewpAQCAtMTkx
Nyw3ICsxOTE3LDcgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0
bGUgewogfQogCiAubWV0cmljcyAucGFkZGluZy5ob3ZlcmVkIHsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZ2IoMTczLCAyMDQsIDIzMSk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNDcs
IDE5NiwgMTI1LCAuNTUpOwogfQogCiAubWV0cmljcyAuY29udGVudCB7CkBAIC0xOTM1LDcgKzE5
MzUsNyBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFuZS1zdWJ0aXRsZSB7CiB9
CiAKIC5tZXRyaWNzIC5jb250ZW50LmhvdmVyZWQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJn
YigxOTAsIDIxNCwgMjM2KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDExMSwgMTY4LCAy
MjAsIC42Nik7CiB9CiAKIC5tZXRyaWNzIC5jb250ZW50IHNwYW4gewo=
</data>
<flag name="commit-queue"
          id="99945"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>104188</attachid>
            <date>2011-08-17 10:08:23 -0700</date>
            <delta_ts>2011-08-17 10:08:23 -0700</delta_ts>
            <desc>[IMAGE] Screenshot of the new tooltip</desc>
            <filename>NewTooltip.png</filename>
            <type>image/png</type>
            <size>103965</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">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
m1DuM7YRc+tr7t2Lsvjyh4PBHKPAxXfOOKL2JhWSkpNN2KYve1Zgho3MOXrMcmnzVqtdHqziLbMF
KnsTFmD2sjJOOJs0WrKJK4C8zRky5SpXskvZe126VL5LiX828S0ZXFyTaCmlLfJjt38ZJ2LPkJKj
Rd1XGaRJRd2j9WxfRn5tl9ev++KqPdPfKI9RUu1kHD2MUVvkx8uWR/Egtvb2fz3K6e7uprXVdCSA
QqEgKiqKhx9+2PIikNlC/e677yzHBoSHh1uONTAajbS1tWEwGKRJQmHZ/RIVFYWPjw8KhYKuri4a
Ghq4cuUK48ePZ8GCBXh5edko6+7ubtrb22lqaqKxsdHGOjYajfj4+KBUKpkwYUKvY/Dy8qK6uprv
v/8eT09PFi5cyMSJE7l79y5fffUVHR0dTJkyBaVSiYeHB7du3cJgMGA0Gi3jGzdunLTH370xCku+
nxhHEs1Zxqf2ZRnP91bmjYXGXc3mhALjFsu1/G/z9c+Nnzj8bTQajVXGXfvkZW355MhUY+gbps9T
f63qRU67fpuzjE857bcPMpz9uTH0SEEvN8y+PVd99fe+9NTeVOOWs72N1649+zGd/bm1jTFKd3e3
sbOz09je3m5sb283dnV1Gbu7u3ss09nZaVOmu7vb2N7ebrxz547l097e7lCmo6PDph9X8pjLydu7
c+eO8e7duw6y9TSGu3fvOsgil9XcXnd3t7Grq8vl+Nwdo6B/jL7VjKYqLiszZNZfImrlC+iagCYt
JcoMcp1ZhgYtJRyjJMePl2XJ8U2Ak/KaNa0WC1pb5MecHDvr185fnbosm01nq0mNVaIt3QXLyhzL
9VEGh6cLi3XcRwvYMHj3Rf4koDY/PfknoZm8jgst0v+Bq/ZmRDD76AvMydGa7mPUAXLHvHtGwfjx
43v0m/dWRqFQMHHixF778fDw6HWB0t1y7shnb/H3JGtvY3BnjIKx4JP3jyDqejbaloyheYRXvmvj
UnEXs8LXFvmhM4DGSayMsNgMonKy0MZq0FWvIjVdOTAZZkQw+6hsDcA/gxPpGRaX1ki4L31vTz4G
0yQgDpATCIaWEba7JpHUZbA3bxG7Wxz98HGl1SblV51tzW/JZnd1EGEzJMVYrbXuwjFoKTH/HaUh
vvoFUgzWJi+ULrK5tvH5O+xgKURXLbNer1dhsJNdrTzGyzkvYFiW6dyP3hcZ/DPIW1bBy73uKqow
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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104191</attachid>
            <date>2011-08-17 10:44:51 -0700</date>
            <delta_ts>2011-08-18 01:04:58 -0700</delta_ts>
            <desc>[PATCH] Compilability fixed</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>16311</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDgwNDZjN2I4MWJhMTExZjI3NzhhMjAzN2RkNDliOWQyNGI5N2JlNjgKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBXZWQgQXVnIDEw
IDEzOjUwOjQ1IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y0OGFhMS4uZjNk
MzFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA4LTE3ICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5tZXRyaWNzIC5tYXJnaW4uaG92ZXJlZCk6
CisgICAgICAgICgubWV0cmljcyAuYm9yZGVyLmhvdmVyZWQpOgorICAgICAgICAoLm1ldHJpY3Mg
LnBhZGRpbmcuaG92ZXJlZCk6CisgICAgICAgICgubWV0cmljcyAuY29udGVudC5ob3ZlcmVkKToK
KwogMjAxMS0wOC0xNyAgU2FpbGVzaCBBZ3Jhd2FsICA8c2FpbEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQ2hyb21pdW0gTWFjOiBGaXggaXNzdWUgd2hlcmUgc2Nyb2xsYmFyIHdvdWxkbid0IGJl
IGRyYXduIHVudGlsIHBhZ2UgZmluaXNoZWQgbG9hZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAzOWJhODllLi40YmM3NjM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZvbnRD
YWNoZS5oIgorI2luY2x1ZGUgIkZvbnRGYW1pbHkuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDcs
NiArNDgsMjggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogCisjZGVmaW5l
IFRPT0xUSVBfRk9OVF9GQU1JTElFUyhzaXplLCAuLi4pIFwKK3N0YXRpYyB1bnNpZ25lZCB0b29s
dGlwRm9udEZhY2VTaXplID0gc2l6ZTtcCitzdGF0aWMgU3RyaW5nIHRvb2x0aXBGb250RmFjZVtd
ID0geyBfX1ZBX0FSR1NfXyB9OworCisjaWYgT1MoV0lORE9XUykKK1RPT0xUSVBfRk9OVF9GQU1J
TElFUygyLCBTdHJpbmcoIkNvbnNvbGFzIiksIFN0cmluZygiTHVjaWRhIENvbnNvbGUiKSkKKyNl
bGlmIE9TKFVOSVgpCitUT09MVElQX0ZPTlRfRkFNSUxJRVMoMSwgU3RyaW5nKCJkZWphdnUgc2Fu
cyBtb25vIikpCisjZWxpZiBPUyhNQUNfT1NfWCkKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygyLCBT
dHJpbmcoIk1lbmxvIiksIFN0cmluZygiTW9uYWNvIikpCisjZW5kaWYKKy8vIEluIHRoZSBkZWZh
dWx0IGNhc2UsIHdlIGdldCB0aGUgc2V0dGluZ3MtcHJvdmlkZWQgbW9ub3NwYWNlIGZvbnQuCisK
K2NvbnN0IHN0YXRpYyBpbnQgcmVjdEluZmxhdGVQeCA9IDQ7Citjb25zdCBzdGF0aWMgaW50IGZv
bnRIZWlnaHRQeCA9IDEyOworY29uc3Qgc3RhdGljIGludCBib3JkZXJXaWR0aFB4ID0gMTsKK2Nv
bnN0IHN0YXRpYyBpbnQgdG9vbHRpcFBhZGRpbmcgPSA0OworCitjb25zdCBzdGF0aWMgaW50IGFy
cm93VGlwT2Zmc2V0ID0gMjA7Citjb25zdCBzdGF0aWMgaW50IGFycm93SGVpZ2h0ID0gNzsKK2Nv
bnN0IHN0YXRpYyBpbnQgYXJyb3dIYWxmV2lkdGggPSA3OworCiBQYXRoIHF1YWRUb1BhdGgoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKQogewogICAgIFBhdGggcXVhZFBhdGg7CkBAIC01OCwxMCArODEs
OSBAQCBQYXRoIHF1YWRUb1BhdGgoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogICAgIHJldHVybiBx
dWFkUGF0aDsKIH0KIAotdm9pZCBkcmF3T3V0bGluZWRRdWFkKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBDb2xvciYgZmlsbENvbG9yKQordm9p
ZCBkcmF3T3V0bGluZWRRdWFkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRR
dWFkJiBxdWFkLCBjb25zdCBDb2xvciYgZmlsbENvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNv
bG9yKQogewogICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVRoaWNrbmVzcyA9IDI7Ci0gICAg
c3RhdGljIGNvbnN0IENvbG9yIG91dGxpbmVDb2xvcig2MiwgODYsIDE4MCwgMjI4KTsKIAogICAg
IFBhdGggcXVhZFBhdGggPSBxdWFkVG9QYXRoKHF1YWQpOwogCkBAIC04Myw0NyArMTA1LDUzIEBA
IHZvaWQgZHJhd091dGxpbmVkUXVhZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UXVhZCYgcXVhZCwgY29uc3QgQ29sCiAgICAgY29udGV4dC5maWxsUGF0aChxdWFkUGF0aCk7
CiB9CiAKLXZvaWQgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBGbG9hdFF1YWQmIGNsaXBRdWFkLCBj
b25zdCBDb2xvciYgZmlsbENvbG9yKQordm9pZCBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IEZsb2F0
UXVhZCYgY2xpcFF1YWQsIGNvbnN0IENvbG9yJiBmaWxsQ29sb3IsIGNvbnN0IENvbG9yJiBvdXRs
aW5lQ29sb3IpCiB7CiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgUGF0aCBjbGlwUXVhZFBhdGgg
PSBxdWFkVG9QYXRoKGNsaXBRdWFkKTsKICAgICBjb250ZXh0LmNsaXBPdXQoY2xpcFF1YWRQYXRo
KTsKLSAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIHF1YWQsIGZpbGxDb2xvcik7CisgICAg
ZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBxdWFkLCBmaWxsQ29sb3IsIG91dGxpbmVDb2xvcik7
CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgZHJhd0hpZ2hsaWdodEZvckJveChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVudFF1YWQsIGNv
bnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9yZGVyUXVhZCwg
Y29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdo
dE1vZGUgbW9kZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgY29udGVudEJveENvbG9yKDEy
NSwgMTczLCAyMTcsIDEyOCk7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIHBhZGRpbmdCb3hDb2xv
cigxMjUsIDE3MywgMjE3LCAxNjApOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBib3JkZXJCb3hD
b2xvcigxMjUsIDE3MywgMjE3LCAxOTIpOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBtYXJnaW5C
b3hDb2xvcigxMjUsIDE3MywgMjE3LCAyMjgpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29s
b3IsIGNvbnRlbnRCb3hDb2xvciwgKDExMSwgMTY4LCAyMjAsIDE2OCkpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ29sb3IsIHBhZGRpbmdCb3hDb2xvciwgKDE0NywgMTk2LCAxMjUsIDEyOCkp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGJvcmRlckJveENvbG9yLCAoMjU1LCAy
MjksIDE1MywgMTY4KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgbWFyZ2luQm94
Q29sb3IsICgyNDYsIDE3OCwgMTA3LCAxNjgpKTsKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q29sb3IsIGNvbnRlbnRPdXRsaW5lQ29sb3IsICg5LCA4MywgMTQ4KSk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDb2xvciwgcGFkZGluZ091dGxpbmVDb2xvciwgKDU1LCAxMTgsIDI4KSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgYm9yZGVyT3V0bGluZUNvbG9yLCAoMTI3LCA5
NiwgMCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIG1hcmdpbk91dGxpbmVDb2xv
ciwgKDE4MCwgOTUsIDQpKTsKIAogICAgIEZsb2F0UXVhZCBjbGlwUXVhZDsKICAgICBpZiAobW9k
ZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1hcmdpbiB8fCAobW9kZSA9PSBET01O
b2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCAmJiBtYXJnaW5RdWFkICE9IGJvcmRlclF1YWQp
KSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFk
LCBib3JkZXJRdWFkLCBtYXJnaW5Cb3hDb2xvcik7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRX
aXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBtYXJnaW5Cb3hDb2xvciwg
bWFyZ2luT3V0bGluZUNvbG9yKTsKICAgICAgICAgY2xpcFF1YWQgPSBib3JkZXJRdWFkOwogICAg
IH0KICAgICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEJvcmRlciB8
fCAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCAmJiBib3JkZXJRdWFk
ICE9IHBhZGRpbmdRdWFkKSkgewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29u
dGV4dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGJvcmRlckJveENvbG9yKTsKKyAgICAgICAg
ZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFk
LCBib3JkZXJCb3hDb2xvciwgYm9yZGVyT3V0bGluZUNvbG9yKTsKICAgICAgICAgY2xpcFF1YWQg
PSBwYWRkaW5nUXVhZDsKICAgICB9CiAgICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVy
OjpIaWdobGlnaHRQYWRkaW5nIHx8IChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxp
Z2h0QWxsICYmIHBhZGRpbmdRdWFkICE9IGNvbnRlbnRRdWFkKSkgewotICAgICAgICBkcmF3T3V0
bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBwYWRk
aW5nQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwg
cGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBwYWRkaW5nQm94Q29sb3IsIHBhZGRpbmdPdXRsaW5l
Q29sb3IpOwogICAgICAgICBjbGlwUXVhZCA9IGNvbnRlbnRRdWFkOwogICAgIH0KICAgICBpZiAo
bW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodENvbnRlbnQgfHwgbW9kZSA9PSBE
T01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCkKLSAgICAgICAgZHJhd091dGxpbmVkUXVh
ZChjb250ZXh0LCBjb250ZW50UXVhZCwgY29udGVudEJveENvbG9yKTsKKyAgICAgICAgZHJhd091
dGxpbmVkUXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgY29udGVudEJveENvbG9yLCBjb250ZW50
T3V0bGluZUNvbG9yKTsKICAgICBlbHNlCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xp
cChjb250ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNvbnRlbnRCb3hDb2xvcik7CisgICAgICAg
IGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNv
bnRlbnRCb3hDb2xvciwgY29udGVudE91dGxpbmVDb2xvcik7CiB9CiAKIHZvaWQgZHJhd0hpZ2hs
aWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgbGluZUJveFF1YWRzKQogewotICAgIHN0YXRpYyBjb25z
dCBDb2xvciBsaW5lQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTI4KTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENvbG9yLCBsaW5lQm94Q29sb3IsICgxMTEsIDE2OCwgMjIwLCAxNjgpKTsgLy8g
U2FtZSBhcyBjb250ZW50Qm94Q29sb3IuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwg
bGluZUJveE91dGxpbmVDb2xvciwgKDksIDgzLCAxNDgpKTsgLy8gU2FtZSBhcyBjb250ZW50T3V0
bGluZUNvbG9yLgogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lQm94UXVhZHMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgbGluZUJveFF1YWRz
W2ldLCBsaW5lQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGxp
bmVCb3hRdWFkc1tpXSwgbGluZUJveENvbG9yLCBsaW5lQm94T3V0bGluZUNvbG9yKTsKIH0KIAog
aW5saW5lIEludFNpemUgZnJhbWVUb01haW5GcmFtZU9mZnNldChGcmFtZSogZnJhbWUpCkBAIC0x
MzIsNTAgKzE2MCwxMDggQEAgaW5saW5lIEludFNpemUgZnJhbWVUb01haW5GcmFtZU9mZnNldChG
cmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIG1haW5GcmFtZVBvaW50IC0gSW50UG9pbnQoKTsKIH0K
IAoraW50IGRyYXdTdWJzdHJpbmcoY29uc3QgVGV4dFJ1biYgZ2xvYmFsVGV4dFJ1biwgaW50IG9m
ZnNldCwgaW50IGxlbmd0aCwgY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgRm9udCYgZm9u
dCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB0aXRsZVJlY3QpCit7
CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIGdsb2JhbFRleHRSdW4sIEludFBvaW50KHRp
dGxlUmVjdC54KCkgKyByZWN0SW5mbGF0ZVB4LCB0aXRsZVJlY3QueSgpICsgZm9udC5mb250TWV0
cmljcygpLmhlaWdodCgpKSwgb2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpOworICAgIHJldHVybiBv
ZmZzZXQgKyBsZW5ndGg7Cit9CisKK2ludCBjYWxjdWxhdGVBcnJvd1RpcFgoY29uc3QgSW50UmVj
dCYgYW5jaG9yQm94LCBjb25zdCBJbnRSZWN0JiB0aXRsZVJlY3QpCit7CisgICAgaW50IGFuY2hv
clggPSBhbmNob3JCb3gueCgpOworCisgICAgLy8gQ2hlY2sgZm9yIGhlYXZpbHkgbWlzYWxpZ25l
ZCB0b29sdGlwIGZpcnN0LgorICAgIGlmICh0aXRsZVJlY3QueCgpID4gYW5jaG9yQm94Lm1heFgo
KSkKKyAgICAgICAgcmV0dXJuIHRpdGxlUmVjdC54KCkgKyBhcnJvd0hhbGZXaWR0aDsKKworICAg
IGlmICh0aXRsZVJlY3QubWF4WCgpIDwgYW5jaG9yWCkKKyAgICAgICAgcmV0dXJuIHRpdGxlUmVj
dC5tYXhYKCkgLSBhcnJvd0hhbGZXaWR0aDsKKworICAgIGludCB4ID0gdGl0bGVSZWN0LngoKSAr
IGFycm93VGlwT2Zmc2V0OworICAgIGlmICh4IDwgYW5jaG9yWCkKKyAgICAgICAgeCA9IGFuY2hv
clggKyBhcnJvd1RpcE9mZnNldDsKKyAgICBpZiAoeCA+IHRpdGxlUmVjdC5tYXhYKCkgLSBhcnJv
d0hhbGZXaWR0aCkKKyAgICAgICAgeCA9IHRpdGxlUmVjdC5tYXhYKCkgLSBhcnJvd0hhbGZXaWR0
aDsKKworICAgIHJldHVybiB4OworfQorCiB2b2lkIGRyYXdFbGVtZW50VGl0bGUoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBjb25zdCBJbnRSZWN0JiBib3VuZGluZ0JveCwg
Y29uc3QgSW50UmVjdCYgYW5jaG9yQm94LCBjb25zdCBGbG9hdFJlY3QmIG92ZXJsYXlSZWN0LCBX
ZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCByZWN0
SW5mbGF0ZVB4ID0gNDsKLSAgICBzdGF0aWMgY29uc3QgaW50IGZvbnRIZWlnaHRQeCA9IDEyOwot
ICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQeCA9IDE7Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDb2xvciwgdG9vbHRpcEJhY2tncm91bmRDb2xvciwgKDI1NSwgMjU1LCAxOTQsIDI1
NSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRvb2x0aXBCb3JkZXJDb2xvciwg
KENvbG9yOjpibGFjaykpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRvb2x0aXBG
b250Q29sb3IsIChDb2xvcjo6YmxhY2spKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9y
LCBiYWNrZ3JvdW5kQ29sb3IsICgyNTUsIDI1NSwgMTk0LCAyNTUpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENvbG9yLCB0YWdDb2xvciwgKDEzNiwgMTgsIDEyOCkpOyAvLyBTYW1lIGFzIC53
ZWJraXQtaHRtbC10YWcuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgYXR0ckNvbG9y
LCAoMjYsIDI2LCAxNjYpKTsgLy8gU2FtZSBhcyAud2Via2l0LWh0bWwtYXR0cmlidXRlLXZhbHVl
LgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIG5vcm1hbENvbG9yLCAoQ29sb3I6OmJs
YWNrKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgcHhBbmRCb3JkZXJDb2xvciwg
KDEyOCwgMTI4LCAxMjgpKTsKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBweFN0
cmluZywgKCJweCIpKTsKKyAgICBjb25zdCBzdGF0aWMgVUNoYXIgdGltZXNVQ2hhcltdID0geyAw
eDAwRDcsIDAgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdGltZXNTdHJpbmcs
ICh0aW1lc1VDaGFyKSk7IC8vICZ0aW1lczsgc3RyaW5nCisKICAgICBGb250Q2FjaGVQdXJnZVBy
ZXZlbnRlciBmb250Q2FjaGVQdXJnZVByZXZlbnRlcjsKIAogICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CiAgICAgYm9vbCBpc1hIVE1MID0gZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+aXNYSFRNTERvY3VtZW50KCk7Ci0gICAgU3RyaW5nIG5vZGVUaXRsZSA9
IGlzWEhUTUwgPyBlbGVtZW50LT5ub2RlTmFtZSgpIDogZWxlbWVudC0+bm9kZU5hbWUoKS5sb3dl
cigpOworICAgIFN0cmluZyBub2RlVGl0bGUoaXNYSFRNTCA/IGVsZW1lbnQtPm5vZGVOYW1lKCkg
OiBlbGVtZW50LT5ub2RlTmFtZSgpLmxvd2VyKCkpOworICAgIHVuc2lnbmVkIHRhZ05hbWVMZW5n
dGggPSBub2RlVGl0bGUubGVuZ3RoKCk7CisKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlkVmFs
dWUgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpOworICAgIHVuc2lnbmVkIGlkU3RyaW5nTGVu
Z3RoID0gMDsKKyAgICBTdHJpbmcgaWRTdHJpbmc7CiAgICAgaWYgKCFpZFZhbHVlLmlzTnVsbCgp
ICYmICFpZFZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICBub2RlVGl0bGUgKz0gIiMiOwogICAg
ICAgICBub2RlVGl0bGUgKz0gaWRWYWx1ZTsKKyAgICAgICAgaWRTdHJpbmdMZW5ndGggPSAxICsg
aWRWYWx1ZS5sZW5ndGgoKTsKICAgICB9CisKKyAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gdXNl
ZENsYXNzTmFtZXM7CisgICAgdW5zaWduZWQgY2xhc3Nlc1N0cmluZ0xlbmd0aCA9IDA7CiAgICAg
aWYgKGVsZW1lbnQtPmhhc0NsYXNzKCkgJiYgZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpIHsK
ICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lc1N0cmluZyA9IHN0YXRp
Y19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+Y2xhc3NOYW1lcygpOwogICAgICAgICBz
aXplX3QgY2xhc3NOYW1lQ291bnQgPSBjbGFzc05hbWVzU3RyaW5nLnNpemUoKTsKLSAgICAgICAg
aWYgKGNsYXNzTmFtZUNvdW50KSB7Ci0gICAgICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4g
dXNlZENsYXNzTmFtZXM7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNsYXNz
TmFtZUNvdW50OyArK2kpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGNs
YXNzTmFtZSA9IGNsYXNzTmFtZXNTdHJpbmdbaV07Ci0gICAgICAgICAgICAgICAgaWYgKHVzZWRD
bGFzc05hbWVzLmNvbnRhaW5zKGNsYXNzTmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIHVzZWRDbGFzc05hbWVzLmFkZChjbGFzc05hbWUpOwotICAg
ICAgICAgICAgICAgIG5vZGVUaXRsZSArPSAiLiI7Ci0gICAgICAgICAgICAgICAgbm9kZVRpdGxl
ICs9IGNsYXNzTmFtZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjbGFzc05hbWVDb3VudDsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNTdHJpbmdbaV07CisgICAgICAgICAgICBpZiAodXNl
ZENsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIHVzZWRDbGFzc05hbWVzLmFkZChjbGFzc05hbWUpOworICAgICAgICAg
ICAgbm9kZVRpdGxlICs9ICIuIjsKKyAgICAgICAgICAgIG5vZGVUaXRsZSArPSBjbGFzc05hbWU7
CisgICAgICAgICAgICBjbGFzc2VzU3RyaW5nTGVuZ3RoICs9IDEgKyBjbGFzc05hbWUubGVuZ3Ro
KCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBub2RlVGl0bGUgKz0gIiBbIjsKLSAgICBub2Rl
VGl0bGUgKz0gU3RyaW5nOjpudW1iZXIoYm91bmRpbmdCb3gud2lkdGgoKSk7Ci0gICAgbm9kZVRp
dGxlLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oMHgwMEQ3KSk7IC8vICZ0aW1lczsKLSAgICBu
b2RlVGl0bGUgKz0gU3RyaW5nOjpudW1iZXIoYm91bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgIG5v
ZGVUaXRsZSArPSAiXSI7CisgICAgU3RyaW5nIHdpZHRoTnVtYmVyUGFydCA9ICIgIiArIFN0cmlu
Zzo6bnVtYmVyKGJvdW5kaW5nQm94LndpZHRoKCkpOworICAgIG5vZGVUaXRsZSArPSB3aWR0aE51
bWJlclBhcnQgKyBweFN0cmluZzsKKyAgICBub2RlVGl0bGUgKz0gdGltZXNTdHJpbmc7IC8vICZ0
aW1lczsgc3Vycm91bmRlZCBieSBzcGFjZXMKKyAgICBTdHJpbmcgaGVpZ2h0TnVtYmVyUGFydCA9
IFN0cmluZzo6bnVtYmVyKGJvdW5kaW5nQm94LmhlaWdodCgpKTsKKyAgICBub2RlVGl0bGUgKz0g
aGVpZ2h0TnVtYmVyUGFydCArIHB4U3RyaW5nOwogCiAgICAgRm9udERlc2NyaXB0aW9uIGRlc2M7
Ci0gICAgRm9udEZhbWlseSBmYW1pbHk7Ci0gICAgZmFtaWx5LnNldEZhbWlseShzZXR0aW5ncy0+
Zml4ZWRGb250RmFtaWx5KCkpOwotICAgIGRlc2Muc2V0RmFtaWx5KGZhbWlseSk7CisgICAgZGVz
Yy5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5mb250UmVuZGVyaW5nTW9kZSgpKTsKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGZpeGVkRm9udEZhbWlseSA9IHNldHRpbmdzLT5maXhlZEZvbnRG
YW1pbHkoKTsKKyAgICBpZiAoIWZpeGVkRm9udEZhbWlseS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ZGVzYy5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNlRmFtaWx5KTsK
KyAgICAgICAgQXRvbWljU3RyaW5nIGZhY2U7CisgICAgICAgIEZvbnRGYW1pbHkqIGN1cnJGYW1p
bHkgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9vbHRpcEZvbnRGYWNl
U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBmYWNlID0gQXRvbWljU3RyaW5nKHRvb2x0aXBGb250
RmFjZVtpXSk7CisgICAgICAgICAgICBpZiAoIWN1cnJGYW1pbHkpIHsKKyAgICAgICAgICAgICAg
ICBkZXNjLmZpcnN0RmFtaWx5KCkuc2V0RmFtaWx5KGZhY2UpOworICAgICAgICAgICAgICAgIGRl
c2MuZmlyc3RGYW1pbHkoKS5hcHBlbmRGYW1pbHkoMCk7CisgICAgICAgICAgICAgICAgY3VyckZh
bWlseSA9ICZkZXNjLmZpcnN0RmFtaWx5KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdGYW1pbHkgPSBTaGFyZWRGb250
RmFtaWx5OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBuZXdGYW1pbHktPnNldEZhbWlseShm
YWNlKTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3RmFtaWx5
KTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0gbmV3RmFtaWx5LmdldCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdG
YW1pbHkgPSBTaGFyZWRGb250RmFtaWx5OjpjcmVhdGUoKTsKKyAgICAgICAgbmV3RmFtaWx5LT5z
ZXRGYW1pbHkoZml4ZWRGb250RmFtaWx5KTsKKyAgICAgICAgY3VyckZhbWlseS0+YXBwZW5kRmFt
aWx5KG5ld0ZhbWlseSk7CisgICAgICAgIGN1cnJGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7Cisg
ICAgfQogICAgIGRlc2Muc2V0Q29tcHV0ZWRTaXplKGZvbnRIZWlnaHRQeCk7CiAgICAgRm9udCBm
b250ID0gRm9udChkZXNjLCAwLCAwKTsKICAgICBmb250LnVwZGF0ZSgwKTsKQEAgLTIxMSwxMiAr
Mjk3LDQyIEBAIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IE5vZGUqIG5vZGUsIGNvbnN0IEludFJlY3QmIGJvdW5kCiAgICAgICAgIGR5ID0gb3ZlcmxheVJl
Y3QueSgpIC0gdGl0bGVSZWN0LnkoKSArIGJvcmRlcldpZHRoUHg7CiAKICAgICB0aXRsZVJlY3Qu
bW92ZShkeCwgZHkpOwotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodG9vbHRpcEJvcmRlckNv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKworICAgIGJvb2wgaXNBcnJvd0F0VG9wID0gdGl0
bGVSZWN0LnkoKSA+IGFuY2hvckJveC55KCk7CisgICAgdGl0bGVSZWN0Lm1vdmUoMCwgdG9vbHRp
cFBhZGRpbmcgKiAoaXNBcnJvd0F0VG9wID8gMSA6IC0xKSk7CisKKyAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKHB4QW5kQm9yZGVyQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGJvcmRlcldpZHRoUHgpOwotICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAgICAgY29udGV4dC5kcmF3UmVjdCh0aXRsZVJlY3QpOwotICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKHRvb2x0aXBGb250Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNv
bnRleHQuZHJhd1RleHQoZm9udCwgbm9kZVRpdGxlUnVuLCBJbnRQb2ludCh0aXRsZVJlY3QueCgp
ICsgcmVjdEluZmxhdGVQeCwgdGl0bGVSZWN0LnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5oZWln
aHQoKSkpOworCisgICAgeworICAgICAgICBpbnQgYXJyb3dUaXBYID0gY2FsY3VsYXRlQXJyb3dU
aXBYKGFuY2hvckJveCwgdGl0bGVSZWN0KTsKKyAgICAgICAgRmxvYXRQb2ludCBhcnJvd1BvaW50
c1szXTsKKyAgICAgICAgZmxvYXQgYXJyb3dCYXNlWSA9IGlzQXJyb3dBdFRvcCA/IHRpdGxlUmVj
dC55KCkgOiB0aXRsZVJlY3QubWF4WSgpOworICAgICAgICBhcnJvd1BvaW50c1swXSA9IEZsb2F0
UG9pbnQoYXJyb3dUaXBYIC0gYXJyb3dIYWxmV2lkdGgsIGFycm93QmFzZVkpOworICAgICAgICBh
cnJvd1BvaW50c1sxXSA9IEZsb2F0UG9pbnQoYXJyb3dUaXBYLCBhcnJvd0Jhc2VZICsgYXJyb3dI
ZWlnaHQgKiAoaXNBcnJvd0F0VG9wID8gLTEgOiAxKSk7CisgICAgICAgIGFycm93UG9pbnRzWzJd
ID0gRmxvYXRQb2ludChhcnJvd1RpcFggKyBhcnJvd0hhbGZXaWR0aCwgYXJyb3dCYXNlWSk7Cisg
ICAgICAgIGNvbnRleHQuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3dQb2ludHMpOworCisgICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3Mo
Ym9yZGVyV2lkdGhQeCArIDEpOworICAgICAgICBJbnRQb2ludCBzdGFydFBvaW50ID0gSW50UG9p
bnQoYXJyb3dQb2ludHNbMF0ueCgpICsgMSwgYXJyb3dQb2ludHNbMF0ueSgpKTsKKyAgICAgICAg
SW50UG9pbnQgZW5kUG9pbnQgPSBJbnRQb2ludChhcnJvd1BvaW50c1syXS54KCkgLSAxLCBhcnJv
d1BvaW50c1syXS55KCkpOworICAgICAgICBjb250ZXh0LmRyYXdMaW5lKHN0YXJ0UG9pbnQsIGVu
ZFBvaW50KTsKKyAgICB9CisKKyAgICBpbnQgY3VycmVudFBvcyA9IDA7CisgICAgY3VycmVudFBv
cyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCB0YWdOYW1lTGVuZ3Ro
LCB0YWdDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBpZiAoaWRTdHJpbmdM
ZW5ndGgpCisgICAgICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1biwg
Y3VycmVudFBvcywgaWRTdHJpbmdMZW5ndGgsIGF0dHJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0
bGVSZWN0KTsKKyAgICBpZiAoY2xhc3Nlc1N0cmluZ0xlbmd0aCkKKyAgICAgICAgY3VycmVudFBv
cyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBjbGFzc2VzU3RyaW5n
TGVuZ3RoLCBhdHRyQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAgY3VycmVu
dFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCB3aWR0aE51bWJl
clBhcnQubGVuZ3RoKCksIG5vcm1hbENvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOwor
ICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywg
cHhTdHJpbmcubGVuZ3RoKCkgKyB0aW1lc1N0cmluZy5sZW5ndGgoKSwgcHhBbmRCb3JkZXJDb2xv
ciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBjdXJyZW50UG9zID0gZHJhd1N1YnN0
cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIGhlaWdodE51bWJlclBhcnQubGVuZ3RoKCks
IG5vcm1hbENvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGRyYXdTdWJzdHJp
bmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBweFN0cmluZy5sZW5ndGgoKSwgcHhBbmRCb3Jk
ZXJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKIH0KIAogfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5jc3MKaW5kZXggZjA3ZTJjMy4uYTI1NzgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMTg4OSw3ICsxODg5LDcgQEAg
Ym9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogfQogCiAubWV0
cmljcyAubWFyZ2luLmhvdmVyZWQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMzksIDE4
MiwgMjIxKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NiwgMTc4LCAxMDcsIC42Nik7
CiB9CiAKIC5tZXRyaWNzIC5ib3JkZXIgewpAQCAtMTkwMyw3ICsxOTAzLDcgQEAgYm9keS5wbGF0
Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogfQogCiAubWV0cmljcyAuYm9y
ZGVyLmhvdmVyZWQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxNTcsIDE5MywgMjI2KTsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjI5LCAxNTMsIC42Nik7CiB9CiAKIC5t
ZXRyaWNzIC5wYWRkaW5nIHsKQEAgLTE5MTcsNyArMTkxNyw3IEBAIGJvZHkucGxhdGZvcm0td2lu
ZG93cyAuc2lkZWJhci1wYW5lLXN1YnRpdGxlIHsKIH0KIAogLm1ldHJpY3MgLnBhZGRpbmcuaG92
ZXJlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3MywgMjA0LCAyMzEpOworICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYmEoMTQ3LCAxOTYsIDEyNSwgLjU1KTsKIH0KIAogLm1ldHJpY3Mg
LmNvbnRlbnQgewpAQCAtMTkzNSw3ICsxOTM1LDcgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5z
aWRlYmFyLXBhbmUtc3VidGl0bGUgewogfQogCiAubWV0cmljcyAuY29udGVudC5ob3ZlcmVkIHsK
LSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTkwLCAyMTQsIDIzNik7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiYSgxMTEsIDE2OCwgMjIwLCAuNjYpOwogfQogCiAubWV0cmljcyAuY29udGVu
dCBzcGFuIHsK
</data>
<flag name="commit-queue"
          id="99955"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104312</attachid>
            <date>2011-08-18 01:04:58 -0700</date>
            <delta_ts>2011-08-19 05:14:02 -0700</delta_ts>
            <desc>[PATCH] Global initializers fix attempt</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>16554</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGE2ZDkyZDU4ZDgxZGFmZGQwYjU1YWFiMDM5ZmMyNjVjMmExNDFjMjMKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBXZWQgQXVnIDEw
IDEzOjUwOjQ1IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y0OGFhMS4uZjNk
MzFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA4LTE3ICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5tZXRyaWNzIC5tYXJnaW4uaG92ZXJlZCk6
CisgICAgICAgICgubWV0cmljcyAuYm9yZGVyLmhvdmVyZWQpOgorICAgICAgICAoLm1ldHJpY3Mg
LnBhZGRpbmcuaG92ZXJlZCk6CisgICAgICAgICgubWV0cmljcyAuY29udGVudC5ob3ZlcmVkKToK
KwogMjAxMS0wOC0xNyAgU2FpbGVzaCBBZ3Jhd2FsICA8c2FpbEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQ2hyb21pdW0gTWFjOiBGaXggaXNzdWUgd2hlcmUgc2Nyb2xsYmFyIHdvdWxkbid0IGJl
IGRyYXduIHVudGlsIHBhZ2UgZmluaXNoZWQgbG9hZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAzOWJhODllLi4wNzJiMjIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcApA
QCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZvbnRD
YWNoZS5oIgorI2luY2x1ZGUgIkZvbnRGYW1pbHkuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNDMs
MTAgKzQ0LDIzIEBACiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHRS
dW4uaCIKIAorI2RlZmluZSBUT09MVElQX0ZPTlRfRkFNSUxJRVMoc2l6ZSwgLi4uKSBcCitzdGF0
aWMgdW5zaWduZWQgdG9vbHRpcEZvbnRGYWNlU2l6ZSA9IHNpemU7XAorc3RhdGljIFN0cmluZyB0
b29sdGlwRm9udEZhY2VbXSA9IHsgX19WQV9BUkdTX18gfTsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBuYW1lc3BhY2UgewogCitjb25zdCBzdGF0aWMgaW50IHJlY3RJbmZsYXRlUHggPSA0Owor
Y29uc3Qgc3RhdGljIGludCBmb250SGVpZ2h0UHggPSAxMjsKK2NvbnN0IHN0YXRpYyBpbnQgYm9y
ZGVyV2lkdGhQeCA9IDE7Citjb25zdCBzdGF0aWMgaW50IHRvb2x0aXBQYWRkaW5nID0gNDsKKwor
Y29uc3Qgc3RhdGljIGludCBhcnJvd1RpcE9mZnNldCA9IDIwOworY29uc3Qgc3RhdGljIGludCBh
cnJvd0hlaWdodCA9IDc7Citjb25zdCBzdGF0aWMgaW50IGFycm93SGFsZldpZHRoID0gNzsKKwog
UGF0aCBxdWFkVG9QYXRoKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKIHsKICAgICBQYXRoIHF1YWRQ
YXRoOwpAQCAtNTgsMTAgKzcyLDkgQEAgUGF0aCBxdWFkVG9QYXRoKGNvbnN0IEZsb2F0UXVhZCYg
cXVhZCkKICAgICByZXR1cm4gcXVhZFBhdGg7CiB9CiAKLXZvaWQgZHJhd091dGxpbmVkUXVhZChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgQ29s
b3ImIGZpbGxDb2xvcikKK3ZvaWQgZHJhd091dGxpbmVkUXVhZChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgQ29sb3ImIGZpbGxDb2xvciwgY29u
c3QgQ29sb3ImIG91dGxpbmVDb2xvcikKIHsKICAgICBzdGF0aWMgY29uc3QgaW50IG91dGxpbmVU
aGlja25lc3MgPSAyOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBvdXRsaW5lQ29sb3IoNjIsIDg2
LCAxODAsIDIyOCk7CiAKICAgICBQYXRoIHF1YWRQYXRoID0gcXVhZFRvUGF0aChxdWFkKTsKIApA
QCAtODMsNDcgKzk2LDUzIEBAIHZvaWQgZHJhd091dGxpbmVkUXVhZChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgQ29sCiAgICAgY29udGV4dC5m
aWxsUGF0aChxdWFkUGF0aCk7CiB9CiAKLXZvaWQgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBGbG9h
dFF1YWQmIGNsaXBRdWFkLCBjb25zdCBDb2xvciYgZmlsbENvbG9yKQordm9pZCBkcmF3T3V0bGlu
ZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQm
IHF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgY2xpcFF1YWQsIGNvbnN0IENvbG9yJiBmaWxsQ29sb3Is
IGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IpCiB7CiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAg
UGF0aCBjbGlwUXVhZFBhdGggPSBxdWFkVG9QYXRoKGNsaXBRdWFkKTsKICAgICBjb250ZXh0LmNs
aXBPdXQoY2xpcFF1YWRQYXRoKTsKLSAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIHF1YWQs
IGZpbGxDb2xvcik7CisgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBxdWFkLCBmaWxsQ29s
b3IsIG91dGxpbmVDb2xvcik7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgZHJh
d0hpZ2hsaWdodEZvckJveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVh
ZCYgY29udGVudFF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0
UXVhZCYgYm9yZGVyUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBET01Ob2RlSGln
aGxpZ2h0ZXI6OkhpZ2hsaWdodE1vZGUgbW9kZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3Ig
Y29udGVudEJveENvbG9yKDEyNSwgMTczLCAyMTcsIDEyOCk7Ci0gICAgc3RhdGljIGNvbnN0IENv
bG9yIHBhZGRpbmdCb3hDb2xvcigxMjUsIDE3MywgMjE3LCAxNjApOwotICAgIHN0YXRpYyBjb25z
dCBDb2xvciBib3JkZXJCb3hDb2xvcigxMjUsIDE3MywgMjE3LCAxOTIpOwotICAgIHN0YXRpYyBj
b25zdCBDb2xvciBtYXJnaW5Cb3hDb2xvcigxMjUsIDE3MywgMjE3LCAyMjgpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ29sb3IsIGNvbnRlbnRCb3hDb2xvciwgKDExMSwgMTY4LCAyMjAsIDE2
OCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHBhZGRpbmdCb3hDb2xvciwgKDE0
NywgMTk2LCAxMjUsIDEyOCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGJvcmRl
ckJveENvbG9yLCAoMjU1LCAyMjksIDE1MywgMTY4KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDb2xvciwgbWFyZ2luQm94Q29sb3IsICgyNDYsIDE3OCwgMTA3LCAxNjgpKTsKKworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGNvbnRlbnRPdXRsaW5lQ29sb3IsICg5LCA4MywgMTQ4
KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgcGFkZGluZ091dGxpbmVDb2xvciwg
KDU1LCAxMTgsIDI4KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgYm9yZGVyT3V0
bGluZUNvbG9yLCAoMTI3LCA5NiwgMCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3Is
IG1hcmdpbk91dGxpbmVDb2xvciwgKDE4MCwgOTUsIDQpKTsKIAogICAgIEZsb2F0UXVhZCBjbGlw
UXVhZDsKICAgICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1hcmdp
biB8fCAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCAmJiBtYXJnaW5R
dWFkICE9IGJvcmRlclF1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChj
b250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBtYXJnaW5Cb3hDb2xvcik7CisgICAgICAg
IGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFk
LCBtYXJnaW5Cb3hDb2xvciwgbWFyZ2luT3V0bGluZUNvbG9yKTsKICAgICAgICAgY2xpcFF1YWQg
PSBib3JkZXJRdWFkOwogICAgIH0KICAgICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6
OkhpZ2hsaWdodEJvcmRlciB8fCAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdo
dEFsbCAmJiBib3JkZXJRdWFkICE9IHBhZGRpbmdRdWFkKSkgewotICAgICAgICBkcmF3T3V0bGlu
ZWRRdWFkV2l0aENsaXAoY29udGV4dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGJvcmRlckJv
eENvbG9yKTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRl
clF1YWQsIHBhZGRpbmdRdWFkLCBib3JkZXJCb3hDb2xvciwgYm9yZGVyT3V0bGluZUNvbG9yKTsK
ICAgICAgICAgY2xpcFF1YWQgPSBwYWRkaW5nUXVhZDsKICAgICB9CiAgICAgaWYgKG1vZGUgPT0g
RE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRQYWRkaW5nIHx8IChtb2RlID09IERPTU5vZGVI
aWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsICYmIHBhZGRpbmdRdWFkICE9IGNvbnRlbnRRdWFkKSkg
ewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgcGFkZGluZ1F1YWQs
IGNvbnRlbnRRdWFkLCBwYWRkaW5nQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFk
V2l0aENsaXAoY29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBwYWRkaW5nQm94Q29s
b3IsIHBhZGRpbmdPdXRsaW5lQ29sb3IpOwogICAgICAgICBjbGlwUXVhZCA9IGNvbnRlbnRRdWFk
OwogICAgIH0KICAgICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodENv
bnRlbnQgfHwgbW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCkKLSAgICAg
ICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgY29udGVudEJveENvbG9y
KTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgY29udGVu
dEJveENvbG9yLCBjb250ZW50T3V0bGluZUNvbG9yKTsKICAgICBlbHNlCi0gICAgICAgIGRyYXdP
dXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNvbnRlbnRC
b3hDb2xvcik7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBjbGlw
UXVhZCwgY2xpcFF1YWQsIGNvbnRlbnRCb3hDb2xvciwgY29udGVudE91dGxpbmVDb2xvcik7CiB9
CiAKIHZvaWQgZHJhd0hpZ2hsaWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgbGluZUJveFF1YWRzKQog
ewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBsaW5lQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTI4
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBsaW5lQm94Q29sb3IsICgxMTEsIDE2
OCwgMjIwLCAxNjgpKTsgLy8gU2FtZSBhcyBjb250ZW50Qm94Q29sb3IuCisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDb2xvciwgbGluZUJveE91dGxpbmVDb2xvciwgKDksIDgzLCAxNDgpKTsgLy8g
U2FtZSBhcyBjb250ZW50T3V0bGluZUNvbG9yLgogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsaW5lQm94UXVhZHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29u
dGV4dCwgbGluZUJveFF1YWRzW2ldLCBsaW5lQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0bGlu
ZWRRdWFkKGNvbnRleHQsIGxpbmVCb3hRdWFkc1tpXSwgbGluZUJveENvbG9yLCBsaW5lQm94T3V0
bGluZUNvbG9yKTsKIH0KIAogaW5saW5lIEludFNpemUgZnJhbWVUb01haW5GcmFtZU9mZnNldChG
cmFtZSogZnJhbWUpCkBAIC0xMzIsNTAgKzE1MSwxMTcgQEAgaW5saW5lIEludFNpemUgZnJhbWVU
b01haW5GcmFtZU9mZnNldChGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIG1haW5GcmFtZVBvaW50
IC0gSW50UG9pbnQoKTsKIH0KIAoraW50IGRyYXdTdWJzdHJpbmcoY29uc3QgVGV4dFJ1biYgZ2xv
YmFsVGV4dFJ1biwgaW50IG9mZnNldCwgaW50IGxlbmd0aCwgY29uc3QgQ29sb3ImIHRleHRDb2xv
ciwgY29uc3QgRm9udCYgZm9udCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiB0aXRsZVJlY3QpCit7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIGdsb2JhbFRl
eHRSdW4sIEludFBvaW50KHRpdGxlUmVjdC54KCkgKyByZWN0SW5mbGF0ZVB4LCB0aXRsZVJlY3Qu
eSgpICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKSwgb2Zmc2V0LCBvZmZzZXQgKyBsZW5n
dGgpOworICAgIHJldHVybiBvZmZzZXQgKyBsZW5ndGg7Cit9CisKK2ludCBjYWxjdWxhdGVBcnJv
d1RpcFgoY29uc3QgSW50UmVjdCYgYW5jaG9yQm94LCBjb25zdCBJbnRSZWN0JiB0aXRsZVJlY3Qp
Cit7CisgICAgaW50IGFuY2hvclggPSBhbmNob3JCb3gueCgpOworCisgICAgLy8gQ2hlY2sgZm9y
IGhlYXZpbHkgbWlzYWxpZ25lZCB0b29sdGlwIGZpcnN0LgorICAgIGlmICh0aXRsZVJlY3QueCgp
ID4gYW5jaG9yQm94Lm1heFgoKSkKKyAgICAgICAgcmV0dXJuIHRpdGxlUmVjdC54KCkgKyBhcnJv
d0hhbGZXaWR0aDsKKworICAgIGlmICh0aXRsZVJlY3QubWF4WCgpIDwgYW5jaG9yWCkKKyAgICAg
ICAgcmV0dXJuIHRpdGxlUmVjdC5tYXhYKCkgLSBhcnJvd0hhbGZXaWR0aDsKKworICAgIGludCB4
ID0gdGl0bGVSZWN0LngoKSArIGFycm93VGlwT2Zmc2V0OworICAgIGlmICh4IDwgYW5jaG9yWCkK
KyAgICAgICAgeCA9IGFuY2hvclggKyBhcnJvd1RpcE9mZnNldDsKKyAgICBpZiAoeCA+IHRpdGxl
UmVjdC5tYXhYKCkgLSBhcnJvd0hhbGZXaWR0aCkKKyAgICAgICAgeCA9IHRpdGxlUmVjdC5tYXhY
KCkgLSBhcnJvd0hhbGZXaWR0aDsKKworICAgIHJldHVybiB4OworfQorCiB2b2lkIGRyYXdFbGVt
ZW50VGl0bGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBjb25zdCBJbnRS
ZWN0JiBib3VuZGluZ0JveCwgY29uc3QgSW50UmVjdCYgYW5jaG9yQm94LCBjb25zdCBGbG9hdFJl
Y3QmIG92ZXJsYXlSZWN0LCBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGludCByZWN0SW5mbGF0ZVB4ID0gNDsKLSAgICBzdGF0aWMgY29uc3QgaW50IGZv
bnRIZWlnaHRQeCA9IDEyOwotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQeCA9IDE7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEJhY2tncm91bmRDb2xvciwg
KDI1NSwgMjU1LCAxOTQsIDI1NSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRv
b2x0aXBCb3JkZXJDb2xvciwgKENvbG9yOjpibGFjaykpOwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ29sb3IsIHRvb2x0aXBGb250Q29sb3IsIChDb2xvcjo6YmxhY2spKTsKKyNpZiBPUyhXSU5E
T1dTKQorVE9PTFRJUF9GT05UX0ZBTUlMSUVTKDIsIFN0cmluZygiQ29uc29sYXMiKSwgU3RyaW5n
KCJMdWNpZGEgQ29uc29sZSIpKQorI2VsaWYgT1MoVU5JWCkKK1RPT0xUSVBfRk9OVF9GQU1JTElF
UygxLCBTdHJpbmcoImRlamF2dSBzYW5zIG1vbm8iKSkKKyNlbGlmIE9TKE1BQ19PU19YKQorVE9P
TFRJUF9GT05UX0ZBTUlMSUVTKDIsIFN0cmluZygiTWVubG8iKSwgU3RyaW5nKCJNb25hY28iKSkK
KyNlbmRpZgorLy8gSW4gdGhlIGRlZmF1bHQgY2FzZSwgd2UgZ2V0IHRoZSBzZXR0aW5ncy1wcm92
aWRlZCBtb25vc3BhY2UgZm9udC4KKworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGJh
Y2tncm91bmRDb2xvciwgKDI1NSwgMjU1LCAxOTQsIDI1NSkpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ29sb3IsIHRhZ0NvbG9yLCAoMTM2LCAxOCwgMTI4KSk7IC8vIFNhbWUgYXMgLndlYmtp
dC1odG1sLXRhZy4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBhdHRyQ29sb3IsICgy
NiwgMjYsIDE2NikpOyAvLyBTYW1lIGFzIC53ZWJraXQtaHRtbC1hdHRyaWJ1dGUtdmFsdWUuCisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgbm9ybWFsQ29sb3IsIChDb2xvcjo6YmxhY2sp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBweEFuZEJvcmRlckNvbG9yLCAoMTI4
LCAxMjgsIDEyOCkpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHB4U3RyaW5n
LCAoInB4IikpOworICAgIGNvbnN0IHN0YXRpYyBVQ2hhciB0aW1lc1VDaGFyW10gPSB7IDB4MDBE
NywgMCB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0aW1lc1N0cmluZywgKHRp
bWVzVUNoYXIpKTsgLy8gJnRpbWVzOyBzdHJpbmcKKwogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVu
dGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKICAgICBib29sIGlzWEhUTUwgPSBlbGVtZW50LT5k
b2N1bWVudCgpLT5pc1hIVE1MRG9jdW1lbnQoKTsKLSAgICBTdHJpbmcgbm9kZVRpdGxlID0gaXNY
SFRNTCA/IGVsZW1lbnQtPm5vZGVOYW1lKCkgOiBlbGVtZW50LT5ub2RlTmFtZSgpLmxvd2VyKCk7
CisgICAgU3RyaW5nIG5vZGVUaXRsZShpc1hIVE1MID8gZWxlbWVudC0+bm9kZU5hbWUoKSA6IGVs
ZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKSk7CisgICAgdW5zaWduZWQgdGFnTmFtZUxlbmd0aCA9
IG5vZGVUaXRsZS5sZW5ndGgoKTsKKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRWYWx1ZSA9
IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAgdW5zaWduZWQgaWRTdHJpbmdMZW5ndGgg
PSAwOworICAgIFN0cmluZyBpZFN0cmluZzsKICAgICBpZiAoIWlkVmFsdWUuaXNOdWxsKCkgJiYg
IWlkVmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5vZGVUaXRsZSArPSAiIyI7CiAgICAgICAg
IG5vZGVUaXRsZSArPSBpZFZhbHVlOworICAgICAgICBpZFN0cmluZ0xlbmd0aCA9IDEgKyBpZFZh
bHVlLmxlbmd0aCgpOwogICAgIH0KKworICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xh
c3NOYW1lczsKKyAgICB1bnNpZ25lZCBjbGFzc2VzU3RyaW5nTGVuZ3RoID0gMDsKICAgICBpZiAo
ZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkgewogICAg
ICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzU3RyaW5nID0gc3RhdGljX2Nh
c3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCk7CiAgICAgICAgIHNpemVf
dCBjbGFzc05hbWVDb3VudCA9IGNsYXNzTmFtZXNTdHJpbmcuc2l6ZSgpOwotICAgICAgICBpZiAo
Y2xhc3NOYW1lQ291bnQpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2Vk
Q2xhc3NOYW1lczsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1l
Q291bnQ7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NO
YW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKLSAgICAgICAgICAgICAgICBpZiAodXNlZENsYXNz
TmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNsYXNzTmFtZSk7Ci0gICAgICAg
ICAgICAgICAgbm9kZVRpdGxlICs9ICIuIjsKLSAgICAgICAgICAgICAgICBub2RlVGl0bGUgKz0g
Y2xhc3NOYW1lOwotICAgICAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNsYXNzTmFtZUNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Y2xhc3NOYW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKKyAgICAgICAgICAgIGlmICh1c2VkQ2xh
c3NOYW1lcy5jb250YWlucyhjbGFzc05hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNsYXNzTmFtZSk7CisgICAgICAgICAgICBu
b2RlVGl0bGUgKz0gIi4iOworICAgICAgICAgICAgbm9kZVRpdGxlICs9IGNsYXNzTmFtZTsKKyAg
ICAgICAgICAgIGNsYXNzZXNTdHJpbmdMZW5ndGggKz0gMSArIGNsYXNzTmFtZS5sZW5ndGgoKTsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIG5vZGVUaXRsZSArPSAiIFsiOwotICAgIG5vZGVUaXRs
ZSArPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC53aWR0aCgpKTsKLSAgICBub2RlVGl0bGUu
YXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPigweDAwRDcpKTsgLy8gJnRpbWVzOwotICAgIG5vZGVU
aXRsZSArPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgbm9kZVRp
dGxlICs9ICJdIjsKKyAgICBTdHJpbmcgd2lkdGhOdW1iZXJQYXJ0ID0gIiAiICsgU3RyaW5nOjpu
dW1iZXIoYm91bmRpbmdCb3gud2lkdGgoKSk7CisgICAgbm9kZVRpdGxlICs9IHdpZHRoTnVtYmVy
UGFydCArIHB4U3RyaW5nOworICAgIG5vZGVUaXRsZSArPSB0aW1lc1N0cmluZzsgLy8gJnRpbWVz
OyBzdXJyb3VuZGVkIGJ5IHNwYWNlcworICAgIFN0cmluZyBoZWlnaHROdW1iZXJQYXJ0ID0gU3Ry
aW5nOjpudW1iZXIoYm91bmRpbmdCb3guaGVpZ2h0KCkpOworICAgIG5vZGVUaXRsZSArPSBoZWln
aHROdW1iZXJQYXJ0ICsgcHhTdHJpbmc7CiAKICAgICBGb250RGVzY3JpcHRpb24gZGVzYzsKLSAg
ICBGb250RmFtaWx5IGZhbWlseTsKLSAgICBmYW1pbHkuc2V0RmFtaWx5KHNldHRpbmdzLT5maXhl
ZEZvbnRGYW1pbHkoKSk7Ci0gICAgZGVzYy5zZXRGYW1pbHkoZmFtaWx5KTsKKyAgICBkZXNjLnNl
dFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOworICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZml4ZWRGb250RmFtaWx5ID0gc2V0dGluZ3MtPmZpeGVkRm9udEZhbWls
eSgpOworICAgIGlmICghZml4ZWRGb250RmFtaWx5LmlzRW1wdHkoKSkgeworICAgICAgICBkZXNj
LnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkpOworICAg
ICAgICBBdG9taWNTdHJpbmcgZmFjZTsKKyAgICAgICAgRm9udEZhbWlseSogY3VyckZhbWlseSA9
IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b29sdGlwRm9udEZhY2VTaXpl
OyArK2kpIHsKKyAgICAgICAgICAgIGZhY2UgPSBBdG9taWNTdHJpbmcodG9vbHRpcEZvbnRGYWNl
W2ldKTsKKyAgICAgICAgICAgIGlmICghY3VyckZhbWlseSkgeworICAgICAgICAgICAgICAgIGRl
c2MuZmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoZmFjZSk7CisgICAgICAgICAgICAgICAgZGVzYy5m
aXJzdEZhbWlseSgpLmFwcGVuZEZhbWlseSgwKTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5
ID0gJmRlc2MuZmlyc3RGYW1pbHkoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNoYXJlZEZvbnRGYW1p
bHk6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIG5ld0ZhbWlseS0+c2V0RmFtaWx5KGZhY2Up
OworICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPmFwcGVuZEZhbWlseShuZXdGYW1pbHkpOwor
ICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWls
eSA9IFNoYXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgpOworICAgICAgICBuZXdGYW1pbHktPnNldEZh
bWlseShmaXhlZEZvbnRGYW1pbHkpOworICAgICAgICBjdXJyRmFtaWx5LT5hcHBlbmRGYW1pbHko
bmV3RmFtaWx5KTsKKyAgICAgICAgY3VyckZhbWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKKyAgICB9
CiAgICAgZGVzYy5zZXRDb21wdXRlZFNpemUoZm9udEhlaWdodFB4KTsKICAgICBGb250IGZvbnQg
PSBGb250KGRlc2MsIDAsIDApOwogICAgIGZvbnQudXBkYXRlKDApOwpAQCAtMjExLDEyICsyOTcs
NDIgQEAgdm9pZCBkcmF3RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9k
ZSogbm9kZSwgY29uc3QgSW50UmVjdCYgYm91bmQKICAgICAgICAgZHkgPSBvdmVybGF5UmVjdC55
KCkgLSB0aXRsZVJlY3QueSgpICsgYm9yZGVyV2lkdGhQeDsKIAogICAgIHRpdGxlUmVjdC5tb3Zl
KGR4LCBkeSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih0b29sdGlwQm9yZGVyQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworCisgICAgYm9vbCBpc0Fycm93QXRUb3AgPSB0aXRsZVJl
Y3QueSgpID4gYW5jaG9yQm94LnkoKTsKKyAgICB0aXRsZVJlY3QubW92ZSgwLCB0b29sdGlwUGFk
ZGluZyAqIChpc0Fycm93QXRUb3AgPyAxIDogLTEpKTsKKworICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IocHhBbmRCb3JkZXJDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoYm9yZGVyV2lkdGhQeCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IodG9vbHRpcEJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICBjb250ZXh0LmRyYXdSZWN0KHRpdGxlUmVjdCk7Ci0gICAgY29udGV4dC5zZXRGaWxs
Q29sb3IodG9vbHRpcEZvbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4
dC5kcmF3VGV4dChmb250LCBub2RlVGl0bGVSdW4sIEludFBvaW50KHRpdGxlUmVjdC54KCkgKyBy
ZWN0SW5mbGF0ZVB4LCB0aXRsZVJlY3QueSgpICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgp
KSk7CisKKyAgICB7CisgICAgICAgIGludCBhcnJvd1RpcFggPSBjYWxjdWxhdGVBcnJvd1RpcFgo
YW5jaG9yQm94LCB0aXRsZVJlY3QpOworICAgICAgICBGbG9hdFBvaW50IGFycm93UG9pbnRzWzNd
OworICAgICAgICBmbG9hdCBhcnJvd0Jhc2VZID0gaXNBcnJvd0F0VG9wID8gdGl0bGVSZWN0Lnko
KSA6IHRpdGxlUmVjdC5tYXhZKCk7CisgICAgICAgIGFycm93UG9pbnRzWzBdID0gRmxvYXRQb2lu
dChhcnJvd1RpcFggLSBhcnJvd0hhbGZXaWR0aCwgYXJyb3dCYXNlWSk7CisgICAgICAgIGFycm93
UG9pbnRzWzFdID0gRmxvYXRQb2ludChhcnJvd1RpcFgsIGFycm93QmFzZVkgKyBhcnJvd0hlaWdo
dCAqIChpc0Fycm93QXRUb3AgPyAtMSA6IDEpKTsKKyAgICAgICAgYXJyb3dQb2ludHNbMl0gPSBG
bG9hdFBvaW50KGFycm93VGlwWCArIGFycm93SGFsZldpZHRoLCBhcnJvd0Jhc2VZKTsKKyAgICAg
ICAgY29udGV4dC5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvd1BvaW50cyk7CisKKyAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhib3Jk
ZXJXaWR0aFB4ICsgMSk7CisgICAgICAgIEludFBvaW50IHN0YXJ0UG9pbnQgPSBJbnRQb2ludChh
cnJvd1BvaW50c1swXS54KCkgKyAxLCBhcnJvd1BvaW50c1swXS55KCkpOworICAgICAgICBJbnRQ
b2ludCBlbmRQb2ludCA9IEludFBvaW50KGFycm93UG9pbnRzWzJdLngoKSAtIDEsIGFycm93UG9p
bnRzWzJdLnkoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0xpbmUoc3RhcnRQb2ludCwgZW5kUG9p
bnQpOworICAgIH0KKworICAgIGludCBjdXJyZW50UG9zID0gMDsKKyAgICBjdXJyZW50UG9zID0g
ZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHRhZ05hbWVMZW5ndGgsIHRh
Z0NvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGlmIChpZFN0cmluZ0xlbmd0
aCkKKyAgICAgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJy
ZW50UG9zLCBpZFN0cmluZ0xlbmd0aCwgYXR0ckNvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJl
Y3QpOworICAgIGlmIChjbGFzc2VzU3RyaW5nTGVuZ3RoKQorICAgICAgICBjdXJyZW50UG9zID0g
ZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIGNsYXNzZXNTdHJpbmdMZW5n
dGgsIGF0dHJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBjdXJyZW50UG9z
ID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHdpZHRoTnVtYmVyUGFy
dC5sZW5ndGgoKSwgbm9ybWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAg
Y3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBweFN0
cmluZy5sZW5ndGgoKSArIHRpbWVzU3RyaW5nLmxlbmd0aCgpLCBweEFuZEJvcmRlckNvbG9yLCBm
b250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5n
KG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgaGVpZ2h0TnVtYmVyUGFydC5sZW5ndGgoKSwgbm9y
bWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAgZHJhd1N1YnN0cmluZyhu
b2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHB4U3RyaW5nLmxlbmd0aCgpLCBweEFuZEJvcmRlckNv
bG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOwogfQogCiB9IC8vIGFub255bW91cyBuYW1l
c3BhY2UKQEAgLTMzNyw0ICs0NTMsNiBAQCB2b2lkIGRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgRG9jdW1lbnQqIGRvY3VtZW50LCBJbnRSZWN0KiByZQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKKyN1bmRlZiBUT09MVElQX0ZPTlRfRkFNSUxJRVMKKwogI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggZjA3ZTJjMy4uYTI1NzgyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMTg4
OSw3ICsxODg5LDcgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0
bGUgewogfQogCiAubWV0cmljcyAubWFyZ2luLmhvdmVyZWQgewotICAgIGJhY2tncm91bmQtY29s
b3I6IHJnYigxMzksIDE4MiwgMjIxKTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0Niwg
MTc4LCAxMDcsIC42Nik7CiB9CiAKIC5tZXRyaWNzIC5ib3JkZXIgewpAQCAtMTkwMyw3ICsxOTAz
LDcgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogfQog
CiAubWV0cmljcyAuYm9yZGVyLmhvdmVyZWQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigx
NTcsIDE5MywgMjI2KTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjI5LCAxNTMs
IC42Nik7CiB9CiAKIC5tZXRyaWNzIC5wYWRkaW5nIHsKQEAgLTE5MTcsNyArMTkxNyw3IEBAIGJv
ZHkucGxhdGZvcm0td2luZG93cyAuc2lkZWJhci1wYW5lLXN1YnRpdGxlIHsKIH0KIAogLm1ldHJp
Y3MgLnBhZGRpbmcuaG92ZXJlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3MywgMjA0
LCAyMzEpOworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTQ3LCAxOTYsIDEyNSwgLjU1KTsK
IH0KIAogLm1ldHJpY3MgLmNvbnRlbnQgewpAQCAtMTkzNSw3ICsxOTM1LDcgQEAgYm9keS5wbGF0
Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogfQogCiAubWV0cmljcyAuY29u
dGVudC5ob3ZlcmVkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTkwLCAyMTQsIDIzNik7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMTEsIDE2OCwgMjIwLCAuNjYpOwogfQogCiAu
bWV0cmljcyAuY29udGVudCBzcGFuIHsK
</data>
<flag name="review"
          id="100091"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104493</attachid>
            <date>2011-08-19 05:14:02 -0700</date>
            <delta_ts>2011-08-19 10:14:26 -0700</delta_ts>
            <desc>[PATCH] Comments addressed</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>45731</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDExNzBjYWUxYWE1MmRkNjg1NzA0ZDA0N2FlZTZkZWI2NjAxNjRjZWUKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgQXVnIDE5
IDE0OjUzOjQ4IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZmYTRlZi4uOGQ5
Y2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDExLTA4LTE5ICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBUaGUgaGlnaGxpZ2h0aW5nIEFQSSBpcyBzbGlnaHRseSBjaGFuZ2VkOiBj
bGllbnRzIG5lZWQgdG8gc3BlY2lmeSBjb2xvcnMgZm9yIGNlcnRhaW4gZWxlbWVudHMgb2YgdGhl
IGhpZ2hsaWdodGVkIG9iamVjdHMsCisgICAgICAgIHJhdGhlciB0aGFuIGEgZ2VuZXJpYyAiaGln
aGxpZ2h0aW5nIG1vZGUiLiBUaGlzIGFsbG93cyB0bzoKKyAgICAgICAgLSB1c2UgZW50aXJlbHkg
Y3VzdG9tIGNvbG9ycyBmb3IgaGlnaGxpZ2h0aW5nOworICAgICAgICAtIGRpc3BsYXkgYW55IGNv
bWJpbmF0aW9uIG9mIGZpbGwvb3V0bGluZSBmb3IgdGhlIGhpZ2hsaWdodGVkIGFyZWE7CisgICAg
ICAgIC0gaGlnaGxpZ2h0IGFueSBjb21iaW5hdGlvbnMgb2YgZWxlbWVudCBwYXJ0cy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9E
T01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NTm9kZUhpZ2hsaWdo
dGVyOjpkcmF3Tm9kZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpET01Ob2RlSGlnaGxp
Z2h0ZXI6OmRyYXdSZWN0SGlnaGxpZ2h0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIaWdobGlnaHRDb2xvcnM6OkhpZ2hsaWdo
dENvbG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpIaWdobGlnaHRDb2xvcnM6OmlzRnVsbEhpZ2hs
aWdodCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVP
dmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlkZUhpZ2hsaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZHJhd0hpZ2hsaWdodCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Db2xvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUu
dG9Qcm90b2NvbFJHQkEpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1Np
ZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5w
cm90b3R5cGUuX2hpZ2hsaWdodERPTU5vZGUuaGFuZGxlTW91c2VPdmVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9oaWdobGlnaHRET01Ob2Rl
LmhhbmRsZU1vdXNlT3V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBh
bmUucHJvdG90eXBlLl9oaWdobGlnaHRET01Ob2RlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0RE9NTm9kZSk6CisKIDIw
MTEtMDgtMTggIFRha2FzaGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJlbW92ZSBhcmd1bWVudHMgZnJvbSBDbG9zZUV2ZW50OjpjcmVhdGUoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKaW5kZXggMDRi
YjQ0OC4uNjM3YTZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5v
ZGVIaWdobGlnaHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVI
aWdobGlnaHRlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJGb250Q2FjaGUuaCIKKyNpbmNsdWRlICJGb250RmFtaWx5LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKQEAgLTQzLDEwICs0NCwyMyBAQAogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJUZXh0UnVuLmgiCiAKKyNkZWZpbmUgVE9PTFRJUF9GT05UX0ZBTUlMSUVTKHNp
emUsIC4uLikgXAorc3RhdGljIHVuc2lnbmVkIHRvb2x0aXBGb250RmFjZVNpemUgPSBzaXplO1wK
K3N0YXRpYyBTdHJpbmcgdG9vbHRpcEZvbnRGYWNlW10gPSB7IF9fVkFfQVJHU19fIH07CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAorY29uc3Qgc3RhdGljIGludCByZWN0
SW5mbGF0ZVB4ID0gNDsKK2NvbnN0IHN0YXRpYyBpbnQgZm9udEhlaWdodFB4ID0gMTI7Citjb25z
dCBzdGF0aWMgaW50IGJvcmRlcldpZHRoUHggPSAxOworY29uc3Qgc3RhdGljIGludCB0b29sdGlw
UGFkZGluZyA9IDQ7CisKK2NvbnN0IHN0YXRpYyBpbnQgYXJyb3dUaXBPZmZzZXQgPSAyMDsKK2Nv
bnN0IHN0YXRpYyBpbnQgYXJyb3dIZWlnaHQgPSA3OworY29uc3Qgc3RhdGljIGludCBhcnJvd0hh
bGZXaWR0aCA9IDc7CisKIFBhdGggcXVhZFRvUGF0aChjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiB7
CiAgICAgUGF0aCBxdWFkUGF0aDsKQEAgLTU4LDEwICs3Miw5IEBAIFBhdGggcXVhZFRvUGF0aChj
b25zdCBGbG9hdFF1YWQmIHF1YWQpCiAgICAgcmV0dXJuIHF1YWRQYXRoOwogfQogCi12b2lkIGRy
YXdPdXRsaW5lZFF1YWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQm
IHF1YWQsIGNvbnN0IENvbG9yJiBmaWxsQ29sb3IpCit2b2lkIGRyYXdPdXRsaW5lZFF1YWQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IENvbG9y
JiBmaWxsQ29sb3IsIGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IpCiB7CiAgICAgc3RhdGljIGNv
bnN0IGludCBvdXRsaW5lVGhpY2tuZXNzID0gMjsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3Igb3V0
bGluZUNvbG9yKDYyLCA4NiwgMTgwLCAyMjgpOwogCiAgICAgUGF0aCBxdWFkUGF0aCA9IHF1YWRU
b1BhdGgocXVhZCk7CiAKQEAgLTgzLDQ3ICs5Niw0MyBAQCB2b2lkIGRyYXdPdXRsaW5lZFF1YWQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IENv
bAogICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFBhdGgpOwogfQogCi12b2lkIGRyYXdPdXRsaW5l
ZFF1YWRXaXRoQ2xpcChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYg
cXVhZCwgY29uc3QgRmxvYXRRdWFkJiBjbGlwUXVhZCwgY29uc3QgQ29sb3ImIGZpbGxDb2xvcikK
K3ZvaWQgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBGbG9hdFF1YWQmIGNsaXBRdWFkLCBjb25zdCBD
b2xvciYgZmlsbENvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKQogewogICAgIGNvbnRl
eHQuc2F2ZSgpOwogICAgIFBhdGggY2xpcFF1YWRQYXRoID0gcXVhZFRvUGF0aChjbGlwUXVhZCk7
CiAgICAgY29udGV4dC5jbGlwT3V0KGNsaXBRdWFkUGF0aCk7Ci0gICAgZHJhd091dGxpbmVkUXVh
ZChjb250ZXh0LCBxdWFkLCBmaWxsQ29sb3IpOworICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4
dCwgcXVhZCwgZmlsbENvbG9yLCBvdXRsaW5lQ29sb3IpOwogICAgIGNvbnRleHQucmVzdG9yZSgp
OwogfQogCi12b2lkIGRyYXdIaWdobGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFF1YWQmIGNvbnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQmIHBhZGRpbmdR
dWFkLCBjb25zdCBGbG9hdFF1YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgbWFyZ2lu
UXVhZCwgRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNb2RlIG1vZGUpCit2b2lkIGRyYXdI
aWdobGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQm
IGNvbnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQmIHBhZGRpbmdRdWFkLCBjb25zdCBGbG9hdFF1
YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgbWFyZ2luUXVhZCwgSGlnaGxpZ2h0Q29s
b3JzKiBoaWdobGlnaHRDb2xvcnMpCiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGNvbnRlbnRC
b3hDb2xvcigxMjUsIDE3MywgMjE3LCAxMjgpOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBwYWRk
aW5nQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTYwKTsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3Ig
Ym9yZGVyQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTkyKTsKLSAgICBzdGF0aWMgY29uc3QgQ29s
b3IgbWFyZ2luQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMjI4KTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENvbG9yLCBkZWZhdWx0Q29udGVudEJveENvbG9yLCAoMTExLCAxNjgsIDIyMCwgMTY4
KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgZGVmYXVsdENvbnRlbnRPdXRsaW5l
Q29sb3IsICg5LCA4MywgMTQ4KSk7CiAKICAgICBGbG9hdFF1YWQgY2xpcFF1YWQ7Ci0gICAgaWYg
KG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNYXJnaW4gfHwgKG1vZGUgPT0g
RE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgbWFyZ2luUXVhZCAhPSBib3JkZXJR
dWFkKSkgewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgbWFyZ2lu
UXVhZCwgYm9yZGVyUXVhZCwgbWFyZ2luQm94Q29sb3IpOworICAgIGlmICgoaGlnaGxpZ2h0Q29s
b3JzLT5oYXNNYXJnaW4gJiYgIWhpZ2hsaWdodENvbG9ycy0+aGFzQm9yZGVyKSB8fCAoaGlnaGxp
Z2h0Q29sb3JzLT5pc0Z1bGxIaWdobGlnaHQoKSAmJiBtYXJnaW5RdWFkICE9IGJvcmRlclF1YWQp
KSB7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFk
LCBib3JkZXJRdWFkLCBoaWdobGlnaHRDb2xvcnMtPm1hcmdpbiwgaGlnaGxpZ2h0Q29sb3JzLT5t
YXJnaW5PdXRsaW5lKTsKICAgICAgICAgY2xpcFF1YWQgPSBib3JkZXJRdWFkOwogICAgIH0KLSAg
ICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEJvcmRlciB8fCAobW9k
ZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCAmJiBib3JkZXJRdWFkICE9IHBh
ZGRpbmdRdWFkKSkgewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwg
Ym9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGJvcmRlckJveENvbG9yKTsKKyAgICBpZiAoKGhpZ2hs
aWdodENvbG9ycy0+aGFzQm9yZGVyICYmICFoaWdobGlnaHRDb2xvcnMtPmhhc1BhZGRpbmcpIHx8
IChoaWdobGlnaHRDb2xvcnMtPmlzRnVsbEhpZ2hsaWdodCgpICYmIGJvcmRlclF1YWQgIT0gcGFk
ZGluZ1F1YWQpKSB7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBi
b3JkZXJRdWFkLCBwYWRkaW5nUXVhZCwgaGlnaGxpZ2h0Q29sb3JzLT5ib3JkZXIsIGhpZ2hsaWdo
dENvbG9ycy0+Ym9yZGVyT3V0bGluZSk7CiAgICAgICAgIGNsaXBRdWFkID0gcGFkZGluZ1F1YWQ7
CiAgICAgfQotICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0UGFk
ZGluZyB8fCAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCAmJiBwYWRk
aW5nUXVhZCAhPSBjb250ZW50UXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhD
bGlwKGNvbnRleHQsIHBhZGRpbmdRdWFkLCBjb250ZW50UXVhZCwgcGFkZGluZ0JveENvbG9yKTsK
KyAgICBpZiAoKGhpZ2hsaWdodENvbG9ycy0+aGFzUGFkZGluZyAmJiAhaGlnaGxpZ2h0Q29sb3Jz
LT5oYXNDb250ZW50KSB8fCAoaGlnaGxpZ2h0Q29sb3JzLT5pc0Z1bGxIaWdobGlnaHQoKSAmJiBw
YWRkaW5nUXVhZCAhPSBjb250ZW50UXVhZCkpIHsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdp
dGhDbGlwKGNvbnRleHQsIHBhZGRpbmdRdWFkLCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0Q29sb3Jz
LT5wYWRkaW5nLCBoaWdobGlnaHRDb2xvcnMtPnBhZGRpbmdPdXRsaW5lKTsKICAgICAgICAgY2xp
cFF1YWQgPSBjb250ZW50UXVhZDsKICAgICB9Ci0gICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hs
aWdodGVyOjpIaWdobGlnaHRDb250ZW50IHx8IG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpI
aWdobGlnaHRBbGwpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgY29udGVudFF1
YWQsIGNvbnRlbnRCb3hDb2xvcik7CisgICAgaWYgKGhpZ2hsaWdodENvbG9ycy0+aGFzQ29udGVu
dCkKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgaGlnaGxp
Z2h0Q29sb3JzLT5jb250ZW50LCBoaWdobGlnaHRDb2xvcnMtPmNvbnRlbnRPdXRsaW5lKTsKICAg
ICBlbHNlCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBjbGlwUXVh
ZCwgY2xpcFF1YWQsIGNvbnRlbnRCb3hDb2xvcik7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRX
aXRoQ2xpcChjb250ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGRlZmF1bHRDb250ZW50Qm94Q29s
b3IsIGRlZmF1bHRDb250ZW50T3V0bGluZUNvbG9yKTsKIH0KIAotdm9pZCBkcmF3SGlnaGxpZ2h0
Rm9yTGluZUJveGVzT3JTVkdSZW5kZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFZlY3RvcjxGbG9hdFF1YWQ+JiBsaW5lQm94UXVhZHMpCit2b2lkIGRyYXdIaWdobGlnaHRGb3JM
aW5lQm94ZXNPclNWR1JlbmRlcmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVj
dG9yPEZsb2F0UXVhZD4mIGxpbmVCb3hRdWFkcywgSGlnaGxpZ2h0Q29sb3JzKiBoaWdobGlnaHRD
b2xvcnMpCiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGxpbmVCb3hDb2xvcigxMjUsIDE3Mywg
MjE3LCAxMjgpOwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaW5lQm94UXVhZHMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgbGluZUJveFF1YWRz
W2ldLCBsaW5lQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGxp
bmVCb3hRdWFkc1tpXSwgaGlnaGxpZ2h0Q29sb3JzLT5jb250ZW50LCBoaWdobGlnaHRDb2xvcnMt
PmNvbnRlbnRPdXRsaW5lKTsKIH0KIAogaW5saW5lIExheW91dFNpemUgZnJhbWVUb01haW5GcmFt
ZU9mZnNldChGcmFtZSogZnJhbWUpCkBAIC0xMzIsNTggKzE0MSwxMzEgQEAgaW5saW5lIExheW91
dFNpemUgZnJhbWVUb01haW5GcmFtZU9mZnNldChGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHRv
TGF5b3V0U2l6ZShtYWluRnJhbWVQb2ludCk7CiB9CiAKK2ludCBkcmF3U3Vic3RyaW5nKGNvbnN0
IFRleHRSdW4mIGdsb2JhbFRleHRSdW4sIGludCBvZmZzZXQsIGludCBsZW5ndGgsIGNvbnN0IENv
bG9yJiB0ZXh0Q29sb3IsIGNvbnN0IEZvbnQmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5b3V0UmVjdCYgdGl0bGVSZWN0KQoreworICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKHRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5kcmF3VGV4
dChmb250LCBnbG9iYWxUZXh0UnVuLCBMYXlvdXRQb2ludCh0aXRsZVJlY3QueCgpICsgcmVjdElu
ZmxhdGVQeCwgdGl0bGVSZWN0LnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSksIG9m
ZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKTsKKyAgICByZXR1cm4gb2Zmc2V0ICsgbGVuZ3RoOworfQor
CitpbnQgY2FsY3VsYXRlQXJyb3dUaXBYKGNvbnN0IExheW91dFJlY3QmIGFuY2hvckJveCwgY29u
c3QgTGF5b3V0UmVjdCYgdGl0bGVSZWN0KQoreworICAgIGludCBhbmNob3JYID0gYW5jaG9yQm94
LngoKTsKKworICAgIC8vIENoZWNrIGZvciBoZWF2aWx5IG1pc2FsaWduZWQgdG9vbHRpcCBmaXJz
dC4KKyAgICBpZiAodGl0bGVSZWN0LngoKSA+IGFuY2hvckJveC5tYXhYKCkpCisgICAgICAgIHJl
dHVybiB0aXRsZVJlY3QueCgpICsgYXJyb3dIYWxmV2lkdGg7CisKKyAgICBpZiAodGl0bGVSZWN0
Lm1heFgoKSA8IGFuY2hvclgpCisgICAgICAgIHJldHVybiB0aXRsZVJlY3QubWF4WCgpIC0gYXJy
b3dIYWxmV2lkdGg7CisKKyAgICBpbnQgeCA9IHRpdGxlUmVjdC54KCkgKyBhcnJvd1RpcE9mZnNl
dDsKKyAgICBpZiAoeCA8IGFuY2hvclgpCisgICAgICAgIHggPSBhbmNob3JYICsgYXJyb3dUaXBP
ZmZzZXQ7CisgICAgaWYgKHggPiB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGgpCisg
ICAgICAgIHggPSB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGg7CisKKyAgICByZXR1
cm4geDsKK30KKwordm9pZCBzZXRVcEZvbnRGYW1pbGllcyhGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2V0dGluZ3MqIHNldHRpbmdzKQoreworI2lmIE9TKFdJTkRP
V1MpCitUT09MVElQX0ZPTlRfRkFNSUxJRVMoMiwgU3RyaW5nKCJDb25zb2xhcyIpLCBTdHJpbmco
Ikx1Y2lkYSBDb25zb2xlIikpCisjZWxpZiBPUyhVTklYKQorVE9PTFRJUF9GT05UX0ZBTUlMSUVT
KDEsIFN0cmluZygiZGVqYXZ1IHNhbnMgbW9ubyIpKQorI2VsaWYgT1MoTUFDX09TX1gpCitUT09M
VElQX0ZPTlRfRkFNSUxJRVMoMiwgU3RyaW5nKCJNZW5sbyIpLCBTdHJpbmcoIk1vbmFjbyIpKQor
I2VuZGlmCisvLyBJbiB0aGUgZGVmYXVsdCBjYXNlLCB3ZSBnZXQgdGhlIHNldHRpbmdzLXByb3Zp
ZGVkIG1vbm9zcGFjZSBmb250LgorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmaXhlZEZvbnRG
YW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KCk7CisgICAgaWYgKCFmaXhlZEZvbnRG
YW1pbHkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFt
aWx5KEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNlRmFtaWx5KTsKKyAgICAgICAgQXRvbWljU3Ry
aW5nIGZhY2U7CisgICAgICAgIEZvbnRGYW1pbHkqIGN1cnJGYW1pbHkgPSAwOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9vbHRpcEZvbnRGYWNlU2l6ZTsgKytpKSB7CisgICAg
ICAgICAgICBmYWNlID0gQXRvbWljU3RyaW5nKHRvb2x0aXBGb250RmFjZVtpXSk7CisgICAgICAg
ICAgICBpZiAoIWN1cnJGYW1pbHkpIHsKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24u
Zmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoZmFjZSk7CisgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLmZpcnN0RmFtaWx5KCkuYXBwZW5kRmFtaWx5KDApOworICAgICAgICAgICAgICAgIGN1
cnJGYW1pbHkgPSAmZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdGYW1p
bHkgPSBTaGFyZWRGb250RmFtaWx5OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBuZXdGYW1p
bHktPnNldEZhbWlseShmYWNlKTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5LT5hcHBlbmRG
YW1pbHkobmV3RmFtaWx5KTsKKyAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0gbmV3RmFtaWx5
LmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJlZlB0cjxTaGFyZWRG
b250RmFtaWx5PiBuZXdGYW1pbHkgPSBTaGFyZWRGb250RmFtaWx5OjpjcmVhdGUoKTsKKyAgICAg
ICAgbmV3RmFtaWx5LT5zZXRGYW1pbHkoZml4ZWRGb250RmFtaWx5KTsKKyAgICAgICAgY3VyckZh
bWlseS0+YXBwZW5kRmFtaWx5KG5ld0ZhbWlseSk7CisgICAgICAgIGN1cnJGYW1pbHkgPSBuZXdG
YW1pbHkuZ2V0KCk7CisgICAgfQorfQorCiB2b2lkIGRyYXdFbGVtZW50VGl0bGUoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBjb25zdCBMYXlvdXRSZWN0JiBib3VuZGluZ0Jv
eCwgY29uc3QgTGF5b3V0UmVjdCYgYW5jaG9yQm94LCBjb25zdCBGbG9hdFJlY3QmIG92ZXJsYXlS
ZWN0LCBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCByZWN0SW5mbGF0ZVB4ID0gNDsKLSAgICBzdGF0aWMgY29uc3QgaW50IGZvbnRIZWlnaHRQeCA9
IDEyOwotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQeCA9IDE7Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEJhY2tncm91bmRDb2xvciwgKDI1NSwgMjU1LCAx
OTQsIDI1NSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRvb2x0aXBCb3JkZXJD
b2xvciwgKENvbG9yOjpibGFjaykpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRv
b2x0aXBGb250Q29sb3IsIChDb2xvcjo6YmxhY2spKTsKKworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ29sb3IsIGJhY2tncm91bmRDb2xvciwgKDI1NSwgMjU1LCAxOTQsIDI1NSkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRhZ0NvbG9yLCAoMTM2LCAxOCwgMTI4KSk7IC8vIFNh
bWUgYXMgLndlYmtpdC1odG1sLXRhZy4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBh
dHRyQ29sb3IsICgyNiwgMjYsIDE2NikpOyAvLyBTYW1lIGFzIC53ZWJraXQtaHRtbC1hdHRyaWJ1
dGUtdmFsdWUuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgbm9ybWFsQ29sb3IsIChD
b2xvcjo6YmxhY2spKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBweEFuZEJvcmRl
ckNvbG9yLCAoMTI4LCAxMjgsIDEyOCkpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIHB4U3RyaW5nLCAoInB4IikpOworICAgIGNvbnN0IHN0YXRpYyBVQ2hhciB0aW1lc1VDaGFy
W10gPSB7IDB4MDBENywgMCB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0aW1l
c1N0cmluZywgKHRpbWVzVUNoYXIpKTsgLy8gJnRpbWVzOyBzdHJpbmcKKwogICAgIEZvbnRDYWNo
ZVB1cmdlUHJldmVudGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCiAgICAgRWxlbWVudCog
ZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKICAgICBib29sIGlzWEhUTUwg
PSBlbGVtZW50LT5kb2N1bWVudCgpLT5pc1hIVE1MRG9jdW1lbnQoKTsKLSAgICBTdHJpbmcgbm9k
ZVRpdGxlID0gaXNYSFRNTCA/IGVsZW1lbnQtPm5vZGVOYW1lKCkgOiBlbGVtZW50LT5ub2RlTmFt
ZSgpLmxvd2VyKCk7CisgICAgU3RyaW5nIG5vZGVUaXRsZShpc1hIVE1MID8gZWxlbWVudC0+bm9k
ZU5hbWUoKSA6IGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKSk7CisgICAgdW5zaWduZWQgdGFn
TmFtZUxlbmd0aCA9IG5vZGVUaXRsZS5sZW5ndGgoKTsKKwogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWRWYWx1ZSA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAgdW5zaWduZWQgaWRT
dHJpbmdMZW5ndGggPSAwOworICAgIFN0cmluZyBpZFN0cmluZzsKICAgICBpZiAoIWlkVmFsdWUu
aXNOdWxsKCkgJiYgIWlkVmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5vZGVUaXRsZSArPSAi
IyI7CiAgICAgICAgIG5vZGVUaXRsZSArPSBpZFZhbHVlOworICAgICAgICBpZFN0cmluZ0xlbmd0
aCA9IDEgKyBpZFZhbHVlLmxlbmd0aCgpOwogICAgIH0KKworICAgIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiB1c2VkQ2xhc3NOYW1lczsKKyAgICB1bnNpZ25lZCBjbGFzc2VzU3RyaW5nTGVuZ3RoID0g
MDsKICAgICBpZiAoZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBlbGVtZW50LT5pc1N0eWxlZEVsZW1l
bnQoKSkgewogICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzU3RyaW5n
ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCk7CiAg
ICAgICAgIHNpemVfdCBjbGFzc05hbWVDb3VudCA9IGNsYXNzTmFtZXNTdHJpbmcuc2l6ZSgpOwot
ICAgICAgICBpZiAoY2xhc3NOYW1lQ291bnQpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8QXRvbWlj
U3RyaW5nPiB1c2VkQ2xhc3NOYW1lczsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY2xhc3NOYW1lQ291bnQ7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgY2xhc3NOYW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKLSAgICAgICAgICAgICAgICBp
ZiAodXNlZENsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNsYXNzTmFt
ZSk7Ci0gICAgICAgICAgICAgICAgbm9kZVRpdGxlICs9ICIuIjsKLSAgICAgICAgICAgICAgICBu
b2RlVGl0bGUgKz0gY2xhc3NOYW1lOwotICAgICAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNsYXNzTmFtZUNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgY2xhc3NOYW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKKyAgICAgICAgICAg
IGlmICh1c2VkQ2xhc3NOYW1lcy5jb250YWlucyhjbGFzc05hbWUpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNsYXNzTmFtZSk7Cisg
ICAgICAgICAgICBub2RlVGl0bGUgKz0gIi4iOworICAgICAgICAgICAgbm9kZVRpdGxlICs9IGNs
YXNzTmFtZTsKKyAgICAgICAgICAgIGNsYXNzZXNTdHJpbmdMZW5ndGggKz0gMSArIGNsYXNzTmFt
ZS5sZW5ndGgoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIG5vZGVUaXRsZSArPSAiIFsiOwot
ICAgIG5vZGVUaXRsZSArPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC53aWR0aCgpKTsKLSAg
ICBub2RlVGl0bGUuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPigweDAwRDcpKTsgLy8gJnRpbWVz
OwotICAgIG5vZGVUaXRsZSArPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC5oZWlnaHQoKSk7
Ci0gICAgbm9kZVRpdGxlICs9ICJdIjsKKyAgICBTdHJpbmcgd2lkdGhOdW1iZXJQYXJ0ID0gIiAi
ICsgU3RyaW5nOjpudW1iZXIoYm91bmRpbmdCb3gud2lkdGgoKSk7CisgICAgbm9kZVRpdGxlICs9
IHdpZHRoTnVtYmVyUGFydCArIHB4U3RyaW5nOworICAgIG5vZGVUaXRsZSArPSB0aW1lc1N0cmlu
ZzsKKyAgICBTdHJpbmcgaGVpZ2h0TnVtYmVyUGFydCA9IFN0cmluZzo6bnVtYmVyKGJvdW5kaW5n
Qm94LmhlaWdodCgpKTsKKyAgICBub2RlVGl0bGUgKz0gaGVpZ2h0TnVtYmVyUGFydCArIHB4U3Ry
aW5nOwogCiAgICAgRm9udERlc2NyaXB0aW9uIGRlc2M7Ci0gICAgRm9udEZhbWlseSBmYW1pbHk7
Ci0gICAgZmFtaWx5LnNldEZhbWlseShzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KCkpOwotICAg
IGRlc2Muc2V0RmFtaWx5KGZhbWlseSk7CisgICAgZGVzYy5zZXRSZW5kZXJpbmdNb2RlKHNldHRp
bmdzLT5mb250UmVuZGVyaW5nTW9kZSgpKTsKICAgICBkZXNjLnNldENvbXB1dGVkU2l6ZShmb250
SGVpZ2h0UHgpOworICAgIHNldFVwRm9udEZhbWlsaWVzKGRlc2MsIHNldHRpbmdzKTsKICAgICBG
b250IGZvbnQgPSBGb250KGRlc2MsIDAsIDApOwogICAgIGZvbnQudXBkYXRlKDApOwogCiAgICAg
VGV4dFJ1biBub2RlVGl0bGVSdW4obm9kZVRpdGxlKTsKICAgICBMYXlvdXRQb2ludCB0aXRsZUJh
c2VQb2ludCA9IExheW91dFBvaW50KGFuY2hvckJveC54KCksIGFuY2hvckJveC5tYXhZKCkgLSAx
KTsKICAgICB0aXRsZUJhc2VQb2ludC5tb3ZlKHJlY3RJbmZsYXRlUHgsIHJlY3RJbmZsYXRlUHgp
OwotICAgIExheW91dFJlY3QgdGl0bGVSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmb250LnNlbGVj
dGlvblJlY3RGb3JUZXh0KG5vZGVUaXRsZVJ1biwgdGl0bGVCYXNlUG9pbnQsIGZvbnRIZWlnaHRQ
eCkpOworICAgIExheW91dFJlY3QgdGl0bGVSZWN0ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChmb250
LnNlbGVjdGlvblJlY3RGb3JUZXh0KG5vZGVUaXRsZVJ1biwgdGl0bGVCYXNlUG9pbnQsIGZvbnRI
ZWlnaHRQeCkpOwogICAgIHRpdGxlUmVjdC5pbmZsYXRlKHJlY3RJbmZsYXRlUHgpOwogCiAgICAg
Ly8gVGhlIGluaXRpYWwgb2Zmc2V0cyBuZWVkZWQgdG8gY29tcGVuc2F0ZSBmb3IgYSAxcHgtdGhp
Y2sgYm9yZGVyIHN0cm9rZSAod2hpY2ggaXMgbm90IGEgcGFydCBvZiB0aGUgcmVjdGFuZ2xlKS4K
QEAgLTIxMSwxOSArMjkzLDQ5IEBAIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIGNvbnN0IExheW91dFJlY3QmIGJvCiAgICAgICAgIGR5
ID0gb3ZlcmxheVJlY3QueSgpIC0gdGl0bGVSZWN0LnkoKSArIGJvcmRlcldpZHRoUHg7CiAKICAg
ICB0aXRsZVJlY3QubW92ZShkeCwgZHkpOwotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodG9v
bHRpcEJvcmRlckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKworICAgIGJvb2wgaXNBcnJv
d0F0VG9wID0gdGl0bGVSZWN0LnkoKSA+IGFuY2hvckJveC55KCk7CisgICAgdGl0bGVSZWN0Lm1v
dmUoMCwgdG9vbHRpcFBhZGRpbmcgKiAoaXNBcnJvd0F0VG9wID8gMSA6IC0xKSk7CisKKyAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKHB4QW5kQm9yZGVyQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGJvcmRlcldpZHRoUHgpOwotICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvciwgQ29s
b3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5kcmF3UmVjdCh0aXRsZVJlY3QpOwotICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKHRvb2x0aXBGb250Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgbm9kZVRpdGxlUnVuLCBMYXlvdXRQb2lu
dCh0aXRsZVJlY3QueCgpICsgcmVjdEluZmxhdGVQeCwgdGl0bGVSZWN0LnkoKSArIGZvbnQuZm9u
dE1ldHJpY3MoKS5oZWlnaHQoKSkpOworCisgICAgeworICAgICAgICBpbnQgYXJyb3dUaXBYID0g
Y2FsY3VsYXRlQXJyb3dUaXBYKGFuY2hvckJveCwgdGl0bGVSZWN0KTsKKyAgICAgICAgRmxvYXRQ
b2ludCBhcnJvd1BvaW50c1szXTsKKyAgICAgICAgZmxvYXQgYXJyb3dCYXNlWSA9IGlzQXJyb3dB
dFRvcCA/IHRpdGxlUmVjdC55KCkgOiB0aXRsZVJlY3QubWF4WSgpOworICAgICAgICBhcnJvd1Bv
aW50c1swXSA9IEZsb2F0UG9pbnQoYXJyb3dUaXBYIC0gYXJyb3dIYWxmV2lkdGgsIGFycm93QmFz
ZVkpOworICAgICAgICBhcnJvd1BvaW50c1sxXSA9IEZsb2F0UG9pbnQoYXJyb3dUaXBYLCBhcnJv
d0Jhc2VZICsgYXJyb3dIZWlnaHQgKiAoaXNBcnJvd0F0VG9wID8gLTEgOiAxKSk7CisgICAgICAg
IGFycm93UG9pbnRzWzJdID0gRmxvYXRQb2ludChhcnJvd1RpcFggKyBhcnJvd0hhbGZXaWR0aCwg
YXJyb3dCYXNlWSk7CisgICAgICAgIGNvbnRleHQuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3dQ
b2ludHMpOworCisgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoYmFja2dyb3VuZENvbG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoYmFj
a2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRT
dHJva2VUaGlja25lc3MoYm9yZGVyV2lkdGhQeCArIDEpOworICAgICAgICBMYXlvdXRQb2ludCBz
dGFydFBvaW50ID0gTGF5b3V0UG9pbnQoYXJyb3dQb2ludHNbMF0ueCgpICsgMSwgYXJyb3dQb2lu
dHNbMF0ueSgpKTsKKyAgICAgICAgTGF5b3V0UG9pbnQgZW5kUG9pbnQgPSBMYXlvdXRQb2ludChh
cnJvd1BvaW50c1syXS54KCkgLSAxLCBhcnJvd1BvaW50c1syXS55KCkpOworICAgICAgICBjb250
ZXh0LmRyYXdMaW5lKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTsKKyAgICB9CisKKyAgICBpbnQgY3Vy
cmVudFBvcyA9IDA7CisgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVu
LCBjdXJyZW50UG9zLCB0YWdOYW1lTGVuZ3RoLCB0YWdDb2xvciwgZm9udCwgY29udGV4dCwgdGl0
bGVSZWN0KTsKKyAgICBpZiAoaWRTdHJpbmdMZW5ndGgpCisgICAgICAgIGN1cnJlbnRQb3MgPSBk
cmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgaWRTdHJpbmdMZW5ndGgsIGF0
dHJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBpZiAoY2xhc3Nlc1N0cmlu
Z0xlbmd0aCkKKyAgICAgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVu
LCBjdXJyZW50UG9zLCBjbGFzc2VzU3RyaW5nTGVuZ3RoLCBhdHRyQ29sb3IsIGZvbnQsIGNvbnRl
eHQsIHRpdGxlUmVjdCk7CisgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxl
UnVuLCBjdXJyZW50UG9zLCB3aWR0aE51bWJlclBhcnQubGVuZ3RoKCksIG5vcm1hbENvbG9yLCBm
b250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5n
KG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgcHhTdHJpbmcubGVuZ3RoKCkgKyB0aW1lc1N0cmlu
Zy5sZW5ndGgoKSwgcHhBbmRCb3JkZXJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsK
KyAgICBjdXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3Ms
IGhlaWdodE51bWJlclBhcnQubGVuZ3RoKCksIG5vcm1hbENvbG9yLCBmb250LCBjb250ZXh0LCB0
aXRsZVJlY3QpOworICAgIGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBw
eFN0cmluZy5sZW5ndGgoKSwgcHhBbmRCb3JkZXJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVS
ZWN0KTsKIH0KIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBET01Ob2Rl
SGlnaGxpZ2h0ZXIgewogCi12b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQordm9pZCBkcmF3Tm9kZUhp
Z2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodENv
bG9ycyogaGlnaGxpZ2h0Q29sb3JzKQogewogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBu
b2RlLT5yZW5kZXJlcigpOwogICAgIEZyYW1lKiBjb250YWluaW5nRnJhbWUgPSBub2RlLT5kb2N1
bWVudCgpLT5mcmFtZSgpOwpAQCAtMjQwLDcgKzM1Miw3IEBAIHZvaWQgZHJhd05vZGVIaWdobGln
aHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBIaWdobGlnaHRNb2RlIG1v
ZGUpCiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+bWFp
bkZyYW1lKCktPnZpZXcoKTsKICAgICBGbG9hdFJlY3Qgb3ZlcmxheVJlY3QgPSB2aWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKTsKLSAgICBpZiAoIW92ZXJsYXlSZWN0LmNvbnRhaW5zKGJvdW5kaW5n
Qm94KSAmJiAhYm91bmRpbmdCb3guY29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChvdmVybGF5UmVj
dCkpKQorICAgIGlmICghb3ZlcmxheVJlY3QuY29udGFpbnMoYm91bmRpbmdCb3gpICYmICFib3Vu
ZGluZ0JveC5jb250YWlucyhlbmNsb3NpbmdMYXlvdXRSZWN0KG92ZXJsYXlSZWN0KSkpCiAgICAg
ICAgIG92ZXJsYXlSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgY29udGV4
dC50cmFuc2xhdGUoLW92ZXJsYXlSZWN0LngoKSwgLW92ZXJsYXlSZWN0LnkoKSk7CiAKQEAgLTI3
OSw3ICszOTEsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogCiAgICAgICAgIHRpdGxlQW5j
aG9yQm94ID0gYWJzTWFyZ2luUXVhZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogCi0gICAgICAg
IGRyYXdIaWdobGlnaHRGb3JCb3goY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1BhZGRpbmdR
dWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBtb2RlKTsKKyAgICAgICAgZHJhd0hp
Z2hsaWdodEZvckJveChjb250ZXh0LCBhYnNDb250ZW50UXVhZCwgYWJzUGFkZGluZ1F1YWQsIGFi
c0JvcmRlclF1YWQsIGFic01hcmdpblF1YWQsIGhpZ2hsaWdodENvbG9ycyk7CiAgICAgfSBlbHNl
IGlmIChyZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUoKSB8fCBpc1NWR1JlbmRlcmVyKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2hvdyBtYXJnaW5zL3BhZGRpbmcvYm9yZGVyIGZvciBp
bmxpbmVzLgogICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiBsaW5lQm94UXVhZHM7CkBAIC0yODcs
NyArMzk5LDcgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodE1vZGUgbW9kZSkKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxpbmVCb3hRdWFkcy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGxpbmVC
b3hRdWFkc1tpXSArPSBtYWluRnJhbWVPZmZzZXQ7CiAKLSAgICAgICAgZHJhd0hpZ2hsaWdodEZv
ckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoY29udGV4dCwgbGluZUJveFF1YWRzKTsKKyAgICAgICAg
ZHJhd0hpZ2hsaWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoY29udGV4dCwgbGluZUJveFF1
YWRzLCBoaWdobGlnaHRDb2xvcnMpOwogICAgIH0KIAogICAgIC8vIERyYXcgbm9kZSB0aXRsZSBp
ZiBuZWNlc3NhcnkuCkBAIC0yOTYsMTEgKzQwOCwxMSBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2Rl
KQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MgPSBj
b250YWluaW5nRnJhbWUtPnNldHRpbmdzKCk7Ci0gICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hs
aWdodGVyOjpIaWdobGlnaHRBbGwpCisgICAgaWYgKGhpZ2hsaWdodENvbG9ycy0+aXNGdWxsSGln
aGxpZ2h0KCkpCiAgICAgICAgIGRyYXdFbGVtZW50VGl0bGUoY29udGV4dCwgbm9kZSwgYm91bmRp
bmdCb3gsIHRpdGxlQW5jaG9yQm94LCBvdmVybGF5UmVjdCwgc2V0dGluZ3MpOwogfQogCi12b2lk
IGRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBJbnRSZWN0KiByZWN0KQordm9pZCBkcmF3UmVjdEhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVudCwgTGF5b3V0UmVjdCogcmVjdCwgY29u
c3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKQogewogICAgIGlmICgh
ZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMCw4ICs0MjIsNiBAQCB2b2lkIGRyYXdS
ZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRG9jdW1lbnQqIGRvY3VtZW50
LCBJbnRSZWN0KiByZQogICAgIGNvbnRleHQudHJhbnNsYXRlKC1vdmVybGF5UmVjdC54KCksIC1v
dmVybGF5UmVjdC55KCkpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBvdXRsaW5lVGhpY2tuZXNz
ID0gMjsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBvdXRsaW5lQ29sb3IsICgyNTUs
IDAsIDAsIDIyOCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGZpbGxDb2xvciwg
KDI1NSwgMCwgMCwgMjApKTsKIAogICAgIFBhdGggcXVhZFBhdGggPSBxdWFkVG9QYXRoKEZsb2F0
UmVjdCgqcmVjdCkpOwogCkBAIC0zMjksNyArNDM5LDcgQEAgdm9pZCBkcmF3UmVjdEhpZ2hsaWdo
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVudCwgSW50UmVjdCog
cmUKICAgICB9CiAKICAgICAvLyBOb3cgZG8gdGhlIGZpbGwKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihmaWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LmZpbGxQYXRo
KHF1YWRQYXRoKTsKIH0KIApAQCAtMzM3LDQgKzQ0Nyw2IEBAIHZvaWQgZHJhd1JlY3RIaWdobGln
aHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEb2N1bWVudCogZG9jdW1lbnQsIEludFJlY3Qq
IHJlCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI3VuZGVmIFRPT0xUSVBfRk9OVF9GQU1J
TElFUworCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaAppbmRleCAzMGQ3NzYwLi43ODI5YjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCkBAIC0yOSwy
NiArMjksNTggQEAKICNpZm5kZWYgRE9NTm9kZUhpZ2hsaWdodGVyX2gKICNkZWZpbmUgRE9NTm9k
ZUhpZ2hsaWdodGVyX2gKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29sb3I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwogCi1uYW1lc3BhY2UgRE9NTm9kZUhpZ2hs
aWdodGVyIHsKK3N0cnVjdCBIaWdobGlnaHRDb2xvcnMgeworICAgIEhpZ2hsaWdodENvbG9ycyhD
b2xvciBjb250ZW50Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yIGNvbnRlbnRPdXRs
aW5lQ29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yIHBhZGRpbmdDb2xvciA9IENvbG9y
Ojp0cmFuc3BhcmVudCwgQ29sb3IgcGFkZGluZ091dGxpbmVDb2xvciA9IENvbG9yOjp0cmFuc3Bh
cmVudCwgQ29sb3IgYm9yZGVyQ29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yIGJvcmRl
ck91dGxpbmVDb2xvciA9IENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3IgbWFyZ2luQ29sb3IgPSBD
b2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yIG1hcmdpbk91dGxpbmVDb2xvciA9IENvbG9yOjp0cmFu
c3BhcmVudCkKKyAgICAgICAgOiBjb250ZW50KGNvbnRlbnRDb2xvcikKKyAgICAgICAgLCBjb250
ZW50T3V0bGluZShjb250ZW50T3V0bGluZUNvbG9yKQorICAgICAgICAsIHBhZGRpbmcocGFkZGlu
Z0NvbG9yKQorICAgICAgICAsIHBhZGRpbmdPdXRsaW5lKHBhZGRpbmdPdXRsaW5lQ29sb3IpCisg
ICAgICAgICwgYm9yZGVyKGJvcmRlckNvbG9yKQorICAgICAgICAsIGJvcmRlck91dGxpbmUoYm9y
ZGVyT3V0bGluZUNvbG9yKQorICAgICAgICAsIG1hcmdpbihtYXJnaW5Db2xvcikKKyAgICAgICAg
LCBtYXJnaW5PdXRsaW5lKG1hcmdpbk91dGxpbmVDb2xvcikKKyAgICAgICAgLCBoYXNDb250ZW50
KGNvbnRlbnQgIT0gQ29sb3I6OnRyYW5zcGFyZW50IHx8IGNvbnRlbnRPdXRsaW5lICE9IENvbG9y
Ojp0cmFuc3BhcmVudCkKKyAgICAgICAgLCBoYXNQYWRkaW5nKHBhZGRpbmcgIT0gQ29sb3I6OnRy
YW5zcGFyZW50IHx8IHBhZGRpbmdPdXRsaW5lICE9IENvbG9yOjp0cmFuc3BhcmVudCkKKyAgICAg
ICAgLCBoYXNCb3JkZXIoYm9yZGVyICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBib3JkZXJPdXRs
aW5lICE9IENvbG9yOjp0cmFuc3BhcmVudCkKKyAgICAgICAgLCBoYXNNYXJnaW4obWFyZ2luICE9
IENvbG9yOjp0cmFuc3BhcmVudCB8fCBtYXJnaW5PdXRsaW5lICE9IENvbG9yOjp0cmFuc3BhcmVu
dCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0Z1bGxIaWdobGlnaHQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIGhhc0NvbnRlbnQgJiYgaGFzUGFkZGluZyAmJiBoYXNCb3JkZXIg
JiYgaGFzTWFyZ2luOworICAgIH0KIAotZW51bSBIaWdobGlnaHRNb2RlIHsKLSAgICBIaWdobGln
aHRBbGwsCi0gICAgSGlnaGxpZ2h0Q29udGVudCwKLSAgICBIaWdobGlnaHRQYWRkaW5nLAotICAg
IEhpZ2hsaWdodEJvcmRlciwKLSAgICBIaWdobGlnaHRNYXJnaW4KKyAgICBjb25zdCBDb2xvciBj
b250ZW50OworICAgIGNvbnN0IENvbG9yIGNvbnRlbnRPdXRsaW5lOworICAgIGNvbnN0IENvbG9y
IHBhZGRpbmc7CisgICAgY29uc3QgQ29sb3IgcGFkZGluZ091dGxpbmU7CisgICAgY29uc3QgQ29s
b3IgYm9yZGVyOworICAgIGNvbnN0IENvbG9yIGJvcmRlck91dGxpbmU7CisgICAgY29uc3QgQ29s
b3IgbWFyZ2luOworICAgIGNvbnN0IENvbG9yIG1hcmdpbk91dGxpbmU7CisKKyAgICBjb25zdCBi
b29sIGhhc0NvbnRlbnQ7CisgICAgY29uc3QgYm9vbCBoYXNQYWRkaW5nOworICAgIGNvbnN0IGJv
b2wgaGFzQm9yZGVyOworICAgIGNvbnN0IGJvb2wgaGFzTWFyZ2luOwogfTsKIAotdm9pZCBkcmF3
Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmLCBOb2RlKiwgSGlnaGxpZ2h0TW9kZSk7Citu
YW1lc3BhY2UgRE9NTm9kZUhpZ2hsaWdodGVyIHsKKwordm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChH
cmFwaGljc0NvbnRleHQmLCBOb2RlKiwgSGlnaGxpZ2h0Q29sb3JzKik7CiAKLXZvaWQgZHJhd1Jl
Y3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiwgRG9jdW1lbnQqLCBJbnRSZWN0Kik7Cit2b2lk
IGRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYsIERvY3VtZW50KiwgSW50UmVjdCos
IGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcik7CiAKIH0gLy8gbmFtZXNw
YWNlIERPTU5vZGVIaWdobGlnaHRlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KaW5kZXggM2ZjNTI0My4uMDFkMjY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuanNvbgpAQCAtODU0LDYgKzg1NCwxNyBAQAogICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImF0dHJpYnV0ZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUi
OiAic3RyaW5nIiB9LCAiZGVzY3JpcHRpb24iOiAiQW4gaW50ZXJsZWF2ZWQgYXJyYXkgb2Ygbm9k
ZSBhdHRyaWJ1dGUgbmFtZXMgYW5kIHZhbHVlcy4iIH0KICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIGhvbGRlciBzdHJ1Y3R1cmUgZm9yIGFsbCBh
dHRyaWJ1dGVzIG9mIGEgc2luZ2xlIG5vZGUuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiUkdCQSIsCisgICAgICAgICAgICAgICAgInR5cGUi
OiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgcmVkIGNvbXBvbmVudCwgaW4gdGhlIFswLTI1NV0gcmFuZ2UuIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImciLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9u
IjogIlRoZSBncmVlbiBjb21wb25lbnQsIGluIHRoZSBbMC0yNTVdIHJhbmdlLiIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJiIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlw
dGlvbiI6ICJUaGUgYmx1ZSBjb21wb25lbnQsIGluIHRoZSBbMC0yNTVdIHJhbmdlLiIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgYWxwaGEgY29tcG9uZW50LCBpbiB0aGUg
WzAtMjU1XSByYW5nZSAoZGVmYXVsdDogMjU1KS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHN0cnVjdHVyZSBob2xkaW5nIGFuIFJHQkEg
Y29sb3IuIgogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiY29tbWFuZHMiOiBb
CkBAIC0xMDIxLDcgKzEwMzIsOSBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIngi
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlggY29vcmRpbmF0ZSIgfSwKICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ5IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNj
cmlwdGlvbiI6ICJZIGNvb3JkaW5hdGUiIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAid2lkdGgiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlY3RhbmdsZSB3
aWR0aCIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWlnaHQiLCAidHlwZSI6
ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlY3RhbmdsZSBoZWlnaHQiIH0KKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJoZWlnaHQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2Ny
aXB0aW9uIjogIlJlY3RhbmdsZSBoZWlnaHQiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiY29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIlRoZSBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIg
fSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvdXRsaW5lQ29sb3IiLCAiJHJlZiI6
ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBoaWdobGlnaHQg
b3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfQogICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkhpZ2hsaWdodHMgZ2l2ZW4gcmVj
dGFuZ2xlLiBDb29yZGluYXRlcyBhcmUgYWJzb2x1dGUgd2l0aCByZXNwZWN0IHRvIHRoZSBtYWlu
IGZyYW1lIHZpZXdwb3J0LiIKICAgICAgICAgICAgIH0sCkBAIC0xMDI5LDcgKzEwNDIsMTQgQEAK
ICAgICAgICAgICAgICAgICAibmFtZSI6ICJoaWdobGlnaHROb2RlIiwKICAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQi
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIG5v
ZGUgdG8gaGlnaGxpZ2h0IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1vZGUi
LCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsiYWxsIiwgImNvbnRlbnQiLCAicGFkZGluZyIs
ICJib3JkZXIiLCAibWFyZ2luIl0sICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJU
aGUgYm94IG1vZGVsIGNvbXBvbmVudChzKSB0byBoaWdobGlnaHQgKGRlZmF1bHQ6IFwiYWxsXCIp
LiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRDb2xvciIsICIkcmVm
IjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGNvbnRlbnQg
Ym94IGhpZ2hsaWdodCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRPdXRsaW5lQ29sb3IiLCAiJHJlZiI6
ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBjb250ZW50IGJv
eCBoaWdobGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYWRkaW5nQ29sb3IiLCAiJHJlZiI6ICJSR0JB
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBwYWRkaW5nIGhpZ2hsaWdo
dCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInBhZGRpbmdPdXRsaW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBwYWRkaW5nIGhpZ2hsaWdodCBvdXRs
aW5lIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImJvcmRlckNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgYm9yZGVyIGhpZ2hsaWdodCBmaWxsIGNvbG9yIChkZWZh
dWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJv
cmRlck91dGxpbmVDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIGJvcmRlciBoaWdobGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDog
dHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXJnaW5D
b2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
VGhlIGJvcmRlciBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIg
fSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXJnaW5PdXRsaW5lQ29sb3IiLCAi
JHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3Jk
ZXIgaGlnaGxpZ2h0IG91dGxpbmUgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0KICAg
ICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJIaWdobGln
aHRzIERPTSBub2RlIHdpdGggZ2l2ZW4gaWQuIgogICAgICAgICAgICAgfSwKQEAgLTEwNDAsNyAr
MTA2MCwxNSBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImhpZ2hs
aWdodEZyYW1lIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0
aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIGZyYW1lIHRvIGhpZ2hsaWdodCIgfQorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgZnJhbWUgdG8gaGlnaGxpZ2h0IiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRDb2xvciIsICIkcmVmIjogIlJHQkEiLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGNvbnRlbnQgYm94IGhpZ2hsaWdo
dCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImNvbnRlbnRPdXRsaW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBjb250ZW50IGJveCBoaWdobGlnaHQg
b3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJwYWRkaW5nQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBwYWRkaW5nIGhpZ2hsaWdodCBmaWxsIGNvbG9y
IChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInBhZGRpbmdPdXRsaW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBwYWRkaW5nIGhpZ2hsaWdodCBvdXRsaW5lIGNvbG9yIChk
ZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImJvcmRlckNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJUaGUgYm9yZGVyIGhpZ2hsaWdodCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0cmFuc3Bh
cmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvcmRlck91dGxpbmVD
b2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
VGhlIGJvcmRlciBoaWdobGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQp
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXJnaW5Db2xvciIsICIkcmVm
IjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJvcmRlciBo
aWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJtYXJnaW5PdXRsaW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JB
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3JkZXIgaGlnaGxpZ2h0
IG91dGxpbmUgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0KICAgICAgICAgICAgICAg
ICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJIaWdobGlnaHRzIG93bmVyIGVs
ZW1lbnQgb2YgdGhlIGZyYW1lIHdpdGggZ2l2ZW4gaWQuIiwKICAgICAgICAgICAgICAgICAiaGlk
ZGVuIjogdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggYzkwNmUxZi4uMTdhOTk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC05OCw2ICs5OCwzMyBAQCBuYW1lc3BhY2Ug
RE9NQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hhciBkb2N1bWVudFJlcXVlc3RlZFtdID0g
ImRvY3VtZW50UmVxdWVzdGVkIjsKIH07CiAKK0NvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIGNvbG9yKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCByZWQsICgiciIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZ3JlZW4s
ICgiZyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYmx1ZSwgKCJiIikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhbHBoYSwgKCJhIikpOworCisgICAgaWYg
KCFjb2xvcikKKyAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKKworICAgIGludCBy
OworICAgIGludCBnOworICAgIGludCBiOworICAgIGJvb2wgc3VjY2VzcyA9ICgqY29sb3IpLT5n
ZXROdW1iZXIocmVkLCAmcik7CisgICAgc3VjY2VzcyB8PSAoKmNvbG9yKS0+Z2V0TnVtYmVyKGdy
ZWVuLCAmZyk7CisgICAgc3VjY2VzcyB8PSAoKmNvbG9yKS0+Z2V0TnVtYmVyKGJsdWUsICZiKTsK
KyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7CisK
KyAgICBkb3VibGUgYTsKKyAgICBzdWNjZXNzID0gKCpjb2xvciktPmdldE51bWJlcihhbHBoYSwg
JmEpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIENvbG9yKHIsIGcsIGIpOwor
CisgICAgcmV0dXJuIENvbG9yKHIsIGcsIGIsIHN0YXRpY19jYXN0PGludD4oYSAqIDI1NSkpOwor
fQorCiBjbGFzcyBNYXRjaEpvYiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoKExp
c3RIYXNoU2V0PE5vZGUqPiYgcmVzdWx0Q29sbGVjdG9yKSA9IDA7CkBAIC05NzcsNyArMTAwNCw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmZvY3VzTm9kZSgpCiAKIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCwgdW5zaWduZWQpCiB7Ci0gICAgaWYgKCFtX3NlYXJjaGluZ0Zvck5vZGUpCisgICAgaWYg
KCFtX3NlYXJjaGluZ0Zvck5vZGUgfHwgIW1faGlnaGxpZ2h0Q29sb3JzKQogICAgICAgICByZXR1
cm47CiAKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwpAQCAtOTg1LDcgKzEw
MTIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChj
b25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVucwogICAgICAgICBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpOwogICAgIGlmIChub2RlKSB7CiAgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOwot
ICAgICAgICBoaWdobGlnaHQoJmVycm9yLCBub2RlLCAiYWxsIik7CisgICAgICAgIGhpZ2hsaWdo
dCgmZXJyb3IsIG5vZGUpOwogICAgIH0KIH0KIApAQCAtMTAwNSwzNiArMTAzMiw0MiBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBi
b29sIGVuYWJsZWQpCiAgICAgc2V0U2VhcmNoaW5nRm9yTm9kZShlbmFibGVkKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0KEVycm9yU3RyaW5nKiwgTm9kZSogbm9kZSwg
Y29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0KEVy
cm9yU3RyaW5nKiwgTm9kZSogbm9kZSkKIHsKKyAgICAvLyBUaGlzIG1ldGhvZCByZXF1aXJlcyBt
X2hpZ2hsaWdodGVkUmVjdCB0byBoYXZlIGJlZW4gc2V0IGJ5IGl0cyBjbGllbnQuCiAgICAgQVNT
RVJUX0FSRyhub2RlLCBub2RlKTsKICAgICBtX2hpZ2hsaWdodGVkTm9kZSA9IG5vZGU7Ci0gICAg
bV9oaWdobGlnaHRNb2RlID0gbW9kZTsKICAgICBtX2NsaWVudC0+aGlnaGxpZ2h0KCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQg
eCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKQogewogICAgIG1faGlnaGxpZ2h0ZWRS
ZWN0ID0gYWRvcHRQdHIobmV3IEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIG1f
aGlnaGxpZ2h0Q29sb3JzID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodENvbG9ycyhwYXJzZUNvbG9y
KGNvbG9yKSwgcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpKSk7CiAgICAgbV9jbGllbnQtPmhpZ2hs
aWdodCgpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKEVycm9y
U3RyaW5nKiBlcnJvciwgaW50IG5vZGVJZCwgU3RyaW5nKiBtb2RlKQordm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyogZXJyb3IsIGludCBub2RlSWQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb250ZW50Q29sb3IsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBjb250ZW50T3V0bGluZUNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogcGFkZGluZ0NvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cGFkZGluZ091dGxpbmVDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGJvcmRl
ckNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogYm9yZGVyT3V0bGluZUNvbG9y
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbWFyZ2luQ29sb3IsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+KiBtYXJnaW5PdXRsaW5lQ29sb3IpCiB7Ci0gICAgaWYgKE5vZGUq
IG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkKLSAgICAgICAgaGlnaGxpZ2h0KGVycm9yLCBub2Rl
LCBtb2RlICYmICFtb2RlLT5pc0VtcHR5KCkgPyAqbW9kZSA6ICJhbGwiKTsKKyAgICBpZiAoTm9k
ZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpKSB7CisgICAgICAgIG1faGlnaGxpZ2h0Q29sb3Jz
ID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodENvbG9ycyhwYXJzZUNvbG9yKGNvbnRlbnRDb2xvciks
IHBhcnNlQ29sb3IoY29udGVudE91dGxpbmVDb2xvciksIHBhcnNlQ29sb3IocGFkZGluZ0NvbG9y
KSwgcGFyc2VDb2xvcihwYWRkaW5nT3V0bGluZUNvbG9yKSwgcGFyc2VDb2xvcihib3JkZXJDb2xv
ciksIHBhcnNlQ29sb3IoYm9yZGVyT3V0bGluZUNvbG9yKSwgcGFyc2VDb2xvcihtYXJnaW5Db2xv
ciksIHBhcnNlQ29sb3IobWFyZ2luT3V0bGluZUNvbG9yKSkpOworICAgICAgICBoaWdobGlnaHQo
ZXJyb3IsIG5vZGUpOworICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpCit2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyogZXJyb3IsIGNv
bnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbnRl
bnRDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbnRlbnRPdXRsaW5lQ29s
b3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBwYWRkaW5nQ29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBwYWRkaW5nT3V0bGluZUNvbG9yLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogYm9yZGVyQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiBib3JkZXJPdXRsaW5lQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBt
YXJnaW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1hcmdpbk91dGxpbmVD
b2xvcikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFt
ZUlkKTsKLSAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPm93bmVyRWxlbWVudCgpKQotICAgICAgICBo
aWdobGlnaHQoZXJyb3IsIGZyYW1lLT5vd25lckVsZW1lbnQoKSwgImFsbCIpOworICAgIGlmIChm
cmFtZSAmJiBmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKKyAgICAgICAgbV9oaWdobGlnaHRDb2xv
cnMgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29sb3JzKHBhcnNlQ29sb3IoY29udGVudENvbG9y
KSwgcGFyc2VDb2xvcihjb250ZW50T3V0bGluZUNvbG9yKSwgcGFyc2VDb2xvcihwYWRkaW5nQ29s
b3IpLCBwYXJzZUNvbG9yKHBhZGRpbmdPdXRsaW5lQ29sb3IpLCBwYXJzZUNvbG9yKGJvcmRlckNv
bG9yKSwgcGFyc2VDb2xvcihib3JkZXJPdXRsaW5lQ29sb3IpLCBwYXJzZUNvbG9yKG1hcmdpbkNv
bG9yKSwgcGFyc2VDb2xvcihtYXJnaW5PdXRsaW5lQ29sb3IpKSk7CisgICAgICAgIGhpZ2hsaWdo
dChlcnJvciwgZnJhbWUtPm93bmVyRWxlbWVudCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcqKQogewogICAgIG1faGlnaGxp
Z2h0ZWROb2RlID0gMDsKKyAgICBtX2hpZ2hsaWdodENvbG9ycy5jbGVhcigpOwogICAgIG1faGln
aGxpZ2h0ZWRSZWN0LmNsZWFyKCk7CiAgICAgbV9jbGllbnQtPmhpZGVIaWdobGlnaHQoKTsKIH0K
QEAgLTE1MjAsMjMgKzE1NTMsMTQgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3Bl
Y3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHIKIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmRyYXdIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogewogICAgIGlmIChtX2hpZ2hsaWdodGVkUmVjdCkgewotICAgICAgICBET01Ob2RlSGln
aGxpZ2h0ZXI6OmRyYXdSZWN0SGlnaGxpZ2h0KGNvbnRleHQsIG1fZG9jdW1lbnQuZ2V0KCksIG1f
aGlnaGxpZ2h0ZWRSZWN0LmdldCgpKTsKKyAgICAgICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3
UmVjdEhpZ2hsaWdodChjb250ZXh0LCBtX2RvY3VtZW50LmdldCgpLCBtX2hpZ2hsaWdodGVkUmVj
dC5nZXQoKSwgbV9oaWdobGlnaHRDb2xvcnMtPmNvbnRlbnQsIG1faGlnaGxpZ2h0Q29sb3JzLT5j
b250ZW50T3V0bGluZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1faGln
aGxpZ2h0ZWROb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBET01Ob2RlSGlnaGxpZ2h0ZXI6
OkhpZ2hsaWdodE1vZGUgbW9kZSA9IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsOwot
ICAgIGlmIChtX2hpZ2hsaWdodE1vZGUgPT0gImNvbnRlbnQiKQotICAgICAgICBtb2RlID0gRE9N
Tm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRDb250ZW50OwotICAgIGVsc2UgaWYgKG1faGlnaGxp
Z2h0TW9kZSA9PSAicGFkZGluZyIpCi0gICAgICAgIG1vZGUgPSBET01Ob2RlSGlnaGxpZ2h0ZXI6
OkhpZ2hsaWdodFBhZGRpbmc7Ci0gICAgZWxzZSBpZiAobV9oaWdobGlnaHRNb2RlID09ICJib3Jk
ZXIiKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRCb3JkZXI7
Ci0gICAgZWxzZSBpZiAobV9oaWdobGlnaHRNb2RlID09ICJtYXJnaW4iKQotICAgICAgICBtb2Rl
ID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNYXJnaW47Ci0gICAgRE9NTm9kZUhpZ2hs
aWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChjb250ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5nZXQo
KSwgbW9kZSk7CisgICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChjb250
ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5nZXQoKSwgbV9oaWdobGlnaHRDb2xvcnMuZ2V0KCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDBjOTMyNzYuLjNiZWFhODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC02Miw2ICs2Miw3IEBAIGNs
YXNzIEludFJlY3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgTWF0Y2hKb2I7CiBjbGFz
cyBIVE1MRWxlbWVudDsKK2NsYXNzIEhpZ2hsaWdodENvbG9yczsKIGNsYXNzIEluc3BlY3RvclN0
YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIE5hbWVOb2RlTWFwOwpAQCAt
MTMzLDkgKzEzNCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1c2hOb2RlVG9Gcm9udGVuZChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKTsKICAgICB2b2lk
IHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcGF0
aCwgaW50KiBub2RlSWQpOwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyopOwot
ICAgIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKLSAgICB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBTdHJpbmcqIG1vZGUpOwotICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpOworICAgIHZvaWQgaGlnaGxpZ2h0UmVjdChF
cnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiBvdXRsaW5lQ29sb3IpOworICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyos
IGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb250ZW50Q29sb3Is
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb250ZW50T3V0bGluZUNvbG9yLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcGFkZGluZ0NvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogcGFkZGluZ091dGxpbmVDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIGJvcmRlckNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogYm9y
ZGVyT3V0bGluZUNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbWFyZ2luQ29s
b3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBtYXJnaW5PdXRsaW5lQ29sb3IpOwor
ICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb250ZW50Q29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb250ZW50T3V0bGluZUNvbG9yLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogcGFkZGluZ0NvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiogcGFkZGluZ091dGxpbmVDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IGJvcmRlckNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogYm9yZGVyT3V0bGlu
ZUNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbWFyZ2luQ29sb3IsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBtYXJnaW5PdXRsaW5lQ29sb3IpOwogICAgIHZvaWQg
bW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3Qg
aW50KiBjb25zdCBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlkKTsKIAogICAgIE5vZGUqIGhp
Z2hsaWdodGVkTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaGxpZ2h0ZWROb2RlLmdldCgpOyB9
CkBAIC0xODMsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ2xpZW50Kiwg
SW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKIAogICAgIHZvaWQgc2V0
U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpOwotICAgIHZvaWQgaGlnaGxpZ2h0KEVycm9y
U3RyaW5nKiwgTm9kZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBoaWdobGlnaHQo
RXJyb3JTdHJpbmcqLCBOb2RlKik7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjMz
LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0
ZVRhc2s+IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CiAgICAgUmVmUHRyPE5vZGU+IG1faGln
aGxpZ2h0ZWROb2RlOwogICAgIE93blB0cjxJbnRSZWN0PiBtX2hpZ2hsaWdodGVkUmVjdDsKLSAg
ICBTdHJpbmcgbV9oaWdobGlnaHRNb2RlOworICAgIE93blB0cjxIaWdobGlnaHRDb2xvcnM+IG1f
aGlnaGxpZ2h0Q29sb3JzOwogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIGJv
b2wgbV9zZWFyY2hpbmdGb3JOb2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbG9yLmpzCmluZGV4IDczZTQ3ZDQuLjJkYjcwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcwpAQCAtMTY2LDYgKzE2NiwyMSBAQCBXZWJJ
bnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICB0aHJvdyAiaW52YWxpZCBjb2xv
ciBmb3JtYXQiOwogICAgIH0sCiAKKyAgICB0b1Byb3RvY29sUkdCQTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKCJfcHJvdG9jb2xSR0JBIiBpbiB0aGlzKQorICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX3Byb3RvY29sUkdCQTsKKworICAgICAgICB2YXIgY29tcG9uZW50cyA9IHRoaXMu
cmdiYTsKKyAgICAgICAgaWYgKGNvbXBvbmVudHMpCisgICAgICAgICAgICB0aGlzLl9wcm90b2Nv
bFJHQkEgPSB7IHI6IE51bWJlcihjb21wb25lbnRzWzBdKSwgZzogTnVtYmVyKGNvbXBvbmVudHNb
MV0pLCBiOiBOdW1iZXIoY29tcG9uZW50c1syXSksIGE6IE51bWJlcihjb21wb25lbnRzWzNdKSB9
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbXBvbmVudHMgPSB0aGlzLnJnYjsKKyAg
ICAgICAgICAgIHRoaXMuX3Byb3RvY29sUkdCQSA9IHsgcjogTnVtYmVyKGNvbXBvbmVudHNbMF0p
LCBnOiBOdW1iZXIoY29tcG9uZW50c1sxXSksIGI6IE51bWJlcihjb21wb25lbnRzWzJdKSB9Owor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9wcm90b2NvbFJHQkE7CisgICAgfSwKKwog
ICAgIF9yZ2JUb0hleDogZnVuY3Rpb24ocmdiKQogICAgIHsKICAgICAgICAgdmFyIHIgPSBwYXJz
ZUludChyZ2JbMF0pLnRvU3RyaW5nKDE2KTsKQEAgLTY2MSwzICs2NzYsMTQgQEAgV2ViSW5zcGVj
dG9yLkNvbG9yLkFkdmFuY2VkTmlja05hbWVzID0gewogICAgICJyZ2JhKDAsMCwwLDApIjogW1sw
LCAwLCAwLCAwXSwgWzAsIDAsIDAsIDBdLCAidHJhbnNwYXJlbnQiXSwKICAgICAiaHNsYSgwLDAs
MCwwKSI6IFtbMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwXSwgInRyYW5zcGFyZW50Il0sCiB9Owor
CitXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodCA9IHsKKyAgICBDb250ZW50OiBuZXcg
V2ViSW5zcGVjdG9yLkNvbG9yKCJyZ2JhKDExMSwgMTY4LCAyMjAsIC42NikiKSwKKyAgICBDb250
ZW50T3V0bGluZTogbmV3IFdlYkluc3BlY3Rvci5Db2xvcigicmdiKDksIDgzLCAxNDgpIiksCisg
ICAgUGFkZGluZzogbmV3IFdlYkluc3BlY3Rvci5Db2xvcigicmdiYSgxNDcsIDE5NiwgMTI1LCAu
NTUpIiksCisgICAgUGFkZGluZ091dGxpbmU6IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoInJnYig1
NSwgMTE4LCAyOCkiKSwKKyAgICBCb3JkZXI6IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3IoInJnYmEo
MjU1LCAyMjksIDE1MywgLjY2KSIpLAorICAgIEJvcmRlck91dGxpbmU6IG5ldyBXZWJJbnNwZWN0
b3IuQ29sb3IoInJnYigxMjcsIDk2LCAwKSIpLAorICAgIE1hcmdpbjogbmV3IFdlYkluc3BlY3Rv
ci5Db2xvcigicmdiYSgyNDYsIDE3OCwgMTA3LCAuNjYpIiksCisgICAgTWFyZ2luT3V0bGluZTog
bmV3IFdlYkluc3BlY3Rvci5Db2xvcigicmdiKDE4MCwgOTUsIDQpIikKK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzCmluZGV4IGIwNThhNDAuLmMyZTAyNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGVi
YXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmlj
c1NpZGViYXJQYW5lLmpzCkBAIC0xMjgsMTUgKzEyOCwzOCBAQCBXZWJJbnNwZWN0b3IuTWV0cmlj
c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKGZyb21FbGVtZW50ID09PSB0
b0VsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgZnVuY3Rpb24gaGFuZGxl
TW91c2VPdmVyKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5
bGVDbGFzcygiaG92ZXJlZCIpOworCisgICAgICAgICAgICB2YXIgYmdDb2xvcjsKKyAgICAgICAg
ICAgIGlmIChlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoIm1hcmdpbiIpKQorICAgICAgICAgICAgICAg
IGJnQ29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5NYXJnaW4udG9TdHJp
bmcoIm9yaWdpbmFsIik7CisgICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1N0eWxlQ2xh
c3MoImJvcmRlciIpKQorICAgICAgICAgICAgICAgIGJnQ29sb3IgPSBXZWJJbnNwZWN0b3IuQ29s
b3IuUGFnZUhpZ2hsaWdodC5Cb3JkZXIudG9TdHJpbmcoIm9yaWdpbmFsIik7CisgICAgICAgICAg
ICBlbHNlIGlmIChlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoInBhZGRpbmciKSkKKyAgICAgICAgICAg
ICAgICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuUGFkZGluZy50
b1N0cmluZygib3JpZ2luYWwiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFzU3R5
bGVDbGFzcygiY29udGVudCIpKQorICAgICAgICAgICAgICAgIGJnQ29sb3IgPSBXZWJJbnNwZWN0
b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Db250ZW50LnRvU3RyaW5nKCJvcmlnaW5hbCIpOworICAg
ICAgICAgICAgaWYgKGJnQ29sb3IpCisgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5iYWNr
Z3JvdW5kQ29sb3IgPSBiZ0NvbG9yOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gaGFu
ZGxlTW91c2VPdXQoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgZWxlbWVudC5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSAiIjsKKyAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVD
bGFzcygiaG92ZXJlZCIpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHNob3dIaWdobGlnaHQp
IHsKICAgICAgICAgICAgIC8vIEludG8gZWxlbWVudC4KICAgICAgICAgICAgIGlmICh0aGlzLm5v
ZGUgJiYgdG9FbGVtZW50KQotICAgICAgICAgICAgICAgIHRvRWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJob3ZlcmVkIik7CisgICAgICAgICAgICAgICAgaGFuZGxlTW91c2VPdmVyKHRvRWxlbWVudCk7
CiAgICAgICAgICAgICB2YXIgbm9kZUlkID0gdGhpcy5ub2RlID8gdGhpcy5ub2RlLmlkIDogMDsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIE91dCBvZiBlbGVtZW50LgogICAgICAg
ICAgICAgaWYgKGZyb21FbGVtZW50KQotICAgICAgICAgICAgICAgIGZyb21FbGVtZW50LnJlbW92
ZVN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVNb3VzZU91dChm
cm9tRWxlbWVudCk7CiAgICAgICAgICAgICB2YXIgbm9kZUlkID0gMDsKICAgICAgICAgfQogICAg
ICAgICBpZiAobm9kZUlkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggZjA3ZTJjMy4uYzY0ZGNmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMTg4OCwxMCAr
MTg4OCw2IEBAIGJvZHkucGxhdGZvcm0td2luZG93cyAuc2lkZWJhci1wYW5lLXN1YnRpdGxlIHsK
ICAgICBtYXJnaW46IDNweDsKIH0KIAotLm1ldHJpY3MgLm1hcmdpbi5ob3ZlcmVkIHsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTM5LCAxODIsIDIyMSk7Ci19Ci0KIC5tZXRyaWNzIC5ib3Jk
ZXIgewogICAgIGJvcmRlcjogMXB4IGJsYWNrIHNvbGlkOwogICAgIGJhY2tncm91bmQtY29sb3I6
IHdoaXRlOwpAQCAtMTkwMiwxMCArMTg5OCw2IEBAIGJvZHkucGxhdGZvcm0td2luZG93cyAuc2lk
ZWJhci1wYW5lLXN1YnRpdGxlIHsKICAgICBtYXJnaW46IDNweDsKIH0KIAotLm1ldHJpY3MgLmJv
cmRlci5ob3ZlcmVkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTU3LCAxOTMsIDIyNik7
Ci19Ci0KIC5tZXRyaWNzIC5wYWRkaW5nIHsKICAgICBib3JkZXI6IDFweCBncmV5IGRhc2hlZDsK
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKQEAgLTE5MTYsMTAgKzE5MDgsNiBAQCBib2R5
LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFuZS1zdWJ0aXRsZSB7CiAgICAgbWFyZ2luOiAz
cHg7CiB9CiAKLS5tZXRyaWNzIC5wYWRkaW5nLmhvdmVyZWQgewotICAgIGJhY2tncm91bmQtY29s
b3I6IHJnYigxNzMsIDIwNCwgMjMxKTsKLX0KLQogLm1ldHJpY3MgLmNvbnRlbnQgewogICAgIHBv
c2l0aW9uOiBzdGF0aWM7CiAgICAgYm9yZGVyOiAxcHggZ3JleSBzb2xpZDsKQEAgLTE5MzQsMTAg
KzE5MjIsNiBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFuZS1zdWJ0aXRsZSB7
CiAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiB9CiAKLS5tZXRyaWNzIC5jb250ZW50LmhvdmVyZWQg
ewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTAsIDIxNCwgMjM2KTsKLX0KLQogLm1ldHJp
Y3MgLmNvbnRlbnQgc3BhbiB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAwNzY4
MDBiLi4zYmJkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcwpAQCAtMzgyLDkgKzM4Miw0MyBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkRE9NTm9kZUlk
ID0gbm9kZUlkOwotICAgICAgICBpZiAobm9kZUlkKQotICAgICAgICAgICAgRE9NQWdlbnQuaGln
aGxpZ2h0Tm9kZShub2RlSWQsIG1vZGUgfHwgImFsbCIpOwotICAgICAgICBlbHNlCisgICAgICAg
IGlmIChub2RlSWQpIHsKKyAgICAgICAgICAgIG1vZGUgPSBtb2RlIHx8ICJhbGwiOworICAgICAg
ICAgICAgdmFyIGhpZ2hsaWdodEFyZ3MgPSBbbm9kZUlkXTsKKyAgICAgICAgICAgIGlmIChtb2Rl
ID09PSAiYWxsIiB8fCBtb2RlID09PSAiY29udGVudCIpIHsKKyAgICAgICAgICAgICAgICBoaWdo
bGlnaHRBcmdzLnB1c2goV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29udGVudC50
b1Byb3RvY29sUkdCQSgpKTsKKyAgICAgICAgICAgICAgICBoaWdobGlnaHRBcmdzLnB1c2goV2Vi
SW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29udGVudE91dGxpbmUudG9Qcm90b2NvbFJH
QkEoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGhpZ2hsaWdodEFy
Z3MucHVzaCh1bmRlZmluZWQpOworICAgICAgICAgICAgICAgIGhpZ2hsaWdodEFyZ3MucHVzaCh1
bmRlZmluZWQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobW9kZSA9PT0gImFs
bCIgfHwgbW9kZSA9PT0gInBhZGRpbmciKSB7CisgICAgICAgICAgICAgICAgaGlnaGxpZ2h0QXJn
cy5wdXNoKFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LlBhZGRpbmcudG9Qcm90b2Nv
bFJHQkEoKSk7CisgICAgICAgICAgICAgICAgaGlnaGxpZ2h0QXJncy5wdXNoKFdlYkluc3BlY3Rv
ci5Db2xvci5QYWdlSGlnaGxpZ2h0LlBhZGRpbmdPdXRsaW5lLnRvUHJvdG9jb2xSR0JBKCkpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBoaWdobGlnaHRBcmdzLnB1c2go
dW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgICBoaWdobGlnaHRBcmdzLnB1c2godW5kZWZpbmVk
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1v
ZGUgPT09ICJib3JkZXIiKSB7CisgICAgICAgICAgICAgICAgaGlnaGxpZ2h0QXJncy5wdXNoKFdl
Ykluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkJvcmRlci50b1Byb3RvY29sUkdCQSgpKTsK
KyAgICAgICAgICAgICAgICBoaWdobGlnaHRBcmdzLnB1c2goV2ViSW5zcGVjdG9yLkNvbG9yLlBh
Z2VIaWdobGlnaHQuQm9yZGVyT3V0bGluZS50b1Byb3RvY29sUkdCQSgpKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaGlnaGxpZ2h0QXJncy5wdXNoKHVuZGVmaW5lZCk7
CisgICAgICAgICAgICAgICAgaGlnaGxpZ2h0QXJncy5wdXNoKHVuZGVmaW5lZCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChtb2RlID09PSAiYWxsIiB8fCBtb2RlID09PSAibWFy
Z2luIikgeworICAgICAgICAgICAgICAgIGhpZ2hsaWdodEFyZ3MucHVzaChXZWJJbnNwZWN0b3Iu
Q29sb3IuUGFnZUhpZ2hsaWdodC5NYXJnaW4udG9Qcm90b2NvbFJHQkEoKSk7CisgICAgICAgICAg
ICAgICAgaGlnaGxpZ2h0QXJncy5wdXNoKFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0
Lk1hcmdpbk91dGxpbmUudG9Qcm90b2NvbFJHQkEoKSk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGhpZ2hsaWdodEFyZ3MucHVzaCh1bmRlZmluZWQpOworICAgICAgICAg
ICAgICAgIGhpZ2hsaWdodEFyZ3MucHVzaCh1bmRlZmluZWQpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHROb2RlLmFwcGx5KERPTUFnZW50LCBoaWdobGln
aHRBcmdzKTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBET01BZ2VudC5oaWRlSGlnaGxp
Z2h0KCk7CiAgICAgfSwKIAo=
</data>
<flag name="review"
          id="100341"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="100356"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104519</attachid>
            <date>2011-08-19 10:14:26 -0700</date>
            <delta_ts>2011-08-19 10:28:55 -0700</delta_ts>
            <desc>[PATCH] Comments addressed</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>44807</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGUzNmRhMzlkNzc3ODAxZTk4N2I4OGJkYmExOTZmNzQ0M2QzYTc4OTkKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgQXVnIDE5
IDIwOjU5OjI5IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNhMGYxZS4uNGJm
MmEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTA4LTE5ICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBUaGUgaGlnaGxpZ2h0aW5nIEFQSSBpcyBzbGlnaHRseSBjaGFuZ2VkOiBj
bGllbnRzIG5lZWQgdG8gc3BlY2lmeSBjb2xvcnMgZm9yIGNlcnRhaW4gZWxlbWVudHMgb2YgdGhl
IGhpZ2hsaWdodGVkIG9iamVjdHMsCisgICAgICAgIHJhdGhlciB0aGFuIGEgZ2VuZXJpYyAiaGln
aGxpZ2h0aW5nIG1vZGUiLiBUaGlzIGFsbG93cyB0bzoKKyAgICAgICAgLSB1c2UgZW50aXJlbHkg
Y3VzdG9tIGNvbG9ycyBmb3IgaGlnaGxpZ2h0aW5nOworICAgICAgICAtIGRpc3BsYXkgYW55IGNv
bWJpbmF0aW9uIG9mIGZpbGwvb3V0bGluZSBmb3IgdGhlIGhpZ2hsaWdodGVkIGFyZWE7CisgICAg
ICAgIC0gaGlnaGxpZ2h0IGFueSBjb21iaW5hdGlvbnMgb2YgZWxlbWVudCBwYXJ0cy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9E
T01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NTm9kZUhpZ2hsaWdo
dGVyOjpkcmF3Tm9kZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpET01Ob2RlSGlnaGxp
Z2h0ZXI6OmRyYXdSZWN0SGlnaGxpZ2h0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGln
aHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlkZUhpZ2hsaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZHJhd0hpZ2hsaWdodCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Db2xvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xvci5mcm9t
UkdCQSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlLnRvUHJvdG9jb2xS
R0JBKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9o
aWdobGlnaHRET01Ob2RlLmhhbmRsZU1vdXNlT3Zlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGlnaGxpZ2h0RE9NTm9kZS5oYW5kbGVNb3Vz
ZU91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlw
ZS5faGlnaGxpZ2h0RE9NTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmhpZ2hsaWdodERPTU5vZGUpOgorCiAyMDExLTA4LTE5ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgQmV0dGVyIGJ1aWxkIGZp
eCBhZnRlciByOTMzODQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGln
aGxpZ2h0ZXIuY3BwCmluZGV4IDA0YmI0NDguLjJkZGFhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCkBAIC0zMyw5ICszMywxMSBAQAog
CiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUg
IkZvbnRGYW1pbHkuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUu
aCIKQEAgLTQzLDEwICs0NSwyMyBAQAogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNpbmNs
dWRlICJUZXh0UnVuLmgiCiAKKyNkZWZpbmUgVE9PTFRJUF9GT05UX0ZBTUlMSUVTKHNpemUsIC4u
LikgXAorc3RhdGljIHVuc2lnbmVkIHRvb2x0aXBGb250RmFjZVNpemUgPSBzaXplO1wKK3N0YXRp
YyBTdHJpbmcgdG9vbHRpcEZvbnRGYWNlW10gPSB7IF9fVkFfQVJHU19fIH07CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAorY29uc3Qgc3RhdGljIGludCByZWN0SW5mbGF0
ZVB4ID0gNDsKK2NvbnN0IHN0YXRpYyBpbnQgZm9udEhlaWdodFB4ID0gMTI7Citjb25zdCBzdGF0
aWMgaW50IGJvcmRlcldpZHRoUHggPSAxOworY29uc3Qgc3RhdGljIGludCB0b29sdGlwUGFkZGlu
ZyA9IDQ7CisKK2NvbnN0IHN0YXRpYyBpbnQgYXJyb3dUaXBPZmZzZXQgPSAyMDsKK2NvbnN0IHN0
YXRpYyBpbnQgYXJyb3dIZWlnaHQgPSA3OworY29uc3Qgc3RhdGljIGludCBhcnJvd0hhbGZXaWR0
aCA9IDc7CisKIFBhdGggcXVhZFRvUGF0aChjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiB7CiAgICAg
UGF0aCBxdWFkUGF0aDsKQEAgLTU4LDE2ICs3MywxNSBAQCBQYXRoIHF1YWRUb1BhdGgoY29uc3Qg
RmxvYXRRdWFkJiBxdWFkKQogICAgIHJldHVybiBxdWFkUGF0aDsKIH0KIAotdm9pZCBkcmF3T3V0
bGluZWRRdWFkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFk
LCBjb25zdCBDb2xvciYgZmlsbENvbG9yKQordm9pZCBkcmF3T3V0bGluZWRRdWFkKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBDb2xvciYgZmls
bENvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKQogewogICAgIHN0YXRpYyBjb25zdCBp
bnQgb3V0bGluZVRoaWNrbmVzcyA9IDI7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIG91dGxpbmVD
b2xvcig2MiwgODYsIDE4MCwgMjI4KTsKIAogICAgIFBhdGggcXVhZFBhdGggPSBxdWFkVG9QYXRo
KHF1YWQpOwogCiAgICAgLy8gQ2xpcCBvdXQgdGhlIHF1YWQsIHRoZW4gZHJhdyB3aXRoIGEgMnB4
IHN0cm9rZSB0byBnZXQgYSBwaXhlbAotICAgIC8vIG9mIG91dGxpbmUgKGJlY2F1c2UgaW5mbGF0
aW5nIGEgcXVhZCBpcyBoYXJkKQotICAgIHsKKyAgICAvLyBvZiBvdXRsaW5lIChiZWNhdXNlIGlu
ZmxhdGluZyBhIHF1YWQgaXMgaGFyZCkuCisgICAgaWYgKG91dGxpbmVDb2xvci5pc1ZhbGlkKCkp
IHsKICAgICAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgICAgIGNvbnRleHQuY2xpcE91dChxdWFk
UGF0aCk7CiAKQEAgLTc4LDUyICs5Miw1MCBAQCB2b2lkIGRyYXdPdXRsaW5lZFF1YWQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IENvbAogICAg
ICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAKLSAgICAvLyBOb3cgZG8gdGhlIGZpbGwK
LSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwotICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFBhdGgpOworICAgIC8vIE5vdyBkbyB0aGUgZmls
bC4KKyAgICBpZiAoZmlsbENvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihmaWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0
LmZpbGxQYXRoKHF1YWRQYXRoKTsKKyAgICB9CiB9CiAKLXZvaWQgZHJhd091dGxpbmVkUXVhZFdp
dGhDbGlwKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBj
b25zdCBGbG9hdFF1YWQmIGNsaXBRdWFkLCBjb25zdCBDb2xvciYgZmlsbENvbG9yKQordm9pZCBk
cmF3T3V0bGluZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFF1YWQmIHF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgY2xpcFF1YWQsIGNvbnN0IENvbG9yJiBm
aWxsQ29sb3IsIGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IpCiB7CiAgICAgY29udGV4dC5zYXZl
KCk7CiAgICAgUGF0aCBjbGlwUXVhZFBhdGggPSBxdWFkVG9QYXRoKGNsaXBRdWFkKTsKICAgICBj
b250ZXh0LmNsaXBPdXQoY2xpcFF1YWRQYXRoKTsKLSAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRl
eHQsIHF1YWQsIGZpbGxDb2xvcik7CisgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBxdWFk
LCBmaWxsQ29sb3IsIG91dGxpbmVDb2xvcik7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAK
LXZvaWQgZHJhd0hpZ2hsaWdodEZvckJveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UXVhZCYgY29udGVudFF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNv
bnN0IEZsb2F0UXVhZCYgYm9yZGVyUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBE
T01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1vZGUgbW9kZSkKK3ZvaWQgZHJhd0hpZ2hsaWdo
dEZvckJveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVu
dFF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9y
ZGVyUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBIaWdobGlnaHREYXRhKiBoaWdo
bGlnaHREYXRhKQogewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBjb250ZW50Qm94Q29sb3IoMTI1
LCAxNzMsIDIxNywgMTI4KTsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgcGFkZGluZ0JveENvbG9y
KDEyNSwgMTczLCAyMTcsIDE2MCk7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGJvcmRlckJveENv
bG9yKDEyNSwgMTczLCAyMTcsIDE5Mik7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIG1hcmdpbkJv
eENvbG9yKDEyNSwgMTczLCAyMTcsIDIyOCk7Ci0KLSAgICBGbG9hdFF1YWQgY2xpcFF1YWQ7Ci0g
ICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNYXJnaW4gfHwgKG1v
ZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgbWFyZ2luUXVhZCAhPSBi
b3JkZXJRdWFkKSkgewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwg
bWFyZ2luUXVhZCwgYm9yZGVyUXVhZCwgbWFyZ2luQm94Q29sb3IpOwotICAgICAgICBjbGlwUXVh
ZCA9IGJvcmRlclF1YWQ7Ci0gICAgfQotICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGlnaHRl
cjo6SGlnaGxpZ2h0Qm9yZGVyIHx8IChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxp
Z2h0QWxsICYmIGJvcmRlclF1YWQgIT0gcGFkZGluZ1F1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRs
aW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCwgYm9yZGVy
Qm94Q29sb3IpOwotICAgICAgICBjbGlwUXVhZCA9IHBhZGRpbmdRdWFkOwotICAgIH0KLSAgICBp
ZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodFBhZGRpbmcgfHwgKG1vZGUg
PT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgcGFkZGluZ1F1YWQgIT0gY29u
dGVudFF1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBw
YWRkaW5nUXVhZCwgY29udGVudFF1YWQsIHBhZGRpbmdCb3hDb2xvcik7Ci0gICAgICAgIGNsaXBR
dWFkID0gY29udGVudFF1YWQ7Ci0gICAgfQotICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGln
aHRlcjo6SGlnaGxpZ2h0Q29udGVudCB8fCBtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGln
aGxpZ2h0QWxsKQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGNvbnRlbnRRdWFk
LCBjb250ZW50Qm94Q29sb3IpOwotICAgIGVsc2UKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdp
dGhDbGlwKGNvbnRleHQsIGNsaXBRdWFkLCBjbGlwUXVhZCwgY29udGVudEJveENvbG9yKTsKKy8v
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRlZmF1bHRDb250ZW50Qm94Q29sb3IsICgx
MTEsIDE2OCwgMjIwLCAxNjgpKTsKKy8vICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRl
ZmF1bHRDb250ZW50T3V0bGluZUNvbG9yLCAoOSwgODMsIDE0OCkpOworCisvLyAgICBGbG9hdFF1
YWQgY2xpcFF1YWQ7CisvLyAgICBpZiAoKGhpZ2hsaWdodERhdGEtPmhhc01hcmdpbiAmJiAhaGln
aGxpZ2h0RGF0YS0+aGFzQm9yZGVyKSB8fCAoaGlnaGxpZ2h0RGF0YS0+aXNGdWxsSGlnaGxpZ2h0
KCkgJiYgbWFyZ2luUXVhZCAhPSBib3JkZXJRdWFkKSkgeworICAgICAgICBkcmF3T3V0bGluZWRR
dWFkV2l0aENsaXAoY29udGV4dCwgbWFyZ2luUXVhZCwgYm9yZGVyUXVhZCwgaGlnaGxpZ2h0RGF0
YS0+bWFyZ2luLCBoaWdobGlnaHREYXRhLT5tYXJnaW5PdXRsaW5lKTsKKy8vICAgICAgICBjbGlw
UXVhZCA9IGJvcmRlclF1YWQ7CisvLyAgICB9CisvLyAgICBpZiAoKGhpZ2hsaWdodERhdGEtPmhh
c0JvcmRlciAmJiAhaGlnaGxpZ2h0RGF0YS0+aGFzUGFkZGluZykgfHwgKGhpZ2hsaWdodERhdGEt
PmlzRnVsbEhpZ2hsaWdodCgpICYmIGJvcmRlclF1YWQgIT0gcGFkZGluZ1F1YWQpKSB7CisgICAg
ICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBib3JkZXJRdWFkLCBwYWRkaW5n
UXVhZCwgaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyLCBoaWdobGlnaHREYXRhLT5ib3JkZXJPdXRsaW5l
KTsKKy8vICAgICAgICBjbGlwUXVhZCA9IHBhZGRpbmdRdWFkOworLy8gICAgfQorLy8gICAgaWYg
KChoaWdobGlnaHREYXRhLT5oYXNQYWRkaW5nICYmICFoaWdobGlnaHREYXRhLT5oYXNDb250ZW50
KSB8fCAoaGlnaGxpZ2h0RGF0YS0+aXNGdWxsSGlnaGxpZ2h0KCkgJiYgcGFkZGluZ1F1YWQgIT0g
Y29udGVudFF1YWQpKSB7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0
LCBwYWRkaW5nUXVhZCwgY29udGVudFF1YWQsIGhpZ2hsaWdodERhdGEtPnBhZGRpbmcsIGhpZ2hs
aWdodERhdGEtPnBhZGRpbmdPdXRsaW5lKTsKKy8vICAgICAgICBjbGlwUXVhZCA9IGNvbnRlbnRR
dWFkOworLy8gICAgfQorLy8gICAgaWYgKGhpZ2hsaWdodERhdGEtPmhhc0NvbnRlbnQpCisgICAg
ICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgY29udGVudFF1YWQsIGhpZ2hsaWdodERhdGEt
PmNvbnRlbnQsIGhpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRsaW5lKTsKKy8vICAgIGVsc2UKKy8v
ICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgY2xpcFF1YWQsIGNsaXBR
dWFkLCBkZWZhdWx0Q29udGVudEJveENvbG9yLCBkZWZhdWx0Q29udGVudE91dGxpbmVDb2xvcik7
CiB9CiAKLXZvaWQgZHJhd0hpZ2hsaWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgbGluZUJveFF1YWRz
KQordm9pZCBkcmF3SGlnaGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5kZXJlcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBsaW5lQm94UXVhZHMsIEhp
Z2hsaWdodERhdGEqIGhpZ2hsaWdodERhdGEpCiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGxp
bmVCb3hDb2xvcigxMjUsIDE3MywgMjE3LCAxMjgpOwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsaW5lQm94UXVhZHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQo
Y29udGV4dCwgbGluZUJveFF1YWRzW2ldLCBsaW5lQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0
bGluZWRRdWFkKGNvbnRleHQsIGxpbmVCb3hRdWFkc1tpXSwgaGlnaGxpZ2h0RGF0YS0+Y29udGVu
dCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUpOwogfQogCiBpbmxpbmUgTGF5b3V0U2l6
ZSBmcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KEZyYW1lKiBmcmFtZSkKQEAgLTEzMiw1OCArMTQ0LDEz
MSBAQCBpbmxpbmUgTGF5b3V0U2l6ZSBmcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KEZyYW1lKiBmcmFt
ZSkKICAgICByZXR1cm4gdG9MYXlvdXRTaXplKG1haW5GcmFtZVBvaW50KTsKIH0KIAoraW50IGRy
YXdTdWJzdHJpbmcoY29uc3QgVGV4dFJ1biYgZ2xvYmFsVGV4dFJ1biwgaW50IG9mZnNldCwgaW50
IGxlbmd0aCwgY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgRm9udCYgZm9udCwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiB0aXRsZVJlY3QpCit7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIGdsb2JhbFRleHRSdW4sIExheW91dFBvaW50KHRpdGxl
UmVjdC54KCkgKyByZWN0SW5mbGF0ZVB4LCB0aXRsZVJlY3QueSgpICsgZm9udC5mb250TWV0cmlj
cygpLmhlaWdodCgpKSwgb2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpOworICAgIHJldHVybiBvZmZz
ZXQgKyBsZW5ndGg7Cit9CisKK2ludCBjYWxjdWxhdGVBcnJvd1RpcFgoY29uc3QgTGF5b3V0UmVj
dCYgYW5jaG9yQm94LCBjb25zdCBMYXlvdXRSZWN0JiB0aXRsZVJlY3QpCit7CisgICAgaW50IGFu
Y2hvclggPSBhbmNob3JCb3gueCgpOworCisgICAgLy8gQ2hlY2sgZm9yIGhlYXZpbHkgbWlzYWxp
Z25lZCB0b29sdGlwIGZpcnN0LgorICAgIGlmICh0aXRsZVJlY3QueCgpID4gYW5jaG9yQm94Lm1h
eFgoKSkKKyAgICAgICAgcmV0dXJuIHRpdGxlUmVjdC54KCkgKyBhcnJvd0hhbGZXaWR0aDsKKwor
ICAgIGlmICh0aXRsZVJlY3QubWF4WCgpIDwgYW5jaG9yWCkKKyAgICAgICAgcmV0dXJuIHRpdGxl
UmVjdC5tYXhYKCkgLSBhcnJvd0hhbGZXaWR0aDsKKworICAgIGludCB4ID0gdGl0bGVSZWN0Lngo
KSArIGFycm93VGlwT2Zmc2V0OworICAgIGlmICh4IDwgYW5jaG9yWCkKKyAgICAgICAgeCA9IGFu
Y2hvclggKyBhcnJvd1RpcE9mZnNldDsKKyAgICBpZiAoeCA+IHRpdGxlUmVjdC5tYXhYKCkgLSBh
cnJvd0hhbGZXaWR0aCkKKyAgICAgICAgeCA9IHRpdGxlUmVjdC5tYXhYKCkgLSBhcnJvd0hhbGZX
aWR0aDsKKworICAgIHJldHVybiB4OworfQorCit2b2lkIHNldFVwRm9udEZhbWlsaWVzKEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3Mp
Cit7CisjaWYgT1MoV0lORE9XUykKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygyLCBTdHJpbmcoIkNv
bnNvbGFzIiksIFN0cmluZygiTHVjaWRhIENvbnNvbGUiKSkKKyNlbGlmIE9TKFVOSVgpCitUT09M
VElQX0ZPTlRfRkFNSUxJRVMoMSwgU3RyaW5nKCJkZWphdnUgc2FucyBtb25vIikpCisjZWxpZiBP
UyhNQUNfT1NfWCkKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygyLCBTdHJpbmcoIk1lbmxvIiksIFN0
cmluZygiTW9uYWNvIikpCisjZW5kaWYKKy8vIEluIHRoZSBkZWZhdWx0IGNhc2UsIHdlIGdldCB0
aGUgc2V0dGluZ3MtcHJvdmlkZWQgbW9ub3NwYWNlIGZvbnQuCisKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGZpeGVkRm9udEZhbWlseSA9IHNldHRpbmdzLT5maXhlZEZvbnRGYW1pbHkoKTsKKyAg
ICBpZiAoIWZpeGVkRm9udEZhbWlseS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkpOwor
ICAgICAgICBBdG9taWNTdHJpbmcgZmFjZTsKKyAgICAgICAgRm9udEZhbWlseSogY3VycmVudEZh
bWlseSA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b29sdGlwRm9udEZh
Y2VTaXplOyArK2kpIHsKKyAgICAgICAgICAgIGZhY2UgPSBBdG9taWNTdHJpbmcodG9vbHRpcEZv
bnRGYWNlW2ldKTsKKyAgICAgICAgICAgIGlmICghY3VycmVudEZhbWlseSkgeworICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLnNldEZhbWlseShmYWNlKTsKKyAg
ICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5hcHBlbmRGYW1pbHko
MCk7CisgICAgICAgICAgICAgICAgY3VycmVudEZhbWlseSA9ICZmb250RGVzY3JpcHRpb24uZmly
c3RGYW1pbHkoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUmVmUHRy
PFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNoYXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgp
OworICAgICAgICAgICAgICAgIG5ld0ZhbWlseS0+c2V0RmFtaWx5KGZhY2UpOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGYW1pbHktPmFwcGVuZEZhbWlseShuZXdGYW1pbHkpOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNo
YXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgpOworICAgICAgICBuZXdGYW1pbHktPnNldEZhbWlseShm
aXhlZEZvbnRGYW1pbHkpOworICAgICAgICBjdXJyZW50RmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3
RmFtaWx5KTsKKyAgICAgICAgY3VycmVudEZhbWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKKyAgICB9
Cit9CisKIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5v
ZGUqIG5vZGUsIGNvbnN0IExheW91dFJlY3QmIGJvdW5kaW5nQm94LCBjb25zdCBMYXlvdXRSZWN0
JiBhbmNob3JCb3gsIGNvbnN0IEZsb2F0UmVjdCYgb3ZlcmxheVJlY3QsIFdlYkNvcmU6OlNldHRp
bmdzKiBzZXR0aW5ncykKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHJlY3RJbmZsYXRlUHggPSA0
OwotICAgIHN0YXRpYyBjb25zdCBpbnQgZm9udEhlaWdodFB4ID0gMTI7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBib3JkZXJXaWR0aFB4ID0gMTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9y
LCB0b29sdGlwQmFja2dyb3VuZENvbG9yLCAoMjU1LCAyNTUsIDE5NCwgMjU1KSk7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEJvcmRlckNvbG9yLCAoQ29sb3I6OmJsYWNr
KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEZvbnRDb2xvciwgKENv
bG9yOjpibGFjaykpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgYmFja2dyb3Vu
ZENvbG9yLCAoMjU1LCAyNTUsIDE5NCwgMjU1KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChD
b2xvciwgdGFnQ29sb3IsICgxMzYsIDE4LCAxMjgpKTsgLy8gU2FtZSBhcyAud2Via2l0LWh0bWwt
dGFnLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGF0dHJDb2xvciwgKDI2LCAyNiwg
MTY2KSk7IC8vIFNhbWUgYXMgLndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZS4KKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKENvbG9yLCBub3JtYWxDb2xvciwgKENvbG9yOjpibGFjaykpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHB4QW5kQm9yZGVyQ29sb3IsICgxMjgsIDEyOCwg
MTI4KSk7CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHhTdHJpbmcsICgicHgi
KSk7CisgICAgY29uc3Qgc3RhdGljIFVDaGFyIHRpbWVzVUNoYXJbXSA9IHsgMHgwMEQ3LCAwIH07
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHRpbWVzU3RyaW5nLCAodGltZXNVQ2hh
cikpOyAvLyAmdGltZXM7IHN0cmluZworCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9u
dENhY2hlUHVyZ2VQcmV2ZW50ZXI7CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUpOwogICAgIGJvb2wgaXNYSFRNTCA9IGVsZW1lbnQtPmRvY3VtZW50
KCktPmlzWEhUTUxEb2N1bWVudCgpOwotICAgIFN0cmluZyBub2RlVGl0bGUgPSBpc1hIVE1MID8g
ZWxlbWVudC0+bm9kZU5hbWUoKSA6IGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKTsKKyAgICBT
dHJpbmcgbm9kZVRpdGxlKGlzWEhUTUwgPyBlbGVtZW50LT5ub2RlTmFtZSgpIDogZWxlbWVudC0+
bm9kZU5hbWUoKS5sb3dlcigpKTsKKyAgICB1bnNpZ25lZCB0YWdOYW1lTGVuZ3RoID0gbm9kZVRp
dGxlLmxlbmd0aCgpOworCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0gZWxlbWVu
dC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICB1bnNpZ25lZCBpZFN0cmluZ0xlbmd0aCA9IDA7Cisg
ICAgU3RyaW5nIGlkU3RyaW5nOwogICAgIGlmICghaWRWYWx1ZS5pc051bGwoKSAmJiAhaWRWYWx1
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgbm9kZVRpdGxlICs9ICIjIjsKICAgICAgICAgbm9kZVRp
dGxlICs9IGlkVmFsdWU7CisgICAgICAgIGlkU3RyaW5nTGVuZ3RoID0gMSArIGlkVmFsdWUubGVu
Z3RoKCk7CiAgICAgfQorCisgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVz
OworICAgIHVuc2lnbmVkIGNsYXNzZXNTdHJpbmdMZW5ndGggPSAwOwogICAgIGlmIChlbGVtZW50
LT5oYXNDbGFzcygpICYmIGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKSB7CiAgICAgICAgIGNv
bnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNsYXNzTmFtZXNTdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHls
ZWRFbGVtZW50Kj4oZWxlbWVudCktPmNsYXNzTmFtZXMoKTsKICAgICAgICAgc2l6ZV90IGNsYXNz
TmFtZUNvdW50ID0gY2xhc3NOYW1lc1N0cmluZy5zaXplKCk7Ci0gICAgICAgIGlmIChjbGFzc05h
bWVDb3VudCkgewotICAgICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05h
bWVzOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGFzc05hbWVDb3VudDsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBj
bGFzc05hbWVzU3RyaW5nW2ldOwotICAgICAgICAgICAgICAgIGlmICh1c2VkQ2xhc3NOYW1lcy5j
b250YWlucyhjbGFzc05hbWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICB1c2VkQ2xhc3NOYW1lcy5hZGQoY2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAg
ICBub2RlVGl0bGUgKz0gIi4iOwotICAgICAgICAgICAgICAgIG5vZGVUaXRsZSArPSBjbGFzc05h
bWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NO
YW1lQ291bnQ7ICsraSkgeworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05h
bWUgPSBjbGFzc05hbWVzU3RyaW5nW2ldOworICAgICAgICAgICAgaWYgKHVzZWRDbGFzc05hbWVz
LmNvbnRhaW5zKGNsYXNzTmFtZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB1c2VkQ2xhc3NOYW1lcy5hZGQoY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIG5vZGVUaXRs
ZSArPSAiLiI7CisgICAgICAgICAgICBub2RlVGl0bGUgKz0gY2xhc3NOYW1lOworICAgICAgICAg
ICAgY2xhc3Nlc1N0cmluZ0xlbmd0aCArPSAxICsgY2xhc3NOYW1lLmxlbmd0aCgpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgbm9kZVRpdGxlICs9ICIgWyI7Ci0gICAgbm9kZVRpdGxlICs9IFN0
cmluZzo6bnVtYmVyKGJvdW5kaW5nQm94LndpZHRoKCkpOwotICAgIG5vZGVUaXRsZS5hcHBlbmQo
c3RhdGljX2Nhc3Q8VUNoYXI+KDB4MDBENykpOyAvLyAmdGltZXM7Ci0gICAgbm9kZVRpdGxlICs9
IFN0cmluZzo6bnVtYmVyKGJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICBub2RlVGl0bGUgKz0g
Il0iOworICAgIFN0cmluZyB3aWR0aE51bWJlclBhcnQgPSAiICIgKyBTdHJpbmc6Om51bWJlcihi
b3VuZGluZ0JveC53aWR0aCgpKTsKKyAgICBub2RlVGl0bGUgKz0gd2lkdGhOdW1iZXJQYXJ0ICsg
cHhTdHJpbmc7CisgICAgbm9kZVRpdGxlICs9IHRpbWVzU3RyaW5nOworICAgIFN0cmluZyBoZWln
aHROdW1iZXJQYXJ0ID0gU3RyaW5nOjpudW1iZXIoYm91bmRpbmdCb3guaGVpZ2h0KCkpOworICAg
IG5vZGVUaXRsZSArPSBoZWlnaHROdW1iZXJQYXJ0ICsgcHhTdHJpbmc7CiAKICAgICBGb250RGVz
Y3JpcHRpb24gZGVzYzsKLSAgICBGb250RmFtaWx5IGZhbWlseTsKLSAgICBmYW1pbHkuc2V0RmFt
aWx5KHNldHRpbmdzLT5maXhlZEZvbnRGYW1pbHkoKSk7Ci0gICAgZGVzYy5zZXRGYW1pbHkoZmFt
aWx5KTsKKyAgICBkZXNjLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdN
b2RlKCkpOwogICAgIGRlc2Muc2V0Q29tcHV0ZWRTaXplKGZvbnRIZWlnaHRQeCk7CisgICAgc2V0
VXBGb250RmFtaWxpZXMoZGVzYywgc2V0dGluZ3MpOwogICAgIEZvbnQgZm9udCA9IEZvbnQoZGVz
YywgMCwgMCk7CiAgICAgZm9udC51cGRhdGUoMCk7CiAKICAgICBUZXh0UnVuIG5vZGVUaXRsZVJ1
bihub2RlVGl0bGUpOwogICAgIExheW91dFBvaW50IHRpdGxlQmFzZVBvaW50ID0gTGF5b3V0UG9p
bnQoYW5jaG9yQm94LngoKSwgYW5jaG9yQm94Lm1heFkoKSAtIDEpOwogICAgIHRpdGxlQmFzZVBv
aW50Lm1vdmUocmVjdEluZmxhdGVQeCwgcmVjdEluZmxhdGVQeCk7Ci0gICAgTGF5b3V0UmVjdCB0
aXRsZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQobm9k
ZVRpdGxlUnVuLCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4KSk7CisgICAgTGF5b3V0UmVj
dCB0aXRsZVJlY3QgPSBlbmNsb3NpbmdMYXlvdXRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRl
eHQobm9kZVRpdGxlUnVuLCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4KSk7CiAgICAgdGl0
bGVSZWN0LmluZmxhdGUocmVjdEluZmxhdGVQeCk7CiAKICAgICAvLyBUaGUgaW5pdGlhbCBvZmZz
ZXRzIG5lZWRlZCB0byBjb21wZW5zYXRlIGZvciBhIDFweC10aGljayBib3JkZXIgc3Ryb2tlICh3
aGljaCBpcyBub3QgYSBwYXJ0IG9mIHRoZSByZWN0YW5nbGUpLgpAQCAtMjExLDE5ICsyOTYsNDkg
QEAgdm9pZCBkcmF3RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSog
bm9kZSwgY29uc3QgTGF5b3V0UmVjdCYgYm8KICAgICAgICAgZHkgPSBvdmVybGF5UmVjdC55KCkg
LSB0aXRsZVJlY3QueSgpICsgYm9yZGVyV2lkdGhQeDsKIAogICAgIHRpdGxlUmVjdC5tb3ZlKGR4
LCBkeSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih0b29sdGlwQm9yZGVyQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworCisgICAgYm9vbCBpc0Fycm93QXRUb3AgPSB0aXRsZVJlY3Qu
eSgpID4gYW5jaG9yQm94LnkoKTsKKyAgICB0aXRsZVJlY3QubW92ZSgwLCB0b29sdGlwUGFkZGlu
ZyAqIChpc0Fycm93QXRUb3AgPyAxIDogLTEpKTsKKworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29s
b3IocHhBbmRCb3JkZXJDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5z
ZXRTdHJva2VUaGlja25lc3MoYm9yZGVyV2lkdGhQeCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29s
b3IodG9vbHRpcEJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ICAgICBjb250ZXh0LmRyYXdSZWN0KHRpdGxlUmVjdCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29s
b3IodG9vbHRpcEZvbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC5k
cmF3VGV4dChmb250LCBub2RlVGl0bGVSdW4sIExheW91dFBvaW50KHRpdGxlUmVjdC54KCkgKyBy
ZWN0SW5mbGF0ZVB4LCB0aXRsZVJlY3QueSgpICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgp
KSk7CisKKyAgICB7CisgICAgICAgIGludCBhcnJvd1RpcFggPSBjYWxjdWxhdGVBcnJvd1RpcFgo
YW5jaG9yQm94LCB0aXRsZVJlY3QpOworICAgICAgICBGbG9hdFBvaW50IGFycm93UG9pbnRzWzNd
OworICAgICAgICBmbG9hdCBhcnJvd0Jhc2VZID0gaXNBcnJvd0F0VG9wID8gdGl0bGVSZWN0Lnko
KSA6IHRpdGxlUmVjdC5tYXhZKCk7CisgICAgICAgIGFycm93UG9pbnRzWzBdID0gRmxvYXRQb2lu
dChhcnJvd1RpcFggLSBhcnJvd0hhbGZXaWR0aCwgYXJyb3dCYXNlWSk7CisgICAgICAgIGFycm93
UG9pbnRzWzFdID0gRmxvYXRQb2ludChhcnJvd1RpcFgsIGFycm93QmFzZVkgKyBhcnJvd0hlaWdo
dCAqIChpc0Fycm93QXRUb3AgPyAtMSA6IDEpKTsKKyAgICAgICAgYXJyb3dQb2ludHNbMl0gPSBG
bG9hdFBvaW50KGFycm93VGlwWCArIGFycm93SGFsZldpZHRoLCBhcnJvd0Jhc2VZKTsKKyAgICAg
ICAgY29udGV4dC5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvd1BvaW50cyk7CisKKyAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhib3Jk
ZXJXaWR0aFB4ICsgMSk7CisgICAgICAgIExheW91dFBvaW50IHN0YXJ0UG9pbnQgPSBMYXlvdXRQ
b2ludChhcnJvd1BvaW50c1swXS54KCkgKyAxLCBhcnJvd1BvaW50c1swXS55KCkpOworICAgICAg
ICBMYXlvdXRQb2ludCBlbmRQb2ludCA9IExheW91dFBvaW50KGFycm93UG9pbnRzWzJdLngoKSAt
IDEsIGFycm93UG9pbnRzWzJdLnkoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0xpbmUoc3RhcnRQ
b2ludCwgZW5kUG9pbnQpOworICAgIH0KKworICAgIGludCBjdXJyZW50UG9zID0gMDsKKyAgICBj
dXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHRhZ05h
bWVMZW5ndGgsIHRhZ0NvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGlmIChp
ZFN0cmluZ0xlbmd0aCkKKyAgICAgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRp
dGxlUnVuLCBjdXJyZW50UG9zLCBpZFN0cmluZ0xlbmd0aCwgYXR0ckNvbG9yLCBmb250LCBjb250
ZXh0LCB0aXRsZVJlY3QpOworICAgIGlmIChjbGFzc2VzU3RyaW5nTGVuZ3RoKQorICAgICAgICBj
dXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIGNsYXNz
ZXNTdHJpbmdMZW5ndGgsIGF0dHJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAg
ICBjdXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHdp
ZHRoTnVtYmVyUGFydC5sZW5ndGgoKSwgbm9ybWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxl
UmVjdCk7CisgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJy
ZW50UG9zLCBweFN0cmluZy5sZW5ndGgoKSArIHRpbWVzU3RyaW5nLmxlbmd0aCgpLCBweEFuZEJv
cmRlckNvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGN1cnJlbnRQb3MgPSBk
cmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgaGVpZ2h0TnVtYmVyUGFydC5s
ZW5ndGgoKSwgbm9ybWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAgZHJh
d1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHB4U3RyaW5nLmxlbmd0aCgpLCBw
eEFuZEJvcmRlckNvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOwogfQogCiB9IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIERPTU5vZGVIaWdobGlnaHRlciB7CiAKLXZv
aWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2Rl
LCBIaWdobGlnaHRNb2RlIG1vZGUpCit2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkK
IHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBG
cmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKQEAgLTI0
MCw3ICszNTUsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogCiAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gY29udGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CiAgICAg
RmxvYXRSZWN0IG92ZXJsYXlSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0gICAg
aWYgKCFvdmVybGF5UmVjdC5jb250YWlucyhib3VuZGluZ0JveCkgJiYgIWJvdW5kaW5nQm94LmNv
bnRhaW5zKGVuY2xvc2luZ0ludFJlY3Qob3ZlcmxheVJlY3QpKSkKKyAgICBpZiAoIW92ZXJsYXlS
ZWN0LmNvbnRhaW5zKGJvdW5kaW5nQm94KSAmJiAhYm91bmRpbmdCb3guY29udGFpbnMoZW5jbG9z
aW5nTGF5b3V0UmVjdChvdmVybGF5UmVjdCkpKQogICAgICAgICBvdmVybGF5UmVjdCA9IHZpZXct
PnZpc2libGVDb250ZW50UmVjdCgpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKC1vdmVybGF5UmVj
dC54KCksIC1vdmVybGF5UmVjdC55KCkpOwogCkBAIC0yNjYsNyArMzgxLDYgQEAgdm9pZCBkcmF3
Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hs
aWdodE1vZGUgbW9kZSkKICAgICAgICAgTGF5b3V0UmVjdCBtYXJnaW5Cb3goYm9yZGVyQm94Lngo
KSAtIHJlbmRlckJveC0+bWFyZ2luTGVmdCgpLCBib3JkZXJCb3gueSgpIC0gcmVuZGVyQm94LT5t
YXJnaW5Ub3AoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm94LndpZHRoKCkg
KyByZW5kZXJCb3gtPm1hcmdpbkxlZnQoKSArIHJlbmRlckJveC0+bWFyZ2luUmlnaHQoKSwgYm9y
ZGVyQm94LmhlaWdodCgpICsgcmVuZGVyQm94LT5tYXJnaW5Ub3AoKSArIHJlbmRlckJveC0+bWFy
Z2luQm90dG9tKCkpOwogCi0KICAgICAgICAgRmxvYXRRdWFkIGFic0NvbnRlbnRRdWFkID0gcmVu
ZGVyQm94LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChjb250ZW50Qm94KSk7CiAgICAg
ICAgIEZsb2F0UXVhZCBhYnNQYWRkaW5nUXVhZCA9IHJlbmRlckJveC0+bG9jYWxUb0Fic29sdXRl
UXVhZChGbG9hdFJlY3QocGFkZGluZ0JveCkpOwogICAgICAgICBGbG9hdFF1YWQgYWJzQm9yZGVy
UXVhZCA9IHJlbmRlckJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoYm9yZGVyQm94
KSk7CkBAIC0yNzksNyArMzkzLDcgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodE1vZGUgbW9kZSkKIAogICAgICAg
ICB0aXRsZUFuY2hvckJveCA9IGFic01hcmdpblF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsK
IAotICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yQm94KGNvbnRleHQsIGFic0NvbnRlbnRRdWFkLCBh
YnNQYWRkaW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgbW9kZSk7CisgICAg
ICAgIGRyYXdIaWdobGlnaHRGb3JCb3goY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1BhZGRp
bmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBoaWdobGlnaHREYXRhKTsKICAg
ICB9IGVsc2UgaWYgKHJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpIHx8IGlzU1ZHUmVuZGVyZXIp
IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzaG93IG1hcmdpbnMvcGFkZGluZy9ib3Jk
ZXIgZm9yIGlubGluZXMuCiAgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGxpbmVCb3hRdWFkczsK
QEAgLTI4Nyw3ICs0MDEsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGluZUJveFF1YWRzLnNpemUoKTsgKytpKQogICAgICAgICAg
ICAgbGluZUJveFF1YWRzW2ldICs9IG1haW5GcmFtZU9mZnNldDsKIAotICAgICAgICBkcmF3SGln
aGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5kZXJlcihjb250ZXh0LCBsaW5lQm94UXVhZHMpOwor
ICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5kZXJlcihjb250ZXh0LCBs
aW5lQm94UXVhZHMsIGhpZ2hsaWdodERhdGEpOwogICAgIH0KIAogICAgIC8vIERyYXcgbm9kZSB0
aXRsZSBpZiBuZWNlc3NhcnkuCkBAIC0yOTYsMTEgKzQxMCwxMSBAQCB2b2lkIGRyYXdOb2RlSGln
aGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9k
ZSBtb2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGlu
Z3MgPSBjb250YWluaW5nRnJhbWUtPnNldHRpbmdzKCk7Ci0gICAgaWYgKG1vZGUgPT0gRE9NTm9k
ZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwpCisgICAgaWYgKGhpZ2hsaWdodERhdGEtPnNob3dJ
bmZvKQogICAgICAgICBkcmF3RWxlbWVudFRpdGxlKGNvbnRleHQsIG5vZGUsIGJvdW5kaW5nQm94
LCB0aXRsZUFuY2hvckJveCwgb3ZlcmxheVJlY3QsIHNldHRpbmdzKTsKIH0KIAotdm9pZCBkcmF3
UmVjdEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVu
dCwgSW50UmVjdCogcmVjdCkKK3ZvaWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBEb2N1bWVudCogZG9jdW1lbnQsIExheW91dFJlY3QqIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcikKIHsKICAgICBpZiAoIWRvY3Vt
ZW50KQogICAgICAgICByZXR1cm47CkBAIC0zMTAsMTQgKzQyNCwxMiBAQCB2b2lkIGRyYXdSZWN0
SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRG9jdW1lbnQqIGRvY3VtZW50LCBJ
bnRSZWN0KiByZQogICAgIGNvbnRleHQudHJhbnNsYXRlKC1vdmVybGF5UmVjdC54KCksIC1vdmVy
bGF5UmVjdC55KCkpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBvdXRsaW5lVGhpY2tuZXNzID0g
MjsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBvdXRsaW5lQ29sb3IsICgyNTUsIDAs
IDAsIDIyOCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGZpbGxDb2xvciwgKDI1
NSwgMCwgMCwgMjApKTsKIAogICAgIFBhdGggcXVhZFBhdGggPSBxdWFkVG9QYXRoKEZsb2F0UmVj
dCgqcmVjdCkpOwogCiAgICAgLy8gQ2xpcCBvdXQgdGhlIHF1YWQsIHRoZW4gZHJhdyB3aXRoIGEg
MnB4IHN0cm9rZSB0byBnZXQgYSBwaXhlbAogICAgIC8vIG9mIG91dGxpbmUgKGJlY2F1c2UgaW5m
bGF0aW5nIGEgcXVhZCBpcyBoYXJkKQotICAgIHsKKyAgICBpZiAob3V0bGluZUNvbG9yLmlzVmFs
aWQoKSkgewogICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgY29udGV4dC5jbGlwT3V0
KHF1YWRQYXRoKTsKIApAQCAtMzI5LDEyICs0NDEsMTYgQEAgdm9pZCBkcmF3UmVjdEhpZ2hsaWdo
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVudCwgSW50UmVjdCog
cmUKICAgICB9CiAKICAgICAvLyBOb3cgZG8gdGhlIGZpbGwKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihmaWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQuZmlsbFBh
dGgocXVhZFBhdGgpOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY29udGV4
dC5zZXRGaWxsQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250
ZXh0LmZpbGxQYXRoKHF1YWRQYXRoKTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERPTU5v
ZGVIaWdobGlnaHRlcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyN1bmRlZiBUT09MVElQ
X0ZPTlRfRkFNSUxJRVMKKwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgKaW5kZXggMzBkNzc2MC4uYmFj
M2RiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGln
aHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIu
aApAQCAtMjksMjYgKzI5LDMzIEBACiAjaWZuZGVmIERPTU5vZGVIaWdobGlnaHRlcl9oCiAjZGVm
aW5lIERPTU5vZGVIaWdobGlnaHRlcl9oCiAKKyNpbmNsdWRlICJDb2xvci5oIgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbG9yOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTm9kZTsKIAotbmFtZXNwYWNlIERP
TU5vZGVIaWdobGlnaHRlciB7Ci0KLWVudW0gSGlnaGxpZ2h0TW9kZSB7Ci0gICAgSGlnaGxpZ2h0
QWxsLAotICAgIEhpZ2hsaWdodENvbnRlbnQsCi0gICAgSGlnaGxpZ2h0UGFkZGluZywKLSAgICBI
aWdobGlnaHRCb3JkZXIsCi0gICAgSGlnaGxpZ2h0TWFyZ2luCitzdHJ1Y3QgSGlnaGxpZ2h0RGF0
YSB7CisgICAgQ29sb3IgY29udGVudDsKKyAgICBDb2xvciBjb250ZW50T3V0bGluZTsKKyAgICBD
b2xvciBwYWRkaW5nOworICAgIENvbG9yIHBhZGRpbmdPdXRsaW5lOworICAgIENvbG9yIGJvcmRl
cjsKKyAgICBDb2xvciBib3JkZXJPdXRsaW5lOworICAgIENvbG9yIG1hcmdpbjsKKyAgICBDb2xv
ciBtYXJnaW5PdXRsaW5lOworICAgIGJvb2wgc2hvd0luZm87CiB9OwogCi12b2lkIGRyYXdOb2Rl
SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYsIE5vZGUqLCBIaWdobGlnaHRNb2RlKTsKK25hbWVz
cGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIgeworCit2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBo
aWNzQ29udGV4dCYsIE5vZGUqLCBIaWdobGlnaHREYXRhKik7CiAKLXZvaWQgZHJhd1JlY3RIaWdo
bGlnaHQoR3JhcGhpY3NDb250ZXh0JiwgRG9jdW1lbnQqLCBJbnRSZWN0Kik7Cit2b2lkIGRyYXdS
ZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYsIERvY3VtZW50KiwgSW50UmVjdCosIGNvbnN0
IENvbG9yJiwgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcik7CiAKIH0gLy8gbmFtZXNwYWNlIERP
TU5vZGVIaWdobGlnaHRlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
aW5kZXggZGIyYjk4OC4uN2RmNzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtODcxLDYgKzg3MSwxNyBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImxvY2F0aW9uIiwgIiRyZWYiOiAiRGVidWdnZXIuTG9jYXRpb24iLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiSGFuZGxlciBjb2RlIGxvY2F0aW9uLiIgfQogICAgICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRPTSBpbnRlcmFjdGlv
biBpcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBtaXJyb3Igb2JqZWN0cyB0aGF0IHJlcHJlc2Vu
dCB0aGUgYWN0dWFsIERPTSBub2Rlcy4gRE9NTm9kZSBpcyBhIGJhc2Ugbm9kZSBtaXJyb3IgdHlw
ZS4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6
ICJSR0JBIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInIiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSByZWQgY29tcG9uZW50LCBpbiB0
aGUgWzAtMjU1XSByYW5nZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZyIs
ICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGdyZWVuIGNvbXBvbmVudCwg
aW4gdGhlIFswLTI1NV0gcmFuZ2UuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImIiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSBibHVlIGNvbXBvbmVu
dCwgaW4gdGhlIFswLTI1NV0gcmFuZ2UuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImEiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGFscGhhIGNvbXBvbmVudCwgaW4gdGhlIFswLTFdIHJhbmdlIChkZWZhdWx0OiAxKS4i
IH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJB
IHN0cnVjdHVyZSBob2xkaW5nIGFuIFJHQkEgY29sb3IuIgogICAgICAgICAgICAgfQogICAgICAg
ICBdLAogICAgICAgICAiY29tbWFuZHMiOiBbCkBAIC0xMDQwLDcgKzEwNTEsOSBAQAogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIngiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0
aW9uIjogIlggY29vcmRpbmF0ZSIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ5
IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJZIGNvb3JkaW5hdGUiIH0sCiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2lkdGgiLCAidHlwZSI6ICJpbnRlZ2VyIiwg
ImRlc2NyaXB0aW9uIjogIlJlY3RhbmdsZSB3aWR0aCIgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJoZWlnaHQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJl
Y3RhbmdsZSBoZWlnaHQiIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWlnaHQi
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlY3RhbmdsZSBoZWlnaHQiIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29sb3IiLCAiJHJlZiI6ICJSR0JBIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBoaWdobGlnaHQgZmlsbCBjb2xv
ciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJvdXRsaW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIlRoZSBoaWdobGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNw
YXJlbnQpLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkhpZ2hsaWdodHMgZ2l2ZW4gcmVjdGFuZ2xlLiBDb29yZGluYXRlcyBhcmUgYWJzb2x1
dGUgd2l0aCByZXNwZWN0IHRvIHRoZSBtYWluIGZyYW1lIHZpZXdwb3J0LiIKICAgICAgICAgICAg
IH0sCkBAIC0xMDQ4LDcgKzEwNjEsMTUgQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJoaWdo
bGlnaHROb2RlIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJOb2RlSWQiLCAiZGVzY3JpcHRp
b24iOiAiSWRlbnRpZmllciBvZiB0aGUgbm9kZSB0byBoaWdobGlnaHQiIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibW9kZSIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJh
bGwiLCAiY29udGVudCIsICJwYWRkaW5nIiwgImJvcmRlciIsICJtYXJnaW4iXSwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3ggbW9kZWwgY29tcG9uZW50KHMpIHRvIGhp
Z2hsaWdodCAoZGVmYXVsdDogXCJhbGxcIikuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic2hvd0luZm8iLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIldoZXRo
ZXIgdGhlIG5vZGUgaW5mbyB0b29sdGlwIHNob3VsZCBiZSBzaG93bi4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudENvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgY29udGVudCBib3ggaGlnaGxpZ2h0IGZp
bGwgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiY29udGVudE91dGxpbmVDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGNvbnRlbnQgYm94IGhpZ2hsaWdodCBvdXRs
aW5lIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInBhZGRpbmdDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIHBhZGRpbmcgaGlnaGxpZ2h0IGZpbGwgY29sb3IgKGRl
ZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cGFkZGluZ091dGxpbmVDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiVGhlIHBhZGRpbmcgaGlnaGxpZ2h0IG91dGxpbmUgY29sb3IgKGRlZmF1
bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm9y
ZGVyQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRoZSBib3JkZXIgaGlnaGxpZ2h0IGZpbGwgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50
KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm9yZGVyT3V0bGluZUNvbG9y
IiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUg
Ym9yZGVyIGhpZ2hsaWdodCBvdXRsaW5lIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1hcmdpbkNvbG9yIiwgIiRyZWYiOiAi
UkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgbWFyZ2luIGhpZ2hs
aWdodCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm1hcmdpbk91dGxpbmVDb2xvciIsICIkcmVmIjogIlJHQkEiLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG1hcmdpbiBoaWdobGlnaHQgb3V0
bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfQogICAgICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkhpZ2hsaWdodHMgRE9NIG5vZGUgd2l0
aCBnaXZlbiBpZC4iCiAgICAgICAgICAgICB9LApAQCAtMTA1OSw3ICsxMDgwLDkgQEAKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJoaWdobGlnaHRGcmFtZSIsCiAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZnJhbWVJZCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVy
IG9mIHRoZSBmcmFtZSB0byBoaWdobGlnaHQiIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJmcmFtZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZp
ZXIgb2YgdGhlIGZyYW1lIHRvIGhpZ2hsaWdodCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJjb250ZW50Q29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIlRoZSBjb250ZW50IGJveCBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVm
YXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJj
b250ZW50T3V0bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgY29udGVudCBib3ggaGlnaGxpZ2h0IG91dGxpbmUgY29sb3IgKGRl
ZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJIaWdobGlnaHRzIG93bmVyIGVsZW1lbnQgb2YgdGhlIGZyYW1l
IHdpdGggZ2l2ZW4gaWQuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMjQ1NmUx
OC4uM2U3OWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCkBAIC05OCw2ICs5OCwzNCBAQCBuYW1lc3BhY2UgRE9NQWdlbnRTdGF0ZSB7CiBz
dGF0aWMgY29uc3QgY2hhciBkb2N1bWVudFJlcXVlc3RlZFtdID0gImRvY3VtZW50UmVxdWVzdGVk
IjsKIH07CiAKK0NvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IGNvbG9yT2JqZWN0KQoreworICAgIGlmICghY29sb3JPYmplY3QpCisgICAgICAgIHJldHVybiBD
b2xvcjo6dHJhbnNwYXJlbnQ7CisKKyAgICBpbnQgcjsKKyAgICBpbnQgZzsKKyAgICBpbnQgYjsK
KyAgICBib29sIHN1Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJyIiwgJnIpOwor
ICAgIHN1Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigiZyIsICZnKTsKKyAgICBz
dWNjZXNzIHw9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImIiLCAmYik7CisgICAgaWYgKCFz
dWNjZXNzKQorICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OworCisgICAgZG91Ymxl
IGE7CisgICAgc3VjY2VzcyA9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImEiLCAmYSk7Cisg
ICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gQ29sb3IociwgZywgYik7CisKKyAgICAv
LyBDbGFtcCBhbHBoYSB0byB0aGUgWzAuLjFdIHJhbmdlLgorICAgIGlmIChhIDwgMCkKKyAgICAg
ICAgYSA9IDA7CisgICAgZWxzZSBpZiAoYSA+IDEpCisgICAgICAgIGEgPSAxOworCisgICAgcmV0
dXJuIENvbG9yKHIsIGcsIGIsIHN0YXRpY19jYXN0PGludD4oYSAqIDI1NSkpOworfQorCiBjbGFz
cyBNYXRjaEpvYiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoKExpc3RIYXNoU2V0
PE5vZGUqPiYgcmVzdWx0Q29sbGVjdG9yKSA9IDA7CkBAIC05NzcsNyArMTAwNSw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmZvY3VzTm9kZSgpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5z
aWduZWQpCiB7Ci0gICAgaWYgKCFtX3NlYXJjaGluZ0Zvck5vZGUpCisgICAgaWYgKCFtX3NlYXJj
aGluZ0Zvck5vZGUgfHwgIW1faGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Tm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKQEAgLTk4NSw3ICsxMDEzLDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0LCB1bnMKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsK
ICAgICBpZiAobm9kZSkgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICAgICAgaGln
aGxpZ2h0KCZlcnJvciwgbm9kZSwgImFsbCIpOworICAgICAgICBoaWdobGlnaHQoJmVycm9yLCBu
b2RlKTsKICAgICB9CiB9CiAKQEAgLTEwMDUsMzYgKzEwMzMsNzAgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVk
KQogICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZ2hsaWdodChFcnJvclN0cmluZyosIE5vZGUqIG5vZGUsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodChFcnJvclN0cmluZyos
IE5vZGUqIG5vZGUpCiB7CisgICAgLy8gVGhpcyBtZXRob2QgcmVxdWlyZXMgbV9oaWdobGlnaHRl
ZFJlY3QgdG8gaGF2ZSBiZWVuIHNldCBieSBpdHMgY2xpZW50LgogICAgIEFTU0VSVF9BUkcobm9k
ZSwgbm9kZSk7CiAgICAgbV9oaWdobGlnaHRlZE5vZGUgPSBub2RlOwotICAgIG1faGlnaGxpZ2h0
TW9kZSA9IG1vZGU7CiAgICAgbV9jbGllbnQtPmhpZ2hsaWdodCgpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRS
ZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIG91dGxpbmVDb2xvcikKIHsKICAgICBtX2hpZ2hsaWdodGVkUmVjdCA9IGFkb3B0
UHRyKG5ldyBJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICBtX2hpZ2hsaWdodERh
dGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICBtX2hpZ2hsaWdodERhdGEt
PmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPmNvbnRl
bnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAgIG1fY2xpZW50LT5oaWdo
bGlnaHQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJv
clN0cmluZyogZXJyb3IsIGludCBub2RlSWQsIFN0cmluZyogbW9kZSkKLXsKLSAgICBpZiAoTm9k
ZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpKQotICAgICAgICBoaWdobGlnaHQoZXJyb3IsIG5v
ZGUsIG1vZGUgJiYgIW1vZGUtPmlzRW1wdHkoKSA/ICptb2RlIDogImFsbCIpOwordm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKKyAgICBFcnJvclN0cmluZyogZXJyb3IsCisg
ICAgaW50IG5vZGVJZCwKKyAgICBib29sIHNob3dJbmZvLAorICAgIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBjb250ZW50Q29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIGNvbnRlbnRPdXRsaW5lQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIHBhZGRpbmdDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
cGFkZGluZ091dGxpbmVDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
Ym9yZGVyQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGJvcmRlck91
dGxpbmVDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbWFyZ2luQ29s
b3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1hcmdpbk91dGxpbmVDb2xv
cikKK3sKKyAgICBpZiAoTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpKSB7CisgICAgICAg
IG1faGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOworICAgICAg
ICBtX2hpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gc2hvd0luZm87CisgICAgICAgIG1faGlnaGxp
Z2h0RGF0YS0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29udGVudENvbG9yKTsKKyAgICAgICAgbV9o
aWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3IoY29udGVudE91dGxpbmVD
b2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+cGFkZGluZyA9IHBhcnNlQ29sb3IocGFk
ZGluZ0NvbG9yKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5wYWRkaW5nT3V0bGluZSA9IHBh
cnNlQ29sb3IocGFkZGluZ091dGxpbmVDb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+
Ym9yZGVyID0gcGFyc2VDb2xvcihib3JkZXJDb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0
YS0+Ym9yZGVyT3V0bGluZSA9IHBhcnNlQ29sb3IoYm9yZGVyT3V0bGluZUNvbG9yKTsKKyAgICAg
ICAgbV9oaWdobGlnaHREYXRhLT5tYXJnaW4gPSBwYXJzZUNvbG9yKG1hcmdpbkNvbG9yKTsKKyAg
ICAgICAgbV9oaWdobGlnaHREYXRhLT5tYXJnaW5PdXRsaW5lID0gcGFyc2VDb2xvcihtYXJnaW5P
dXRsaW5lQ29sb3IpOworICAgICAgICBoaWdobGlnaHQoZXJyb3IsIG5vZGUpOworICAgIH0KIH0K
IAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqIGVy
cm9yLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRGcmFtZSgKKyAgICBFcnJvclN0cmluZyogZXJyb3IsCisgICAgY29uc3QgU3RyaW5nJiBm
cmFtZUlkLAorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwKKyAgICBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKQogewogICAgIEZyYW1l
KiBmcmFtZSA9IG1fcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOwotICAgIGlmIChmcmFt
ZSAmJiBmcmFtZS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgIGhpZ2hsaWdodChlcnJvciwgZnJh
bWUtPm93bmVyRWxlbWVudCgpLCAiYWxsIik7CisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5vd25l
ckVsZW1lbnQoKSkgeworICAgICAgICBtX2hpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGln
aGxpZ2h0RGF0YSgpKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5jb250ZW50ID0gcGFyc2VD
b2xvcihjb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUgPSBw
YXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CisgICAgICAgIGhpZ2hsaWdodChlcnJvciwgZnJhbWUt
Pm93bmVyRWxlbWVudCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omhp
ZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcqKQogewogICAgIG1faGlnaGxpZ2h0ZWROb2RlID0gMDsK
KyAgICBtX2hpZ2hsaWdodERhdGEuY2xlYXIoKTsKICAgICBtX2hpZ2hsaWdodGVkUmVjdC5jbGVh
cigpOwogICAgIG1fY2xpZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CkBAIC0xNTEyLDIzICsxNTc0
LDE0IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6cmVz
b2x2ZU5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyCiB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpk
cmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAo
bV9oaWdobGlnaHRlZFJlY3QpIHsKLSAgICAgICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3UmVj
dEhpZ2hsaWdodChjb250ZXh0LCBtX2RvY3VtZW50LmdldCgpLCBtX2hpZ2hsaWdodGVkUmVjdC5n
ZXQoKSk7CisgICAgICAgIERPTU5vZGVIaWdobGlnaHRlcjo6ZHJhd1JlY3RIaWdobGlnaHQoY29u
dGV4dCwgbV9kb2N1bWVudC5nZXQoKSwgbV9oaWdobGlnaHRlZFJlY3QuZ2V0KCksIG1faGlnaGxp
Z2h0RGF0YS0+Y29udGVudCwgbV9oaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1faGlnaGxpZ2h0ZWROb2RlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1vZGUgbW9kZSA9
IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsOwotICAgIGlmIChtX2hpZ2hsaWdodE1v
ZGUgPT0gImNvbnRlbnQiKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdo
bGlnaHRDb250ZW50OwotICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0TW9kZSA9PSAicGFkZGluZyIp
Ci0gICAgICAgIG1vZGUgPSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodFBhZGRpbmc7Ci0g
ICAgZWxzZSBpZiAobV9oaWdobGlnaHRNb2RlID09ICJib3JkZXIiKQotICAgICAgICBtb2RlID0g
RE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRCb3JkZXI7Ci0gICAgZWxzZSBpZiAobV9oaWdo
bGlnaHRNb2RlID09ICJtYXJnaW4iKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVy
OjpIaWdobGlnaHRNYXJnaW47Ci0gICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hs
aWdodChjb250ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5nZXQoKSwgbW9kZSk7CisgICAgRE9NTm9k
ZUhpZ2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChjb250ZXh0LCBtX2hpZ2hsaWdodGVkTm9k
ZS5nZXQoKSwgbV9oaWdobGlnaHREYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRl
eCA5YjE4NDkzLi5jOGZjYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaApAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSGl0
VGVzdFJlc3VsdDsKIGNsYXNzIE1hdGNoSm9iOwogY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBI
aWdobGlnaHREYXRhOwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CkBAIC0xMzMsOSArMTM0LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBpbnQqIG5vZGVJZCk7CiAgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2b2lkIGhpZGVI
aWdobGlnaHQoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJp
bmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBoaWdo
bGlnaHROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgU3RyaW5nKiBtb2RlKTsKLSAgICB2
b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsK
KyAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3
aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKKyAgICB2b2lkIGhp
Z2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBib29sIHNob3dJbmZvLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29udGVudENvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogY29udGVudE91dGxpbmVDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIHBhZGRpbmdDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHBh
ZGRpbmdPdXRsaW5lQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBib3JkZXJD
b2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGJvcmRlck91dGxpbmVDb2xvciwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1hcmdpbkNvbG9yLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogbWFyZ2luT3V0bGluZUNvbG9yKTsKKyAgICB2b2lkIGhpZ2hsaWdo
dEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBv
dXRsaW5lQ29sb3IpOwogICAgIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
aW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBjb25zdCBhbmNob3JOb2RlSWQsIGludCogbmV3
Tm9kZUlkKTsKIAogICAgIE5vZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGlnaGxpZ2h0ZWROb2RlLmdldCgpOyB9CkBAIC0xODMsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAg
ICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFn
ZW50KiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqKTsKIAogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpOwot
ICAgIHZvaWQgaGlnaGxpZ2h0KEVycm9yU3RyaW5nKiwgTm9kZSosIGNvbnN0IFN0cmluZyYgbW9k
ZSk7CisgICAgdm9pZCBoaWdobGlnaHQoRXJyb3JTdHJpbmcqLCBOb2RlKik7CiAKICAgICAvLyBO
b2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBp
bnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjMzLDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRy
PFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7
CiAgICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0ZWROb2RlOwogICAgIE93blB0cjxJbnRSZWN0
PiBtX2hpZ2hsaWdodGVkUmVjdDsKLSAgICBTdHJpbmcgbV9oaWdobGlnaHRNb2RlOworICAgIE93
blB0cjxIaWdobGlnaHREYXRhPiBtX2hpZ2hsaWdodERhdGE7CiAgICAgUmVmUHRyPE5vZGU+IG1f
bm9kZVRvRm9jdXM7CiAgICAgYm9vbCBtX3NlYXJjaGluZ0Zvck5vZGU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMKaW5kZXggNzNlNDdkNC4uMmM1YmEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzCkBAIC0z
Myw2ICszMywxMSBAQCBXZWJJbnNwZWN0b3IuQ29sb3IgPSBmdW5jdGlvbihzdHIpCiAgICAgdGhp
cy5fcGFyc2UoKTsKIH0KIAorV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBID0gZnVuY3Rpb24o
ciwgZywgYiwgYSkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcigicmdiYSgi
ICsgciArICIsIiArIGcgKyAiLCIgKyBiICsgIiwiICsgKHR5cGVvZiBhID09PSAidW5kZWZpbmVk
IiA/IDEgOiBhKSArICIpIik7Cit9CisKIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7
CiAgICAgZ2V0IHNob3J0aGV4KCkKICAgICB7CkBAIC0xNjYsNiArMTcxLDIxIEBAIFdlYkluc3Bl
Y3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRocm93ICJpbnZhbGlkIGNvbG9yIGZv
cm1hdCI7CiAgICAgfSwKIAorICAgIHRvUHJvdG9jb2xSR0JBOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fcHJvdG9jb2xSR0JBKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X3Byb3RvY29sUkdCQTsKKworICAgICAgICB2YXIgY29tcG9uZW50cyA9IHRoaXMucmdiYTsKKyAg
ICAgICAgaWYgKGNvbXBvbmVudHMpCisgICAgICAgICAgICB0aGlzLl9wcm90b2NvbFJHQkEgPSB7
IHI6IE51bWJlcihjb21wb25lbnRzWzBdKSwgZzogTnVtYmVyKGNvbXBvbmVudHNbMV0pLCBiOiBO
dW1iZXIoY29tcG9uZW50c1syXSksIGE6IE51bWJlcihjb21wb25lbnRzWzNdKSB9OworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGNvbXBvbmVudHMgPSB0aGlzLnJnYjsKKyAgICAgICAgICAg
IHRoaXMuX3Byb3RvY29sUkdCQSA9IHsgcjogTnVtYmVyKGNvbXBvbmVudHNbMF0pLCBnOiBOdW1i
ZXIoY29tcG9uZW50c1sxXSksIGI6IE51bWJlcihjb21wb25lbnRzWzJdKSB9OworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0aGlzLl9wcm90b2NvbFJHQkE7CisgICAgfSwKKwogICAgIF9yZ2JU
b0hleDogZnVuY3Rpb24ocmdiKQogICAgIHsKICAgICAgICAgdmFyIHIgPSBwYXJzZUludChyZ2Jb
MF0pLnRvU3RyaW5nKDE2KTsKQEAgLTY2MSwzICs2ODEsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbG9y
LkFkdmFuY2VkTmlja05hbWVzID0gewogICAgICJyZ2JhKDAsMCwwLDApIjogW1swLCAwLCAwLCAw
XSwgWzAsIDAsIDAsIDBdLCAidHJhbnNwYXJlbnQiXSwKICAgICAiaHNsYSgwLDAsMCwwKSI6IFtb
MCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwXSwgInRyYW5zcGFyZW50Il0sCiB9OworCitXZWJJbnNw
ZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodCA9IHsKKyAgICBDb250ZW50OiBXZWJJbnNwZWN0b3Iu
Q29sb3IuZnJvbVJHQkEoMTExLCAxNjgsIDIyMCwgLjY2KSwKKyAgICBDb250ZW50T3V0bGluZTog
V2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDksIDgzLCAxNDgpLAorICAgIFBhZGRpbmc6IFdl
Ykluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSgxNDcsIDE5NiwgMTI1LCAuNTUpLAorICAgIFBhZGRp
bmdPdXRsaW5lOiBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEoNTUsIDExOCwgMjgpLAorICAg
IEJvcmRlcjogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDI1NSwgMjI5LCAxNTMsIC42Niks
CisgICAgQm9yZGVyT3V0bGluZTogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDEyNywgOTYs
IDApLAorICAgIE1hcmdpbjogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDI0NiwgMTc4LCAx
MDcsIC42NiksCisgICAgTWFyZ2luT3V0bGluZTogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JB
KDE4MCwgOTUsIDQpCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5q
cwppbmRleCBiMDU4YTQwLi5jMmUwMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwpAQCAtMTI4LDE1ICsx
MjgsMzggQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmIChmcm9tRWxlbWVudCA9PT0gdG9FbGVtZW50KQogICAgICAgICAgICAgcmV0dXJu
OwogCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlT3ZlcihlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKKworICAgICAg
ICAgICAgdmFyIGJnQ29sb3I7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNz
KCJtYXJnaW4iKSkKKyAgICAgICAgICAgICAgICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9y
LlBhZ2VIaWdobGlnaHQuTWFyZ2luLnRvU3RyaW5nKCJvcmlnaW5hbCIpOworICAgICAgICAgICAg
ZWxzZSBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJib3JkZXIiKSkKKyAgICAgICAgICAgICAg
ICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQm9yZGVyLnRvU3Ry
aW5nKCJvcmlnaW5hbCIpOworICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNTdHlsZUNs
YXNzKCJwYWRkaW5nIikpCisgICAgICAgICAgICAgICAgYmdDb2xvciA9IFdlYkluc3BlY3Rvci5D
b2xvci5QYWdlSGlnaGxpZ2h0LlBhZGRpbmcudG9TdHJpbmcoIm9yaWdpbmFsIik7CisgICAgICAg
ICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoImNvbnRlbnQiKSkKKyAgICAgICAg
ICAgICAgICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29udGVu
dC50b1N0cmluZygib3JpZ2luYWwiKTsKKyAgICAgICAgICAgIGlmIChiZ0NvbG9yKQorICAgICAg
ICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYmdDb2xvcjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlT3V0KGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiI7CisgICAg
ICAgICAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKKyAgICAgICAgfQor
CiAgICAgICAgIGlmIChzaG93SGlnaGxpZ2h0KSB7CiAgICAgICAgICAgICAvLyBJbnRvIGVsZW1l
bnQuCiAgICAgICAgICAgICBpZiAodGhpcy5ub2RlICYmIHRvRWxlbWVudCkKLSAgICAgICAgICAg
ICAgICB0b0VsZW1lbnQuYWRkU3R5bGVDbGFzcygiaG92ZXJlZCIpOworICAgICAgICAgICAgICAg
IGhhbmRsZU1vdXNlT3Zlcih0b0VsZW1lbnQpOwogICAgICAgICAgICAgdmFyIG5vZGVJZCA9IHRo
aXMubm9kZSA/IHRoaXMubm9kZS5pZCA6IDA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBPdXQgb2YgZWxlbWVudC4KICAgICAgICAgICAgIGlmIChmcm9tRWxlbWVudCkKLSAgICAg
ICAgICAgICAgICBmcm9tRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJob3ZlcmVkIik7CisgICAg
ICAgICAgICAgICAgaGFuZGxlTW91c2VPdXQoZnJvbUVsZW1lbnQpOwogICAgICAgICAgICAgdmFy
IG5vZGVJZCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGVJZCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGYwN2Uy
YzMuLmM2NGRjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3MKQEAgLTE4ODgsMTAgKzE4ODgsNiBAQCBib2R5LnBsYXRmb3JtLXdpbmRv
d3MgLnNpZGViYXItcGFuZS1zdWJ0aXRsZSB7CiAgICAgbWFyZ2luOiAzcHg7CiB9CiAKLS5tZXRy
aWNzIC5tYXJnaW4uaG92ZXJlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEzOSwgMTgy
LCAyMjEpOwotfQotCiAubWV0cmljcyAuYm9yZGVyIHsKICAgICBib3JkZXI6IDFweCBibGFjayBz
b2xpZDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKQEAgLTE5MDIsMTAgKzE4OTgsNiBA
QCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFuZS1zdWJ0aXRsZSB7CiAgICAgbWFy
Z2luOiAzcHg7CiB9CiAKLS5tZXRyaWNzIC5ib3JkZXIuaG92ZXJlZCB7Ci0gICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDE1NywgMTkzLCAyMjYpOwotfQotCiAubWV0cmljcyAucGFkZGluZyB7CiAg
ICAgYm9yZGVyOiAxcHggZ3JleSBkYXNoZWQ7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7
CkBAIC0xOTE2LDEwICsxOTA4LDYgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBh
bmUtc3VidGl0bGUgewogICAgIG1hcmdpbjogM3B4OwogfQogCi0ubWV0cmljcyAucGFkZGluZy5o
b3ZlcmVkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTczLCAyMDQsIDIzMSk7Ci19Ci0K
IC5tZXRyaWNzIC5jb250ZW50IHsKICAgICBwb3NpdGlvbjogc3RhdGljOwogICAgIGJvcmRlcjog
MXB4IGdyZXkgc29saWQ7CkBAIC0xOTM0LDEwICsxOTIyLDYgQEAgYm9keS5wbGF0Zm9ybS13aW5k
b3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAgIG92ZXJmbG93OiB2aXNpYmxlOwogfQog
Ci0ubWV0cmljcyAuY29udGVudC5ob3ZlcmVkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MTkwLCAyMTQsIDIzNik7Ci19Ci0KIC5tZXRyaWNzIC5jb250ZW50IHNwYW4gewogICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMDc2ODAwYi4uYTEwNGUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTM4Miw5ICszODIs
MzEgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICB0aGlzLl9oaWdobGlnaHRlZERPTU5vZGVJZCA9IG5vZGVJZDsKLSAgICAgICAgaWYgKG5vZGVJ
ZCkKLSAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGUobm9kZUlkLCBtb2RlIHx8ICJh
bGwiKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAobm9kZUlkKSB7CisgICAgICAgICAgICBt
b2RlID0gbW9kZSB8fCAiYWxsIjsKKyAgICAgICAgICAgIHZhciBhcmdzID0geyBub2RlSWQ6IG5v
ZGVJZCwgc2hvd0luZm86IG1vZGUgPT09ICJhbGwiIH07CisgICAgICAgICAgICBpZiAobW9kZSA9
PT0gImFsbCIgfHwgbW9kZSA9PT0gImNvbnRlbnQiKSB7CisgICAgICAgICAgICAgICAgYXJncy5j
b250ZW50Q29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Db250ZW50LnRv
UHJvdG9jb2xSR0JBKCk7CisgICAgICAgICAgICAgICAgYXJncy5jb250ZW50T3V0bGluZUNvbG9y
ID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29udGVudE91dGxpbmUudG9Qcm90
b2NvbFJHQkEoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1vZGUgPT09ICJh
bGwiIHx8IG1vZGUgPT09ICJwYWRkaW5nIikgeworICAgICAgICAgICAgICAgIGFyZ3MucGFkZGlu
Z0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuUGFkZGluZy50b1Byb3Rv
Y29sUkdCQSgpOworICAgICAgICAgICAgICAgIGFyZ3MucGFkZGluZ091dGxpbmVDb2xvciA9IFdl
Ykluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LlBhZGRpbmdPdXRsaW5lLnRvUHJvdG9jb2xS
R0JBKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtb2RlID09PSAiYWxsIiB8
fCBtb2RlID09PSAiYm9yZGVyIikgeworICAgICAgICAgICAgICAgIGFyZ3MuYm9yZGVyQ29sb3Ig
PSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Cb3JkZXIudG9Qcm90b2NvbFJHQkEo
KTsKKyAgICAgICAgICAgICAgICBhcmdzLmJvcmRlck91dGxpbmVDb2xvciA9IFdlYkluc3BlY3Rv
ci5Db2xvci5QYWdlSGlnaGxpZ2h0LkJvcmRlck91dGxpbmUudG9Qcm90b2NvbFJHQkEoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09
ICJtYXJnaW4iKSB7CisgICAgICAgICAgICAgICAgYXJncy5tYXJnaW5Db2xvciA9IFdlYkluc3Bl
Y3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0Lk1hcmdpbi50b1Byb3RvY29sUkdCQSgpOworICAgICAg
ICAgICAgICAgIGFyZ3MubWFyZ2luT3V0bGluZUNvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBh
Z2VIaWdobGlnaHQuTWFyZ2luT3V0bGluZS50b1Byb3RvY29sUkdCQSgpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHROb2RlLmludm9rZShhcmdzKTsKKyAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBET01BZ2VudC5oaWRlSGlnaGxpZ2h0KCk7CiAgICAg
fSwKIAo=
</data>
<flag name="commit-queue"
          id="100386"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104522</attachid>
            <date>2011-08-19 10:28:55 -0700</date>
            <delta_ts>2011-08-22 05:59:27 -0700</delta_ts>
            <desc>[PATCH] Compilability fixed for Mac</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>44814</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDJlNDk2ZWJjMmYwMjg1NmZlYzg2MWYzNjUyNTI1OGI2MjQ3OGQ3NGMKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgQXVnIDE5
IDIwOjU5OjI5IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNhMGYxZS4uNGJm
MmEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTA4LTE5ICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBUaGUgaGlnaGxpZ2h0aW5nIEFQSSBpcyBzbGlnaHRseSBjaGFuZ2VkOiBj
bGllbnRzIG5lZWQgdG8gc3BlY2lmeSBjb2xvcnMgZm9yIGNlcnRhaW4gZWxlbWVudHMgb2YgdGhl
IGhpZ2hsaWdodGVkIG9iamVjdHMsCisgICAgICAgIHJhdGhlciB0aGFuIGEgZ2VuZXJpYyAiaGln
aGxpZ2h0aW5nIG1vZGUiLiBUaGlzIGFsbG93cyB0bzoKKyAgICAgICAgLSB1c2UgZW50aXJlbHkg
Y3VzdG9tIGNvbG9ycyBmb3IgaGlnaGxpZ2h0aW5nOworICAgICAgICAtIGRpc3BsYXkgYW55IGNv
bWJpbmF0aW9uIG9mIGZpbGwvb3V0bGluZSBmb3IgdGhlIGhpZ2hsaWdodGVkIGFyZWE7CisgICAg
ICAgIC0gaGlnaGxpZ2h0IGFueSBjb21iaW5hdGlvbnMgb2YgZWxlbWVudCBwYXJ0cy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9E
T01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NTm9kZUhpZ2hsaWdo
dGVyOjpkcmF3Tm9kZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpET01Ob2RlSGlnaGxp
Z2h0ZXI6OmRyYXdSZWN0SGlnaGxpZ2h0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGln
aHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlkZUhpZ2hsaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZHJhd0hpZ2hsaWdodCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Db2xvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db2xvci5mcm9t
UkdCQSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlLnRvUHJvdG9jb2xS
R0JBKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9o
aWdobGlnaHRET01Ob2RlLmhhbmRsZU1vdXNlT3Zlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGlnaGxpZ2h0RE9NTm9kZS5oYW5kbGVNb3Vz
ZU91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlw
ZS5faGlnaGxpZ2h0RE9NTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmhpZ2hsaWdodERPTU5vZGUpOgorCiAyMDExLTA4LTE5ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgQmV0dGVyIGJ1aWxkIGZp
eCBhZnRlciByOTMzODQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGln
aGxpZ2h0ZXIuY3BwCmluZGV4IDA0YmI0NDguLjJkZGFhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCkBAIC0zMyw5ICszMywxMSBAQAog
CiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUg
IkZvbnRGYW1pbHkuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUu
aCIKQEAgLTQzLDEwICs0NSwyMyBAQAogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIKICNpbmNs
dWRlICJUZXh0UnVuLmgiCiAKKyNkZWZpbmUgVE9PTFRJUF9GT05UX0ZBTUlMSUVTKHNpemUsIC4u
LikgXAorc3RhdGljIHVuc2lnbmVkIHRvb2x0aXBGb250RmFjZVNpemUgPSBzaXplO1wKK3N0YXRp
YyBTdHJpbmcgdG9vbHRpcEZvbnRGYWNlW10gPSB7IF9fVkFfQVJHU19fIH07CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAorY29uc3Qgc3RhdGljIGludCByZWN0SW5mbGF0
ZVB4ID0gNDsKK2NvbnN0IHN0YXRpYyBpbnQgZm9udEhlaWdodFB4ID0gMTI7Citjb25zdCBzdGF0
aWMgaW50IGJvcmRlcldpZHRoUHggPSAxOworY29uc3Qgc3RhdGljIGludCB0b29sdGlwUGFkZGlu
ZyA9IDQ7CisKK2NvbnN0IHN0YXRpYyBpbnQgYXJyb3dUaXBPZmZzZXQgPSAyMDsKK2NvbnN0IHN0
YXRpYyBpbnQgYXJyb3dIZWlnaHQgPSA3OworY29uc3Qgc3RhdGljIGludCBhcnJvd0hhbGZXaWR0
aCA9IDc7CisKIFBhdGggcXVhZFRvUGF0aChjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiB7CiAgICAg
UGF0aCBxdWFkUGF0aDsKQEAgLTU4LDE2ICs3MywxNSBAQCBQYXRoIHF1YWRUb1BhdGgoY29uc3Qg
RmxvYXRRdWFkJiBxdWFkKQogICAgIHJldHVybiBxdWFkUGF0aDsKIH0KIAotdm9pZCBkcmF3T3V0
bGluZWRRdWFkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFk
LCBjb25zdCBDb2xvciYgZmlsbENvbG9yKQordm9pZCBkcmF3T3V0bGluZWRRdWFkKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBDb2xvciYgZmls
bENvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKQogewogICAgIHN0YXRpYyBjb25zdCBp
bnQgb3V0bGluZVRoaWNrbmVzcyA9IDI7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIG91dGxpbmVD
b2xvcig2MiwgODYsIDE4MCwgMjI4KTsKIAogICAgIFBhdGggcXVhZFBhdGggPSBxdWFkVG9QYXRo
KHF1YWQpOwogCiAgICAgLy8gQ2xpcCBvdXQgdGhlIHF1YWQsIHRoZW4gZHJhdyB3aXRoIGEgMnB4
IHN0cm9rZSB0byBnZXQgYSBwaXhlbAotICAgIC8vIG9mIG91dGxpbmUgKGJlY2F1c2UgaW5mbGF0
aW5nIGEgcXVhZCBpcyBoYXJkKQotICAgIHsKKyAgICAvLyBvZiBvdXRsaW5lIChiZWNhdXNlIGlu
ZmxhdGluZyBhIHF1YWQgaXMgaGFyZCkuCisgICAgaWYgKG91dGxpbmVDb2xvci5pc1ZhbGlkKCkp
IHsKICAgICAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgICAgIGNvbnRleHQuY2xpcE91dChxdWFk
UGF0aCk7CiAKQEAgLTc4LDUyICs5Miw1MCBAQCB2b2lkIGRyYXdPdXRsaW5lZFF1YWQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IENvbAogICAg
ICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAKLSAgICAvLyBOb3cgZG8gdGhlIGZpbGwK
LSAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwotICAgIGNvbnRleHQuZmlsbFBhdGgocXVhZFBhdGgpOworICAgIC8vIE5vdyBkbyB0aGUgZmls
bC4KKyAgICBpZiAoZmlsbENvbG9yLmlzVmFsaWQoKSkgeworICAgICAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihmaWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0
LmZpbGxQYXRoKHF1YWRQYXRoKTsKKyAgICB9CiB9CiAKLXZvaWQgZHJhd091dGxpbmVkUXVhZFdp
dGhDbGlwKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBj
b25zdCBGbG9hdFF1YWQmIGNsaXBRdWFkLCBjb25zdCBDb2xvciYgZmlsbENvbG9yKQordm9pZCBk
cmF3T3V0bGluZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFF1YWQmIHF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgY2xpcFF1YWQsIGNvbnN0IENvbG9yJiBm
aWxsQ29sb3IsIGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IpCiB7CiAgICAgY29udGV4dC5zYXZl
KCk7CiAgICAgUGF0aCBjbGlwUXVhZFBhdGggPSBxdWFkVG9QYXRoKGNsaXBRdWFkKTsKICAgICBj
b250ZXh0LmNsaXBPdXQoY2xpcFF1YWRQYXRoKTsKLSAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRl
eHQsIHF1YWQsIGZpbGxDb2xvcik7CisgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBxdWFk
LCBmaWxsQ29sb3IsIG91dGxpbmVDb2xvcik7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAK
LXZvaWQgZHJhd0hpZ2hsaWdodEZvckJveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UXVhZCYgY29udGVudFF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNv
bnN0IEZsb2F0UXVhZCYgYm9yZGVyUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBE
T01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1vZGUgbW9kZSkKK3ZvaWQgZHJhd0hpZ2hsaWdo
dEZvckJveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVu
dFF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9y
ZGVyUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBIaWdobGlnaHREYXRhKiBoaWdo
bGlnaHREYXRhKQogewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBjb250ZW50Qm94Q29sb3IoMTI1
LCAxNzMsIDIxNywgMTI4KTsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgcGFkZGluZ0JveENvbG9y
KDEyNSwgMTczLCAyMTcsIDE2MCk7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGJvcmRlckJveENv
bG9yKDEyNSwgMTczLCAyMTcsIDE5Mik7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIG1hcmdpbkJv
eENvbG9yKDEyNSwgMTczLCAyMTcsIDIyOCk7Ci0KLSAgICBGbG9hdFF1YWQgY2xpcFF1YWQ7Ci0g
ICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNYXJnaW4gfHwgKG1v
ZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgbWFyZ2luUXVhZCAhPSBi
b3JkZXJRdWFkKSkgewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwg
bWFyZ2luUXVhZCwgYm9yZGVyUXVhZCwgbWFyZ2luQm94Q29sb3IpOwotICAgICAgICBjbGlwUXVh
ZCA9IGJvcmRlclF1YWQ7Ci0gICAgfQotICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGlnaHRl
cjo6SGlnaGxpZ2h0Qm9yZGVyIHx8IChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxp
Z2h0QWxsICYmIGJvcmRlclF1YWQgIT0gcGFkZGluZ1F1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRs
aW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCwgYm9yZGVy
Qm94Q29sb3IpOwotICAgICAgICBjbGlwUXVhZCA9IHBhZGRpbmdRdWFkOwotICAgIH0KLSAgICBp
ZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodFBhZGRpbmcgfHwgKG1vZGUg
PT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgcGFkZGluZ1F1YWQgIT0gY29u
dGVudFF1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBw
YWRkaW5nUXVhZCwgY29udGVudFF1YWQsIHBhZGRpbmdCb3hDb2xvcik7Ci0gICAgICAgIGNsaXBR
dWFkID0gY29udGVudFF1YWQ7Ci0gICAgfQotICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGln
aHRlcjo6SGlnaGxpZ2h0Q29udGVudCB8fCBtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGln
aGxpZ2h0QWxsKQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGNvbnRlbnRRdWFk
LCBjb250ZW50Qm94Q29sb3IpOwotICAgIGVsc2UKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdp
dGhDbGlwKGNvbnRleHQsIGNsaXBRdWFkLCBjbGlwUXVhZCwgY29udGVudEJveENvbG9yKTsKKy8v
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRlZmF1bHRDb250ZW50Qm94Q29sb3IsICgx
MTEsIDE2OCwgMjIwLCAxNjgpKTsKKy8vICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGRl
ZmF1bHRDb250ZW50T3V0bGluZUNvbG9yLCAoOSwgODMsIDE0OCkpOworCisvLyAgICBGbG9hdFF1
YWQgY2xpcFF1YWQ7CisvLyAgICBpZiAoKGhpZ2hsaWdodERhdGEtPmhhc01hcmdpbiAmJiAhaGln
aGxpZ2h0RGF0YS0+aGFzQm9yZGVyKSB8fCAoaGlnaGxpZ2h0RGF0YS0+aXNGdWxsSGlnaGxpZ2h0
KCkgJiYgbWFyZ2luUXVhZCAhPSBib3JkZXJRdWFkKSkgeworICAgICAgICBkcmF3T3V0bGluZWRR
dWFkV2l0aENsaXAoY29udGV4dCwgbWFyZ2luUXVhZCwgYm9yZGVyUXVhZCwgaGlnaGxpZ2h0RGF0
YS0+bWFyZ2luLCBoaWdobGlnaHREYXRhLT5tYXJnaW5PdXRsaW5lKTsKKy8vICAgICAgICBjbGlw
UXVhZCA9IGJvcmRlclF1YWQ7CisvLyAgICB9CisvLyAgICBpZiAoKGhpZ2hsaWdodERhdGEtPmhh
c0JvcmRlciAmJiAhaGlnaGxpZ2h0RGF0YS0+aGFzUGFkZGluZykgfHwgKGhpZ2hsaWdodERhdGEt
PmlzRnVsbEhpZ2hsaWdodCgpICYmIGJvcmRlclF1YWQgIT0gcGFkZGluZ1F1YWQpKSB7CisgICAg
ICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBib3JkZXJRdWFkLCBwYWRkaW5n
UXVhZCwgaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyLCBoaWdobGlnaHREYXRhLT5ib3JkZXJPdXRsaW5l
KTsKKy8vICAgICAgICBjbGlwUXVhZCA9IHBhZGRpbmdRdWFkOworLy8gICAgfQorLy8gICAgaWYg
KChoaWdobGlnaHREYXRhLT5oYXNQYWRkaW5nICYmICFoaWdobGlnaHREYXRhLT5oYXNDb250ZW50
KSB8fCAoaGlnaGxpZ2h0RGF0YS0+aXNGdWxsSGlnaGxpZ2h0KCkgJiYgcGFkZGluZ1F1YWQgIT0g
Y29udGVudFF1YWQpKSB7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0
LCBwYWRkaW5nUXVhZCwgY29udGVudFF1YWQsIGhpZ2hsaWdodERhdGEtPnBhZGRpbmcsIGhpZ2hs
aWdodERhdGEtPnBhZGRpbmdPdXRsaW5lKTsKKy8vICAgICAgICBjbGlwUXVhZCA9IGNvbnRlbnRR
dWFkOworLy8gICAgfQorLy8gICAgaWYgKGhpZ2hsaWdodERhdGEtPmhhc0NvbnRlbnQpCisgICAg
ICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgY29udGVudFF1YWQsIGhpZ2hsaWdodERhdGEt
PmNvbnRlbnQsIGhpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRsaW5lKTsKKy8vICAgIGVsc2UKKy8v
ICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgY2xpcFF1YWQsIGNsaXBR
dWFkLCBkZWZhdWx0Q29udGVudEJveENvbG9yLCBkZWZhdWx0Q29udGVudE91dGxpbmVDb2xvcik7
CiB9CiAKLXZvaWQgZHJhd0hpZ2hsaWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgbGluZUJveFF1YWRz
KQordm9pZCBkcmF3SGlnaGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5kZXJlcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBsaW5lQm94UXVhZHMsIEhp
Z2hsaWdodERhdGEqIGhpZ2hsaWdodERhdGEpCiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGxp
bmVCb3hDb2xvcigxMjUsIDE3MywgMjE3LCAxMjgpOwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsaW5lQm94UXVhZHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQo
Y29udGV4dCwgbGluZUJveFF1YWRzW2ldLCBsaW5lQm94Q29sb3IpOworICAgICAgICBkcmF3T3V0
bGluZWRRdWFkKGNvbnRleHQsIGxpbmVCb3hRdWFkc1tpXSwgaGlnaGxpZ2h0RGF0YS0+Y29udGVu
dCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUpOwogfQogCiBpbmxpbmUgTGF5b3V0U2l6
ZSBmcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KEZyYW1lKiBmcmFtZSkKQEAgLTEzMiw1OCArMTQ0LDEz
MSBAQCBpbmxpbmUgTGF5b3V0U2l6ZSBmcmFtZVRvTWFpbkZyYW1lT2Zmc2V0KEZyYW1lKiBmcmFt
ZSkKICAgICByZXR1cm4gdG9MYXlvdXRTaXplKG1haW5GcmFtZVBvaW50KTsKIH0KIAoraW50IGRy
YXdTdWJzdHJpbmcoY29uc3QgVGV4dFJ1biYgZ2xvYmFsVGV4dFJ1biwgaW50IG9mZnNldCwgaW50
IGxlbmd0aCwgY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgRm9udCYgZm9udCwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiB0aXRsZVJlY3QpCit7CisgICAg
Y29udGV4dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIGdsb2JhbFRleHRSdW4sIExheW91dFBvaW50KHRpdGxl
UmVjdC54KCkgKyByZWN0SW5mbGF0ZVB4LCB0aXRsZVJlY3QueSgpICsgZm9udC5mb250TWV0cmlj
cygpLmhlaWdodCgpKSwgb2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpOworICAgIHJldHVybiBvZmZz
ZXQgKyBsZW5ndGg7Cit9CisKK2ludCBjYWxjdWxhdGVBcnJvd1RpcFgoY29uc3QgTGF5b3V0UmVj
dCYgYW5jaG9yQm94LCBjb25zdCBMYXlvdXRSZWN0JiB0aXRsZVJlY3QpCit7CisgICAgaW50IGFu
Y2hvclggPSBhbmNob3JCb3gueCgpOworCisgICAgLy8gQ2hlY2sgZm9yIGhlYXZpbHkgbWlzYWxp
Z25lZCB0b29sdGlwIGZpcnN0LgorICAgIGlmICh0aXRsZVJlY3QueCgpID4gYW5jaG9yQm94Lm1h
eFgoKSkKKyAgICAgICAgcmV0dXJuIHRpdGxlUmVjdC54KCkgKyBhcnJvd0hhbGZXaWR0aDsKKwor
ICAgIGlmICh0aXRsZVJlY3QubWF4WCgpIDwgYW5jaG9yWCkKKyAgICAgICAgcmV0dXJuIHRpdGxl
UmVjdC5tYXhYKCkgLSBhcnJvd0hhbGZXaWR0aDsKKworICAgIGludCB4ID0gdGl0bGVSZWN0Lngo
KSArIGFycm93VGlwT2Zmc2V0OworICAgIGlmICh4IDwgYW5jaG9yWCkKKyAgICAgICAgeCA9IGFu
Y2hvclggKyBhcnJvd1RpcE9mZnNldDsKKyAgICBpZiAoeCA+IHRpdGxlUmVjdC5tYXhYKCkgLSBh
cnJvd0hhbGZXaWR0aCkKKyAgICAgICAgeCA9IHRpdGxlUmVjdC5tYXhYKCkgLSBhcnJvd0hhbGZX
aWR0aDsKKworICAgIHJldHVybiB4OworfQorCit2b2lkIHNldFVwRm9udEZhbWlsaWVzKEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3Mp
Cit7CisjaWYgT1MoV0lORE9XUykKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygyLCBTdHJpbmcoIkNv
bnNvbGFzIiksIFN0cmluZygiTHVjaWRhIENvbnNvbGUiKSkKKyNlbGlmIE9TKFVOSVgpCitUT09M
VElQX0ZPTlRfRkFNSUxJRVMoMSwgU3RyaW5nKCJkZWphdnUgc2FucyBtb25vIikpCisjZWxpZiBP
UyhNQUNfT1NfWCkKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygyLCBTdHJpbmcoIk1lbmxvIiksIFN0
cmluZygiTW9uYWNvIikpCisjZW5kaWYKKy8vIEluIHRoZSBkZWZhdWx0IGNhc2UsIHdlIGdldCB0
aGUgc2V0dGluZ3MtcHJvdmlkZWQgbW9ub3NwYWNlIGZvbnQuCisKKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGZpeGVkRm9udEZhbWlseSA9IHNldHRpbmdzLT5maXhlZEZvbnRGYW1pbHkoKTsKKyAg
ICBpZiAoIWZpeGVkRm9udEZhbWlseS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkpOwor
ICAgICAgICBBdG9taWNTdHJpbmcgZmFjZTsKKyAgICAgICAgRm9udEZhbWlseSogY3VycmVudEZh
bWlseSA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b29sdGlwRm9udEZh
Y2VTaXplOyArK2kpIHsKKyAgICAgICAgICAgIGZhY2UgPSBBdG9taWNTdHJpbmcodG9vbHRpcEZv
bnRGYWNlW2ldKTsKKyAgICAgICAgICAgIGlmICghY3VycmVudEZhbWlseSkgeworICAgICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLnNldEZhbWlseShmYWNlKTsKKyAg
ICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5hcHBlbmRGYW1pbHko
MCk7CisgICAgICAgICAgICAgICAgY3VycmVudEZhbWlseSA9ICZmb250RGVzY3JpcHRpb24uZmly
c3RGYW1pbHkoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUmVmUHRy
PFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNoYXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgp
OworICAgICAgICAgICAgICAgIG5ld0ZhbWlseS0+c2V0RmFtaWx5KGZhY2UpOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGYW1pbHktPmFwcGVuZEZhbWlseShuZXdGYW1pbHkpOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNo
YXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgpOworICAgICAgICBuZXdGYW1pbHktPnNldEZhbWlseShm
aXhlZEZvbnRGYW1pbHkpOworICAgICAgICBjdXJyZW50RmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3
RmFtaWx5KTsKKyAgICAgICAgY3VycmVudEZhbWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKKyAgICB9
Cit9CisKIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5v
ZGUqIG5vZGUsIGNvbnN0IExheW91dFJlY3QmIGJvdW5kaW5nQm94LCBjb25zdCBMYXlvdXRSZWN0
JiBhbmNob3JCb3gsIGNvbnN0IEZsb2F0UmVjdCYgb3ZlcmxheVJlY3QsIFdlYkNvcmU6OlNldHRp
bmdzKiBzZXR0aW5ncykKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHJlY3RJbmZsYXRlUHggPSA0
OwotICAgIHN0YXRpYyBjb25zdCBpbnQgZm9udEhlaWdodFB4ID0gMTI7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBib3JkZXJXaWR0aFB4ID0gMTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9y
LCB0b29sdGlwQmFja2dyb3VuZENvbG9yLCAoMjU1LCAyNTUsIDE5NCwgMjU1KSk7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEJvcmRlckNvbG9yLCAoQ29sb3I6OmJsYWNr
KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEZvbnRDb2xvciwgKENv
bG9yOjpibGFjaykpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgYmFja2dyb3Vu
ZENvbG9yLCAoMjU1LCAyNTUsIDE5NCwgMjU1KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChD
b2xvciwgdGFnQ29sb3IsICgxMzYsIDE4LCAxMjgpKTsgLy8gU2FtZSBhcyAud2Via2l0LWh0bWwt
dGFnLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGF0dHJDb2xvciwgKDI2LCAyNiwg
MTY2KSk7IC8vIFNhbWUgYXMgLndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZS4KKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKENvbG9yLCBub3JtYWxDb2xvciwgKENvbG9yOjpibGFjaykpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHB4QW5kQm9yZGVyQ29sb3IsICgxMjgsIDEyOCwg
MTI4KSk7CisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHhTdHJpbmcsICgicHgi
KSk7CisgICAgY29uc3Qgc3RhdGljIFVDaGFyIHRpbWVzVUNoYXJbXSA9IHsgMHgwMEQ3LCAwIH07
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHRpbWVzU3RyaW5nLCAodGltZXNVQ2hh
cikpOyAvLyAmdGltZXM7IHN0cmluZworCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9u
dENhY2hlUHVyZ2VQcmV2ZW50ZXI7CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUpOwogICAgIGJvb2wgaXNYSFRNTCA9IGVsZW1lbnQtPmRvY3VtZW50
KCktPmlzWEhUTUxEb2N1bWVudCgpOwotICAgIFN0cmluZyBub2RlVGl0bGUgPSBpc1hIVE1MID8g
ZWxlbWVudC0+bm9kZU5hbWUoKSA6IGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKTsKKyAgICBT
dHJpbmcgbm9kZVRpdGxlKGlzWEhUTUwgPyBlbGVtZW50LT5ub2RlTmFtZSgpIDogZWxlbWVudC0+
bm9kZU5hbWUoKS5sb3dlcigpKTsKKyAgICB1bnNpZ25lZCB0YWdOYW1lTGVuZ3RoID0gbm9kZVRp
dGxlLmxlbmd0aCgpOworCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0gZWxlbWVu
dC0+Z2V0SWRBdHRyaWJ1dGUoKTsKKyAgICB1bnNpZ25lZCBpZFN0cmluZ0xlbmd0aCA9IDA7Cisg
ICAgU3RyaW5nIGlkU3RyaW5nOwogICAgIGlmICghaWRWYWx1ZS5pc051bGwoKSAmJiAhaWRWYWx1
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgbm9kZVRpdGxlICs9ICIjIjsKICAgICAgICAgbm9kZVRp
dGxlICs9IGlkVmFsdWU7CisgICAgICAgIGlkU3RyaW5nTGVuZ3RoID0gMSArIGlkVmFsdWUubGVu
Z3RoKCk7CiAgICAgfQorCisgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVz
OworICAgIHVuc2lnbmVkIGNsYXNzZXNTdHJpbmdMZW5ndGggPSAwOwogICAgIGlmIChlbGVtZW50
LT5oYXNDbGFzcygpICYmIGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKSB7CiAgICAgICAgIGNv
bnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNsYXNzTmFtZXNTdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHls
ZWRFbGVtZW50Kj4oZWxlbWVudCktPmNsYXNzTmFtZXMoKTsKICAgICAgICAgc2l6ZV90IGNsYXNz
TmFtZUNvdW50ID0gY2xhc3NOYW1lc1N0cmluZy5zaXplKCk7Ci0gICAgICAgIGlmIChjbGFzc05h
bWVDb3VudCkgewotICAgICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05h
bWVzOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGFzc05hbWVDb3VudDsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBj
bGFzc05hbWVzU3RyaW5nW2ldOwotICAgICAgICAgICAgICAgIGlmICh1c2VkQ2xhc3NOYW1lcy5j
b250YWlucyhjbGFzc05hbWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICB1c2VkQ2xhc3NOYW1lcy5hZGQoY2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAg
ICBub2RlVGl0bGUgKz0gIi4iOwotICAgICAgICAgICAgICAgIG5vZGVUaXRsZSArPSBjbGFzc05h
bWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NO
YW1lQ291bnQ7ICsraSkgeworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05h
bWUgPSBjbGFzc05hbWVzU3RyaW5nW2ldOworICAgICAgICAgICAgaWYgKHVzZWRDbGFzc05hbWVz
LmNvbnRhaW5zKGNsYXNzTmFtZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB1c2VkQ2xhc3NOYW1lcy5hZGQoY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIG5vZGVUaXRs
ZSArPSAiLiI7CisgICAgICAgICAgICBub2RlVGl0bGUgKz0gY2xhc3NOYW1lOworICAgICAgICAg
ICAgY2xhc3Nlc1N0cmluZ0xlbmd0aCArPSAxICsgY2xhc3NOYW1lLmxlbmd0aCgpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgbm9kZVRpdGxlICs9ICIgWyI7Ci0gICAgbm9kZVRpdGxlICs9IFN0
cmluZzo6bnVtYmVyKGJvdW5kaW5nQm94LndpZHRoKCkpOwotICAgIG5vZGVUaXRsZS5hcHBlbmQo
c3RhdGljX2Nhc3Q8VUNoYXI+KDB4MDBENykpOyAvLyAmdGltZXM7Ci0gICAgbm9kZVRpdGxlICs9
IFN0cmluZzo6bnVtYmVyKGJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICBub2RlVGl0bGUgKz0g
Il0iOworICAgIFN0cmluZyB3aWR0aE51bWJlclBhcnQgPSAiICIgKyBTdHJpbmc6Om51bWJlcihi
b3VuZGluZ0JveC53aWR0aCgpKTsKKyAgICBub2RlVGl0bGUgKz0gd2lkdGhOdW1iZXJQYXJ0ICsg
cHhTdHJpbmc7CisgICAgbm9kZVRpdGxlICs9IHRpbWVzU3RyaW5nOworICAgIFN0cmluZyBoZWln
aHROdW1iZXJQYXJ0ID0gU3RyaW5nOjpudW1iZXIoYm91bmRpbmdCb3guaGVpZ2h0KCkpOworICAg
IG5vZGVUaXRsZSArPSBoZWlnaHROdW1iZXJQYXJ0ICsgcHhTdHJpbmc7CiAKICAgICBGb250RGVz
Y3JpcHRpb24gZGVzYzsKLSAgICBGb250RmFtaWx5IGZhbWlseTsKLSAgICBmYW1pbHkuc2V0RmFt
aWx5KHNldHRpbmdzLT5maXhlZEZvbnRGYW1pbHkoKSk7Ci0gICAgZGVzYy5zZXRGYW1pbHkoZmFt
aWx5KTsKKyAgICBkZXNjLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdN
b2RlKCkpOwogICAgIGRlc2Muc2V0Q29tcHV0ZWRTaXplKGZvbnRIZWlnaHRQeCk7CisgICAgc2V0
VXBGb250RmFtaWxpZXMoZGVzYywgc2V0dGluZ3MpOwogICAgIEZvbnQgZm9udCA9IEZvbnQoZGVz
YywgMCwgMCk7CiAgICAgZm9udC51cGRhdGUoMCk7CiAKICAgICBUZXh0UnVuIG5vZGVUaXRsZVJ1
bihub2RlVGl0bGUpOwogICAgIExheW91dFBvaW50IHRpdGxlQmFzZVBvaW50ID0gTGF5b3V0UG9p
bnQoYW5jaG9yQm94LngoKSwgYW5jaG9yQm94Lm1heFkoKSAtIDEpOwogICAgIHRpdGxlQmFzZVBv
aW50Lm1vdmUocmVjdEluZmxhdGVQeCwgcmVjdEluZmxhdGVQeCk7Ci0gICAgTGF5b3V0UmVjdCB0
aXRsZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQobm9k
ZVRpdGxlUnVuLCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4KSk7CisgICAgTGF5b3V0UmVj
dCB0aXRsZVJlY3QgPSBlbmNsb3NpbmdMYXlvdXRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRl
eHQobm9kZVRpdGxlUnVuLCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4KSk7CiAgICAgdGl0
bGVSZWN0LmluZmxhdGUocmVjdEluZmxhdGVQeCk7CiAKICAgICAvLyBUaGUgaW5pdGlhbCBvZmZz
ZXRzIG5lZWRlZCB0byBjb21wZW5zYXRlIGZvciBhIDFweC10aGljayBib3JkZXIgc3Ryb2tlICh3
aGljaCBpcyBub3QgYSBwYXJ0IG9mIHRoZSByZWN0YW5nbGUpLgpAQCAtMjExLDE5ICsyOTYsNDkg
QEAgdm9pZCBkcmF3RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSog
bm9kZSwgY29uc3QgTGF5b3V0UmVjdCYgYm8KICAgICAgICAgZHkgPSBvdmVybGF5UmVjdC55KCkg
LSB0aXRsZVJlY3QueSgpICsgYm9yZGVyV2lkdGhQeDsKIAogICAgIHRpdGxlUmVjdC5tb3ZlKGR4
LCBkeSk7Ci0gICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih0b29sdGlwQm9yZGVyQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworCisgICAgYm9vbCBpc0Fycm93QXRUb3AgPSB0aXRsZVJlY3Qu
eSgpID4gYW5jaG9yQm94LnkoKTsKKyAgICB0aXRsZVJlY3QubW92ZSgwLCB0b29sdGlwUGFkZGlu
ZyAqIChpc0Fycm93QXRUb3AgPyAxIDogLTEpKTsKKworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29s
b3IocHhBbmRCb3JkZXJDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5z
ZXRTdHJva2VUaGlja25lc3MoYm9yZGVyV2lkdGhQeCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29s
b3IodG9vbHRpcEJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ICAgICBjb250ZXh0LmRyYXdSZWN0KHRpdGxlUmVjdCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29s
b3IodG9vbHRpcEZvbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC5k
cmF3VGV4dChmb250LCBub2RlVGl0bGVSdW4sIExheW91dFBvaW50KHRpdGxlUmVjdC54KCkgKyBy
ZWN0SW5mbGF0ZVB4LCB0aXRsZVJlY3QueSgpICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgp
KSk7CisKKyAgICB7CisgICAgICAgIGludCBhcnJvd1RpcFggPSBjYWxjdWxhdGVBcnJvd1RpcFgo
YW5jaG9yQm94LCB0aXRsZVJlY3QpOworICAgICAgICBGbG9hdFBvaW50IGFycm93UG9pbnRzWzNd
OworICAgICAgICBmbG9hdCBhcnJvd0Jhc2VZID0gaXNBcnJvd0F0VG9wID8gdGl0bGVSZWN0Lnko
KSA6IHRpdGxlUmVjdC5tYXhZKCk7CisgICAgICAgIGFycm93UG9pbnRzWzBdID0gRmxvYXRQb2lu
dChhcnJvd1RpcFggLSBhcnJvd0hhbGZXaWR0aCwgYXJyb3dCYXNlWSk7CisgICAgICAgIGFycm93
UG9pbnRzWzFdID0gRmxvYXRQb2ludChhcnJvd1RpcFgsIGFycm93QmFzZVkgKyBhcnJvd0hlaWdo
dCAqIChpc0Fycm93QXRUb3AgPyAtMSA6IDEpKTsKKyAgICAgICAgYXJyb3dQb2ludHNbMl0gPSBG
bG9hdFBvaW50KGFycm93VGlwWCArIGFycm93SGFsZldpZHRoLCBhcnJvd0Jhc2VZKTsKKyAgICAg
ICAgY29udGV4dC5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvd1BvaW50cyk7CisKKyAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhib3Jk
ZXJXaWR0aFB4ICsgMSk7CisgICAgICAgIExheW91dFBvaW50IHN0YXJ0UG9pbnQgPSBMYXlvdXRQ
b2ludChhcnJvd1BvaW50c1swXS54KCkgKyAxLCBhcnJvd1BvaW50c1swXS55KCkpOworICAgICAg
ICBMYXlvdXRQb2ludCBlbmRQb2ludCA9IExheW91dFBvaW50KGFycm93UG9pbnRzWzJdLngoKSAt
IDEsIGFycm93UG9pbnRzWzJdLnkoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0xpbmUoc3RhcnRQ
b2ludCwgZW5kUG9pbnQpOworICAgIH0KKworICAgIGludCBjdXJyZW50UG9zID0gMDsKKyAgICBj
dXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHRhZ05h
bWVMZW5ndGgsIHRhZ0NvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGlmIChp
ZFN0cmluZ0xlbmd0aCkKKyAgICAgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRp
dGxlUnVuLCBjdXJyZW50UG9zLCBpZFN0cmluZ0xlbmd0aCwgYXR0ckNvbG9yLCBmb250LCBjb250
ZXh0LCB0aXRsZVJlY3QpOworICAgIGlmIChjbGFzc2VzU3RyaW5nTGVuZ3RoKQorICAgICAgICBj
dXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIGNsYXNz
ZXNTdHJpbmdMZW5ndGgsIGF0dHJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAg
ICBjdXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHdp
ZHRoTnVtYmVyUGFydC5sZW5ndGgoKSwgbm9ybWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxl
UmVjdCk7CisgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJy
ZW50UG9zLCBweFN0cmluZy5sZW5ndGgoKSArIHRpbWVzU3RyaW5nLmxlbmd0aCgpLCBweEFuZEJv
cmRlckNvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGN1cnJlbnRQb3MgPSBk
cmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgaGVpZ2h0TnVtYmVyUGFydC5s
ZW5ndGgoKSwgbm9ybWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAgZHJh
d1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHB4U3RyaW5nLmxlbmd0aCgpLCBw
eEFuZEJvcmRlckNvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOwogfQogCiB9IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIERPTU5vZGVIaWdobGlnaHRlciB7CiAKLXZv
aWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2Rl
LCBIaWdobGlnaHRNb2RlIG1vZGUpCit2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkK
IHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBG
cmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKQEAgLTI0
MCw3ICszNTUsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogCiAgICAgRnJhbWVWaWV3KiB2
aWV3ID0gY29udGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CiAgICAg
RmxvYXRSZWN0IG92ZXJsYXlSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0gICAg
aWYgKCFvdmVybGF5UmVjdC5jb250YWlucyhib3VuZGluZ0JveCkgJiYgIWJvdW5kaW5nQm94LmNv
bnRhaW5zKGVuY2xvc2luZ0ludFJlY3Qob3ZlcmxheVJlY3QpKSkKKyAgICBpZiAoIW92ZXJsYXlS
ZWN0LmNvbnRhaW5zKGJvdW5kaW5nQm94KSAmJiAhYm91bmRpbmdCb3guY29udGFpbnMoZW5jbG9z
aW5nTGF5b3V0UmVjdChvdmVybGF5UmVjdCkpKQogICAgICAgICBvdmVybGF5UmVjdCA9IHZpZXct
PnZpc2libGVDb250ZW50UmVjdCgpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKC1vdmVybGF5UmVj
dC54KCksIC1vdmVybGF5UmVjdC55KCkpOwogCkBAIC0yNjYsNyArMzgxLDYgQEAgdm9pZCBkcmF3
Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hs
aWdodE1vZGUgbW9kZSkKICAgICAgICAgTGF5b3V0UmVjdCBtYXJnaW5Cb3goYm9yZGVyQm94Lngo
KSAtIHJlbmRlckJveC0+bWFyZ2luTGVmdCgpLCBib3JkZXJCb3gueSgpIC0gcmVuZGVyQm94LT5t
YXJnaW5Ub3AoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm94LndpZHRoKCkg
KyByZW5kZXJCb3gtPm1hcmdpbkxlZnQoKSArIHJlbmRlckJveC0+bWFyZ2luUmlnaHQoKSwgYm9y
ZGVyQm94LmhlaWdodCgpICsgcmVuZGVyQm94LT5tYXJnaW5Ub3AoKSArIHJlbmRlckJveC0+bWFy
Z2luQm90dG9tKCkpOwogCi0KICAgICAgICAgRmxvYXRRdWFkIGFic0NvbnRlbnRRdWFkID0gcmVu
ZGVyQm94LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChjb250ZW50Qm94KSk7CiAgICAg
ICAgIEZsb2F0UXVhZCBhYnNQYWRkaW5nUXVhZCA9IHJlbmRlckJveC0+bG9jYWxUb0Fic29sdXRl
UXVhZChGbG9hdFJlY3QocGFkZGluZ0JveCkpOwogICAgICAgICBGbG9hdFF1YWQgYWJzQm9yZGVy
UXVhZCA9IHJlbmRlckJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoYm9yZGVyQm94
KSk7CkBAIC0yNzksNyArMzkzLDcgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodE1vZGUgbW9kZSkKIAogICAgICAg
ICB0aXRsZUFuY2hvckJveCA9IGFic01hcmdpblF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsK
IAotICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yQm94KGNvbnRleHQsIGFic0NvbnRlbnRRdWFkLCBh
YnNQYWRkaW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgbW9kZSk7CisgICAg
ICAgIGRyYXdIaWdobGlnaHRGb3JCb3goY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1BhZGRp
bmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBoaWdobGlnaHREYXRhKTsKICAg
ICB9IGVsc2UgaWYgKHJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpIHx8IGlzU1ZHUmVuZGVyZXIp
IHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzaG93IG1hcmdpbnMvcGFkZGluZy9ib3Jk
ZXIgZm9yIGlubGluZXMuCiAgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGxpbmVCb3hRdWFkczsK
QEAgLTI4Nyw3ICs0MDEsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGluZUJveFF1YWRzLnNpemUoKTsgKytpKQogICAgICAgICAg
ICAgbGluZUJveFF1YWRzW2ldICs9IG1haW5GcmFtZU9mZnNldDsKIAotICAgICAgICBkcmF3SGln
aGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5kZXJlcihjb250ZXh0LCBsaW5lQm94UXVhZHMpOwor
ICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5kZXJlcihjb250ZXh0LCBs
aW5lQm94UXVhZHMsIGhpZ2hsaWdodERhdGEpOwogICAgIH0KIAogICAgIC8vIERyYXcgbm9kZSB0
aXRsZSBpZiBuZWNlc3NhcnkuCkBAIC0yOTYsMTEgKzQxMCwxMSBAQCB2b2lkIGRyYXdOb2RlSGln
aGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9k
ZSBtb2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGlu
Z3MgPSBjb250YWluaW5nRnJhbWUtPnNldHRpbmdzKCk7Ci0gICAgaWYgKG1vZGUgPT0gRE9NTm9k
ZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwpCisgICAgaWYgKGhpZ2hsaWdodERhdGEtPnNob3dJ
bmZvKQogICAgICAgICBkcmF3RWxlbWVudFRpdGxlKGNvbnRleHQsIG5vZGUsIGJvdW5kaW5nQm94
LCB0aXRsZUFuY2hvckJveCwgb3ZlcmxheVJlY3QsIHNldHRpbmdzKTsKIH0KIAotdm9pZCBkcmF3
UmVjdEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVu
dCwgSW50UmVjdCogcmVjdCkKK3ZvaWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBEb2N1bWVudCogZG9jdW1lbnQsIExheW91dFJlY3QqIHJlY3QsIGNvbnN0IENv
bG9yJiBjb2xvciwgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcikKIHsKICAgICBpZiAoIWRvY3Vt
ZW50KQogICAgICAgICByZXR1cm47CkBAIC0zMTAsMTQgKzQyNCwxMiBAQCB2b2lkIGRyYXdSZWN0
SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRG9jdW1lbnQqIGRvY3VtZW50LCBJ
bnRSZWN0KiByZQogICAgIGNvbnRleHQudHJhbnNsYXRlKC1vdmVybGF5UmVjdC54KCksIC1vdmVy
bGF5UmVjdC55KCkpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBvdXRsaW5lVGhpY2tuZXNzID0g
MjsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBvdXRsaW5lQ29sb3IsICgyNTUsIDAs
IDAsIDIyOCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGZpbGxDb2xvciwgKDI1
NSwgMCwgMCwgMjApKTsKIAogICAgIFBhdGggcXVhZFBhdGggPSBxdWFkVG9QYXRoKEZsb2F0UmVj
dCgqcmVjdCkpOwogCiAgICAgLy8gQ2xpcCBvdXQgdGhlIHF1YWQsIHRoZW4gZHJhdyB3aXRoIGEg
MnB4IHN0cm9rZSB0byBnZXQgYSBwaXhlbAogICAgIC8vIG9mIG91dGxpbmUgKGJlY2F1c2UgaW5m
bGF0aW5nIGEgcXVhZCBpcyBoYXJkKQotICAgIHsKKyAgICBpZiAob3V0bGluZUNvbG9yLmlzVmFs
aWQoKSkgewogICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgY29udGV4dC5jbGlwT3V0
KHF1YWRQYXRoKTsKIApAQCAtMzI5LDEyICs0NDEsMTYgQEAgdm9pZCBkcmF3UmVjdEhpZ2hsaWdo
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVudCwgSW50UmVjdCog
cmUKICAgICB9CiAKICAgICAvLyBOb3cgZG8gdGhlIGZpbGwKLSAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihmaWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQuZmlsbFBh
dGgocXVhZFBhdGgpOworICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY29udGV4
dC5zZXRGaWxsQ29sb3IoY29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250
ZXh0LmZpbGxQYXRoKHF1YWRQYXRoKTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERPTU5v
ZGVIaWdobGlnaHRlcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyN1bmRlZiBUT09MVElQ
X0ZPTlRfRkFNSUxJRVMKKwogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgKaW5kZXggMzBkNzc2MC4uYmFj
M2RiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGln
aHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIu
aApAQCAtMjksMjYgKzI5LDMzIEBACiAjaWZuZGVmIERPTU5vZGVIaWdobGlnaHRlcl9oCiAjZGVm
aW5lIERPTU5vZGVIaWdobGlnaHRlcl9oCiAKKyNpbmNsdWRlICJDb2xvci5oIgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbG9yOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTm9kZTsKIAotbmFtZXNwYWNlIERP
TU5vZGVIaWdobGlnaHRlciB7Ci0KLWVudW0gSGlnaGxpZ2h0TW9kZSB7Ci0gICAgSGlnaGxpZ2h0
QWxsLAotICAgIEhpZ2hsaWdodENvbnRlbnQsCi0gICAgSGlnaGxpZ2h0UGFkZGluZywKLSAgICBI
aWdobGlnaHRCb3JkZXIsCi0gICAgSGlnaGxpZ2h0TWFyZ2luCitzdHJ1Y3QgSGlnaGxpZ2h0RGF0
YSB7CisgICAgQ29sb3IgY29udGVudDsKKyAgICBDb2xvciBjb250ZW50T3V0bGluZTsKKyAgICBD
b2xvciBwYWRkaW5nOworICAgIENvbG9yIHBhZGRpbmdPdXRsaW5lOworICAgIENvbG9yIGJvcmRl
cjsKKyAgICBDb2xvciBib3JkZXJPdXRsaW5lOworICAgIENvbG9yIG1hcmdpbjsKKyAgICBDb2xv
ciBtYXJnaW5PdXRsaW5lOworICAgIGJvb2wgc2hvd0luZm87CiB9OwogCi12b2lkIGRyYXdOb2Rl
SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYsIE5vZGUqLCBIaWdobGlnaHRNb2RlKTsKK25hbWVz
cGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIgeworCit2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBo
aWNzQ29udGV4dCYsIE5vZGUqLCBIaWdobGlnaHREYXRhKik7CiAKLXZvaWQgZHJhd1JlY3RIaWdo
bGlnaHQoR3JhcGhpY3NDb250ZXh0JiwgRG9jdW1lbnQqLCBJbnRSZWN0Kik7Cit2b2lkIGRyYXdS
ZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYsIERvY3VtZW50KiwgSW50UmVjdCosIGNvbnN0
IENvbG9yJiwgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcik7CiAKIH0gLy8gbmFtZXNwYWNlIERP
TU5vZGVIaWdobGlnaHRlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
aW5kZXggZGIyYjk4OC4uN2RmNzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtODcxLDYgKzg3MSwxNyBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImxvY2F0aW9uIiwgIiRyZWYiOiAiRGVidWdnZXIuTG9jYXRpb24iLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiSGFuZGxlciBjb2RlIGxvY2F0aW9uLiIgfQogICAgICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRPTSBpbnRlcmFjdGlv
biBpcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBtaXJyb3Igb2JqZWN0cyB0aGF0IHJlcHJlc2Vu
dCB0aGUgYWN0dWFsIERPTSBub2Rlcy4gRE9NTm9kZSBpcyBhIGJhc2Ugbm9kZSBtaXJyb3IgdHlw
ZS4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6
ICJSR0JBIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInIiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSByZWQgY29tcG9uZW50LCBpbiB0
aGUgWzAtMjU1XSByYW5nZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZyIs
ICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGdyZWVuIGNvbXBvbmVudCwg
aW4gdGhlIFswLTI1NV0gcmFuZ2UuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImIiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSBibHVlIGNvbXBvbmVu
dCwgaW4gdGhlIFswLTI1NV0gcmFuZ2UuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImEiLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGFscGhhIGNvbXBvbmVudCwgaW4gdGhlIFswLTFdIHJhbmdlIChkZWZhdWx0OiAxKS4i
IH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJB
IHN0cnVjdHVyZSBob2xkaW5nIGFuIFJHQkEgY29sb3IuIgogICAgICAgICAgICAgfQogICAgICAg
ICBdLAogICAgICAgICAiY29tbWFuZHMiOiBbCkBAIC0xMDQwLDcgKzEwNTEsOSBAQAogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIngiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0
aW9uIjogIlggY29vcmRpbmF0ZSIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ5
IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJZIGNvb3JkaW5hdGUiIH0sCiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2lkdGgiLCAidHlwZSI6ICJpbnRlZ2VyIiwg
ImRlc2NyaXB0aW9uIjogIlJlY3RhbmdsZSB3aWR0aCIgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJoZWlnaHQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJl
Y3RhbmdsZSBoZWlnaHQiIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWlnaHQi
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlJlY3RhbmdsZSBoZWlnaHQiIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29sb3IiLCAiJHJlZiI6ICJSR0JBIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBoaWdobGlnaHQgZmlsbCBjb2xv
ciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJvdXRsaW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIlRoZSBoaWdobGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNw
YXJlbnQpLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkhpZ2hsaWdodHMgZ2l2ZW4gcmVjdGFuZ2xlLiBDb29yZGluYXRlcyBhcmUgYWJzb2x1
dGUgd2l0aCByZXNwZWN0IHRvIHRoZSBtYWluIGZyYW1lIHZpZXdwb3J0LiIKICAgICAgICAgICAg
IH0sCkBAIC0xMDQ4LDcgKzEwNjEsMTUgQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJoaWdo
bGlnaHROb2RlIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJOb2RlSWQiLCAiZGVzY3JpcHRp
b24iOiAiSWRlbnRpZmllciBvZiB0aGUgbm9kZSB0byBoaWdobGlnaHQiIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibW9kZSIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJh
bGwiLCAiY29udGVudCIsICJwYWRkaW5nIiwgImJvcmRlciIsICJtYXJnaW4iXSwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3ggbW9kZWwgY29tcG9uZW50KHMpIHRvIGhp
Z2hsaWdodCAoZGVmYXVsdDogXCJhbGxcIikuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic2hvd0luZm8iLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIldoZXRo
ZXIgdGhlIG5vZGUgaW5mbyB0b29sdGlwIHNob3VsZCBiZSBzaG93bi4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiY29udGVudENvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgY29udGVudCBib3ggaGlnaGxpZ2h0IGZp
bGwgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiY29udGVudE91dGxpbmVDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGNvbnRlbnQgYm94IGhpZ2hsaWdodCBvdXRs
aW5lIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInBhZGRpbmdDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIHBhZGRpbmcgaGlnaGxpZ2h0IGZpbGwgY29sb3IgKGRl
ZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cGFkZGluZ091dGxpbmVDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiVGhlIHBhZGRpbmcgaGlnaGxpZ2h0IG91dGxpbmUgY29sb3IgKGRlZmF1
bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm9y
ZGVyQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRoZSBib3JkZXIgaGlnaGxpZ2h0IGZpbGwgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50
KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm9yZGVyT3V0bGluZUNvbG9y
IiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUg
Ym9yZGVyIGhpZ2hsaWdodCBvdXRsaW5lIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1hcmdpbkNvbG9yIiwgIiRyZWYiOiAi
UkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgbWFyZ2luIGhpZ2hs
aWdodCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm1hcmdpbk91dGxpbmVDb2xvciIsICIkcmVmIjogIlJHQkEiLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG1hcmdpbiBoaWdobGlnaHQgb3V0
bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfQogICAgICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkhpZ2hsaWdodHMgRE9NIG5vZGUgd2l0
aCBnaXZlbiBpZC4iCiAgICAgICAgICAgICB9LApAQCAtMTA1OSw3ICsxMDgwLDkgQEAKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJoaWdobGlnaHRGcmFtZSIsCiAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZnJhbWVJZCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVy
IG9mIHRoZSBmcmFtZSB0byBoaWdobGlnaHQiIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJmcmFtZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZp
ZXIgb2YgdGhlIGZyYW1lIHRvIGhpZ2hsaWdodCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJjb250ZW50Q29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIlRoZSBjb250ZW50IGJveCBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVm
YXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJj
b250ZW50T3V0bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgY29udGVudCBib3ggaGlnaGxpZ2h0IG91dGxpbmUgY29sb3IgKGRl
ZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJIaWdobGlnaHRzIG93bmVyIGVsZW1lbnQgb2YgdGhlIGZyYW1l
IHdpdGggZ2l2ZW4gaWQuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMjQ1NmUx
OC4uNzQ0MWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCkBAIC05OCw2ICs5OCwzNCBAQCBuYW1lc3BhY2UgRE9NQWdlbnRTdGF0ZSB7CiBz
dGF0aWMgY29uc3QgY2hhciBkb2N1bWVudFJlcXVlc3RlZFtdID0gImRvY3VtZW50UmVxdWVzdGVk
IjsKIH07CiAKK3N0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBjb2xvck9iamVjdCkKK3sKKyAgICBpZiAoIWNvbG9yT2JqZWN0KQorICAgICAgICBy
ZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OworCisgICAgaW50IHI7CisgICAgaW50IGc7CisgICAg
aW50IGI7CisgICAgYm9vbCBzdWNjZXNzID0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigiciIs
ICZyKTsKKyAgICBzdWNjZXNzIHw9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImciLCAmZyk7
CisgICAgc3VjY2VzcyB8PSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJiIiwgJmIpOworICAg
IGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKKworICAg
IGRvdWJsZSBhOworICAgIHN1Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJhIiwg
JmEpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIENvbG9yKHIsIGcsIGIpOwor
CisgICAgLy8gQ2xhbXAgYWxwaGEgdG8gdGhlIFswLi4xXSByYW5nZS4KKyAgICBpZiAoYSA8IDAp
CisgICAgICAgIGEgPSAwOworICAgIGVsc2UgaWYgKGEgPiAxKQorICAgICAgICBhID0gMTsKKwor
ICAgIHJldHVybiBDb2xvcihyLCBnLCBiLCBzdGF0aWNfY2FzdDxpbnQ+KGEgKiAyNTUpKTsKK30K
KwogY2xhc3MgTWF0Y2hKb2IgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtYXRjaChMaXN0
SGFzaFNldDxOb2RlKj4mIHJlc3VsdENvbGxlY3RvcikgPSAwOwpAQCAtOTc3LDcgKzEwMDUsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpmb2N1c05vZGUoKQogCiB2b2lkIEluc3BlY3RvckRP
TUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIHVuc2lnbmVkKQogewotICAgIGlmICghbV9zZWFyY2hpbmdGb3JOb2RlKQorICAgIGlmICgh
bV9zZWFyY2hpbmdGb3JOb2RlIHx8ICFtX2hpZ2hsaWdodERhdGEpCiAgICAgICAgIHJldHVybjsK
IAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CkBAIC05ODUsNyArMTAxMyw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRO
b2RlKCk7CiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7Ci0gICAg
ICAgIGhpZ2hsaWdodCgmZXJyb3IsIG5vZGUsICJhbGwiKTsKKyAgICAgICAgaGlnaGxpZ2h0KCZl
cnJvciwgbm9kZSk7CiAgICAgfQogfQogCkBAIC0xMDA1LDM2ICsxMDMzLDcwIEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wg
ZW5hYmxlZCkKICAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKGVuYWJsZWQpOwogfQogCi12b2lkIElu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHQoRXJyb3JTdHJpbmcqLCBOb2RlKiBub2RlLCBjb25z
dCBTdHJpbmcmIG1vZGUpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHQoRXJyb3JT
dHJpbmcqLCBOb2RlKiBub2RlKQogeworICAgIC8vIFRoaXMgbWV0aG9kIHJlcXVpcmVzIG1faGln
aGxpZ2h0ZWRSZWN0IHRvIGhhdmUgYmVlbiBzZXQgYnkgaXRzIGNsaWVudC4KICAgICBBU1NFUlRf
QVJHKG5vZGUsIG5vZGUpOwogICAgIG1faGlnaGxpZ2h0ZWROb2RlID0gbm9kZTsKLSAgICBtX2hp
Z2hsaWdodE1vZGUgPSBtb2RlOwogICAgIG1fY2xpZW50LT5oaWdobGlnaHQoKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IpCiB7CiAgICAgbV9oaWdobGlnaHRlZFJlY3Qg
PSBhZG9wdFB0cihuZXcgSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgbV9oaWdo
bGlnaHREYXRhID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodERhdGEoKSk7CisgICAgbV9oaWdobGln
aHREYXRhLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CisgICAgbV9oaWdobGlnaHREYXRh
LT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKICAgICBtX2NsaWVu
dC0+aGlnaGxpZ2h0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5v
ZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgbm9kZUlkLCBTdHJpbmcqIG1vZGUpCi17Ci0gICAg
aWYgKE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkKLSAgICAgICAgaGlnaGxpZ2h0KGVy
cm9yLCBub2RlLCBtb2RlICYmICFtb2RlLT5pc0VtcHR5KCkgPyAqbW9kZSA6ICJhbGwiKTsKK3Zv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoCisgICAgRXJyb3JTdHJpbmcqIGVy
cm9yLAorICAgIGludCBub2RlSWQsCisgICAgYm9vbCBzaG93SW5mbywKKyAgICBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogY29udGVudENvbG9yLAorICAgIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBjb250ZW50T3V0bGluZUNvbG9yLAorICAgIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBwYWRkaW5nQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIHBhZGRpbmdPdXRsaW5lQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIGJvcmRlckNvbG9yLAorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBi
b3JkZXJPdXRsaW5lQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1h
cmdpbkNvbG9yLAorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBtYXJnaW5PdXRs
aW5lQ29sb3IpCit7CisgICAgaWYgKE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkgewor
ICAgICAgICBtX2hpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsK
KyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5zaG93SW5mbyA9IHNob3dJbmZvOworICAgICAgICBt
X2hpZ2hsaWdodERhdGEtPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbnRlbnRDb2xvcik7CisgICAg
ICAgIG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKGNvbnRlbnRP
dXRsaW5lQ29sb3IpOworICAgICAgICBtX2hpZ2hsaWdodERhdGEtPnBhZGRpbmcgPSBwYXJzZUNv
bG9yKHBhZGRpbmdDb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+cGFkZGluZ091dGxp
bmUgPSBwYXJzZUNvbG9yKHBhZGRpbmdPdXRsaW5lQ29sb3IpOworICAgICAgICBtX2hpZ2hsaWdo
dERhdGEtPmJvcmRlciA9IHBhcnNlQ29sb3IoYm9yZGVyQ29sb3IpOworICAgICAgICBtX2hpZ2hs
aWdodERhdGEtPmJvcmRlck91dGxpbmUgPSBwYXJzZUNvbG9yKGJvcmRlck91dGxpbmVDb2xvcik7
CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+bWFyZ2luID0gcGFyc2VDb2xvcihtYXJnaW5Db2xv
cik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+bWFyZ2luT3V0bGluZSA9IHBhcnNlQ29sb3Io
bWFyZ2luT3V0bGluZUNvbG9yKTsKKyAgICAgICAgaGlnaGxpZ2h0KGVycm9yLCBub2RlKTsKKyAg
ICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKEVycm9yU3Ry
aW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBmcmFtZUlkKQordm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0RnJhbWUoCisgICAgRXJyb3JTdHJpbmcqIGVycm9yLAorICAgIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3Is
CisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcikKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKLSAgICBp
ZiAoZnJhbWUgJiYgZnJhbWUtPm93bmVyRWxlbWVudCgpKQotICAgICAgICBoaWdobGlnaHQoZXJy
b3IsIGZyYW1lLT5vd25lckVsZW1lbnQoKSwgImFsbCIpOworICAgIGlmIChmcmFtZSAmJiBmcmFt
ZS0+b3duZXJFbGVtZW50KCkpIHsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhID0gYWRvcHRQdHIo
bmV3IEhpZ2hsaWdodERhdGEoKSk7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudCA9
IHBhcnNlQ29sb3IoY29sb3IpOworICAgICAgICBtX2hpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRs
aW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOworICAgICAgICBoaWdobGlnaHQoZXJyb3Is
IGZyYW1lLT5vd25lckVsZW1lbnQoKSk7CisgICAgfQogfQogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpoaWRlSGlnaGxpZ2h0KEVycm9yU3RyaW5nKikKIHsKICAgICBtX2hpZ2hsaWdodGVkTm9k
ZSA9IDA7CisgICAgbV9oaWdobGlnaHREYXRhLmNsZWFyKCk7CiAgICAgbV9oaWdobGlnaHRlZFJl
Y3QuY2xlYXIoKTsKICAgICBtX2NsaWVudC0+aGlkZUhpZ2hsaWdodCgpOwogfQpAQCAtMTUxMiwy
MyArMTU3NCwxNCBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9NQWdl
bnQ6OnJlc29sdmVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cgogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZHJhd0hpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgaWYgKG1faGlnaGxpZ2h0ZWRSZWN0KSB7Ci0gICAgICAgIERPTU5vZGVIaWdobGlnaHRlcjo6
ZHJhd1JlY3RIaWdobGlnaHQoY29udGV4dCwgbV9kb2N1bWVudC5nZXQoKSwgbV9oaWdobGlnaHRl
ZFJlY3QuZ2V0KCkpOworICAgICAgICBET01Ob2RlSGlnaGxpZ2h0ZXI6OmRyYXdSZWN0SGlnaGxp
Z2h0KGNvbnRleHQsIG1fZG9jdW1lbnQuZ2V0KCksIG1faGlnaGxpZ2h0ZWRSZWN0LmdldCgpLCBt
X2hpZ2hsaWdodERhdGEtPmNvbnRlbnQsIG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX2hpZ2hsaWdodGVkTm9kZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNb2Rl
IG1vZGUgPSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbDsKLSAgICBpZiAobV9oaWdo
bGlnaHRNb2RlID09ICJjb250ZW50IikKLSAgICAgICAgbW9kZSA9IERPTU5vZGVIaWdobGlnaHRl
cjo6SGlnaGxpZ2h0Q29udGVudDsKLSAgICBlbHNlIGlmIChtX2hpZ2hsaWdodE1vZGUgPT0gInBh
ZGRpbmciKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRQYWRk
aW5nOwotICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0TW9kZSA9PSAiYm9yZGVyIikKLSAgICAgICAg
bW9kZSA9IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0Qm9yZGVyOwotICAgIGVsc2UgaWYg
KG1faGlnaGxpZ2h0TW9kZSA9PSAibWFyZ2luIikKLSAgICAgICAgbW9kZSA9IERPTU5vZGVIaWdo
bGlnaHRlcjo6SGlnaGxpZ2h0TWFyZ2luOwotICAgIERPTU5vZGVIaWdobGlnaHRlcjo6ZHJhd05v
ZGVIaWdobGlnaHQoY29udGV4dCwgbV9oaWdobGlnaHRlZE5vZGUuZ2V0KCksIG1vZGUpOworICAg
IERPTU5vZGVIaWdobGlnaHRlcjo6ZHJhd05vZGVIaWdobGlnaHQoY29udGV4dCwgbV9oaWdobGln
aHRlZE5vZGUuZ2V0KCksIG1faGlnaGxpZ2h0RGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmgKaW5kZXggOWIxODQ5My4uYzhmY2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgSW50UmVjdDsKIGNs
YXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBNYXRjaEpvYjsKIGNsYXNzIEhUTUxFbGVtZW50Owor
Y2xhc3MgSGlnaGxpZ2h0RGF0YTsKIGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1
bWVudGluZ0FnZW50czsKIGNsYXNzIE5hbWVOb2RlTWFwOwpAQCAtMTMzLDkgKzEzNCw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgaW50KiBub2RlSWQpOwogICAgIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5k
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCk7CiAgICAgdm9p
ZCBoaWRlSGlnaGxpZ2h0KEVycm9yU3RyaW5nKik7Ci0gICAgdm9pZCBoaWdobGlnaHRSZWN0KEVy
cm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwotICAgIHZv
aWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFN0cmluZyogbW9kZSk7
Ci0gICAgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJh
bWVJZCk7CisgICAgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBj
b2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcik7CisgICAg
dm9pZCBoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgYm9vbCBzaG93SW5m
bywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbnRlbnRDb2xvciwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbnRlbnRPdXRsaW5lQ29sb3IsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBwYWRkaW5nQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiBwYWRkaW5nT3V0bGluZUNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piog
Ym9yZGVyQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBib3JkZXJPdXRsaW5l
Q29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBtYXJnaW5Db2xvciwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1hcmdpbk91dGxpbmVDb2xvcik7CisgICAgdm9pZCBo
aWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0Piogb3V0bGluZUNvbG9yKTsKICAgICB2b2lkIG1vdmVUbyhFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGludCB0YXJnZXROb2RlSWQsIGNvbnN0IGludCogY29uc3QgYW5jaG9yTm9kZUlkLCBp
bnQqIG5ld05vZGVJZCk7CiAKICAgICBOb2RlKiBoaWdobGlnaHRlZE5vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2hpZ2hsaWdodGVkTm9kZS5nZXQoKTsgfQpAQCAtMTgzLDcgKzE4NCw3IEBAIHByaXZh
dGU6CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3Rv
clBhZ2VBZ2VudCosIEluc3BlY3RvckNsaWVudCosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKik7CiAKICAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFi
bGVkKTsKLSAgICB2b2lkIGhpZ2hsaWdodChFcnJvclN0cmluZyosIE5vZGUqLCBjb25zdCBTdHJp
bmcmIG1vZGUpOworICAgIHZvaWQgaGlnaGxpZ2h0KEVycm9yU3RyaW5nKiwgTm9kZSopOwogCiAg
ICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxO
b2RlPiwgaW50PiBOb2RlVG9JZE1hcDsKQEAgLTIzMyw3ICsyMzQsNyBAQCBwcml2YXRlOgogICAg
IE93blB0cjxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPiBtX3JldmFsaWRhdGVTdHlsZUF0
dHJUYXNrOwogICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodGVkTm9kZTsKICAgICBPd25QdHI8
SW50UmVjdD4gbV9oaWdobGlnaHRlZFJlY3Q7Ci0gICAgU3RyaW5nIG1faGlnaGxpZ2h0TW9kZTsK
KyAgICBPd25QdHI8SGlnaGxpZ2h0RGF0YT4gbV9oaWdobGlnaHREYXRhOwogICAgIFJlZlB0cjxO
b2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIGJvb2wgbV9zZWFyY2hpbmdGb3JOb2RlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzCmluZGV4IDczZTQ3ZDQu
LjJjNWJhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29sb3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5q
cwpAQCAtMzMsNiArMzMsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbG9yID0gZnVuY3Rpb24oc3RyKQog
ICAgIHRoaXMuX3BhcnNlKCk7CiB9CiAKK1dlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSA9IGZ1
bmN0aW9uKHIsIGcsIGIsIGEpCit7CisgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29sb3Io
InJnYmEoIiArIHIgKyAiLCIgKyBnICsgIiwiICsgYiArICIsIiArICh0eXBlb2YgYSA9PT0gInVu
ZGVmaW5lZCIgPyAxIDogYSkgKyAiKSIpOworfQorCiBXZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90
eXBlID0gewogICAgIGdldCBzaG9ydGhleCgpCiAgICAgewpAQCAtMTY2LDYgKzE3MSwyMSBAQCBX
ZWJJbnNwZWN0b3IuQ29sb3IucHJvdG90eXBlID0gewogICAgICAgICB0aHJvdyAiaW52YWxpZCBj
b2xvciBmb3JtYXQiOwogICAgIH0sCiAKKyAgICB0b1Byb3RvY29sUkdCQTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Byb3RvY29sUkdCQSkKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLl9wcm90b2NvbFJHQkE7CisKKyAgICAgICAgdmFyIGNvbXBvbmVudHMgPSB0aGlzLnJn
YmE7CisgICAgICAgIGlmIChjb21wb25lbnRzKQorICAgICAgICAgICAgdGhpcy5fcHJvdG9jb2xS
R0JBID0geyByOiBOdW1iZXIoY29tcG9uZW50c1swXSksIGc6IE51bWJlcihjb21wb25lbnRzWzFd
KSwgYjogTnVtYmVyKGNvbXBvbmVudHNbMl0pLCBhOiBOdW1iZXIoY29tcG9uZW50c1szXSkgfTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb21wb25lbnRzID0gdGhpcy5yZ2I7CisgICAg
ICAgICAgICB0aGlzLl9wcm90b2NvbFJHQkEgPSB7IHI6IE51bWJlcihjb21wb25lbnRzWzBdKSwg
ZzogTnVtYmVyKGNvbXBvbmVudHNbMV0pLCBiOiBOdW1iZXIoY29tcG9uZW50c1syXSkgfTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5fcHJvdG9jb2xSR0JBOworICAgIH0sCisKICAg
ICBfcmdiVG9IZXg6IGZ1bmN0aW9uKHJnYikKICAgICB7CiAgICAgICAgIHZhciByID0gcGFyc2VJ
bnQocmdiWzBdKS50b1N0cmluZygxNik7CkBAIC02NjEsMyArNjgxLDE0IEBAIFdlYkluc3BlY3Rv
ci5Db2xvci5BZHZhbmNlZE5pY2tOYW1lcyA9IHsKICAgICAicmdiYSgwLDAsMCwwKSI6IFtbMCwg
MCwgMCwgMF0sIFswLCAwLCAwLCAwXSwgInRyYW5zcGFyZW50Il0sCiAgICAgImhzbGEoMCwwLDAs
MCkiOiBbWzAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMF0sICJ0cmFuc3BhcmVudCJdLAogfTsKKwor
V2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQgPSB7CisgICAgQ29udGVudDogV2ViSW5z
cGVjdG9yLkNvbG9yLmZyb21SR0JBKDExMSwgMTY4LCAyMjAsIC42NiksCisgICAgQ29udGVudE91
dGxpbmU6IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSg5LCA4MywgMTQ4KSwKKyAgICBQYWRk
aW5nOiBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEoMTQ3LCAxOTYsIDEyNSwgLjU1KSwKKyAg
ICBQYWRkaW5nT3V0bGluZTogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDU1LCAxMTgsIDI4
KSwKKyAgICBCb3JkZXI6IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSgyNTUsIDIyOSwgMTUz
LCAuNjYpLAorICAgIEJvcmRlck91dGxpbmU6IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSgx
MjcsIDk2LCAwKSwKKyAgICBNYXJnaW46IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSgyNDYs
IDE3OCwgMTA3LCAuNjYpLAorICAgIE1hcmdpbk91dGxpbmU6IFdlYkluc3BlY3Rvci5Db2xvci5m
cm9tUkdCQSgxODAsIDk1LCA0KQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQ
YW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJh
clBhbmUuanMKaW5kZXggYjA1OGE0MC4uYzJlMDI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKQEAgLTEy
OCwxNSArMTI4LDM4IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAoZnJvbUVsZW1lbnQgPT09IHRvRWxlbWVudCkKICAgICAgICAgICAg
IHJldHVybjsKIAorICAgICAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZU92ZXIoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJob3ZlcmVkIik7CisK
KyAgICAgICAgICAgIHZhciBiZ0NvbG9yOworICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzU3R5
bGVDbGFzcygibWFyZ2luIikpCisgICAgICAgICAgICAgICAgYmdDb2xvciA9IFdlYkluc3BlY3Rv
ci5Db2xvci5QYWdlSGlnaGxpZ2h0Lk1hcmdpbi50b1N0cmluZygib3JpZ2luYWwiKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFzU3R5bGVDbGFzcygiYm9yZGVyIikpCisgICAgICAg
ICAgICAgICAgYmdDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkJvcmRl
ci50b1N0cmluZygib3JpZ2luYWwiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFz
U3R5bGVDbGFzcygicGFkZGluZyIpKQorICAgICAgICAgICAgICAgIGJnQ29sb3IgPSBXZWJJbnNw
ZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5QYWRkaW5nLnRvU3RyaW5nKCJvcmlnaW5hbCIpOwor
ICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJjb250ZW50IikpCisg
ICAgICAgICAgICAgICAgYmdDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0
LkNvbnRlbnQudG9TdHJpbmcoIm9yaWdpbmFsIik7CisgICAgICAgICAgICBpZiAoYmdDb2xvcikK
KyAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGJnQ29sb3I7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZU91dChlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICIi
OworICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJob3ZlcmVkIik7CisgICAg
ICAgIH0KKwogICAgICAgICBpZiAoc2hvd0hpZ2hsaWdodCkgewogICAgICAgICAgICAgLy8gSW50
byBlbGVtZW50LgogICAgICAgICAgICAgaWYgKHRoaXMubm9kZSAmJiB0b0VsZW1lbnQpCi0gICAg
ICAgICAgICAgICAgdG9FbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKKyAgICAgICAg
ICAgICAgICBoYW5kbGVNb3VzZU92ZXIodG9FbGVtZW50KTsKICAgICAgICAgICAgIHZhciBub2Rl
SWQgPSB0aGlzLm5vZGUgPyB0aGlzLm5vZGUuaWQgOiAwOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gT3V0IG9mIGVsZW1lbnQuCiAgICAgICAgICAgICBpZiAoZnJvbUVsZW1lbnQp
Ci0gICAgICAgICAgICAgICAgZnJvbUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaG92ZXJlZCIp
OworICAgICAgICAgICAgICAgIGhhbmRsZU1vdXNlT3V0KGZyb21FbGVtZW50KTsKICAgICAgICAg
ICAgIHZhciBub2RlSWQgPSAwOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlSWQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRl
eCBmMDdlMmMzLi5jNjRkY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0xODg4LDEwICsxODg4LDYgQEAgYm9keS5wbGF0Zm9y
bS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAgIG1hcmdpbjogM3B4OwogfQog
Ci0ubWV0cmljcyAubWFyZ2luLmhvdmVyZWQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigx
MzksIDE4MiwgMjIxKTsKLX0KLQogLm1ldHJpY3MgLmJvcmRlciB7CiAgICAgYm9yZGVyOiAxcHgg
YmxhY2sgc29saWQ7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CkBAIC0xOTAyLDEwICsx
ODk4LDYgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewog
ICAgIG1hcmdpbjogM3B4OwogfQogCi0ubWV0cmljcyAuYm9yZGVyLmhvdmVyZWQgewotICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYigxNTcsIDE5MywgMjI2KTsKLX0KLQogLm1ldHJpY3MgLnBhZGRp
bmcgewogICAgIGJvcmRlcjogMXB4IGdyZXkgZGFzaGVkOwogICAgIGJhY2tncm91bmQtY29sb3I6
IHdoaXRlOwpAQCAtMTkxNiwxMCArMTkwOCw2IEBAIGJvZHkucGxhdGZvcm0td2luZG93cyAuc2lk
ZWJhci1wYW5lLXN1YnRpdGxlIHsKICAgICBtYXJnaW46IDNweDsKIH0KIAotLm1ldHJpY3MgLnBh
ZGRpbmcuaG92ZXJlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3MywgMjA0LCAyMzEp
OwotfQotCiAubWV0cmljcyAuY29udGVudCB7CiAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICBi
b3JkZXI6IDFweCBncmV5IHNvbGlkOwpAQCAtMTkzNCwxMCArMTkyMiw2IEBAIGJvZHkucGxhdGZv
cm0td2luZG93cyAuc2lkZWJhci1wYW5lLXN1YnRpdGxlIHsKICAgICBvdmVyZmxvdzogdmlzaWJs
ZTsKIH0KIAotLm1ldHJpY3MgLmNvbnRlbnQuaG92ZXJlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDE5MCwgMjE0LCAyMzYpOwotfQotCiAubWV0cmljcyAuY29udGVudCBzcGFuIHsKICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDA3NjgwMGIuLmExMDRlMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0zODIs
OSArMzgyLDMxIEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRET01Ob2RlSWQgPSBub2RlSWQ7Ci0gICAgICAgIGlm
IChub2RlSWQpCi0gICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHROb2RlKG5vZGVJZCwgbW9k
ZSB8fCAiYWxsIik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKG5vZGVJZCkgeworICAgICAg
ICAgICAgbW9kZSA9IG1vZGUgfHwgImFsbCI7CisgICAgICAgICAgICB2YXIgYXJncyA9IHsgbm9k
ZUlkOiBub2RlSWQsIHNob3dJbmZvOiBtb2RlID09PSAiYWxsIiB9OworICAgICAgICAgICAgaWYg
KG1vZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09ICJjb250ZW50IikgeworICAgICAgICAgICAgICAg
IGFyZ3MuY29udGVudENvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29u
dGVudC50b1Byb3RvY29sUkdCQSgpOworICAgICAgICAgICAgICAgIGFyZ3MuY29udGVudE91dGxp
bmVDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkNvbnRlbnRPdXRsaW5l
LnRvUHJvdG9jb2xSR0JBKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtb2Rl
ID09PSAiYWxsIiB8fCBtb2RlID09PSAicGFkZGluZyIpIHsKKyAgICAgICAgICAgICAgICBhcmdz
LnBhZGRpbmdDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LlBhZGRpbmcu
dG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgICAgICBhcmdzLnBhZGRpbmdPdXRsaW5lQ29s
b3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5QYWRkaW5nT3V0bGluZS50b1By
b3RvY29sUkdCQSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobW9kZSA9PT0g
ImFsbCIgfHwgbW9kZSA9PT0gImJvcmRlciIpIHsKKyAgICAgICAgICAgICAgICBhcmdzLmJvcmRl
ckNvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQm9yZGVyLnRvUHJvdG9j
b2xSR0JBKCk7CisgICAgICAgICAgICAgICAgYXJncy5ib3JkZXJPdXRsaW5lQ29sb3IgPSBXZWJJ
bnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Cb3JkZXJPdXRsaW5lLnRvUHJvdG9jb2xSR0JB
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtb2RlID09PSAiYWxsIiB8fCBt
b2RlID09PSAibWFyZ2luIikgeworICAgICAgICAgICAgICAgIGFyZ3MubWFyZ2luQ29sb3IgPSBX
ZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5NYXJnaW4udG9Qcm90b2NvbFJHQkEoKTsK
KyAgICAgICAgICAgICAgICBhcmdzLm1hcmdpbk91dGxpbmVDb2xvciA9IFdlYkluc3BlY3Rvci5D
b2xvci5QYWdlSGlnaGxpZ2h0Lk1hcmdpbk91dGxpbmUudG9Qcm90b2NvbFJHQkEoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0Tm9kZS5pbnZva2UoYXJn
cyk7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgRE9NQWdlbnQuaGlkZUhpZ2hsaWdodCgp
OwogICAgIH0sCiAK
</data>
<flag name="commit-queue"
          id="100410"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104665</attachid>
            <date>2011-08-22 05:59:27 -0700</date>
            <delta_ts>2011-08-22 07:24:47 -0700</delta_ts>
            <desc>[PATCH] Simplified box model parts highlighting</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>46556</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDc4NWI0ZTY4MWU0OGVhYjlkNjBmOTNlM2Y3YzcyYWZlYzAxN2Y0NDgKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgQXVnIDE5
IDIwOjU5OjI5IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE4MTVlZi4uZjQ2
MmI1NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDExLTA4LTIyICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBUaGUgaGlnaGxpZ2h0aW5nIFdJUCBBUEkgaXMgc2xpZ2h0bHkgY2hhbmdl
ZDogY2xpZW50cyB3aWxsIHNwZWNpZnkgY29sb3JzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRo
ZSBoaWdobGlnaHRlZCBvYmplY3RzLAorICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyaWMgImhp
Z2hsaWdodGluZyBtb2RlIi4gVGhpcyBhbGxvd3MgdG86CisgICAgICAgIC0gdXNlIGVudGlyZWx5
IGN1c3RvbSBjb2xvcnMgZm9yIGhpZ2hsaWdodGluZyAoYW5kIHZhcnkgdGhlbSBvdmVyIHRpbWUp
OworICAgICAgICAtIGRpc3BsYXkgYW55IGNvbWJpbmF0aW9uIG9mIGZpbGwvb3V0bGluZSBmb3Ig
dGhlIGhpZ2hsaWdodGVkIGFyZWE7CisgICAgICAgIC0gaGlnaGxpZ2h0IGFueSBjb21iaW5hdGlv
bnMgb2YgZWxlbWVudCBwYXJ0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRyYXdIaWdobGlnaHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bG9yLnByb3RvdHlwZS50b1Byb3RvY29sUkdCQSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmlj
c1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGlnaGxpZ2h0RE9NTm9kZS5oYW5kbGVNb3VzZU92ZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hp
Z2hsaWdodERPTU5vZGUuaGFuZGxlTW91c2VPdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1l
dHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hpZ2hsaWdodERPTU5vZGUpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuc2V0IGhvdmVyZWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5faGlnaGxpZ2h0UmVjdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmhpZ2hsaWdodERP
TU5vZGUpOgorCiAyMDExLTA4LTE4ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgYnJlYWtwb2ludCBtYW5h
Z2VtZW50IGNvZGUgdG8gYSBzZXBhcmF0ZSBjbGFzcyBhbmQgYWRkIHRlc3RzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAwNGJiNDQ4
Li5lOTg4MDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hs
aWdodGVyLmNwcApAQCAtMzMsOSArMzMsMTEgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJGb250Q2FjaGUuaCIKKyNpbmNsdWRlICJGb250RmFtaWx5LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJh
bmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCkBAIC00Nyw2ICs0OSwxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKK2NvbnN0IHN0YXRpYyBpbnQgcmVjdElu
ZmxhdGVQeCA9IDQ7Citjb25zdCBzdGF0aWMgaW50IGZvbnRIZWlnaHRQeCA9IDEyOworY29uc3Qg
c3RhdGljIGludCBib3JkZXJXaWR0aFB4ID0gMTsKK2NvbnN0IHN0YXRpYyBpbnQgdG9vbHRpcFBh
ZGRpbmcgPSA0OworCitjb25zdCBzdGF0aWMgaW50IGFycm93VGlwT2Zmc2V0ID0gMjA7Citjb25z
dCBzdGF0aWMgaW50IGFycm93SGVpZ2h0ID0gNzsKK2NvbnN0IHN0YXRpYyBpbnQgYXJyb3dIYWxm
V2lkdGggPSA3OworCiBQYXRoIHF1YWRUb1BhdGgoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogewog
ICAgIFBhdGggcXVhZFBhdGg7CkBAIC01OCwxNiArNjksMTUgQEAgUGF0aCBxdWFkVG9QYXRoKGNv
bnN0IEZsb2F0UXVhZCYgcXVhZCkKICAgICByZXR1cm4gcXVhZFBhdGg7CiB9CiAKLXZvaWQgZHJh
d091dGxpbmVkUXVhZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYg
cXVhZCwgY29uc3QgQ29sb3ImIGZpbGxDb2xvcikKK3ZvaWQgZHJhd091dGxpbmVkUXVhZChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgQ29sb3Im
IGZpbGxDb2xvciwgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcikKIHsKICAgICBzdGF0aWMgY29u
c3QgaW50IG91dGxpbmVUaGlja25lc3MgPSAyOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBvdXRs
aW5lQ29sb3IoNjIsIDg2LCAxODAsIDIyOCk7CiAKICAgICBQYXRoIHF1YWRQYXRoID0gcXVhZFRv
UGF0aChxdWFkKTsKIAogICAgIC8vIENsaXAgb3V0IHRoZSBxdWFkLCB0aGVuIGRyYXcgd2l0aCBh
IDJweCBzdHJva2UgdG8gZ2V0IGEgcGl4ZWwKLSAgICAvLyBvZiBvdXRsaW5lIChiZWNhdXNlIGlu
ZmxhdGluZyBhIHF1YWQgaXMgaGFyZCkKLSAgICB7CisgICAgLy8gb2Ygb3V0bGluZSAoYmVjYXVz
ZSBpbmZsYXRpbmcgYSBxdWFkIGlzIGhhcmQpLgorICAgIGlmIChvdXRsaW5lQ29sb3IuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIGNvbnRleHQuc2F2ZSgpOwogICAgICAgICBjb250ZXh0LmNsaXBPdXQo
cXVhZFBhdGgpOwogCkBAIC03OCw1MiArODgsNDMgQEAgdm9pZCBkcmF3T3V0bGluZWRRdWFkKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBDb2wK
ICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogCi0gICAgLy8gTm93IGRvIHRoZSBm
aWxsCi0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKLSAgICBjb250ZXh0LmZpbGxQYXRoKHF1YWRQYXRoKTsKKyAgICAvLyBOb3cgZG8gdGhl
IGZpbGwuCisgICAgaWYgKGZpbGxDb2xvci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29u
dGV4dC5maWxsUGF0aChxdWFkUGF0aCk7CisgICAgfQogfQogCi12b2lkIGRyYXdPdXRsaW5lZFF1
YWRXaXRoQ2xpcChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVh
ZCwgY29uc3QgRmxvYXRRdWFkJiBjbGlwUXVhZCwgY29uc3QgQ29sb3ImIGZpbGxDb2xvcikKK3Zv
aWQgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBGbG9hdFF1YWQmIGNsaXBRdWFkLCBjb25zdCBDb2xv
ciYgZmlsbENvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKQogewogICAgIGNvbnRleHQu
c2F2ZSgpOwogICAgIFBhdGggY2xpcFF1YWRQYXRoID0gcXVhZFRvUGF0aChjbGlwUXVhZCk7CiAg
ICAgY29udGV4dC5jbGlwT3V0KGNsaXBRdWFkUGF0aCk7Ci0gICAgZHJhd091dGxpbmVkUXVhZChj
b250ZXh0LCBxdWFkLCBmaWxsQ29sb3IpOworICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwg
cXVhZCwgZmlsbENvbG9yLCBvdXRsaW5lQ29sb3IpOwogICAgIGNvbnRleHQucmVzdG9yZSgpOwog
fQogCi12b2lkIGRyYXdIaWdobGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFF1YWQmIGNvbnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQmIHBhZGRpbmdRdWFk
LCBjb25zdCBGbG9hdFF1YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgbWFyZ2luUXVh
ZCwgRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNb2RlIG1vZGUpCit2b2lkIGRyYXdIaWdo
bGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIGNv
bnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQmIHBhZGRpbmdRdWFkLCBjb25zdCBGbG9hdFF1YWQm
IGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgbWFyZ2luUXVhZCwgSGlnaGxpZ2h0RGF0YSog
aGlnaGxpZ2h0RGF0YSkKIHsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgY29udGVudEJveENvbG9y
KDEyNSwgMTczLCAyMTcsIDEyOCk7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIHBhZGRpbmdCb3hD
b2xvcigxMjUsIDE3MywgMjE3LCAxNjApOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBib3JkZXJC
b3hDb2xvcigxMjUsIDE3MywgMjE3LCAxOTIpOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBtYXJn
aW5Cb3hDb2xvcigxMjUsIDE3MywgMjE3LCAyMjgpOwotCi0gICAgRmxvYXRRdWFkIGNsaXBRdWFk
OwotICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0TWFyZ2luIHx8
IChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsICYmIG1hcmdpblF1YWQg
IT0gYm9yZGVyUXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRl
eHQsIG1hcmdpblF1YWQsIGJvcmRlclF1YWQsIG1hcmdpbkJveENvbG9yKTsKLSAgICAgICAgY2xp
cFF1YWQgPSBib3JkZXJRdWFkOwotICAgIH0KLSAgICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxp
Z2h0ZXI6OkhpZ2hsaWdodEJvcmRlciB8fCAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6Okhp
Z2hsaWdodEFsbCAmJiBib3JkZXJRdWFkICE9IHBhZGRpbmdRdWFkKSkgewotICAgICAgICBkcmF3
T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGJv
cmRlckJveENvbG9yKTsKLSAgICAgICAgY2xpcFF1YWQgPSBwYWRkaW5nUXVhZDsKLSAgICB9Ci0g
ICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRQYWRkaW5nIHx8ICht
b2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsICYmIHBhZGRpbmdRdWFkICE9
IGNvbnRlbnRRdWFkKSkgewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4
dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBwYWRkaW5nQm94Q29sb3IpOwotICAgICAgICBj
bGlwUXVhZCA9IGNvbnRlbnRRdWFkOwotICAgIH0KLSAgICBpZiAobW9kZSA9PSBET01Ob2RlSGln
aGxpZ2h0ZXI6OkhpZ2hsaWdodENvbnRlbnQgfHwgbW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6
OkhpZ2hsaWdodEFsbCkKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBjb250ZW50
UXVhZCwgY29udGVudEJveENvbG9yKTsKLSAgICBlbHNlCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1
YWRXaXRoQ2xpcChjb250ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNvbnRlbnRCb3hDb2xvcik7
CisgICAgYm9vbCBoYXNNYXJnaW4gPSBoaWdobGlnaHREYXRhLT5tYXJnaW4gIT0gQ29sb3I6OnRy
YW5zcGFyZW50IHx8IGhpZ2hsaWdodERhdGEtPm1hcmdpbk91dGxpbmUgIT0gQ29sb3I6OnRyYW5z
cGFyZW50OworICAgIGJvb2wgaGFzQm9yZGVyID0gaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyICE9IENv
bG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHREYXRhLT5ib3JkZXJPdXRsaW5lICE9IENvbG9y
Ojp0cmFuc3BhcmVudDsKKyAgICBib29sIGhhc1BhZGRpbmcgPSBoaWdobGlnaHREYXRhLT5wYWRk
aW5nICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHREYXRhLT5wYWRkaW5nT3V0bGlu
ZSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNDb250ZW50ID0gaGlnaGxpZ2h0
RGF0YS0+Y29udGVudCAhPSBDb2xvcjo6dHJhbnNwYXJlbnQgfHwgaGlnaGxpZ2h0RGF0YS0+Y29u
dGVudE91dGxpbmUgIT0gQ29sb3I6OnRyYW5zcGFyZW50OworCisgICAgaWYgKGhhc01hcmdpbiAm
JiAoIWhhc0JvcmRlciB8fCBtYXJnaW5RdWFkICE9IGJvcmRlclF1YWQpKQorICAgICAgICBkcmF3
T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgbWFyZ2luUXVhZCwgYm9yZGVyUXVhZCwgaGln
aGxpZ2h0RGF0YS0+bWFyZ2luLCBoaWdobGlnaHREYXRhLT5tYXJnaW5PdXRsaW5lKTsKKyAgICBp
ZiAoaGFzQm9yZGVyICYmICghaGFzUGFkZGluZyB8fCBib3JkZXJRdWFkICE9IHBhZGRpbmdRdWFk
KSkKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQs
IHBhZGRpbmdRdWFkLCBoaWdobGlnaHREYXRhLT5ib3JkZXIsIGhpZ2hsaWdodERhdGEtPmJvcmRl
ck91dGxpbmUpOworICAgIGlmIChoYXNQYWRkaW5nICYmICghaGFzQ29udGVudCB8fCBwYWRkaW5n
UXVhZCAhPSBjb250ZW50UXVhZCkpCisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChj
b250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1YWQsIGhpZ2hsaWdodERhdGEtPnBhZGRpbmcs
IGhpZ2hsaWdodERhdGEtPnBhZGRpbmdPdXRsaW5lKTsKKyAgICBpZiAoaGFzQ29udGVudCkKKyAg
ICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0RGF0
YS0+Y29udGVudCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUpOwogfQogCi12b2lkIGRy
YXdIaWdobGlnaHRGb3JMaW5lQm94ZXNPclNWR1JlbmRlcmVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIGxpbmVCb3hRdWFkcykKK3ZvaWQgZHJhd0hp
Z2hsaWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgbGluZUJveFF1YWRzLCBIaWdobGlnaHREYXRhKiBo
aWdobGlnaHREYXRhKQogewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBsaW5lQm94Q29sb3IoMTI1
LCAxNzMsIDIxNywgMTI4KTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZUJveFF1
YWRzLnNpemUoKTsgKytpKQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGxpbmVC
b3hRdWFkc1tpXSwgbGluZUJveENvbG9yKTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250
ZXh0LCBsaW5lQm94UXVhZHNbaV0sIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQsIGhpZ2hsaWdodERh
dGEtPmNvbnRlbnRPdXRsaW5lKTsKIH0KIAogaW5saW5lIExheW91dFNpemUgZnJhbWVUb01haW5G
cmFtZU9mZnNldChGcmFtZSogZnJhbWUpCkBAIC0xMzIsNTggKzEzMywxMzcgQEAgaW5saW5lIExh
eW91dFNpemUgZnJhbWVUb01haW5GcmFtZU9mZnNldChGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJu
IHRvTGF5b3V0U2l6ZShtYWluRnJhbWVQb2ludCk7CiB9CiAKK2ludCBkcmF3U3Vic3RyaW5nKGNv
bnN0IFRleHRSdW4mIGdsb2JhbFRleHRSdW4sIGludCBvZmZzZXQsIGludCBsZW5ndGgsIGNvbnN0
IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0IEZvbnQmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgdGl0bGVSZWN0KQoreworICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKHRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5kcmF3
VGV4dChmb250LCBnbG9iYWxUZXh0UnVuLCBMYXlvdXRQb2ludCh0aXRsZVJlY3QueCgpICsgcmVj
dEluZmxhdGVQeCwgdGl0bGVSZWN0LnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSks
IG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKTsKKyAgICByZXR1cm4gb2Zmc2V0ICsgbGVuZ3RoOwor
fQorCitpbnQgY2FsY3VsYXRlQXJyb3dUaXBYKGNvbnN0IExheW91dFJlY3QmIGFuY2hvckJveCwg
Y29uc3QgTGF5b3V0UmVjdCYgdGl0bGVSZWN0KQoreworICAgIGludCBhbmNob3JYID0gYW5jaG9y
Qm94LngoKTsKKworICAgIC8vIENoZWNrIGZvciBoZWF2aWx5IG1pc2FsaWduZWQgdG9vbHRpcCBm
aXJzdC4KKyAgICBpZiAodGl0bGVSZWN0LngoKSA+IGFuY2hvckJveC5tYXhYKCkpCisgICAgICAg
IHJldHVybiB0aXRsZVJlY3QueCgpICsgYXJyb3dIYWxmV2lkdGg7CisKKyAgICBpZiAodGl0bGVS
ZWN0Lm1heFgoKSA8IGFuY2hvclgpCisgICAgICAgIHJldHVybiB0aXRsZVJlY3QubWF4WCgpIC0g
YXJyb3dIYWxmV2lkdGg7CisKKyAgICBpbnQgeCA9IHRpdGxlUmVjdC54KCkgKyBhcnJvd1RpcE9m
ZnNldDsKKyAgICBpZiAoeCA8IGFuY2hvclgpCisgICAgICAgIHggPSBhbmNob3JYICsgYXJyb3dU
aXBPZmZzZXQ7CisgICAgaWYgKHggPiB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGgp
CisgICAgICAgIHggPSB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGg7CisKKyAgICBy
ZXR1cm4geDsKK30KKwordm9pZCBzZXRVcEZvbnRGYW1pbGllcyhGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2V0dGluZ3MqIHNldHRpbmdzKQoreworI2RlZmluZSBU
T09MVElQX0ZPTlRfRkFNSUxJRVMoc2l6ZSwgLi4uKSBcCitzdGF0aWMgdW5zaWduZWQgdG9vbHRp
cEZvbnRGYWNlU2l6ZSA9IHNpemU7XAorc3RhdGljIGNoYXIqIHRvb2x0aXBGb250RmFjZVtdID0g
eyBfX1ZBX0FSR1NfXyB9OworCisjaWYgT1MoV0lORE9XUykKK1RPT0xUSVBfRk9OVF9GQU1JTElF
UygyLCAiQ29uc29sYXMiLCAiTHVjaWRhIENvbnNvbGUiKQorI2VsaWYgT1MoVU5JWCkKK1RPT0xU
SVBfRk9OVF9GQU1JTElFUygxLCAiZGVqYXZ1IHNhbnMgbW9ubyIpCisjZWxpZiBPUyhNQUNfT1Nf
WCkKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygyLCAiTWVubG8iLCAiTW9uYWNvIikKKyNlbmRpZgor
Ly8gSW4gdGhlIGRlZmF1bHQgY2FzZSwgd2UgZ2V0IHRoZSBzZXR0aW5ncy1wcm92aWRlZCBtb25v
c3BhY2UgZm9udC4KKworI3VuZGVmIFRPT0xUSVBfRk9OVF9GQU1JTElFUworCisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBmaXhlZEZvbnRGYW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5
KCk7CisgICAgaWYgKCFmaXhlZEZvbnRGYW1pbHkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNlRmFt
aWx5KTsKKyAgICAgICAgQXRvbWljU3RyaW5nIGZhY2U7CisgICAgICAgIEZvbnRGYW1pbHkqIGN1
cnJlbnRGYW1pbHkgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9vbHRp
cEZvbnRGYWNlU2l6ZTsgKytpKSB7CisgICAgICAgICAgICBmYWNlID0gQXRvbWljU3RyaW5nKHRv
b2x0aXBGb250RmFjZVtpXSk7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRGYW1pbHkpIHsKKyAg
ICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoZmFj
ZSk7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkuYXBwZW5k
RmFtaWx5KDApOworICAgICAgICAgICAgICAgIGN1cnJlbnRGYW1pbHkgPSAmZm9udERlc2NyaXB0
aW9uLmZpcnN0RmFtaWx5KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdGYW1pbHkgPSBTaGFyZWRGb250RmFtaWx5Ojpj
cmVhdGUoKTsKKyAgICAgICAgICAgICAgICBuZXdGYW1pbHktPnNldEZhbWlseShmYWNlKTsKKyAg
ICAgICAgICAgICAgICBjdXJyZW50RmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3RmFtaWx5KTsKKyAg
ICAgICAgICAgICAgICBjdXJyZW50RmFtaWx5ID0gbmV3RmFtaWx5LmdldCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdGYW1p
bHkgPSBTaGFyZWRGb250RmFtaWx5OjpjcmVhdGUoKTsKKyAgICAgICAgbmV3RmFtaWx5LT5zZXRG
YW1pbHkoZml4ZWRGb250RmFtaWx5KTsKKyAgICAgICAgY3VycmVudEZhbWlseS0+YXBwZW5kRmFt
aWx5KG5ld0ZhbWlseSk7CisgICAgICAgIGN1cnJlbnRGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7
CisgICAgfQorfQorCiB2b2lkIGRyYXdFbGVtZW50VGl0bGUoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBOb2RlKiBub2RlLCBjb25zdCBMYXlvdXRSZWN0JiBib3VuZGluZ0JveCwgY29uc3QgTGF5
b3V0UmVjdCYgYW5jaG9yQm94LCBjb25zdCBGbG9hdFJlY3QmIG92ZXJsYXlSZWN0LCBXZWJDb3Jl
OjpTZXR0aW5ncyogc2V0dGluZ3MpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCByZWN0SW5mbGF0
ZVB4ID0gNDsKLSAgICBzdGF0aWMgY29uc3QgaW50IGZvbnRIZWlnaHRQeCA9IDEyOwotICAgIHN0
YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQeCA9IDE7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDb2xvciwgdG9vbHRpcEJhY2tncm91bmRDb2xvciwgKDI1NSwgMjU1LCAxOTQsIDI1NSkpOwot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRvb2x0aXBCb3JkZXJDb2xvciwgKENvbG9y
OjpibGFjaykpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRvb2x0aXBGb250Q29s
b3IsIChDb2xvcjo6YmxhY2spKTsKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGJh
Y2tncm91bmRDb2xvciwgKDI1NSwgMjU1LCAxOTQsIDI1NSkpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ29sb3IsIHRhZ0NvbG9yLCAoMTM2LCAxOCwgMTI4KSk7IC8vIFNhbWUgYXMgLndlYmtp
dC1odG1sLXRhZy4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBhdHRyQ29sb3IsICgy
NiwgMjYsIDE2NikpOyAvLyBTYW1lIGFzIC53ZWJraXQtaHRtbC1hdHRyaWJ1dGUtdmFsdWUuCisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgbm9ybWFsQ29sb3IsIChDb2xvcjo6YmxhY2sp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBweEFuZEJvcmRlckNvbG9yLCAoMTI4
LCAxMjgsIDEyOCkpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHB4U3RyaW5n
LCAoInB4IikpOworICAgIGNvbnN0IHN0YXRpYyBVQ2hhciB0aW1lc1VDaGFyW10gPSB7IDB4MDBE
NywgMCB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0aW1lc1N0cmluZywgKHRp
bWVzVUNoYXIpKTsgLy8gJnRpbWVzOyBzdHJpbmcKKwogICAgIEZvbnRDYWNoZVB1cmdlUHJldmVu
dGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKICAgICBib29sIGlzWEhUTUwgPSBlbGVtZW50LT5k
b2N1bWVudCgpLT5pc1hIVE1MRG9jdW1lbnQoKTsKLSAgICBTdHJpbmcgbm9kZVRpdGxlID0gaXNY
SFRNTCA/IGVsZW1lbnQtPm5vZGVOYW1lKCkgOiBlbGVtZW50LT5ub2RlTmFtZSgpLmxvd2VyKCk7
CisgICAgU3RyaW5nIG5vZGVUaXRsZShpc1hIVE1MID8gZWxlbWVudC0+bm9kZU5hbWUoKSA6IGVs
ZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKSk7CisgICAgdW5zaWduZWQgdGFnTmFtZUxlbmd0aCA9
IG5vZGVUaXRsZS5sZW5ndGgoKTsKKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWRWYWx1ZSA9
IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAgdW5zaWduZWQgaWRTdHJpbmdMZW5ndGgg
PSAwOworICAgIFN0cmluZyBpZFN0cmluZzsKICAgICBpZiAoIWlkVmFsdWUuaXNOdWxsKCkgJiYg
IWlkVmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5vZGVUaXRsZSArPSAiIyI7CiAgICAgICAg
IG5vZGVUaXRsZSArPSBpZFZhbHVlOworICAgICAgICBpZFN0cmluZ0xlbmd0aCA9IDEgKyBpZFZh
bHVlLmxlbmd0aCgpOwogICAgIH0KKworICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xh
c3NOYW1lczsKKyAgICB1bnNpZ25lZCBjbGFzc2VzU3RyaW5nTGVuZ3RoID0gMDsKICAgICBpZiAo
ZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkgewogICAg
ICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzU3RyaW5nID0gc3RhdGljX2Nh
c3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5jbGFzc05hbWVzKCk7CiAgICAgICAgIHNpemVf
dCBjbGFzc05hbWVDb3VudCA9IGNsYXNzTmFtZXNTdHJpbmcuc2l6ZSgpOwotICAgICAgICBpZiAo
Y2xhc3NOYW1lQ291bnQpIHsKLSAgICAgICAgICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiB1c2Vk
Q2xhc3NOYW1lczsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1l
Q291bnQ7ICsraSkgewotICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NO
YW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKLSAgICAgICAgICAgICAgICBpZiAodXNlZENsYXNz
TmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNsYXNzTmFtZSk7Ci0gICAgICAg
ICAgICAgICAgbm9kZVRpdGxlICs9ICIuIjsKLSAgICAgICAgICAgICAgICBub2RlVGl0bGUgKz0g
Y2xhc3NOYW1lOwotICAgICAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNsYXNzTmFtZUNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Y2xhc3NOYW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKKyAgICAgICAgICAgIGlmICh1c2VkQ2xh
c3NOYW1lcy5jb250YWlucyhjbGFzc05hbWUpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNsYXNzTmFtZSk7CisgICAgICAgICAgICBu
b2RlVGl0bGUgKz0gIi4iOworICAgICAgICAgICAgbm9kZVRpdGxlICs9IGNsYXNzTmFtZTsKKyAg
ICAgICAgICAgIGNsYXNzZXNTdHJpbmdMZW5ndGggKz0gMSArIGNsYXNzTmFtZS5sZW5ndGgoKTsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIG5vZGVUaXRsZSArPSAiIFsiOwotICAgIG5vZGVUaXRs
ZSArPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC53aWR0aCgpKTsKLSAgICBub2RlVGl0bGUu
YXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPigweDAwRDcpKTsgLy8gJnRpbWVzOwotICAgIG5vZGVU
aXRsZSArPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgbm9kZVRp
dGxlICs9ICJdIjsKKyAgICBTdHJpbmcgd2lkdGhOdW1iZXJQYXJ0ID0gIiAiICsgU3RyaW5nOjpu
dW1iZXIoYm91bmRpbmdCb3gud2lkdGgoKSk7CisgICAgbm9kZVRpdGxlICs9IHdpZHRoTnVtYmVy
UGFydCArIHB4U3RyaW5nOworICAgIG5vZGVUaXRsZSArPSB0aW1lc1N0cmluZzsKKyAgICBTdHJp
bmcgaGVpZ2h0TnVtYmVyUGFydCA9IFN0cmluZzo6bnVtYmVyKGJvdW5kaW5nQm94LmhlaWdodCgp
KTsKKyAgICBub2RlVGl0bGUgKz0gaGVpZ2h0TnVtYmVyUGFydCArIHB4U3RyaW5nOwogCiAgICAg
Rm9udERlc2NyaXB0aW9uIGRlc2M7Ci0gICAgRm9udEZhbWlseSBmYW1pbHk7Ci0gICAgZmFtaWx5
LnNldEZhbWlseShzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KCkpOwotICAgIGRlc2Muc2V0RmFt
aWx5KGZhbWlseSk7CisgICAgZGVzYy5zZXRSZW5kZXJpbmdNb2RlKHNldHRpbmdzLT5mb250UmVu
ZGVyaW5nTW9kZSgpKTsKICAgICBkZXNjLnNldENvbXB1dGVkU2l6ZShmb250SGVpZ2h0UHgpOwor
ICAgIHNldFVwRm9udEZhbWlsaWVzKGRlc2MsIHNldHRpbmdzKTsKICAgICBGb250IGZvbnQgPSBG
b250KGRlc2MsIDAsIDApOwogICAgIGZvbnQudXBkYXRlKDApOwogCiAgICAgVGV4dFJ1biBub2Rl
VGl0bGVSdW4obm9kZVRpdGxlKTsKICAgICBMYXlvdXRQb2ludCB0aXRsZUJhc2VQb2ludCA9IExh
eW91dFBvaW50KGFuY2hvckJveC54KCksIGFuY2hvckJveC5tYXhZKCkgLSAxKTsKICAgICB0aXRs
ZUJhc2VQb2ludC5tb3ZlKHJlY3RJbmZsYXRlUHgsIHJlY3RJbmZsYXRlUHgpOwotICAgIExheW91
dFJlY3QgdGl0bGVSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmb250LnNlbGVjdGlvblJlY3RGb3JU
ZXh0KG5vZGVUaXRsZVJ1biwgdGl0bGVCYXNlUG9pbnQsIGZvbnRIZWlnaHRQeCkpOworICAgIExh
eW91dFJlY3QgdGl0bGVSZWN0ID0gZW5jbG9zaW5nTGF5b3V0UmVjdChmb250LnNlbGVjdGlvblJl
Y3RGb3JUZXh0KG5vZGVUaXRsZVJ1biwgdGl0bGVCYXNlUG9pbnQsIGZvbnRIZWlnaHRQeCkpOwog
ICAgIHRpdGxlUmVjdC5pbmZsYXRlKHJlY3RJbmZsYXRlUHgpOwogCiAgICAgLy8gVGhlIGluaXRp
YWwgb2Zmc2V0cyBuZWVkZWQgdG8gY29tcGVuc2F0ZSBmb3IgYSAxcHgtdGhpY2sgYm9yZGVyIHN0
cm9rZSAod2hpY2ggaXMgbm90IGEgcGFydCBvZiB0aGUgcmVjdGFuZ2xlKS4KQEAgLTIxMSwxOSAr
MjkxLDQ5IEBAIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IE5vZGUqIG5vZGUsIGNvbnN0IExheW91dFJlY3QmIGJvCiAgICAgICAgIGR5ID0gb3ZlcmxheVJl
Y3QueSgpIC0gdGl0bGVSZWN0LnkoKSArIGJvcmRlcldpZHRoUHg7CiAKICAgICB0aXRsZVJlY3Qu
bW92ZShkeCwgZHkpOwotICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodG9vbHRpcEJvcmRlckNv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKworICAgIGJvb2wgaXNBcnJvd0F0VG9wID0gdGl0
bGVSZWN0LnkoKSA+IGFuY2hvckJveC55KCk7CisgICAgdGl0bGVSZWN0Lm1vdmUoMCwgdG9vbHRp
cFBhZGRpbmcgKiAoaXNBcnJvd0F0VG9wID8gMSA6IC0xKSk7CisKKyAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKHB4QW5kQm9yZGVyQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGJvcmRlcldpZHRoUHgpOwotICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CiAgICAgY29udGV4dC5kcmF3UmVjdCh0aXRsZVJlY3QpOwotICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKHRvb2x0aXBGb250Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGNv
bnRleHQuZHJhd1RleHQoZm9udCwgbm9kZVRpdGxlUnVuLCBMYXlvdXRQb2ludCh0aXRsZVJlY3Qu
eCgpICsgcmVjdEluZmxhdGVQeCwgdGl0bGVSZWN0LnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5o
ZWlnaHQoKSkpOworCisgICAgeworICAgICAgICBpbnQgYXJyb3dUaXBYID0gY2FsY3VsYXRlQXJy
b3dUaXBYKGFuY2hvckJveCwgdGl0bGVSZWN0KTsKKyAgICAgICAgRmxvYXRQb2ludCBhcnJvd1Bv
aW50c1szXTsKKyAgICAgICAgZmxvYXQgYXJyb3dCYXNlWSA9IGlzQXJyb3dBdFRvcCA/IHRpdGxl
UmVjdC55KCkgOiB0aXRsZVJlY3QubWF4WSgpOworICAgICAgICBhcnJvd1BvaW50c1swXSA9IEZs
b2F0UG9pbnQoYXJyb3dUaXBYIC0gYXJyb3dIYWxmV2lkdGgsIGFycm93QmFzZVkpOworICAgICAg
ICBhcnJvd1BvaW50c1sxXSA9IEZsb2F0UG9pbnQoYXJyb3dUaXBYLCBhcnJvd0Jhc2VZICsgYXJy
b3dIZWlnaHQgKiAoaXNBcnJvd0F0VG9wID8gLTEgOiAxKSk7CisgICAgICAgIGFycm93UG9pbnRz
WzJdID0gRmxvYXRQb2ludChhcnJvd1RpcFggKyBhcnJvd0hhbGZXaWR0aCwgYXJyb3dCYXNlWSk7
CisgICAgICAgIGNvbnRleHQuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3dQb2ludHMpOworCisg
ICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25l
c3MoYm9yZGVyV2lkdGhQeCArIDEpOworICAgICAgICBMYXlvdXRQb2ludCBzdGFydFBvaW50ID0g
TGF5b3V0UG9pbnQoYXJyb3dQb2ludHNbMF0ueCgpICsgMSwgYXJyb3dQb2ludHNbMF0ueSgpKTsK
KyAgICAgICAgTGF5b3V0UG9pbnQgZW5kUG9pbnQgPSBMYXlvdXRQb2ludChhcnJvd1BvaW50c1sy
XS54KCkgLSAxLCBhcnJvd1BvaW50c1syXS55KCkpOworICAgICAgICBjb250ZXh0LmRyYXdMaW5l
KHN0YXJ0UG9pbnQsIGVuZFBvaW50KTsKKyAgICB9CisKKyAgICBpbnQgY3VycmVudFBvcyA9IDA7
CisgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9z
LCB0YWdOYW1lTGVuZ3RoLCB0YWdDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAg
ICBpZiAoaWRTdHJpbmdMZW5ndGgpCisgICAgICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5n
KG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgaWRTdHJpbmdMZW5ndGgsIGF0dHJDb2xvciwgZm9u
dCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBpZiAoY2xhc3Nlc1N0cmluZ0xlbmd0aCkKKyAg
ICAgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9z
LCBjbGFzc2VzU3RyaW5nTGVuZ3RoLCBhdHRyQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVj
dCk7CisgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50
UG9zLCB3aWR0aE51bWJlclBhcnQubGVuZ3RoKCksIG5vcm1hbENvbG9yLCBmb250LCBjb250ZXh0
LCB0aXRsZVJlY3QpOworICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1
biwgY3VycmVudFBvcywgcHhTdHJpbmcubGVuZ3RoKCkgKyB0aW1lc1N0cmluZy5sZW5ndGgoKSwg
cHhBbmRCb3JkZXJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBjdXJyZW50
UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIGhlaWdodE51bWJl
clBhcnQubGVuZ3RoKCksIG5vcm1hbENvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOwor
ICAgIGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBweFN0cmluZy5sZW5n
dGgoKSwgcHhBbmRCb3JkZXJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKIH0KIAog
fSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIg
ewogCi12b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9k
ZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQordm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdo
dERhdGEpCiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
CiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7
CkBAIC0yNDAsNyArMzUwLDcgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodE1vZGUgbW9kZSkKIAogICAgIEZyYW1l
VmlldyogdmlldyA9IGNvbnRhaW5pbmdGcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygp
OwogICAgIEZsb2F0UmVjdCBvdmVybGF5UmVjdCA9IHZpZXctPnZpc2libGVDb250ZW50UmVjdCgp
OwotICAgIGlmICghb3ZlcmxheVJlY3QuY29udGFpbnMoYm91bmRpbmdCb3gpICYmICFib3VuZGlu
Z0JveC5jb250YWlucyhlbmNsb3NpbmdJbnRSZWN0KG92ZXJsYXlSZWN0KSkpCisgICAgaWYgKCFv
dmVybGF5UmVjdC5jb250YWlucyhib3VuZGluZ0JveCkgJiYgIWJvdW5kaW5nQm94LmNvbnRhaW5z
KGVuY2xvc2luZ0xheW91dFJlY3Qob3ZlcmxheVJlY3QpKSkKICAgICAgICAgb3ZlcmxheVJlY3Qg
PSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtb3Zl
cmxheVJlY3QueCgpLCAtb3ZlcmxheVJlY3QueSgpKTsKIApAQCAtMjY2LDcgKzM3Niw2IEBAIHZv
aWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2Rl
LCBIaWdobGlnaHRNb2RlIG1vZGUpCiAgICAgICAgIExheW91dFJlY3QgbWFyZ2luQm94KGJvcmRl
ckJveC54KCkgLSByZW5kZXJCb3gtPm1hcmdpbkxlZnQoKSwgYm9yZGVyQm94LnkoKSAtIHJlbmRl
ckJveC0+bWFyZ2luVG9wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJveC53
aWR0aCgpICsgcmVuZGVyQm94LT5tYXJnaW5MZWZ0KCkgKyByZW5kZXJCb3gtPm1hcmdpblJpZ2h0
KCksIGJvcmRlckJveC5oZWlnaHQoKSArIHJlbmRlckJveC0+bWFyZ2luVG9wKCkgKyByZW5kZXJC
b3gtPm1hcmdpbkJvdHRvbSgpKTsKIAotCiAgICAgICAgIEZsb2F0UXVhZCBhYnNDb250ZW50UXVh
ZCA9IHJlbmRlckJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoY29udGVudEJveCkp
OwogICAgICAgICBGbG9hdFF1YWQgYWJzUGFkZGluZ1F1YWQgPSByZW5kZXJCb3gtPmxvY2FsVG9B
YnNvbHV0ZVF1YWQoRmxvYXRSZWN0KHBhZGRpbmdCb3gpKTsKICAgICAgICAgRmxvYXRRdWFkIGFi
c0JvcmRlclF1YWQgPSByZW5kZXJCb3gtPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGJv
cmRlckJveCkpOwpAQCAtMjc5LDcgKzM4OCw3IEBAIHZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBIaWdobGlnaHRNb2RlIG1vZGUpCiAK
ICAgICAgICAgdGl0bGVBbmNob3JCb3ggPSBhYnNNYXJnaW5RdWFkLmVuY2xvc2luZ0JvdW5kaW5n
Qm94KCk7CiAKLSAgICAgICAgZHJhd0hpZ2hsaWdodEZvckJveChjb250ZXh0LCBhYnNDb250ZW50
UXVhZCwgYWJzUGFkZGluZ1F1YWQsIGFic0JvcmRlclF1YWQsIGFic01hcmdpblF1YWQsIG1vZGUp
OworICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yQm94KGNvbnRleHQsIGFic0NvbnRlbnRRdWFkLCBh
YnNQYWRkaW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgaGlnaGxpZ2h0RGF0
YSk7CiAgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUoKSB8fCBpc1NWR1Jl
bmRlcmVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2hvdyBtYXJnaW5zL3BhZGRp
bmcvYm9yZGVyIGZvciBpbmxpbmVzLgogICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiBsaW5lQm94
UXVhZHM7CkBAIC0yODcsNyArMzk2LDcgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodE1vZGUgbW9kZSkKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVCb3hRdWFkcy5zaXplKCk7ICsraSkKICAg
ICAgICAgICAgIGxpbmVCb3hRdWFkc1tpXSArPSBtYWluRnJhbWVPZmZzZXQ7CiAKLSAgICAgICAg
ZHJhd0hpZ2hsaWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoY29udGV4dCwgbGluZUJveFF1
YWRzKTsKKyAgICAgICAgZHJhd0hpZ2hsaWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoY29u
dGV4dCwgbGluZUJveFF1YWRzLCBoaWdobGlnaHREYXRhKTsKICAgICB9CiAKICAgICAvLyBEcmF3
IG5vZGUgdGl0bGUgaWYgbmVjZXNzYXJ5LgpAQCAtMjk1LDEyICs0MDQsMTEgQEAgdm9pZCBkcmF3
Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hs
aWdodE1vZGUgbW9kZSkKICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgV2ViQ29yZTo6U2V0dGluZ3MqIHNldHRpbmdzID0gY29udGFpbmluZ0Zy
YW1lLT5zZXR0aW5ncygpOwotICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGln
aGxpZ2h0QWxsKQotICAgICAgICBkcmF3RWxlbWVudFRpdGxlKGNvbnRleHQsIG5vZGUsIGJvdW5k
aW5nQm94LCB0aXRsZUFuY2hvckJveCwgb3ZlcmxheVJlY3QsIHNldHRpbmdzKTsKKyAgICBpZiAo
aGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8pIHsKKyAgICAgICAgZHJhd0VsZW1lbnRUaXRsZShjb250
ZXh0LCBub2RlLCBib3VuZGluZ0JveCwgdGl0bGVBbmNob3JCb3gsIG92ZXJsYXlSZWN0LCBjb250
YWluaW5nRnJhbWUtPnNldHRpbmdzKCkpOwogfQogCi12b2lkIGRyYXdSZWN0SGlnaGxpZ2h0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgRG9jdW1lbnQqIGRvY3VtZW50LCBJbnRSZWN0KiByZWN0
KQordm9pZCBkcmF3UmVjdEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3Vt
ZW50KiBkb2N1bWVudCwgTGF5b3V0UmVjdCogcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25z
dCBDb2xvciYgb3V0bGluZUNvbG9yKQogewogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTMxMCwxNCArNDE4LDEyIEBAIHZvaWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBEb2N1bWVudCogZG9jdW1lbnQsIEludFJlY3QqIHJlCiAgICAg
Y29udGV4dC50cmFuc2xhdGUoLW92ZXJsYXlSZWN0LngoKSwgLW92ZXJsYXlSZWN0LnkoKSk7CiAK
ICAgICBzdGF0aWMgY29uc3QgaW50IG91dGxpbmVUaGlja25lc3MgPSAyOwotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ29sb3IsIG91dGxpbmVDb2xvciwgKDI1NSwgMCwgMCwgMjI4KSk7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgZmlsbENvbG9yLCAoMjU1LCAwLCAwLCAyMCkpOwog
CiAgICAgUGF0aCBxdWFkUGF0aCA9IHF1YWRUb1BhdGgoRmxvYXRSZWN0KCpyZWN0KSk7CiAKICAg
ICAvLyBDbGlwIG91dCB0aGUgcXVhZCwgdGhlbiBkcmF3IHdpdGggYSAycHggc3Ryb2tlIHRvIGdl
dCBhIHBpeGVsCiAgICAgLy8gb2Ygb3V0bGluZSAoYmVjYXVzZSBpbmZsYXRpbmcgYSBxdWFkIGlz
IGhhcmQpCi0gICAgeworICAgIGlmIChvdXRsaW5lQ29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNvbnRleHQuc2F2ZSgpOwogICAgICAgICBjb250ZXh0LmNsaXBPdXQocXVhZFBhdGgpOwogCkBA
IC0zMjksOCArNDM1LDEwIEBAIHZvaWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBEb2N1bWVudCogZG9jdW1lbnQsIEludFJlY3QqIHJlCiAgICAgfQogCiAgICAg
Ly8gTm93IGRvIHRoZSBmaWxsCi0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBjb250ZXh0LmZpbGxQYXRoKHF1YWRQYXRoKTsKKyAg
ICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUGF0aChxdWFk
UGF0aCk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaAppbmRleCAzMGQ3
NzYwLi5iYWMzZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9k
ZUhpZ2hsaWdodGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdo
bGlnaHRlci5oCkBAIC0yOSwyNiArMjksMzMgQEAKICNpZm5kZWYgRE9NTm9kZUhpZ2hsaWdodGVy
X2gKICNkZWZpbmUgRE9NTm9kZUhpZ2hsaWdodGVyX2gKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29sb3I7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwogCi1uYW1l
c3BhY2UgRE9NTm9kZUhpZ2hsaWdodGVyIHsKLQotZW51bSBIaWdobGlnaHRNb2RlIHsKLSAgICBI
aWdobGlnaHRBbGwsCi0gICAgSGlnaGxpZ2h0Q29udGVudCwKLSAgICBIaWdobGlnaHRQYWRkaW5n
LAotICAgIEhpZ2hsaWdodEJvcmRlciwKLSAgICBIaWdobGlnaHRNYXJnaW4KK3N0cnVjdCBIaWdo
bGlnaHREYXRhIHsKKyAgICBDb2xvciBjb250ZW50OworICAgIENvbG9yIGNvbnRlbnRPdXRsaW5l
OworICAgIENvbG9yIHBhZGRpbmc7CisgICAgQ29sb3IgcGFkZGluZ091dGxpbmU7CisgICAgQ29s
b3IgYm9yZGVyOworICAgIENvbG9yIGJvcmRlck91dGxpbmU7CisgICAgQ29sb3IgbWFyZ2luOwor
ICAgIENvbG9yIG1hcmdpbk91dGxpbmU7CisgICAgYm9vbCBzaG93SW5mbzsKIH07CiAKLXZvaWQg
ZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiwgTm9kZSosIEhpZ2hsaWdodE1vZGUp
OworbmFtZXNwYWNlIERPTU5vZGVIaWdobGlnaHRlciB7CisKK3ZvaWQgZHJhd05vZGVIaWdobGln
aHQoR3JhcGhpY3NDb250ZXh0JiwgTm9kZSosIEhpZ2hsaWdodERhdGEqKTsKIAotdm9pZCBkcmF3
UmVjdEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmLCBEb2N1bWVudCosIEludFJlY3QqKTsKK3Zv
aWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiwgRG9jdW1lbnQqLCBJbnRSZWN0
KiwgY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKTsKIAogfSAvLyBuYW1l
c3BhY2UgRE9NTm9kZUhpZ2hsaWdodGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgppbmRleCBkYjJiOTg4Li43ZGY3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uCkBAIC04NzEsNiArODcxLDE3IEBACiAgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibG9jYXRpb24iLCAiJHJlZiI6ICJEZWJ1Z2dlci5Mb2NhdGlvbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJIYW5kbGVyIGNvZGUgbG9jYXRpb24uIiB9CiAg
ICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRE9NIGlu
dGVyYWN0aW9uIGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIG1pcnJvciBvYmplY3RzIHRoYXQg
cmVwcmVzZW50IHRoZSBhY3R1YWwgRE9NIG5vZGVzLiBET01Ob2RlIGlzIGEgYmFzZSBub2RlIG1p
cnJvciB0eXBlLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgImlkIjogIlJHQkEiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAg
ICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiciIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHJlZCBjb21wb25l
bnQsIGluIHRoZSBbMC0yNTVdIHJhbmdlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJnIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZ3JlZW4gY29t
cG9uZW50LCBpbiB0aGUgWzAtMjU1XSByYW5nZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiYiIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJsdWUg
Y29tcG9uZW50LCBpbiB0aGUgWzAtMjU1XSByYW5nZS4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiYSIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJUaGUgYWxwaGEgY29tcG9uZW50LCBpbiB0aGUgWzAtMV0gcmFuZ2UgKGRlZmF1
bHQ6IDEpLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkEgc3RydWN0dXJlIGhvbGRpbmcgYW4gUkdCQSBjb2xvci4iCiAgICAgICAgICAgICB9
CiAgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6IFsKQEAgLTEwNDAsNyArMTA1MSw5IEBA
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjogImludGVnZXIiLCAi
ZGVzY3JpcHRpb24iOiAiWCBjb29yZGluYXRlIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInkiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlkgY29vcmRpbmF0
ZSIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImlu
dGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVjdGFuZ2xlIHdpZHRoIiB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImhlaWdodCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRp
b24iOiAiUmVjdGFuZ2xlIGhlaWdodCIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImhlaWdodCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVjdGFuZ2xlIGhl
aWdodCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb2xvciIsICIkcmVmIjog
IlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhpZ2hsaWdodCBm
aWxsIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm91dGxpbmVDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhpZ2hsaWdodCBvdXRsaW5lIGNvbG9yIChkZWZhdWx0
OiB0cmFuc3BhcmVudCkuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiSGlnaGxpZ2h0cyBnaXZlbiByZWN0YW5nbGUuIENvb3JkaW5hdGVzIGFy
ZSBhYnNvbHV0ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1haW4gZnJhbWUgdmlld3BvcnQuIgogICAg
ICAgICAgICAgfSwKQEAgLTEwNDgsNyArMTA2MSwxNSBAQAogICAgICAgICAgICAgICAgICJuYW1l
IjogImhpZ2hsaWdodE5vZGUiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJk
ZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSBub2RlIHRvIGhpZ2hsaWdodCIgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtb2RlIiwgInR5cGUiOiAic3RyaW5nIiwgImVu
dW0iOiBbImFsbCIsICJjb250ZW50IiwgInBhZGRpbmciLCAiYm9yZGVyIiwgIm1hcmdpbiJdLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJveCBtb2RlbCBjb21wb25lbnQo
cykgdG8gaGlnaGxpZ2h0IChkZWZhdWx0OiBcImFsbFwiKS4iIH0KKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzaG93SW5mbyIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24i
OiAiV2hldGhlciB0aGUgbm9kZSBpbmZvIHRvb2x0aXAgc2hvdWxkIGJlIHNob3duLiIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50Q29sb3IiLCAiJHJlZiI6ICJSR0JB
IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBjb250ZW50IGJveCBoaWdo
bGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50T3V0bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgY29udGVudCBib3ggaGlnaGxp
Z2h0IG91dGxpbmUgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAicGFkZGluZ0NvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgcGFkZGluZyBoaWdobGlnaHQgZmlsbCBj
b2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJwYWRkaW5nT3V0bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgcGFkZGluZyBoaWdobGlnaHQgb3V0bGluZSBjb2xv
ciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJib3JkZXJDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIGJvcmRlciBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJh
bnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3JkZXJPdXRs
aW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRoZSBib3JkZXIgaGlnaGxpZ2h0IG91dGxpbmUgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFy
ZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWFyZ2luQ29sb3IiLCAi
JHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBtYXJn
aW4gaGlnaGxpZ2h0IGZpbGwgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWFyZ2luT3V0bGluZUNvbG9yIiwgIiRyZWYiOiAi
UkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgbWFyZ2luIGhpZ2hs
aWdodCBvdXRsaW5lIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9CiAgICAgICAgICAg
ICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSGlnaGxpZ2h0cyBET00g
bm9kZSB3aXRoIGdpdmVuIGlkLiIKICAgICAgICAgICAgIH0sCkBAIC0xMDU5LDcgKzEwODAsOSBA
QAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImhpZ2hsaWdodEZyYW1l
IiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJmcmFtZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklk
ZW50aWZpZXIgb2YgdGhlIGZyYW1lIHRvIGhpZ2hsaWdodCIgfQorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImZyYW1lSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAi
SWRlbnRpZmllciBvZiB0aGUgZnJhbWUgdG8gaGlnaGxpZ2h0IiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImNvbnRlbnRDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGNvbnRlbnQgYm94IGhpZ2hsaWdodCBmaWxsIGNv
bG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImNvbnRlbnRPdXRsaW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBjb250ZW50IGJveCBoaWdobGlnaHQgb3V0bGluZSBj
b2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkhpZ2hsaWdodHMgb3duZXIgZWxlbWVudCBvZiB0
aGUgZnJhbWUgd2l0aCBnaXZlbiBpZC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRl
eCAyNDU2ZTE4Li43NDQxYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTk4LDYgKzk4LDM0IEBAIG5hbWVzcGFjZSBET01BZ2VudFN0
YXRlIHsKIHN0YXRpYyBjb25zdCBjaGFyIGRvY3VtZW50UmVxdWVzdGVkW10gPSAiZG9jdW1lbnRS
ZXF1ZXN0ZWQiOwogfTsKIAorc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4qIGNvbG9yT2JqZWN0KQoreworICAgIGlmICghY29sb3JPYmplY3QpCisg
ICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7CisKKyAgICBpbnQgcjsKKyAgICBpbnQg
ZzsKKyAgICBpbnQgYjsKKyAgICBib29sIHN1Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVt
YmVyKCJyIiwgJnIpOworICAgIHN1Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigi
ZyIsICZnKTsKKyAgICBzdWNjZXNzIHw9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImIiLCAm
Yik7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50
OworCisgICAgZG91YmxlIGE7CisgICAgc3VjY2VzcyA9ICgqY29sb3JPYmplY3QpLT5nZXROdW1i
ZXIoImEiLCAmYSk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gQ29sb3Iociwg
ZywgYik7CisKKyAgICAvLyBDbGFtcCBhbHBoYSB0byB0aGUgWzAuLjFdIHJhbmdlLgorICAgIGlm
IChhIDwgMCkKKyAgICAgICAgYSA9IDA7CisgICAgZWxzZSBpZiAoYSA+IDEpCisgICAgICAgIGEg
PSAxOworCisgICAgcmV0dXJuIENvbG9yKHIsIGcsIGIsIHN0YXRpY19jYXN0PGludD4oYSAqIDI1
NSkpOworfQorCiBjbGFzcyBNYXRjaEpvYiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1h
dGNoKExpc3RIYXNoU2V0PE5vZGUqPiYgcmVzdWx0Q29sbGVjdG9yKSA9IDA7CkBAIC05NzcsNyAr
MTAwNSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmZvY3VzTm9kZSgpCiAKIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgdW5zaWduZWQpCiB7Ci0gICAgaWYgKCFtX3NlYXJjaGluZ0Zvck5vZGUpCisg
ICAgaWYgKCFtX3NlYXJjaGluZ0Zvck5vZGUgfHwgIW1faGlnaGxpZ2h0RGF0YSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKQEAgLTk4NSw3
ICsxMDEzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnMKICAgICAgICAgbm9kZSA9IG5vZGUt
PnBhcmVudE5vZGUoKTsKICAgICBpZiAobm9kZSkgewogICAgICAgICBFcnJvclN0cmluZyBlcnJv
cjsKLSAgICAgICAgaGlnaGxpZ2h0KCZlcnJvciwgbm9kZSwgImFsbCIpOworICAgICAgICBoaWdo
bGlnaHQoJmVycm9yLCBub2RlKTsKICAgICB9CiB9CiAKQEAgLTEwMDUsMzYgKzEwMzMsNzAgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5n
KiwgYm9vbCBlbmFibGVkKQogICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZW5hYmxlZCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodChFcnJvclN0cmluZyosIE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdo
dChFcnJvclN0cmluZyosIE5vZGUqIG5vZGUpCiB7CisgICAgLy8gVGhpcyBtZXRob2QgcmVxdWly
ZXMgbV9oaWdobGlnaHRlZFJlY3QgdG8gaGF2ZSBiZWVuIHNldCBieSBpdHMgY2xpZW50LgogICAg
IEFTU0VSVF9BUkcobm9kZSwgbm9kZSk7CiAgICAgbV9oaWdobGlnaHRlZE5vZGUgPSBub2RlOwot
ICAgIG1faGlnaGxpZ2h0TW9kZSA9IG1vZGU7CiAgICAgbV9jbGllbnQtPmhpZ2hsaWdodCgpOwog
fQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwg
aW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgs
IGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcikKIHsKICAgICBtX2hpZ2hsaWdo
dGVkUmVjdCA9IGFkb3B0UHRyKG5ldyBJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAg
ICBtX2hpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICBt
X2hpZ2hsaWdodERhdGEtPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKKyAgICBtX2hpZ2hs
aWdodERhdGEtPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAg
IG1fY2xpZW50LT5oaWdobGlnaHQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0Tm9kZShFcnJvclN0cmluZyogZXJyb3IsIGludCBub2RlSWQsIFN0cmluZyogbW9kZSkK
LXsKLSAgICBpZiAoTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpKQotICAgICAgICBoaWdo
bGlnaHQoZXJyb3IsIG5vZGUsIG1vZGUgJiYgIW1vZGUtPmlzRW1wdHkoKSA/ICptb2RlIDogImFs
bCIpOwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKKyAgICBFcnJvclN0
cmluZyogZXJyb3IsCisgICAgaW50IG5vZGVJZCwKKyAgICBib29sIHNob3dJbmZvLAorICAgIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb250ZW50Q29sb3IsCisgICAgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbnRlbnRPdXRsaW5lQ29sb3IsCisgICAgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIHBhZGRpbmdDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogcGFkZGluZ091dGxpbmVDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogYm9yZGVyQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIGJvcmRlck91dGxpbmVDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiogbWFyZ2luQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1h
cmdpbk91dGxpbmVDb2xvcikKK3sKKyAgICBpZiAoTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2Rl
SWQpKSB7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRE
YXRhKCkpOworICAgICAgICBtX2hpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gc2hvd0luZm87Cisg
ICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29udGVudENvbG9y
KTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Io
Y29udGVudE91dGxpbmVDb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+cGFkZGluZyA9
IHBhcnNlQ29sb3IocGFkZGluZ0NvbG9yKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5wYWRk
aW5nT3V0bGluZSA9IHBhcnNlQ29sb3IocGFkZGluZ091dGxpbmVDb2xvcik7CisgICAgICAgIG1f
aGlnaGxpZ2h0RGF0YS0+Ym9yZGVyID0gcGFyc2VDb2xvcihib3JkZXJDb2xvcik7CisgICAgICAg
IG1faGlnaGxpZ2h0RGF0YS0+Ym9yZGVyT3V0bGluZSA9IHBhcnNlQ29sb3IoYm9yZGVyT3V0bGlu
ZUNvbG9yKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5tYXJnaW4gPSBwYXJzZUNvbG9yKG1h
cmdpbkNvbG9yKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5tYXJnaW5PdXRsaW5lID0gcGFy
c2VDb2xvcihtYXJnaW5PdXRsaW5lQ29sb3IpOworICAgICAgICBoaWdobGlnaHQoZXJyb3IsIG5v
ZGUpOworICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUo
RXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpCit2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSgKKyAgICBFcnJvclN0cmluZyogZXJyb3IsCisgICAg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkLAorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiBjb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9y
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQp
OwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgIGhpZ2hs
aWdodChlcnJvciwgZnJhbWUtPm93bmVyRWxlbWVudCgpLCAiYWxsIik7CisgICAgaWYgKGZyYW1l
ICYmIGZyYW1lLT5vd25lckVsZW1lbnQoKSkgeworICAgICAgICBtX2hpZ2hsaWdodERhdGEgPSBh
ZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5j
b250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+Y29u
dGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CisgICAgICAgIGhpZ2hsaWdo
dChlcnJvciwgZnJhbWUtPm93bmVyRWxlbWVudCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcqKQogewogICAgIG1faGlnaGxp
Z2h0ZWROb2RlID0gMDsKKyAgICBtX2hpZ2hsaWdodERhdGEuY2xlYXIoKTsKICAgICBtX2hpZ2hs
aWdodGVkUmVjdC5jbGVhcigpOwogICAgIG1fY2xpZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CkBA
IC0xNTEyLDIzICsxNTc0LDE0IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0
b3JET01BZ2VudDo6cmVzb2x2ZU5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyCiB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpkcmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKICAgICBpZiAobV9oaWdobGlnaHRlZFJlY3QpIHsKLSAgICAgICAgRE9NTm9kZUhpZ2hs
aWdodGVyOjpkcmF3UmVjdEhpZ2hsaWdodChjb250ZXh0LCBtX2RvY3VtZW50LmdldCgpLCBtX2hp
Z2hsaWdodGVkUmVjdC5nZXQoKSk7CisgICAgICAgIERPTU5vZGVIaWdobGlnaHRlcjo6ZHJhd1Jl
Y3RIaWdobGlnaHQoY29udGV4dCwgbV9kb2N1bWVudC5nZXQoKSwgbV9oaWdobGlnaHRlZFJlY3Qu
Z2V0KCksIG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgbV9oaWdobGlnaHREYXRhLT5jb250ZW50
T3V0bGluZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1faGlnaGxpZ2h0
ZWROb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hs
aWdodE1vZGUgbW9kZSA9IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsOwotICAgIGlm
IChtX2hpZ2hsaWdodE1vZGUgPT0gImNvbnRlbnQiKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhp
Z2hsaWdodGVyOjpIaWdobGlnaHRDb250ZW50OwotICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0TW9k
ZSA9PSAicGFkZGluZyIpCi0gICAgICAgIG1vZGUgPSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hs
aWdodFBhZGRpbmc7Ci0gICAgZWxzZSBpZiAobV9oaWdobGlnaHRNb2RlID09ICJib3JkZXIiKQot
ICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRCb3JkZXI7Ci0gICAg
ZWxzZSBpZiAobV9oaWdobGlnaHRNb2RlID09ICJtYXJnaW4iKQotICAgICAgICBtb2RlID0gRE9N
Tm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNYXJnaW47Ci0gICAgRE9NTm9kZUhpZ2hsaWdodGVy
OjpkcmF3Tm9kZUhpZ2hsaWdodChjb250ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5nZXQoKSwgbW9k
ZSk7CisgICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChjb250ZXh0LCBt
X2hpZ2hsaWdodGVkTm9kZS5nZXQoKSwgbV9oaWdobGlnaHREYXRhLmdldCgpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaAppbmRleCA5YjE4NDkzLi5jOGZjYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBJbnRS
ZWN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIE1hdGNoSm9iOwogY2xhc3MgSFRNTEVs
ZW1lbnQ7CitjbGFzcyBIaWdobGlnaHREYXRhOwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFz
cyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CkBAIC0xMzMsOSArMTM0
LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkLCBpbnQqIG5vZGVJZCk7CiAgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRv
RnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsK
ICAgICB2b2lkIGhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIGhpZ2hsaWdo
dFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7
Ci0gICAgdm9pZCBoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgU3RyaW5n
KiBtb2RlKTsKLSAgICB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkKTsKKyAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQg
eCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9y
KTsKKyAgICB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBib29s
IHNob3dJbmZvLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29udGVudENvbG9yLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29udGVudE91dGxpbmVDb2xvciwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHBhZGRpbmdDb2xvciwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4qIHBhZGRpbmdPdXRsaW5lQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBib3JkZXJDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGJvcmRl
ck91dGxpbmVDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1hcmdpbkNvbG9y
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbWFyZ2luT3V0bGluZUNvbG9yKTsKKyAg
ICB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IpOwogICAgIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBjb25zdCBhbmNob3JO
b2RlSWQsIGludCogbmV3Tm9kZUlkKTsKIAogICAgIE5vZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1faGlnaGxpZ2h0ZWROb2RlLmdldCgpOyB9CkBAIC0xODMsNyArMTg0LDcg
QEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
SW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKIAogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShi
b29sIGVuYWJsZWQpOwotICAgIHZvaWQgaGlnaGxpZ2h0KEVycm9yU3RyaW5nKiwgTm9kZSosIGNv
bnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBoaWdobGlnaHQoRXJyb3JTdHJpbmcqLCBOb2Rl
Kik7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjMzLDcgKzIzNCw3IEBAIHByaXZh
dGU6CiAgICAgT3duUHRyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+IG1fcmV2YWxpZGF0
ZVN0eWxlQXR0clRhc2s7CiAgICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0ZWROb2RlOwogICAg
IE93blB0cjxJbnRSZWN0PiBtX2hpZ2hsaWdodGVkUmVjdDsKLSAgICBTdHJpbmcgbV9oaWdobGln
aHRNb2RlOworICAgIE93blB0cjxIaWdobGlnaHREYXRhPiBtX2hpZ2hsaWdodERhdGE7CiAgICAg
UmVmUHRyPE5vZGU+IG1fbm9kZVRvRm9jdXM7CiAgICAgYm9vbCBtX3NlYXJjaGluZ0Zvck5vZGU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xv
ci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMKaW5kZXgg
NzNlNDdkNC4uMmM1YmEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db2xvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbG9yLmpzCkBAIC0zMyw2ICszMywxMSBAQCBXZWJJbnNwZWN0b3IuQ29sb3IgPSBmdW5jdGlv
bihzdHIpCiAgICAgdGhpcy5fcGFyc2UoKTsKIH0KIAorV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21S
R0JBID0gZnVuY3Rpb24ociwgZywgYiwgYSkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5Db2xvcigicmdiYSgiICsgciArICIsIiArIGcgKyAiLCIgKyBiICsgIiwiICsgKHR5cGVvZiBh
ID09PSAidW5kZWZpbmVkIiA/IDEgOiBhKSArICIpIik7Cit9CisKIFdlYkluc3BlY3Rvci5Db2xv
ci5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHNob3J0aGV4KCkKICAgICB7CkBAIC0xNjYsNiArMTcx
LDIxIEBAIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRocm93ICJp
bnZhbGlkIGNvbG9yIGZvcm1hdCI7CiAgICAgfSwKIAorICAgIHRvUHJvdG9jb2xSR0JBOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcHJvdG9jb2xSR0JBKQorICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3Byb3RvY29sUkdCQTsKKworICAgICAgICB2YXIgY29tcG9uZW50cyA9
IHRoaXMucmdiYTsKKyAgICAgICAgaWYgKGNvbXBvbmVudHMpCisgICAgICAgICAgICB0aGlzLl9w
cm90b2NvbFJHQkEgPSB7IHI6IE51bWJlcihjb21wb25lbnRzWzBdKSwgZzogTnVtYmVyKGNvbXBv
bmVudHNbMV0pLCBiOiBOdW1iZXIoY29tcG9uZW50c1syXSksIGE6IE51bWJlcihjb21wb25lbnRz
WzNdKSB9OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbXBvbmVudHMgPSB0aGlzLnJn
YjsKKyAgICAgICAgICAgIHRoaXMuX3Byb3RvY29sUkdCQSA9IHsgcjogTnVtYmVyKGNvbXBvbmVu
dHNbMF0pLCBnOiBOdW1iZXIoY29tcG9uZW50c1sxXSksIGI6IE51bWJlcihjb21wb25lbnRzWzJd
KSB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9wcm90b2NvbFJHQkE7CisgICAg
fSwKKwogICAgIF9yZ2JUb0hleDogZnVuY3Rpb24ocmdiKQogICAgIHsKICAgICAgICAgdmFyIHIg
PSBwYXJzZUludChyZ2JbMF0pLnRvU3RyaW5nKDE2KTsKQEAgLTY2MSwzICs2ODEsMTQgQEAgV2Vi
SW5zcGVjdG9yLkNvbG9yLkFkdmFuY2VkTmlja05hbWVzID0gewogICAgICJyZ2JhKDAsMCwwLDAp
IjogW1swLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDBdLCAidHJhbnNwYXJlbnQiXSwKICAgICAiaHNs
YSgwLDAsMCwwKSI6IFtbMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwXSwgInRyYW5zcGFyZW50Il0s
CiB9OworCitXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodCA9IHsKKyAgICBDb250ZW50
OiBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEoMTExLCAxNjgsIDIyMCwgLjY2KSwKKyAgICBD
b250ZW50T3V0bGluZTogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDksIDgzLCAxNDgpLAor
ICAgIFBhZGRpbmc6IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSgxNDcsIDE5NiwgMTI1LCAu
NTUpLAorICAgIFBhZGRpbmdPdXRsaW5lOiBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEoNTUs
IDExOCwgMjgpLAorICAgIEJvcmRlcjogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDI1NSwg
MjI5LCAxNTMsIC42NiksCisgICAgQm9yZGVyT3V0bGluZTogV2ViSW5zcGVjdG9yLkNvbG9yLmZy
b21SR0JBKDEyNywgOTYsIDApLAorICAgIE1hcmdpbjogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21S
R0JBKDI0NiwgMTc4LCAxMDcsIC42NiksCisgICAgTWFyZ2luT3V0bGluZTogV2ViSW5zcGVjdG9y
LkNvbG9yLmZyb21SR0JBKDE4MCwgOTUsIDQpCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNz
U2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJp
Y3NTaWRlYmFyUGFuZS5qcwppbmRleCBiMDU4YTQwLi5jMmUwMjZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5q
cwpAQCAtMTI4LDE1ICsxMjgsMzggQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChmcm9tRWxlbWVudCA9PT0gdG9FbGVtZW50KQogICAg
ICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlT3ZlcihlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhvdmVy
ZWQiKTsKKworICAgICAgICAgICAgdmFyIGJnQ29sb3I7CisgICAgICAgICAgICBpZiAoZWxlbWVu
dC5oYXNTdHlsZUNsYXNzKCJtYXJnaW4iKSkKKyAgICAgICAgICAgICAgICBiZ0NvbG9yID0gV2Vi
SW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuTWFyZ2luLnRvU3RyaW5nKCJvcmlnaW5hbCIp
OworICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJib3JkZXIiKSkK
KyAgICAgICAgICAgICAgICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGln
aHQuQm9yZGVyLnRvU3RyaW5nKCJvcmlnaW5hbCIpOworICAgICAgICAgICAgZWxzZSBpZiAoZWxl
bWVudC5oYXNTdHlsZUNsYXNzKCJwYWRkaW5nIikpCisgICAgICAgICAgICAgICAgYmdDb2xvciA9
IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LlBhZGRpbmcudG9TdHJpbmcoIm9yaWdp
bmFsIik7CisgICAgICAgICAgICBlbHNlIGlmIChlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoImNvbnRl
bnQiKSkKKyAgICAgICAgICAgICAgICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VI
aWdobGlnaHQuQ29udGVudC50b1N0cmluZygib3JpZ2luYWwiKTsKKyAgICAgICAgICAgIGlmIChi
Z0NvbG9yKQorICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0g
YmdDb2xvcjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlT3V0KGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENv
bG9yID0gIiI7CisgICAgICAgICAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhvdmVyZWQi
KTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChzaG93SGlnaGxpZ2h0KSB7CiAgICAgICAgICAg
ICAvLyBJbnRvIGVsZW1lbnQuCiAgICAgICAgICAgICBpZiAodGhpcy5ub2RlICYmIHRvRWxlbWVu
dCkKLSAgICAgICAgICAgICAgICB0b0VsZW1lbnQuYWRkU3R5bGVDbGFzcygiaG92ZXJlZCIpOwor
ICAgICAgICAgICAgICAgIGhhbmRsZU1vdXNlT3Zlcih0b0VsZW1lbnQpOwogICAgICAgICAgICAg
dmFyIG5vZGVJZCA9IHRoaXMubm9kZSA/IHRoaXMubm9kZS5pZCA6IDA7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBPdXQgb2YgZWxlbWVudC4KICAgICAgICAgICAgIGlmIChmcm9t
RWxlbWVudCkKLSAgICAgICAgICAgICAgICBmcm9tRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJo
b3ZlcmVkIik7CisgICAgICAgICAgICAgICAgaGFuZGxlTW91c2VPdXQoZnJvbUVsZW1lbnQpOwog
ICAgICAgICAgICAgdmFyIG5vZGVJZCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGVJ
ZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3Vy
Y2VzUGFuZWwuanMKaW5kZXggOTNmMzJlMS4uOWJlOTM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xMDk1LDcg
KzEwOTUsNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgewogICAgICAgICBpZiAoaG92ZXJlZCkgewogICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVs
ZW1lbnQuYWRkU3R5bGVDbGFzcygiaG92ZXJlZCIpOwotICAgICAgICAgICAgRE9NQWdlbnQuaGln
aGxpZ2h0RnJhbWUodGhpcy5fZnJhbWVJZCk7CisgICAgICAgICAgICBET01BZ2VudC5oaWdobGln
aHRGcmFtZSh0aGlzLl9mcmFtZUlkLCBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5D
b250ZW50LnRvUHJvdG9jb2xSR0JBKCksIFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0
LkNvbnRlbnRPdXRsaW5lLnRvUHJvdG9jb2xSR0JBKCkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaG92ZXJlZCIp
OwogICAgICAgICAgICAgRE9NQWdlbnQuaGlkZUhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IGE2Yjk0
ZWMuLmQyNWQ5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanMKQEAgLTczNyw3ICs3MzcsNyBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRlZFJl
Y3QgPT09IHJlY29yZC5kYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9o
aWdobGlnaHRlZFJlY3QgPSByZWNvcmQuZGF0YTsKLSAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0
UmVjdCh0aGlzLl9oaWdobGlnaHRlZFJlY3QueCwgdGhpcy5faGlnaGxpZ2h0ZWRSZWN0LnksIHRo
aXMuX2hpZ2hsaWdodGVkUmVjdC53aWR0aCwgdGhpcy5faGlnaGxpZ2h0ZWRSZWN0LmhlaWdodCk7
CisgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodFJlY3QodGhpcy5faGlnaGxpZ2h0ZWRSZWN0Lngs
IHRoaXMuX2hpZ2hsaWdodGVkUmVjdC55LCB0aGlzLl9oaWdobGlnaHRlZFJlY3Qud2lkdGgsIHRo
aXMuX2hpZ2hsaWdodGVkUmVjdC5oZWlnaHQsIFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxp
Z2h0LkNvbnRlbnQudG9Qcm90b2NvbFJHQkEoKSwgV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdo
bGlnaHQuQ29udGVudE91dGxpbmUudG9Qcm90b2NvbFJHQkEoKSk7CiAgICAgfSwKIAogICAgIF9o
aWRlUmVjdEhpZ2hsaWdodDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IGYwN2UyYzMuLmM2NGRjZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAg
LTE4ODgsMTAgKzE4ODgsNiBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFuZS1z
dWJ0aXRsZSB7CiAgICAgbWFyZ2luOiAzcHg7CiB9CiAKLS5tZXRyaWNzIC5tYXJnaW4uaG92ZXJl
ZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEzOSwgMTgyLCAyMjEpOwotfQotCiAubWV0
cmljcyAuYm9yZGVyIHsKICAgICBib3JkZXI6IDFweCBibGFjayBzb2xpZDsKICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiB3aGl0ZTsKQEAgLTE5MDIsMTAgKzE4OTgsNiBAQCBib2R5LnBsYXRmb3JtLXdp
bmRvd3MgLnNpZGViYXItcGFuZS1zdWJ0aXRsZSB7CiAgICAgbWFyZ2luOiAzcHg7CiB9CiAKLS5t
ZXRyaWNzIC5ib3JkZXIuaG92ZXJlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1Nywg
MTkzLCAyMjYpOwotfQotCiAubWV0cmljcyAucGFkZGluZyB7CiAgICAgYm9yZGVyOiAxcHggZ3Jl
eSBkYXNoZWQ7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CkBAIC0xOTE2LDEwICsxOTA4
LDYgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAg
IG1hcmdpbjogM3B4OwogfQogCi0ubWV0cmljcyAucGFkZGluZy5ob3ZlcmVkIHsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMTczLCAyMDQsIDIzMSk7Ci19Ci0KIC5tZXRyaWNzIC5jb250ZW50
IHsKICAgICBwb3NpdGlvbjogc3RhdGljOwogICAgIGJvcmRlcjogMXB4IGdyZXkgc29saWQ7CkBA
IC0xOTM0LDEwICsxOTIyLDYgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUt
c3VidGl0bGUgewogICAgIG92ZXJmbG93OiB2aXNpYmxlOwogfQogCi0ubWV0cmljcyAuY29udGVu
dC5ob3ZlcmVkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTkwLCAyMTQsIDIzNik7Ci19
Ci0KIC5tZXRyaWNzIC5jb250ZW50IHNwYW4gewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMK
aW5kZXggMDc2ODAwYi4uYTEwNGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTM4Miw5ICszODIsMzEgQEAgdmFyIFdlYkluc3Bl
Y3RvciA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9oaWdobGlnaHRl
ZERPTU5vZGVJZCA9IG5vZGVJZDsKLSAgICAgICAgaWYgKG5vZGVJZCkKLSAgICAgICAgICAgIERP
TUFnZW50LmhpZ2hsaWdodE5vZGUobm9kZUlkLCBtb2RlIHx8ICJhbGwiKTsKLSAgICAgICAgZWxz
ZQorICAgICAgICBpZiAobm9kZUlkKSB7CisgICAgICAgICAgICBtb2RlID0gbW9kZSB8fCAiYWxs
IjsKKyAgICAgICAgICAgIHZhciBhcmdzID0geyBub2RlSWQ6IG5vZGVJZCwgc2hvd0luZm86IG1v
ZGUgPT09ICJhbGwiIH07CisgICAgICAgICAgICBpZiAobW9kZSA9PT0gImFsbCIgfHwgbW9kZSA9
PT0gImNvbnRlbnQiKSB7CisgICAgICAgICAgICAgICAgYXJncy5jb250ZW50Q29sb3IgPSBXZWJJ
bnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Db250ZW50LnRvUHJvdG9jb2xSR0JBKCk7Cisg
ICAgICAgICAgICAgICAgYXJncy5jb250ZW50T3V0bGluZUNvbG9yID0gV2ViSW5zcGVjdG9yLkNv
bG9yLlBhZ2VIaWdobGlnaHQuQ29udGVudE91dGxpbmUudG9Qcm90b2NvbFJHQkEoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09ICJw
YWRkaW5nIikgeworICAgICAgICAgICAgICAgIGFyZ3MucGFkZGluZ0NvbG9yID0gV2ViSW5zcGVj
dG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuUGFkZGluZy50b1Byb3RvY29sUkdCQSgpOworICAgICAg
ICAgICAgICAgIGFyZ3MucGFkZGluZ091dGxpbmVDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5Q
YWdlSGlnaGxpZ2h0LlBhZGRpbmdPdXRsaW5lLnRvUHJvdG9jb2xSR0JBKCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChtb2RlID09PSAiYWxsIiB8fCBtb2RlID09PSAiYm9yZGVy
IikgeworICAgICAgICAgICAgICAgIGFyZ3MuYm9yZGVyQ29sb3IgPSBXZWJJbnNwZWN0b3IuQ29s
b3IuUGFnZUhpZ2hsaWdodC5Cb3JkZXIudG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgICAg
ICBhcmdzLmJvcmRlck91dGxpbmVDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxp
Z2h0LkJvcmRlck91dGxpbmUudG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09ICJtYXJnaW4iKSB7CisgICAg
ICAgICAgICAgICAgYXJncy5tYXJnaW5Db2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGln
aGxpZ2h0Lk1hcmdpbi50b1Byb3RvY29sUkdCQSgpOworICAgICAgICAgICAgICAgIGFyZ3MubWFy
Z2luT3V0bGluZUNvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuTWFyZ2lu
T3V0bGluZS50b1Byb3RvY29sUkdCQSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBE
T01BZ2VudC5oaWdobGlnaHROb2RlLmludm9rZShhcmdzKTsKKyAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBET01BZ2VudC5oaWRlSGlnaGxpZ2h0KCk7CiAgICAgfSwKIAo=
</data>
<flag name="commit-queue"
          id="100573"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104676</attachid>
            <date>2011-08-22 07:24:47 -0700</date>
            <delta_ts>2011-08-22 07:26:58 -0700</delta_ts>
            <desc>[PATCH] Build fix</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>47222</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDI0NWU2NjFkYzY4MmUzMTRmODVmNmU0ZDY3NzM5ZDgxMjIwMWJmZTkKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgQXVnIDE5
IDIwOjU5OjI5IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE4MTVlZi4uZjQ2
MmI1NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDExLTA4LTIyICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBUaGUgaGlnaGxpZ2h0aW5nIFdJUCBBUEkgaXMgc2xpZ2h0bHkgY2hhbmdl
ZDogY2xpZW50cyB3aWxsIHNwZWNpZnkgY29sb3JzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRo
ZSBoaWdobGlnaHRlZCBvYmplY3RzLAorICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyaWMgImhp
Z2hsaWdodGluZyBtb2RlIi4gVGhpcyBhbGxvd3MgdG86CisgICAgICAgIC0gdXNlIGVudGlyZWx5
IGN1c3RvbSBjb2xvcnMgZm9yIGhpZ2hsaWdodGluZyAoYW5kIHZhcnkgdGhlbSBvdmVyIHRpbWUp
OworICAgICAgICAtIGRpc3BsYXkgYW55IGNvbWJpbmF0aW9uIG9mIGZpbGwvb3V0bGluZSBmb3Ig
dGhlIGhpZ2hsaWdodGVkIGFyZWE7CisgICAgICAgIC0gaGlnaGxpZ2h0IGFueSBjb21iaW5hdGlv
bnMgb2YgZWxlbWVudCBwYXJ0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRyYXdIaWdobGlnaHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bG9yLnByb3RvdHlwZS50b1Byb3RvY29sUkdCQSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmlj
c1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGlnaGxpZ2h0RE9NTm9kZS5oYW5kbGVNb3VzZU92ZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hp
Z2hsaWdodERPTU5vZGUuaGFuZGxlTW91c2VPdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1l
dHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hpZ2hsaWdodERPTU5vZGUpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuc2V0IGhvdmVyZWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5faGlnaGxpZ2h0UmVjdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmhpZ2hsaWdodERP
TU5vZGUpOgorCiAyMDExLTA4LTE4ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgYnJlYWtwb2ludCBtYW5h
Z2VtZW50IGNvZGUgdG8gYSBzZXBhcmF0ZSBjbGFzcyBhbmQgYWRkIHRlc3RzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAwNGJiNDQ4
Li5iYmMxMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hs
aWdodGVyLmNwcApAQCAtMzMsOSArMzMsMTEgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJGb250Q2FjaGUuaCIKKyNpbmNsdWRlICJGb250RmFtaWx5LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJh
bmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCkBAIC00Nyw2ICs0OSwxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKK2NvbnN0IHN0YXRpYyBpbnQgcmVjdElu
ZmxhdGVQeCA9IDQ7Citjb25zdCBzdGF0aWMgaW50IGZvbnRIZWlnaHRQeCA9IDEyOworY29uc3Qg
c3RhdGljIGludCBib3JkZXJXaWR0aFB4ID0gMTsKK2NvbnN0IHN0YXRpYyBpbnQgdG9vbHRpcFBh
ZGRpbmcgPSA0OworCitjb25zdCBzdGF0aWMgaW50IGFycm93VGlwT2Zmc2V0ID0gMjA7Citjb25z
dCBzdGF0aWMgaW50IGFycm93SGVpZ2h0ID0gNzsKK2NvbnN0IHN0YXRpYyBpbnQgYXJyb3dIYWxm
V2lkdGggPSA3OworCiBQYXRoIHF1YWRUb1BhdGgoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogewog
ICAgIFBhdGggcXVhZFBhdGg7CkBAIC01OCwxMCArNjksMzUgQEAgUGF0aCBxdWFkVG9QYXRoKGNv
bnN0IEZsb2F0UXVhZCYgcXVhZCkKICAgICByZXR1cm4gcXVhZFBhdGg7CiB9CiAKLXZvaWQgZHJh
d091dGxpbmVkUXVhZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYg
cXVhZCwgY29uc3QgQ29sb3ImIGZpbGxDb2xvcikKKy8vdm9pZCBkcmF3T3V0bGluZWRRdWFkKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBDb2xv
ciYgZmlsbENvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKQorLy97CisvLyAgICBzdGF0
aWMgY29uc3QgaW50IG91dGxpbmVUaGlja25lc3MgPSAyOworLy8KKy8vICAgIFBhdGggcXVhZFBh
dGggPSBxdWFkVG9QYXRoKHF1YWQpOworLy8KKy8vICAgIC8vIENsaXAgb3V0IHRoZSBxdWFkLCB0
aGVuIGRyYXcgd2l0aCBhIDJweCBzdHJva2UgdG8gZ2V0IGEgcGl4ZWwKKy8vICAgIC8vIG9mIG91
dGxpbmUgKGJlY2F1c2UgaW5mbGF0aW5nIGEgcXVhZCBpcyBoYXJkKS4KKy8vICAgIGlmIChvdXRs
aW5lQ29sb3IuaXNWYWxpZCgpKSB7CisvLyAgICAgICAgY29udGV4dC5zYXZlKCk7CisvLyAgICAg
ICAgY29udGV4dC5jbGlwT3V0KHF1YWRQYXRoKTsKKy8vCisvLyAgICAgICAgY29udGV4dC5zZXRT
dHJva2VUaGlja25lc3Mob3V0bGluZVRoaWNrbmVzcyk7CisvLyAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihvdXRsaW5lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworLy8gICAgICAg
IGNvbnRleHQuc3Ryb2tlUGF0aChxdWFkUGF0aCk7CisvLworLy8gICAgICAgIGNvbnRleHQucmVz
dG9yZSgpOworLy8gICAgfQorLy8KKy8vICAgIC8vIE5vdyBkbyB0aGUgZmlsbC4KKy8vICAgIGlm
IChmaWxsQ29sb3IuaXNWYWxpZCgpKSB7CisvLyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
ZmlsbENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKy8vICAgICAgICBjb250ZXh0LmZpbGxQ
YXRoKHF1YWRQYXRoKTsKKy8vICAgIH0KKy8vfQorCit2b2lkIGRyYXdPdXRsaW5lZFF1YWQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGNvbnN0IENvbG9y
JiBmaWxsQ29sb3IsIGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IpCiB7CiAgICAgc3RhdGljIGNv
bnN0IGludCBvdXRsaW5lVGhpY2tuZXNzID0gMjsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3Igb3V0
bGluZUNvbG9yKDYyLCA4NiwgMTgwLCAyMjgpOwogCiAgICAgUGF0aCBxdWFkUGF0aCA9IHF1YWRU
b1BhdGgocXVhZCk7CiAKQEAgLTgzLDQ3ICsxMTksNTEgQEAgdm9pZCBkcmF3T3V0bGluZWRRdWFk
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBD
b2wKICAgICBjb250ZXh0LmZpbGxQYXRoKHF1YWRQYXRoKTsKIH0KIAotdm9pZCBkcmF3T3V0bGlu
ZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQm
IHF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgY2xpcFF1YWQsIGNvbnN0IENvbG9yJiBmaWxsQ29sb3Ip
Cit2b2lkIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgRmxvYXRRdWFkJiBjbGlwUXVhZCwgY29uc3Qg
Q29sb3ImIGZpbGxDb2xvciwgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcikKIHsKICAgICBjb250
ZXh0LnNhdmUoKTsKICAgICBQYXRoIGNsaXBRdWFkUGF0aCA9IHF1YWRUb1BhdGgoY2xpcFF1YWQp
OwogICAgIGNvbnRleHQuY2xpcE91dChjbGlwUXVhZFBhdGgpOwotICAgIGRyYXdPdXRsaW5lZFF1
YWQoY29udGV4dCwgcXVhZCwgZmlsbENvbG9yKTsKKyAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRl
eHQsIHF1YWQsIGZpbGxDb2xvciwgb3V0bGluZUNvbG9yKTsKICAgICBjb250ZXh0LnJlc3RvcmUo
KTsKIH0KIAotdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRRdWFkJiBjb250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5n
UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdp
blF1YWQsIERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0TW9kZSBtb2RlKQordm9pZCBkcmF3
SGlnaGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFk
JiBjb250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVhZCwgY29uc3QgRmxvYXRR
dWFkJiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1YWQsIEhpZ2hsaWdodERh
dGEqIGhpZ2hsaWdodERhdGEpCiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGNvbnRlbnRCb3hD
b2xvcigxMjUsIDE3MywgMjE3LCAxMjgpOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBwYWRkaW5n
Qm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTYwKTsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgYm9y
ZGVyQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTkyKTsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3Ig
bWFyZ2luQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMjI4KTsKKyAgICBib29sIGhhc01hcmdpbiA9
IGhpZ2hsaWdodERhdGEtPm1hcmdpbiAhPSBDb2xvcjo6dHJhbnNwYXJlbnQgfHwgaGlnaGxpZ2h0
RGF0YS0+bWFyZ2luT3V0bGluZSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNC
b3JkZXIgPSBoaWdobGlnaHREYXRhLT5ib3JkZXIgIT0gQ29sb3I6OnRyYW5zcGFyZW50IHx8IGhp
Z2hsaWdodERhdGEtPmJvcmRlck91dGxpbmUgIT0gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIGJv
b2wgaGFzUGFkZGluZyA9IGhpZ2hsaWdodERhdGEtPnBhZGRpbmcgIT0gQ29sb3I6OnRyYW5zcGFy
ZW50IHx8IGhpZ2hsaWdodERhdGEtPnBhZGRpbmdPdXRsaW5lICE9IENvbG9yOjp0cmFuc3BhcmVu
dDsKKyAgICBib29sIGhhc0NvbnRlbnQgPSBoaWdobGlnaHREYXRhLT5jb250ZW50ICE9IENvbG9y
Ojp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSAhPSBDb2xvcjo6
dHJhbnNwYXJlbnQ7CiAKICAgICBGbG9hdFF1YWQgY2xpcFF1YWQ7Ci0gICAgaWYgKG1vZGUgPT0g
RE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNYXJnaW4gfHwgKG1vZGUgPT0gRE9NTm9kZUhp
Z2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgbWFyZ2luUXVhZCAhPSBib3JkZXJRdWFkKSkgewot
ICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgbWFyZ2luUXVhZCwgYm9y
ZGVyUXVhZCwgbWFyZ2luQm94Q29sb3IpOworICAgIENvbG9yIGNsaXBDb2xvcjsKKyAgICBpZiAo
aGFzTWFyZ2luICYmICghaGFzQm9yZGVyIHx8IG1hcmdpblF1YWQgIT0gYm9yZGVyUXVhZCkpIHsK
KyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIG1hcmdpblF1YWQsIGJv
cmRlclF1YWQsIGhpZ2hsaWdodERhdGEtPm1hcmdpbiwgaGlnaGxpZ2h0RGF0YS0+bWFyZ2luT3V0
bGluZSk7CiAgICAgICAgIGNsaXBRdWFkID0gYm9yZGVyUXVhZDsKKyAgICAgICAgY2xpcENvbG9y
ID0gaGlnaGxpZ2h0RGF0YS0+bWFyZ2luT3V0bGluZTsKICAgICB9Ci0gICAgaWYgKG1vZGUgPT0g
RE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRCb3JkZXIgfHwgKG1vZGUgPT0gRE9NTm9kZUhp
Z2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkpIHsK
LSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBh
ZGRpbmdRdWFkLCBib3JkZXJCb3hDb2xvcik7CisgICAgaWYgKGhhc0JvcmRlciAmJiAoIWhhc1Bh
ZGRpbmcgfHwgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkpIHsKKyAgICAgICAgZHJhd091dGxp
bmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkLCBoaWdobGln
aHREYXRhLT5ib3JkZXIsIGhpZ2hsaWdodERhdGEtPmJvcmRlck91dGxpbmUpOwogICAgICAgICBj
bGlwUXVhZCA9IHBhZGRpbmdRdWFkOworICAgICAgICBjbGlwQ29sb3IgPSBoaWdobGlnaHREYXRh
LT5ib3JkZXJPdXRsaW5lOwogICAgIH0KLSAgICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0
ZXI6OkhpZ2hsaWdodFBhZGRpbmcgfHwgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdo
bGlnaHRBbGwgJiYgcGFkZGluZ1F1YWQgIT0gY29udGVudFF1YWQpKSB7Ci0gICAgICAgIGRyYXdP
dXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1YWQsIHBh
ZGRpbmdCb3hDb2xvcik7CisgICAgaWYgKGhhc1BhZGRpbmcgJiYgKCFoYXNDb250ZW50IHx8IHBh
ZGRpbmdRdWFkICE9IGNvbnRlbnRRdWFkKSkgeworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0
aENsaXAoY29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBoaWdobGlnaHREYXRhLT5w
YWRkaW5nLCBoaWdobGlnaHREYXRhLT5wYWRkaW5nT3V0bGluZSk7CiAgICAgICAgIGNsaXBRdWFk
ID0gY29udGVudFF1YWQ7CisgICAgICAgIGNsaXBDb2xvciA9IGhpZ2hsaWdodERhdGEtPnBhZGRp
bmdPdXRsaW5lOworICAgIH0KKyAgICBpZiAoaGFzQ29udGVudCkKKyAgICAgICAgZHJhd091dGxp
bmVkUXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgaGln
aGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUpOworICAgIGVsc2UgeworICAgICAgICBpZiAoY2xp
cENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChj
b250ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNsaXBDb2xvciwgY2xpcENvbG9yKTsKICAgICB9
Ci0gICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRDb250ZW50IHx8
IG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwpCi0gICAgICAgIGRyYXdP
dXRsaW5lZFF1YWQoY29udGV4dCwgY29udGVudFF1YWQsIGNvbnRlbnRCb3hDb2xvcik7Ci0gICAg
ZWxzZQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgY2xpcFF1YWQs
IGNsaXBRdWFkLCBjb250ZW50Qm94Q29sb3IpOwogfQogCi12b2lkIGRyYXdIaWdobGlnaHRGb3JM
aW5lQm94ZXNPclNWR1JlbmRlcmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVj
dG9yPEZsb2F0UXVhZD4mIGxpbmVCb3hRdWFkcykKK3ZvaWQgZHJhd0hpZ2hsaWdodEZvckxpbmVC
b3hlc09yU1ZHUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8
RmxvYXRRdWFkPiYgbGluZUJveFF1YWRzLCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHREYXRhKQog
ewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBsaW5lQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTI4
KTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZUJveFF1YWRzLnNpemUoKTsgKytp
KQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGxpbmVCb3hRdWFkc1tpXSwgbGlu
ZUJveENvbG9yKTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBsaW5lQm94UXVh
ZHNbaV0sIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQsIGhpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRs
aW5lKTsKIH0KIAogaW5saW5lIExheW91dFNpemUgZnJhbWVUb01haW5GcmFtZU9mZnNldChGcmFt
ZSogZnJhbWUpCkBAIC0xMzIsNTggKzE3MiwxMzUgQEAgaW5saW5lIExheW91dFNpemUgZnJhbWVU
b01haW5GcmFtZU9mZnNldChGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHRvTGF5b3V0U2l6ZSht
YWluRnJhbWVQb2ludCk7CiB9CiAKK2ludCBkcmF3U3Vic3RyaW5nKGNvbnN0IFRleHRSdW4mIGds
b2JhbFRleHRSdW4sIGludCBvZmZzZXQsIGludCBsZW5ndGgsIGNvbnN0IENvbG9yJiB0ZXh0Q29s
b3IsIGNvbnN0IEZvbnQmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgdGl0bGVSZWN0KQoreworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRDb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBnbG9i
YWxUZXh0UnVuLCBMYXlvdXRQb2ludCh0aXRsZVJlY3QueCgpICsgcmVjdEluZmxhdGVQeCwgdGl0
bGVSZWN0LnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSksIG9mZnNldCwgb2Zmc2V0
ICsgbGVuZ3RoKTsKKyAgICByZXR1cm4gb2Zmc2V0ICsgbGVuZ3RoOworfQorCitpbnQgY2FsY3Vs
YXRlQXJyb3dUaXBYKGNvbnN0IExheW91dFJlY3QmIGFuY2hvckJveCwgY29uc3QgTGF5b3V0UmVj
dCYgdGl0bGVSZWN0KQoreworICAgIGludCBhbmNob3JYID0gYW5jaG9yQm94LngoKTsKKworICAg
IC8vIENoZWNrIGZvciBoZWF2aWx5IG1pc2FsaWduZWQgdG9vbHRpcCBmaXJzdC4KKyAgICBpZiAo
dGl0bGVSZWN0LngoKSA+IGFuY2hvckJveC5tYXhYKCkpCisgICAgICAgIHJldHVybiB0aXRsZVJl
Y3QueCgpICsgYXJyb3dIYWxmV2lkdGg7CisKKyAgICBpZiAodGl0bGVSZWN0Lm1heFgoKSA8IGFu
Y2hvclgpCisgICAgICAgIHJldHVybiB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGg7
CisKKyAgICBpbnQgeCA9IHRpdGxlUmVjdC54KCkgKyBhcnJvd1RpcE9mZnNldDsKKyAgICBpZiAo
eCA8IGFuY2hvclgpCisgICAgICAgIHggPSBhbmNob3JYICsgYXJyb3dUaXBPZmZzZXQ7CisgICAg
aWYgKHggPiB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGgpCisgICAgICAgIHggPSB0
aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGg7CisKKyAgICByZXR1cm4geDsKK30KKwor
dm9pZCBzZXRVcEZvbnRGYW1pbGllcyhGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwg
V2ViQ29yZTo6U2V0dGluZ3MqIHNldHRpbmdzKQoreworI2RlZmluZSBUT09MVElQX0ZPTlRfRkFN
SUxJRVMoc2l6ZSwgLi4uKSBcCitzdGF0aWMgdW5zaWduZWQgdG9vbHRpcEZvbnRGYWNlU2l6ZSA9
IHNpemU7XAorc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogdG9vbHRpcEZvbnRGYWNlW3NpemVd
ID0geyBfX1ZBX0FSR1NfXyB9OworCisjaWYgT1MoV0lORE9XUykKK1RPT0xUSVBfRk9OVF9GQU1J
TElFUygyLCBuZXcgQXRvbWljU3RyaW5nKCJDb25zb2xhcyIpLCBuZXcgQXRvbWljU3RyaW5nKCJM
dWNpZGEgQ29uc29sZSIpKQorI2VsaWYgT1MoVU5JWCkKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygx
LCBuZXcgQXRvbWljU3RyaW5nKCJkZWphdnUgc2FucyBtb25vIikpCisjZWxpZiBPUyhNQUNfT1Nf
WCkKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygyLCBuZXcgQXRvbWljU3RyaW5nKCJNZW5sbyIpLCBu
ZXcgQXRvbWljU3RyaW5nKCJNb25hY28iKSkKKyNlbmRpZgorLy8gSW4gdGhlIGRlZmF1bHQgY2Fz
ZSwgd2UgZ2V0IHRoZSBzZXR0aW5ncy1wcm92aWRlZCBtb25vc3BhY2UgZm9udC4KKworI3VuZGVm
IFRPT0xUSVBfRk9OVF9GQU1JTElFUworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmaXhlZEZv
bnRGYW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KCk7CisgICAgaWYgKCFmaXhlZEZv
bnRGYW1pbHkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmlj
RmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNlRmFtaWx5KTsKKyAgICAgICAgRm9udEZh
bWlseSogY3VycmVudEZhbWlseSA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b29sdGlwRm9udEZhY2VTaXplOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghY3VycmVudEZh
bWlseSkgeworICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLnNl
dEZhbWlseSgqdG9vbHRpcEZvbnRGYWNlW2ldKTsKKyAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uZmlyc3RGYW1pbHkoKS5hcHBlbmRGYW1pbHkoMCk7CisgICAgICAgICAgICAgICAgY3Vy
cmVudEZhbWlseSA9ICZmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0Zh
bWlseSA9IFNoYXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIG5ld0Zh
bWlseS0+c2V0RmFtaWx5KCp0b29sdGlwRm9udEZhY2VbaV0pOworICAgICAgICAgICAgICAgIGN1
cnJlbnRGYW1pbHktPmFwcGVuZEZhbWlseShuZXdGYW1pbHkpOworICAgICAgICAgICAgICAgIGN1
cnJlbnRGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNoYXJlZEZvbnRG
YW1pbHk6OmNyZWF0ZSgpOworICAgICAgICBuZXdGYW1pbHktPnNldEZhbWlseShmaXhlZEZvbnRG
YW1pbHkpOworICAgICAgICBjdXJyZW50RmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3RmFtaWx5KTsK
KyAgICAgICAgY3VycmVudEZhbWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKKyAgICB9Cit9CisKIHZv
aWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUs
IGNvbnN0IExheW91dFJlY3QmIGJvdW5kaW5nQm94LCBjb25zdCBMYXlvdXRSZWN0JiBhbmNob3JC
b3gsIGNvbnN0IEZsb2F0UmVjdCYgb3ZlcmxheVJlY3QsIFdlYkNvcmU6OlNldHRpbmdzKiBzZXR0
aW5ncykKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHJlY3RJbmZsYXRlUHggPSA0OwotICAgIHN0
YXRpYyBjb25zdCBpbnQgZm9udEhlaWdodFB4ID0gMTI7Ci0gICAgc3RhdGljIGNvbnN0IGludCBi
b3JkZXJXaWR0aFB4ID0gMTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCB0b29sdGlw
QmFja2dyb3VuZENvbG9yLCAoMjU1LCAyNTUsIDE5NCwgMjU1KSk7Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDb2xvciwgdG9vbHRpcEJvcmRlckNvbG9yLCAoQ29sb3I6OmJsYWNrKSk7Ci0gICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEZvbnRDb2xvciwgKENvbG9yOjpibGFj
aykpOworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgYmFja2dyb3VuZENvbG9yLCAo
MjU1LCAyNTUsIDE5NCwgMjU1KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdGFn
Q29sb3IsICgxMzYsIDE4LCAxMjgpKTsgLy8gU2FtZSBhcyAud2Via2l0LWh0bWwtdGFnLgorICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGF0dHJDb2xvciwgKDI2LCAyNiwgMTY2KSk7IC8v
IFNhbWUgYXMgLndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZS4KKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENvbG9yLCBub3JtYWxDb2xvciwgKENvbG9yOjpibGFjaykpOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ29sb3IsIHB4QW5kQm9yZGVyQ29sb3IsICgxMjgsIDEyOCwgMTI4KSk7CisK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHhTdHJpbmcsICgicHgiKSk7CisgICAg
Y29uc3Qgc3RhdGljIFVDaGFyIHRpbWVzVUNoYXJbXSA9IHsgMHgwMEQ3LCAwIH07CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHRpbWVzU3RyaW5nLCAodGltZXNVQ2hhcikpOyAvLyAm
dGltZXM7IHN0cmluZworCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENhY2hlUHVy
Z2VQcmV2ZW50ZXI7CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUpOwogICAgIGJvb2wgaXNYSFRNTCA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmlzWEhU
TUxEb2N1bWVudCgpOwotICAgIFN0cmluZyBub2RlVGl0bGUgPSBpc1hIVE1MID8gZWxlbWVudC0+
bm9kZU5hbWUoKSA6IGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKTsKKyAgICBTdHJpbmcgbm9k
ZVRpdGxlKGlzWEhUTUwgPyBlbGVtZW50LT5ub2RlTmFtZSgpIDogZWxlbWVudC0+bm9kZU5hbWUo
KS5sb3dlcigpKTsKKyAgICB1bnNpZ25lZCB0YWdOYW1lTGVuZ3RoID0gbm9kZVRpdGxlLmxlbmd0
aCgpOworCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0gZWxlbWVudC0+Z2V0SWRB
dHRyaWJ1dGUoKTsKKyAgICB1bnNpZ25lZCBpZFN0cmluZ0xlbmd0aCA9IDA7CisgICAgU3RyaW5n
IGlkU3RyaW5nOwogICAgIGlmICghaWRWYWx1ZS5pc051bGwoKSAmJiAhaWRWYWx1ZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgbm9kZVRpdGxlICs9ICIjIjsKICAgICAgICAgbm9kZVRpdGxlICs9IGlk
VmFsdWU7CisgICAgICAgIGlkU3RyaW5nTGVuZ3RoID0gMSArIGlkVmFsdWUubGVuZ3RoKCk7CiAg
ICAgfQorCisgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOworICAgIHVu
c2lnbmVkIGNsYXNzZXNTdHJpbmdMZW5ndGggPSAwOwogICAgIGlmIChlbGVtZW50LT5oYXNDbGFz
cygpICYmIGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKSB7CiAgICAgICAgIGNvbnN0IFNwYWNl
U3BsaXRTdHJpbmcmIGNsYXNzTmFtZXNTdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50
Kj4oZWxlbWVudCktPmNsYXNzTmFtZXMoKTsKICAgICAgICAgc2l6ZV90IGNsYXNzTmFtZUNvdW50
ID0gY2xhc3NOYW1lc1N0cmluZy5zaXplKCk7Ci0gICAgICAgIGlmIChjbGFzc05hbWVDb3VudCkg
ewotICAgICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOwotICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGFzc05hbWVDb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBjbGFzc05hbWVz
U3RyaW5nW2ldOwotICAgICAgICAgICAgICAgIGlmICh1c2VkQ2xhc3NOYW1lcy5jb250YWlucyhj
bGFzc05hbWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICB1c2VkQ2xhc3NOYW1lcy5hZGQoY2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICBub2RlVGl0
bGUgKz0gIi4iOwotICAgICAgICAgICAgICAgIG5vZGVUaXRsZSArPSBjbGFzc05hbWU7Ci0gICAg
ICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1lQ291bnQ7
ICsraSkgeworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBjbGFz
c05hbWVzU3RyaW5nW2ldOworICAgICAgICAgICAgaWYgKHVzZWRDbGFzc05hbWVzLmNvbnRhaW5z
KGNsYXNzTmFtZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB1c2Vk
Q2xhc3NOYW1lcy5hZGQoY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIG5vZGVUaXRsZSArPSAiLiI7
CisgICAgICAgICAgICBub2RlVGl0bGUgKz0gY2xhc3NOYW1lOworICAgICAgICAgICAgY2xhc3Nl
c1N0cmluZ0xlbmd0aCArPSAxICsgY2xhc3NOYW1lLmxlbmd0aCgpOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgbm9kZVRpdGxlICs9ICIgWyI7Ci0gICAgbm9kZVRpdGxlICs9IFN0cmluZzo6bnVt
YmVyKGJvdW5kaW5nQm94LndpZHRoKCkpOwotICAgIG5vZGVUaXRsZS5hcHBlbmQoc3RhdGljX2Nh
c3Q8VUNoYXI+KDB4MDBENykpOyAvLyAmdGltZXM7Ci0gICAgbm9kZVRpdGxlICs9IFN0cmluZzo6
bnVtYmVyKGJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICBub2RlVGl0bGUgKz0gIl0iOworICAg
IFN0cmluZyB3aWR0aE51bWJlclBhcnQgPSAiICIgKyBTdHJpbmc6Om51bWJlcihib3VuZGluZ0Jv
eC53aWR0aCgpKTsKKyAgICBub2RlVGl0bGUgKz0gd2lkdGhOdW1iZXJQYXJ0ICsgcHhTdHJpbmc7
CisgICAgbm9kZVRpdGxlICs9IHRpbWVzU3RyaW5nOworICAgIFN0cmluZyBoZWlnaHROdW1iZXJQ
YXJ0ID0gU3RyaW5nOjpudW1iZXIoYm91bmRpbmdCb3guaGVpZ2h0KCkpOworICAgIG5vZGVUaXRs
ZSArPSBoZWlnaHROdW1iZXJQYXJ0ICsgcHhTdHJpbmc7CiAKICAgICBGb250RGVzY3JpcHRpb24g
ZGVzYzsKLSAgICBGb250RmFtaWx5IGZhbWlseTsKLSAgICBmYW1pbHkuc2V0RmFtaWx5KHNldHRp
bmdzLT5maXhlZEZvbnRGYW1pbHkoKSk7Ci0gICAgZGVzYy5zZXRGYW1pbHkoZmFtaWx5KTsKKyAg
ICBkZXNjLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOwog
ICAgIGRlc2Muc2V0Q29tcHV0ZWRTaXplKGZvbnRIZWlnaHRQeCk7CisgICAgc2V0VXBGb250RmFt
aWxpZXMoZGVzYywgc2V0dGluZ3MpOwogICAgIEZvbnQgZm9udCA9IEZvbnQoZGVzYywgMCwgMCk7
CiAgICAgZm9udC51cGRhdGUoMCk7CiAKICAgICBUZXh0UnVuIG5vZGVUaXRsZVJ1bihub2RlVGl0
bGUpOwogICAgIExheW91dFBvaW50IHRpdGxlQmFzZVBvaW50ID0gTGF5b3V0UG9pbnQoYW5jaG9y
Qm94LngoKSwgYW5jaG9yQm94Lm1heFkoKSAtIDEpOwogICAgIHRpdGxlQmFzZVBvaW50Lm1vdmUo
cmVjdEluZmxhdGVQeCwgcmVjdEluZmxhdGVQeCk7Ci0gICAgTGF5b3V0UmVjdCB0aXRsZVJlY3Qg
PSBlbmNsb3NpbmdJbnRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQobm9kZVRpdGxlUnVu
LCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4KSk7CisgICAgTGF5b3V0UmVjdCB0aXRsZVJl
Y3QgPSBlbmNsb3NpbmdMYXlvdXRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQobm9kZVRp
dGxlUnVuLCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4KSk7CiAgICAgdGl0bGVSZWN0Lmlu
ZmxhdGUocmVjdEluZmxhdGVQeCk7CiAKICAgICAvLyBUaGUgaW5pdGlhbCBvZmZzZXRzIG5lZWRl
ZCB0byBjb21wZW5zYXRlIGZvciBhIDFweC10aGljayBib3JkZXIgc3Ryb2tlICh3aGljaCBpcyBu
b3QgYSBwYXJ0IG9mIHRoZSByZWN0YW5nbGUpLgpAQCAtMjExLDE5ICszMjgsNDkgQEAgdm9pZCBk
cmF3RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgY29u
c3QgTGF5b3V0UmVjdCYgYm8KICAgICAgICAgZHkgPSBvdmVybGF5UmVjdC55KCkgLSB0aXRsZVJl
Y3QueSgpICsgYm9yZGVyV2lkdGhQeDsKIAogICAgIHRpdGxlUmVjdC5tb3ZlKGR4LCBkeSk7Ci0g
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih0b29sdGlwQm9yZGVyQ29sb3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworCisgICAgYm9vbCBpc0Fycm93QXRUb3AgPSB0aXRsZVJlY3QueSgpID4gYW5j
aG9yQm94LnkoKTsKKyAgICB0aXRsZVJlY3QubW92ZSgwLCB0b29sdGlwUGFkZGluZyAqIChpc0Fy
cm93QXRUb3AgPyAxIDogLTEpKTsKKworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IocHhBbmRC
b3JkZXJDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3MoYm9yZGVyV2lkdGhQeCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IodG9vbHRp
cEJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRG
aWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250
ZXh0LmRyYXdSZWN0KHRpdGxlUmVjdCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IodG9vbHRp
cEZvbnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC5kcmF3VGV4dChm
b250LCBub2RlVGl0bGVSdW4sIExheW91dFBvaW50KHRpdGxlUmVjdC54KCkgKyByZWN0SW5mbGF0
ZVB4LCB0aXRsZVJlY3QueSgpICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKSk7CisKKyAg
ICB7CisgICAgICAgIGludCBhcnJvd1RpcFggPSBjYWxjdWxhdGVBcnJvd1RpcFgoYW5jaG9yQm94
LCB0aXRsZVJlY3QpOworICAgICAgICBGbG9hdFBvaW50IGFycm93UG9pbnRzWzNdOworICAgICAg
ICBmbG9hdCBhcnJvd0Jhc2VZID0gaXNBcnJvd0F0VG9wID8gdGl0bGVSZWN0LnkoKSA6IHRpdGxl
UmVjdC5tYXhZKCk7CisgICAgICAgIGFycm93UG9pbnRzWzBdID0gRmxvYXRQb2ludChhcnJvd1Rp
cFggLSBhcnJvd0hhbGZXaWR0aCwgYXJyb3dCYXNlWSk7CisgICAgICAgIGFycm93UG9pbnRzWzFd
ID0gRmxvYXRQb2ludChhcnJvd1RpcFgsIGFycm93QmFzZVkgKyBhcnJvd0hlaWdodCAqIChpc0Fy
cm93QXRUb3AgPyAtMSA6IDEpKTsKKyAgICAgICAgYXJyb3dQb2ludHNbMl0gPSBGbG9hdFBvaW50
KGFycm93VGlwWCArIGFycm93SGFsZldpZHRoLCBhcnJvd0Jhc2VZKTsKKyAgICAgICAgY29udGV4
dC5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvd1BvaW50cyk7CisKKyAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhib3JkZXJXaWR0aFB4
ICsgMSk7CisgICAgICAgIExheW91dFBvaW50IHN0YXJ0UG9pbnQgPSBMYXlvdXRQb2ludChhcnJv
d1BvaW50c1swXS54KCkgKyAxLCBhcnJvd1BvaW50c1swXS55KCkpOworICAgICAgICBMYXlvdXRQ
b2ludCBlbmRQb2ludCA9IExheW91dFBvaW50KGFycm93UG9pbnRzWzJdLngoKSAtIDEsIGFycm93
UG9pbnRzWzJdLnkoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0xpbmUoc3RhcnRQb2ludCwgZW5k
UG9pbnQpOworICAgIH0KKworICAgIGludCBjdXJyZW50UG9zID0gMDsKKyAgICBjdXJyZW50UG9z
ID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHRhZ05hbWVMZW5ndGgs
IHRhZ0NvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGlmIChpZFN0cmluZ0xl
bmd0aCkKKyAgICAgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBj
dXJyZW50UG9zLCBpZFN0cmluZ0xlbmd0aCwgYXR0ckNvbG9yLCBmb250LCBjb250ZXh0LCB0aXRs
ZVJlY3QpOworICAgIGlmIChjbGFzc2VzU3RyaW5nTGVuZ3RoKQorICAgICAgICBjdXJyZW50UG9z
ID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIGNsYXNzZXNTdHJpbmdM
ZW5ndGgsIGF0dHJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBjdXJyZW50
UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHdpZHRoTnVtYmVy
UGFydC5sZW5ndGgoKSwgbm9ybWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7Cisg
ICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBw
eFN0cmluZy5sZW5ndGgoKSArIHRpbWVzU3RyaW5nLmxlbmd0aCgpLCBweEFuZEJvcmRlckNvbG9y
LCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3Ry
aW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgaGVpZ2h0TnVtYmVyUGFydC5sZW5ndGgoKSwg
bm9ybWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAgZHJhd1N1YnN0cmlu
Zyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHB4U3RyaW5nLmxlbmd0aCgpLCBweEFuZEJvcmRl
ckNvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOwogfQogCiB9IC8vIGFub255bW91cyBu
YW1lc3BhY2UKIAogbmFtZXNwYWNlIERPTU5vZGVIaWdobGlnaHRlciB7CiAKLXZvaWQgZHJhd05v
ZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBIaWdobGln
aHRNb2RlIG1vZGUpCit2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKIHsKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBGcmFtZSogY29u
dGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKQEAgLTI0MCw3ICszODcs
NyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9k
ZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29u
dGFpbmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CiAgICAgRmxvYXRSZWN0
IG92ZXJsYXlSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0gICAgaWYgKCFvdmVy
bGF5UmVjdC5jb250YWlucyhib3VuZGluZ0JveCkgJiYgIWJvdW5kaW5nQm94LmNvbnRhaW5zKGVu
Y2xvc2luZ0ludFJlY3Qob3ZlcmxheVJlY3QpKSkKKyAgICBpZiAoIW92ZXJsYXlSZWN0LmNvbnRh
aW5zKGJvdW5kaW5nQm94KSAmJiAhYm91bmRpbmdCb3guY29udGFpbnMoZW5jbG9zaW5nTGF5b3V0
UmVjdChvdmVybGF5UmVjdCkpKQogICAgICAgICBvdmVybGF5UmVjdCA9IHZpZXctPnZpc2libGVD
b250ZW50UmVjdCgpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKC1vdmVybGF5UmVjdC54KCksIC1v
dmVybGF5UmVjdC55KCkpOwogCkBAIC0yNjYsNyArNDEzLDYgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hs
aWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodE1vZGUg
bW9kZSkKICAgICAgICAgTGF5b3V0UmVjdCBtYXJnaW5Cb3goYm9yZGVyQm94LngoKSAtIHJlbmRl
ckJveC0+bWFyZ2luTGVmdCgpLCBib3JkZXJCb3gueSgpIC0gcmVuZGVyQm94LT5tYXJnaW5Ub3Ao
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm94LndpZHRoKCkgKyByZW5kZXJC
b3gtPm1hcmdpbkxlZnQoKSArIHJlbmRlckJveC0+bWFyZ2luUmlnaHQoKSwgYm9yZGVyQm94Lmhl
aWdodCgpICsgcmVuZGVyQm94LT5tYXJnaW5Ub3AoKSArIHJlbmRlckJveC0+bWFyZ2luQm90dG9t
KCkpOwogCi0KICAgICAgICAgRmxvYXRRdWFkIGFic0NvbnRlbnRRdWFkID0gcmVuZGVyQm94LT5s
b2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChjb250ZW50Qm94KSk7CiAgICAgICAgIEZsb2F0
UXVhZCBhYnNQYWRkaW5nUXVhZCA9IHJlbmRlckJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9h
dFJlY3QocGFkZGluZ0JveCkpOwogICAgICAgICBGbG9hdFF1YWQgYWJzQm9yZGVyUXVhZCA9IHJl
bmRlckJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoYm9yZGVyQm94KSk7CkBAIC0y
NzksNyArNDI1LDcgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodE1vZGUgbW9kZSkKIAogICAgICAgICB0aXRsZUFu
Y2hvckJveCA9IGFic01hcmdpblF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIAotICAgICAg
ICBkcmF3SGlnaGxpZ2h0Rm9yQm94KGNvbnRleHQsIGFic0NvbnRlbnRRdWFkLCBhYnNQYWRkaW5n
UXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgbW9kZSk7CisgICAgICAgIGRyYXdI
aWdobGlnaHRGb3JCb3goY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1BhZGRpbmdRdWFkLCBh
YnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBoaWdobGlnaHREYXRhKTsKICAgICB9IGVsc2Ug
aWYgKHJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpIHx8IGlzU1ZHUmVuZGVyZXIpIHsKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBzaG93IG1hcmdpbnMvcGFkZGluZy9ib3JkZXIgZm9yIGlu
bGluZXMuCiAgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGxpbmVCb3hRdWFkczsKQEAgLTI4Nyw3
ICs0MzMsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGluZUJveFF1YWRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgbGluZUJv
eFF1YWRzW2ldICs9IG1haW5GcmFtZU9mZnNldDsKIAotICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9y
TGluZUJveGVzT3JTVkdSZW5kZXJlcihjb250ZXh0LCBsaW5lQm94UXVhZHMpOworICAgICAgICBk
cmF3SGlnaGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5kZXJlcihjb250ZXh0LCBsaW5lQm94UXVh
ZHMsIGhpZ2hsaWdodERhdGEpOwogICAgIH0KIAogICAgIC8vIERyYXcgbm9kZSB0aXRsZSBpZiBu
ZWNlc3NhcnkuCkBAIC0yOTUsMTIgKzQ0MSwxMSBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQog
ICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBX
ZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MgPSBjb250YWluaW5nRnJhbWUtPnNldHRpbmdzKCk7
Ci0gICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwpCi0gICAg
ICAgIGRyYXdFbGVtZW50VGl0bGUoY29udGV4dCwgbm9kZSwgYm91bmRpbmdCb3gsIHRpdGxlQW5j
aG9yQm94LCBvdmVybGF5UmVjdCwgc2V0dGluZ3MpOworICAgIGlmIChoaWdobGlnaHREYXRhLT5z
aG93SW5mbykKKyAgICAgICAgZHJhd0VsZW1lbnRUaXRsZShjb250ZXh0LCBub2RlLCBib3VuZGlu
Z0JveCwgdGl0bGVBbmNob3JCb3gsIG92ZXJsYXlSZWN0LCBjb250YWluaW5nRnJhbWUtPnNldHRp
bmdzKCkpOwogfQogCi12b2lkIGRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgRG9jdW1lbnQqIGRvY3VtZW50LCBJbnRSZWN0KiByZWN0KQordm9pZCBkcmF3UmVjdEhp
Z2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVudCwgTGF5
b3V0UmVjdCogcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNv
bG9yKQogewogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMCwxNCAr
NDU1LDEyIEBAIHZvaWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBEb2N1bWVudCogZG9jdW1lbnQsIEludFJlY3QqIHJlCiAgICAgY29udGV4dC50cmFuc2xhdGUo
LW92ZXJsYXlSZWN0LngoKSwgLW92ZXJsYXlSZWN0LnkoKSk7CiAKICAgICBzdGF0aWMgY29uc3Qg
aW50IG91dGxpbmVUaGlja25lc3MgPSAyOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3Is
IG91dGxpbmVDb2xvciwgKDI1NSwgMCwgMCwgMjI4KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDb2xvciwgZmlsbENvbG9yLCAoMjU1LCAwLCAwLCAyMCkpOwogCiAgICAgUGF0aCBxdWFkUGF0
aCA9IHF1YWRUb1BhdGgoRmxvYXRSZWN0KCpyZWN0KSk7CiAKICAgICAvLyBDbGlwIG91dCB0aGUg
cXVhZCwgdGhlbiBkcmF3IHdpdGggYSAycHggc3Ryb2tlIHRvIGdldCBhIHBpeGVsCiAgICAgLy8g
b2Ygb3V0bGluZSAoYmVjYXVzZSBpbmZsYXRpbmcgYSBxdWFkIGlzIGhhcmQpCi0gICAgeworICAg
IGlmIChvdXRsaW5lQ29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIGNvbnRleHQuc2F2ZSgpOwog
ICAgICAgICBjb250ZXh0LmNsaXBPdXQocXVhZFBhdGgpOwogCkBAIC0zMjksOCArNDcyLDEwIEBA
IHZvaWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEb2N1bWVu
dCogZG9jdW1lbnQsIEludFJlY3QqIHJlCiAgICAgfQogCiAgICAgLy8gTm93IGRvIHRoZSBmaWxs
Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICBjb250ZXh0LmZpbGxQYXRoKHF1YWRQYXRoKTsKKyAgICBpZiAoY29sb3IuaXNWYWxp
ZCgpKSB7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUGF0aChxdWFkUGF0aCk7CisgICAgfQogfQog
CiB9IC8vIG5hbWVzcGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaAppbmRleCAzMGQ3NzYwLi5iYWMzZGI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCkBAIC0yOSwy
NiArMjksMzMgQEAKICNpZm5kZWYgRE9NTm9kZUhpZ2hsaWdodGVyX2gKICNkZWZpbmUgRE9NTm9k
ZUhpZ2hsaWdodGVyX2gKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ29sb3I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwogCi1uYW1lc3BhY2UgRE9NTm9kZUhpZ2hs
aWdodGVyIHsKLQotZW51bSBIaWdobGlnaHRNb2RlIHsKLSAgICBIaWdobGlnaHRBbGwsCi0gICAg
SGlnaGxpZ2h0Q29udGVudCwKLSAgICBIaWdobGlnaHRQYWRkaW5nLAotICAgIEhpZ2hsaWdodEJv
cmRlciwKLSAgICBIaWdobGlnaHRNYXJnaW4KK3N0cnVjdCBIaWdobGlnaHREYXRhIHsKKyAgICBD
b2xvciBjb250ZW50OworICAgIENvbG9yIGNvbnRlbnRPdXRsaW5lOworICAgIENvbG9yIHBhZGRp
bmc7CisgICAgQ29sb3IgcGFkZGluZ091dGxpbmU7CisgICAgQ29sb3IgYm9yZGVyOworICAgIENv
bG9yIGJvcmRlck91dGxpbmU7CisgICAgQ29sb3IgbWFyZ2luOworICAgIENvbG9yIG1hcmdpbk91
dGxpbmU7CisgICAgYm9vbCBzaG93SW5mbzsKIH07CiAKLXZvaWQgZHJhd05vZGVIaWdobGlnaHQo
R3JhcGhpY3NDb250ZXh0JiwgTm9kZSosIEhpZ2hsaWdodE1vZGUpOworbmFtZXNwYWNlIERPTU5v
ZGVIaWdobGlnaHRlciB7CisKK3ZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0
JiwgTm9kZSosIEhpZ2hsaWdodERhdGEqKTsKIAotdm9pZCBkcmF3UmVjdEhpZ2hsaWdodChHcmFw
aGljc0NvbnRleHQmLCBEb2N1bWVudCosIEludFJlY3QqKTsKK3ZvaWQgZHJhd1JlY3RIaWdobGln
aHQoR3JhcGhpY3NDb250ZXh0JiwgRG9jdW1lbnQqLCBJbnRSZWN0KiwgY29uc3QgQ29sb3ImLCBj
b25zdCBDb2xvciYgb3V0bGluZUNvbG9yKTsKIAogfSAvLyBuYW1lc3BhY2UgRE9NTm9kZUhpZ2hs
aWdodGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYjJi
OTg4Li43ZGY3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBA
IC04NzEsNiArODcxLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibG9jYXRp
b24iLCAiJHJlZiI6ICJEZWJ1Z2dlci5Mb2NhdGlvbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJIYW5kbGVyIGNvZGUgbG9jYXRpb24uIiB9CiAgICAgICAgICAgICAgICAgXSwK
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRE9NIGludGVyYWN0aW9uIGlzIGltcGxl
bWVudGVkIGluIHRlcm1zIG9mIG1pcnJvciBvYmplY3RzIHRoYXQgcmVwcmVzZW50IHRoZSBhY3R1
YWwgRE9NIG5vZGVzLiBET01Ob2RlIGlzIGEgYmFzZSBub2RlIG1pcnJvciB0eXBlLiIKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIlJHQkEiLAor
ICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInByb3Bl
cnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiciIsICJ0eXBlIjogImlu
dGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHJlZCBjb21wb25lbnQsIGluIHRoZSBbMC0yNTVd
IHJhbmdlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJnIiwgInR5cGUiOiAi
aW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZ3JlZW4gY29tcG9uZW50LCBpbiB0aGUgWzAt
MjU1XSByYW5nZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYiIsICJ0eXBl
IjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJsdWUgY29tcG9uZW50LCBpbiB0aGUg
WzAtMjU1XSByYW5nZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYSIsICJ0
eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgYWxw
aGEgY29tcG9uZW50LCBpbiB0aGUgWzAtMV0gcmFuZ2UgKGRlZmF1bHQ6IDEpLiIgfQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgc3RydWN0dXJl
IGhvbGRpbmcgYW4gUkdCQSBjb2xvci4iCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAg
ICAgICJjb21tYW5kcyI6IFsKQEAgLTEwNDAsNyArMTA1MSw5IEBACiAgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiWCBj
b29yZGluYXRlIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6
ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlkgY29vcmRpbmF0ZSIgfSwKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRp
b24iOiAiUmVjdGFuZ2xlIHdpZHRoIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImhlaWdodCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVjdGFuZ2xlIGhl
aWdodCIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlaWdodCIsICJ0eXBlIjog
ImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVjdGFuZ2xlIGhlaWdodCIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJjb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhpZ2hsaWdodCBmaWxsIGNvbG9yIChkZWZhdWx0
OiB0cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm91dGxp
bmVDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGhpZ2hsaWdodCBvdXRsaW5lIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9
CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSGln
aGxpZ2h0cyBnaXZlbiByZWN0YW5nbGUuIENvb3JkaW5hdGVzIGFyZSBhYnNvbHV0ZSB3aXRoIHJl
c3BlY3QgdG8gdGhlIG1haW4gZnJhbWUgdmlld3BvcnQuIgogICAgICAgICAgICAgfSwKQEAgLTEw
NDgsNyArMTA2MSwxNSBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogImhpZ2hsaWdodE5vZGUi
LAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVu
dGlmaWVyIG9mIHRoZSBub2RlIHRvIGhpZ2hsaWdodCIgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJtb2RlIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbImFsbCIsICJjb250
ZW50IiwgInBhZGRpbmciLCAiYm9yZGVyIiwgIm1hcmdpbiJdLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiVGhlIGJveCBtb2RlbCBjb21wb25lbnQocykgdG8gaGlnaGxpZ2h0IChk
ZWZhdWx0OiBcImFsbFwiKS4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaG93
SW5mbyIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiV2hldGhlciB0aGUgbm9k
ZSBpbmZvIHRvb2x0aXAgc2hvdWxkIGJlIHNob3duLiIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJjb250ZW50Q29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1
ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBjb250ZW50IGJveCBoaWdobGlnaHQgZmlsbCBjb2xvciAo
ZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJjb250ZW50T3V0bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUs
ICJkZXNjcmlwdGlvbiI6ICJUaGUgY29udGVudCBib3ggaGlnaGxpZ2h0IG91dGxpbmUgY29sb3Ig
KGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAicGFkZGluZ0NvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJUaGUgcGFkZGluZyBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJh
bnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYWRkaW5nT3V0
bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJUaGUgcGFkZGluZyBoaWdobGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNw
YXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3JkZXJDb2xvciIs
ICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJv
cmRlciBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3JkZXJPdXRsaW5lQ29sb3IiLCAiJHJlZiI6
ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3JkZXIgaGln
aGxpZ2h0IG91dGxpbmUgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibWFyZ2luQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBtYXJnaW4gaGlnaGxpZ2h0IGZpbGwg
Y29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibWFyZ2luT3V0bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6
IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgbWFyZ2luIGhpZ2hsaWdodCBvdXRsaW5lIGNvbG9y
IChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiSGlnaGxpZ2h0cyBET00gbm9kZSB3aXRoIGdpdmVuIGlk
LiIKICAgICAgICAgICAgIH0sCkBAIC0xMDU5LDcgKzEwODAsOSBAQAogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICJuYW1lIjogImhpZ2hsaWdodEZyYW1lIiwKICAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlk
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIGZy
YW1lIHRvIGhpZ2hsaWdodCIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1l
SWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUg
ZnJhbWUgdG8gaGlnaGxpZ2h0IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNv
bnRlbnRDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiVGhlIGNvbnRlbnQgYm94IGhpZ2hsaWdodCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0cmFu
c3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRPdXRs
aW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRoZSBjb250ZW50IGJveCBoaWdobGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJh
bnNwYXJlbnQpLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkhpZ2hsaWdodHMgb3duZXIgZWxlbWVudCBvZiB0aGUgZnJhbWUgd2l0aCBnaXZl
biBpZC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAyNDU2ZTE4Li43NDQxYTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
QEAgLTk4LDYgKzk4LDM0IEBAIG5hbWVzcGFjZSBET01BZ2VudFN0YXRlIHsKIHN0YXRpYyBjb25z
dCBjaGFyIGRvY3VtZW50UmVxdWVzdGVkW10gPSAiZG9jdW1lbnRSZXF1ZXN0ZWQiOwogfTsKIAor
c3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNv
bG9yT2JqZWN0KQoreworICAgIGlmICghY29sb3JPYmplY3QpCisgICAgICAgIHJldHVybiBDb2xv
cjo6dHJhbnNwYXJlbnQ7CisKKyAgICBpbnQgcjsKKyAgICBpbnQgZzsKKyAgICBpbnQgYjsKKyAg
ICBib29sIHN1Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJyIiwgJnIpOworICAg
IHN1Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigiZyIsICZnKTsKKyAgICBzdWNj
ZXNzIHw9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImIiLCAmYik7CisgICAgaWYgKCFzdWNj
ZXNzKQorICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OworCisgICAgZG91YmxlIGE7
CisgICAgc3VjY2VzcyA9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImEiLCAmYSk7CisgICAg
aWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gQ29sb3IociwgZywgYik7CisKKyAgICAvLyBD
bGFtcCBhbHBoYSB0byB0aGUgWzAuLjFdIHJhbmdlLgorICAgIGlmIChhIDwgMCkKKyAgICAgICAg
YSA9IDA7CisgICAgZWxzZSBpZiAoYSA+IDEpCisgICAgICAgIGEgPSAxOworCisgICAgcmV0dXJu
IENvbG9yKHIsIGcsIGIsIHN0YXRpY19jYXN0PGludD4oYSAqIDI1NSkpOworfQorCiBjbGFzcyBN
YXRjaEpvYiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoKExpc3RIYXNoU2V0PE5v
ZGUqPiYgcmVzdWx0Q29sbGVjdG9yKSA9IDA7CkBAIC05NzcsNyArMTAwNSw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmZvY3VzTm9kZSgpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWdu
ZWQpCiB7Ci0gICAgaWYgKCFtX3NlYXJjaGluZ0Zvck5vZGUpCisgICAgaWYgKCFtX3NlYXJjaGlu
Z0Zvck5vZGUgfHwgIW1faGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9k
ZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKQEAgLTk4NSw3ICsxMDEzLDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCB1bnMKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAg
ICBpZiAobm9kZSkgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICAgICAgaGlnaGxp
Z2h0KCZlcnJvciwgbm9kZSwgImFsbCIpOworICAgICAgICBoaWdobGlnaHQoJmVycm9yLCBub2Rl
KTsKICAgICB9CiB9CiAKQEAgLTEwMDUsMzYgKzEwMzMsNzAgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKQog
ICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmhpZ2hsaWdodChFcnJvclN0cmluZyosIE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYg
bW9kZSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodChFcnJvclN0cmluZyosIE5v
ZGUqIG5vZGUpCiB7CisgICAgLy8gVGhpcyBtZXRob2QgcmVxdWlyZXMgbV9oaWdobGlnaHRlZFJl
Y3QgdG8gaGF2ZSBiZWVuIHNldCBieSBpdHMgY2xpZW50LgogICAgIEFTU0VSVF9BUkcobm9kZSwg
bm9kZSk7CiAgICAgbV9oaWdobGlnaHRlZE5vZGUgPSBub2RlOwotICAgIG1faGlnaGxpZ2h0TW9k
ZSA9IG1vZGU7CiAgICAgbV9jbGllbnQtPmhpZ2hsaWdodCgpOwogfQogCi12b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQg
d2lkdGgsIGludCBoZWlnaHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0
KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIG91dGxpbmVDb2xvcikKIHsKICAgICBtX2hpZ2hsaWdodGVkUmVjdCA9IGFkb3B0UHRy
KG5ldyBJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICBtX2hpZ2hsaWdodERhdGEg
PSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPmNv
bnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPmNvbnRlbnRP
dXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAgIG1fY2xpZW50LT5oaWdobGln
aHQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0
cmluZyogZXJyb3IsIGludCBub2RlSWQsIFN0cmluZyogbW9kZSkKLXsKLSAgICBpZiAoTm9kZSog
bm9kZSA9IG5vZGVGb3JJZChub2RlSWQpKQotICAgICAgICBoaWdobGlnaHQoZXJyb3IsIG5vZGUs
IG1vZGUgJiYgIW1vZGUtPmlzRW1wdHkoKSA/ICptb2RlIDogImFsbCIpOwordm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKKyAgICBFcnJvclN0cmluZyogZXJyb3IsCisgICAg
aW50IG5vZGVJZCwKKyAgICBib29sIHNob3dJbmZvLAorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBjb250ZW50Q29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIGNvbnRlbnRPdXRsaW5lQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIHBhZGRpbmdDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcGFk
ZGluZ091dGxpbmVDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogYm9y
ZGVyQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGJvcmRlck91dGxp
bmVDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbWFyZ2luQ29sb3Is
CisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1hcmdpbk91dGxpbmVDb2xvcikK
K3sKKyAgICBpZiAoTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpKSB7CisgICAgICAgIG1f
aGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOworICAgICAgICBt
X2hpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gc2hvd0luZm87CisgICAgICAgIG1faGlnaGxpZ2h0
RGF0YS0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29udGVudENvbG9yKTsKKyAgICAgICAgbV9oaWdo
bGlnaHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3IoY29udGVudE91dGxpbmVDb2xv
cik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+cGFkZGluZyA9IHBhcnNlQ29sb3IocGFkZGlu
Z0NvbG9yKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5wYWRkaW5nT3V0bGluZSA9IHBhcnNl
Q29sb3IocGFkZGluZ091dGxpbmVDb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+Ym9y
ZGVyID0gcGFyc2VDb2xvcihib3JkZXJDb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+
Ym9yZGVyT3V0bGluZSA9IHBhcnNlQ29sb3IoYm9yZGVyT3V0bGluZUNvbG9yKTsKKyAgICAgICAg
bV9oaWdobGlnaHREYXRhLT5tYXJnaW4gPSBwYXJzZUNvbG9yKG1hcmdpbkNvbG9yKTsKKyAgICAg
ICAgbV9oaWdobGlnaHREYXRhLT5tYXJnaW5PdXRsaW5lID0gcGFyc2VDb2xvcihtYXJnaW5PdXRs
aW5lQ29sb3IpOworICAgICAgICBoaWdobGlnaHQoZXJyb3IsIG5vZGUpOworICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGln
aHRGcmFtZSgKKyAgICBFcnJvclN0cmluZyogZXJyb3IsCisgICAgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLAorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwKKyAgICBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKQogewogICAgIEZyYW1lKiBm
cmFtZSA9IG1fcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOwotICAgIGlmIChmcmFtZSAm
JiBmcmFtZS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgIGhpZ2hsaWdodChlcnJvciwgZnJhbWUt
Pm93bmVyRWxlbWVudCgpLCAiYWxsIik7CisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5vd25lckVs
ZW1lbnQoKSkgeworICAgICAgICBtX2hpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxp
Z2h0RGF0YSgpKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5jb250ZW50ID0gcGFyc2VDb2xv
cihjb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUgPSBwYXJz
ZUNvbG9yKG91dGxpbmVDb2xvcik7CisgICAgICAgIGhpZ2hsaWdodChlcnJvciwgZnJhbWUtPm93
bmVyRWxlbWVudCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZGVI
aWdobGlnaHQoRXJyb3JTdHJpbmcqKQogewogICAgIG1faGlnaGxpZ2h0ZWROb2RlID0gMDsKKyAg
ICBtX2hpZ2hsaWdodERhdGEuY2xlYXIoKTsKICAgICBtX2hpZ2hsaWdodGVkUmVjdC5jbGVhcigp
OwogICAgIG1fY2xpZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CkBAIC0xNTEyLDIzICsxNTc0LDE0
IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2
ZU5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkcmF3
SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAobV9o
aWdobGlnaHRlZFJlY3QpIHsKLSAgICAgICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3UmVjdEhp
Z2hsaWdodChjb250ZXh0LCBtX2RvY3VtZW50LmdldCgpLCBtX2hpZ2hsaWdodGVkUmVjdC5nZXQo
KSk7CisgICAgICAgIERPTU5vZGVIaWdobGlnaHRlcjo6ZHJhd1JlY3RIaWdobGlnaHQoY29udGV4
dCwgbV9kb2N1bWVudC5nZXQoKSwgbV9oaWdobGlnaHRlZFJlY3QuZ2V0KCksIG1faGlnaGxpZ2h0
RGF0YS0+Y29udGVudCwgbV9oaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1faGlnaGxpZ2h0ZWROb2RlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1vZGUgbW9kZSA9IERP
TU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsOwotICAgIGlmIChtX2hpZ2hsaWdodE1vZGUg
PT0gImNvbnRlbnQiKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGln
aHRDb250ZW50OwotICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0TW9kZSA9PSAicGFkZGluZyIpCi0g
ICAgICAgIG1vZGUgPSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodFBhZGRpbmc7Ci0gICAg
ZWxzZSBpZiAobV9oaWdobGlnaHRNb2RlID09ICJib3JkZXIiKQotICAgICAgICBtb2RlID0gRE9N
Tm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRCb3JkZXI7Ci0gICAgZWxzZSBpZiAobV9oaWdobGln
aHRNb2RlID09ICJtYXJnaW4iKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpI
aWdobGlnaHRNYXJnaW47Ci0gICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdo
dChjb250ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5nZXQoKSwgbW9kZSk7CisgICAgRE9NTm9kZUhp
Z2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChjb250ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5n
ZXQoKSwgbV9oaWdobGlnaHREYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA5
YjE4NDkzLi5jOGZjYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaApAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSGl0VGVz
dFJlc3VsdDsKIGNsYXNzIE1hdGNoSm9iOwogY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBIaWdo
bGlnaHREYXRhOwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdl
bnRzOwogY2xhc3MgTmFtZU5vZGVNYXA7CkBAIC0xMzMsOSArMTM0LDkgQEAgcHVibGljOgogICAg
IHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBp
bnQqIG5vZGVJZCk7CiAgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2b2lkIGhpZGVIaWdo
bGlnaHQoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcq
LCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBoaWdobGln
aHROb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgU3RyaW5nKiBtb2RlKTsKLSAgICB2b2lk
IGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKKyAg
ICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0
aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKKyAgICB2b2lkIGhpZ2hs
aWdodE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBib29sIHNob3dJbmZvLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29udGVudENvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogY29udGVudE91dGxpbmVDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIHBhZGRpbmdDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHBhZGRp
bmdPdXRsaW5lQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBib3JkZXJDb2xv
ciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGJvcmRlck91dGxpbmVDb2xvciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1hcmdpbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogbWFyZ2luT3V0bGluZUNvbG9yKTsKKyAgICB2b2lkIGhpZ2hsaWdodEZy
YW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRs
aW5lQ29sb3IpOwogICAgIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50
IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBjb25zdCBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9k
ZUlkKTsKIAogICAgIE5vZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faGln
aGxpZ2h0ZWROb2RlLmdldCgpOyB9CkBAIC0xODMsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50
KiwgSW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqKTsKIAogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpOwotICAg
IHZvaWQgaGlnaGxpZ2h0KEVycm9yU3RyaW5nKiwgTm9kZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7
CisgICAgdm9pZCBoaWdobGlnaHQoRXJyb3JTdHJpbmcqLCBOb2RlKik7CiAKICAgICAvLyBOb2Rl
LXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+
IE5vZGVUb0lkTWFwOwpAQCAtMjMzLDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJl
dmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CiAg
ICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0ZWROb2RlOwogICAgIE93blB0cjxJbnRSZWN0PiBt
X2hpZ2hsaWdodGVkUmVjdDsKLSAgICBTdHJpbmcgbV9oaWdobGlnaHRNb2RlOworICAgIE93blB0
cjxIaWdobGlnaHREYXRhPiBtX2hpZ2hsaWdodERhdGE7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9k
ZVRvRm9jdXM7CiAgICAgYm9vbCBtX3NlYXJjaGluZ0Zvck5vZGU7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMKaW5kZXggNzNlNDdkNC4uMmM1YmEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzCkBAIC0zMyw2
ICszMywxMSBAQCBXZWJJbnNwZWN0b3IuQ29sb3IgPSBmdW5jdGlvbihzdHIpCiAgICAgdGhpcy5f
cGFyc2UoKTsKIH0KIAorV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBID0gZnVuY3Rpb24ociwg
ZywgYiwgYSkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcigicmdiYSgiICsg
ciArICIsIiArIGcgKyAiLCIgKyBiICsgIiwiICsgKHR5cGVvZiBhID09PSAidW5kZWZpbmVkIiA/
IDEgOiBhKSArICIpIik7Cit9CisKIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAg
ICAgZ2V0IHNob3J0aGV4KCkKICAgICB7CkBAIC0xNjYsNiArMTcxLDIxIEBAIFdlYkluc3BlY3Rv
ci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRocm93ICJpbnZhbGlkIGNvbG9yIGZvcm1h
dCI7CiAgICAgfSwKIAorICAgIHRvUHJvdG9jb2xSR0JBOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5fcHJvdG9jb2xSR0JBKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3By
b3RvY29sUkdCQTsKKworICAgICAgICB2YXIgY29tcG9uZW50cyA9IHRoaXMucmdiYTsKKyAgICAg
ICAgaWYgKGNvbXBvbmVudHMpCisgICAgICAgICAgICB0aGlzLl9wcm90b2NvbFJHQkEgPSB7IHI6
IE51bWJlcihjb21wb25lbnRzWzBdKSwgZzogTnVtYmVyKGNvbXBvbmVudHNbMV0pLCBiOiBOdW1i
ZXIoY29tcG9uZW50c1syXSksIGE6IE51bWJlcihjb21wb25lbnRzWzNdKSB9OworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIGNvbXBvbmVudHMgPSB0aGlzLnJnYjsKKyAgICAgICAgICAgIHRo
aXMuX3Byb3RvY29sUkdCQSA9IHsgcjogTnVtYmVyKGNvbXBvbmVudHNbMF0pLCBnOiBOdW1iZXIo
Y29tcG9uZW50c1sxXSksIGI6IE51bWJlcihjb21wb25lbnRzWzJdKSB9OworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB0aGlzLl9wcm90b2NvbFJHQkE7CisgICAgfSwKKwogICAgIF9yZ2JUb0hl
eDogZnVuY3Rpb24ocmdiKQogICAgIHsKICAgICAgICAgdmFyIHIgPSBwYXJzZUludChyZ2JbMF0p
LnRvU3RyaW5nKDE2KTsKQEAgLTY2MSwzICs2ODEsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLkFk
dmFuY2VkTmlja05hbWVzID0gewogICAgICJyZ2JhKDAsMCwwLDApIjogW1swLCAwLCAwLCAwXSwg
WzAsIDAsIDAsIDBdLCAidHJhbnNwYXJlbnQiXSwKICAgICAiaHNsYSgwLDAsMCwwKSI6IFtbMCwg
MCwgMCwgMF0sIFswLCAwLCAwLCAwXSwgInRyYW5zcGFyZW50Il0sCiB9OworCitXZWJJbnNwZWN0
b3IuQ29sb3IuUGFnZUhpZ2hsaWdodCA9IHsKKyAgICBDb250ZW50OiBXZWJJbnNwZWN0b3IuQ29s
b3IuZnJvbVJHQkEoMTExLCAxNjgsIDIyMCwgLjY2KSwKKyAgICBDb250ZW50T3V0bGluZTogV2Vi
SW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDksIDgzLCAxNDgpLAorICAgIFBhZGRpbmc6IFdlYklu
c3BlY3Rvci5Db2xvci5mcm9tUkdCQSgxNDcsIDE5NiwgMTI1LCAuNTUpLAorICAgIFBhZGRpbmdP
dXRsaW5lOiBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEoNTUsIDExOCwgMjgpLAorICAgIEJv
cmRlcjogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDI1NSwgMjI5LCAxNTMsIC42NiksCisg
ICAgQm9yZGVyT3V0bGluZTogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDEyNywgOTYsIDAp
LAorICAgIE1hcmdpbjogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDI0NiwgMTc4LCAxMDcs
IC42NiksCisgICAgTWFyZ2luT3V0bGluZTogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDE4
MCwgOTUsIDQpCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwpp
bmRleCBiMDU4YTQwLi5jMmUwMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwpAQCAtMTI4LDE1ICsxMjgs
MzggQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGlmIChmcm9tRWxlbWVudCA9PT0gdG9FbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwog
CisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlT3ZlcihlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKKworICAgICAgICAg
ICAgdmFyIGJnQ29sb3I7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJt
YXJnaW4iKSkKKyAgICAgICAgICAgICAgICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBh
Z2VIaWdobGlnaHQuTWFyZ2luLnRvU3RyaW5nKCJvcmlnaW5hbCIpOworICAgICAgICAgICAgZWxz
ZSBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJib3JkZXIiKSkKKyAgICAgICAgICAgICAgICBi
Z0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQm9yZGVyLnRvU3RyaW5n
KCJvcmlnaW5hbCIpOworICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNz
KCJwYWRkaW5nIikpCisgICAgICAgICAgICAgICAgYmdDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xv
ci5QYWdlSGlnaGxpZ2h0LlBhZGRpbmcudG9TdHJpbmcoIm9yaWdpbmFsIik7CisgICAgICAgICAg
ICBlbHNlIGlmIChlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoImNvbnRlbnQiKSkKKyAgICAgICAgICAg
ICAgICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29udGVudC50
b1N0cmluZygib3JpZ2luYWwiKTsKKyAgICAgICAgICAgIGlmIChiZ0NvbG9yKQorICAgICAgICAg
ICAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYmdDb2xvcjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlT3V0KGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiI7CisgICAgICAg
ICAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGlmIChzaG93SGlnaGxpZ2h0KSB7CiAgICAgICAgICAgICAvLyBJbnRvIGVsZW1lbnQu
CiAgICAgICAgICAgICBpZiAodGhpcy5ub2RlICYmIHRvRWxlbWVudCkKLSAgICAgICAgICAgICAg
ICB0b0VsZW1lbnQuYWRkU3R5bGVDbGFzcygiaG92ZXJlZCIpOworICAgICAgICAgICAgICAgIGhh
bmRsZU1vdXNlT3Zlcih0b0VsZW1lbnQpOwogICAgICAgICAgICAgdmFyIG5vZGVJZCA9IHRoaXMu
bm9kZSA/IHRoaXMubm9kZS5pZCA6IDA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAv
LyBPdXQgb2YgZWxlbWVudC4KICAgICAgICAgICAgIGlmIChmcm9tRWxlbWVudCkKLSAgICAgICAg
ICAgICAgICBmcm9tRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJob3ZlcmVkIik7CisgICAgICAg
ICAgICAgICAgaGFuZGxlTW91c2VPdXQoZnJvbUVsZW1lbnQpOwogICAgICAgICAgICAgdmFyIG5v
ZGVJZCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGVJZCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXgg
OTNmMzJlMS4uOWJlOTM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xMDk1LDcgKzEwOTUsNyBAQCBXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAo
aG92ZXJlZCkgewogICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFz
cygiaG92ZXJlZCIpOwotICAgICAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0RnJhbWUodGhpcy5f
ZnJhbWVJZCk7CisgICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHRGcmFtZSh0aGlzLl9mcmFt
ZUlkLCBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Db250ZW50LnRvUHJvdG9jb2xS
R0JBKCksIFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkNvbnRlbnRPdXRsaW5lLnRv
UHJvdG9jb2xSR0JBKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGhpcy5saXN0
SXRlbUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaG92ZXJlZCIpOwogICAgICAgICAgICAgRE9N
QWdlbnQuaGlkZUhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IGE2Yjk0ZWMuLmQyNWQ5YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwu
anMKQEAgLTczNyw3ICs3MzcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRlZFJlY3QgPT09IHJlY29yZC5kYXRh
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9oaWdobGlnaHRlZFJlY3QgPSBy
ZWNvcmQuZGF0YTsKLSAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0UmVjdCh0aGlzLl9oaWdobGln
aHRlZFJlY3QueCwgdGhpcy5faGlnaGxpZ2h0ZWRSZWN0LnksIHRoaXMuX2hpZ2hsaWdodGVkUmVj
dC53aWR0aCwgdGhpcy5faGlnaGxpZ2h0ZWRSZWN0LmhlaWdodCk7CisgICAgICAgIERPTUFnZW50
LmhpZ2hsaWdodFJlY3QodGhpcy5faGlnaGxpZ2h0ZWRSZWN0LngsIHRoaXMuX2hpZ2hsaWdodGVk
UmVjdC55LCB0aGlzLl9oaWdobGlnaHRlZFJlY3Qud2lkdGgsIHRoaXMuX2hpZ2hsaWdodGVkUmVj
dC5oZWlnaHQsIFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkNvbnRlbnQudG9Qcm90
b2NvbFJHQkEoKSwgV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29udGVudE91dGxp
bmUudG9Qcm90b2NvbFJHQkEoKSk7CiAgICAgfSwKIAogICAgIF9oaWRlUmVjdEhpZ2hsaWdodDog
ZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuY3NzCmluZGV4IGYwN2UyYzMuLmM2NGRjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTE4ODgsMTAgKzE4ODgsNiBA
QCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFuZS1zdWJ0aXRsZSB7CiAgICAgbWFy
Z2luOiAzcHg7CiB9CiAKLS5tZXRyaWNzIC5tYXJnaW4uaG92ZXJlZCB7Ci0gICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDEzOSwgMTgyLCAyMjEpOwotfQotCiAubWV0cmljcyAuYm9yZGVyIHsKICAg
ICBib3JkZXI6IDFweCBibGFjayBzb2xpZDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsK
QEAgLTE5MDIsMTAgKzE4OTgsNiBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFu
ZS1zdWJ0aXRsZSB7CiAgICAgbWFyZ2luOiAzcHg7CiB9CiAKLS5tZXRyaWNzIC5ib3JkZXIuaG92
ZXJlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1NywgMTkzLCAyMjYpOwotfQotCiAu
bWV0cmljcyAucGFkZGluZyB7CiAgICAgYm9yZGVyOiAxcHggZ3JleSBkYXNoZWQ7CiAgICAgYmFj
a2dyb3VuZC1jb2xvcjogd2hpdGU7CkBAIC0xOTE2LDEwICsxOTA4LDYgQEAgYm9keS5wbGF0Zm9y
bS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAgIG1hcmdpbjogM3B4OwogfQog
Ci0ubWV0cmljcyAucGFkZGluZy5ob3ZlcmVkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MTczLCAyMDQsIDIzMSk7Ci19Ci0KIC5tZXRyaWNzIC5jb250ZW50IHsKICAgICBwb3NpdGlvbjog
c3RhdGljOwogICAgIGJvcmRlcjogMXB4IGdyZXkgc29saWQ7CkBAIC0xOTM0LDEwICsxOTIyLDYg
QEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAgIG92
ZXJmbG93OiB2aXNpYmxlOwogfQogCi0ubWV0cmljcyAuY29udGVudC5ob3ZlcmVkIHsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTkwLCAyMTQsIDIzNik7Ci19Ci0KIC5tZXRyaWNzIC5jb250
ZW50IHNwYW4gewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMDc2ODAwYi4uYTEw
NGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMKQEAgLTM4Miw5ICszODIsMzEgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9oaWdobGlnaHRlZERPTU5vZGVJZCA9IG5vZGVJ
ZDsKLSAgICAgICAgaWYgKG5vZGVJZCkKLSAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5v
ZGUobm9kZUlkLCBtb2RlIHx8ICJhbGwiKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAobm9k
ZUlkKSB7CisgICAgICAgICAgICBtb2RlID0gbW9kZSB8fCAiYWxsIjsKKyAgICAgICAgICAgIHZh
ciBhcmdzID0geyBub2RlSWQ6IG5vZGVJZCwgc2hvd0luZm86IG1vZGUgPT09ICJhbGwiIH07Cisg
ICAgICAgICAgICBpZiAobW9kZSA9PT0gImFsbCIgfHwgbW9kZSA9PT0gImNvbnRlbnQiKSB7Cisg
ICAgICAgICAgICAgICAgYXJncy5jb250ZW50Q29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFn
ZUhpZ2hsaWdodC5Db250ZW50LnRvUHJvdG9jb2xSR0JBKCk7CisgICAgICAgICAgICAgICAgYXJn
cy5jb250ZW50T3V0bGluZUNvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQu
Q29udGVudE91dGxpbmUudG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09ICJwYWRkaW5nIikgeworICAgICAg
ICAgICAgICAgIGFyZ3MucGFkZGluZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdo
bGlnaHQuUGFkZGluZy50b1Byb3RvY29sUkdCQSgpOworICAgICAgICAgICAgICAgIGFyZ3MucGFk
ZGluZ091dGxpbmVDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LlBhZGRp
bmdPdXRsaW5lLnRvUHJvdG9jb2xSR0JBKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChtb2RlID09PSAiYWxsIiB8fCBtb2RlID09PSAiYm9yZGVyIikgeworICAgICAgICAgICAg
ICAgIGFyZ3MuYm9yZGVyQ29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5C
b3JkZXIudG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgICAgICBhcmdzLmJvcmRlck91dGxp
bmVDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkJvcmRlck91dGxpbmUu
dG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1vZGUg
PT09ICJhbGwiIHx8IG1vZGUgPT09ICJtYXJnaW4iKSB7CisgICAgICAgICAgICAgICAgYXJncy5t
YXJnaW5Db2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0Lk1hcmdpbi50b1By
b3RvY29sUkdCQSgpOworICAgICAgICAgICAgICAgIGFyZ3MubWFyZ2luT3V0bGluZUNvbG9yID0g
V2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuTWFyZ2luT3V0bGluZS50b1Byb3RvY29s
UkdCQSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHRO
b2RlLmludm9rZShhcmdzKTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBET01BZ2VudC5o
aWRlSGlnaGxpZ2h0KCk7CiAgICAgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104677</attachid>
            <date>2011-08-22 07:26:58 -0700</date>
            <delta_ts>2011-08-23 06:51:18 -0700</delta_ts>
            <desc>[PATCH] Commented method removed</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>46364</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDQwYmZhNTVkZGU5ZmMyMTQzZDAxZDhhZjdhNjc3OTM3NjNkOTBlN2UKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgQXVnIDE5
IDIwOjU5OjI5IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE4MTVlZi4uZjQ2
MmI1NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDExLTA4LTIyICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBUaGUgaGlnaGxpZ2h0aW5nIFdJUCBBUEkgaXMgc2xpZ2h0bHkgY2hhbmdl
ZDogY2xpZW50cyB3aWxsIHNwZWNpZnkgY29sb3JzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRo
ZSBoaWdobGlnaHRlZCBvYmplY3RzLAorICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyaWMgImhp
Z2hsaWdodGluZyBtb2RlIi4gVGhpcyBhbGxvd3MgdG86CisgICAgICAgIC0gdXNlIGVudGlyZWx5
IGN1c3RvbSBjb2xvcnMgZm9yIGhpZ2hsaWdodGluZyAoYW5kIHZhcnkgdGhlbSBvdmVyIHRpbWUp
OworICAgICAgICAtIGRpc3BsYXkgYW55IGNvbWJpbmF0aW9uIG9mIGZpbGwvb3V0bGluZSBmb3Ig
dGhlIGhpZ2hsaWdodGVkIGFyZWE7CisgICAgICAgIC0gaGlnaGxpZ2h0IGFueSBjb21iaW5hdGlv
bnMgb2YgZWxlbWVudCBwYXJ0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRyYXdIaWdobGlnaHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bG9yLnByb3RvdHlwZS50b1Byb3RvY29sUkdCQSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmlj
c1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGlnaGxpZ2h0RE9NTm9kZS5oYW5kbGVNb3VzZU92ZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hp
Z2hsaWdodERPTU5vZGUuaGFuZGxlTW91c2VPdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1l
dHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hpZ2hsaWdodERPTU5vZGUpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuc2V0IGhvdmVyZWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5faGlnaGxpZ2h0UmVjdCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmhpZ2hsaWdodERP
TU5vZGUpOgorCiAyMDExLTA4LTE4ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV4dHJhY3QgYnJlYWtwb2ludCBtYW5h
Z2VtZW50IGNvZGUgdG8gYSBzZXBhcmF0ZSBjbGFzcyBhbmQgYWRkIHRlc3RzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAwNGJiNDQ4
Li4zMTgzYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hs
aWdodGVyLmNwcApAQCAtMzMsOSArMzMsMTEgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJGb250Q2FjaGUuaCIKKyNpbmNsdWRlICJGb250RmFtaWx5LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJh
bmdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCkBAIC00Nyw2ICs0OSwxNSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKK2NvbnN0IHN0YXRpYyBpbnQgcmVjdElu
ZmxhdGVQeCA9IDQ7Citjb25zdCBzdGF0aWMgaW50IGZvbnRIZWlnaHRQeCA9IDEyOworY29uc3Qg
c3RhdGljIGludCBib3JkZXJXaWR0aFB4ID0gMTsKK2NvbnN0IHN0YXRpYyBpbnQgdG9vbHRpcFBh
ZGRpbmcgPSA0OworCitjb25zdCBzdGF0aWMgaW50IGFycm93VGlwT2Zmc2V0ID0gMjA7Citjb25z
dCBzdGF0aWMgaW50IGFycm93SGVpZ2h0ID0gNzsKK2NvbnN0IHN0YXRpYyBpbnQgYXJyb3dIYWxm
V2lkdGggPSA3OworCiBQYXRoIHF1YWRUb1BhdGgoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQogewog
ICAgIFBhdGggcXVhZFBhdGg7CkBAIC01OCwxMCArNjksOSBAQCBQYXRoIHF1YWRUb1BhdGgoY29u
c3QgRmxvYXRRdWFkJiBxdWFkKQogICAgIHJldHVybiBxdWFkUGF0aDsKIH0KIAotdm9pZCBkcmF3
T3V0bGluZWRRdWFkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBx
dWFkLCBjb25zdCBDb2xvciYgZmlsbENvbG9yKQordm9pZCBkcmF3T3V0bGluZWRRdWFkKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBDb2xvciYg
ZmlsbENvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9yKQogewogICAgIHN0YXRpYyBjb25z
dCBpbnQgb3V0bGluZVRoaWNrbmVzcyA9IDI7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIG91dGxp
bmVDb2xvcig2MiwgODYsIDE4MCwgMjI4KTsKIAogICAgIFBhdGggcXVhZFBhdGggPSBxdWFkVG9Q
YXRoKHF1YWQpOwogCkBAIC04Myw0NyArOTMsNTEgQEAgdm9pZCBkcmF3T3V0bGluZWRRdWFkKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBDb2wK
ICAgICBjb250ZXh0LmZpbGxQYXRoKHF1YWRQYXRoKTsKIH0KIAotdm9pZCBkcmF3T3V0bGluZWRR
dWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1
YWQsIGNvbnN0IEZsb2F0UXVhZCYgY2xpcFF1YWQsIGNvbnN0IENvbG9yJiBmaWxsQ29sb3IpCit2
b2lkIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgRmxvYXRRdWFkJiBjbGlwUXVhZCwgY29uc3QgQ29s
b3ImIGZpbGxDb2xvciwgY29uc3QgQ29sb3ImIG91dGxpbmVDb2xvcikKIHsKICAgICBjb250ZXh0
LnNhdmUoKTsKICAgICBQYXRoIGNsaXBRdWFkUGF0aCA9IHF1YWRUb1BhdGgoY2xpcFF1YWQpOwog
ICAgIGNvbnRleHQuY2xpcE91dChjbGlwUXVhZFBhdGgpOwotICAgIGRyYXdPdXRsaW5lZFF1YWQo
Y29udGV4dCwgcXVhZCwgZmlsbENvbG9yKTsKKyAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQs
IHF1YWQsIGZpbGxDb2xvciwgb3V0bGluZUNvbG9yKTsKICAgICBjb250ZXh0LnJlc3RvcmUoKTsK
IH0KIAotdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRRdWFkJiBjb250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVh
ZCwgY29uc3QgRmxvYXRRdWFkJiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1
YWQsIERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0TW9kZSBtb2RlKQordm9pZCBkcmF3SGln
aGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBj
b250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVhZCwgY29uc3QgRmxvYXRRdWFk
JiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1YWQsIEhpZ2hsaWdodERhdGEq
IGhpZ2hsaWdodERhdGEpCiB7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGNvbnRlbnRCb3hDb2xv
cigxMjUsIDE3MywgMjE3LCAxMjgpOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBwYWRkaW5nQm94
Q29sb3IoMTI1LCAxNzMsIDIxNywgMTYwKTsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgYm9yZGVy
Qm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTkyKTsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgbWFy
Z2luQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMjI4KTsKKyAgICBib29sIGhhc01hcmdpbiA9IGhp
Z2hsaWdodERhdGEtPm1hcmdpbiAhPSBDb2xvcjo6dHJhbnNwYXJlbnQgfHwgaGlnaGxpZ2h0RGF0
YS0+bWFyZ2luT3V0bGluZSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNCb3Jk
ZXIgPSBoaWdobGlnaHREYXRhLT5ib3JkZXIgIT0gQ29sb3I6OnRyYW5zcGFyZW50IHx8IGhpZ2hs
aWdodERhdGEtPmJvcmRlck91dGxpbmUgIT0gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIGJvb2wg
aGFzUGFkZGluZyA9IGhpZ2hsaWdodERhdGEtPnBhZGRpbmcgIT0gQ29sb3I6OnRyYW5zcGFyZW50
IHx8IGhpZ2hsaWdodERhdGEtPnBhZGRpbmdPdXRsaW5lICE9IENvbG9yOjp0cmFuc3BhcmVudDsK
KyAgICBib29sIGhhc0NvbnRlbnQgPSBoaWdobGlnaHREYXRhLT5jb250ZW50ICE9IENvbG9yOjp0
cmFuc3BhcmVudCB8fCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSAhPSBDb2xvcjo6dHJh
bnNwYXJlbnQ7CiAKICAgICBGbG9hdFF1YWQgY2xpcFF1YWQ7Ci0gICAgaWYgKG1vZGUgPT0gRE9N
Tm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRNYXJnaW4gfHwgKG1vZGUgPT0gRE9NTm9kZUhpZ2hs
aWdodGVyOjpIaWdobGlnaHRBbGwgJiYgbWFyZ2luUXVhZCAhPSBib3JkZXJRdWFkKSkgewotICAg
ICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgbWFyZ2luUXVhZCwgYm9yZGVy
UXVhZCwgbWFyZ2luQm94Q29sb3IpOworICAgIENvbG9yIGNsaXBDb2xvcjsKKyAgICBpZiAoaGFz
TWFyZ2luICYmICghaGFzQm9yZGVyIHx8IG1hcmdpblF1YWQgIT0gYm9yZGVyUXVhZCkpIHsKKyAg
ICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIG1hcmdpblF1YWQsIGJvcmRl
clF1YWQsIGhpZ2hsaWdodERhdGEtPm1hcmdpbiwgaGlnaGxpZ2h0RGF0YS0+bWFyZ2luT3V0bGlu
ZSk7CiAgICAgICAgIGNsaXBRdWFkID0gYm9yZGVyUXVhZDsKKyAgICAgICAgY2xpcENvbG9yID0g
aGlnaGxpZ2h0RGF0YS0+bWFyZ2luT3V0bGluZTsKICAgICB9Ci0gICAgaWYgKG1vZGUgPT0gRE9N
Tm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRCb3JkZXIgfHwgKG1vZGUgPT0gRE9NTm9kZUhpZ2hs
aWdodGVyOjpIaWdobGlnaHRBbGwgJiYgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkpIHsKLSAg
ICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRp
bmdRdWFkLCBib3JkZXJCb3hDb2xvcik7CisgICAgaWYgKGhhc0JvcmRlciAmJiAoIWhhc1BhZGRp
bmcgfHwgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkpIHsKKyAgICAgICAgZHJhd091dGxpbmVk
UXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkLCBoaWdobGlnaHRE
YXRhLT5ib3JkZXIsIGhpZ2hsaWdodERhdGEtPmJvcmRlck91dGxpbmUpOwogICAgICAgICBjbGlw
UXVhZCA9IHBhZGRpbmdRdWFkOworICAgICAgICBjbGlwQ29sb3IgPSBoaWdobGlnaHREYXRhLT5i
b3JkZXJPdXRsaW5lOwogICAgIH0KLSAgICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6
OkhpZ2hsaWdodFBhZGRpbmcgfHwgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGln
aHRBbGwgJiYgcGFkZGluZ1F1YWQgIT0gY29udGVudFF1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRs
aW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1YWQsIHBhZGRp
bmdCb3hDb2xvcik7CisgICAgaWYgKGhhc1BhZGRpbmcgJiYgKCFoYXNDb250ZW50IHx8IHBhZGRp
bmdRdWFkICE9IGNvbnRlbnRRdWFkKSkgeworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENs
aXAoY29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBoaWdobGlnaHREYXRhLT5wYWRk
aW5nLCBoaWdobGlnaHREYXRhLT5wYWRkaW5nT3V0bGluZSk7CiAgICAgICAgIGNsaXBRdWFkID0g
Y29udGVudFF1YWQ7CisgICAgICAgIGNsaXBDb2xvciA9IGhpZ2hsaWdodERhdGEtPnBhZGRpbmdP
dXRsaW5lOworICAgIH0KKyAgICBpZiAoaGFzQ29udGVudCkKKyAgICAgICAgZHJhd091dGxpbmVk
UXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgaGlnaGxp
Z2h0RGF0YS0+Y29udGVudE91dGxpbmUpOworICAgIGVsc2UgeworICAgICAgICBpZiAoY2xpcENv
bG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250
ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNsaXBDb2xvciwgY2xpcENvbG9yKTsKICAgICB9Ci0g
ICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRDb250ZW50IHx8IG1v
ZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwpCi0gICAgICAgIGRyYXdPdXRs
aW5lZFF1YWQoY29udGV4dCwgY29udGVudFF1YWQsIGNvbnRlbnRCb3hDb2xvcik7Ci0gICAgZWxz
ZQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgY2xpcFF1YWQsIGNs
aXBRdWFkLCBjb250ZW50Qm94Q29sb3IpOwogfQogCi12b2lkIGRyYXdIaWdobGlnaHRGb3JMaW5l
Qm94ZXNPclNWR1JlbmRlcmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9y
PEZsb2F0UXVhZD4mIGxpbmVCb3hRdWFkcykKK3ZvaWQgZHJhd0hpZ2hsaWdodEZvckxpbmVCb3hl
c09yU1ZHUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8Rmxv
YXRRdWFkPiYgbGluZUJveFF1YWRzLCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHREYXRhKQogewot
ICAgIHN0YXRpYyBjb25zdCBDb2xvciBsaW5lQm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTI4KTsK
LQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZUJveFF1YWRzLnNpemUoKTsgKytpKQot
ICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGxpbmVCb3hRdWFkc1tpXSwgbGluZUJv
eENvbG9yKTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBsaW5lQm94UXVhZHNb
aV0sIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQsIGhpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRsaW5l
KTsKIH0KIAogaW5saW5lIExheW91dFNpemUgZnJhbWVUb01haW5GcmFtZU9mZnNldChGcmFtZSog
ZnJhbWUpCkBAIC0xMzIsNTggKzE0NiwxMzUgQEAgaW5saW5lIExheW91dFNpemUgZnJhbWVUb01h
aW5GcmFtZU9mZnNldChGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHRvTGF5b3V0U2l6ZShtYWlu
RnJhbWVQb2ludCk7CiB9CiAKK2ludCBkcmF3U3Vic3RyaW5nKGNvbnN0IFRleHRSdW4mIGdsb2Jh
bFRleHRSdW4sIGludCBvZmZzZXQsIGludCBsZW5ndGgsIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3Is
IGNvbnN0IEZvbnQmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UmVjdCYgdGl0bGVSZWN0KQoreworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5kcmF3VGV4dChmb250LCBnbG9iYWxU
ZXh0UnVuLCBMYXlvdXRQb2ludCh0aXRsZVJlY3QueCgpICsgcmVjdEluZmxhdGVQeCwgdGl0bGVS
ZWN0LnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSksIG9mZnNldCwgb2Zmc2V0ICsg
bGVuZ3RoKTsKKyAgICByZXR1cm4gb2Zmc2V0ICsgbGVuZ3RoOworfQorCitpbnQgY2FsY3VsYXRl
QXJyb3dUaXBYKGNvbnN0IExheW91dFJlY3QmIGFuY2hvckJveCwgY29uc3QgTGF5b3V0UmVjdCYg
dGl0bGVSZWN0KQoreworICAgIGludCBhbmNob3JYID0gYW5jaG9yQm94LngoKTsKKworICAgIC8v
IENoZWNrIGZvciBoZWF2aWx5IG1pc2FsaWduZWQgdG9vbHRpcCBmaXJzdC4KKyAgICBpZiAodGl0
bGVSZWN0LngoKSA+IGFuY2hvckJveC5tYXhYKCkpCisgICAgICAgIHJldHVybiB0aXRsZVJlY3Qu
eCgpICsgYXJyb3dIYWxmV2lkdGg7CisKKyAgICBpZiAodGl0bGVSZWN0Lm1heFgoKSA8IGFuY2hv
clgpCisgICAgICAgIHJldHVybiB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGg7CisK
KyAgICBpbnQgeCA9IHRpdGxlUmVjdC54KCkgKyBhcnJvd1RpcE9mZnNldDsKKyAgICBpZiAoeCA8
IGFuY2hvclgpCisgICAgICAgIHggPSBhbmNob3JYICsgYXJyb3dUaXBPZmZzZXQ7CisgICAgaWYg
KHggPiB0aXRsZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGgpCisgICAgICAgIHggPSB0aXRs
ZVJlY3QubWF4WCgpIC0gYXJyb3dIYWxmV2lkdGg7CisKKyAgICByZXR1cm4geDsKK30KKwordm9p
ZCBzZXRVcEZvbnRGYW1pbGllcyhGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgV2Vi
Q29yZTo6U2V0dGluZ3MqIHNldHRpbmdzKQoreworI2RlZmluZSBUT09MVElQX0ZPTlRfRkFNSUxJ
RVMoc2l6ZSwgLi4uKSBcCitzdGF0aWMgdW5zaWduZWQgdG9vbHRpcEZvbnRGYWNlU2l6ZSA9IHNp
emU7XAorc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyogdG9vbHRpcEZvbnRGYWNlW3NpemVdID0g
eyBfX1ZBX0FSR1NfXyB9OworCisjaWYgT1MoV0lORE9XUykKK1RPT0xUSVBfRk9OVF9GQU1JTElF
UygyLCBuZXcgQXRvbWljU3RyaW5nKCJDb25zb2xhcyIpLCBuZXcgQXRvbWljU3RyaW5nKCJMdWNp
ZGEgQ29uc29sZSIpKQorI2VsaWYgT1MoVU5JWCkKK1RPT0xUSVBfRk9OVF9GQU1JTElFUygxLCBu
ZXcgQXRvbWljU3RyaW5nKCJkZWphdnUgc2FucyBtb25vIikpCisjZWxpZiBPUyhNQUNfT1NfWCkK
K1RPT0xUSVBfRk9OVF9GQU1JTElFUygyLCBuZXcgQXRvbWljU3RyaW5nKCJNZW5sbyIpLCBuZXcg
QXRvbWljU3RyaW5nKCJNb25hY28iKSkKKyNlbmRpZgorLy8gSW4gdGhlIGRlZmF1bHQgY2FzZSwg
d2UgZ2V0IHRoZSBzZXR0aW5ncy1wcm92aWRlZCBtb25vc3BhY2UgZm9udC4KKworI3VuZGVmIFRP
T0xUSVBfRk9OVF9GQU1JTElFUworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmaXhlZEZvbnRG
YW1pbHkgPSBzZXR0aW5ncy0+Zml4ZWRGb250RmFtaWx5KCk7CisgICAgaWYgKCFmaXhlZEZvbnRG
YW1pbHkuaXNFbXB0eSgpKSB7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFt
aWx5KEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNlRmFtaWx5KTsKKyAgICAgICAgRm9udEZhbWls
eSogY3VycmVudEZhbWlseSA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
b29sdGlwRm9udEZhY2VTaXplOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghY3VycmVudEZhbWls
eSkgeworICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpLnNldEZh
bWlseSgqdG9vbHRpcEZvbnRGYWNlW2ldKTsKKyAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRp
b24uZmlyc3RGYW1pbHkoKS5hcHBlbmRGYW1pbHkoMCk7CisgICAgICAgICAgICAgICAgY3VycmVu
dEZhbWlseSA9ICZmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWls
eSA9IFNoYXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIG5ld0ZhbWls
eS0+c2V0RmFtaWx5KCp0b29sdGlwRm9udEZhY2VbaV0pOworICAgICAgICAgICAgICAgIGN1cnJl
bnRGYW1pbHktPmFwcGVuZEZhbWlseShuZXdGYW1pbHkpOworICAgICAgICAgICAgICAgIGN1cnJl
bnRGYW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9IFNoYXJlZEZvbnRGYW1p
bHk6OmNyZWF0ZSgpOworICAgICAgICBuZXdGYW1pbHktPnNldEZhbWlseShmaXhlZEZvbnRGYW1p
bHkpOworICAgICAgICBjdXJyZW50RmFtaWx5LT5hcHBlbmRGYW1pbHkobmV3RmFtaWx5KTsKKyAg
ICAgICAgY3VycmVudEZhbWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKKyAgICB9Cit9CisKIHZvaWQg
ZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIGNv
bnN0IExheW91dFJlY3QmIGJvdW5kaW5nQm94LCBjb25zdCBMYXlvdXRSZWN0JiBhbmNob3JCb3gs
IGNvbnN0IEZsb2F0UmVjdCYgb3ZlcmxheVJlY3QsIFdlYkNvcmU6OlNldHRpbmdzKiBzZXR0aW5n
cykKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IHJlY3RJbmZsYXRlUHggPSA0OwotICAgIHN0YXRp
YyBjb25zdCBpbnQgZm9udEhlaWdodFB4ID0gMTI7Ci0gICAgc3RhdGljIGNvbnN0IGludCBib3Jk
ZXJXaWR0aFB4ID0gMTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCB0b29sdGlwQmFj
a2dyb3VuZENvbG9yLCAoMjU1LCAyNTUsIDE5NCwgMjU1KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19M
T0NBTChDb2xvciwgdG9vbHRpcEJvcmRlckNvbG9yLCAoQ29sb3I6OmJsYWNrKSk7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEZvbnRDb2xvciwgKENvbG9yOjpibGFjaykp
OworCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgYmFja2dyb3VuZENvbG9yLCAoMjU1
LCAyNTUsIDE5NCwgMjU1KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdGFnQ29s
b3IsICgxMzYsIDE4LCAxMjgpKTsgLy8gU2FtZSBhcyAud2Via2l0LWh0bWwtdGFnLgorICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIGF0dHJDb2xvciwgKDI2LCAyNiwgMTY2KSk7IC8vIFNh
bWUgYXMgLndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZS4KKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENvbG9yLCBub3JtYWxDb2xvciwgKENvbG9yOjpibGFjaykpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ29sb3IsIHB4QW5kQm9yZGVyQ29sb3IsICgxMjgsIDEyOCwgMTI4KSk7CisKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHhTdHJpbmcsICgicHgiKSk7CisgICAgY29u
c3Qgc3RhdGljIFVDaGFyIHRpbWVzVUNoYXJbXSA9IHsgMHgwMEQ3LCAwIH07CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIHRpbWVzU3RyaW5nLCAodGltZXNVQ2hhcikpOyAvLyAmdGlt
ZXM7IHN0cmluZworCiAgICAgRm9udENhY2hlUHVyZ2VQcmV2ZW50ZXIgZm9udENhY2hlUHVyZ2VQ
cmV2ZW50ZXI7CiAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG5vZGUpOwogICAgIGJvb2wgaXNYSFRNTCA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmlzWEhUTUxE
b2N1bWVudCgpOwotICAgIFN0cmluZyBub2RlVGl0bGUgPSBpc1hIVE1MID8gZWxlbWVudC0+bm9k
ZU5hbWUoKSA6IGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKTsKKyAgICBTdHJpbmcgbm9kZVRp
dGxlKGlzWEhUTUwgPyBlbGVtZW50LT5ub2RlTmFtZSgpIDogZWxlbWVudC0+bm9kZU5hbWUoKS5s
b3dlcigpKTsKKyAgICB1bnNpZ25lZCB0YWdOYW1lTGVuZ3RoID0gbm9kZVRpdGxlLmxlbmd0aCgp
OworCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZFZhbHVlID0gZWxlbWVudC0+Z2V0SWRBdHRy
aWJ1dGUoKTsKKyAgICB1bnNpZ25lZCBpZFN0cmluZ0xlbmd0aCA9IDA7CisgICAgU3RyaW5nIGlk
U3RyaW5nOwogICAgIGlmICghaWRWYWx1ZS5pc051bGwoKSAmJiAhaWRWYWx1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgbm9kZVRpdGxlICs9ICIjIjsKICAgICAgICAgbm9kZVRpdGxlICs9IGlkVmFs
dWU7CisgICAgICAgIGlkU3RyaW5nTGVuZ3RoID0gMSArIGlkVmFsdWUubGVuZ3RoKCk7CiAgICAg
fQorCisgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOworICAgIHVuc2ln
bmVkIGNsYXNzZXNTdHJpbmdMZW5ndGggPSAwOwogICAgIGlmIChlbGVtZW50LT5oYXNDbGFzcygp
ICYmIGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKSB7CiAgICAgICAgIGNvbnN0IFNwYWNlU3Bs
aXRTdHJpbmcmIGNsYXNzTmFtZXNTdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4o
ZWxlbWVudCktPmNsYXNzTmFtZXMoKTsKICAgICAgICAgc2l6ZV90IGNsYXNzTmFtZUNvdW50ID0g
Y2xhc3NOYW1lc1N0cmluZy5zaXplKCk7Ci0gICAgICAgIGlmIChjbGFzc05hbWVDb3VudCkgewot
ICAgICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVzZWRDbGFzc05hbWVzOwotICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGFzc05hbWVDb3VudDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBjbGFzc05hbWVzU3Ry
aW5nW2ldOwotICAgICAgICAgICAgICAgIGlmICh1c2VkQ2xhc3NOYW1lcy5jb250YWlucyhjbGFz
c05hbWUpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB1
c2VkQ2xhc3NOYW1lcy5hZGQoY2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICBub2RlVGl0bGUg
Kz0gIi4iOwotICAgICAgICAgICAgICAgIG5vZGVUaXRsZSArPSBjbGFzc05hbWU7Ci0gICAgICAg
ICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1lQ291bnQ7ICsr
aSkgeworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUgPSBjbGFzc05h
bWVzU3RyaW5nW2ldOworICAgICAgICAgICAgaWYgKHVzZWRDbGFzc05hbWVzLmNvbnRhaW5zKGNs
YXNzTmFtZSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB1c2VkQ2xh
c3NOYW1lcy5hZGQoY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIG5vZGVUaXRsZSArPSAiLiI7Cisg
ICAgICAgICAgICBub2RlVGl0bGUgKz0gY2xhc3NOYW1lOworICAgICAgICAgICAgY2xhc3Nlc1N0
cmluZ0xlbmd0aCArPSAxICsgY2xhc3NOYW1lLmxlbmd0aCgpOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgbm9kZVRpdGxlICs9ICIgWyI7Ci0gICAgbm9kZVRpdGxlICs9IFN0cmluZzo6bnVtYmVy
KGJvdW5kaW5nQm94LndpZHRoKCkpOwotICAgIG5vZGVUaXRsZS5hcHBlbmQoc3RhdGljX2Nhc3Q8
VUNoYXI+KDB4MDBENykpOyAvLyAmdGltZXM7Ci0gICAgbm9kZVRpdGxlICs9IFN0cmluZzo6bnVt
YmVyKGJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICBub2RlVGl0bGUgKz0gIl0iOworICAgIFN0
cmluZyB3aWR0aE51bWJlclBhcnQgPSAiICIgKyBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC53
aWR0aCgpKTsKKyAgICBub2RlVGl0bGUgKz0gd2lkdGhOdW1iZXJQYXJ0ICsgcHhTdHJpbmc7Cisg
ICAgbm9kZVRpdGxlICs9IHRpbWVzU3RyaW5nOworICAgIFN0cmluZyBoZWlnaHROdW1iZXJQYXJ0
ID0gU3RyaW5nOjpudW1iZXIoYm91bmRpbmdCb3guaGVpZ2h0KCkpOworICAgIG5vZGVUaXRsZSAr
PSBoZWlnaHROdW1iZXJQYXJ0ICsgcHhTdHJpbmc7CiAKICAgICBGb250RGVzY3JpcHRpb24gZGVz
YzsKLSAgICBGb250RmFtaWx5IGZhbWlseTsKLSAgICBmYW1pbHkuc2V0RmFtaWx5KHNldHRpbmdz
LT5maXhlZEZvbnRGYW1pbHkoKSk7Ci0gICAgZGVzYy5zZXRGYW1pbHkoZmFtaWx5KTsKKyAgICBk
ZXNjLnNldFJlbmRlcmluZ01vZGUoc2V0dGluZ3MtPmZvbnRSZW5kZXJpbmdNb2RlKCkpOwogICAg
IGRlc2Muc2V0Q29tcHV0ZWRTaXplKGZvbnRIZWlnaHRQeCk7CisgICAgc2V0VXBGb250RmFtaWxp
ZXMoZGVzYywgc2V0dGluZ3MpOwogICAgIEZvbnQgZm9udCA9IEZvbnQoZGVzYywgMCwgMCk7CiAg
ICAgZm9udC51cGRhdGUoMCk7CiAKICAgICBUZXh0UnVuIG5vZGVUaXRsZVJ1bihub2RlVGl0bGUp
OwogICAgIExheW91dFBvaW50IHRpdGxlQmFzZVBvaW50ID0gTGF5b3V0UG9pbnQoYW5jaG9yQm94
LngoKSwgYW5jaG9yQm94Lm1heFkoKSAtIDEpOwogICAgIHRpdGxlQmFzZVBvaW50Lm1vdmUocmVj
dEluZmxhdGVQeCwgcmVjdEluZmxhdGVQeCk7Ci0gICAgTGF5b3V0UmVjdCB0aXRsZVJlY3QgPSBl
bmNsb3NpbmdJbnRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQobm9kZVRpdGxlUnVuLCB0
aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4KSk7CisgICAgTGF5b3V0UmVjdCB0aXRsZVJlY3Qg
PSBlbmNsb3NpbmdMYXlvdXRSZWN0KGZvbnQuc2VsZWN0aW9uUmVjdEZvclRleHQobm9kZVRpdGxl
UnVuLCB0aXRsZUJhc2VQb2ludCwgZm9udEhlaWdodFB4KSk7CiAgICAgdGl0bGVSZWN0LmluZmxh
dGUocmVjdEluZmxhdGVQeCk7CiAKICAgICAvLyBUaGUgaW5pdGlhbCBvZmZzZXRzIG5lZWRlZCB0
byBjb21wZW5zYXRlIGZvciBhIDFweC10aGljayBib3JkZXIgc3Ryb2tlICh3aGljaCBpcyBub3Qg
YSBwYXJ0IG9mIHRoZSByZWN0YW5nbGUpLgpAQCAtMjExLDE5ICszMDIsNDkgQEAgdm9pZCBkcmF3
RWxlbWVudFRpdGxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgY29uc3Qg
TGF5b3V0UmVjdCYgYm8KICAgICAgICAgZHkgPSBvdmVybGF5UmVjdC55KCkgLSB0aXRsZVJlY3Qu
eSgpICsgYm9yZGVyV2lkdGhQeDsKIAogICAgIHRpdGxlUmVjdC5tb3ZlKGR4LCBkeSk7Ci0gICAg
Y29udGV4dC5zZXRTdHJva2VDb2xvcih0b29sdGlwQm9yZGVyQ29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworCisgICAgYm9vbCBpc0Fycm93QXRUb3AgPSB0aXRsZVJlY3QueSgpID4gYW5jaG9y
Qm94LnkoKTsKKyAgICB0aXRsZVJlY3QubW92ZSgwLCB0b29sdGlwUGFkZGluZyAqIChpc0Fycm93
QXRUb3AgPyAxIDogLTEpKTsKKworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IocHhBbmRCb3Jk
ZXJDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoYm9yZGVyV2lkdGhQeCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IodG9vbHRpcEJh
Y2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0
LmRyYXdSZWN0KHRpdGxlUmVjdCk7Ci0gICAgY29udGV4dC5zZXRGaWxsQ29sb3IodG9vbHRpcEZv
bnRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgY29udGV4dC5kcmF3VGV4dChmb250
LCBub2RlVGl0bGVSdW4sIExheW91dFBvaW50KHRpdGxlUmVjdC54KCkgKyByZWN0SW5mbGF0ZVB4
LCB0aXRsZVJlY3QueSgpICsgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKSk7CisKKyAgICB7
CisgICAgICAgIGludCBhcnJvd1RpcFggPSBjYWxjdWxhdGVBcnJvd1RpcFgoYW5jaG9yQm94LCB0
aXRsZVJlY3QpOworICAgICAgICBGbG9hdFBvaW50IGFycm93UG9pbnRzWzNdOworICAgICAgICBm
bG9hdCBhcnJvd0Jhc2VZID0gaXNBcnJvd0F0VG9wID8gdGl0bGVSZWN0LnkoKSA6IHRpdGxlUmVj
dC5tYXhZKCk7CisgICAgICAgIGFycm93UG9pbnRzWzBdID0gRmxvYXRQb2ludChhcnJvd1RpcFgg
LSBhcnJvd0hhbGZXaWR0aCwgYXJyb3dCYXNlWSk7CisgICAgICAgIGFycm93UG9pbnRzWzFdID0g
RmxvYXRQb2ludChhcnJvd1RpcFgsIGFycm93QmFzZVkgKyBhcnJvd0hlaWdodCAqIChpc0Fycm93
QXRUb3AgPyAtMSA6IDEpKTsKKyAgICAgICAgYXJyb3dQb2ludHNbMl0gPSBGbG9hdFBvaW50KGFy
cm93VGlwWCArIGFycm93SGFsZldpZHRoLCBhcnJvd0Jhc2VZKTsKKyAgICAgICAgY29udGV4dC5k
cmF3Q29udmV4UG9seWdvbigzLCBhcnJvd1BvaW50cyk7CisKKyAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhib3JkZXJXaWR0aFB4ICsg
MSk7CisgICAgICAgIExheW91dFBvaW50IHN0YXJ0UG9pbnQgPSBMYXlvdXRQb2ludChhcnJvd1Bv
aW50c1swXS54KCkgKyAxLCBhcnJvd1BvaW50c1swXS55KCkpOworICAgICAgICBMYXlvdXRQb2lu
dCBlbmRQb2ludCA9IExheW91dFBvaW50KGFycm93UG9pbnRzWzJdLngoKSAtIDEsIGFycm93UG9p
bnRzWzJdLnkoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0xpbmUoc3RhcnRQb2ludCwgZW5kUG9p
bnQpOworICAgIH0KKworICAgIGludCBjdXJyZW50UG9zID0gMDsKKyAgICBjdXJyZW50UG9zID0g
ZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHRhZ05hbWVMZW5ndGgsIHRh
Z0NvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGlmIChpZFN0cmluZ0xlbmd0
aCkKKyAgICAgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJy
ZW50UG9zLCBpZFN0cmluZ0xlbmd0aCwgYXR0ckNvbG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJl
Y3QpOworICAgIGlmIChjbGFzc2VzU3RyaW5nTGVuZ3RoKQorICAgICAgICBjdXJyZW50UG9zID0g
ZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIGNsYXNzZXNTdHJpbmdMZW5n
dGgsIGF0dHJDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBjdXJyZW50UG9z
ID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHdpZHRoTnVtYmVyUGFy
dC5sZW5ndGgoKSwgbm9ybWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAg
Y3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxlUnVuLCBjdXJyZW50UG9zLCBweFN0
cmluZy5sZW5ndGgoKSArIHRpbWVzU3RyaW5nLmxlbmd0aCgpLCBweEFuZEJvcmRlckNvbG9yLCBm
b250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3RyaW5n
KG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgaGVpZ2h0TnVtYmVyUGFydC5sZW5ndGgoKSwgbm9y
bWFsQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAgZHJhd1N1YnN0cmluZyhu
b2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHB4U3RyaW5nLmxlbmd0aCgpLCBweEFuZEJvcmRlckNv
bG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOwogfQogCiB9IC8vIGFub255bW91cyBuYW1l
c3BhY2UKIAogbmFtZXNwYWNlIERPTU5vZGVIaWdobGlnaHRlciB7CiAKLXZvaWQgZHJhd05vZGVI
aWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBIaWdobGlnaHRN
b2RlIG1vZGUpCit2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKIHsKICAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBGcmFtZSogY29udGFp
bmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKQEAgLTI0MCw3ICszNjEsNyBA
QCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSog
bm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gY29udGFp
bmluZ0ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCk7CiAgICAgRmxvYXRSZWN0IG92
ZXJsYXlSZWN0ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0gICAgaWYgKCFvdmVybGF5
UmVjdC5jb250YWlucyhib3VuZGluZ0JveCkgJiYgIWJvdW5kaW5nQm94LmNvbnRhaW5zKGVuY2xv
c2luZ0ludFJlY3Qob3ZlcmxheVJlY3QpKSkKKyAgICBpZiAoIW92ZXJsYXlSZWN0LmNvbnRhaW5z
KGJvdW5kaW5nQm94KSAmJiAhYm91bmRpbmdCb3guY29udGFpbnMoZW5jbG9zaW5nTGF5b3V0UmVj
dChvdmVybGF5UmVjdCkpKQogICAgICAgICBvdmVybGF5UmVjdCA9IHZpZXctPnZpc2libGVDb250
ZW50UmVjdCgpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKC1vdmVybGF5UmVjdC54KCksIC1vdmVy
bGF5UmVjdC55KCkpOwogCkBAIC0yNjYsNyArMzg3LDYgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdo
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodE1vZGUgbW9k
ZSkKICAgICAgICAgTGF5b3V0UmVjdCBtYXJnaW5Cb3goYm9yZGVyQm94LngoKSAtIHJlbmRlckJv
eC0+bWFyZ2luTGVmdCgpLCBib3JkZXJCb3gueSgpIC0gcmVuZGVyQm94LT5tYXJnaW5Ub3AoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm94LndpZHRoKCkgKyByZW5kZXJCb3gt
Pm1hcmdpbkxlZnQoKSArIHJlbmRlckJveC0+bWFyZ2luUmlnaHQoKSwgYm9yZGVyQm94LmhlaWdo
dCgpICsgcmVuZGVyQm94LT5tYXJnaW5Ub3AoKSArIHJlbmRlckJveC0+bWFyZ2luQm90dG9tKCkp
OwogCi0KICAgICAgICAgRmxvYXRRdWFkIGFic0NvbnRlbnRRdWFkID0gcmVuZGVyQm94LT5sb2Nh
bFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChjb250ZW50Qm94KSk7CiAgICAgICAgIEZsb2F0UXVh
ZCBhYnNQYWRkaW5nUXVhZCA9IHJlbmRlckJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJl
Y3QocGFkZGluZ0JveCkpOwogICAgICAgICBGbG9hdFF1YWQgYWJzQm9yZGVyUXVhZCA9IHJlbmRl
ckJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoYm9yZGVyQm94KSk7CkBAIC0yNzks
NyArMzk5LDcgQEAgdm9pZCBkcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIE5vZGUqIG5vZGUsIEhpZ2hsaWdodE1vZGUgbW9kZSkKIAogICAgICAgICB0aXRsZUFuY2hv
ckJveCA9IGFic01hcmdpblF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIAotICAgICAgICBk
cmF3SGlnaGxpZ2h0Rm9yQm94KGNvbnRleHQsIGFic0NvbnRlbnRRdWFkLCBhYnNQYWRkaW5nUXVh
ZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgbW9kZSk7CisgICAgICAgIGRyYXdIaWdo
bGlnaHRGb3JCb3goY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1BhZGRpbmdRdWFkLCBhYnNC
b3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBoaWdobGlnaHREYXRhKTsKICAgICB9IGVsc2UgaWYg
KHJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpIHx8IGlzU1ZHUmVuZGVyZXIpIHsKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBzaG93IG1hcmdpbnMvcGFkZGluZy9ib3JkZXIgZm9yIGlubGlu
ZXMuCiAgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGxpbmVCb3hRdWFkczsKQEAgLTI4Nyw3ICs0
MDcsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Tm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGluZUJveFF1YWRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgbGluZUJveFF1
YWRzW2ldICs9IG1haW5GcmFtZU9mZnNldDsKIAotICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yTGlu
ZUJveGVzT3JTVkdSZW5kZXJlcihjb250ZXh0LCBsaW5lQm94UXVhZHMpOworICAgICAgICBkcmF3
SGlnaGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5kZXJlcihjb250ZXh0LCBsaW5lQm94UXVhZHMs
IGhpZ2hsaWdodERhdGEpOwogICAgIH0KIAogICAgIC8vIERyYXcgbm9kZSB0aXRsZSBpZiBuZWNl
c3NhcnkuCkBAIC0yOTUsMTIgKzQxNSwxMSBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogICAg
IGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJD
b3JlOjpTZXR0aW5ncyogc2V0dGluZ3MgPSBjb250YWluaW5nRnJhbWUtPnNldHRpbmdzKCk7Ci0g
ICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwpCi0gICAgICAg
IGRyYXdFbGVtZW50VGl0bGUoY29udGV4dCwgbm9kZSwgYm91bmRpbmdCb3gsIHRpdGxlQW5jaG9y
Qm94LCBvdmVybGF5UmVjdCwgc2V0dGluZ3MpOworICAgIGlmIChoaWdobGlnaHREYXRhLT5zaG93
SW5mbykKKyAgICAgICAgZHJhd0VsZW1lbnRUaXRsZShjb250ZXh0LCBub2RlLCBib3VuZGluZ0Jv
eCwgdGl0bGVBbmNob3JCb3gsIG92ZXJsYXlSZWN0LCBjb250YWluaW5nRnJhbWUtPnNldHRpbmdz
KCkpOwogfQogCi12b2lkIGRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgRG9jdW1lbnQqIGRvY3VtZW50LCBJbnRSZWN0KiByZWN0KQordm9pZCBkcmF3UmVjdEhpZ2hs
aWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVudCwgTGF5b3V0
UmVjdCogcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBDb2xvciYgb3V0bGluZUNvbG9y
KQogewogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMCwxNCArNDI5
LDEyIEBAIHZvaWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBE
b2N1bWVudCogZG9jdW1lbnQsIEludFJlY3QqIHJlCiAgICAgY29udGV4dC50cmFuc2xhdGUoLW92
ZXJsYXlSZWN0LngoKSwgLW92ZXJsYXlSZWN0LnkoKSk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50
IG91dGxpbmVUaGlja25lc3MgPSAyOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIG91
dGxpbmVDb2xvciwgKDI1NSwgMCwgMCwgMjI4KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChD
b2xvciwgZmlsbENvbG9yLCAoMjU1LCAwLCAwLCAyMCkpOwogCiAgICAgUGF0aCBxdWFkUGF0aCA9
IHF1YWRUb1BhdGgoRmxvYXRSZWN0KCpyZWN0KSk7CiAKICAgICAvLyBDbGlwIG91dCB0aGUgcXVh
ZCwgdGhlbiBkcmF3IHdpdGggYSAycHggc3Ryb2tlIHRvIGdldCBhIHBpeGVsCiAgICAgLy8gb2Yg
b3V0bGluZSAoYmVjYXVzZSBpbmZsYXRpbmcgYSBxdWFkIGlzIGhhcmQpCi0gICAgeworICAgIGlm
IChvdXRsaW5lQ29sb3IuaXNWYWxpZCgpKSB7CiAgICAgICAgIGNvbnRleHQuc2F2ZSgpOwogICAg
ICAgICBjb250ZXh0LmNsaXBPdXQocXVhZFBhdGgpOwogCkBAIC0zMjksOCArNDQ2LDEwIEBAIHZv
aWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBEb2N1bWVudCog
ZG9jdW1lbnQsIEludFJlY3QqIHJlCiAgICAgfQogCiAgICAgLy8gTm93IGRvIHRoZSBmaWxsCi0g
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
LSAgICBjb250ZXh0LmZpbGxQYXRoKHF1YWRQYXRoKTsKKyAgICBpZiAoY29sb3IuaXNWYWxpZCgp
KSB7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUGF0aChxdWFkUGF0aCk7CisgICAgfQogfQogCiB9
IC8vIG5hbWVzcGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaAppbmRleCAzMGQ3NzYwLi5iYWMzZGI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCkBAIC0yOSwyNiAr
MjksMzMgQEAKICNpZm5kZWYgRE9NTm9kZUhpZ2hsaWdodGVyX2gKICNkZWZpbmUgRE9NTm9kZUhp
Z2hsaWdodGVyX2gKIAorI2luY2x1ZGUgIkNvbG9yLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQ29sb3I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwogCi1uYW1lc3BhY2UgRE9NTm9kZUhpZ2hsaWdo
dGVyIHsKLQotZW51bSBIaWdobGlnaHRNb2RlIHsKLSAgICBIaWdobGlnaHRBbGwsCi0gICAgSGln
aGxpZ2h0Q29udGVudCwKLSAgICBIaWdobGlnaHRQYWRkaW5nLAotICAgIEhpZ2hsaWdodEJvcmRl
ciwKLSAgICBIaWdobGlnaHRNYXJnaW4KK3N0cnVjdCBIaWdobGlnaHREYXRhIHsKKyAgICBDb2xv
ciBjb250ZW50OworICAgIENvbG9yIGNvbnRlbnRPdXRsaW5lOworICAgIENvbG9yIHBhZGRpbmc7
CisgICAgQ29sb3IgcGFkZGluZ091dGxpbmU7CisgICAgQ29sb3IgYm9yZGVyOworICAgIENvbG9y
IGJvcmRlck91dGxpbmU7CisgICAgQ29sb3IgbWFyZ2luOworICAgIENvbG9yIG1hcmdpbk91dGxp
bmU7CisgICAgYm9vbCBzaG93SW5mbzsKIH07CiAKLXZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3Jh
cGhpY3NDb250ZXh0JiwgTm9kZSosIEhpZ2hsaWdodE1vZGUpOworbmFtZXNwYWNlIERPTU5vZGVI
aWdobGlnaHRlciB7CisKK3ZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0Jiwg
Tm9kZSosIEhpZ2hsaWdodERhdGEqKTsKIAotdm9pZCBkcmF3UmVjdEhpZ2hsaWdodChHcmFwaGlj
c0NvbnRleHQmLCBEb2N1bWVudCosIEludFJlY3QqKTsKK3ZvaWQgZHJhd1JlY3RIaWdobGlnaHQo
R3JhcGhpY3NDb250ZXh0JiwgRG9jdW1lbnQqLCBJbnRSZWN0KiwgY29uc3QgQ29sb3ImLCBjb25z
dCBDb2xvciYgb3V0bGluZUNvbG9yKTsKIAogfSAvLyBuYW1lc3BhY2UgRE9NTm9kZUhpZ2hsaWdo
dGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYjJiOTg4
Li43ZGY3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC04
NzEsNiArODcxLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibG9jYXRpb24i
LCAiJHJlZiI6ICJEZWJ1Z2dlci5Mb2NhdGlvbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJIYW5kbGVyIGNvZGUgbG9jYXRpb24uIiB9CiAgICAgICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRE9NIGludGVyYWN0aW9uIGlzIGltcGxlbWVu
dGVkIGluIHRlcm1zIG9mIG1pcnJvciBvYmplY3RzIHRoYXQgcmVwcmVzZW50IHRoZSBhY3R1YWwg
RE9NIG5vZGVzLiBET01Ob2RlIGlzIGEgYmFzZSBub2RlIG1pcnJvciB0eXBlLiIKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIlJHQkEiLAorICAg
ICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInByb3BlcnRp
ZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiciIsICJ0eXBlIjogImludGVn
ZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHJlZCBjb21wb25lbnQsIGluIHRoZSBbMC0yNTVdIHJh
bmdlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJnIiwgInR5cGUiOiAiaW50
ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZ3JlZW4gY29tcG9uZW50LCBpbiB0aGUgWzAtMjU1
XSByYW5nZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYiIsICJ0eXBlIjog
ImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJsdWUgY29tcG9uZW50LCBpbiB0aGUgWzAt
MjU1XSByYW5nZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYSIsICJ0eXBl
IjogIm51bWJlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgYWxwaGEg
Y29tcG9uZW50LCBpbiB0aGUgWzAtMV0gcmFuZ2UgKGRlZmF1bHQ6IDEpLiIgfQorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgc3RydWN0dXJlIGhv
bGRpbmcgYW4gUkdCQSBjb2xvci4iCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAg
ICJjb21tYW5kcyI6IFsKQEAgLTEwNDAsNyArMTA1MSw5IEBACiAgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAieCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiWCBjb29y
ZGluYXRlIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJp
bnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlkgY29vcmRpbmF0ZSIgfSwKICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24i
OiAiUmVjdGFuZ2xlIHdpZHRoIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhl
aWdodCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVjdGFuZ2xlIGhlaWdo
dCIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlaWdodCIsICJ0eXBlIjogImlu
dGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVjdGFuZ2xlIGhlaWdodCIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJjb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhpZ2hsaWdodCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0
cmFuc3BhcmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm91dGxpbmVD
b2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
VGhlIGhpZ2hsaWdodCBvdXRsaW5lIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9CiAg
ICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSGlnaGxp
Z2h0cyBnaXZlbiByZWN0YW5nbGUuIENvb3JkaW5hdGVzIGFyZSBhYnNvbHV0ZSB3aXRoIHJlc3Bl
Y3QgdG8gdGhlIG1haW4gZnJhbWUgdmlld3BvcnQuIgogICAgICAgICAgICAgfSwKQEAgLTEwNDgs
NyArMTA2MSwxNSBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogImhpZ2hsaWdodE5vZGUiLAog
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlm
aWVyIG9mIHRoZSBub2RlIHRvIGhpZ2hsaWdodCIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJtb2RlIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbImFsbCIsICJjb250ZW50
IiwgInBhZGRpbmciLCAiYm9yZGVyIiwgIm1hcmdpbiJdLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIGJveCBtb2RlbCBjb21wb25lbnQocykgdG8gaGlnaGxpZ2h0IChkZWZh
dWx0OiBcImFsbFwiKS4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaG93SW5m
byIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiV2hldGhlciB0aGUgbm9kZSBp
bmZvIHRvb2x0aXAgc2hvdWxkIGJlIHNob3duLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJjb250ZW50Q29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIlRoZSBjb250ZW50IGJveCBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVm
YXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJj
b250ZW50T3V0bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJUaGUgY29udGVudCBib3ggaGlnaGxpZ2h0IG91dGxpbmUgY29sb3IgKGRl
ZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cGFkZGluZ0NvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJUaGUgcGFkZGluZyBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJhbnNw
YXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYWRkaW5nT3V0bGlu
ZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJUaGUgcGFkZGluZyBoaWdobGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJl
bnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3JkZXJDb2xvciIsICIk
cmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJvcmRl
ciBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3JkZXJPdXRsaW5lQ29sb3IiLCAiJHJlZiI6ICJS
R0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3JkZXIgaGlnaGxp
Z2h0IG91dGxpbmUgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibWFyZ2luQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBtYXJnaW4gaGlnaGxpZ2h0IGZpbGwgY29s
b3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAibWFyZ2luT3V0bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgbWFyZ2luIGhpZ2hsaWdodCBvdXRsaW5lIGNvbG9yIChk
ZWZhdWx0OiB0cmFuc3BhcmVudCkuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiSGlnaGxpZ2h0cyBET00gbm9kZSB3aXRoIGdpdmVuIGlkLiIK
ICAgICAgICAgICAgIH0sCkBAIC0xMDU5LDcgKzEwODAsOSBAQAogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICJuYW1lIjogImhpZ2hsaWdodEZyYW1lIiwKICAgICAgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIGZyYW1l
IHRvIGhpZ2hsaWdodCIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImZyYW1lSWQi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgZnJh
bWUgdG8gaGlnaGxpZ2h0IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRl
bnRDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGNvbnRlbnQgYm94IGhpZ2hsaWdodCBmaWxsIGNvbG9yIChkZWZhdWx0OiB0cmFuc3Bh
cmVudCkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnRPdXRsaW5l
Q29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IlRoZSBjb250ZW50IGJveCBoaWdobGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNw
YXJlbnQpLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkhpZ2hsaWdodHMgb3duZXIgZWxlbWVudCBvZiB0aGUgZnJhbWUgd2l0aCBnaXZlbiBp
ZC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAyNDU2ZTE4Li43NDQxYTQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAg
LTk4LDYgKzk4LDM0IEBAIG5hbWVzcGFjZSBET01BZ2VudFN0YXRlIHsKIHN0YXRpYyBjb25zdCBj
aGFyIGRvY3VtZW50UmVxdWVzdGVkW10gPSAiZG9jdW1lbnRSZXF1ZXN0ZWQiOwogfTsKIAorc3Rh
dGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9y
T2JqZWN0KQoreworICAgIGlmICghY29sb3JPYmplY3QpCisgICAgICAgIHJldHVybiBDb2xvcjo6
dHJhbnNwYXJlbnQ7CisKKyAgICBpbnQgcjsKKyAgICBpbnQgZzsKKyAgICBpbnQgYjsKKyAgICBi
b29sIHN1Y2Nlc3MgPSAoKmNvbG9yT2JqZWN0KS0+Z2V0TnVtYmVyKCJyIiwgJnIpOworICAgIHN1
Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCktPmdldE51bWJlcigiZyIsICZnKTsKKyAgICBzdWNjZXNz
IHw9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImIiLCAmYik7CisgICAgaWYgKCFzdWNjZXNz
KQorICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OworCisgICAgZG91YmxlIGE7Cisg
ICAgc3VjY2VzcyA9ICgqY29sb3JPYmplY3QpLT5nZXROdW1iZXIoImEiLCAmYSk7CisgICAgaWYg
KCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gQ29sb3IociwgZywgYik7CisKKyAgICAvLyBDbGFt
cCBhbHBoYSB0byB0aGUgWzAuLjFdIHJhbmdlLgorICAgIGlmIChhIDwgMCkKKyAgICAgICAgYSA9
IDA7CisgICAgZWxzZSBpZiAoYSA+IDEpCisgICAgICAgIGEgPSAxOworCisgICAgcmV0dXJuIENv
bG9yKHIsIGcsIGIsIHN0YXRpY19jYXN0PGludD4oYSAqIDI1NSkpOworfQorCiBjbGFzcyBNYXRj
aEpvYiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoKExpc3RIYXNoU2V0PE5vZGUq
PiYgcmVzdWx0Q29sbGVjdG9yKSA9IDA7CkBAIC05NzcsNyArMTAwNSw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmZvY3VzTm9kZSgpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQp
CiB7Ci0gICAgaWYgKCFtX3NlYXJjaGluZ0Zvck5vZGUpCisgICAgaWYgKCFtX3NlYXJjaGluZ0Zv
ck5vZGUgfHwgIW1faGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSog
bm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKQEAgLTk4NSw3ICsxMDEzLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCB1bnMKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKICAgICBp
ZiAobm9kZSkgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKLSAgICAgICAgaGlnaGxpZ2h0
KCZlcnJvciwgbm9kZSwgImFsbCIpOworICAgICAgICBoaWdobGlnaHQoJmVycm9yLCBub2RlKTsK
ICAgICB9CiB9CiAKQEAgLTEwMDUsMzYgKzEwMzMsNzAgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKQogICAg
IHNldFNlYXJjaGluZ0Zvck5vZGUoZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodChFcnJvclN0cmluZyosIE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodChFcnJvclN0cmluZyosIE5vZGUq
IG5vZGUpCiB7CisgICAgLy8gVGhpcyBtZXRob2QgcmVxdWlyZXMgbV9oaWdobGlnaHRlZFJlY3Qg
dG8gaGF2ZSBiZWVuIHNldCBieSBpdHMgY2xpZW50LgogICAgIEFTU0VSVF9BUkcobm9kZSwgbm9k
ZSk7CiAgICAgbV9oaWdobGlnaHRlZE5vZGUgPSBub2RlOwotICAgIG1faGlnaGxpZ2h0TW9kZSA9
IG1vZGU7CiAgICAgbV9jbGllbnQtPmhpZ2hsaWdodCgpOwogfQogCi12b2lkIEluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVy
cm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIG91dGxpbmVDb2xvcikKIHsKICAgICBtX2hpZ2hsaWdodGVkUmVjdCA9IGFkb3B0UHRyKG5l
dyBJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICBtX2hpZ2hsaWdodERhdGEgPSBh
ZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPmNvbnRl
bnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRs
aW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAgIG1fY2xpZW50LT5oaWdobGlnaHQo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmlu
ZyogZXJyb3IsIGludCBub2RlSWQsIFN0cmluZyogbW9kZSkKLXsKLSAgICBpZiAoTm9kZSogbm9k
ZSA9IG5vZGVGb3JJZChub2RlSWQpKQotICAgICAgICBoaWdobGlnaHQoZXJyb3IsIG5vZGUsIG1v
ZGUgJiYgIW1vZGUtPmlzRW1wdHkoKSA/ICptb2RlIDogImFsbCIpOwordm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKKyAgICBFcnJvclN0cmluZyogZXJyb3IsCisgICAgaW50
IG5vZGVJZCwKKyAgICBib29sIHNob3dJbmZvLAorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBjb250ZW50Q29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IGNvbnRlbnRPdXRsaW5lQ29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IHBhZGRpbmdDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcGFkZGlu
Z091dGxpbmVDb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogYm9yZGVy
Q29sb3IsCisgICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGJvcmRlck91dGxpbmVD
b2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogbWFyZ2luQ29sb3IsCisg
ICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1hcmdpbk91dGxpbmVDb2xvcikKK3sK
KyAgICBpZiAoTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpKSB7CisgICAgICAgIG1faGln
aGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOworICAgICAgICBtX2hp
Z2hsaWdodERhdGEtPnNob3dJbmZvID0gc2hvd0luZm87CisgICAgICAgIG1faGlnaGxpZ2h0RGF0
YS0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29udGVudENvbG9yKTsKKyAgICAgICAgbV9oaWdobGln
aHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3IoY29udGVudE91dGxpbmVDb2xvcik7
CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+cGFkZGluZyA9IHBhcnNlQ29sb3IocGFkZGluZ0Nv
bG9yKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5wYWRkaW5nT3V0bGluZSA9IHBhcnNlQ29s
b3IocGFkZGluZ091dGxpbmVDb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+Ym9yZGVy
ID0gcGFyc2VDb2xvcihib3JkZXJDb2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+Ym9y
ZGVyT3V0bGluZSA9IHBhcnNlQ29sb3IoYm9yZGVyT3V0bGluZUNvbG9yKTsKKyAgICAgICAgbV9o
aWdobGlnaHREYXRhLT5tYXJnaW4gPSBwYXJzZUNvbG9yKG1hcmdpbkNvbG9yKTsKKyAgICAgICAg
bV9oaWdobGlnaHREYXRhLT5tYXJnaW5PdXRsaW5lID0gcGFyc2VDb2xvcihtYXJnaW5PdXRsaW5l
Q29sb3IpOworICAgICAgICBoaWdobGlnaHQoZXJyb3IsIG5vZGUpOworICAgIH0KIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yLCBj
b25zdCBTdHJpbmcmIGZyYW1lSWQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRG
cmFtZSgKKyAgICBFcnJvclN0cmluZyogZXJyb3IsCisgICAgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LAorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwKKyAgICBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IG1fcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOwotICAgIGlmIChmcmFtZSAmJiBm
cmFtZS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgIGhpZ2hsaWdodChlcnJvciwgZnJhbWUtPm93
bmVyRWxlbWVudCgpLCAiYWxsIik7CisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5vd25lckVsZW1l
bnQoKSkgeworICAgICAgICBtX2hpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0
RGF0YSgpKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5jb250ZW50ID0gcGFyc2VDb2xvcihj
b2xvcik7CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNv
bG9yKG91dGxpbmVDb2xvcik7CisgICAgICAgIGhpZ2hsaWdodChlcnJvciwgZnJhbWUtPm93bmVy
RWxlbWVudCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZGVIaWdo
bGlnaHQoRXJyb3JTdHJpbmcqKQogewogICAgIG1faGlnaGxpZ2h0ZWROb2RlID0gMDsKKyAgICBt
X2hpZ2hsaWdodERhdGEuY2xlYXIoKTsKICAgICBtX2hpZ2hsaWdodGVkUmVjdC5jbGVhcigpOwog
ICAgIG1fY2xpZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CkBAIC0xNTEyLDIzICsxNTc0LDE0IEBA
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JET01BZ2VudDo6cmVzb2x2ZU5v
ZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkcmF3SGln
aGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAobV9oaWdo
bGlnaHRlZFJlY3QpIHsKLSAgICAgICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3UmVjdEhpZ2hs
aWdodChjb250ZXh0LCBtX2RvY3VtZW50LmdldCgpLCBtX2hpZ2hsaWdodGVkUmVjdC5nZXQoKSk7
CisgICAgICAgIERPTU5vZGVIaWdobGlnaHRlcjo6ZHJhd1JlY3RIaWdobGlnaHQoY29udGV4dCwg
bV9kb2N1bWVudC5nZXQoKSwgbV9oaWdobGlnaHRlZFJlY3QuZ2V0KCksIG1faGlnaGxpZ2h0RGF0
YS0+Y29udGVudCwgbV9oaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAoIW1faGlnaGxpZ2h0ZWROb2RlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1vZGUgbW9kZSA9IERPTU5v
ZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsOwotICAgIGlmIChtX2hpZ2hsaWdodE1vZGUgPT0g
ImNvbnRlbnQiKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRD
b250ZW50OwotICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0TW9kZSA9PSAicGFkZGluZyIpCi0gICAg
ICAgIG1vZGUgPSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodFBhZGRpbmc7Ci0gICAgZWxz
ZSBpZiAobV9oaWdobGlnaHRNb2RlID09ICJib3JkZXIiKQotICAgICAgICBtb2RlID0gRE9NTm9k
ZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRCb3JkZXI7Ci0gICAgZWxzZSBpZiAobV9oaWdobGlnaHRN
b2RlID09ICJtYXJnaW4iKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdo
bGlnaHRNYXJnaW47Ci0gICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChj
b250ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5nZXQoKSwgbW9kZSk7CisgICAgRE9NTm9kZUhpZ2hs
aWdodGVyOjpkcmF3Tm9kZUhpZ2hsaWdodChjb250ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5nZXQo
KSwgbV9oaWdobGlnaHREYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA5YjE4
NDkzLi5jOGZjYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaApAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSGl0VGVzdFJl
c3VsdDsKIGNsYXNzIE1hdGNoSm9iOwogY2xhc3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBIaWdobGln
aHREYXRhOwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogY2xhc3MgTmFtZU5vZGVNYXA7CkBAIC0xMzMsOSArMTM0LDkgQEAgcHVibGljOgogICAgIHZv
aWQgcmVxdWVzdE5vZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBpbnQq
IG5vZGVJZCk7CiAgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2b2lkIGhpZGVIaWdobGln
aHQoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBoaWdobGlnaHRO
b2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgU3RyaW5nKiBtb2RlKTsKLSAgICB2b2lkIGhp
Z2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKKyAgICB2
b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwg
aW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKKyAgICB2b2lkIGhpZ2hsaWdo
dE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBib29sIHNob3dJbmZvLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogY29udGVudENvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogY29udGVudE91dGxpbmVDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4qIHBhZGRpbmdDb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHBhZGRpbmdP
dXRsaW5lQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBib3JkZXJDb2xvciwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGJvcmRlck91dGxpbmVDb2xvciwgY29uc3Qg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG1hcmdpbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogbWFyZ2luT3V0bGluZUNvbG9yKTsKKyAgICB2b2lkIGhpZ2hsaWdodEZyYW1l
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5l
Q29sb3IpOwogICAgIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHRh
cmdldE5vZGVJZCwgY29uc3QgaW50KiBjb25zdCBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlk
KTsKIAogICAgIE5vZGUqIGhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaGxp
Z2h0ZWROb2RlLmdldCgpOyB9CkBAIC0xODMsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICBJbnNw
ZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kiwg
SW5zcGVjdG9yQ2xpZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
KTsKIAogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpOwotICAgIHZv
aWQgaGlnaGxpZ2h0KEVycm9yU3RyaW5nKiwgTm9kZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Cisg
ICAgdm9pZCBoaWdobGlnaHQoRXJyb3JTdHJpbmcqLCBOb2RlKik7CiAKICAgICAvLyBOb2RlLXJl
bGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5v
ZGVUb0lkTWFwOwpAQCAtMjMzLDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJldmFs
aWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CiAgICAg
UmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0ZWROb2RlOwogICAgIE93blB0cjxJbnRSZWN0PiBtX2hp
Z2hsaWdodGVkUmVjdDsKLSAgICBTdHJpbmcgbV9oaWdobGlnaHRNb2RlOworICAgIE93blB0cjxI
aWdobGlnaHREYXRhPiBtX2hpZ2hsaWdodERhdGE7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZVRv
Rm9jdXM7CiAgICAgYm9vbCBtX3NlYXJjaGluZ0Zvck5vZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMKaW5kZXggNzNlNDdkNC4uMmM1YmEwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzCkBAIC0zMyw2ICsz
MywxMSBAQCBXZWJJbnNwZWN0b3IuQ29sb3IgPSBmdW5jdGlvbihzdHIpCiAgICAgdGhpcy5fcGFy
c2UoKTsKIH0KIAorV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBID0gZnVuY3Rpb24ociwgZywg
YiwgYSkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcigicmdiYSgiICsgciAr
ICIsIiArIGcgKyAiLCIgKyBiICsgIiwiICsgKHR5cGVvZiBhID09PSAidW5kZWZpbmVkIiA/IDEg
OiBhKSArICIpIik7Cit9CisKIFdlYkluc3BlY3Rvci5Db2xvci5wcm90b3R5cGUgPSB7CiAgICAg
Z2V0IHNob3J0aGV4KCkKICAgICB7CkBAIC0xNjYsNiArMTcxLDIxIEBAIFdlYkluc3BlY3Rvci5D
b2xvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRocm93ICJpbnZhbGlkIGNvbG9yIGZvcm1hdCI7
CiAgICAgfSwKIAorICAgIHRvUHJvdG9jb2xSR0JBOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5fcHJvdG9jb2xSR0JBKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3Rv
Y29sUkdCQTsKKworICAgICAgICB2YXIgY29tcG9uZW50cyA9IHRoaXMucmdiYTsKKyAgICAgICAg
aWYgKGNvbXBvbmVudHMpCisgICAgICAgICAgICB0aGlzLl9wcm90b2NvbFJHQkEgPSB7IHI6IE51
bWJlcihjb21wb25lbnRzWzBdKSwgZzogTnVtYmVyKGNvbXBvbmVudHNbMV0pLCBiOiBOdW1iZXIo
Y29tcG9uZW50c1syXSksIGE6IE51bWJlcihjb21wb25lbnRzWzNdKSB9OworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGNvbXBvbmVudHMgPSB0aGlzLnJnYjsKKyAgICAgICAgICAgIHRoaXMu
X3Byb3RvY29sUkdCQSA9IHsgcjogTnVtYmVyKGNvbXBvbmVudHNbMF0pLCBnOiBOdW1iZXIoY29t
cG9uZW50c1sxXSksIGI6IE51bWJlcihjb21wb25lbnRzWzJdKSB9OworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB0aGlzLl9wcm90b2NvbFJHQkE7CisgICAgfSwKKwogICAgIF9yZ2JUb0hleDog
ZnVuY3Rpb24ocmdiKQogICAgIHsKICAgICAgICAgdmFyIHIgPSBwYXJzZUludChyZ2JbMF0pLnRv
U3RyaW5nKDE2KTsKQEAgLTY2MSwzICs2ODEsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLkFkdmFu
Y2VkTmlja05hbWVzID0gewogICAgICJyZ2JhKDAsMCwwLDApIjogW1swLCAwLCAwLCAwXSwgWzAs
IDAsIDAsIDBdLCAidHJhbnNwYXJlbnQiXSwKICAgICAiaHNsYSgwLDAsMCwwKSI6IFtbMCwgMCwg
MCwgMF0sIFswLCAwLCAwLCAwXSwgInRyYW5zcGFyZW50Il0sCiB9OworCitXZWJJbnNwZWN0b3Iu
Q29sb3IuUGFnZUhpZ2hsaWdodCA9IHsKKyAgICBDb250ZW50OiBXZWJJbnNwZWN0b3IuQ29sb3Iu
ZnJvbVJHQkEoMTExLCAxNjgsIDIyMCwgLjY2KSwKKyAgICBDb250ZW50T3V0bGluZTogV2ViSW5z
cGVjdG9yLkNvbG9yLmZyb21SR0JBKDksIDgzLCAxNDgpLAorICAgIFBhZGRpbmc6IFdlYkluc3Bl
Y3Rvci5Db2xvci5mcm9tUkdCQSgxNDcsIDE5NiwgMTI1LCAuNTUpLAorICAgIFBhZGRpbmdPdXRs
aW5lOiBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEoNTUsIDExOCwgMjgpLAorICAgIEJvcmRl
cjogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDI1NSwgMjI5LCAxNTMsIC42NiksCisgICAg
Qm9yZGVyT3V0bGluZTogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDEyNywgOTYsIDApLAor
ICAgIE1hcmdpbjogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDI0NiwgMTc4LCAxMDcsIC42
NiksCisgICAgTWFyZ2luT3V0bGluZTogV2ViSW5zcGVjdG9yLkNvbG9yLmZyb21SR0JBKDE4MCwg
OTUsIDQpCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwppbmRl
eCBiMDU4YTQwLi5jMmUwMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcwpAQCAtMTI4LDE1ICsxMjgsMzgg
QEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmIChmcm9tRWxlbWVudCA9PT0gdG9FbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCisg
ICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlT3ZlcihlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKKworICAgICAgICAgICAg
dmFyIGJnQ29sb3I7CisgICAgICAgICAgICBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJtYXJn
aW4iKSkKKyAgICAgICAgICAgICAgICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VI
aWdobGlnaHQuTWFyZ2luLnRvU3RyaW5nKCJvcmlnaW5hbCIpOworICAgICAgICAgICAgZWxzZSBp
ZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJib3JkZXIiKSkKKyAgICAgICAgICAgICAgICBiZ0Nv
bG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQm9yZGVyLnRvU3RyaW5nKCJv
cmlnaW5hbCIpOworICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJw
YWRkaW5nIikpCisgICAgICAgICAgICAgICAgYmdDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5Q
YWdlSGlnaGxpZ2h0LlBhZGRpbmcudG9TdHJpbmcoIm9yaWdpbmFsIik7CisgICAgICAgICAgICBl
bHNlIGlmIChlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoImNvbnRlbnQiKSkKKyAgICAgICAgICAgICAg
ICBiZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29udGVudC50b1N0
cmluZygib3JpZ2luYWwiKTsKKyAgICAgICAgICAgIGlmIChiZ0NvbG9yKQorICAgICAgICAgICAg
ICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gYmdDb2xvcjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlT3V0KGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiI7CisgICAgICAgICAg
ICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIGlmIChzaG93SGlnaGxpZ2h0KSB7CiAgICAgICAgICAgICAvLyBJbnRvIGVsZW1lbnQuCiAg
ICAgICAgICAgICBpZiAodGhpcy5ub2RlICYmIHRvRWxlbWVudCkKLSAgICAgICAgICAgICAgICB0
b0VsZW1lbnQuYWRkU3R5bGVDbGFzcygiaG92ZXJlZCIpOworICAgICAgICAgICAgICAgIGhhbmRs
ZU1vdXNlT3Zlcih0b0VsZW1lbnQpOwogICAgICAgICAgICAgdmFyIG5vZGVJZCA9IHRoaXMubm9k
ZSA/IHRoaXMubm9kZS5pZCA6IDA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBP
dXQgb2YgZWxlbWVudC4KICAgICAgICAgICAgIGlmIChmcm9tRWxlbWVudCkKLSAgICAgICAgICAg
ICAgICBmcm9tRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJob3ZlcmVkIik7CisgICAgICAgICAg
ICAgICAgaGFuZGxlTW91c2VPdXQoZnJvbUVsZW1lbnQpOwogICAgICAgICAgICAgdmFyIG5vZGVJ
ZCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGVJZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggOTNm
MzJlMS4uOWJlOTM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xMDk1LDcgKzEwOTUsNyBAQCBXZWJJbnNwZWN0
b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoaG92
ZXJlZCkgewogICAgICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
aG92ZXJlZCIpOwotICAgICAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0RnJhbWUodGhpcy5fZnJh
bWVJZCk7CisgICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHRGcmFtZSh0aGlzLl9mcmFtZUlk
LCBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Db250ZW50LnRvUHJvdG9jb2xSR0JB
KCksIFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkNvbnRlbnRPdXRsaW5lLnRvUHJv
dG9jb2xSR0JBKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGhpcy5saXN0SXRl
bUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaG92ZXJlZCIpOwogICAgICAgICAgICAgRE9NQWdl
bnQuaGlkZUhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZVBhbmVsLmpzCmluZGV4IGE2Yjk0ZWMuLmQyNWQ5YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMK
QEAgLTczNyw3ICs3MzcsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRlZFJlY3QgPT09IHJlY29yZC5kYXRhKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9oaWdobGlnaHRlZFJlY3QgPSByZWNv
cmQuZGF0YTsKLSAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0UmVjdCh0aGlzLl9oaWdobGlnaHRl
ZFJlY3QueCwgdGhpcy5faGlnaGxpZ2h0ZWRSZWN0LnksIHRoaXMuX2hpZ2hsaWdodGVkUmVjdC53
aWR0aCwgdGhpcy5faGlnaGxpZ2h0ZWRSZWN0LmhlaWdodCk7CisgICAgICAgIERPTUFnZW50Lmhp
Z2hsaWdodFJlY3QodGhpcy5faGlnaGxpZ2h0ZWRSZWN0LngsIHRoaXMuX2hpZ2hsaWdodGVkUmVj
dC55LCB0aGlzLl9oaWdobGlnaHRlZFJlY3Qud2lkdGgsIHRoaXMuX2hpZ2hsaWdodGVkUmVjdC5o
ZWlnaHQsIFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkNvbnRlbnQudG9Qcm90b2Nv
bFJHQkEoKSwgV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29udGVudE91dGxpbmUu
dG9Qcm90b2NvbFJHQkEoKSk7CiAgICAgfSwKIAogICAgIF9oaWRlUmVjdEhpZ2hsaWdodDogZnVu
Y3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzCmluZGV4IGYwN2UyYzMuLmM2NGRjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTE4ODgsMTAgKzE4ODgsNiBAQCBi
b2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFuZS1zdWJ0aXRsZSB7CiAgICAgbWFyZ2lu
OiAzcHg7CiB9CiAKLS5tZXRyaWNzIC5tYXJnaW4uaG92ZXJlZCB7Ci0gICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDEzOSwgMTgyLCAyMjEpOwotfQotCiAubWV0cmljcyAuYm9yZGVyIHsKICAgICBi
b3JkZXI6IDFweCBibGFjayBzb2xpZDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKQEAg
LTE5MDIsMTAgKzE4OTgsNiBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFuZS1z
dWJ0aXRsZSB7CiAgICAgbWFyZ2luOiAzcHg7CiB9CiAKLS5tZXRyaWNzIC5ib3JkZXIuaG92ZXJl
ZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1NywgMTkzLCAyMjYpOwotfQotCiAubWV0
cmljcyAucGFkZGluZyB7CiAgICAgYm9yZGVyOiAxcHggZ3JleSBkYXNoZWQ7CiAgICAgYmFja2dy
b3VuZC1jb2xvcjogd2hpdGU7CkBAIC0xOTE2LDEwICsxOTA4LDYgQEAgYm9keS5wbGF0Zm9ybS13
aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAgIG1hcmdpbjogM3B4OwogfQogCi0u
bWV0cmljcyAucGFkZGluZy5ob3ZlcmVkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTcz
LCAyMDQsIDIzMSk7Ci19Ci0KIC5tZXRyaWNzIC5jb250ZW50IHsKICAgICBwb3NpdGlvbjogc3Rh
dGljOwogICAgIGJvcmRlcjogMXB4IGdyZXkgc29saWQ7CkBAIC0xOTM0LDEwICsxOTIyLDYgQEAg
Ym9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAgIG92ZXJm
bG93OiB2aXNpYmxlOwogfQogCi0ubWV0cmljcyAuY29udGVudC5ob3ZlcmVkIHsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMTkwLCAyMTQsIDIzNik7Ci19Ci0KIC5tZXRyaWNzIC5jb250ZW50
IHNwYW4gewogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMDc2ODAwYi4uYTEwNGUy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMKQEAgLTM4Miw5ICszODIsMzEgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICB0aGlzLl9oaWdobGlnaHRlZERPTU5vZGVJZCA9IG5vZGVJZDsK
LSAgICAgICAgaWYgKG5vZGVJZCkKLSAgICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodE5vZGUo
bm9kZUlkLCBtb2RlIHx8ICJhbGwiKTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAobm9kZUlk
KSB7CisgICAgICAgICAgICBtb2RlID0gbW9kZSB8fCAiYWxsIjsKKyAgICAgICAgICAgIHZhciBh
cmdzID0geyBub2RlSWQ6IG5vZGVJZCwgc2hvd0luZm86IG1vZGUgPT09ICJhbGwiIH07CisgICAg
ICAgICAgICBpZiAobW9kZSA9PT0gImFsbCIgfHwgbW9kZSA9PT0gImNvbnRlbnQiKSB7CisgICAg
ICAgICAgICAgICAgYXJncy5jb250ZW50Q29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhp
Z2hsaWdodC5Db250ZW50LnRvUHJvdG9jb2xSR0JBKCk7CisgICAgICAgICAgICAgICAgYXJncy5j
b250ZW50T3V0bGluZUNvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuQ29u
dGVudE91dGxpbmUudG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKG1vZGUgPT09ICJhbGwiIHx8IG1vZGUgPT09ICJwYWRkaW5nIikgeworICAgICAgICAg
ICAgICAgIGFyZ3MucGFkZGluZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGln
aHQuUGFkZGluZy50b1Byb3RvY29sUkdCQSgpOworICAgICAgICAgICAgICAgIGFyZ3MucGFkZGlu
Z091dGxpbmVDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LlBhZGRpbmdP
dXRsaW5lLnRvUHJvdG9jb2xSR0JBKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChtb2RlID09PSAiYWxsIiB8fCBtb2RlID09PSAiYm9yZGVyIikgeworICAgICAgICAgICAgICAg
IGFyZ3MuYm9yZGVyQ29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Cb3Jk
ZXIudG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgICAgICBhcmdzLmJvcmRlck91dGxpbmVD
b2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkJvcmRlck91dGxpbmUudG9Q
cm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1vZGUgPT09
ICJhbGwiIHx8IG1vZGUgPT09ICJtYXJnaW4iKSB7CisgICAgICAgICAgICAgICAgYXJncy5tYXJn
aW5Db2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0Lk1hcmdpbi50b1Byb3Rv
Y29sUkdCQSgpOworICAgICAgICAgICAgICAgIGFyZ3MubWFyZ2luT3V0bGluZUNvbG9yID0gV2Vi
SW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuTWFyZ2luT3V0bGluZS50b1Byb3RvY29sUkdC
QSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHROb2Rl
Lmludm9rZShhcmdzKTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBET01BZ2VudC5oaWRl
SGlnaGxpZ2h0KCk7CiAgICAgfSwKIAo=
</data>
<flag name="review"
          id="100588"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104840</attachid>
            <date>2011-08-23 06:51:18 -0700</date>
            <delta_ts>2011-08-23 06:58:55 -0700</delta_ts>
            <desc>[PATCH] Protocol-related comments addressed</desc>
            <filename>nodehighlight.patch</filename>
            <type>text/plain</type>
            <size>52988</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDhkNDIzNWY2MDVlNDk4MzZlY2I4NjQxNmU2ZDExMjE3NjgxMDU3OGMKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBGcmkgQXVnIDE5
IDIwOjU5OjI5IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE4MTVlZi4uMTY4
OGI3MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDExLTA4LTIzICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
ZGlmZmVyZW50aWF0ZSBlbGVtZW50IGhpZ2hsaWdodCBjb2xvcnMgZm9yIG1hcmdpbiBhbmQgcGFk
ZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc3
NjgKKworICAgICAgICBUaGUgaGlnaGxpZ2h0aW5nIFdJUCBBUEkgaXMgc2xpZ2h0bHkgY2hhbmdl
ZDogY2xpZW50cyB3aWxsIHNwZWNpZnkgY29sb3JzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRo
ZSBoaWdobGlnaHRlZCBvYmplY3RzLAorICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyaWMgImhp
Z2hsaWdodGluZyBtb2RlIi4gVGhpcyBhbGxvd3MgdG86CisgICAgICAgIC0gdXNlIGVudGlyZWx5
IGN1c3RvbSBjb2xvcnMgZm9yIGhpZ2hsaWdodGluZyAoYW5kIHZhcnkgdGhlbSBvdmVyIHRpbWUp
OworICAgICAgICAtIGRpc3BsYXkgYW55IGNvbWJpbmF0aW9uIG9mIGZpbGwvb3V0bGluZSBmb3Ig
dGhlIGhpZ2hsaWdodGVkIGFyZWE7CisgICAgICAgIC0gaGlnaGxpZ2h0IGFueSBjb21iaW5hdGlv
bnMgb2YgZWxlbWVudCBwYXJ0cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NTm9kZUhpZ2hsaWdodGVyOjpkcmF3SGlnaGxpZ2h0KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
Q29uZmlnQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6On5JbnNw
ZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y2xl
YXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0ZWROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVN
b3VzZVByZXNzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
c2V0U2VhcmNoaW5nRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6aGlkZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
ZHJhd0hpZ2hsaWdodCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db2xvci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db2xvci5mcm9tUkdCQSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29sb3IucHJv
dG90eXBlLnRvUHJvdG9jb2xSR0JBKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUuc2V0U2VhcmNoaW5nRm9yTm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9NZXRyaWNzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1Np
ZGViYXJQYW5lLnByb3RvdHlwZS5faGlnaGxpZ2h0RE9NTm9kZS5oYW5kbGVNb3VzZU92ZXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hpZ2hs
aWdodERPTU5vZGUuaGFuZGxlTW91c2VPdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJp
Y3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2hpZ2hsaWdodERPTU5vZGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuc2V0IGhvdmVyZWQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5faGlnaGxpZ2h0UmVjdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmJ1aWxkSGlnaGxpZ2h0
Q29uZmlnKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5oaWdobGlnaHRET01Ob2RlKToKKwogMjAx
MS0wOC0xOCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBleHRyYWN0IGJyZWFrcG9pbnQgbWFuYWdlbWVudCBjb2RlIHRv
IGEgc2VwYXJhdGUgY2xhc3MgYW5kIGFkZCB0ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKaW5kZXggMDRiYjQ0OC4uNzlmZTM0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKQEAg
LTMzLDkgKzMzLDExIEBACiAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRm9udENh
Y2hlLmgiCisjaW5jbHVkZSAiRm9udEZhbWlseS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVk
ZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1
ZGUgIlJlbmRlcklubGluZS5oIgpAQCAtNDcsNiArNDksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBuYW1lc3BhY2UgewogCitjb25zdCBzdGF0aWMgaW50IHJlY3RJbmZsYXRlUHggPSA0Owor
Y29uc3Qgc3RhdGljIGludCBmb250SGVpZ2h0UHggPSAxMjsKK2NvbnN0IHN0YXRpYyBpbnQgYm9y
ZGVyV2lkdGhQeCA9IDE7Citjb25zdCBzdGF0aWMgaW50IHRvb2x0aXBQYWRkaW5nID0gNDsKKwor
Y29uc3Qgc3RhdGljIGludCBhcnJvd1RpcE9mZnNldCA9IDIwOworY29uc3Qgc3RhdGljIGludCBh
cnJvd0hlaWdodCA9IDc7Citjb25zdCBzdGF0aWMgaW50IGFycm93SGFsZldpZHRoID0gNzsKKwog
UGF0aCBxdWFkVG9QYXRoKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKIHsKICAgICBQYXRoIHF1YWRQ
YXRoOwpAQCAtNTgsMTAgKzY5LDkgQEAgUGF0aCBxdWFkVG9QYXRoKGNvbnN0IEZsb2F0UXVhZCYg
cXVhZCkKICAgICByZXR1cm4gcXVhZFBhdGg7CiB9CiAKLXZvaWQgZHJhd091dGxpbmVkUXVhZChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgQ29s
b3ImIGZpbGxDb2xvcikKK3ZvaWQgZHJhd091dGxpbmVkUXVhZChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgQ29sb3ImIGZpbGxDb2xvciwgY29u
c3QgQ29sb3ImIG91dGxpbmVDb2xvcikKIHsKICAgICBzdGF0aWMgY29uc3QgaW50IG91dGxpbmVU
aGlja25lc3MgPSAyOwotICAgIHN0YXRpYyBjb25zdCBDb2xvciBvdXRsaW5lQ29sb3IoNjIsIDg2
LCAxODAsIDIyOCk7CiAKICAgICBQYXRoIHF1YWRQYXRoID0gcXVhZFRvUGF0aChxdWFkKTsKIApA
QCAtODMsNDcgKzkzLDUxIEBAIHZvaWQgZHJhd091dGxpbmVkUXVhZChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgY29uc3QgQ29sCiAgICAgY29udGV4dC5m
aWxsUGF0aChxdWFkUGF0aCk7CiB9CiAKLXZvaWQgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjb25zdCBGbG9h
dFF1YWQmIGNsaXBRdWFkLCBjb25zdCBDb2xvciYgZmlsbENvbG9yKQordm9pZCBkcmF3T3V0bGlu
ZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQm
IHF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgY2xpcFF1YWQsIGNvbnN0IENvbG9yJiBmaWxsQ29sb3Is
IGNvbnN0IENvbG9yJiBvdXRsaW5lQ29sb3IpCiB7CiAgICAgY29udGV4dC5zYXZlKCk7CiAgICAg
UGF0aCBjbGlwUXVhZFBhdGggPSBxdWFkVG9QYXRoKGNsaXBRdWFkKTsKICAgICBjb250ZXh0LmNs
aXBPdXQoY2xpcFF1YWRQYXRoKTsKLSAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIHF1YWQs
IGZpbGxDb2xvcik7CisgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBxdWFkLCBmaWxsQ29s
b3IsIG91dGxpbmVDb2xvcik7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgZHJh
d0hpZ2hsaWdodEZvckJveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVh
ZCYgY29udGVudFF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0
UXVhZCYgYm9yZGVyUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBET01Ob2RlSGln
aGxpZ2h0ZXI6OkhpZ2hsaWdodE1vZGUgbW9kZSkKK3ZvaWQgZHJhd0hpZ2hsaWdodEZvckJveChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVudFF1YWQsIGNv
bnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9yZGVyUXVhZCwg
Y29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHREYXRh
KQogewotICAgIHN0YXRpYyBjb25zdCBDb2xvciBjb250ZW50Qm94Q29sb3IoMTI1LCAxNzMsIDIx
NywgMTI4KTsKLSAgICBzdGF0aWMgY29uc3QgQ29sb3IgcGFkZGluZ0JveENvbG9yKDEyNSwgMTcz
LCAyMTcsIDE2MCk7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIGJvcmRlckJveENvbG9yKDEyNSwg
MTczLCAyMTcsIDE5Mik7Ci0gICAgc3RhdGljIGNvbnN0IENvbG9yIG1hcmdpbkJveENvbG9yKDEy
NSwgMTczLCAyMTcsIDIyOCk7CisgICAgYm9vbCBoYXNNYXJnaW4gPSBoaWdobGlnaHREYXRhLT5t
YXJnaW4gIT0gQ29sb3I6OnRyYW5zcGFyZW50IHx8IGhpZ2hsaWdodERhdGEtPm1hcmdpbk91dGxp
bmUgIT0gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIGJvb2wgaGFzQm9yZGVyID0gaGlnaGxpZ2h0
RGF0YS0+Ym9yZGVyICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHREYXRhLT5ib3Jk
ZXJPdXRsaW5lICE9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBib29sIGhhc1BhZGRpbmcgPSBo
aWdobGlnaHREYXRhLT5wYWRkaW5nICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHRE
YXRhLT5wYWRkaW5nT3V0bGluZSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXND
b250ZW50ID0gaGlnaGxpZ2h0RGF0YS0+Y29udGVudCAhPSBDb2xvcjo6dHJhbnNwYXJlbnQgfHwg
aGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUgIT0gQ29sb3I6OnRyYW5zcGFyZW50OwogCiAg
ICAgRmxvYXRRdWFkIGNsaXBRdWFkOwotICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGlnaHRl
cjo6SGlnaGxpZ2h0TWFyZ2luIHx8IChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxp
Z2h0QWxsICYmIG1hcmdpblF1YWQgIT0gYm9yZGVyUXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxp
bmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIG1hcmdpblF1YWQsIGJvcmRlclF1YWQsIG1hcmdpbkJv
eENvbG9yKTsKKyAgICBDb2xvciBjbGlwQ29sb3I7CisgICAgaWYgKGhhc01hcmdpbiAmJiAoIWhh
c0JvcmRlciB8fCBtYXJnaW5RdWFkICE9IGJvcmRlclF1YWQpKSB7CisgICAgICAgIGRyYXdPdXRs
aW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBoaWdobGln
aHREYXRhLT5tYXJnaW4sIGhpZ2hsaWdodERhdGEtPm1hcmdpbk91dGxpbmUpOwogICAgICAgICBj
bGlwUXVhZCA9IGJvcmRlclF1YWQ7CisgICAgICAgIGNsaXBDb2xvciA9IGhpZ2hsaWdodERhdGEt
Pm1hcmdpbk91dGxpbmU7CiAgICAgfQotICAgIGlmIChtb2RlID09IERPTU5vZGVIaWdobGlnaHRl
cjo6SGlnaGxpZ2h0Qm9yZGVyIHx8IChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxp
Z2h0QWxsICYmIGJvcmRlclF1YWQgIT0gcGFkZGluZ1F1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRs
aW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCwgYm9yZGVy
Qm94Q29sb3IpOworICAgIGlmIChoYXNCb3JkZXIgJiYgKCFoYXNQYWRkaW5nIHx8IGJvcmRlclF1
YWQgIT0gcGFkZGluZ1F1YWQpKSB7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChj
b250ZXh0LCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCwgaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyLCBo
aWdobGlnaHREYXRhLT5ib3JkZXJPdXRsaW5lKTsKICAgICAgICAgY2xpcFF1YWQgPSBwYWRkaW5n
UXVhZDsKKyAgICAgICAgY2xpcENvbG9yID0gaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyT3V0bGluZTsK
ICAgICB9Ci0gICAgaWYgKG1vZGUgPT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRQYWRk
aW5nIHx8IChtb2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsICYmIHBhZGRp
bmdRdWFkICE9IGNvbnRlbnRRdWFkKSkgewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENs
aXAoY29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBwYWRkaW5nQm94Q29sb3IpOwor
ICAgIGlmIChoYXNQYWRkaW5nICYmICghaGFzQ29udGVudCB8fCBwYWRkaW5nUXVhZCAhPSBjb250
ZW50UXVhZCkpIHsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIHBh
ZGRpbmdRdWFkLCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0RGF0YS0+cGFkZGluZywgaGlnaGxpZ2h0
RGF0YS0+cGFkZGluZ091dGxpbmUpOwogICAgICAgICBjbGlwUXVhZCA9IGNvbnRlbnRRdWFkOwor
ICAgICAgICBjbGlwQ29sb3IgPSBoaWdobGlnaHREYXRhLT5wYWRkaW5nT3V0bGluZTsKKyAgICB9
CisgICAgaWYgKGhhc0NvbnRlbnQpCisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwg
Y29udGVudFF1YWQsIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQsIGhpZ2hsaWdodERhdGEtPmNvbnRl
bnRPdXRsaW5lKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGNsaXBDb2xvci5pc1ZhbGlkKCkp
CisgICAgICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgY2xpcFF1YWQs
IGNsaXBRdWFkLCBjbGlwQ29sb3IsIGNsaXBDb2xvcik7CiAgICAgfQotICAgIGlmIChtb2RlID09
IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0Q29udGVudCB8fCBtb2RlID09IERPTU5vZGVI
aWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsKQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRl
eHQsIGNvbnRlbnRRdWFkLCBjb250ZW50Qm94Q29sb3IpOwotICAgIGVsc2UKLSAgICAgICAgZHJh
d091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGNsaXBRdWFkLCBjbGlwUXVhZCwgY29udGVu
dEJveENvbG9yKTsKIH0KIAotdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yTGluZUJveGVzT3JTVkdSZW5k
ZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBs
aW5lQm94UXVhZHMpCit2b2lkIGRyYXdIaWdobGlnaHRGb3JMaW5lQm94ZXNPclNWR1JlbmRlcmVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIGxpbmVC
b3hRdWFkcywgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKIHsKLSAgICBzdGF0aWMgY29u
c3QgQ29sb3IgbGluZUJveENvbG9yKDEyNSwgMTczLCAyMTcsIDEyOCk7Ci0KICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxpbmVCb3hRdWFkcy5zaXplKCk7ICsraSkKLSAgICAgICAgZHJhd091
dGxpbmVkUXVhZChjb250ZXh0LCBsaW5lQm94UXVhZHNbaV0sIGxpbmVCb3hDb2xvcik7CisgICAg
ICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgbGluZUJveFF1YWRzW2ldLCBoaWdobGlnaHRE
YXRhLT5jb250ZW50LCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSk7CiB9CiAKIGlubGlu
ZSBMYXlvdXRTaXplIGZyYW1lVG9NYWluRnJhbWVPZmZzZXQoRnJhbWUqIGZyYW1lKQpAQCAtMTMy
LDU4ICsxNDYsMTM1IEBAIGlubGluZSBMYXlvdXRTaXplIGZyYW1lVG9NYWluRnJhbWVPZmZzZXQo
RnJhbWUqIGZyYW1lKQogICAgIHJldHVybiB0b0xheW91dFNpemUobWFpbkZyYW1lUG9pbnQpOwog
fQogCitpbnQgZHJhd1N1YnN0cmluZyhjb25zdCBUZXh0UnVuJiBnbG9iYWxUZXh0UnVuLCBpbnQg
b2Zmc2V0LCBpbnQgbGVuZ3RoLCBjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBGb250JiBm
b250LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHRpdGxlUmVj
dCkKK3sKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgZ2xvYmFsVGV4dFJ1biwgTGF5b3V0
UG9pbnQodGl0bGVSZWN0LngoKSArIHJlY3RJbmZsYXRlUHgsIHRpdGxlUmVjdC55KCkgKyBmb250
LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkpLCBvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7CisgICAg
cmV0dXJuIG9mZnNldCArIGxlbmd0aDsKK30KKworaW50IGNhbGN1bGF0ZUFycm93VGlwWChjb25z
dCBMYXlvdXRSZWN0JiBhbmNob3JCb3gsIGNvbnN0IExheW91dFJlY3QmIHRpdGxlUmVjdCkKK3sK
KyAgICBpbnQgYW5jaG9yWCA9IGFuY2hvckJveC54KCk7CisKKyAgICAvLyBDaGVjayBmb3IgaGVh
dmlseSBtaXNhbGlnbmVkIHRvb2x0aXAgZmlyc3QuCisgICAgaWYgKHRpdGxlUmVjdC54KCkgPiBh
bmNob3JCb3gubWF4WCgpKQorICAgICAgICByZXR1cm4gdGl0bGVSZWN0LngoKSArIGFycm93SGFs
ZldpZHRoOworCisgICAgaWYgKHRpdGxlUmVjdC5tYXhYKCkgPCBhbmNob3JYKQorICAgICAgICBy
ZXR1cm4gdGl0bGVSZWN0Lm1heFgoKSAtIGFycm93SGFsZldpZHRoOworCisgICAgaW50IHggPSB0
aXRsZVJlY3QueCgpICsgYXJyb3dUaXBPZmZzZXQ7CisgICAgaWYgKHggPCBhbmNob3JYKQorICAg
ICAgICB4ID0gYW5jaG9yWCArIGFycm93VGlwT2Zmc2V0OworICAgIGlmICh4ID4gdGl0bGVSZWN0
Lm1heFgoKSAtIGFycm93SGFsZldpZHRoKQorICAgICAgICB4ID0gdGl0bGVSZWN0Lm1heFgoKSAt
IGFycm93SGFsZldpZHRoOworCisgICAgcmV0dXJuIHg7Cit9CisKK3ZvaWQgc2V0VXBGb250RmFt
aWxpZXMoRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFdlYkNvcmU6OlNldHRpbmdz
KiBzZXR0aW5ncykKK3sKKyNkZWZpbmUgVE9PTFRJUF9GT05UX0ZBTUlMSUVTKHNpemUsIC4uLikg
XAorc3RhdGljIHVuc2lnbmVkIHRvb2x0aXBGb250RmFjZVNpemUgPSBzaXplO1wKK3N0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcqIHRvb2x0aXBGb250RmFjZVtzaXplXSA9IHsgX19WQV9BUkdTX18g
fTsKKworI2lmIE9TKFdJTkRPV1MpCitUT09MVElQX0ZPTlRfRkFNSUxJRVMoMiwgbmV3IEF0b21p
Y1N0cmluZygiQ29uc29sYXMiKSwgbmV3IEF0b21pY1N0cmluZygiTHVjaWRhIENvbnNvbGUiKSkK
KyNlbGlmIE9TKFVOSVgpCitUT09MVElQX0ZPTlRfRkFNSUxJRVMoMSwgbmV3IEF0b21pY1N0cmlu
ZygiZGVqYXZ1IHNhbnMgbW9ubyIpKQorI2VsaWYgT1MoTUFDX09TX1gpCitUT09MVElQX0ZPTlRf
RkFNSUxJRVMoMiwgbmV3IEF0b21pY1N0cmluZygiTWVubG8iKSwgbmV3IEF0b21pY1N0cmluZygi
TW9uYWNvIikpCisjZW5kaWYKKy8vIEluIHRoZSBkZWZhdWx0IGNhc2UsIHdlIGdldCB0aGUgc2V0
dGluZ3MtcHJvdmlkZWQgbW9ub3NwYWNlIGZvbnQuCisKKyN1bmRlZiBUT09MVElQX0ZPTlRfRkFN
SUxJRVMKKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZml4ZWRGb250RmFtaWx5ID0gc2V0dGlu
Z3MtPmZpeGVkRm9udEZhbWlseSgpOworICAgIGlmICghZml4ZWRGb250RmFtaWx5LmlzRW1wdHko
KSkgeworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3Jp
cHRpb246Ok1vbm9zcGFjZUZhbWlseSk7CisgICAgICAgIEZvbnRGYW1pbHkqIGN1cnJlbnRGYW1p
bHkgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9vbHRpcEZvbnRGYWNl
U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRGYW1pbHkpIHsKKyAgICAgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoKnRvb2x0aXBG
b250RmFjZVtpXSk7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5
KCkuYXBwZW5kRmFtaWx5KDApOworICAgICAgICAgICAgICAgIGN1cnJlbnRGYW1pbHkgPSAmZm9u
dERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdGYW1pbHkgPSBTaGFyZWRGb250
RmFtaWx5OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBuZXdGYW1pbHktPnNldEZhbWlseSgq
dG9vbHRpcEZvbnRGYWNlW2ldKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50RmFtaWx5LT5hcHBl
bmRGYW1pbHkobmV3RmFtaWx5KTsKKyAgICAgICAgICAgICAgICBjdXJyZW50RmFtaWx5ID0gbmV3
RmFtaWx5LmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJlZlB0cjxT
aGFyZWRGb250RmFtaWx5PiBuZXdGYW1pbHkgPSBTaGFyZWRGb250RmFtaWx5OjpjcmVhdGUoKTsK
KyAgICAgICAgbmV3RmFtaWx5LT5zZXRGYW1pbHkoZml4ZWRGb250RmFtaWx5KTsKKyAgICAgICAg
Y3VycmVudEZhbWlseS0+YXBwZW5kRmFtaWx5KG5ld0ZhbWlseSk7CisgICAgICAgIGN1cnJlbnRG
YW1pbHkgPSBuZXdGYW1pbHkuZ2V0KCk7CisgICAgfQorfQorCiB2b2lkIGRyYXdFbGVtZW50VGl0
bGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBjb25zdCBMYXlvdXRSZWN0
JiBib3VuZGluZ0JveCwgY29uc3QgTGF5b3V0UmVjdCYgYW5jaG9yQm94LCBjb25zdCBGbG9hdFJl
Y3QmIG92ZXJsYXlSZWN0LCBXZWJDb3JlOjpTZXR0aW5ncyogc2V0dGluZ3MpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IGludCByZWN0SW5mbGF0ZVB4ID0gNDsKLSAgICBzdGF0aWMgY29uc3QgaW50IGZv
bnRIZWlnaHRQeCA9IDEyOwotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQeCA9IDE7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgdG9vbHRpcEJhY2tncm91bmRDb2xvciwg
KDI1NSwgMjU1LCAxOTQsIDI1NSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRv
b2x0aXBCb3JkZXJDb2xvciwgKENvbG9yOjpibGFjaykpOwotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ29sb3IsIHRvb2x0aXBGb250Q29sb3IsIChDb2xvcjo6YmxhY2spKTsKKworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ29sb3IsIGJhY2tncm91bmRDb2xvciwgKDI1NSwgMjU1LCAxOTQsIDI1
NSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ29sb3IsIHRhZ0NvbG9yLCAoMTM2LCAxOCwg
MTI4KSk7IC8vIFNhbWUgYXMgLndlYmtpdC1odG1sLXRhZy4KKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENvbG9yLCBhdHRyQ29sb3IsICgyNiwgMjYsIDE2NikpOyAvLyBTYW1lIGFzIC53ZWJraXQt
aHRtbC1hdHRyaWJ1dGUtdmFsdWUuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgbm9y
bWFsQ29sb3IsIChDb2xvcjo6YmxhY2spKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9y
LCBweEFuZEJvcmRlckNvbG9yLCAoMTI4LCAxMjgsIDEyOCkpOworCisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHB4U3RyaW5nLCAoInB4IikpOworICAgIGNvbnN0IHN0YXRpYyBVQ2hh
ciB0aW1lc1VDaGFyW10gPSB7IDB4MDBENywgMCB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCB0aW1lc1N0cmluZywgKHRpbWVzVUNoYXIpKTsgLy8gJnRpbWVzOyBzdHJpbmcKKwog
ICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCiAg
ICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKICAgICBi
b29sIGlzWEhUTUwgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5pc1hIVE1MRG9jdW1lbnQoKTsKLSAg
ICBTdHJpbmcgbm9kZVRpdGxlID0gaXNYSFRNTCA/IGVsZW1lbnQtPm5vZGVOYW1lKCkgOiBlbGVt
ZW50LT5ub2RlTmFtZSgpLmxvd2VyKCk7CisgICAgU3RyaW5nIG5vZGVUaXRsZShpc1hIVE1MID8g
ZWxlbWVudC0+bm9kZU5hbWUoKSA6IGVsZW1lbnQtPm5vZGVOYW1lKCkubG93ZXIoKSk7CisgICAg
dW5zaWduZWQgdGFnTmFtZUxlbmd0aCA9IG5vZGVUaXRsZS5sZW5ndGgoKTsKKwogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgaWRWYWx1ZSA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAg
dW5zaWduZWQgaWRTdHJpbmdMZW5ndGggPSAwOworICAgIFN0cmluZyBpZFN0cmluZzsKICAgICBp
ZiAoIWlkVmFsdWUuaXNOdWxsKCkgJiYgIWlkVmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG5v
ZGVUaXRsZSArPSAiIyI7CiAgICAgICAgIG5vZGVUaXRsZSArPSBpZFZhbHVlOworICAgICAgICBp
ZFN0cmluZ0xlbmd0aCA9IDEgKyBpZFZhbHVlLmxlbmd0aCgpOwogICAgIH0KKworICAgIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xhc3NOYW1lczsKKyAgICB1bnNpZ25lZCBjbGFzc2VzU3Ry
aW5nTGVuZ3RoID0gMDsKICAgICBpZiAoZWxlbWVudC0+aGFzQ2xhc3MoKSAmJiBlbGVtZW50LT5p
c1N0eWxlZEVsZW1lbnQoKSkgewogICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFz
c05hbWVzU3RyaW5nID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5jbGFz
c05hbWVzKCk7CiAgICAgICAgIHNpemVfdCBjbGFzc05hbWVDb3VudCA9IGNsYXNzTmFtZXNTdHJp
bmcuc2l6ZSgpOwotICAgICAgICBpZiAoY2xhc3NOYW1lQ291bnQpIHsKLSAgICAgICAgICAgIEhh
c2hTZXQ8QXRvbWljU3RyaW5nPiB1c2VkQ2xhc3NOYW1lczsKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1lQ291bnQ7ICsraSkgewotICAgICAgICAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsKLSAgICAg
ICAgICAgICAgICBpZiAodXNlZENsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMu
YWRkKGNsYXNzTmFtZSk7Ci0gICAgICAgICAgICAgICAgbm9kZVRpdGxlICs9ICIuIjsKLSAgICAg
ICAgICAgICAgICBub2RlVGl0bGUgKz0gY2xhc3NOYW1lOwotICAgICAgICAgICAgfQorICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNsYXNzTmFtZUNvdW50OyArK2kpIHsKKyAgICAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lID0gY2xhc3NOYW1lc1N0cmluZ1tpXTsK
KyAgICAgICAgICAgIGlmICh1c2VkQ2xhc3NOYW1lcy5jb250YWlucyhjbGFzc05hbWUpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdXNlZENsYXNzTmFtZXMuYWRkKGNs
YXNzTmFtZSk7CisgICAgICAgICAgICBub2RlVGl0bGUgKz0gIi4iOworICAgICAgICAgICAgbm9k
ZVRpdGxlICs9IGNsYXNzTmFtZTsKKyAgICAgICAgICAgIGNsYXNzZXNTdHJpbmdMZW5ndGggKz0g
MSArIGNsYXNzTmFtZS5sZW5ndGgoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIG5vZGVUaXRs
ZSArPSAiIFsiOwotICAgIG5vZGVUaXRsZSArPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0JveC53
aWR0aCgpKTsKLSAgICBub2RlVGl0bGUuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPigweDAwRDcp
KTsgLy8gJnRpbWVzOwotICAgIG5vZGVUaXRsZSArPSBTdHJpbmc6Om51bWJlcihib3VuZGluZ0Jv
eC5oZWlnaHQoKSk7Ci0gICAgbm9kZVRpdGxlICs9ICJdIjsKKyAgICBTdHJpbmcgd2lkdGhOdW1i
ZXJQYXJ0ID0gIiAiICsgU3RyaW5nOjpudW1iZXIoYm91bmRpbmdCb3gud2lkdGgoKSk7CisgICAg
bm9kZVRpdGxlICs9IHdpZHRoTnVtYmVyUGFydCArIHB4U3RyaW5nOworICAgIG5vZGVUaXRsZSAr
PSB0aW1lc1N0cmluZzsKKyAgICBTdHJpbmcgaGVpZ2h0TnVtYmVyUGFydCA9IFN0cmluZzo6bnVt
YmVyKGJvdW5kaW5nQm94LmhlaWdodCgpKTsKKyAgICBub2RlVGl0bGUgKz0gaGVpZ2h0TnVtYmVy
UGFydCArIHB4U3RyaW5nOwogCiAgICAgRm9udERlc2NyaXB0aW9uIGRlc2M7Ci0gICAgRm9udEZh
bWlseSBmYW1pbHk7Ci0gICAgZmFtaWx5LnNldEZhbWlseShzZXR0aW5ncy0+Zml4ZWRGb250RmFt
aWx5KCkpOwotICAgIGRlc2Muc2V0RmFtaWx5KGZhbWlseSk7CisgICAgZGVzYy5zZXRSZW5kZXJp
bmdNb2RlKHNldHRpbmdzLT5mb250UmVuZGVyaW5nTW9kZSgpKTsKICAgICBkZXNjLnNldENvbXB1
dGVkU2l6ZShmb250SGVpZ2h0UHgpOworICAgIHNldFVwRm9udEZhbWlsaWVzKGRlc2MsIHNldHRp
bmdzKTsKICAgICBGb250IGZvbnQgPSBGb250KGRlc2MsIDAsIDApOwogICAgIGZvbnQudXBkYXRl
KDApOwogCiAgICAgVGV4dFJ1biBub2RlVGl0bGVSdW4obm9kZVRpdGxlKTsKICAgICBMYXlvdXRQ
b2ludCB0aXRsZUJhc2VQb2ludCA9IExheW91dFBvaW50KGFuY2hvckJveC54KCksIGFuY2hvckJv
eC5tYXhZKCkgLSAxKTsKICAgICB0aXRsZUJhc2VQb2ludC5tb3ZlKHJlY3RJbmZsYXRlUHgsIHJl
Y3RJbmZsYXRlUHgpOwotICAgIExheW91dFJlY3QgdGl0bGVSZWN0ID0gZW5jbG9zaW5nSW50UmVj
dChmb250LnNlbGVjdGlvblJlY3RGb3JUZXh0KG5vZGVUaXRsZVJ1biwgdGl0bGVCYXNlUG9pbnQs
IGZvbnRIZWlnaHRQeCkpOworICAgIExheW91dFJlY3QgdGl0bGVSZWN0ID0gZW5jbG9zaW5nTGF5
b3V0UmVjdChmb250LnNlbGVjdGlvblJlY3RGb3JUZXh0KG5vZGVUaXRsZVJ1biwgdGl0bGVCYXNl
UG9pbnQsIGZvbnRIZWlnaHRQeCkpOwogICAgIHRpdGxlUmVjdC5pbmZsYXRlKHJlY3RJbmZsYXRl
UHgpOwogCiAgICAgLy8gVGhlIGluaXRpYWwgb2Zmc2V0cyBuZWVkZWQgdG8gY29tcGVuc2F0ZSBm
b3IgYSAxcHgtdGhpY2sgYm9yZGVyIHN0cm9rZSAod2hpY2ggaXMgbm90IGEgcGFydCBvZiB0aGUg
cmVjdGFuZ2xlKS4KQEAgLTIxMSwyMCArMzAyLDQ3IEBAIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIGNvbnN0IExheW91dFJlY3QmIGJv
CiAgICAgICAgIGR5ID0gb3ZlcmxheVJlY3QueSgpIC0gdGl0bGVSZWN0LnkoKSArIGJvcmRlcldp
ZHRoUHg7CiAKICAgICB0aXRsZVJlY3QubW92ZShkeCwgZHkpOwotICAgIGNvbnRleHQuc2V0U3Ry
b2tlQ29sb3IodG9vbHRpcEJvcmRlckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKworICAg
IGJvb2wgaXNBcnJvd0F0VG9wID0gdGl0bGVSZWN0LnkoKSA+IGFuY2hvckJveC55KCk7CisgICAg
dGl0bGVSZWN0Lm1vdmUoMCwgdG9vbHRpcFBhZGRpbmcgKiAoaXNBcnJvd0F0VG9wID8gMSA6IC0x
KSk7CisKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKHB4QW5kQm9yZGVyQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGJvcmRlcldp
ZHRoUHgpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRvb2x0aXBCYWNrZ3JvdW5kQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGJhY2tncm91
bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5kcmF3UmVjdCh0aXRs
ZVJlY3QpOwotICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRvb2x0aXBGb250Q29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwotICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgbm9kZVRpdGxlUnVu
LCBMYXlvdXRQb2ludCh0aXRsZVJlY3QueCgpICsgcmVjdEluZmxhdGVQeCwgdGl0bGVSZWN0Lnko
KSArIGZvbnQuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSkpOwotfQogCi19IC8vIGFub255bW91cyBu
YW1lc3BhY2UKKyAgICB7CisgICAgICAgIGludCBhcnJvd1RpcFggPSBjYWxjdWxhdGVBcnJvd1Rp
cFgoYW5jaG9yQm94LCB0aXRsZVJlY3QpOworICAgICAgICBGbG9hdFBvaW50IGFycm93UG9pbnRz
WzNdOworICAgICAgICBmbG9hdCBhcnJvd0Jhc2VZID0gaXNBcnJvd0F0VG9wID8gdGl0bGVSZWN0
LnkoKSA6IHRpdGxlUmVjdC5tYXhZKCk7CisgICAgICAgIGFycm93UG9pbnRzWzBdID0gRmxvYXRQ
b2ludChhcnJvd1RpcFggLSBhcnJvd0hhbGZXaWR0aCwgYXJyb3dCYXNlWSk7CisgICAgICAgIGFy
cm93UG9pbnRzWzFdID0gRmxvYXRQb2ludChhcnJvd1RpcFgsIGFycm93QmFzZVkgKyBhcnJvd0hl
aWdodCAqIChpc0Fycm93QXRUb3AgPyAtMSA6IDEpKTsKKyAgICAgICAgYXJyb3dQb2ludHNbMl0g
PSBGbG9hdFBvaW50KGFycm93VGlwWCArIGFycm93SGFsZldpZHRoLCBhcnJvd0Jhc2VZKTsKKyAg
ICAgICAgY29udGV4dC5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvd1BvaW50cyk7CisKKyAgICAg
ICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhi
b3JkZXJXaWR0aFB4ICsgMSk7CisgICAgICAgIExheW91dFBvaW50IHN0YXJ0UG9pbnQgPSBMYXlv
dXRQb2ludChhcnJvd1BvaW50c1swXS54KCkgKyAxLCBhcnJvd1BvaW50c1swXS55KCkpOworICAg
ICAgICBMYXlvdXRQb2ludCBlbmRQb2ludCA9IExheW91dFBvaW50KGFycm93UG9pbnRzWzJdLngo
KSAtIDEsIGFycm93UG9pbnRzWzJdLnkoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0xpbmUoc3Rh
cnRQb2ludCwgZW5kUG9pbnQpOworICAgIH0KIAotbmFtZXNwYWNlIERPTU5vZGVIaWdobGlnaHRl
ciB7CisgICAgaW50IGN1cnJlbnRQb3MgPSAwOworICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3Ry
aW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgdGFnTmFtZUxlbmd0aCwgdGFnQ29sb3IsIGZv
bnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAgaWYgKGlkU3RyaW5nTGVuZ3RoKQorICAgICAg
ICBjdXJyZW50UG9zID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIGlk
U3RyaW5nTGVuZ3RoLCBhdHRyQ29sb3IsIGZvbnQsIGNvbnRleHQsIHRpdGxlUmVjdCk7CisgICAg
aWYgKGNsYXNzZXNTdHJpbmdMZW5ndGgpCisgICAgICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vic3Ry
aW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgY2xhc3Nlc1N0cmluZ0xlbmd0aCwgYXR0ckNv
bG9yLCBmb250LCBjb250ZXh0LCB0aXRsZVJlY3QpOworICAgIGN1cnJlbnRQb3MgPSBkcmF3U3Vi
c3RyaW5nKG5vZGVUaXRsZVJ1biwgY3VycmVudFBvcywgd2lkdGhOdW1iZXJQYXJ0Lmxlbmd0aCgp
LCBub3JtYWxDb2xvciwgZm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBjdXJyZW50UG9z
ID0gZHJhd1N1YnN0cmluZyhub2RlVGl0bGVSdW4sIGN1cnJlbnRQb3MsIHB4U3RyaW5nLmxlbmd0
aCgpICsgdGltZXNTdHJpbmcubGVuZ3RoKCksIHB4QW5kQm9yZGVyQ29sb3IsIGZvbnQsIGNvbnRl
eHQsIHRpdGxlUmVjdCk7CisgICAgY3VycmVudFBvcyA9IGRyYXdTdWJzdHJpbmcobm9kZVRpdGxl
UnVuLCBjdXJyZW50UG9zLCBoZWlnaHROdW1iZXJQYXJ0Lmxlbmd0aCgpLCBub3JtYWxDb2xvciwg
Zm9udCwgY29udGV4dCwgdGl0bGVSZWN0KTsKKyAgICBkcmF3U3Vic3RyaW5nKG5vZGVUaXRsZVJ1
biwgY3VycmVudFBvcywgcHhTdHJpbmcubGVuZ3RoKCksIHB4QW5kQm9yZGVyQ29sb3IsIGZvbnQs
IGNvbnRleHQsIHRpdGxlUmVjdCk7Cit9CiAKLXZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBIaWdobGlnaHRNb2RlIG1vZGUpCit2b2lk
IGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSGlnaGxpZ2h0RGF0
YSogaGlnaGxpZ2h0RGF0YSkKIHsKKyAgICBOb2RlKiBub2RlID0gaGlnaGxpZ2h0RGF0YS0+bm9k
ZS5nZXQoKTsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsK
ICAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsK
IApAQCAtMjQwLDcgKzM1OCw3IEBAIHZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBIaWdobGlnaHRNb2RlIG1vZGUpCiAKICAgICBGcmFt
ZVZpZXcqIHZpZXcgPSBjb250YWluaW5nRnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXco
KTsKICAgICBGbG9hdFJlY3Qgb3ZlcmxheVJlY3QgPSB2aWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
KTsKLSAgICBpZiAoIW92ZXJsYXlSZWN0LmNvbnRhaW5zKGJvdW5kaW5nQm94KSAmJiAhYm91bmRp
bmdCb3guY29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChvdmVybGF5UmVjdCkpKQorICAgIGlmICgh
b3ZlcmxheVJlY3QuY29udGFpbnMoYm91bmRpbmdCb3gpICYmICFib3VuZGluZ0JveC5jb250YWlu
cyhlbmNsb3NpbmdMYXlvdXRSZWN0KG92ZXJsYXlSZWN0KSkpCiAgICAgICAgIG92ZXJsYXlSZWN0
ID0gdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoLW92
ZXJsYXlSZWN0LngoKSwgLW92ZXJsYXlSZWN0LnkoKSk7CiAKQEAgLTI2Niw3ICszODQsNiBAQCB2
b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9k
ZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQogICAgICAgICBMYXlvdXRSZWN0IG1hcmdpbkJveChib3Jk
ZXJCb3gueCgpIC0gcmVuZGVyQm94LT5tYXJnaW5MZWZ0KCksIGJvcmRlckJveC55KCkgLSByZW5k
ZXJCb3gtPm1hcmdpblRvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3gu
d2lkdGgoKSArIHJlbmRlckJveC0+bWFyZ2luTGVmdCgpICsgcmVuZGVyQm94LT5tYXJnaW5SaWdo
dCgpLCBib3JkZXJCb3guaGVpZ2h0KCkgKyByZW5kZXJCb3gtPm1hcmdpblRvcCgpICsgcmVuZGVy
Qm94LT5tYXJnaW5Cb3R0b20oKSk7CiAKLQogICAgICAgICBGbG9hdFF1YWQgYWJzQ29udGVudFF1
YWQgPSByZW5kZXJCb3gtPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGNvbnRlbnRCb3gp
KTsKICAgICAgICAgRmxvYXRRdWFkIGFic1BhZGRpbmdRdWFkID0gcmVuZGVyQm94LT5sb2NhbFRv
QWJzb2x1dGVRdWFkKEZsb2F0UmVjdChwYWRkaW5nQm94KSk7CiAgICAgICAgIEZsb2F0UXVhZCBh
YnNCb3JkZXJRdWFkID0gcmVuZGVyQm94LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChi
b3JkZXJCb3gpKTsKQEAgLTI3OSw3ICszOTYsNyBAQCB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSwgSGlnaGxpZ2h0TW9kZSBtb2RlKQog
CiAgICAgICAgIHRpdGxlQW5jaG9yQm94ID0gYWJzTWFyZ2luUXVhZC5lbmNsb3NpbmdCb3VuZGlu
Z0JveCgpOwogCi0gICAgICAgIGRyYXdIaWdobGlnaHRGb3JCb3goY29udGV4dCwgYWJzQ29udGVu
dFF1YWQsIGFic1BhZGRpbmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBtb2Rl
KTsKKyAgICAgICAgZHJhd0hpZ2hsaWdodEZvckJveChjb250ZXh0LCBhYnNDb250ZW50UXVhZCwg
YWJzUGFkZGluZ1F1YWQsIGFic0JvcmRlclF1YWQsIGFic01hcmdpblF1YWQsIGhpZ2hsaWdodERh
dGEpOwogICAgIH0gZWxzZSBpZiAocmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkgfHwgaXNTVkdS
ZW5kZXJlcikgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNob3cgbWFyZ2lucy9wYWRk
aW5nL2JvcmRlciBmb3IgaW5saW5lcy4KICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gbGluZUJv
eFF1YWRzOwpAQCAtMjg3LDcgKzQwNCw3IEBAIHZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBIaWdobGlnaHRNb2RlIG1vZGUpCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5lQm94UXVhZHMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgICAgICBsaW5lQm94UXVhZHNbaV0gKz0gbWFpbkZyYW1lT2Zmc2V0OwogCi0gICAgICAg
IGRyYXdIaWdobGlnaHRGb3JMaW5lQm94ZXNPclNWR1JlbmRlcmVyKGNvbnRleHQsIGxpbmVCb3hR
dWFkcyk7CisgICAgICAgIGRyYXdIaWdobGlnaHRGb3JMaW5lQm94ZXNPclNWR1JlbmRlcmVyKGNv
bnRleHQsIGxpbmVCb3hRdWFkcywgaGlnaGxpZ2h0RGF0YSk7CiAgICAgfQogCiAgICAgLy8gRHJh
dyBub2RlIHRpdGxlIGlmIG5lY2Vzc2FyeS4KQEAgLTI5NSwxMiArNDEyLDExIEBAIHZvaWQgZHJh
d05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBIaWdo
bGlnaHRNb2RlIG1vZGUpCiAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkNvcmU6OlNldHRpbmdzKiBzZXR0aW5ncyA9IGNvbnRhaW5pbmdG
cmFtZS0+c2V0dGluZ3MoKTsKLSAgICBpZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6Okhp
Z2hsaWdodEFsbCkKLSAgICAgICAgZHJhd0VsZW1lbnRUaXRsZShjb250ZXh0LCBub2RlLCBib3Vu
ZGluZ0JveCwgdGl0bGVBbmNob3JCb3gsIG92ZXJsYXlSZWN0LCBzZXR0aW5ncyk7CisgICAgaWYg
KGhpZ2hsaWdodERhdGEtPnNob3dJbmZvKQorICAgICAgICBkcmF3RWxlbWVudFRpdGxlKGNvbnRl
eHQsIG5vZGUsIGJvdW5kaW5nQm94LCB0aXRsZUFuY2hvckJveCwgb3ZlcmxheVJlY3QsIGNvbnRh
aW5pbmdGcmFtZS0+c2V0dGluZ3MoKSk7CiB9CiAKLXZvaWQgZHJhd1JlY3RIaWdobGlnaHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBEb2N1bWVudCogZG9jdW1lbnQsIEludFJlY3QqIHJlY3Qp
Cit2b2lkIGRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRG9jdW1l
bnQqIGRvY3VtZW50LCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHREYXRhKQogewogICAgIGlmICgh
ZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTMxMCwxMCArNDI2LDggQEAgdm9pZCBkcmF3
UmVjdEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVu
dCwgSW50UmVjdCogcmUKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtb3ZlcmxheVJlY3QueCgpLCAt
b3ZlcmxheVJlY3QueSgpKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVRoaWNrbmVz
cyA9IDI7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb2xvciwgb3V0bGluZUNvbG9yLCAoMjU1
LCAwLCAwLCAyMjgpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENvbG9yLCBmaWxsQ29sb3Is
ICgyNTUsIDAsIDAsIDIwKSk7CiAKLSAgICBQYXRoIHF1YWRQYXRoID0gcXVhZFRvUGF0aChGbG9h
dFJlY3QoKnJlY3QpKTsKKyAgICBQYXRoIHF1YWRQYXRoID0gcXVhZFRvUGF0aChGbG9hdFJlY3Qo
KihoaWdobGlnaHREYXRhLT5yZWN0KSkpOwogCiAgICAgLy8gQ2xpcCBvdXQgdGhlIHF1YWQsIHRo
ZW4gZHJhdyB3aXRoIGEgMnB4IHN0cm9rZSB0byBnZXQgYSBwaXhlbAogICAgIC8vIG9mIG91dGxp
bmUgKGJlY2F1c2UgaW5mbGF0aW5nIGEgcXVhZCBpcyBoYXJkKQpAQCAtMzIyLDE3ICs0MzYsMzIg
QEAgdm9pZCBkcmF3UmVjdEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3Vt
ZW50KiBkb2N1bWVudCwgSW50UmVjdCogcmUKICAgICAgICAgY29udGV4dC5jbGlwT3V0KHF1YWRQ
YXRoKTsKIAogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhvdXRsaW5lVGhpY2tu
ZXNzKTsKLSAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihvdXRsaW5lQ29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGhpZ2hsaWdo
dERhdGEtPmNvbnRlbnRPdXRsaW5lLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgY29u
dGV4dC5zdHJva2VQYXRoKHF1YWRQYXRoKTsKIAogICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsK
ICAgICB9CiAKICAgICAvLyBOb3cgZG8gdGhlIGZpbGwKLSAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihmaWxsQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKGhpZ2hsaWdodERhdGEtPmNvbnRlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGNv
bnRleHQuZmlsbFBhdGgocXVhZFBhdGgpOwogfQogCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UK
KworbmFtZXNwYWNlIERPTU5vZGVIaWdobGlnaHRlciB7CisKK3ZvaWQgZHJhd0hpZ2hsaWdodChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIERvY3VtZW50KiBkb2N1bWVudCwgSGlnaGxpZ2h0RGF0
YSogaGlnaGxpZ2h0RGF0YSkKK3sKKyAgICBpZiAoIWhpZ2hsaWdodERhdGEpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChoaWdobGlnaHREYXRhLT5ub2RlKQorICAgICAgICBkcmF3Tm9kZUhp
Z2hsaWdodChjb250ZXh0LCBoaWdobGlnaHREYXRhKTsKKyAgICBlbHNlIGlmIChoaWdobGlnaHRE
YXRhLT5yZWN0KQorICAgICAgICBkcmF3UmVjdEhpZ2hsaWdodChjb250ZXh0LCBkb2N1bWVudCwg
aGlnaGxpZ2h0RGF0YSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIERPTU5vZGVIaWdobGlnaHRlcgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmgKaW5kZXggMzBkNzc2MC4uZmFjOGMxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaApAQCAtMjksMjYgKzI5LDM4IEBA
CiAjaWZuZGVmIERPTU5vZGVIaWdobGlnaHRlcl9oCiAjZGVmaW5lIERPTU5vZGVIaWdobGlnaHRl
cl9oCiAKKyNpbmNsdWRlICJDb2xvci5oIgorCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb2xv
cjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW50UmVj
dDsKIGNsYXNzIE5vZGU7CiAKLW5hbWVzcGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIgeworc3RydWN0
IEhpZ2hsaWdodERhdGEgeworICAgIENvbG9yIGNvbnRlbnQ7CisgICAgQ29sb3IgY29udGVudE91
dGxpbmU7CisgICAgQ29sb3IgcGFkZGluZzsKKyAgICBDb2xvciBwYWRkaW5nT3V0bGluZTsKKyAg
ICBDb2xvciBib3JkZXI7CisgICAgQ29sb3IgYm9yZGVyT3V0bGluZTsKKyAgICBDb2xvciBtYXJn
aW47CisgICAgQ29sb3IgbWFyZ2luT3V0bGluZTsKKyAgICBib29sIHNob3dJbmZvOwogCi1lbnVt
IEhpZ2hsaWdodE1vZGUgewotICAgIEhpZ2hsaWdodEFsbCwKLSAgICBIaWdobGlnaHRDb250ZW50
LAotICAgIEhpZ2hsaWdodFBhZGRpbmcsCi0gICAgSGlnaGxpZ2h0Qm9yZGVyLAotICAgIEhpZ2hs
aWdodE1hcmdpbgorICAgIC8vIEVpdGhlciBvZiB0aGVzZSBtdXN0IGJlIDAuCisgICAgUmVmUHRy
PE5vZGU+IG5vZGU7CisgICAgT3duUHRyPEludFJlY3Q+IHJlY3Q7CiB9OwogCi12b2lkIGRyYXdO
b2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYsIE5vZGUqLCBIaWdobGlnaHRNb2RlKTsKK25h
bWVzcGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIgewogCi12b2lkIGRyYXdSZWN0SGlnaGxpZ2h0KEdy
YXBoaWNzQ29udGV4dCYsIERvY3VtZW50KiwgSW50UmVjdCopOwordm9pZCBkcmF3SGlnaGxpZ2h0
KEdyYXBoaWNzQ29udGV4dCYsIERvY3VtZW50KiwgSGlnaGxpZ2h0RGF0YSopOwogCiB9IC8vIG5h
bWVzcGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCmluZGV4IGRiMmI5ODguLjM0NzNhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KQEAgLTg3MSw2ICs4NzEsMzMgQEAKICAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJsb2NhdGlvbiIsICIkcmVmIjogIkRlYnVnZ2VyLkxvY2F0aW9uIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkhhbmRsZXIgY29kZSBsb2NhdGlvbi4iIH0K
ICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJET00g
aW50ZXJhY3Rpb24gaXMgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgbWlycm9yIG9iamVjdHMgdGhh
dCByZXByZXNlbnQgdGhlIGFjdHVhbCBET00gbm9kZXMuIERPTU5vZGUgaXMgYSBiYXNlIG5vZGUg
bWlycm9yIHR5cGUuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAiaWQiOiAiUkdCQSIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAg
ICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJyIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgcmVkIGNvbXBv
bmVudCwgaW4gdGhlIFswLTI1NV0gcmFuZ2UuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImciLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSBncmVlbiBj
b21wb25lbnQsIGluIHRoZSBbMC0yNTVdIHJhbmdlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJiIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgYmx1
ZSBjb21wb25lbnQsIGluIHRoZSBbMC0yNTVdIHJhbmdlLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJhIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIlRoZSBhbHBoYSBjb21wb25lbnQsIGluIHRoZSBbMC0xXSByYW5nZSAoZGVm
YXVsdDogMSkuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiQSBzdHJ1Y3R1cmUgaG9sZGluZyBhbiBSR0JBIGNvbG9yLiIKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkVsZW1lbnRIaWdobGln
aHRDb25maWciLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAg
ICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hv
d0luZm8iLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIldoZXRoZXIgdGhlIG5vZGUgaW5mbyB0b29sdGlwIHNob3VsZCBiZSBzaG93biAoZGVmYXVs
dDogZmFsc2UpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50Q29s
b3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRo
ZSBjb250ZW50IGJveCBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQp
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50T3V0bGluZUNvbG9y
IiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUg
Y29udGVudCBib3ggaGlnaGxpZ2h0IG91dGxpbmUgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50
KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGFkZGluZ0NvbG9yIiwgIiRy
ZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgcGFkZGlu
ZyBoaWdobGlnaHQgZmlsbCBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwYWRkaW5nT3V0bGluZUNvbG9yIiwgIiRyZWYiOiAi
UkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgcGFkZGluZyBoaWdo
bGlnaHQgb3V0bGluZSBjb2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJib3JkZXJDb2xvciIsICIkcmVmIjogIlJHQkEiLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJvcmRlciBoaWdobGlnaHQgZmlsbCBj
b2xvciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJib3JkZXJPdXRsaW5lQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3JkZXIgaGlnaGxpZ2h0IG91dGxpbmUgY29sb3Ig
KGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibWFyZ2luQ29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIlRoZSBtYXJnaW4gaGlnaGxpZ2h0IGZpbGwgY29sb3IgKGRlZmF1bHQ6IHRyYW5z
cGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWFyZ2luT3V0bGlu
ZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6
ICJUaGUgbWFyZ2luIGhpZ2hsaWdodCBvdXRsaW5lIGNvbG9yIChkZWZhdWx0OiB0cmFuc3BhcmVu
dCkuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiQ29uZmlndXJhdGlvbiBkYXRhIGZvciB0aGUgaGlnaGxpZ2h0aW5nIG9mIHBhZ2UgZWxlbWVu
dHMuIgogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiY29tbWFuZHMiOiBbCkBA
IC0xMDMwLDcgKzEwNTcsOCBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogInNldEluc3BlY3RN
b2RlRW5hYmxlZCIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUsCiAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZW5h
YmxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSB0byBlbmFibGUg
aW5zcGVjdGlvbiBtb2RlLCBmYWxzZSB0byBkaXNhYmxlIGl0LiIgfQorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIlRydWUgdG8gZW5hYmxlIGluc3BlY3Rpb24gbW9kZSwgZmFsc2UgdG8gZGlzYWJsZSBpdC4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGlnaGxpZ2h0Q29uZmlnIiwgIiRy
ZWYiOiAiRWxlbWVudEhpZ2hsaWdodENvbmZpZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJBIGRlc2NyaXB0b3IgZm9yIHRoZSBoaWdobGlnaHQgYXBwZWFyYW5jZSBvZiBob3Zl
cmVkLW92ZXIgbm9kZXMuIE1heSBiZSBvbWl0dGVkIGlmIDxjb2RlPmVuYWJsZWQgPT0gZmFsc2U8
L2NvZGU+LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkVudGVycyB0aGUgJ2luc3BlY3QnIG1vZGUuIEluIHRoaXMgbW9kZSwgZWxlbWVudHMg
dGhhdCB1c2VyIGlzIGhvdmVyaW5nIG92ZXIgYXJlIGhpZ2hsaWdodGVkLiBCYWNrZW5kIHRoZW4g
Z2VuZXJhdGVzICdpbnNwZWN0JyBjb21tYW5kIHVwb24gZWxlbWVudCBzZWxlY3Rpb24uIgogICAg
ICAgICAgICAgfSwKQEAgLTEwNDAsMTUgKzEwNjgsMTcgQEAKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ4IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJYIGNvb3Jk
aW5hdGUiIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAieSIsICJ0eXBlIjogImlu
dGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiWSBjb29yZGluYXRlIiB9LAogICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIndpZHRoIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICJSZWN0YW5nbGUgd2lkdGgiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVp
Z2h0IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJSZWN0YW5nbGUgaGVpZ2h0
IiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUiOiAiaW50
ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJSZWN0YW5nbGUgaGVpZ2h0IiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGlnaGxpZ2h0IGZpbGwgY29sb3IgKGRlZmF1bHQ6IHRy
YW5zcGFyZW50KS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3V0bGluZUNv
bG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJU
aGUgaGlnaGxpZ2h0IG91dGxpbmUgY29sb3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0KICAg
ICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJIaWdobGln
aHRzIGdpdmVuIHJlY3RhbmdsZS4gQ29vcmRpbmF0ZXMgYXJlIGFic29sdXRlIHdpdGggcmVzcGVj
dCB0byB0aGUgbWFpbiBmcmFtZSB2aWV3cG9ydC4iCiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImhpZ2hsaWdodE5vZGUiLAogICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5v
ZGVJZCIsICIkcmVmIjogIk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRo
ZSBub2RlIHRvIGhpZ2hsaWdodCIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJt
b2RlIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbImFsbCIsICJjb250ZW50IiwgInBhZGRp
bmciLCAiYm9yZGVyIiwgIm1hcmdpbiJdLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGJveCBtb2RlbCBjb21wb25lbnQocykgdG8gaGlnaGxpZ2h0IChkZWZhdWx0OiBcImFs
bFwiKS4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6
ICJOb2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgbm9kZSB0byBoaWdo
bGlnaHQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhpZ2hsaWdodENvbmZp
ZyIsICIkcmVmIjogIkVsZW1lbnRIaWdobGlnaHRDb25maWciLCAiZGVzY3JpcHRpb24iOiAiQSBk
ZXNjcmlwdG9yIGZvciB0aGUgaGlnaGxpZ2h0IGFwcGVhcmFuY2UuIiB9CiAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSGlnaGxpZ2h0cyBET00gbm9k
ZSB3aXRoIGdpdmVuIGlkLiIKICAgICAgICAgICAgIH0sCkBAIC0xMDU5LDcgKzEwODksOSBAQAog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImhpZ2hsaWdodEZyYW1lIiwK
ICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJmcmFtZUlkIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50
aWZpZXIgb2YgdGhlIGZyYW1lIHRvIGhpZ2hsaWdodCIgfQorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImZyYW1lSWQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRl
bnRpZmllciBvZiB0aGUgZnJhbWUgdG8gaGlnaGxpZ2h0LiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjb250ZW50Q29sb3IiLCAiJHJlZiI6ICJSR0JBIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBjb250ZW50IGJveCBoaWdobGlnaHQgZmlsbCBjb2xv
ciAoZGVmYXVsdDogdHJhbnNwYXJlbnQpLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJjb250ZW50T3V0bGluZUNvbG9yIiwgIiRyZWYiOiAiUkdCQSIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgY29udGVudCBib3ggaGlnaGxpZ2h0IG91dGxpbmUgY29s
b3IgKGRlZmF1bHQ6IHRyYW5zcGFyZW50KS4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJIaWdobGlnaHRzIG93bmVyIGVsZW1lbnQgb2YgdGhl
IGZyYW1lIHdpdGggZ2l2ZW4gaWQuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXgg
MjQ1NmUxOC4uNjI5NDhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC05OCw2ICs5OCw0MCBAQCBuYW1lc3BhY2UgRE9NQWdlbnRTdGF0
ZSB7CiBzdGF0aWMgY29uc3QgY2hhciBkb2N1bWVudFJlcXVlc3RlZFtdID0gImRvY3VtZW50UmVx
dWVzdGVkIjsKIH07CiAKK3N0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBjb2xvck9iamVjdCkKK3sKKyAgICBpZiAoIWNvbG9yT2JqZWN0IHx8ICEo
KmNvbG9yT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsKKworICAg
IGludCByOworICAgIGludCBnOworICAgIGludCBiOworICAgIGJvb2wgc3VjY2VzcyA9ICgqY29s
b3JPYmplY3QpLT5nZXROdW1iZXIoInIiLCAmcik7CisgICAgc3VjY2VzcyB8PSAoKmNvbG9yT2Jq
ZWN0KS0+Z2V0TnVtYmVyKCJnIiwgJmcpOworICAgIHN1Y2Nlc3MgfD0gKCpjb2xvck9iamVjdCkt
PmdldE51bWJlcigiYiIsICZiKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBD
b2xvcjo6dHJhbnNwYXJlbnQ7CisKKyAgICBkb3VibGUgYTsKKyAgICBzdWNjZXNzID0gKCpjb2xv
ck9iamVjdCktPmdldE51bWJlcigiYSIsICZhKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAg
IHJldHVybiBDb2xvcihyLCBnLCBiKTsKKworICAgIC8vIENsYW1wIGFscGhhIHRvIHRoZSBbMC4u
MV0gcmFuZ2UuCisgICAgaWYgKGEgPCAwKQorICAgICAgICBhID0gMDsKKyAgICBlbHNlIGlmIChh
ID4gMSkKKyAgICAgICAgYSA9IDE7CisKKyAgICByZXR1cm4gQ29sb3IociwgZywgYiwgc3RhdGlj
X2Nhc3Q8aW50PihhICogMjU1KSk7Cit9CisKK3N0YXRpYyBDb2xvciBwYXJzZUNvbmZpZ0NvbG9y
KGNvbnN0IFN0cmluZyYgZmllbGROYW1lLCBJbnNwZWN0b3JPYmplY3QqIGNvbmZpZ09iamVjdCkK
K3sKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjb2xvck9iamVjdCA9IGNvbmZp
Z09iamVjdC0+Z2V0T2JqZWN0KGZpZWxkTmFtZSk7CisgICAgcmV0dXJuIHBhcnNlQ29sb3IoJmNv
bG9yT2JqZWN0KTsKK30KKwogY2xhc3MgTWF0Y2hKb2IgewogcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBtYXRjaChMaXN0SGFzaFNldDxOb2RlKj4mIHJlc3VsdENvbGxlY3RvcikgPSAwOwpAQCAt
Mjc1LDcgKzMwOSw3IEBAIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJCiBJbnNwZWN0b3JET01BZ2Vu
dDo6fkluc3BlY3RvckRPTUFnZW50KCkKIHsKICAgICByZXNldCgpOwotICAgIEFTU0VSVCghbV9o
aWdobGlnaHRlZE5vZGUpOworICAgIEFTU0VSVCghbV9oaWdobGlnaHREYXRhIHx8ICghbV9oaWdo
bGlnaHREYXRhLT5ub2RlICYmICFtX2hpZ2hsaWdodERhdGEtPnJlY3QpKTsKICAgICBBU1NFUlQo
IW1fc2VhcmNoaW5nRm9yTm9kZSk7CiB9CiAKQEAgLTI5Myw3ICszMjcsNyBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpjbGVhckZyb250ZW5kKCkKIHsKICAgICBBU1NFUlQobV9m
cm9udGVuZCk7Ci0gICAgc2V0U2VhcmNoaW5nRm9yTm9kZShmYWxzZSk7CisgICAgc2V0U2VhcmNo
aW5nRm9yTm9kZShmYWxzZSwgMCk7CiAKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBoaWRl
SGlnaGxpZ2h0KCZlcnJvcik7CkBAIC0zMjMsNiArMzU3LDExIEBAIFZlY3RvcjxEb2N1bWVudCo+
IEluc3BlY3RvckRPTUFnZW50Ojpkb2N1bWVudHMoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K05vZGUqIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRlZE5vZGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX2hpZ2hsaWdodERhdGEgPyBtX2hpZ2hsaWdodERhdGEtPm5vZGUuZ2V0KCkgOiAw
OworfQorCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNldCgpCiB7CiAgICAgRXJyb3JTdHJp
bmcgZXJyb3I7CkBAIC05MzQsOSArOTczLDkgQEAgYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6aGFu
ZGxlTW91c2VQcmVzcygpCiAgICAgaWYgKCFtX3NlYXJjaGluZ0Zvck5vZGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChtX2hpZ2hsaWdodGVkTm9kZSkgewotICAgICAgICBSZWZQ
dHI8Tm9kZT4gbm9kZSA9IG1faGlnaGxpZ2h0ZWROb2RlOwotICAgICAgICBzZXRTZWFyY2hpbmdG
b3JOb2RlKGZhbHNlKTsKKyAgICBpZiAobV9oaWdobGlnaHREYXRhICYmIG1faGlnaGxpZ2h0RGF0
YS0+bm9kZSkgeworICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1faGlnaGxpZ2h0RGF0YS0+
bm9kZTsKKyAgICAgICAgc2V0U2VhcmNoaW5nRm9yTm9kZShmYWxzZSwgMCk7CiAgICAgICAgIGlu
c3BlY3Qobm9kZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtOTc3LDY1ICsx
MDE2LDExMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpmb2N1c05vZGUoKQogCiB2b2lkIElu
c3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQsIHVuc2lnbmVkKQogewotICAgIGlmICghbV9zZWFyY2hpbmdGb3JOb2RlKQor
ICAgIGlmICghbV9zZWFyY2hpbmdGb3JOb2RlIHx8ICFtX2hpZ2hsaWdodERhdGEpCiAgICAgICAg
IHJldHVybjsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgd2hp
bGUgKG5vZGUgJiYgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpURVhUX05PREUpCiAgICAgICAg
IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgaWYgKG5vZGUpIHsKLSAgICAgICAgRXJy
b3JTdHJpbmcgZXJyb3I7Ci0gICAgICAgIGhpZ2hsaWdodCgmZXJyb3IsIG5vZGUsICJhbGwiKTsK
KyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5ub2RlID0gbm9kZTsKKyAgICAgICAgaGlnaGxpZ2h0
KCk7CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFyY2hpbmdGb3JO
b2RlKGJvb2wgZW5hYmxlZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zv
ck5vZGUoYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZykKIHsK
ICAgICBpZiAobV9zZWFyY2hpbmdGb3JOb2RlID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX3NlYXJjaGluZ0Zvck5vZGUgPSBlbmFibGVkOwotICAgIGlmICghZW5hYmxlZCkgewor
ICAgIGlmIChlbmFibGVkKQorICAgICAgICBzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhoaWdo
bGlnaHRDb25maWcpOworICAgIGVsc2UgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAg
ICAgICAgaGlkZUhpZ2hsaWdodCgmZXJyb3IpOworICAgICAgICBtX2hpZ2hsaWdodERhdGEuY2xl
YXIoKTsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2Rl
RW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZykKIHsKLSAgICBzZXRT
ZWFyY2hpbmdGb3JOb2RlKGVuYWJsZWQpOworICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZW5hYmxl
ZCwgaGlnaGxpZ2h0Q29uZmlnID8gaGlnaGxpZ2h0Q29uZmlnLT5nZXQoKSA6IDApOwogfQogCi12
b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHQoRXJyb3JTdHJpbmcqLCBOb2RlKiBub2Rl
LCBjb25zdCBTdHJpbmcmIG1vZGUpCitib29sIEluc3BlY3RvckRPTUFnZW50OjpzZXRIaWdobGln
aHREYXRhRnJvbUNvbmZpZyhJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZykKIHsKLSAg
ICBBU1NFUlRfQVJHKG5vZGUsIG5vZGUpOwotICAgIG1faGlnaGxpZ2h0ZWROb2RlID0gbm9kZTsK
LSAgICBtX2hpZ2hsaWdodE1vZGUgPSBtb2RlOworICAgIGlmICghaGlnaGxpZ2h0Q29uZmlnKSB7
CisgICAgICAgIG1faGlnaGxpZ2h0RGF0YS5jbGVhcigpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgbV9oaWdobGlnaHREYXRhID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodERh
dGEoKSk7CisgICAgYm9vbCBzaG93SW5mbyA9IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxzZSAoZG8g
bm90IHNob3cgYSB0b29sdGlwKS4KKyAgICBoaWdobGlnaHRDb25maWctPmdldEJvb2xlYW4oInNo
b3dJbmZvIiwgJnNob3dJbmZvKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gc2hv
d0luZm87CisgICAgbV9oaWdobGlnaHREYXRhLT5jb250ZW50ID0gcGFyc2VDb25maWdDb2xvcigi
Y29udGVudENvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPmNv
bnRlbnRPdXRsaW5lID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudE91dGxpbmVDb2xvciIsIGhp
Z2hsaWdodENvbmZpZyk7CisgICAgbV9oaWdobGlnaHREYXRhLT5wYWRkaW5nID0gcGFyc2VDb25m
aWdDb2xvcigicGFkZGluZ0NvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBtX2hpZ2hsaWdo
dERhdGEtPnBhZGRpbmdPdXRsaW5lID0gcGFyc2VDb25maWdDb2xvcigicGFkZGluZ091dGxpbmVD
b2xvciIsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgbV9oaWdobGlnaHREYXRhLT5ib3JkZXIgPSBw
YXJzZUNvbmZpZ0NvbG9yKCJib3JkZXJDb2xvciIsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgbV9o
aWdobGlnaHREYXRhLT5ib3JkZXJPdXRsaW5lID0gcGFyc2VDb25maWdDb2xvcigiYm9yZGVyT3V0
bGluZUNvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPm1hcmdp
biA9IHBhcnNlQ29uZmlnQ29sb3IoIm1hcmdpbkNvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAg
ICBtX2hpZ2hsaWdodERhdGEtPm1hcmdpbk91dGxpbmUgPSBwYXJzZUNvbmZpZ0NvbG9yKCJtYXJn
aW5PdXRsaW5lQ29sb3IiLCBoaWdobGlnaHRDb25maWcpOworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHQoKQoreworICAgIC8vIFRoaXMgbWV0
aG9kIHJlcXVpcmVzIG1faGlnaGxpZ2h0RGF0YSB0byBoYXZlIGJlZW4gZmlsbGVkIGluIGJ5IGl0
cyBjbGllbnQuCisgICAgQVNTRVJUKG1faGlnaGxpZ2h0RGF0YSk7CiAgICAgbV9jbGllbnQtPmhp
Z2hsaWdodCgpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVy
cm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBj
b2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcikKIHsKLSAg
ICBtX2hpZ2hsaWdodGVkUmVjdCA9IGFkb3B0UHRyKG5ldyBJbnRSZWN0KHgsIHksIHdpZHRoLCBo
ZWlnaHQpKTsKKyAgICBtX2hpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0
YSgpKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPnJlY3QgPSBhZG9wdFB0cihuZXcgSW50UmVjdCh4
LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgbV9oaWdobGlnaHREYXRhLT5jb250ZW50ID0gcGFy
c2VDb2xvcihjb2xvcik7CisgICAgbV9oaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBh
cnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKICAgICBtX2NsaWVudC0+aGlnaGxpZ2h0KCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqIGVycm9y
LCBpbnQgbm9kZUlkLCBTdHJpbmcqIG1vZGUpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHROb2RlKAorICAgIEVycm9yU3RyaW5nKiwKKyAgICBpbnQgbm9kZUlkLAorICAgIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpZ2hsaWdodENvbmZpZykKIHsKLSAgICBpZiAoTm9k
ZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpKQotICAgICAgICBoaWdobGlnaHQoZXJyb3IsIG5v
ZGUsIG1vZGUgJiYgIW1vZGUtPmlzRW1wdHkoKSA/ICptb2RlIDogImFsbCIpOworICAgIGlmIChO
b2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCkpIHsKKyAgICAgICAgaWYgKHNldEhpZ2hsaWdo
dERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZy5nZXQoKSkpIHsKKyAgICAgICAgICAgIG1f
aGlnaGxpZ2h0RGF0YS0+bm9kZSA9IG5vZGU7CisgICAgICAgICAgICBoaWdobGlnaHQoKTsKKyAg
ICAgICAgfQorICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJh
bWUoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpCit2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSgKKyAgICBFcnJvclN0cmluZyogZXJyb3IsCisg
ICAgY29uc3QgU3RyaW5nJiBmcmFtZUlkLAorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiBjb2xvciwKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNv
bG9yKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1l
SWQpOwotICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgIGhp
Z2hsaWdodChlcnJvciwgZnJhbWUtPm93bmVyRWxlbWVudCgpLCAiYWxsIik7CisgICAgaWYgKGZy
YW1lICYmIGZyYW1lLT5vd25lckVsZW1lbnQoKSkgeworICAgICAgICBtX2hpZ2hsaWdodERhdGEg
PSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRh
LT5ub2RlID0gZnJhbWUtPm93bmVyRWxlbWVudCgpOworICAgICAgICBtX2hpZ2hsaWdodERhdGEt
PnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KKyAg
ICAgICAgbV9oaWdobGlnaHREYXRhLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CisgICAg
ICAgIG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVD
b2xvcik7CisgICAgICAgIGhpZ2hsaWdodCgpOworICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyopCiB7Ci0gICAgbV9oaWdobGlnaHRl
ZE5vZGUgPSAwOwotICAgIG1faGlnaGxpZ2h0ZWRSZWN0LmNsZWFyKCk7CisgICAgaWYgKG1faGln
aGxpZ2h0RGF0YSkgeworICAgICAgICBtX2hpZ2hsaWdodERhdGEtPm5vZGUuY2xlYXIoKTsKKyAg
ICAgICAgbV9oaWdobGlnaHREYXRhLT5yZWN0LmNsZWFyKCk7CisgICAgfQogICAgIG1fY2xpZW50
LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CiAKQEAgLTE1MTEsMjQgKzE1OTYsMTAgQEAgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpyZXNvbHZlTm9kZShOb2RlKiBu
b2RlLCBjb25zdCBTdHIKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZHJhd0hpZ2hsaWdodChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgaWYgKG1faGlnaGxpZ2h0ZWRS
ZWN0KSB7Ci0gICAgICAgIERPTU5vZGVIaWdobGlnaHRlcjo6ZHJhd1JlY3RIaWdobGlnaHQoY29u
dGV4dCwgbV9kb2N1bWVudC5nZXQoKSwgbV9oaWdobGlnaHRlZFJlY3QuZ2V0KCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2hpZ2hsaWdodGVkTm9kZSkKKyAgICBpZiAo
IW1faGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRE9NTm9kZUhpZ2hsaWdo
dGVyOjpIaWdobGlnaHRNb2RlIG1vZGUgPSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodEFs
bDsKLSAgICBpZiAobV9oaWdobGlnaHRNb2RlID09ICJjb250ZW50IikKLSAgICAgICAgbW9kZSA9
IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0Q29udGVudDsKLSAgICBlbHNlIGlmIChtX2hp
Z2hsaWdodE1vZGUgPT0gInBhZGRpbmciKQotICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdo
dGVyOjpIaWdobGlnaHRQYWRkaW5nOwotICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0TW9kZSA9PSAi
Ym9yZGVyIikKLSAgICAgICAgbW9kZSA9IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0Qm9y
ZGVyOwotICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0TW9kZSA9PSAibWFyZ2luIikKLSAgICAgICAg
bW9kZSA9IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0TWFyZ2luOwotICAgIERPTU5vZGVI
aWdobGlnaHRlcjo6ZHJhd05vZGVIaWdobGlnaHQoY29udGV4dCwgbV9oaWdobGlnaHRlZE5vZGUu
Z2V0KCksIG1vZGUpOworICAgIERPTU5vZGVIaWdobGlnaHRlcjo6ZHJhd0hpZ2hsaWdodChjb250
ZXh0LCBtX2hpZ2hsaWdodERhdGEtPm5vZGUgPyBtX2hpZ2hsaWdodERhdGEtPm5vZGUtPmRvY3Vt
ZW50KCkgOiBtX2RvY3VtZW50LmdldCgpLCBtX2hpZ2hsaWdodERhdGEuZ2V0KCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCmluZGV4IDliMTg0OTMuLjNlMjQ2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgTWF0Y2hKb2I7CiBjbGFzcyBIVE1M
RWxlbWVudDsKK2NsYXNzIEhpZ2hsaWdodERhdGE7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNs
YXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBOYW1lTm9kZU1hcDsKQEAgLTEyOSwxNiAr
MTMwLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbFNlYXJjaChFcnJvclN0cmluZyopOwog
ICAgIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcqIGNvbnN0IG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsK
ICAgICB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yQXJyYXk+KiByZXN1bHQpOwotICAgIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVk
KEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldEluc3BlY3RNb2RlRW5h
YmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIGhpZ2hsaWdodENvbmZpZyk7CiAgICAgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKTsKICAgICB2b2lkIHB1c2hO
b2RlQnlQYXRoVG9Gcm9udGVuZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcGF0aCwgaW50
KiBub2RlSWQpOwogICAgIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyopOwotICAgIHZv
aWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KTsKLSAgICB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkLCBTdHJpbmcqIG1vZGUpOwotICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGZyYW1lSWQpOworICAgIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0
cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBv
dXRsaW5lQ29sb3IpOworICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhpZ2hsaWdodENvbmZpZyk7Cisg
ICAgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKICAgICB2b2lkIG1vdmVUbyhFcnJvclN0cmlu
ZyosIGludCBub2RlSWQsIGludCB0YXJnZXROb2RlSWQsIGNvbnN0IGludCogY29uc3QgYW5jaG9y
Tm9kZUlkLCBpbnQqIG5ld05vZGVJZCk7CiAKLSAgICBOb2RlKiBoaWdobGlnaHRlZE5vZGUoKSBj
b25zdCB7IHJldHVybiBtX2hpZ2hsaWdodGVkTm9kZS5nZXQoKTsgfQorICAgIE5vZGUqIGhpZ2hs
aWdodGVkTm9kZSgpIGNvbnN0OwogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLgogICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9jdW1lbnQqKTsK
QEAgLTE4Miw4ICsxODMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3BlY3RvckRPTUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JD
bGllbnQqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwogCi0gICAg
dm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdm9pZCBoaWdobGln
aHQoRXJyb3JTdHJpbmcqLCBOb2RlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHNl
dFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdo
dENvbmZpZyk7CisgICAgYm9vbCBzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhJbnNwZWN0b3JP
YmplY3QqIGhpZ2hsaWdodENvbmZpZyk7CisgICAgdm9pZCBoaWdobGlnaHQoKTsKIAogICAgIC8v
IE5vZGUtcmVsYXRlZCBtZXRob2RzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4s
IGludD4gTm9kZVRvSWRNYXA7CkBAIC0yMzEsOSArMjMzLDcgQEAgcHJpdmF0ZToKICAgICBUaW1l
cjxJbnNwZWN0b3JET01BZ2VudD4gbV9tYXRjaEpvYnNUaW1lcjsKICAgICBIYXNoU2V0PFJlZlB0
cjxOb2RlPiA+IG1fc2VhcmNoUmVzdWx0czsKICAgICBPd25QdHI8UmV2YWxpZGF0ZVN0eWxlQXR0
cmlidXRlVGFzaz4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKLSAgICBSZWZQdHI8Tm9kZT4g
bV9oaWdobGlnaHRlZE5vZGU7Ci0gICAgT3duUHRyPEludFJlY3Q+IG1faGlnaGxpZ2h0ZWRSZWN0
OwotICAgIFN0cmluZyBtX2hpZ2hsaWdodE1vZGU7CisgICAgT3duUHRyPEhpZ2hsaWdodERhdGE+
IG1faGlnaGxpZ2h0RGF0YTsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBi
b29sIG1fc2VhcmNoaW5nRm9yTm9kZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db2xvci5qcwppbmRleCA3M2U0N2Q0Li4yYzViYTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMKQEAgLTMzLDYgKzMzLDExIEBAIFdlYklu
c3BlY3Rvci5Db2xvciA9IGZ1bmN0aW9uKHN0cikKICAgICB0aGlzLl9wYXJzZSgpOwogfQogCitX
ZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEgPSBmdW5jdGlvbihyLCBnLCBiLCBhKQoreworICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKCJyZ2JhKCIgKyByICsgIiwiICsgZyArICIs
IiArIGIgKyAiLCIgKyAodHlwZW9mIGEgPT09ICJ1bmRlZmluZWQiID8gMSA6IGEpICsgIikiKTsK
K30KKwogV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlwZSA9IHsKICAgICBnZXQgc2hvcnRoZXgo
KQogICAgIHsKQEAgLTE2Niw2ICsxNzEsMjEgQEAgV2ViSW5zcGVjdG9yLkNvbG9yLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhyb3cgImludmFsaWQgY29sb3IgZm9ybWF0IjsKICAgICB9LAogCisg
ICAgdG9Qcm90b2NvbFJHQkE6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9w
cm90b2NvbFJHQkEpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvdG9jb2xSR0JBOworCisg
ICAgICAgIHZhciBjb21wb25lbnRzID0gdGhpcy5yZ2JhOworICAgICAgICBpZiAoY29tcG9uZW50
cykKKyAgICAgICAgICAgIHRoaXMuX3Byb3RvY29sUkdCQSA9IHsgcjogTnVtYmVyKGNvbXBvbmVu
dHNbMF0pLCBnOiBOdW1iZXIoY29tcG9uZW50c1sxXSksIGI6IE51bWJlcihjb21wb25lbnRzWzJd
KSwgYTogTnVtYmVyKGNvbXBvbmVudHNbM10pIH07CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgY29tcG9uZW50cyA9IHRoaXMucmdiOworICAgICAgICAgICAgdGhpcy5fcHJvdG9jb2xSR0JB
ID0geyByOiBOdW1iZXIoY29tcG9uZW50c1swXSksIGc6IE51bWJlcihjb21wb25lbnRzWzFdKSwg
YjogTnVtYmVyKGNvbXBvbmVudHNbMl0pIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRo
aXMuX3Byb3RvY29sUkdCQTsKKyAgICB9LAorCiAgICAgX3JnYlRvSGV4OiBmdW5jdGlvbihyZ2Ip
CiAgICAgewogICAgICAgICB2YXIgciA9IHBhcnNlSW50KHJnYlswXSkudG9TdHJpbmcoMTYpOwpA
QCAtNjYxLDMgKzY4MSwxNCBAQCBXZWJJbnNwZWN0b3IuQ29sb3IuQWR2YW5jZWROaWNrTmFtZXMg
PSB7CiAgICAgInJnYmEoMCwwLDAsMCkiOiBbWzAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMF0sICJ0
cmFuc3BhcmVudCJdLAogICAgICJoc2xhKDAsMCwwLDApIjogW1swLCAwLCAwLCAwXSwgWzAsIDAs
IDAsIDBdLCAidHJhbnNwYXJlbnQiXSwKIH07CisKK1dlYkluc3BlY3Rvci5Db2xvci5QYWdlSGln
aGxpZ2h0ID0geworICAgIENvbnRlbnQ6IFdlYkluc3BlY3Rvci5Db2xvci5mcm9tUkdCQSgxMTEs
IDE2OCwgMjIwLCAuNjYpLAorICAgIENvbnRlbnRPdXRsaW5lOiBXZWJJbnNwZWN0b3IuQ29sb3Iu
ZnJvbVJHQkEoOSwgODMsIDE0OCksCisgICAgUGFkZGluZzogV2ViSW5zcGVjdG9yLkNvbG9yLmZy
b21SR0JBKDE0NywgMTk2LCAxMjUsIC41NSksCisgICAgUGFkZGluZ091dGxpbmU6IFdlYkluc3Bl
Y3Rvci5Db2xvci5mcm9tUkdCQSg1NSwgMTE4LCAyOCksCisgICAgQm9yZGVyOiBXZWJJbnNwZWN0
b3IuQ29sb3IuZnJvbVJHQkEoMjU1LCAyMjksIDE1MywgLjY2KSwKKyAgICBCb3JkZXJPdXRsaW5l
OiBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEoMTI3LCA5NiwgMCksCisgICAgTWFyZ2luOiBX
ZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEoMjQ2LCAxNzgsIDEwNywgLjY2KSwKKyAgICBNYXJn
aW5PdXRsaW5lOiBXZWJJbnNwZWN0b3IuQ29sb3IuZnJvbVJHQkEoMTgwLCA5NSwgNCkKK30KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKaW5kZXggM2JjN2ZjMS4uZDAwZDU1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5l
bC5qcwpAQCAtMTEwOSw3ICsxMTA5LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlID0gewogCiAgICAgc2V0U2VhcmNoaW5nRm9yTm9kZTogZnVuY3Rpb24oZW5hYmxlZCkK
ICAgICB7Ci0gICAgICAgIERPTUFnZW50LnNldEluc3BlY3RNb2RlRW5hYmxlZChlbmFibGVkLCB0
aGlzLl9zZXRTZWFyY2hpbmdGb3JOb2RlLmJpbmQodGhpcywgZW5hYmxlZCkpOworICAgICAgICBE
T01BZ2VudC5zZXRJbnNwZWN0TW9kZUVuYWJsZWQoZW5hYmxlZCwgV2ViSW5zcGVjdG9yLmJ1aWxk
SGlnaGxpZ2h0Q29uZmlnKCksIHRoaXMuX3NldFNlYXJjaGluZ0Zvck5vZGUuYmluZCh0aGlzLCBl
bmFibGVkKSk7CiAgICAgfSwKIAogICAgIHRvZ2dsZVNlYXJjaGluZ0Zvck5vZGU6IGZ1bmN0aW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmlj
c1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRy
aWNzU2lkZWJhclBhbmUuanMKaW5kZXggYjA1OGE0MC4uYzJlMDI2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUu
anMKQEAgLTEyOCwxNSArMTI4LDM4IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAoZnJvbUVsZW1lbnQgPT09IHRvRWxlbWVudCkKICAg
ICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZU92ZXIoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJob3Zl
cmVkIik7CisKKyAgICAgICAgICAgIHZhciBiZ0NvbG9yOworICAgICAgICAgICAgaWYgKGVsZW1l
bnQuaGFzU3R5bGVDbGFzcygibWFyZ2luIikpCisgICAgICAgICAgICAgICAgYmdDb2xvciA9IFdl
Ykluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0Lk1hcmdpbi50b1N0cmluZygib3JpZ2luYWwi
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFzU3R5bGVDbGFzcygiYm9yZGVyIikp
CisgICAgICAgICAgICAgICAgYmdDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxp
Z2h0LkJvcmRlci50b1N0cmluZygib3JpZ2luYWwiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVs
ZW1lbnQuaGFzU3R5bGVDbGFzcygicGFkZGluZyIpKQorICAgICAgICAgICAgICAgIGJnQ29sb3Ig
PSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5QYWRkaW5nLnRvU3RyaW5nKCJvcmln
aW5hbCIpOworICAgICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC5oYXNTdHlsZUNsYXNzKCJjb250
ZW50IikpCisgICAgICAgICAgICAgICAgYmdDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdl
SGlnaGxpZ2h0LkNvbnRlbnQudG9TdHJpbmcoIm9yaWdpbmFsIik7CisgICAgICAgICAgICBpZiAo
YmdDb2xvcikKKyAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9
IGJnQ29sb3I7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZU91dChl
bGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmJhY2tncm91bmRD
b2xvciA9ICIiOworICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJob3ZlcmVk
Iik7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoc2hvd0hpZ2hsaWdodCkgewogICAgICAgICAg
ICAgLy8gSW50byBlbGVtZW50LgogICAgICAgICAgICAgaWYgKHRoaXMubm9kZSAmJiB0b0VsZW1l
bnQpCi0gICAgICAgICAgICAgICAgdG9FbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhvdmVyZWQiKTsK
KyAgICAgICAgICAgICAgICBoYW5kbGVNb3VzZU92ZXIodG9FbGVtZW50KTsKICAgICAgICAgICAg
IHZhciBub2RlSWQgPSB0aGlzLm5vZGUgPyB0aGlzLm5vZGUuaWQgOiAwOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgLy8gT3V0IG9mIGVsZW1lbnQuCiAgICAgICAgICAgICBpZiAoZnJv
bUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgZnJvbUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygi
aG92ZXJlZCIpOworICAgICAgICAgICAgICAgIGhhbmRsZU1vdXNlT3V0KGZyb21FbGVtZW50KTsK
ICAgICAgICAgICAgIHZhciBub2RlSWQgPSAwOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2Rl
SWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzCmluZGV4IDkzZjMyZTEuLjliZTkzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtMTA5NSw3
ICsxMDk1LDcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgIHsKICAgICAgICAgaWYgKGhvdmVyZWQpIHsKICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1F
bGVtZW50LmFkZFN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKLSAgICAgICAgICAgIERPTUFnZW50Lmhp
Z2hsaWdodEZyYW1lKHRoaXMuX2ZyYW1lSWQpOworICAgICAgICAgICAgRE9NQWdlbnQuaGlnaGxp
Z2h0RnJhbWUodGhpcy5fZnJhbWVJZCwgV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQu
Q29udGVudC50b1Byb3RvY29sUkdCQSgpLCBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdo
dC5Db250ZW50T3V0bGluZS50b1Byb3RvY29sUkdCQSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImhvdmVyZWQi
KTsKICAgICAgICAgICAgIERPTUFnZW50LmhpZGVIaWdobGlnaHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwppbmRleCBhNmI5
NGVjLi5kMjVkOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RpbWVsaW5lUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UaW1lbGluZVBhbmVsLmpzCkBAIC03MzcsNyArNzM3LDcgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5faGlnaGxpZ2h0ZWRS
ZWN0ID09PSByZWNvcmQuZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5f
aGlnaGxpZ2h0ZWRSZWN0ID0gcmVjb3JkLmRhdGE7Ci0gICAgICAgIERPTUFnZW50LmhpZ2hsaWdo
dFJlY3QodGhpcy5faGlnaGxpZ2h0ZWRSZWN0LngsIHRoaXMuX2hpZ2hsaWdodGVkUmVjdC55LCB0
aGlzLl9oaWdobGlnaHRlZFJlY3Qud2lkdGgsIHRoaXMuX2hpZ2hsaWdodGVkUmVjdC5oZWlnaHQp
OworICAgICAgICBET01BZ2VudC5oaWdobGlnaHRSZWN0KHRoaXMuX2hpZ2hsaWdodGVkUmVjdC54
LCB0aGlzLl9oaWdobGlnaHRlZFJlY3QueSwgdGhpcy5faGlnaGxpZ2h0ZWRSZWN0LndpZHRoLCB0
aGlzLl9oaWdobGlnaHRlZFJlY3QuaGVpZ2h0LCBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hs
aWdodC5Db250ZW50LnRvUHJvdG9jb2xSR0JBKCksIFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGln
aGxpZ2h0LkNvbnRlbnRPdXRsaW5lLnRvUHJvdG9jb2xSR0JBKCkpOwogICAgIH0sCiAKICAgICBf
aGlkZVJlY3RIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBmMDdlMmMzLi5jNjRkY2ZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBA
IC0xODg4LDEwICsxODg4LDYgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUt
c3VidGl0bGUgewogICAgIG1hcmdpbjogM3B4OwogfQogCi0ubWV0cmljcyAubWFyZ2luLmhvdmVy
ZWQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMzksIDE4MiwgMjIxKTsKLX0KLQogLm1l
dHJpY3MgLmJvcmRlciB7CiAgICAgYm9yZGVyOiAxcHggYmxhY2sgc29saWQ7CiAgICAgYmFja2dy
b3VuZC1jb2xvcjogd2hpdGU7CkBAIC0xOTAyLDEwICsxODk4LDYgQEAgYm9keS5wbGF0Zm9ybS13
aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAgIG1hcmdpbjogM3B4OwogfQogCi0u
bWV0cmljcyAuYm9yZGVyLmhvdmVyZWQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxNTcs
IDE5MywgMjI2KTsKLX0KLQogLm1ldHJpY3MgLnBhZGRpbmcgewogICAgIGJvcmRlcjogMXB4IGdy
ZXkgZGFzaGVkOwogICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwpAQCAtMTkxNiwxMCArMTkw
OCw2IEBAIGJvZHkucGxhdGZvcm0td2luZG93cyAuc2lkZWJhci1wYW5lLXN1YnRpdGxlIHsKICAg
ICBtYXJnaW46IDNweDsKIH0KIAotLm1ldHJpY3MgLnBhZGRpbmcuaG92ZXJlZCB7Ci0gICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDE3MywgMjA0LCAyMzEpOwotfQotCiAubWV0cmljcyAuY29udGVu
dCB7CiAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICBib3JkZXI6IDFweCBncmV5IHNvbGlkOwpA
QCAtMTkzNCwxMCArMTkyMiw2IEBAIGJvZHkucGxhdGZvcm0td2luZG93cyAuc2lkZWJhci1wYW5l
LXN1YnRpdGxlIHsKICAgICBvdmVyZmxvdzogdmlzaWJsZTsKIH0KIAotLm1ldHJpY3MgLmNvbnRl
bnQuaG92ZXJlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE5MCwgMjE0LCAyMzYpOwot
fQotCiAubWV0cmljcyAuY29udGVudCBzcGFuIHsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
CmluZGV4IDA3NjgwMGIuLjgwNmJhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0zNzEsNiArMzcxLDMzIEBAIHZhciBXZWJJbnNw
ZWN0b3IgPSB7CiAgICAgICAgICAgICBlcnJvcldhcm5pbmdFbGVtZW50LnRpdGxlID0gbnVsbDsK
ICAgICB9LAogCisgICAgYnVpbGRIaWdobGlnaHRDb25maWc6IGZ1bmN0aW9uKG1vZGUpCisgICAg
eworICAgICAgICBtb2RlID0gbW9kZSB8fCAiYWxsIjsKKyAgICAgICAgdmFyIGhpZ2hsaWdodENv
bmZpZyA9IHsgc2hvd0luZm86IG1vZGUgPT09ICJhbGwiIH07CisgICAgICAgIGlmIChtb2RlID09
PSAiYWxsIiB8fCBtb2RlID09PSAiY29udGVudCIpIHsKKyAgICAgICAgICAgIGhpZ2hsaWdodENv
bmZpZy5jb250ZW50Q29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Db250
ZW50LnRvUHJvdG9jb2xSR0JBKCk7CisgICAgICAgICAgICBoaWdobGlnaHRDb25maWcuY29udGVu
dE91dGxpbmVDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0LkNvbnRlbnRP
dXRsaW5lLnRvUHJvdG9jb2xSR0JBKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobW9kZSA9
PT0gImFsbCIgfHwgbW9kZSA9PT0gInBhZGRpbmciKSB7CisgICAgICAgICAgICBoaWdobGlnaHRD
b25maWcucGFkZGluZ0NvbG9yID0gV2ViSW5zcGVjdG9yLkNvbG9yLlBhZ2VIaWdobGlnaHQuUGFk
ZGluZy50b1Byb3RvY29sUkdCQSgpOworICAgICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLnBhZGRp
bmdPdXRsaW5lQ29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5QYWRkaW5n
T3V0bGluZS50b1Byb3RvY29sUkdCQSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1vZGUg
PT09ICJhbGwiIHx8IG1vZGUgPT09ICJib3JkZXIiKSB7CisgICAgICAgICAgICBoaWdobGlnaHRD
b25maWcuYm9yZGVyQ29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Cb3Jk
ZXIudG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgICAgIGhpZ2hsaWdodENvbmZpZy5ib3JkZXJP
dXRsaW5lQ29sb3IgPSBXZWJJbnNwZWN0b3IuQ29sb3IuUGFnZUhpZ2hsaWdodC5Cb3JkZXJPdXRs
aW5lLnRvUHJvdG9jb2xSR0JBKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobW9kZSA9PT0g
ImFsbCIgfHwgbW9kZSA9PT0gIm1hcmdpbiIpIHsKKyAgICAgICAgICAgIGhpZ2hsaWdodENvbmZp
Zy5tYXJnaW5Db2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0Lk1hcmdpbi50
b1Byb3RvY29sUkdCQSgpOworICAgICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLm1hcmdpbk91dGxp
bmVDb2xvciA9IFdlYkluc3BlY3Rvci5Db2xvci5QYWdlSGlnaGxpZ2h0Lk1hcmdpbk91dGxpbmUu
dG9Qcm90b2NvbFJHQkEoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBoaWdobGlnaHRD
b25maWc7CisgICAgfSwKKwogICAgIGhpZ2hsaWdodERPTU5vZGU6IGZ1bmN0aW9uKG5vZGVJZCwg
bW9kZSkKICAgICB7CiAgICAgICAgIGlmICgiX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCIg
aW4gdGhpcykgewpAQCAtMzgzLDcgKzQxMCw3IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAKICAg
ICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRET01Ob2RlSWQgPSBub2RlSWQ7CiAgICAgICAgIGlmIChu
b2RlSWQpCi0gICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHROb2RlKG5vZGVJZCwgbW9kZSB8
fCAiYWxsIik7CisgICAgICAgICAgICBET01BZ2VudC5oaWdobGlnaHROb2RlKG5vZGVJZCwgdGhp
cy5idWlsZEhpZ2hsaWdodENvbmZpZyhtb2RlKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IERPTUFnZW50LmhpZGVIaWdobGlnaHQoKTsKICAgICB9LAo=
</data>
<flag name="review"
          id="100817"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>