<?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>79746</bug_id>
          
          <creation_ts>2012-02-27 22:58:56 -0800</creation_ts>
          <short_desc>Main rendering steps for displaying the cue boxes</short_desc>
          <delta_ts>2012-04-16 14:20:42 -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>Media</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>80701</dependson>
    
    <dependson>80727</dependson>
          <blocked>79347</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Victor Carbune">vcarbune</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>vcarbune</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>566404</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-02-27 22:58:56 -0800</bug_when>
    <thetext>Bug for implementing the &quot;outer&quot; steps 1 - 11 of the WebVTT cue text rendering rules.

&quot;The rules are as follows:
1. If the media element is an audio element, or is another playback mechanism with no rendering area, abort these steps. There is nothing to render.
[...]
11. Return output.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569052</commentid>
    <comment_count>1</comment_count>
      <attachid>129769</attachid>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-03-01 16:36:42 -0800</bug_when>
    <thetext>Created attachment 129769
Preliminary patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569769</commentid>
    <comment_count>2</comment_count>
      <attachid>129769</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-03-02 10:59:40 -0800</bug_when>
    <thetext>Comment on attachment 129769
Preliminary patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        * css/mediaControls.css:
&gt; +        (video::-webkit-media-text-track-display): Adjusted text color.

Please say why the color was changed.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1203
&gt; +    if (!toParentMediaElement(this)-&gt;isVideo())
&gt; +        return;
&gt; +
&gt; +    // 2. Let video be the media element or other playback mechanism.
&gt; +    HTMLVideoElement* video = static_cast&lt;HTMLVideoElement*&gt;(toParentMediaElement(this));

Nit: you can avoid one of the calls to toParentMediaElement() by changing this slightly.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1214
&gt; +    // FIXME (should be copying the media controls box into a transparent box):
&gt; +    if (video-&gt;controls())
&gt; +        output.append(video-&gt;mediaControls());

Could you achieve the desired effect, keeping the captions above the default controls, by putting the controls and captions in the same box with appropriate alignment (controls always at the bottom, etc)? This way, we could animate the containing box when the controls visibility is changed and the captions and controls will move in sync.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1259
&gt; +        if (cue-&gt;getDisplayState().size()) {
&gt; +            ExceptionCode ec;
&gt; +            appendChild(cue-&gt;getDisplayState()[0], ec, true);
&gt; +

Calling getDisplayState() twice is unnecessary, you might as well put it into a local.

Why is only the first element in the vector used?

&gt; Source/WebCore/html/track/TextTrackCue.cpp:409
&gt; +Vector&lt;RefPtr&lt;HTMLDivElement&gt; &gt; TextTrackCue::getDisplayState()

I don&apos;t think this is a great name for this method, I would never guess that &quot;getDisplayState&quot; returns the display element(s). Maybe &quot;getDisplayNodes()&quot;, or &quot;getDisplayTree()&quot;, or ...

I don&apos;t understand why this returns a Vector of elements. Couldn&apos;t it return a single root node with however many child nodes it needs to display the cue?

&gt; Source/WebCore/html/track/TextTrackCue.cpp:412
&gt; +    if (m_displayBoxes.size() || !m_scriptExecutionContext-&gt;isDocument())
&gt; +        return m_displayBoxes;

Don&apos;t you need to clear m_displayBoxes in TextTrackCue::cueDidChange() so we update when a cue is modified?

&gt; Source/WebCore/html/track/TextTrackCue.cpp:425
&gt; +    // The document tree is the tree of WebVTT Node Objects rooted at nodes.
&gt; +    simpleBox-&gt;appendChild(m_documentFragment, ASSERT_NO_EXCEPTION, true);

Won&apos;t this allow a arbitrary markup in a cue? What does tc028-unsupported-markup.vtt look like with this?

&gt; LayoutTests/media/track/track-cue-rendering-expected.txt:33
&gt; -EXPECTED (getComputedStyle(textTrackDisplayElement(video, &apos;container&apos;)).fontSize == &apos;12px&apos;) OK
&gt; +EXPECTED (getComputedStyle(mediaControlsElement(internals.shadowRoot(video).firstChild, &apos;-webkit-media-text-track-container&apos;)).fontSize == &apos;12px&apos;) OK

I would rather have specifics about the shadow hierarchy in a helper function so less will have to change if (when) we change it. Can&apos;t you use textTrackDisplayElement() by changing it to work when the &quot;id&quot; parameter is missing and call &quot;textTrackDisplayElement(video)&quot; here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573273</commentid>
    <comment_count>3</comment_count>
      <attachid>130702</attachid>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-03-07 14:59:55 -0800</bug_when>
    <thetext>Created attachment 130702
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573291</commentid>
    <comment_count>4</comment_count>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-03-07 15:16:12 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 129769 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129769&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        * css/mediaControls.css:
&gt; &gt; +        (video::-webkit-media-text-track-display): Adjusted text color.
&gt; 
&gt; Please say why the color was changed.
Done.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1203
&gt; &gt; +    if (!toParentMediaElement(this)-&gt;isVideo())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    // 2. Let video be the media element or other playback mechanism.
&gt; &gt; +    HTMLVideoElement* video = static_cast&lt;HTMLVideoElement*&gt;(toParentMediaElement(this));
&gt; 
&gt; Nit: you can avoid one of the calls to toParentMediaElement() by changing this slightly.
Done.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1214
&gt; &gt; +    // FIXME (should be copying the media controls box into a transparent box):
&gt; &gt; +    if (video-&gt;controls())
&gt; &gt; +        output.append(video-&gt;mediaControls());
&gt; 
&gt; Could you achieve the desired effect, keeping the captions above the default controls, by putting the controls and captions in the same box with appropriate alignment (controls always at the bottom, etc)? This way, we could animate the containing box when the controls visibility is changed and the captions and controls will move in sync.

Indeed, I think it&apos;s a much better approach. The media-controls now has display:-webkit-box such that the two boxes (track container and controls panel) are automatically positioned.

The only drawback of using -webkit-box is that the captions don&apos;t transition to the bottom (but I think it&apos;s cleaner to use -webkit-box, rather than manually extending the size of the container and so on).

&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1259
&gt; &gt; +        if (cue-&gt;getDisplayState().size()) {
&gt; &gt; +            ExceptionCode ec;
&gt; &gt; +            appendChild(cue-&gt;getDisplayState()[0], ec, true);
&gt; &gt; +
&gt; 
&gt; Calling getDisplayState() twice is unnecessary, you might as well put it into a local.
&gt; 
&gt; Why is only the first element in the vector used?
&gt; 
&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:409
&gt; &gt; +Vector&lt;RefPtr&lt;HTMLDivElement&gt; &gt; TextTrackCue::getDisplayState()
&gt; 
&gt; I don&apos;t think this is a great name for this method, I would never guess that &quot;getDisplayState&quot; returns the display element(s). Maybe &quot;getDisplayNodes()&quot;, or &quot;getDisplayTree()&quot;, or ...
&gt; 
&gt; I don&apos;t understand why this returns a Vector of elements. Couldn&apos;t it return a single root node with however many child nodes it needs to display the cue?
I read the spec again more closely - I initially thought that re-positioning is done for each individual box (children of the root node), but it seems the whole box itself is moved.

I have changed the name to getDisplayTree and returns a single root node.

&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:412
&gt; &gt; +    if (m_displayBoxes.size() || !m_scriptExecutionContext-&gt;isDocument())
&gt; &gt; +        return m_displayBoxes;
&gt; 
&gt; Don&apos;t you need to clear m_displayBoxes in TextTrackCue::cueDidChange() so we update when a cue is modified?
Marked a boolean variable false.

&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:425
&gt; &gt; +    // The document tree is the tree of WebVTT Node Objects rooted at nodes.
&gt; &gt; +    simpleBox-&gt;appendChild(m_documentFragment, ASSERT_NO_EXCEPTION, true);
&gt; 
&gt; Won&apos;t this allow a arbitrary markup in a cue? What does tc028-unsupported-markup.vtt look like with this?
No, this doesn&apos;t happen - the WebVTT spec 3.4 is what gets in the fragment (so anything not appropriate is stripped out):
http://dev.w3.org/html5/webvtt/#webvtt-cue-text-dom-construction-rules

This is implemented in WebVTTParser::createDocumentFragmentFromCueText.

I have also changed to not use m_documentFragment, as this is what is returned to the developer / user when it calls ::getCueAsHTML(), so I have used a different instance here.

&gt; &gt; LayoutTests/media/track/track-cue-rendering-expected.txt:33
&gt; &gt; -EXPECTED (getComputedStyle(textTrackDisplayElement(video, &apos;container&apos;)).fontSize == &apos;12px&apos;) OK
&gt; &gt; +EXPECTED (getComputedStyle(mediaControlsElement(internals.shadowRoot(video).firstChild, &apos;-webkit-media-text-track-container&apos;)).fontSize == &apos;12px&apos;) OK
&gt; 
&gt; I would rather have specifics about the shadow hierarchy in a helper function so less will have to change if (when) we change it. Can&apos;t you use textTrackDisplayElement() by changing it to work when the &quot;id&quot; parameter is missing and call &quot;textTrackDisplayElement(video)&quot; here?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573401</commentid>
    <comment_count>5</comment_count>
      <attachid>130702</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-07 17:28:36 -0800</bug_when>
    <thetext>Comment on attachment 130702
Updated patch

Attachment 130702 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11862025

New failing tests:
media/media-document-audio-repaint.html
media/video-no-audio.html
media/controls-strict.html
media/video-volume-slider.html
media/controls-styling.html
media/video-display-toggle.html
media/audio-controls-rendering.html
media/video-zoom-controls.html
media/video-controls-rendering.html
media/controls-without-preload.html
media/media-controls-clone.html
fast/layers/video-layer.html
media/video-empty-source.html
media/video-playing-and-pause.html
media/controls-after-reload.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573817</commentid>
    <comment_count>6</comment_count>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-03-08 07:16:48 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 130702 [details])
&gt; Attachment 130702 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11862025
&gt; 
&gt; New failing tests:
&gt; media/media-document-audio-repaint.html
&gt; media/video-no-audio.html
&gt; media/controls-strict.html
&gt; media/video-volume-slider.html
&gt; media/controls-styling.html
&gt; media/video-display-toggle.html
&gt; media/audio-controls-rendering.html
&gt; media/video-zoom-controls.html
&gt; media/video-controls-rendering.html
&gt; media/controls-without-preload.html
&gt; media/media-controls-clone.html
&gt; fast/layers/video-layer.html
&gt; media/video-empty-source.html
&gt; media/video-playing-and-pause.html
&gt; media/controls-after-reload.html

These come from replacing the display:block with -webkit-box; From the image diffs it seems the functionality itself is preserved, but there are some unnoticeable pixels different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573934</commentid>
    <comment_count>7</comment_count>
      <attachid>130702</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-03-08 10:42:03 -0800</bug_when>
    <thetext>Comment on attachment 130702
Updated patch

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

I made a few minor suggestions, but this looks great overall! It is probably worth regenerating the ChangeLogs to make sure all changes are documented.

&gt; Source/WebCore/ChangeLog:13
&gt; +        * css/mediaControls.css:
&gt; +        (video::-webkit-media-text-track-display): Adjusted text color to match
&gt; +        the color required in the WebVTT spec (section 3.5.1 &apos;color&apos; property)

It is worth mentioning the changes you made to position the controls.

&gt; Source/WebCore/css/mediaControls.css:44
&gt; -    display: block;
&gt; +    display: -webkit-box;
&gt;      direction: ltr;
&gt; +    -webkit-box-align: start;
&gt; +    -webkit-box-pack: end;
&gt; +    -webkit-box-orient: vertical;

I expect this is the source of the chromium test failures?

&gt; Source/WebCore/css/mediaControlsChromium.css:45
&gt; -    position: absolute;
&gt; +    position: relative;
&gt;      overflow: visible;

This didn&apos;t make it into the ChangeLog.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:43
&gt;  #include &quot;HTMLMediaElement.h&quot;
&gt; +#include &quot;HTMLVideoElement.h&quot;
&gt;  #include &quot;HTMLNames.h&quot;

Includes should be sorted.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:184
&gt; +    stopTimer();
&gt; +
&gt; +    double duration = document()-&gt;page() ? document()-&gt;page()-&gt;theme()-&gt;mediaControlsFadeOutDuration() : 0;
&gt; +    m_transitionTimer.startOneShot(duration);

It would be good to have a brief comment here about why we need to use a timer for this. As you know, this confused at least me ;-)

The timer functions also didn&apos;t make it into the ChangeLog.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1244
&gt; +    // 4. If the user agent is exposing a user interface for video, add to
&gt; +    // output one or more completely transparent positioned CSS block boxes that
&gt; +    // cover the same region as the user interface.
&gt; +
&gt; +    // 5. If the last time these rules were run, the user agent was not exposing
&gt; +    // a user interface for video, but now it is, let reset be true. Otherwise,
&gt; +    // let reset be false.

A brief comment about why you don&apos;t have to do anything explicit for these steps would be helpful.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1256
&gt; +    // Redraw
&gt; +    removeChildren();

This comment a bit terse.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1260
&gt; +    // 9. If reset is false, then, for each text track cue cue in cues: if cue&apos;s
&gt; +    // text track cue display state has a set of CSS boxes, then add those boxes
&gt; +    // to output, and remove cue from cues.

A brief comment about why you don&apos;t have to do anything explicit for these steps would be helpful.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:426
&gt; +    // 10.11. Apply the terms of the CSS specifications to nodes within the
&gt; +    // following constraints, thus obtaining a set of CSS boxes positioned
&gt; +    // relative to an initial containing block:
&gt; +    RefPtr&lt;HTMLDivElement&gt; m_displayTree = HTMLDivElement::create(document);

Could you empty the div if it already exists instead of deleting and allocating it every time a cue changes?

&gt; Source/WebCore/html/track/TextTrackCue.cpp:429
&gt; +    // The document tree is the tree of WebVTT Node Objects rooted at nodes.
&gt; +    RefPtr&lt;DocumentFragment&gt; documentTree = WebVTTParser::create(0, m_scriptExecutionContext)-&gt;createDocumentFragmentFromCueText(m_content);

Why not use TextTrackCue::getCueAsHTML() instead? That way we will use the fragment if it has already been created (always the case for a cue that has not been modified by script).

&gt; LayoutTests/media/media-controls.js:35
&gt; -function textTrackDisplayElement(parentElement, id)
&gt; +function textTrackDisplayElement(parentElement)

Nit: I think this would be easier to understand if it kept the &quot;id&quot; parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575217</commentid>
    <comment_count>8</comment_count>
      <attachid>131107</attachid>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-03-09 14:21:15 -0800</bug_when>
    <thetext>Created attachment 131107
Patch

More refactoring and marked tests for rebaselining</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575228</commentid>
    <comment_count>9</comment_count>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-03-09 14:28:15 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 130702 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130702&amp;action=review
&gt; 
&gt; I made a few minor suggestions, but this looks great overall! It is probably worth regenerating the ChangeLogs to make sure all changes are documented.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        * css/mediaControls.css:
&gt; &gt; +        (video::-webkit-media-text-track-display): Adjusted text color to match
&gt; &gt; +        the color required in the WebVTT spec (section 3.5.1 &apos;color&apos; property)
&gt; 
&gt; It is worth mentioning the changes you made to position the controls.
Done.

&gt; &gt; Source/WebCore/css/mediaControls.css:44
&gt; &gt; -    display: block;
&gt; &gt; +    display: -webkit-box;
&gt; &gt;      direction: ltr;
&gt; &gt; +    -webkit-box-align: start;
&gt; &gt; +    -webkit-box-pack: end;
&gt; &gt; +    -webkit-box-orient: vertical;
&gt; 
&gt; I expect this is the source of the chromium test failures?
Yes, just these lines and functional visual changes.

&gt; &gt; Source/WebCore/css/mediaControlsChromium.css:45
&gt; &gt; -    position: absolute;
&gt; &gt; +    position: relative;
&gt; &gt;      overflow: visible;
&gt; 
&gt; This didn&apos;t make it into the ChangeLog.
Regenerated changelogs.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:43
&gt; &gt;  #include &quot;HTMLMediaElement.h&quot;
&gt; &gt; +#include &quot;HTMLVideoElement.h&quot;
&gt; &gt;  #include &quot;HTMLNames.h&quot;
&gt; 
&gt; Includes should be sorted.
Done.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:184
&gt; &gt; +    stopTimer();
&gt; &gt; +
&gt; &gt; +    double duration = document()-&gt;page() ? document()-&gt;page()-&gt;theme()-&gt;mediaControlsFadeOutDuration() : 0;
&gt; &gt; +    m_transitionTimer.startOneShot(duration);
&gt; 
&gt; It would be good to have a brief comment here about why we need to use a timer for this. As you know, this confused at least me ;-)
Added.

&gt; The timer functions also didn&apos;t make it into the ChangeLog.
Regenerated ChangeLogs.
 
&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1244
&gt; &gt; +    // 4. If the user agent is exposing a user interface for video, add to
&gt; &gt; +    // output one or more completely transparent positioned CSS block boxes that
&gt; &gt; +    // cover the same region as the user interface.
&gt; &gt; +
&gt; &gt; +    // 5. If the last time these rules were run, the user agent was not exposing
&gt; &gt; +    // a user interface for video, but now it is, let reset be true. Otherwise,
&gt; &gt; +    // let reset be false.
&gt; 
&gt; A brief comment about why you don&apos;t have to do anything explicit for these steps would be helpful.
Done.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1256
&gt; &gt; +    // Redraw
&gt; &gt; +    removeChildren();
&gt; 
&gt; This comment a bit terse.
Changed.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1260
&gt; &gt; +    // 9. If reset is false, then, for each text track cue cue in cues: if cue&apos;s
&gt; &gt; +    // text track cue display state has a set of CSS boxes, then add those boxes
&gt; &gt; +    // to output, and remove cue from cues.
&gt; 
&gt; A brief comment about why you don&apos;t have to do anything explicit for these steps would be helpful.
&gt; 
&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:426
&gt; &gt; +    // 10.11. Apply the terms of the CSS specifications to nodes within the
&gt; &gt; +    // following constraints, thus obtaining a set of CSS boxes positioned
&gt; &gt; +    // relative to an initial containing block:
&gt; &gt; +    RefPtr&lt;HTMLDivElement&gt; m_displayTree = HTMLDivElement::create(document);
&gt; 
&gt; Could you empty the div if it already exists instead of deleting and allocating it every time a cue changes?
Yes, it indeed makes a lot of sense not adding and deleting nodes all the time.

However, we certainly don&apos;t want to end up with a lot of empty divs (for each cue in the track), so they should be removed even if they&apos;re empty.

I have changed the methods to keep the div appended only while the cue has the active flag set, and called remove() on the displayTree when the flag is unset (within TextTrackCue::setIsActive).

&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:429
&gt; &gt; +    // The document tree is the tree of WebVTT Node Objects rooted at nodes.
&gt; &gt; +    RefPtr&lt;DocumentFragment&gt; documentTree = WebVTTParser::create(0, m_scriptExecutionContext)-&gt;createDocumentFragmentFromCueText(m_content);
&gt; 
&gt; Why not use TextTrackCue::getCueAsHTML() instead? That way we will use the fragment if it has already been created (always the case for a cue that has not been modified by script).
Done.

&gt; &gt; LayoutTests/media/media-controls.js:35
&gt; &gt; -function textTrackDisplayElement(parentElement, id)
&gt; &gt; +function textTrackDisplayElement(parentElement)
&gt; 
&gt; Nit: I think this would be easier to understand if it kept the &quot;id&quot; parameter.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575571</commentid>
    <comment_count>10</comment_count>
      <attachid>131107</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-03-10 13:38:58 -0800</bug_when>
    <thetext>Comment on attachment 131107
Patch

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

This is a *terrific* patch, thank you! I am marking this cq- only because of the duplicate entry in the layout test ChangeLog.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1224
&gt; +    LOG(Media, &quot;MediaControlTextTrackContainerElement::updateDisplay()&quot;);

Nit: This function is called frequently enough that this logging generates a *lot* of output. We should remove it in a future check in.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1285
&gt; +        if (!contains(displayTree.get()) &amp;&amp; displayTree-&gt;hasChildNodes())
&gt; +            appendChild(displayTree, ASSERT_NO_EXCEPTION, true);

Nit: I think the &quot;hasChildNodes()&quot; test will be faster than &quot;contains()&quot;, so it should be the first test in the expression. This would be good to fix the next time this function is modified.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:424
&gt; +    if (!m_displayTreeShouldChange || !m_scriptExecutionContext-&gt;isDocument())

Nit: unless a scriptExecutionContext can change type, we should &quot;ASSERT(m_scriptExecutionContext-&gt;isDocument())&quot; in the constructor instead of checking it every time through here. Again, this can be changed the next time this file is modified.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:441
&gt; +    m_displayTree-&gt;appendChild(getCueAsHTML(), ASSERT_NO_EXCEPTION, true);

Why not use m_documentFragment directly, getCueAsHTML creates a new fragment every time? If it isn&apos;t possible to use m_documentFragment, why do we cache it in getCueAsHTML at all?

Either way, this is an optimization and can be done in a follow up patch.

&gt; LayoutTests/ChangeLog:3175
&gt; +2012-03-08  Victor Carbune  &lt;vcarbune@adobe.com&gt;
&gt; +
&gt; +        Updated LayoutTests for basic rendering of cues.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=79746
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * media/media-controls.js:
&gt; +        (mediaControlsElement):
&gt; +        (textTrackDisplayElement):
&gt; +        * media/track/track-cue-mutable-text-expected.txt:
&gt; +        * media/track/track-cue-nothing-to-render-expected.txt:
&gt; +        * media/track/track-cue-rendering-expected.txt:
&gt; +        * media/track/track-cue-rendering.html:
&gt; +

Oops, the ChangeLog should not have two entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575850</commentid>
    <comment_count>11</comment_count>
      <attachid>131260</attachid>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-03-11 16:10:30 -0700</bug_when>
    <thetext>Created attachment 131260
Small fixed and corrected ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575852</commentid>
    <comment_count>12</comment_count>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-03-11 16:17:20 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 131107 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131107&amp;action=review
&gt; 
&gt; This is a *terrific* patch, thank you! I am marking this cq- only because of the duplicate entry in the layout test ChangeLog.
&gt; 
&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1224
&gt; &gt; +    LOG(Media, &quot;MediaControlTextTrackContainerElement::updateDisplay()&quot;);
&gt; 
&gt; Nit: This function is called frequently enough that this logging generates a *lot* of output. We should remove it in a future check in.
Fixed.

&gt; &gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1285
&gt; &gt; +        if (!contains(displayTree.get()) &amp;&amp; displayTree-&gt;hasChildNodes())
&gt; &gt; +            appendChild(displayTree, ASSERT_NO_EXCEPTION, true);
&gt; 
&gt; Nit: I think the &quot;hasChildNodes()&quot; test will be faster than &quot;contains()&quot;, so it should be the first test in the expression. This would be good to fix the next time this function is modified.
Fixed.
 
&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:424
&gt; &gt; +    if (!m_displayTreeShouldChange || !m_scriptExecutionContext-&gt;isDocument())
&gt; 
&gt; Nit: unless a scriptExecutionContext can change type, we should &quot;ASSERT(m_scriptExecutionContext-&gt;isDocument())&quot; in the constructor instead of checking it every time through here. Again, this can be changed the next time this file is modified.
Fixed.

&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:441
&gt; &gt; +    m_displayTree-&gt;appendChild(getCueAsHTML(), ASSERT_NO_EXCEPTION, true);
&gt; 
&gt; Why not use m_documentFragment directly, getCueAsHTML creates a new fragment every time? If it isn&apos;t possible to use m_documentFragment, why do we cache it in getCueAsHTML at all?
&gt; 
&gt; Either way, this is an optimization and can be done in a follow up patch.
Here&apos;s my approach:
* m_documentFragment is cached in getCueAsHTML() because it&apos;s faster to clone it, rather than re-parse &amp; re-create it (re-parsing is required only when text contents have changed).
* m_displayTree is the cached &apos;internal version&apos; of m_documentFragment for the shadow dom (it gets reprocessed only when m_displayTreeShouldChange is true), which later will have additional styling or other nodes we need for the cue rendering rules.

This implies that m_documentFragment can&apos;t be used directly in m_displayTree because calling getCueAsHTML() needs to have a clean version of it.

&gt; &gt; LayoutTests/ChangeLog:3175
&gt; &gt; +2012-03-08  Victor Carbune  &lt;vcarbune@adobe.com&gt;
&gt; &gt; +
&gt; &gt; +        Updated LayoutTests for basic rendering of cues.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=79746
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        * media/media-controls.js:
&gt; &gt; +        (mediaControlsElement):
&gt; &gt; +        (textTrackDisplayElement):
&gt; &gt; +        * media/track/track-cue-mutable-text-expected.txt:
&gt; &gt; +        * media/track/track-cue-nothing-to-render-expected.txt:
&gt; &gt; +        * media/track/track-cue-rendering-expected.txt:
&gt; &gt; +        * media/track/track-cue-rendering.html:
&gt; &gt; +
&gt; 
&gt; Oops, the ChangeLog should not have two entries.
Sorry about this, it seems I&apos;m constantly having issues merging ChangeLogs ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575906</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-03-11 20:20:29 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; 
&gt; &gt; Why not use m_documentFragment directly, getCueAsHTML creates a new fragment every time? If it isn&apos;t possible to use m_documentFragment, why do we cache it in getCueAsHTML at all?
&gt; &gt; 
&gt; &gt; Either way, this is an optimization and can be done in a follow up patch.
&gt; Here&apos;s my approach:
&gt; * m_documentFragment is cached in getCueAsHTML() because it&apos;s faster to clone it, rather than re-parse &amp; re-create it (re-parsing is required only when text contents have changed).
&gt; * m_displayTree is the cached &apos;internal version&apos; of m_documentFragment for the shadow dom (it gets reprocessed only when m_displayTreeShouldChange is true), which later will have additional styling or other nodes we need for the cue rendering rules.
&gt; 
&gt; This implies that m_documentFragment can&apos;t be used directly in m_displayTree because calling getCueAsHTML() needs to have a clean version of it.
&gt; 

  That makes sense. Lets add a comment explaining this the next time this file is modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575925</commentid>
    <comment_count>14</comment_count>
      <attachid>131260</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-11 21:47:46 -0700</bug_when>
    <thetext>Comment on attachment 131260
Small fixed and corrected ChangeLog

Clearing flags on attachment: 131260

Committed r110409: &lt;http://trac.webkit.org/changeset/110409&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575926</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-11 21:47:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602428</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-04-13 14:45:23 -0700</bug_when>
    <thetext>This patch broke the ability of the media controls to be dragged in full screen mode.  This is due to going from absolute to relative positioning in mediaControls.css.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603266</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-04-16 10:29:37 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; This patch broke the ability of the media controls to be dragged in full screen mode.  This is due to going from absolute to relative positioning in mediaControls.css.

Jer fixed the issue with https://bugs.webkit.org/show_bug.cgi?id=81176.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603439</commentid>
    <comment_count>18</comment_count>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2012-04-16 14:20:42 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; This patch broke the ability of the media controls to be dragged in full screen mode.  This is due to going from absolute to relative positioning in mediaControls.css.
&gt; 
&gt; Jer fixed the issue with https://bugs.webkit.org/show_bug.cgi?id=81176.
Thank you, Jer.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129769</attachid>
            <date>2012-03-01 16:36:42 -0800</date>
            <delta_ts>2012-03-07 14:59:46 -0800</delta_ts>
            <desc>Preliminary patch</desc>
            <filename>bug-79746-20120302023640.patch</filename>
            <type>text/plain</type>
            <size>29731</size>
            <attacher name="Victor Carbune">vcarbune</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNhN2U3ZGNkZDdiNTM3
ZjVmMTkxM2E3ZGI2MDg0MDUxMTFjZWRiNC4uODFhMTY2ZDM2ZWViYWQ0MGJjZjBkY2RiZDUwN2Vl
ZDNlODk5MjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAzLTAxICBWaWN0
b3IgQ2FyYnVuZSAgPHZpY3RvckByb3NlZHUub3JnPgorCisgICAgICAgIFRoZSBtYWluIGNvZGUg
c3RydWN0dXJlIGZvciBwbGFjaW5nIGZ1dHVyZSB0ZXh0IHRyYWNrIGN1ZSByZW5kZXJpbmcKKyAg
ICAgICAgY29kZSBhbmQgbWFpbiBvdXRlciByZW5kZXJpbmcgc3RlcHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTc0NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gbmV3IGZ1
bmN0aW9uYWxpdHkgaW50cm9kdWNlZCwgbW9zdGx5IHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
Y3NzL21lZGlhQ29udHJvbHMuY3NzOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4
dC10cmFjay1kaXNwbGF5KTogQWRqdXN0ZWQgdGV4dCBjb2xvci4KKyAgICAgICAgKiBodG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KTogTWFpbgorICAg
ICAgICBmdW5jdGlvbiBmb3IgdGhlIHJlbmRlcmluZyBydWxlcy4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dDo6dXBkYXRlU2l6ZXMpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmg6CisgICAgICAgIChNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KToK
KworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcDogUmVt
b3ZlZCBtX3RleHRUcmFja0Rpc3BsYXkKKyAgICAgICAgYW5kIGR1cGxpY2F0ZWQgY29kZSB3aXRo
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0gKG9ubHkgbWluaW11bQorICAgICAgICBm
dW5jdGlvbiBjYWxscyB0byB0aGUgbWFpbiB0ZXh0IHRyYWNrIGNvbnRhaW5lcikKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xSb290RWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2V0TWVkaWFD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojpj
cmVhdGVUZXh0VHJhY2tEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJv
b3RFbGVtZW50Ojp1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KToKKworICAgICAgICAqIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwOiBSZW1vdmVkIG1fdGV4dFRy
YWNrRGlzcGxheQorICAgICAgICBhbmQgZHVwbGljYXRlIGNvZGUgd2l0aCBNZWRpYUNvbnRyb2xS
b290RWxlbWVudCAob25seSBtaW5pbXVtIGZ1bmN0aW9uIGNhbGxzCisgICAgICAgIHRvIHRoZSBt
YWluIHRleHQgdHJhY2sgY29udGFpbmVyIHJlbWFpbmVkKQorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJv
bWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVt
OjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9v
dEVsZW1lbnRDaHJvbWl1bTo6Y3JlYXRlVGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjp1cGRhdGVUZXh0VHJhY2tEaXNw
bGF5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZGV0ZXJtaW5lRGlzcGxh
eVBhcmFtZXRlcnMpOiBUaGlzIG1ldGhvZCBob2xkcyBtYWluCisgICAgICAgIHBvc2l0aW9uIHBh
cmFtZXRlciBjb21wdXRhdGlvbiBmb3IgYSBUZXh0VHJhY2tDdWUKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXREaXNwbGF5U3RhdGUpOiBUaGlz
IG1ldGhvZCByZXR1cm5zIGEgc2V0IG9mIGJveGVzCisgICAgICAgIHJlcHJlc2VudGluZyB0aGUg
ZGlzcGxheSBzdGF0ZSBvZiB0aGUgY3VlLCBhcyBtZW50aW9uZWQgaW4gdGhlIHNwZWMuCisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoVGV4dFRyYWNrQ3VlKToKKwogMjAxMi0wMy0wMSAgQWxvayBQcml5YWRhcnNoaSAgPGFs
b2twQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFBhcnRpYWwgdGV4dHVyZSB1
cGRhdGVzIG5vdCBoYXBwZW5pbmcgd2l0aCBhY2NlbGVyYXRlZCBwYWludGluZyBwYXRoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MKaW5kZXggMzFjOWQ0MzI2ZTk0ZTAzOTM0YzU4Y2Uy
NWJkZGJlMzJkMjc5YTY5ZS4uZGE0OTc3NDBjZjE2MzM3ZjYzZjAxNzdmYWNlMTcyOGQ5YjE2OWQy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzLmNzcwpAQCAtMjIyLDYgKzIyMiw2IEBA
IHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIHsKIHZpZGVvOjotd2Vi
a2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSB7CiAgICAgZGlzcGxheTogaW5saW5lOwogICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsKLSAgICBjb2xvcjogeWVsbG93
OworICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwogICAgIHBhZGRpbmc6IDBweCAy
cHg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAKaW5kZXggOGNhNjZhNGI5YjlhYjQ0ZTVhNjg2NjZlNjI1NDRiMjczMzZhNzc5
Ny4uMDUzNThhNmU0MzlkOWVkMzQxNDRlN2ZjMjdlZmU2MmQ4M2UyZWU5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxWaWRl
b0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRT
dHJpbmdzLmgiCiAjaW5jbHVkZSAiTWVkaWFDb250cm9scy5oIgpAQCAtNTIsNiArNTMsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTE4NywxNiArMTE4OSw5NyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29ucwog
ICAgIHJldHVybiBpZDsKIH0KIAordm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkiKTsKKworICAgIC8vIDEu
IElmIHRoZSBtZWRpYSBlbGVtZW50IGlzIGFuIGF1ZGlvIGVsZW1lbnQsIG9yIGlzIGFub3RoZXIg
cGxheWJhY2sKKyAgICAvLyBtZWNoYW5pc20gd2l0aCBubyByZW5kZXJpbmcgYXJlYSwgYWJvcnQg
dGhlc2Ugc3RlcHMuIFRoZXJlIGlzIG5vdGhpbmcgdG8KKyAgICAvLyByZW5kZXIuCisgICAgaWYg
KCF0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKS0+aXNWaWRlbygpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyAyLiBMZXQgdmlkZW8gYmUgdGhlIG1lZGlhIGVsZW1lbnQgb3Igb3RoZXIgcGxh
eWJhY2sgbWVjaGFuaXNtLgorICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvID0gc3RhdGljX2Nh
c3Q8SFRNTFZpZGVvRWxlbWVudCo+KHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpKTsKKworICAg
IC8vIDMuIExldCBvdXRwdXQgYmUgYW4gZW1wdHkgbGlzdCBvZiBhYnNvbHV0ZWx5IHBvc2l0aW9u
ZWQgQ1NTIGJsb2NrIGJveGVzLgorICAgIFZlY3RvcjxSZWZQdHI8SFRNTERpdkVsZW1lbnQ+ID4g
b3V0cHV0OworCisgICAgLy8gNC4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgZXhwb3NpbmcgYSB1c2Vy
IGludGVyZmFjZSBmb3IgdmlkZW8sIGFkZCB0bworICAgIC8vIG91dHB1dCBvbmUgb3IgbW9yZSBj
b21wbGV0ZWx5IHRyYW5zcGFyZW50IHBvc2l0aW9uZWQgQ1NTIGJsb2NrIGJveGVzIHRoYXQKKyAg
ICAvLyBjb3ZlciB0aGUgc2FtZSByZWdpb24gYXMgdGhlIHVzZXIgaW50ZXJmYWNlLgorCisgICAg
Ly8gRklYTUUgKHNob3VsZCBiZSBjb3B5aW5nIHRoZSBtZWRpYSBjb250cm9scyBib3ggaW50byBh
IHRyYW5zcGFyZW50IGJveCk6CisgICAgaWYgKHZpZGVvLT5jb250cm9scygpKQorICAgICAgICBv
dXRwdXQuYXBwZW5kKHZpZGVvLT5tZWRpYUNvbnRyb2xzKCkpOworCisgICAgLy8gNS4gSWYgdGhl
IGxhc3QgdGltZSB0aGVzZSBydWxlcyB3ZXJlIHJ1biwgdGhlIHVzZXIgYWdlbnQgd2FzIG5vdCBl
eHBvc2luZworICAgIC8vIGEgdXNlciBpbnRlcmZhY2UgZm9yIHZpZGVvLCBidXQgbm93IGl0IGlz
LCBsZXQgcmVzZXQgYmUgdHJ1ZS4gT3RoZXJ3aXNlLAorICAgIC8vIGxldCByZXNldCBiZSBmYWxz
ZS4KKyAgICBib29sIHJlc2V0ID0gIW1fY29udHJvbHNEaXNwbGF5ZWRPblJlbmRlcmluZyAmJiB2
aWRlby0+Y29udHJvbHMoKTsKKyAgICBtX2NvbnRyb2xzRGlzcGxheWVkT25SZW5kZXJpbmcgPSB2
aWRlby0+Y29udHJvbHMoKTsKKworICAgIC8vIDYuIExldCB0cmFja3MgYmUgdGhlIHN1YnNldCBv
ZiB2aWRlbydzIGxpc3Qgb2YgdGV4dCB0cmFja3MgdGhhdCBoYXZlIGFzCisgICAgLy8gdGhlaXIg
cnVsZXMgZm9yIHVwZGF0aW5nIHRoZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyB0aGVzZSBydWxlcyBm
b3IKKyAgICAvLyB1cGRhdGluZyB0aGUgZGlzcGxheSBvZiBXZWJWVFQgdGV4dCB0cmFja3MsIGFu
ZCB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMKKyAgICAvLyBzaG93aW5nIG9yIHNob3dpbmcgYnkg
ZGVmYXVsdC4KKyAgICAvLyA3LiBMZXQgY3VlcyBiZSBhbiBlbXB0eSBsaXN0IG9mIHRleHQgdHJh
Y2sgY3Vlcy4KKyAgICAvLyA4LiBGb3IgZWFjaCB0cmFjayB0cmFjayBpbiB0cmFja3MsIGFwcGVu
ZCB0byBjdWVzIGFsbCB0aGUgY3VlcyBmcm9tCisgICAgLy8gdHJhY2sncyBsaXN0IG9mIGN1ZXMg
dGhhdCBoYXZlIHRoZWlyIHRleHQgdHJhY2sgY3VlIGFjdGl2ZSBmbGFnIHNldC4KKyAgICBDdWVM
aXN0IGFjdGl2ZUN1ZXMgPSB2aWRlby0+Y3VycmVudGx5QWN0aXZlQ3VlcygpOworCisgICAgLy8g
OS4gSWYgcmVzZXQgaXMgZmFsc2UsIHRoZW4sIGZvciBlYWNoIHRleHQgdHJhY2sgY3VlIGN1ZSBp
biBjdWVzOiBpZiBjdWUncworICAgIC8vIHRleHQgdHJhY2sgY3VlIGRpc3BsYXkgc3RhdGUgaGFz
IGEgc2V0IG9mIENTUyBib3hlcywgdGhlbiBhZGQgdGhvc2UgYm94ZXMKKyAgICAvLyB0byBvdXRw
dXQsIGFuZCByZW1vdmUgY3VlIGZyb20gY3Vlcy4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgIXJl
c2V0ICYmIGkgPCBhY3RpdmVDdWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChhY3RpdmVD
dWVzW2ldLmRhdGEoKS0+Z2V0RGlzcGxheVN0YXRlKCkuc2l6ZSgpKQorICAgICAgICAgICAgb3V0
cHV0LmFwcGVuZChhY3RpdmVDdWVzW2ldLmRhdGEoKS0+Z2V0RGlzcGxheVN0YXRlKCkpOworICAg
IH0KKworICAgIHJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAvLyAxMC4gRm9yIGVhY2ggdGV4dCB0
cmFjayBjdWUgY3VlIGluIGN1ZXMgdGhhdCBoYXMgbm90IHlldCBoYWQKKyAgICAvLyBjb3JyZXNw
b25kaW5nIENTUyBib3hlcyBhZGRlZCB0byBvdXRwdXQsIGluIHRleHQgdHJhY2sgY3VlIG9yZGVy
LCBydW4gdGhlCisgICAgLy8gZm9sbG93aW5nIHN1YnN0ZXBzOgorCisKKyAgICAvLyBTaW1wbGUg
cmVuZGVyZXIuCisgICAgYm9vbCBub3RoaW5nVG9EaXNwbGF5ID0gdHJ1ZTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFjdGl2ZUN1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgVGV4dFRy
YWNrQ3VlKiBjdWUgPSBhY3RpdmVDdWVzW2ldLmRhdGEoKTsKKworICAgICAgICBBU1NFUlQoY3Vl
LT5pc0FjdGl2ZSgpKTsKKworICAgICAgICBpZiAoIWN1ZS0+dHJhY2soKSB8fCBjdWUtPnRyYWNr
KCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6OlNIT1dJTkcpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAoY3VlLT5nZXREaXNwbGF5U3RhdGUoKS5zaXplKCkpIHsKKyAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgICAgICBhcHBlbmRDaGlsZChjdWUtPmdldERp
c3BsYXlTdGF0ZSgpWzBdLCBlYywgdHJ1ZSk7CisKKyAgICAgICAgICAgIG5vdGhpbmdUb0Rpc3Bs
YXkgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FKEJVRyA3OTc1MCk6IFJl
bmRlciB0aGUgVGV4dFRyYWNrQ3VlIHdoZW4gc25hcC10by1saW5lcyBpcyBzZXQuCisgICAgICAg
IC8vIEZJWE1FKEJVRyA3OTc1MSk6IFJlbmRlciB0aGUgVGV4dFRyYWNrQ3VlIHdoZW4gc25hcC10
by1saW5lcyBpcyBub3Qgc2V0LgorICAgIH0KKworICAgIGlmICghbm90aGluZ1RvRGlzcGxheSkK
KyAgICAgICAgc2hvdygpOworICAgIGVsc2UKKyAgICAgICAgaGlkZSgpOworfQorCiBzdGF0aWMg
Y29uc3QgZmxvYXQgbWltaW11bUZvbnRTaXplID0gMTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgdmlk
ZW9IZWlnaHRGb250U2l6ZVBlcmNlbnRhZ2UgPSAuMDU7CiBzdGF0aWMgY29uc3QgZmxvYXQgdHJh
Y2tCb3R0b21NdWx0aXBsaWVyID0gLjk7Ci0gICAgCisKIHZvaWQgTWVkaWFDb250cm9sVGV4dFRy
YWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMoKQogewogICAgIEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpOwogICAgIGlmICgh
bWVkaWFFbGVtZW50IHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkgfHwgIW1lZGlhRWxlbWVu
dC0+cmVuZGVyZXIoKS0+aXNWaWRlbygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBJ
bnRSZWN0IHZpZGVvQm94ID0gdG9SZW5kZXJWaWRlbyhtZWRpYUVsZW1lbnQtPnJlbmRlcmVyKCkp
LT52aWRlb0JveCgpOwogICAgIGlmIChtX3ZpZGVvRGlzcGxheVNpemUgPT0gdmlkZW9Cb3gpCiAg
ICAgICAgIHJldHVybjsKQEAgLTEyMTUsMjUgKzEyOTgsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKCkKICAgICB9CiB9CiAKLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1lbnQpCi17Ci19Ci0KLVBh
c3NSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29udHJv
bFRleHRUcmFja0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQotewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1l
bnQoZG9jdW1lbnQpKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUZXh0
VHJhY2tEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLXRleHQtdHJh
Y2stZGlzcGxheSIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLSNlbmRpZgorI2VuZGlmIC8vIEVO
QUJMRShWSURFT19UUkFDSykKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaApp
bmRleCA1MjA1NWE0NDQ2M2YzMTlmNDk4MTA5OWI3ODQ4YWUxYzI3NGMyYzJmLi5kYjNmMmZmMGUz
Yzc2ZTgzNjIzMjJlMzU2NmQwNGRhOTMyMGExNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTQ5MSw5ICs0OTEsOSBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIGNsYXNzIE1lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CiBwdWJs
aWM6Ci0gICAgCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0gICAgCisKKyAgICB2b2lkIHVwZGF0
ZURpc3BsYXkoKTsKICAgICB2b2lkIHVwZGF0ZVNpemVzKCk7CiAKIHByaXZhdGU6CkBAIC01MDYs
MjIgKzUwNiwxMSBAQCBwcml2YXRlOgogICAgIEludFJlY3QgbV92aWRlb0Rpc3BsYXlTaXplOwog
ICAgIGZsb2F0IG1fZm9udFNpemU7CiAgICAgTGF5b3V0VW5pdCBtX2JvdHRvbTsKLX07CiAKLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sVGV4dFRy
YWNrRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCopOwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFRleHRU
cmFja0Rpc3BsYXlFbGVtZW50KERvY3VtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUZXh0VHJhY2tE
aXNwbGF5OyB9Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3Q7CisgICAgYm9vbCBtX2NvbnRyb2xzRGlzcGxheWVkT25SZW5kZXJpbmc7CiB9Owot
I2VuZGlmCiAKKyNlbmRpZgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKaW5kZXggZDI2ZmUyMDllZTc1MDUyOGI1Zjlm
YzY2OWE2YzAwZjQ4ZWUxYjUzZC4uMjM4MzIwMGYzYWM4OThmOWQ1MmZmMDVhMWQ5M2ZjZGQ1ZWI1
NzhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFJvb3RFbGVtZW50LmNwcApAQCAtNzMsNyArNzMsNiBAQCBNZWRpYUNvbnRyb2xSb290RWxl
bWVudDo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwg
bV9wYW5lbCgwKQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAsIG1fdGV4dERpc3BsYXlD
b250YWluZXIoMCkKLSAgICAsIG1fdGV4dFRyYWNrRGlzcGxheSgwKQogI2VuZGlmCiAgICAgLCBt
X2hpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lcih0aGlzLCAmTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQ6OmhpZGVGdWxsc2NyZWVuQ29udHJvbHNUaW1lckZpcmVkKQogICAgICwgbV9pc01vdXNlT3Zl
ckNvbnRyb2xzKGZhbHNlKQpAQCAtMjc3LDggKzI3Niw2IEBAIHZvaWQgTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UqIGNv
bnRyCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChtX3RleHREaXNwbGF5Q29udGFp
bmVyKQogICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIo
Y29udHJvbGxlcik7Ci0gICAgaWYgKG1fdGV4dFRyYWNrRGlzcGxheSkKLSAgICAgICAgbV90ZXh0
VHJhY2tEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CiAjZW5kaWYKICAg
ICByZXNldCgpOwogfQpAQCAtNjA0LDE2ICs2MDEsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RF
bGVtZW50OjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCkKICAgICBSZWZQdHI8TWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4gdGV4dERpc3BsYXlDb250YWluZXIgPSBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAg
bV90ZXh0RGlzcGxheUNvbnRhaW5lciA9IHRleHREaXNwbGF5Q29udGFpbmVyLmdldCgpOwogCi0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50PiB0ZXh0RGlzcGxh
eSA9IE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQo
KSk7Ci0gICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+aGlkZSgpOwotICAgIG1fdGV4dFRyYWNr
RGlzcGxheSA9IHRleHREaXNwbGF5LmdldCgpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAg
ICB0ZXh0RGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGV4dERpc3BsYXkucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm47Ci0KICAgICAvLyBJbnNl
cnQgaXQgYmVmb3JlIHRoZSBmaXJzdCBjb250cm9sbGVyIGVsZW1lbnQgc28gaXQgYWx3YXlzIGRp
c3BsYXlzIGJlaGluZCB0aGUgY29udHJvbHMuCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICBp
bnNlcnRCZWZvcmUodGV4dERpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBtX3BhbmVsLCBlYywg
dHJ1ZSk7CiB9CiAKQEAgLTYzNiwyOCArNjI1LDggQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxl
bWVudDo6dXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpCiAgICAgaWYgKCFtX3RleHREaXNwbGF5Q29u
dGFpbmVyKQogICAgICAgICBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAKLSAgICBDdWVMaXN0
IGFjdGl2ZUN1ZXMgPSB0b1BhcmVudE1lZGlhRWxlbWVudChtX3RleHREaXNwbGF5Q29udGFpbmVy
KS0+Y3VycmVudGx5QWN0aXZlQ3VlcygpOwotICAgIG1fdGV4dFRyYWNrRGlzcGxheS0+cmVtb3Zl
Q2hpbGRyZW4oKTsKLSAgICBib29sIG5vdGhpbmdUb0Rpc3BsYXkgPSB0cnVlOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYWN0aXZlQ3Vlcy5zaXplKCk7ICsraSkgewotICAgICAgICBUZXh0
VHJhY2tDdWUqIGN1ZSA9IGFjdGl2ZUN1ZXNbaV0uZGF0YSgpOwotICAgICAgICBBU1NFUlQoY3Vl
LT5pc0FjdGl2ZSgpKTsKLSAgICAgICAgaWYgKCFjdWUtPnRyYWNrKCkgfHwgY3VlLT50cmFjaygp
LT5tb2RlKCkgIT0gVGV4dFRyYWNrOjpTSE9XSU5HKQotICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgU3RyaW5nIGN1ZVRleHQgPSBjdWUtPnRleHQoKTsKLSAgICAgICAgaWYgKCFjdWVU
ZXh0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKCFub3RoaW5nVG9EaXNwbGF5KQotICAg
ICAgICAgICAgICAgIG1fdGV4dFRyYWNrRGlzcGxheS0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS0+
Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OmJyVGFnLCBmYWxzZSksIEFTU0VSVF9OT19FWENFUFRJ
T04pOwotICAgICAgICAgICAgbV90ZXh0VHJhY2tEaXNwbGF5LT5hcHBlbmRDaGlsZChkb2N1bWVu
dCgpLT5jcmVhdGVUZXh0Tm9kZShjdWVUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAg
ICAgICAgICBub3RoaW5nVG9EaXNwbGF5ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
bV90ZXh0RGlzcGxheUNvbnRhaW5lci0+dXBkYXRlRGlzcGxheSgpOwogCi0gICAgaWYgKCFub3Ro
aW5nVG9EaXNwbGF5KQotICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5zaG93KCk7Ci0g
ICAgZWxzZQotICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5oaWRlKCk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcAppbmRleCBlNjlkODE4ZDNhMTczNTk3ZjJk
YmJmYWFhYmRjMTMxZDY4MTU5ZThiLi42NjNlNTFmODBmNmZiYjlmMWJjMDczOTFlYzRmOWRjZjRj
MjdkNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xSb290RWxlbWVudENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcApAQCAtNTgsNyArNTgsNiBAQCBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtKERvY3VtZW50KiBkb2N1bQogICAgICwgbV9wYW5lbCgwKQogI2lmIEVOQUJMRShWSURF
T19UUkFDSykKICAgICAsIG1fdGV4dERpc3BsYXlDb250YWluZXIoMCkKLSAgICAsIG1fdGV4dFRy
YWNrRGlzcGxheSgwKQogI2VuZGlmCiAgICAgLCBtX29wYXF1ZSh0cnVlKQogICAgICwgbV9pc01v
dXNlT3ZlckNvbnRyb2xzKGZhbHNlKQpAQCAtMTU4LDggKzE1Nyw2IEBAIHZvaWQgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlhQ29udHJvbGxl
ckludGVyZmFjCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIGlmIChtX3RleHREaXNwbGF5
Q29udGFpbmVyKQogICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRy
b2xsZXIoY29udHJvbGxlcik7Ci0gICAgaWYgKG1fdGV4dFRyYWNrRGlzcGxheSkKLSAgICAgICAg
bV90ZXh0VHJhY2tEaXNwbGF5LT5zZXRNZWRpYUNvbnRyb2xsZXIoY29udHJvbGxlcik7CiAjZW5k
aWYKICAgICByZXNldCgpOwogfQpAQCAtMzM1LDE2ICszMzIsOCBAQCB2b2lkIE1lZGlhQ29udHJv
bFJvb3RFbGVtZW50Q2hyb21pdW06OmNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKQogICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiB0ZXh0RGlzcGxheUNvbnRh
aW5lciA9IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpKTsKICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyID0gdGV4dERpc3BsYXlDb250YWlu
ZXIuZ2V0KCk7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1l
bnQ+IHRleHREaXNwbGF5ID0gTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCgpKTsKLSAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5oaWRlKCk7Ci0g
ICAgbV90ZXh0VHJhY2tEaXNwbGF5ID0gdGV4dERpc3BsYXkuZ2V0KCk7Ci0KLSAgICBFeGNlcHRp
b25Db2RlIGVjOwotICAgIHRleHREaXNwbGF5Q29udGFpbmVyLT5hcHBlbmRDaGlsZCh0ZXh0RGlz
cGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsK
LQogICAgIC8vIEluc2VydCBpdCBiZWZvcmUgdGhlIGZpcnN0IGNvbnRyb2xsZXIgZWxlbWVudCBz
byBpdCBhbHdheXMgZGlzcGxheXMgYmVoaW5kIHRoZSBjb250cm9scy4KKyAgICBFeGNlcHRpb25D
b2RlIGVjOwogICAgIGluc2VydEJlZm9yZSh0ZXh0RGlzcGxheUNvbnRhaW5lci5yZWxlYXNlKCks
IG1fcGFuZWwsIGVjLCB0cnVlKTsKIH0KIApAQCAtMzY3LDMxICszNTYsMTAgQEAgdm9pZCBNZWRp
YUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjp1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCkKICAg
ICBpZiAoIW1fdGV4dERpc3BsYXlDb250YWluZXIpCiAgICAgICAgIGNyZWF0ZVRleHRUcmFja0Rp
c3BsYXkoKTsKIAotICAgIEN1ZUxpc3QgYWN0aXZlQ3VlcyA9IHRvUGFyZW50TWVkaWFFbGVtZW50
KG1fdGV4dERpc3BsYXlDb250YWluZXIpLT5jdXJyZW50bHlBY3RpdmVDdWVzKCk7Ci0gICAgbV90
ZXh0VHJhY2tEaXNwbGF5LT5yZW1vdmVDaGlsZHJlbigpOwotICAgIGJvb2wgbm90aGluZ1RvRGlz
cGxheSA9IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3RpdmVDdWVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5kYXRh
KCk7Ci0gICAgICAgIEFTU0VSVChjdWUtPmlzQWN0aXZlKCkpOwotICAgICAgICBpZiAoIWN1ZS0+
dHJhY2soKSB8fCBjdWUtPnRyYWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6OlNIT1dJTkcpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBTdHJpbmcgY3VlVGV4dCA9IGN1ZS0+dGV4
dCgpOwotICAgICAgICBpZiAoIWN1ZVRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAo
IW5vdGhpbmdUb0Rpc3BsYXkpCi0gICAgICAgICAgICAgICAgbV90ZXh0VHJhY2tEaXNwbGF5LT5h
cHBlbmRDaGlsZChkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6YnJUYWcsIGZh
bHNlKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgICAgICAgICBtX3RleHRUcmFja0Rpc3Bs
YXktPmFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKGN1ZVRleHQpLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgICAgIG5vdGhpbmdUb0Rpc3BsYXkgPSBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghbm90aGluZ1RvRGlzcGxheSkKLSAgICAgICAg
bV90ZXh0RGlzcGxheUNvbnRhaW5lci0+c2hvdygpOwotICAgIGVsc2UKLSAgICAgICAgbV90ZXh0
RGlzcGxheUNvbnRhaW5lci0+aGlkZSgpOworICAgIG1fdGV4dERpc3BsYXlDb250YWluZXItPnVw
ZGF0ZURpc3BsYXkoKTsKIH0KICNlbmRpZgotICAgIAorCiBjb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIHsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRp
YS1jb250cm9scyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAppbmRleCA2NjMwY2ExNzQyYTQ0YWQ3YWE3ZGU4OTVkZmM3MmFjODllZDAxMzI0Li5lZWNmOGQ3
NjJhZDg4MmVkNjQ3ODBjMzBjNzhjYmFiNGRhYTBjNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC0zNSw4ICszNSwxMiBAQAogCiAjaW5jbHVkZSAi
VGV4dFRyYWNrQ3VlLmgiCiAKLSNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiSFRNTERpdkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5j
bHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgogI2luY2x1ZGUgIldlYlZUVFBhcnNlci5oIgpAQCAt
MzkzLDYgKzM5Nyw1OSBAQCB2b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3Rp
dmUpCiAgICAgbV9pc0FjdGl2ZSA9IGFjdGl2ZTsKIH0KIAordm9pZCBUZXh0VHJhY2tDdWU6OmRl
dGVybWluZURpc3BsYXlQYXJhbWV0ZXJzKCkKK3sKKyAgICAvLyBGSVhNRShCVUcgNzk3NDkpOiBE
ZXRlcm1pbmUgdGhlIHRleHQgZGlyZWN0aW9uIHVzaW5nIHRoZSBCSURJIGFsZ29yaXRobS4KKyAg
ICAvLyBTdGVwcyAxMC4yLCAxMC4zCisKKyAgICAvLyBGSVhNRShCVUcgNzk3NDcpOiBEZXRlcm1p
bmUgdGhlIGRpc3BsYXkgcGFyYW1ldGVycyBmcm9tIHRoZSBydWxlcy4KKyAgICAvLyBTdGVwcyAx
MC4xLCAxMC40IC0gMTAuMTAKK30KKworVmVjdG9yPFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gPiBU
ZXh0VHJhY2tDdWU6OmdldERpc3BsYXlTdGF0ZSgpCit7CisgICAgaWYgKG1fZGlzcGxheUJveGVz
LnNpemUoKSB8fCAhbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybiBtX2Rpc3BsYXlCb3hlczsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKworICAgIC8v
IDEwLjEgLSAxMC4xMAorICAgIGRldGVybWluZURpc3BsYXlQYXJhbWV0ZXJzKCk7CisKKyAgICAv
LyAxMC4xMS4gQXBwbHkgdGhlIHRlcm1zIG9mIHRoZSBDU1Mgc3BlY2lmaWNhdGlvbnMgdG8gbm9k
ZXMgd2l0aGluIHRoZQorICAgIC8vIGZvbGxvd2luZyBjb25zdHJhaW50cywgdGh1cyBvYnRhaW5p
bmcgYSBzZXQgb2YgQ1NTIGJveGVzIHBvc2l0aW9uZWQKKyAgICAvLyByZWxhdGl2ZSB0byBhbiBp
bml0aWFsIGNvbnRhaW5pbmcgYmxvY2s6CisgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBzaW1w
bGVCb3ggPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIC8vIFRoZSBk
b2N1bWVudCB0cmVlIGlzIHRoZSB0cmVlIG9mIFdlYlZUVCBOb2RlIE9iamVjdHMgcm9vdGVkIGF0
IG5vZGVzLgorICAgIHNpbXBsZUJveC0+YXBwZW5kQ2hpbGQobV9kb2N1bWVudEZyYWdtZW50LCBB
U1NFUlRfTk9fRVhDRVBUSU9OLCB0cnVlKTsKKworICAgIC8vIFRoZSBjaGlsZHJlbiBvZiB0aGUg
bm9kZXMgbXVzdCBiZSB3cmFwcGVkIGluIGFuIGFub255bW91cyBib3ggd2hvc2UKKyAgICAvLyAn
ZGlzcGxheScgcHJvcGVydHkgaGFzIHRoZSB2YWx1ZSAnaW5saW5lJy4gVGhpcyBpcyB0aGUgV2Vi
VlRUIGN1ZQorICAgIC8vIGJhY2tncm91bmQgYm94LgorICAgIHNpbXBsZUJveC0+c2V0U2hhZG93
UHNldWRvSWQoQXRvbWljU3RyaW5nKCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSIp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIC8vIEZJWE1FKEJVRyA3OTkxNik6IFJ1bnMg
b2YgY2hpbGRyZW4gb2YgV2ViVlRUIFJ1YnkgT2JqZWN0cyB0aGF0IGFyZSBub3QKKyAgICAvLyBX
ZWJWVFQgUnVieSBUZXh0IE9iamVjdHMgbXVzdCBiZSB3cmFwcGVkIGluIGFub255bW91cyBib3hl
cyB3aG9zZQorICAgIC8vICdkaXNwbGF5JyBwcm9wZXJ0eSBoYXMgdGhlIHZhbHVlICdydWJ5LWJh
c2UnLgorCisgICAgLy8gRklYTUUoQlVHIDc5OTE2KTogVGV4dCBydW5zIG11c3QgYmUgd3JhcHBl
ZCBhY2NvcmRpbmcgdG8gdGhlIENTUworICAgIC8vIGxpbmUtd3JhcHBpbmcgcnVsZXMsIGV4Y2Vw
dCB0aGF0IGFkZGl0aW9uYWxseSwgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YKKyAgICAvLyB0
aGUgJ3doaXRlLXNwYWNlJyBwcm9wZXJ0eSwgbGluZXMgbXVzdCBiZSB3cmFwcGVkIGF0IHRoZSBl
ZGdlIG9mIHRoZWlyCisgICAgLy8gY29udGFpbmluZyBibG9ja3MsIGV2ZW4gaWYgZG9pbmcgc28g
cmVxdWlyZXMgc3BsaXR0aW5nIGEgd29yZCB3aGVyZSB0aGVyZQorICAgIC8vIGlzIG5vIGxpbmUg
YnJlYWtpbmcgb3Bwb3J0dW5pdHkuIChUaHVzLCBub3JtYWxseSB0ZXh0IHdyYXBzIGFzIG5lZWRl
ZCwKKyAgICAvLyBidXQgaWYgdGhlcmUgaXMgYSBwYXJ0aWN1bGFybHkgbG9uZyB3b3JkLCBpdCBk
b2VzIG5vdCBvdmVyZmxvdyBhcyBpdAorICAgIC8vIG5vcm1hbGx5IHdvdWxkIGluIENTUywgaXQg
aXMgaW5zdGVhZCBmb3JjaWJseSB3cmFwcGVkIGF0IHRoZSBib3gncyBlZGdlLikKKworICAgIC8v
IEZJWE1FKEJVRyA3OTc1MCwgNzk3NTEpOiBTdGVwcyAxMC4xMiAtIDEwLjE0CisKKyAgICAvLyAx
MC4xNS4gTGV0IGN1ZSdzIHRleHQgdHJhY2sgY3VlIGRpc3BsYXkgc3RhdGUgaGF2ZSB0aGUgQ1NT
IGJveGVzIGluCisgICAgLy8gYm94ZXMuCisgICAgbV9kaXNwbGF5Qm94ZXMuYXBwZW5kKHNpbXBs
ZUJveCk7CisKKyAgICByZXR1cm4gbV9kaXNwbGF5Qm94ZXM7Cit9CisKIHZvaWQgVGV4dFRyYWNr
Q3VlOjpwYXJzZVNldHRpbmdzKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgLy8gNC44LjEw
LjEzLjMgUGFyc2UgdGhlIFdlYlZUVCBzZXR0aW5ncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5oCmluZGV4IDE1NmMxNGI0ZjVhZTE2ZmMzN2FmZTU3ZDY1OThhOGRiMjUx
ODRkYjMuLmFiZWY0ZjFhNzdkOWZmNjZhYzJhNDQ2MzZhNmRiYmE4NGU2MTA2YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIGNsYXNzIFRleHRUcmFjazsKK2NsYXNzIEhUTUxEaXZFbGVtZW50Owog
CiBjbGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBw
dWJsaWMgRXZlbnRUYXJnZXQgewogcHVibGljOgpAQCAtMTAxLDYgKzEwMiw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzQWN0aXZlKCk7CiAgICAgdm9pZCBzZXRJc0FjdGl2ZShib29sKTsKIAorICAg
IFZlY3RvcjxSZWZQdHI8SFRNTERpdkVsZW1lbnQ+ID4gZ2V0RGlzcGxheVN0YXRlKCk7CisKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0OwogCkBAIC0xMTEsNyArMTE0LDYgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50
ZWQ8VGV4dFRyYWNrQ3VlPjo6ZGVyZWY7CiAKIHByb3RlY3RlZDoKLQogICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CiAKQEAgLTExOSw2ICsxMjEsOCBAQCBwcml2
YXRlOgogICAgIFRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBpZCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQs
IGNvbnN0IFN0cmluZyYgc2V0dGluZ3MsIGJvb2wgcGF1c2VPbkV4aXQpOwogCiAgICAgdm9pZCBw
YXJzZVNldHRpbmdzKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZGV0ZXJtaW5lRGlzcGxheVBh
cmFtZXRlcnMoKTsKKwogICAgIHZvaWQgY3VlV2lsbENoYW5nZSgpOwogICAgIHZvaWQgY3VlRGlk
Q2hhbmdlKCk7CiAKQEAgLTE0OSw2ICsxNTMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Fj
dGl2ZTsKICAgICBib29sIG1fcGF1c2VPbkV4aXQ7CiAgICAgYm9vbCBtX3NuYXBUb0xpbmVzOwor
CisgICAgVmVjdG9yPFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gPiBtX2Rpc3BsYXlCb3hlczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZWI5YTQxZDBjYTgyOWE0M2I0OGNm
M2ZjNDQ1MjZkMTIwYTE0ZTI4Li5iYzFjZTY1MWI0YzI1ZjdlNjRmNGNmYzY0MjZlNTc3MjNiZmJl
YzljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDMtMDEgIFZpY3RvciBDYXJidW5lICA8
dmNhcmJ1bmVAYWRvYmUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgTGF5b3V0VGVzdHMgZm9yIGJh
c2ljIHJlbmRlcmluZyBvZiBjdWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzk3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLWNvbnRyb2xzLmpzOgorICAgICAgICAobWVkaWFD
b250cm9sc0VsZW1lbnQpOgorICAgICAgICAodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQpOgorICAg
ICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1ub3RoaW5nLXRvLXJlbmRlci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sOgor
CiAyMDEyLTAzLTAxICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJlbW92ZSBvdXRkYXRlZCAobW9zdGx5IG1hYykgdGVzdCBzdXBwcmVzc2lvbnMuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9scy5qcyBiL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhLWNvbnRyb2xzLmpzCmluZGV4IDQ0ODdkMTg5OWQwZjIwNWY0ZmIzMDE3NDM1MDU3
N2MxOTkzNDUxOGMuLmQ3ZWQ4N2NiZmM1NzJiMGE0YjkyNDdjMmM5NzU4YWQ0YTM3MmU4ZmIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xzLmpzCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xzLmpzCkBAIC0yLDcgKzIsNiBAQAogZnVuY3Rpb24g
bWVkaWFDb250cm9sc0VsZW1lbnQoZmlyc3QsIGlkKQogewogICAgIGZvciAodmFyIGVsZW1lbnQg
PSBmaXJzdDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQubmV4dFNpYmxpbmcpIHsKLQogICAg
ICAgICAvLyBOb3QgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWVkaWEgY29udHJvbHMgaGFzIGEgc2hh
ZG93IHBzZXVkbyBJRCwgZWcuIHRoZQogICAgICAgICAvLyB0ZXh0IG5vZGVzIGZvciB0aGUgdGlt
ZSB2YWx1ZXMsIHNvIGd1YXJkIGFnYWluc3QgZXhjZXB0aW9ucy4KICAgICAgICAgdHJ5IHsKQEAg
LTM1LDkgKzM0LDE3IEBAIGZ1bmN0aW9uIG1lZGlhQ29udHJvbHNCdXR0b25Db29yZGluYXRlcyhl
bGVtZW50LCBpZCkKIAogZnVuY3Rpb24gdGV4dFRyYWNrRGlzcGxheUVsZW1lbnQocGFyZW50RWxl
bWVudCwgaWQpCiB7CisgICAgdmFyIHRleHRUcmFja0NvbnRhaW5lcklEID0gIi13ZWJraXQtbWVk
aWEtdGV4dC10cmFjay1jb250YWluZXIiOworICAgIHZhciBjb250YWluZXJFbGVtZW50ID0gbWVk
aWFDb250cm9sc0VsZW1lbnQoaW50ZXJuYWxzLnNoYWRvd1Jvb3QocGFyZW50RWxlbWVudCkuZmly
c3RDaGlsZCwgIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIiKTsKKworICAgIGlm
ICghY29udGFpbmVyRWxlbWVudCkKKyAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBmaW5kIHRleHQg
dHJhY2sgY29udGFpbmVyIGVsZW1lbnQiOworCiAgICAgdmFyIGNvbnRyb2xJRCA9ICItd2Via2l0
LW1lZGlhLXRleHQtdHJhY2stIiArIGlkOwotICAgIHZhciBkaXNwbGF5RWxlbWVudCA9IG1lZGlh
Q29udHJvbHNFbGVtZW50KGludGVybmFscy5zaGFkb3dSb290KHBhcmVudEVsZW1lbnQpLmZpcnN0
Q2hpbGQsIGNvbnRyb2xJRCk7CisKKyAgICB2YXIgZGlzcGxheUVsZW1lbnQgPSBtZWRpYUNvbnRy
b2xzRWxlbWVudChjb250YWluZXJFbGVtZW50LmZpcnN0Q2hpbGQsIGNvbnRyb2xJRCk7CiAgICAg
aWYgKCFkaXNwbGF5RWxlbWVudCkKLSAgICAgICAgdGhyb3cgIkZhaWxlZCB0byBmaW5kIG1lZGlh
IGNvbnRyb2wgZWxlbWVudCBJRCAnIiArIGNvbnRyb2xJRCArICInIjsKKyAgICAgICAgdGhyb3cg
Ik5vIHRleHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBpZCAnIiArIGNvbnRyb2xJRCArICInIGlz
IGN1cnJlbnRseSB2aXNpYmxlIjsKKwogICAgIHJldHVybiBkaXNwbGF5RWxlbWVudDsKLX0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay90cmFjay1jdWUtbXV0YWJsZS10ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZXhwZWN0ZWQudHh0CmluZGV4IGNl
YTkwYTBmMzFhMzM5ZjUxNjUyZmZkNmY0NDFkZDc2OGIwOWIxYjkuLjg5NWZmMDVhODA2MmNmNjI0
ZWM0NTQ0YzQ1NTY4NzY5ZmJjOTRjMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZXhwZWN0ZWQudHh0CkBAIC0zLDcg
KzMsNyBAQCBUZXN0IHRoYXQgY3VlIHRleHQgaXMgbXV0YWJsZS4KIAogKiogVGVzdCBpbml0aWFs
IGN1ZSBpbmZvCiBFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLmFjdGl2ZUN1ZXMubGVuZ3RoID09
ICcwJykgT0sKLUVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3Bs
YXknKS5pbm5lclRleHQgPT0gJycpIE9LCitObyB0ZXh0IHRyYWNrIGN1ZSB3aXRoIGRpc3BsYXkg
aWQgJy13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5JyBpcyBjdXJyZW50bHkgdmlzaWJs
ZQogRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5jdWVzWzBdLnN0YXJ0VGltZSA9PSAnMScpIE9L
CiBFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLmN1ZXNbMV0uc3RhcnRUaW1lID09ICczJykgT0sK
IEVYUEVDVEVEICh0ZXN0VHJhY2sudHJhY2suY3Vlc1swXS50ZXh0ID09ICdMb3JlbSBpcHN1bSBk
b2xvciBzaXQgYW1ldCwnKSBPSwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2stY3VlLW5vdGhpbmctdG8tcmVuZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLWN1ZS1ub3RoaW5nLXRvLXJlbmRlci1leHBlY3RlZC50eHQKaW5kZXgg
ZjZhNWY4ODA2MWQ3N2JkOTkxMzE3N2JlYjNjNGU3MTVjYmI1NWM4Ni4uMmU4YTc4OWJlMzEzNjZk
NTJiYTMwNDlhNDVlNDk4MWViNGMxMTM2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2stY3VlLW5vdGhpbmctdG8tcmVuZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtbm90aGluZy10by1yZW5kZXItZXhwZWN0ZWQu
dHh0CkBAIC0zLDcgKzMsNyBAQCBUZXN0IHRoYXQgY3VlcyBhcmUgcmVuZGVyZWQgYW5kIHJlbW92
ZWQuCiBFVkVOVChjYW5wbGF5dGhyb3VnaCkKIEVWRU5UKHNlZWtlZCkKIEVYUEVDVEVEICh2aWRl
by5jdXJyZW50VGltZS50b0ZpeGVkKDEpID09ICcwLjUnKSBPSwotRVhQRUNURUQgKHRleHRUcmFj
a0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVyVGV4dCA9PSAnJykgT0sKK05v
IHRleHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBpZCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNr
LWRpc3BsYXknIGlzIGN1cnJlbnRseSB2aXNpYmxlCiAKIFJVTih2aWRlby5jdXJyZW50VGltZSA9
IDEuNSkKIEVWRU5UKHNlZWtlZCkKQEAgLTE0LDcgKzE0LDcgQEAgRVhQRUNURUQgKHRleHRUcmFj
a0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVyVGV4dCA9PSAnTG9yZW0gaXBz
dW0gZG8KIFJVTih2aWRlby5jdXJyZW50VGltZSA9IDIuNSkKIEVWRU5UKHNlZWtlZCkKIEVYUEVD
VEVEICh2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDEpID09ICcyLjUnKSBPSwotRVhQRUNURUQg
KHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVyVGV4dCA9PSAn
JykgT0sKK05vIHRleHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBpZCAnLXdlYmtpdC1tZWRpYS10
ZXh0LXRyYWNrLWRpc3BsYXknIGlzIGN1cnJlbnRseSB2aXNpYmxlCiAKIFJVTih2aWRlby5jdXJy
ZW50VGltZSA9IDMuMykKIEVWRU5UKHNlZWtlZCkKQEAgLTI1LDcgKzI1LDcgQEAgRVhQRUNURUQg
KHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVyVGV4dCA9PSAn
Y29uc2VjdGV0dWVyIGEKIFJVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNikKIEVWRU5UKHNlZWtl
ZCkKIEVYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDEpID09ICcwLjYnKSBPSwot
RVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVy
VGV4dCA9PSAnJykgT0sKK05vIHRleHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBpZCAnLXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXknIGlzIGN1cnJlbnRseSB2aXNpYmxlCiAKIFJVTih2
aWRlby5jdXJyZW50VGltZSA9IDUuOSkKIEVWRU5UKHNlZWtlZCkKQEAgLTM2LDcgKzM2LDcgQEAg
RVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVy
VGV4dCA9PSAnc2VkIGRpYW0gbm9udW0KIFJVTih2aWRlby5jdXJyZW50VGltZSA9IDQuNCkKIEVW
RU5UKHNlZWtlZCkKIEVYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDEpID09ICc0
LjQnKSBPSwotRVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxh
eScpLmlubmVyVGV4dCA9PSAnJykgT0sKK05vIHRleHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBp
ZCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXknIGlzIGN1cnJlbnRseSB2aXNpYmxl
CiAKIFJVTih2aWRlby5jdXJyZW50VGltZSA9IDcuOSkKIEVWRU5UKHNlZWtlZCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3Rl
ZC50eHQKaW5kZXggMWYyY2VkZmQxMTE2NzI2YTNkMTBiNjg5NDMyZjA0Njg0OGQzN2QyMi4uMzE5
MjI0ZDVkMzdlMjNlNzJjOTkwMTk5NjRmOTE5MzYyNzY3YjE0YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQK
QEAgLTMwLDIyICszMCwyMiBAQCBFWFBFQ1RFRCAodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlk
ZW8sICdkaXNwbGF5JykuaW5uZXJUZXh0ID09ICdzaXQnKSBPSwogVGVzdCB0aGUgY3VlIGRpc3Bs
YXkgY29sb3JzIGFuZCBmb250LgogUlVOKHZpZGVvLndpZHRoID0gMzIwKQogUlVOKHZpZGVvLmhl
aWdodCA9IDI0MCkKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlF
bGVtZW50KHZpZGVvLCAnY29udGFpbmVyJykpLmZvbnRTaXplID09ICcxMnB4JykgT0sKK0VYUEVD
VEVEIChnZXRDb21wdXRlZFN0eWxlKG1lZGlhQ29udHJvbHNFbGVtZW50KGludGVybmFscy5zaGFk
b3dSb290KHZpZGVvKS5maXJzdENoaWxkLCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRh
aW5lcicpKS5mb250U2l6ZSA9PSAnMTJweCcpIE9LCiAKIFJVTih2aWRlby53aWR0aCA9IDY0MCkK
IFJVTih2aWRlby5oZWlnaHQgPSA0ODApCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0
VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2NvbnRhaW5lcicpKS5mb250U2l6ZSA9PSAnMjRw
eCcpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShtZWRpYUNvbnRyb2xzRWxlbWVudChp
bnRlcm5hbHMuc2hhZG93Um9vdCh2aWRlbykuZmlyc3RDaGlsZCwgJy13ZWJraXQtbWVkaWEtdGV4
dC10cmFjay1jb250YWluZXInKSkuZm9udFNpemUgPT0gJzI0cHgnKSBPSwogCiBSVU4odmlkZW8u
d2lkdGggPSAxMjgwKQogUlVOKHZpZGVvLmhlaWdodCA9IDk2MCkKLUVYUEVDVEVEIChnZXRDb21w
dXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY29udGFpbmVyJykpLmZv
bnRTaXplID09ICc0OHB4JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKG1lZGlhQ29u
dHJvbHNFbGVtZW50KGludGVybmFscy5zaGFkb3dSb290KHZpZGVvKS5maXJzdENoaWxkLCAnLXdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lcicpKS5mb250U2l6ZSA9PSAnNDhweCcpIE9L
CiAKIFJVTih2aWRlby53aWR0aCA9IDI1NjApCiBSVU4odmlkZW8uaGVpZ2h0ID0gMTQ0MCkKLUVY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAn
Y29udGFpbmVyJykpLmZvbnRTaXplID09ICc3MnB4JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRl
ZFN0eWxlKG1lZGlhQ29udHJvbHNFbGVtZW50KGludGVybmFscy5zaGFkb3dSb290KHZpZGVvKS5m
aXJzdENoaWxkLCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lcicpKS5mb250U2l6
ZSA9PSAnNzJweCcpIE9LCiAKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rp
c3BsYXlFbGVtZW50KHZpZGVvLCAnY29udGFpbmVyJykpLmZvbnRGYW1pbHkgPT0gJ3NhbnMtc2Vy
aWYnKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1l
bnQodmlkZW8sICdjb250YWluZXInKSkuY29sb3IgPT0gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCkn
KSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUobWVkaWFDb250cm9sc0VsZW1lbnQoaW50
ZXJuYWxzLnNoYWRvd1Jvb3QodmlkZW8pLmZpcnN0Q2hpbGQsICctd2Via2l0LW1lZGlhLXRleHQt
dHJhY2stY29udGFpbmVyJykpLmZvbnRGYW1pbHkgPT0gJ3NhbnMtc2VyaWYnKSBPSworRVhQRUNU
RUQgKGdldENvbXB1dGVkU3R5bGUobWVkaWFDb250cm9sc0VsZW1lbnQoaW50ZXJuYWxzLnNoYWRv
d1Jvb3QodmlkZW8pLmZpcnN0Q2hpbGQsICctd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFp
bmVyJykpLmNvbG9yID09ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJykgT0sKIEVYUEVDVEVEIChn
ZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScp
KS5iYWNrZ3JvdW5kQ29sb3IgPT0gJ3JnYmEoMCwgMCwgMCwgMC43OTY4NzUpJykgT0sKIEVORCBP
RiBURVNUCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1y
ZW5kZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJp
bmcuaHRtbAppbmRleCA2OWEwOWNmNjVlYjU5N2Y4NTMzOTYyODM5ZGY2MmRmYmRkOGM3NDg3Li4z
ZWU5OTZlZTVjM2NjYTI2Y2ZmZmIyYjg5NmUyMmNmNDY1ZjlmOTJkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sCkBAIC0xOCw3ICsxOCw3
IEBACiAgICAgICAgICAgICBydW4oInZpZGVvLndpZHRoID0gIiArIHdpZHRoKTsKICAgICAgICAg
ICAgIHJ1bigidmlkZW8uaGVpZ2h0ID0gIiArIGhlaWdodCk7CiAgICAgICAgICAgICBkb2N1bWVu
dC5ib2R5Lm9mZnNldFRvcDsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2NvbnRhaW5lcicpKS5mb250U2l6
ZSIsIHBhcnNlSW50KGhlaWdodCAqIDAuMDUpICsgInB4Iik7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoImdldENvbXB1dGVkU3R5bGUobWVkaWFDb250cm9sc0VsZW1lbnQoaW50ZXJuYWxzLnNo
YWRvd1Jvb3QodmlkZW8pLmZpcnN0Q2hpbGQsICctd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29u
dGFpbmVyJykpLmZvbnRTaXplIiwgcGFyc2VJbnQoaGVpZ2h0ICogMC4wNSkgKyAicHgiKTsKICAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CiAgICAgICAgIH0KIApAQCAtMzAsOCArMzAsOCBA
QAogICAgICAgICAgICAgdGVzdEZvbnRTaXplKDEyODAsIDk2MCk7CiAgICAgICAgICAgICB0ZXN0
Rm9udFNpemUoMjU2MCwgMTQ0MCk7CiAKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29t
cHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2NvbnRhaW5lcicpKS5m
b250RmFtaWx5IiwgInNhbnMtc2VyaWYiKTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2NvbnRhaW5lcicp
KS5jb2xvciIsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIik7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoImdldENvbXB1dGVkU3R5bGUobWVkaWFDb250cm9sc0VsZW1lbnQoaW50ZXJuYWxzLnNo
YWRvd1Jvb3QodmlkZW8pLmZpcnN0Q2hpbGQsICctd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29u
dGFpbmVyJykpLmZvbnRGYW1pbHkiLCAic2Fucy1zZXJpZiIpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKG1lZGlhQ29udHJvbHNFbGVtZW50KGludGVybmFscy5z
aGFkb3dSb290KHZpZGVvKS5maXJzdENoaWxkLCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNv
bnRhaW5lcicpKS5jb2xvciIsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIik7CiAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQo
dmlkZW8sICdkaXNwbGF5JykpLmJhY2tncm91bmRDb2xvciIsICJyZ2JhKDAsIDAsIDAsIDAuNzk2
ODc1KSIpOwogCiAgICAgICAgICAgICBlbmRUZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130702</attachid>
            <date>2012-03-07 14:59:55 -0800</date>
            <delta_ts>2012-03-09 14:21:04 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug-79746-20120308005953.patch</filename>
            <type>text/plain</type>
            <size>33899</size>
            <attacher name="Victor Carbune">vcarbune</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI5ZjEwZTUzMTMwNjQ1
NDdkMmUwNTY5YTg3MmI4NjU0OGI5YjRkMS4uODU0ZmY3YzJhYmVjNGFlMjc4NGIxYTk1YTJlYTM1
ZmM4OTRjNDMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEyLTAzLTA4ICBWaWN0
b3IgQ2FyYnVuZSAgPHZpY3RvckByb3NlZHUub3JnPgorCisgICAgICAgIFRoZSBtYWluIGNvZGUg
c3RydWN0dXJlIGZvciBwbGFjaW5nIGZ1dHVyZSB0ZXh0IHRyYWNrIGN1ZSByZW5kZXJpbmcKKyAg
ICAgICAgY29kZSBhbmQgbWFpbiBvdXRlciByZW5kZXJpbmcgc3RlcHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTc0NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gbmV3IGZ1
bmN0aW9uYWxpdHkgaW50cm9kdWNlZCwgbW9zdGx5IHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
Y3NzL21lZGlhQ29udHJvbHMuY3NzOgorICAgICAgICAodmlkZW86Oi13ZWJraXQtbWVkaWEtdGV4
dC10cmFjay1kaXNwbGF5KTogQWRqdXN0ZWQgdGV4dCBjb2xvciB0byBtYXRjaAorICAgICAgICB0
aGUgY29sb3IgcmVxdWlyZWQgaW4gdGhlIFdlYlZUVCBzcGVjIChzZWN0aW9uIDMuNS4xICdjb2xv
cicgcHJvcGVydHkpCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudDo6dXBkYXRlRGlzcGxheSk6IE1haW4KKyAgICAgICAgZnVuY3Rpb24gZm9yIHRoZSByZW5k
ZXJpbmcgcnVsZXMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKToKKyAgICAgICAg
KiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAoTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCk6CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHA6IFJlbW92ZWQgbV90ZXh0VHJhY2tEaXNwbGF5Cisg
ICAgICAgIGFuZCBkdXBsaWNhdGVkIGNvZGUgd2l0aCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtIChvbmx5IG1pbmltdW0KKyAgICAgICAgZnVuY3Rpb24gY2FsbHMgdG8gdGhlIG1haW4g
dGV4dCB0cmFjayBjb250YWluZXIpCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290
RWxlbWVudDo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrRGlzcGxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6dXBkYXRlVGV4dFRyYWNr
RGlzcGxheSk6CisKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVu
dENocm9taXVtLmNwcDogUmVtb3ZlZCBtX3RleHRUcmFja0Rpc3BsYXkKKyAgICAgICAgYW5kIGR1
cGxpY2F0ZSBjb2RlIHdpdGggTWVkaWFDb250cm9sUm9vdEVsZW1lbnQgKG9ubHkgbWluaW11bSBm
dW5jdGlvbiBjYWxscworICAgICAgICB0byB0aGUgbWFpbiB0ZXh0IHRyYWNrIGNvbnRhaW5lciBy
ZW1haW5lZCkKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21p
dW06Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6c2V0TWVkaWFDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmNyZWF0ZVRl
eHRUcmFja0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1l
bnRDaHJvbWl1bTo6dXBkYXRlVGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OmRldGVybWluZURpc3BsYXlQYXJhbWV0ZXJzKTogVGhpcyBtZXRob2Qg
aG9sZHMgbWFpbgorICAgICAgICBwb3NpdGlvbiBwYXJhbWV0ZXIgY29tcHV0YXRpb24gZm9yIGEg
VGV4dFRyYWNrQ3VlCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0N1ZTo6Z2V0RGlzcGxheVN0YXRlKTogVGhpcyBtZXRob2QgcmV0dXJucyBhIHNldCBvZiBi
b3hlcworICAgICAgICByZXByZXNlbnRpbmcgdGhlIGRpc3BsYXkgc3RhdGUgb2YgdGhlIGN1ZSwg
YXMgbWVudGlvbmVkIGluIHRoZSBzcGVjLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHRUcmFja0N1ZSk6CisKIDIw
MTItMDMtMDcgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtXZWJTb2NrZXRdIFNob3VsZCByYWlzZSBTWU5UQVhfRVJSIHdoZW4gbWVzc2FnZSBjb250
YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
bWVkaWFDb250cm9scy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MK
aW5kZXggMzFjOWQ0MzI2ZTk0ZTAzOTM0YzU4Y2UyNWJkZGJlMzJkMjc5YTY5ZS4uYjgxMzMyZmM3
NjEzYTI1OWY5N2U2MTFkNDc5M2Y0YTQyMWQ2MDQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL21lZGlhQ29udHJvbHMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNv
bnRyb2xzLmNzcwpAQCAtMzcsOCArMzcsMTEgQEAgYXVkaW8gewogICAgIHdpZHRoOiBpbmhlcml0
OwogICAgIGhlaWdodDogaW5oZXJpdDsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZGlz
cGxheTogYmxvY2s7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgZGlyZWN0aW9uOiBs
dHI7CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0OworICAgIC13ZWJraXQtYm94LXBhY2s6
IGVuZDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogfQogCiBhdWRpbzo6LXdl
YmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMt
cGFuZWwgewpAQCAtNDYsNyArNDksNyBAQCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1w
YW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgewogICAgIC13ZWJraXQt
Ym94LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwog
ICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICBib3R0b206IDA7CiAgICAgd2lkdGg6IDEwMCU7
CiAgICAgei1pbmRleDogMDsKQEAgLTIwMSwxNSArMjA0LDE2IEBAIGF1ZGlvOjotd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1heC1idXR0b24sIHZpZGVvOjotd2Via2l0
LW1lZGlhCiB9CiAKIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIHsK
LSAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIHdp
ZHRoOiAxMDAlOwogICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgcGFkZGluZy1ib3R0b206IDVw
eDsKIAogICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsK
ICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwg
MCk7Ci0gICAgCisKICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgIHdvcmQtc3BhY2lu
Zzogbm9ybWFsOwogICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwpAQCAtMjIyLDYgKzIyNiw2IEBA
IHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIHsKIHZpZGVvOjotd2Vi
a2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSB7CiAgICAgZGlzcGxheTogaW5saW5lOwogICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsKLSAgICBjb2xvcjogeWVsbG93
OworICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwogICAgIHBhZGRpbmc6IDBweCAy
cHg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0Nocm9t
aXVtLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCmlu
ZGV4IDUwOGQ3NDQ1ZTJkYTBmODdiNmVhNjJlZTljZDVmYTE0NDJiMjkwOWEuLjVmYjYyY2MzNGRi
MTFlNjcwZWIxMGUxYjUyNTZmYzI2ZWUxNGQ4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9t
ZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCkBAIC00MSw3ICs0MSw3IEBAIGF1ZGlvOi13ZWJraXQt
ZnVsbC1wYWdlLW1lZGlhLCB2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSB7CiAKIGF1ZGlv
Ojotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250
cm9scy1wYW5lbCB7CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLSAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIG92ZXJmbG93OiB2aXNp
YmxlOwogICAgIGJvdHRvbTogMDsKICAgICB3aWR0aDogMTAwJTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA4Y2E2NmE0
YjliOWFiNDRlNWE2ODY2NmU2MjU0NGIyNzMzNmE3Nzk3Li44YWRmOTVhMDgyNjllOGMxYjI3ZTM2
YWNhNDJjYzk3OGZlYmU3MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
RmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MTWVk
aWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNZWRp
YUNvbnRyb2xzLmgiCkBAIC01Miw2ICs1Myw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDcsNiArMTA5LDcg
QEAgaW5saW5lIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fY2FuQmVEcmFnZ2VkKGZhbHNlKQogICAg
ICwgbV9pc0JlaW5nRHJhZ2dlZChmYWxzZSkKICAgICAsIG1fb3BhcXVlKHRydWUpCisgICAgLCBt
X3RyYW5zaXRpb25UaW1lcih0aGlzLCAmTWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojp0cmFuc2l0
aW9uVGltZXJGaXJlZCkKIHsKIH0KIApAQCAtMTczLDYgKzE3NiwyOSBAQCB2b2lkIE1lZGlhQ29u
dHJvbFBhbmVsRWxlbWVudDo6ZW5kRHJhZygpCiAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5z
ZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7CiB9CiAKK3ZvaWQgTWVkaWFDb250cm9sUGFu
ZWxFbGVtZW50OjpzdGFydFRpbWVyKCkKK3sKKyAgICBzdG9wVGltZXIoKTsKKworICAgIGRvdWJs
ZSBkdXJhdGlvbiA9IGRvY3VtZW50KCktPnBhZ2UoKSA/IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhl
bWUoKS0+bWVkaWFDb250cm9sc0ZhZGVPdXREdXJhdGlvbigpIDogMDsKKyAgICBtX3RyYW5zaXRp
b25UaW1lci5zdGFydE9uZVNob3QoZHVyYXRpb24pOworfQorCit2b2lkIE1lZGlhQ29udHJvbFBh
bmVsRWxlbWVudDo6c3RvcFRpbWVyKCkKK3sKKyAgICBpZiAobV90cmFuc2l0aW9uVGltZXIuaXNB
Y3RpdmUoKSkKKyAgICAgICAgbV90cmFuc2l0aW9uVGltZXIuc3RvcCgpOworfQorCisKK3ZvaWQg
TWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojp0cmFuc2l0aW9uVGltZXJGaXJlZChUaW1lcjxNZWRp
YUNvbnRyb2xQYW5lbEVsZW1lbnQ+KikKK3sKKyAgICBpZiAoIW1fb3BhcXVlKQorICAgICAgICBo
aWRlKCk7CisKKyAgICBzdG9wVGltZXIoKTsKK30KKwogdm9pZCBNZWRpYUNvbnRyb2xQYW5lbEVs
ZW1lbnQ6OnNldFBvc2l0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBk
b3VibGUgbGVmdCA9IHBvc2l0aW9uLngoKTsKQEAgLTIxMiw2ICsyMzgsOCBAQCB2b2lkIE1lZGlh
Q29udHJvbFBhbmVsRWxlbWVudDo6bWFrZU9wYXF1ZSgpCiAgICAgc2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHksIDEuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpOwogCiAgICAgbV9vcGFxdWUgPSB0cnVlOworCisgICAgc2hvdygpOwogfQogCiB2b2lkIE1l
ZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KCkKQEAgLTIyNCw2ICsyNTIs
OCBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6bWFrZVRyYW5zcGFyZW50KCkKICAg
ICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5T3BhY2l0eSwgMC4wLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAKICAgICBtX29wYXF1ZSA9IGZhbHNlOworCisgICAg
c3RhcnRUaW1lcigpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC0xMTg3LDE2ICsxMjE3LDg4IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6c2hh
ZG93UHNldWRvSWQoKSBjb25zCiAgICAgcmV0dXJuIGlkOwogfQogCit2b2lkIE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQoreworICAgIExPRyhN
ZWRpYSwgIk1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3Bs
YXkoKSIpOworCisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRN
ZWRpYUVsZW1lbnQodGhpcyk7CisKKyAgICAvLyAxLiBJZiB0aGUgbWVkaWEgZWxlbWVudCBpcyBh
biBhdWRpbyBlbGVtZW50LCBvciBpcyBhbm90aGVyIHBsYXliYWNrCisgICAgLy8gbWVjaGFuaXNt
IHdpdGggbm8gcmVuZGVyaW5nIGFyZWEsIGFib3J0IHRoZXNlIHN0ZXBzLiBUaGVyZSBpcyBub3Ro
aW5nIHRvCisgICAgLy8gcmVuZGVyLgorICAgIGlmICghbWVkaWFFbGVtZW50LT5pc1ZpZGVvKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIDIuIExldCB2aWRlbyBiZSB0aGUgbWVkaWEgZWxl
bWVudCBvciBvdGhlciBwbGF5YmFjayBtZWNoYW5pc20uCisgICAgSFRNTFZpZGVvRWxlbWVudCog
dmlkZW8gPSBzdGF0aWNfY2FzdDxIVE1MVmlkZW9FbGVtZW50Kj4obWVkaWFFbGVtZW50KTsKKwor
ICAgIC8vIDMuIExldCBvdXRwdXQgYmUgYW4gZW1wdHkgbGlzdCBvZiBhYnNvbHV0ZWx5IHBvc2l0
aW9uZWQgQ1NTIGJsb2NrIGJveGVzLgorICAgIFZlY3RvcjxSZWZQdHI8SFRNTERpdkVsZW1lbnQ+
ID4gb3V0cHV0OworCisgICAgLy8gNC4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgZXhwb3NpbmcgYSB1
c2VyIGludGVyZmFjZSBmb3IgdmlkZW8sIGFkZCB0bworICAgIC8vIG91dHB1dCBvbmUgb3IgbW9y
ZSBjb21wbGV0ZWx5IHRyYW5zcGFyZW50IHBvc2l0aW9uZWQgQ1NTIGJsb2NrIGJveGVzIHRoYXQK
KyAgICAvLyBjb3ZlciB0aGUgc2FtZSByZWdpb24gYXMgdGhlIHVzZXIgaW50ZXJmYWNlLgorCisg
ICAgLy8gNS4gSWYgdGhlIGxhc3QgdGltZSB0aGVzZSBydWxlcyB3ZXJlIHJ1biwgdGhlIHVzZXIg
YWdlbnQgd2FzIG5vdCBleHBvc2luZworICAgIC8vIGEgdXNlciBpbnRlcmZhY2UgZm9yIHZpZGVv
LCBidXQgbm93IGl0IGlzLCBsZXQgcmVzZXQgYmUgdHJ1ZS4gT3RoZXJ3aXNlLAorICAgIC8vIGxl
dCByZXNldCBiZSBmYWxzZS4KKworICAgIC8vIDYuIExldCB0cmFja3MgYmUgdGhlIHN1YnNldCBv
ZiB2aWRlbydzIGxpc3Qgb2YgdGV4dCB0cmFja3MgdGhhdCBoYXZlIGFzCisgICAgLy8gdGhlaXIg
cnVsZXMgZm9yIHVwZGF0aW5nIHRoZSB0ZXh0IHRyYWNrIHJlbmRlcmluZyB0aGVzZSBydWxlcyBm
b3IKKyAgICAvLyB1cGRhdGluZyB0aGUgZGlzcGxheSBvZiBXZWJWVFQgdGV4dCB0cmFja3MsIGFu
ZCB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMKKyAgICAvLyBzaG93aW5nIG9yIHNob3dpbmcgYnkg
ZGVmYXVsdC4KKyAgICAvLyA3LiBMZXQgY3VlcyBiZSBhbiBlbXB0eSBsaXN0IG9mIHRleHQgdHJh
Y2sgY3Vlcy4KKyAgICAvLyA4LiBGb3IgZWFjaCB0cmFjayB0cmFjayBpbiB0cmFja3MsIGFwcGVu
ZCB0byBjdWVzIGFsbCB0aGUgY3VlcyBmcm9tCisgICAgLy8gdHJhY2sncyBsaXN0IG9mIGN1ZXMg
dGhhdCBoYXZlIHRoZWlyIHRleHQgdHJhY2sgY3VlIGFjdGl2ZSBmbGFnIHNldC4KKyAgICBDdWVM
aXN0IGFjdGl2ZUN1ZXMgPSB2aWRlby0+Y3VycmVudGx5QWN0aXZlQ3VlcygpOworCisgICAgLy8g
UmVkcmF3CisgICAgcmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgIC8vIDkuIElmIHJlc2V0IGlzIGZh
bHNlLCB0aGVuLCBmb3IgZWFjaCB0ZXh0IHRyYWNrIGN1ZSBjdWUgaW4gY3VlczogaWYgY3VlJ3MK
KyAgICAvLyB0ZXh0IHRyYWNrIGN1ZSBkaXNwbGF5IHN0YXRlIGhhcyBhIHNldCBvZiBDU1MgYm94
ZXMsIHRoZW4gYWRkIHRob3NlIGJveGVzCisgICAgLy8gdG8gb3V0cHV0LCBhbmQgcmVtb3ZlIGN1
ZSBmcm9tIGN1ZXMuCisKKyAgICAvLyAxMC4gRm9yIGVhY2ggdGV4dCB0cmFjayBjdWUgY3VlIGlu
IGN1ZXMgdGhhdCBoYXMgbm90IHlldCBoYWQKKyAgICAvLyBjb3JyZXNwb25kaW5nIENTUyBib3hl
cyBhZGRlZCB0byBvdXRwdXQsIGluIHRleHQgdHJhY2sgY3VlIG9yZGVyLCBydW4gdGhlCisgICAg
Ly8gZm9sbG93aW5nIHN1YnN0ZXBzOgorCisgICAgLy8gU2ltcGxlIHJlbmRlcmVyLgorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYWN0aXZlQ3Vlcy5zaXplKCk7ICsraSkgeworICAgICAgICBU
ZXh0VHJhY2tDdWUqIGN1ZSA9IGFjdGl2ZUN1ZXNbaV0uZGF0YSgpOworCisgICAgICAgIEFTU0VS
VChjdWUtPmlzQWN0aXZlKCkpOworICAgICAgICBpZiAoIWN1ZS0+dHJhY2soKSB8fCBjdWUtPnRy
YWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6OlNIT1dJTkcpCisgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IGRpc3BsYXlUcmVlID0gY3VlLT5n
ZXREaXNwbGF5VHJlZSgpOworICAgICAgICBpZiAoZGlzcGxheVRyZWUuZ2V0KCkpCisgICAgICAg
ICAgICBvdXRwdXQuYXBwZW5kKGRpc3BsYXlUcmVlKTsKKworICAgICAgICAvLyBGSVhNRShCVUcg
Nzk3NTApOiBSZW5kZXIgdGhlIFRleHRUcmFja0N1ZSB3aGVuIHNuYXAtdG8tbGluZXMgaXMgc2V0
LgorICAgICAgICAvLyBGSVhNRShCVUcgNzk3NTEpOiBSZW5kZXIgdGhlIFRleHRUcmFja0N1ZSB3
aGVuIHNuYXAtdG8tbGluZXMgaXMgbm90IHNldC4KKyAgICB9CisKKyAgICAvLyAxMS4gUmV0dXJu
IG91dHB1dC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG91dHB1dC5zaXplKCk7ICsraSkK
KyAgICAgICAgYXBwZW5kQ2hpbGQob3V0cHV0W2ldLCBBU1NFUlRfTk9fRVhDRVBUSU9OLCB0cnVl
KTsKKworICAgIGlmIChvdXRwdXQuc2l6ZSgpKQorICAgICAgICBzaG93KCk7CisgICAgZWxzZQor
ICAgICAgICBoaWRlKCk7Cit9CisKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW1pbXVtRm9udFNpemUg
PSAxNjsKIHN0YXRpYyBjb25zdCBmbG9hdCB2aWRlb0hlaWdodEZvbnRTaXplUGVyY2VudGFnZSA9
IC4wNTsKIHN0YXRpYyBjb25zdCBmbG9hdCB0cmFja0JvdHRvbU11bHRpcGxpZXIgPSAuOTsKLSAg
ICAKKwogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVT
aXplcygpCiB7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRN
ZWRpYUVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFtZWRpYUVsZW1lbnQgfHwgIW1lZGlhRWxlbWVu
dC0+cmVuZGVyZXIoKSB8fCAhbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpLT5pc1ZpZGVvKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIEludFJlY3QgdmlkZW9Cb3ggPSB0b1JlbmRlclZp
ZGVvKG1lZGlhRWxlbWVudC0+cmVuZGVyZXIoKSktPnZpZGVvQm94KCk7CiAgICAgaWYgKG1fdmlk
ZW9EaXNwbGF5U2l6ZSA9PSB2aWRlb0JveCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIwNywzMyAr
MTMwOSw5IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBk
YXRlU2l6ZXMoKQogICAgICAgICBtX2ZvbnRTaXplID0gZm9udFNpemU7CiAgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgU3RyaW5nOjpudW1iZXIoZm9u
dFNpemUpICsgInB4Iik7CiAgICAgfQotCi0gICAgTGF5b3V0VW5pdCBib3R0b20gPSBzdGF0aWNf
Y2FzdDxMYXlvdXRVbml0PihtX3ZpZGVvRGlzcGxheVNpemUueSgpICsgbV92aWRlb0Rpc3BsYXlT
aXplLmhlaWdodCgpIC0gKG1fdmlkZW9EaXNwbGF5U2l6ZS5oZWlnaHQoKSAqIHRyYWNrQm90dG9t
TXVsdGlwbGllcikpOwotICAgIGlmIChib3R0b20gIT0gbV9ib3R0b20pIHsKLSAgICAgICAgbV9i
b3R0b20gPSBib3R0b207Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3R0b20sIFN0cmluZzo6bnVtYmVyKHJvdW5kVG9JbnQoYm90dG9tKSkgKyAicHgiKTsKLSAg
ICB9Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTWVkaWFDb250cm9s
VGV4dFRyYWNrRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQoZG9jdW1l
bnQpCi17CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1l
bnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGV4dFRy
YWNrRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25z
dAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0
LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLSNlbmRp
ZgorI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuaAppbmRleCA1MjA1NWE0NDQ2M2YzMTlmNDk4MTA5OWI3ODQ4YWUxYzI3NGMy
YzJmLi42YmY1MTlmYzdiNTNjY2M3OTg3Nzk1YzEyZTE3MjZkMzY5MTY0NDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTEy
Miw2ICsxMjIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRpbnVlRHJhZyhjb25zdCBMYXlv
dXRQb2ludCYgZXZlbnRMb2NhdGlvbik7CiAgICAgdm9pZCBlbmREcmFnKCk7CiAKKyAgICB2b2lk
IHN0YXJ0VGltZXIoKTsKKyAgICB2b2lkIHN0b3BUaW1lcigpOworICAgIHZvaWQgdHJhbnNpdGlv
blRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiopOworCiAgICAgdm9p
ZCBzZXRQb3NpdGlvbihjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgYm9vbCBtX2NhbkJlRHJh
Z2dlZDsKQEAgLTEyOSw2ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9vcGFxdWU7CiAg
ICAgTGF5b3V0UG9pbnQgbV9kcmFnU3RhcnRQb3NpdGlvbjsKICAgICBMYXlvdXRQb2ludCBtX2Ry
YWdTdGFydEV2ZW50TG9jYXRpb247CisKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1l
bnQ+IG1fdHJhbnNpdGlvblRpbWVyOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtNDkxLDkgKzQ5Nyw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKLSAgICAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKLSAgICAKKworICAgIHZvaWQgdXBkYXRlRGlzcGxheSgpOwogICAgIHZvaWQgdXBkYXRlU2l6
ZXMoKTsKIAogcHJpdmF0ZToKQEAgLTUwNiwyMiArNTEyLDExIEBAIHByaXZhdGU6CiAgICAgSW50
UmVjdCBtX3ZpZGVvRGlzcGxheVNpemU7CiAgICAgZmxvYXQgbV9mb250U2l6ZTsKICAgICBMYXlv
dXRVbml0IG1fYm90dG9tOwotfTsKIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1jbGFzcyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRp
YUNvbnRyb2xFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0KLXByaXZh
dGU6Ci0gICAgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQoRG9jdW1lbnQqKTsK
LQotICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25z
dCB7IHJldHVybiBNZWRpYVRleHRUcmFja0Rpc3BsYXk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKyAgICBib29sIG1fY29udHJvbHNE
aXNwbGF5ZWRPblJlbmRlcmluZzsKIH07Ci0jZW5kaWYKIAorI2VuZGlmCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcApp
bmRleCBkMjZmZTIwOWVlNzUwNTI4YjVmOWZjNjY5YTZjMDBmNDhlZTFiNTNkLi4yMzgzMjAwZjNh
Yzg5OGY5ZDUyZmYwNWExZDkzZmNkZDVlYjU3OGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCkBAIC03Myw3ICs3
Myw2IEBAIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX3BhbmVsKDApCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgICwgbV90ZXh0RGlzcGxheUNvbnRhaW5lcigwKQotICAgICwgbV90ZXh0VHJhY2tE
aXNwbGF5KDApCiAjZW5kaWYKICAgICAsIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKHRo
aXMsICZNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVy
RmlyZWQpCiAgICAgLCBtX2lzTW91c2VPdmVyQ29udHJvbHMoZmFsc2UpCkBAIC0yNzcsOCArMjc2
LDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2V0TWVkaWFDb250cm9sbGVyKE1l
ZGlhQ29udHJvbGxlckludGVyZmFjZSogY29udHIKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAg
ICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCiAgICAgICAgIG1fdGV4dERpc3BsYXlDb250
YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV90ZXh0VHJh
Y2tEaXNwbGF5KQotICAgICAgICBtX3RleHRUcmFja0Rpc3BsYXktPnNldE1lZGlhQ29udHJvbGxl
cihjb250cm9sbGVyKTsKICNlbmRpZgogICAgIHJlc2V0KCk7CiB9CkBAIC02MDQsMTYgKzYwMSw4
IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja0Rpc3BsYXko
KQogICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiB0ZXh0
RGlzcGxheUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyID0gdGV4dERp
c3BsYXlDb250YWluZXIuZ2V0KCk7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNr
RGlzcGxheUVsZW1lbnQ+IHRleHREaXNwbGF5ID0gTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBtX3RleHREaXNwbGF5Q29udGFpbmVy
LT5oaWRlKCk7Ci0gICAgbV90ZXh0VHJhY2tEaXNwbGF5ID0gdGV4dERpc3BsYXkuZ2V0KCk7Ci0K
LSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIHRleHREaXNwbGF5Q29udGFpbmVyLT5hcHBlbmRD
aGlsZCh0ZXh0RGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIC8vIEluc2VydCBpdCBiZWZvcmUgdGhlIGZpcnN0IGNvbnRyb2xs
ZXIgZWxlbWVudCBzbyBpdCBhbHdheXMgZGlzcGxheXMgYmVoaW5kIHRoZSBjb250cm9scy4KKyAg
ICBFeGNlcHRpb25Db2RlIGVjOwogICAgIGluc2VydEJlZm9yZSh0ZXh0RGlzcGxheUNvbnRhaW5l
ci5yZWxlYXNlKCksIG1fcGFuZWwsIGVjLCB0cnVlKTsKIH0KIApAQCAtNjM2LDI4ICs2MjUsOCBA
QCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCkK
ICAgICBpZiAoIW1fdGV4dERpc3BsYXlDb250YWluZXIpCiAgICAgICAgIGNyZWF0ZVRleHRUcmFj
a0Rpc3BsYXkoKTsKIAotICAgIEN1ZUxpc3QgYWN0aXZlQ3VlcyA9IHRvUGFyZW50TWVkaWFFbGVt
ZW50KG1fdGV4dERpc3BsYXlDb250YWluZXIpLT5jdXJyZW50bHlBY3RpdmVDdWVzKCk7Ci0gICAg
bV90ZXh0VHJhY2tEaXNwbGF5LT5yZW1vdmVDaGlsZHJlbigpOwotICAgIGJvb2wgbm90aGluZ1Rv
RGlzcGxheSA9IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3RpdmVDdWVzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5k
YXRhKCk7Ci0gICAgICAgIEFTU0VSVChjdWUtPmlzQWN0aXZlKCkpOwotICAgICAgICBpZiAoIWN1
ZS0+dHJhY2soKSB8fCBjdWUtPnRyYWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6OlNIT1dJTkcp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBTdHJpbmcgY3VlVGV4dCA9IGN1ZS0+
dGV4dCgpOwotICAgICAgICBpZiAoIWN1ZVRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBp
ZiAoIW5vdGhpbmdUb0Rpc3BsYXkpCi0gICAgICAgICAgICAgICAgbV90ZXh0VHJhY2tEaXNwbGF5
LT5hcHBlbmRDaGlsZChkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6YnJUYWcs
IGZhbHNlKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgICAgICAgICBtX3RleHRUcmFja0Rp
c3BsYXktPmFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKGN1ZVRleHQpLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgICAgIG5vdGhpbmdUb0Rpc3BsYXkgPSBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KKyAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51cGRhdGVE
aXNwbGF5KCk7CiAKLSAgICBpZiAoIW5vdGhpbmdUb0Rpc3BsYXkpCi0gICAgICAgIG1fdGV4dERp
c3BsYXlDb250YWluZXItPnNob3coKTsKLSAgICBlbHNlCi0gICAgICAgIG1fdGV4dERpc3BsYXlD
b250YWluZXItPmhpZGUoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3Bw
CmluZGV4IGU2OWQ4MThkM2ExNzM1OTdmMmRiYmZhYWFiZGMxMzFkNjgxNTllOGIuLjY2M2U1MWY4
MGY2ZmJiOWYxYmMwNzM5MWVjNGY5ZGNmNGMyN2Q1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21p
dW0uY3BwCkBAIC01OCw3ICs1OCw2IEBAIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06
Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0oRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBt
X3BhbmVsKDApCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgbV90ZXh0RGlzcGxheUNv
bnRhaW5lcigwKQotICAgICwgbV90ZXh0VHJhY2tEaXNwbGF5KDApCiAjZW5kaWYKICAgICAsIG1f
b3BhcXVlKHRydWUpCiAgICAgLCBtX2lzTW91c2VPdmVyQ29udHJvbHMoZmFsc2UpCkBAIC0xNTgs
OCArMTU3LDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpzZXRNZWRp
YUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWMKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCiAgICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCiAgICAgICAgIG1fdGV4dERpc3Bs
YXlDb250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV90
ZXh0VHJhY2tEaXNwbGF5KQotICAgICAgICBtX3RleHRUcmFja0Rpc3BsYXktPnNldE1lZGlhQ29u
dHJvbGxlcihjb250cm9sbGVyKTsKICNlbmRpZgogICAgIHJlc2V0KCk7CiB9CkBAIC0zMzUsMTYg
KzMzMiw4IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y3JlYXRlVGV4
dFRyYWNrRGlzcGxheSgpCiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQ+IHRleHREaXNwbGF5Q29udGFpbmVyID0gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgIG1fdGV4dERpc3BsYXlDb250
YWluZXIgPSB0ZXh0RGlzcGxheUNvbnRhaW5lci5nZXQoKTsKIAotICAgIFJlZlB0cjxNZWRpYUNv
bnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudD4gdGV4dERpc3BsYXkgPSBNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIG1fdGV4dERp
c3BsYXlDb250YWluZXItPmhpZGUoKTsKLSAgICBtX3RleHRUcmFja0Rpc3BsYXkgPSB0ZXh0RGlz
cGxheS5nZXQoKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgdGV4dERpc3BsYXlDb250
YWluZXItPmFwcGVuZENoaWxkKHRleHREaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAg
IGlmIChlYykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gSW5zZXJ0IGl0IGJlZm9yZSB0aGUg
Zmlyc3QgY29udHJvbGxlciBlbGVtZW50IHNvIGl0IGFsd2F5cyBkaXNwbGF5cyBiZWhpbmQgdGhl
IGNvbnRyb2xzLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgaW5zZXJ0QmVmb3JlKHRleHRE
aXNwbGF5Q29udGFpbmVyLnJlbGVhc2UoKSwgbV9wYW5lbCwgZWMsIHRydWUpOwogfQogCkBAIC0z
NjcsMzEgKzM1NiwxMCBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnVw
ZGF0ZVRleHRUcmFja0Rpc3BsYXkoKQogICAgIGlmICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikK
ICAgICAgICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogCi0gICAgQ3VlTGlzdCBhY3RpdmVD
dWVzID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQobV90ZXh0RGlzcGxheUNvbnRhaW5lciktPmN1cnJl
bnRseUFjdGl2ZUN1ZXMoKTsKLSAgICBtX3RleHRUcmFja0Rpc3BsYXktPnJlbW92ZUNoaWxkcmVu
KCk7Ci0gICAgYm9vbCBub3RoaW5nVG9EaXNwbGF5ID0gdHJ1ZTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFjdGl2ZUN1ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dFRyYWNrQ3Vl
KiBjdWUgPSBhY3RpdmVDdWVzW2ldLmRhdGEoKTsKLSAgICAgICAgQVNTRVJUKGN1ZS0+aXNBY3Rp
dmUoKSk7Ci0gICAgICAgIGlmICghY3VlLT50cmFjaygpIHx8IGN1ZS0+dHJhY2soKS0+bW9kZSgp
ICE9IFRleHRUcmFjazo6U0hPV0lORykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IFN0cmluZyBjdWVUZXh0ID0gY3VlLT50ZXh0KCk7Ci0gICAgICAgIGlmICghY3VlVGV4dC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIGlmICghbm90aGluZ1RvRGlzcGxheSkKLSAgICAgICAgICAg
ICAgICBtX3RleHRUcmFja0Rpc3BsYXktPmFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNyZWF0ZUVs
ZW1lbnQoSFRNTE5hbWVzOjpiclRhZywgZmFsc2UpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAg
ICAgICAgICAgIG1fdGV4dFRyYWNrRGlzcGxheS0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS0+Y3Jl
YXRlVGV4dE5vZGUoY3VlVGV4dCksIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgICAgICAgICAg
bm90aGluZ1RvRGlzcGxheSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFu
b3RoaW5nVG9EaXNwbGF5KQotICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5zaG93KCk7
Ci0gICAgZWxzZQotICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5oaWRlKCk7CisgICAg
bV90ZXh0RGlzcGxheUNvbnRhaW5lci0+dXBkYXRlRGlzcGxheSgpOwogfQogI2VuZGlmCi0gICAg
CisKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6
c2hhZG93UHNldWRvSWQoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzIikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IDY2MzBjYTE3NDJhNDRhZDdhYTdkZTg5
NWRmYzcyYWM4OWVkMDEzMjQuLjk3NTk1NDgxZmEzMmE2MTdjZTc4YTMyZTU1MDYzZWQwNWU3YWU0
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTM1
LDggKzM1LDEyIEBACiAKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKIAotI2luY2x1ZGUgIkV2
ZW50LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRXZl
bnQuaCIKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNp
bmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5j
bHVkZSAiV2ViVlRUUGFyc2VyLmgiCkBAIC0xMTEsNiArMTE1LDggQEAgVGV4dFRyYWNrQ3VlOjpU
ZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBpZCwgZG8KICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiAgICAgLCBtX3BhdXNlT25FeGl0KHBh
dXNlT25FeGl0KQogICAgICwgbV9zbmFwVG9MaW5lcyh0cnVlKQorICAgICwgbV9kaXNwbGF5VHJl
ZUNoYW5nZWQodHJ1ZSkKKyAgICAsIG1fZGlzcGxheVRyZWUoMCkKIHsKICAgICBwYXJzZVNldHRp
bmdzKHNldHRpbmdzKTsKIH0KQEAgLTEyOSw2ICsxMzUsOCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6
Y3VlRGlkQ2hhbmdlKCkKIHsKICAgICBpZiAobV90cmFjaykKICAgICAgICAgbV90cmFjay0+Y3Vl
RGlkQ2hhbmdlKHRoaXMpOworCisgICAgbV9kaXNwbGF5VHJlZUNoYW5nZWQgPSB0cnVlOwogfQog
CiBUZXh0VHJhY2sqIFRleHRUcmFja0N1ZTo6dHJhY2soKSBjb25zdApAQCAtMzkzLDYgKzQwMSw2
MCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgbV9p
c0FjdGl2ZSA9IGFjdGl2ZTsKIH0KIAordm9pZCBUZXh0VHJhY2tDdWU6OmRldGVybWluZURpc3Bs
YXlQYXJhbWV0ZXJzKCkKK3sKKyAgICAvLyBGSVhNRShCVUcgNzk3NDkpOiBEZXRlcm1pbmUgdGhl
IHRleHQgZGlyZWN0aW9uIHVzaW5nIHRoZSBCSURJIGFsZ29yaXRobS4KKyAgICAvLyBTdGVwcyAx
MC4yLCAxMC4zCisKKyAgICAvLyBGSVhNRShCVUcgNzk3NDcpOiBEZXRlcm1pbmUgdGhlIGRpc3Bs
YXkgcGFyYW1ldGVycyBmcm9tIHRoZSBydWxlcy4KKyAgICAvLyBTdGVwcyAxMC4xLCAxMC40IC0g
MTAuMTAKK30KKworUGFzc1JlZlB0cjxIVE1MRGl2RWxlbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRE
aXNwbGF5VHJlZSgpCit7CisgICAgaWYgKCFtX2Rpc3BsYXlUcmVlQ2hhbmdlZCB8fCAhbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBtX2Rpc3Bs
YXlUcmVlOworCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworCisgICAgLy8gMTAuMSAtIDEwLjEwCisgICAg
ZGV0ZXJtaW5lRGlzcGxheVBhcmFtZXRlcnMoKTsKKworICAgIC8vIDEwLjExLiBBcHBseSB0aGUg
dGVybXMgb2YgdGhlIENTUyBzcGVjaWZpY2F0aW9ucyB0byBub2RlcyB3aXRoaW4gdGhlCisgICAg
Ly8gZm9sbG93aW5nIGNvbnN0cmFpbnRzLCB0aHVzIG9idGFpbmluZyBhIHNldCBvZiBDU1MgYm94
ZXMgcG9zaXRpb25lZAorICAgIC8vIHJlbGF0aXZlIHRvIGFuIGluaXRpYWwgY29udGFpbmluZyBi
bG9jazoKKyAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IG1fZGlzcGxheVRyZWUgPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKworICAgIC8vIFRoZSBkb2N1bWVudCB0cmVlIGlz
IHRoZSB0cmVlIG9mIFdlYlZUVCBOb2RlIE9iamVjdHMgcm9vdGVkIGF0IG5vZGVzLgorICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudFRyZWUgPSBXZWJWVFRQYXJzZXI6OmNyZWF0
ZSgwLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50RnJv
bUN1ZVRleHQobV9jb250ZW50KTsKKworICAgIC8vIFRoZSBjaGlsZHJlbiBvZiB0aGUgbm9kZXMg
bXVzdCBiZSB3cmFwcGVkIGluIGFuIGFub255bW91cyBib3ggd2hvc2UKKyAgICAvLyAnZGlzcGxh
eScgcHJvcGVydHkgaGFzIHRoZSB2YWx1ZSAnaW5saW5lJy4gVGhpcyBpcyB0aGUgV2ViVlRUIGN1
ZQorICAgIC8vIGJhY2tncm91bmQgYm94LgorICAgIG1fZGlzcGxheVRyZWUtPnNldFNoYWRvd1Bz
ZXVkb0lkKEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkiKSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgbV9kaXNwbGF5VHJlZS0+YXBwZW5kQ2hpbGQoZG9j
dW1lbnRUcmVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OLCB0cnVlKTsKKworICAgIC8vIEZJWE1FKEJV
RyA3OTkxNik6IFJ1bnMgb2YgY2hpbGRyZW4gb2YgV2ViVlRUIFJ1YnkgT2JqZWN0cyB0aGF0IGFy
ZSBub3QKKyAgICAvLyBXZWJWVFQgUnVieSBUZXh0IE9iamVjdHMgbXVzdCBiZSB3cmFwcGVkIGlu
IGFub255bW91cyBib3hlcyB3aG9zZQorICAgIC8vICdkaXNwbGF5JyBwcm9wZXJ0eSBoYXMgdGhl
IHZhbHVlICdydWJ5LWJhc2UnLgorCisgICAgLy8gRklYTUUoQlVHIDc5OTE2KTogVGV4dCBydW5z
IG11c3QgYmUgd3JhcHBlZCBhY2NvcmRpbmcgdG8gdGhlIENTUworICAgIC8vIGxpbmUtd3JhcHBp
bmcgcnVsZXMsIGV4Y2VwdCB0aGF0IGFkZGl0aW9uYWxseSwgcmVnYXJkbGVzcyBvZiB0aGUgdmFs
dWUgb2YKKyAgICAvLyB0aGUgJ3doaXRlLXNwYWNlJyBwcm9wZXJ0eSwgbGluZXMgbXVzdCBiZSB3
cmFwcGVkIGF0IHRoZSBlZGdlIG9mIHRoZWlyCisgICAgLy8gY29udGFpbmluZyBibG9ja3MsIGV2
ZW4gaWYgZG9pbmcgc28gcmVxdWlyZXMgc3BsaXR0aW5nIGEgd29yZCB3aGVyZSB0aGVyZQorICAg
IC8vIGlzIG5vIGxpbmUgYnJlYWtpbmcgb3Bwb3J0dW5pdHkuIChUaHVzLCBub3JtYWxseSB0ZXh0
IHdyYXBzIGFzIG5lZWRlZCwKKyAgICAvLyBidXQgaWYgdGhlcmUgaXMgYSBwYXJ0aWN1bGFybHkg
bG9uZyB3b3JkLCBpdCBkb2VzIG5vdCBvdmVyZmxvdyBhcyBpdAorICAgIC8vIG5vcm1hbGx5IHdv
dWxkIGluIENTUywgaXQgaXMgaW5zdGVhZCBmb3JjaWJseSB3cmFwcGVkIGF0IHRoZSBib3gncyBl
ZGdlLikKKworICAgIC8vIEZJWE1FKEJVRyA3OTc1MCwgNzk3NTEpOiBTdGVwcyAxMC4xMiAtIDEw
LjE0CisKKyAgICBtX2Rpc3BsYXlUcmVlQ2hhbmdlZCA9IGZhbHNlOworCisgICAgLy8gMTAuMTUu
IExldCBjdWUncyB0ZXh0IHRyYWNrIGN1ZSBkaXNwbGF5IHN0YXRlIGhhdmUgdGhlIENTUyBib3hl
cyBpbgorICAgIC8vIGJveGVzLgorICAgIHJldHVybiBtX2Rpc3BsYXlUcmVlOworfQorCiB2b2lk
IFRleHRUcmFja0N1ZTo6cGFyc2VTZXR0aW5ncyhjb25zdCBTdHJpbmcmIGlucHV0KQogewogICAg
IC8vIDQuOC4xMC4xMy4zIFBhcnNlIHRoZSBXZWJWVFQgc2V0dGluZ3MuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCAxNTZjMTRiNGY1YWUxNmZjMzdhZmU1N2Q2
NTk4YThkYjI1MTg0ZGIzLi5lOTY2NTNkZjdhNWE4MTBhN2RmZWRhODNhZDNjNTM4NWM2MzVmN2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTQzLDYgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBIVE1MRGl2
RWxlbWVudDsKIAogY2xhc3MgVGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRy
YWNrQ3VlPiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKIHB1YmxpYzoKQEAgLTEwMSw2ICsxMDIsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0FjdGl2ZSgpOwogICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9v
bCk7CiAKKyAgICBQYXNzUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBnZXREaXNwbGF5VHJlZSgpOwor
CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdDsKIApAQCAtMTExLDcgKzExNCw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZD
b3VudGVkPFRleHRUcmFja0N1ZT46OmRlcmVmOwogCiBwcm90ZWN0ZWQ6Ci0KICAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCkBAIC0xMTksNiArMTIxLDggQEAg
cHJpdmF0ZToKICAgICBUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgaWQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBjb25zdCBTdHJpbmcmIHNldHRpbmdzLCBib29sIHBhdXNlT25FeGl0KTsKIAogICAgIHZv
aWQgcGFyc2VTZXR0aW5ncyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRldGVybWluZURpc3Bs
YXlQYXJhbWV0ZXJzKCk7CisKICAgICB2b2lkIGN1ZVdpbGxDaGFuZ2UoKTsKICAgICB2b2lkIGN1
ZURpZENoYW5nZSgpOwogCkBAIC0xNDksNiArMTUzLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNBY3RpdmU7CiAgICAgYm9vbCBtX3BhdXNlT25FeGl0OwogICAgIGJvb2wgbV9zbmFwVG9MaW5l
czsKKworICAgIGJvb2wgbV9kaXNwbGF5VHJlZUNoYW5nZWQ7CisgICAgUmVmUHRyPEhUTUxEaXZF
bGVtZW50PiBtX2Rpc3BsYXlUcmVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDI2ZjY5OTg1ZjYyMDk3YTBjNjYwY2JjNzg4NDc5NDIxNDNlNzQ0MGUuLjgxMWM1ZDM1NjI3
ZjAxZTliM2JiOWM3MmVhODIxZjU4ZDI2OWUwZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
Mi0wMy0wOCAgVmljdG9yIENhcmJ1bmUgIDx2Y2FyYnVuZUBhZG9iZS5jb20+CisKKyAgICAgICAg
VXBkYXRlZCBMYXlvdXRUZXN0cyBmb3IgYmFzaWMgcmVuZGVyaW5nIG9mIGN1ZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTc0NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtY29u
dHJvbHMuanM6CisgICAgICAgIChtZWRpYUNvbnRyb2xzRWxlbWVudCk6CisgICAgICAgICh0ZXh0
VHJhY2tEaXNwbGF5RWxlbWVudCk6CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLW11
dGFibGUtdGV4dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3Vl
LW5vdGhpbmctdG8tcmVuZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS90cmFjay90
cmFjay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS90cmFjay90
cmFjay1jdWUtcmVuZGVyaW5nLmh0bWw6CisKIDIwMTItMDMtMDcgIEtlbmljaGkgSXNoaWJhc2hp
ICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtXZWJTb2NrZXRdIFNob3VsZCByYWlz
ZSBTWU5UQVhfRVJSIHdoZW4gbWVzc2FnZSBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jb250cm9scy5qcyBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLWNvbnRyb2xzLmpzCmluZGV4IDQ0ODdkMTg5OWQwZjIwNWY0ZmIzMDE3
NDM1MDU3N2MxOTkzNDUxOGMuLmIyNDdjNmVjODg4MDQ3N2IwNjZjNzg4N2JmZTFlZTE5OTFmOTEz
OTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xzLmpzCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xzLmpzCkBAIC0yLDcgKzIsNiBAQAogZnVu
Y3Rpb24gbWVkaWFDb250cm9sc0VsZW1lbnQoZmlyc3QsIGlkKQogewogICAgIGZvciAodmFyIGVs
ZW1lbnQgPSBmaXJzdDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQubmV4dFNpYmxpbmcpIHsK
LQogICAgICAgICAvLyBOb3QgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWVkaWEgY29udHJvbHMgaGFz
IGEgc2hhZG93IHBzZXVkbyBJRCwgZWcuIHRoZQogICAgICAgICAvLyB0ZXh0IG5vZGVzIGZvciB0
aGUgdGltZSB2YWx1ZXMsIHNvIGd1YXJkIGFnYWluc3QgZXhjZXB0aW9ucy4KICAgICAgICAgdHJ5
IHsKQEAgLTMzLDExICszMiwyMiBAQCBmdW5jdGlvbiBtZWRpYUNvbnRyb2xzQnV0dG9uQ29vcmRp
bmF0ZXMoZWxlbWVudCwgaWQpCiAgICAgcmV0dXJuIG5ldyBBcnJheSh4LCB5KTsKIH0KIAotZnVu
Y3Rpb24gdGV4dFRyYWNrRGlzcGxheUVsZW1lbnQocGFyZW50RWxlbWVudCwgaWQpCitmdW5jdGlv
biB0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudChwYXJlbnRFbGVtZW50KQogewotICAgIHZhciBjb250
cm9sSUQgPSAiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLSIgKyBpZDsKLSAgICB2YXIgZGlzcGxh
eUVsZW1lbnQgPSBtZWRpYUNvbnRyb2xzRWxlbWVudChpbnRlcm5hbHMuc2hhZG93Um9vdChwYXJl
bnRFbGVtZW50KS5maXJzdENoaWxkLCBjb250cm9sSUQpOworICAgIHZhciB0ZXh0VHJhY2tDb250
YWluZXJJRCA9ICItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIjsKKyAgICB2YXIg
Y29udGFpbmVyRWxlbWVudCA9IG1lZGlhQ29udHJvbHNFbGVtZW50KGludGVybmFscy5zaGFkb3dS
b290KHBhcmVudEVsZW1lbnQpLmZpcnN0Q2hpbGQsICItd2Via2l0LW1lZGlhLXRleHQtdHJhY2st
Y29udGFpbmVyIik7CisKKyAgICBpZiAoIWNvbnRhaW5lckVsZW1lbnQpCisgICAgICAgIHRocm93
ICJGYWlsZWQgdG8gZmluZCB0ZXh0IHRyYWNrIGNvbnRhaW5lciBlbGVtZW50IjsKKworICAgIGlm
IChhcmd1bWVudHMubGVuZ3RoIDwgMikKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5lckVsZW1lbnQ7
CisKKyAgICB2YXIgY29udHJvbElEID0gIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay0iICsgYXJn
dW1lbnRzWzFdOworCisgICAgdmFyIGRpc3BsYXlFbGVtZW50ID0gbWVkaWFDb250cm9sc0VsZW1l
bnQoY29udGFpbmVyRWxlbWVudC5maXJzdENoaWxkLCBjb250cm9sSUQpOwogICAgIGlmICghZGlz
cGxheUVsZW1lbnQpCi0gICAgICAgIHRocm93ICJGYWlsZWQgdG8gZmluZCBtZWRpYSBjb250cm9s
IGVsZW1lbnQgSUQgJyIgKyBjb250cm9sSUQgKyAiJyI7CisgICAgICAgIHRocm93ICJObyB0ZXh0
IHRyYWNrIGN1ZSB3aXRoIGRpc3BsYXkgaWQgJyIgKyBjb250cm9sSUQgKyAiJyBpcyBjdXJyZW50
bHkgdmlzaWJsZSI7CisKICAgICByZXR1cm4gZGlzcGxheUVsZW1lbnQ7Ci19ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2stY3VlLW11dGFibGUtdGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay1jdWUtbXV0YWJsZS10ZXh0LWV4cGVjdGVkLnR4dAppbmRleCBjZWE5MGEwZjMx
YTMzOWY1MTY1MmZmZDZmNDQxZGQ3NjhiMDliMWI5Li44OTVmZjA1YTgwNjJjZjYyNGVjNDU0NGM0
NTU2ODc2OWZiYzk0YzAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay1jdWUtbXV0YWJsZS10ZXh0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay1jdWUtbXV0YWJsZS10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAg
VGVzdCB0aGF0IGN1ZSB0ZXh0IGlzIG11dGFibGUuCiAKICoqIFRlc3QgaW5pdGlhbCBjdWUgaW5m
bwogRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5hY3RpdmVDdWVzLmxlbmd0aCA9PSAnMCcpIE9L
Ci1FWFBFQ1RFRCAodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuaW5u
ZXJUZXh0ID09ICcnKSBPSworTm8gdGV4dCB0cmFjayBjdWUgd2l0aCBkaXNwbGF5IGlkICctd2Vi
a2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheScgaXMgY3VycmVudGx5IHZpc2libGUKIEVYUEVD
VEVEICh0ZXN0VHJhY2sudHJhY2suY3Vlc1swXS5zdGFydFRpbWUgPT0gJzEnKSBPSwogRVhQRUNU
RUQgKHRlc3RUcmFjay50cmFjay5jdWVzWzFdLnN0YXJ0VGltZSA9PSAnMycpIE9LCiBFWFBFQ1RF
RCAodGVzdFRyYWNrLnRyYWNrLmN1ZXNbMF0udGV4dCA9PSAnTG9yZW0gaXBzdW0gZG9sb3Igc2l0
IGFtZXQsJykgT0sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1
ZS1ub3RoaW5nLXRvLXJlbmRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay1jdWUtbm90aGluZy10by1yZW5kZXItZXhwZWN0ZWQudHh0CmluZGV4IGY2YTVmODgw
NjFkNzdiZDk5MTMxNzdiZWIzYzRlNzE1Y2JiNTVjODYuLjJlOGE3ODliZTMxMzY2ZDUyYmEzMDQ5
YTQ1ZTQ5ODFlYjRjMTEzNmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLWN1ZS1ub3RoaW5nLXRvLXJlbmRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stY3VlLW5vdGhpbmctdG8tcmVuZGVyLWV4cGVjdGVkLnR4dApAQCAt
Myw3ICszLDcgQEAgVGVzdCB0aGF0IGN1ZXMgYXJlIHJlbmRlcmVkIGFuZCByZW1vdmVkLgogRVZF
TlQoY2FucGxheXRocm91Z2gpCiBFVkVOVChzZWVrZWQpCiBFWFBFQ1RFRCAodmlkZW8uY3VycmVu
dFRpbWUudG9GaXhlZCgxKSA9PSAnMC41JykgT0sKLUVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJycpIE9LCitObyB0ZXh0IHRy
YWNrIGN1ZSB3aXRoIGRpc3BsYXkgaWQgJy13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5
JyBpcyBjdXJyZW50bHkgdmlzaWJsZQogCiBSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxLjUpCiBF
VkVOVChzZWVrZWQpCkBAIC0xNCw3ICsxNCw3IEBAIEVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJ0xvcmVtIGlwc3VtIGRvCiBS
VU4odmlkZW8uY3VycmVudFRpbWUgPSAyLjUpCiBFVkVOVChzZWVrZWQpCiBFWFBFQ1RFRCAodmlk
ZW8uY3VycmVudFRpbWUudG9GaXhlZCgxKSA9PSAnMi41JykgT0sKLUVYUEVDVEVEICh0ZXh0VHJh
Y2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJycpIE9LCitO
byB0ZXh0IHRyYWNrIGN1ZSB3aXRoIGRpc3BsYXkgaWQgJy13ZWJraXQtbWVkaWEtdGV4dC10cmFj
ay1kaXNwbGF5JyBpcyBjdXJyZW50bHkgdmlzaWJsZQogCiBSVU4odmlkZW8uY3VycmVudFRpbWUg
PSAzLjMpCiBFVkVOVChzZWVrZWQpCkBAIC0yNSw3ICsyNSw3IEBAIEVYUEVDVEVEICh0ZXh0VHJh
Y2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJ2NvbnNlY3Rl
dHVlciBhCiBSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjYpCiBFVkVOVChzZWVrZWQpCiBFWFBF
Q1RFRCAodmlkZW8uY3VycmVudFRpbWUudG9GaXhlZCgxKSA9PSAnMC42JykgT0sKLUVYUEVDVEVE
ICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0g
JycpIE9LCitObyB0ZXh0IHRyYWNrIGN1ZSB3aXRoIGRpc3BsYXkgaWQgJy13ZWJraXQtbWVkaWEt
dGV4dC10cmFjay1kaXNwbGF5JyBpcyBjdXJyZW50bHkgdmlzaWJsZQogCiBSVU4odmlkZW8uY3Vy
cmVudFRpbWUgPSA1LjkpCiBFVkVOVChzZWVrZWQpCkBAIC0zNiw3ICszNiw3IEBAIEVYUEVDVEVE
ICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0g
J3NlZCBkaWFtIG5vbnVtCiBSVU4odmlkZW8uY3VycmVudFRpbWUgPSA0LjQpCiBFVkVOVChzZWVr
ZWQpCiBFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUudG9GaXhlZCgxKSA9PSAnNC40JykgT0sK
LUVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5l
clRleHQgPT0gJycpIE9LCitObyB0ZXh0IHRyYWNrIGN1ZSB3aXRoIGRpc3BsYXkgaWQgJy13ZWJr
aXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5JyBpcyBjdXJyZW50bHkgdmlzaWJsZQogCiBSVU4o
dmlkZW8uY3VycmVudFRpbWUgPSA3LjkpCiBFVkVOVChzZWVrZWQpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0Cmlu
ZGV4IDFmMmNlZGZkMTExNjcyNmEzZDEwYjY4OTQzMmYwNDY4NDhkMzdkMjIuLjAzZDA0OWE2NTVl
NmI5M2I0MzYyMzEwMDY0ZGUxZTMyMTljYWVlNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CkBAIC0zMCwy
MiArMzAsMjIgQEAgRVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlz
cGxheScpLmlubmVyVGV4dCA9PSAnc2l0JykgT0sKIFRlc3QgdGhlIGN1ZSBkaXNwbGF5IGNvbG9y
cyBhbmQgZm9udC4KIFJVTih2aWRlby53aWR0aCA9IDMyMCkKIFJVTih2aWRlby5oZWlnaHQgPSAy
NDApCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2
aWRlbywgJ2NvbnRhaW5lcicpKS5mb250U2l6ZSA9PSAnMTJweCcpIE9LCitFWFBFQ1RFRCAoZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRTaXplID09
ICcxMnB4JykgT0sKIAogUlVOKHZpZGVvLndpZHRoID0gNjQwKQogUlVOKHZpZGVvLmhlaWdodCA9
IDQ4MCkKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50
KHZpZGVvLCAnY29udGFpbmVyJykpLmZvbnRTaXplID09ICcyNHB4JykgT0sKK0VYUEVDVEVEIChn
ZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udFNpemUg
PT0gJzI0cHgnKSBPSwogCiBSVU4odmlkZW8ud2lkdGggPSAxMjgwKQogUlVOKHZpZGVvLmhlaWdo
dCA9IDk2MCkKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVt
ZW50KHZpZGVvLCAnY29udGFpbmVyJykpLmZvbnRTaXplID09ICc0OHB4JykgT0sKK0VYUEVDVEVE
IChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udFNp
emUgPT0gJzQ4cHgnKSBPSwogCiBSVU4odmlkZW8ud2lkdGggPSAyNTYwKQogUlVOKHZpZGVvLmhl
aWdodCA9IDE0NDApCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudCh2aWRlbywgJ2NvbnRhaW5lcicpKS5mb250U2l6ZSA9PSAnNzJweCcpIE9LCitFWFBF
Q1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZv
bnRTaXplID09ICc3MnB4JykgT0sKIAotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRy
YWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjb250YWluZXInKSkuZm9udEZhbWlseSA9PSAnc2Fu
cy1zZXJpZicpIE9LCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudCh2aWRlbywgJ2NvbnRhaW5lcicpKS5jb2xvciA9PSAncmdiYSgyNTUsIDI1NSwgMjU1
LCAwKScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxl
bWVudCh2aWRlbykpLmZvbnRGYW1pbHkgPT0gJ3NhbnMtc2VyaWYnKSBPSworRVhQRUNURUQgKGdl
dENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciA9PSAn
cmdiYSgyNTUsIDI1NSwgMjU1LCAwKScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0
ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKSkuYmFja2dyb3VuZENvbG9y
ID09ICdyZ2JhKDAsIDAsIDAsIDAuNzk2ODc1KScpIE9LCiBFTkQgT0YgVEVTVAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwgYi9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwKaW5kZXggNjlh
MDljZjY1ZWI1OTdmODUzMzk2MjgzOWRmNjJkZmJkZDhjNzQ4Ny4uYzE3YjcxNzM1NGFiZjIwZTFh
YzM0ZDg1NDZiYmIxZmUxNTQzYjQ1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbApAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICAgICAg
cnVuKCJ2aWRlby53aWR0aCA9ICIgKyB3aWR0aCk7CiAgICAgICAgICAgICBydW4oInZpZGVvLmhl
aWdodCA9ICIgKyBoZWlnaHQpOwogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7
Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlz
cGxheUVsZW1lbnQodmlkZW8sICdjb250YWluZXInKSkuZm9udFNpemUiLCBwYXJzZUludChoZWln
aHQgKiAwLjA1KSArICJweCIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRl
ZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udFNpemUiLCBwYXJzZUlu
dChoZWlnaHQgKiAwLjA1KSArICJweCIpOwogICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsK
ICAgICAgICAgfQogCkBAIC0zMCw4ICszMCw4IEBACiAgICAgICAgICAgICB0ZXN0Rm9udFNpemUo
MTI4MCwgOTYwKTsKICAgICAgICAgICAgIHRlc3RGb250U2l6ZSgyNTYwLCAxNDQwKTsKIAotICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlF
bGVtZW50KHZpZGVvLCAnY29udGFpbmVyJykpLmZvbnRGYW1pbHkiLCAic2Fucy1zZXJpZiIpOwot
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3Bs
YXlFbGVtZW50KHZpZGVvLCAnY29udGFpbmVyJykpLmNvbG9yIiwgInJnYmEoMjU1LCAyNTUsIDI1
NSwgMCkiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0
VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRGYW1pbHkiLCAic2Fucy1zZXJpZiIpOwor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3Bs
YXlFbGVtZW50KHZpZGVvKSkuY29sb3IiLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIpOwogICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlF
bGVtZW50KHZpZGVvLCAnZGlzcGxheScpKS5iYWNrZ3JvdW5kQ29sb3IiLCAicmdiYSgwLCAwLCAw
LCAwLjc5Njg3NSkiKTsKIAogICAgICAgICAgICAgZW5kVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131107</attachid>
            <date>2012-03-09 14:21:15 -0800</date>
            <delta_ts>2012-03-11 16:10:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79746-20120310002112.patch</filename>
            <type>text/plain</type>
            <size>40944</size>
            <attacher name="Victor Carbune">vcarbune</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU4NzYzZGQ3OWQ2NGZm
ZjQ1MTlmYTdmM2ExZmRhZDNiOGMyYjM2Yy4uMjQwMDY5NzdkYTVkNjlmMDA5M2MzMDMyNjc5M2Mw
M2YyNDM2ZTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTAzLTA5ICBWaWN0
b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGFkb2JlLmNvbT4KKworICAgICAgICBUaGUgbWFpbiBjb2Rl
IHN0cnVjdHVyZSBmb3IgcGxhY2luZyBmdXR1cmUgdGV4dCB0cmFjayBjdWUgcmVuZGVyaW5nCisg
ICAgICAgIGNvZGUgYW5kIG1haW4gb3V0ZXIgcmVuZGVyaW5nIHN0ZXBzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3NDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE9ubHkgcmVm
YWN0b3JpbmcsIGJ1dCBzb21lIGNocm9taXVtIHRlc3RzIHJlcXVpcmUgcmViYXNlbGluaW5nCisg
ICAgICAgIGFuZCBoYXZlIGJlZW4gbWFya2VkIGFjY29yZGluZ2x5LgorCisgICAgICAgICogY3Nz
L21lZGlhQ29udHJvbHMuY3NzOgorICAgICAgICAoOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzKTog
Q2hhbmdlZCB0aGUgZGVmYXVsdCBkaXNwbGF5IHRvIC13ZWJraXQtYm94LCBhcworICAgICAgICBj
YXB0aW9ucyBuZWVkIHRvIGFsd2F5cyBiZSByZW5kZXJlZCBvbiB0b3Agb2YgdGhlIGNvbnRyb2xz
LCBpZiB0aGV5IGFyZSB2aXNpYmxlLgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsKToKKyAgICAg
ICAgRGVmYXVsdCBwb3NpdGlvbiBhdHRyaWJ1dGUgaXMgbm93IHJlbGF0aXZlLCBoYW5kbGVkIGJ5
IHRoZSBwYXJlbnQgLXdlYmtpdC1ib3gKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLXRl
eHQtdHJhY2stY29udGFpbmVyKTogVGhlIHBvc2l0aW9uIG9mIHRoZSBjb250YWluZXIgaXMKKyAg
ICAgICAgbm93IHJlbGF0aXZlLCBoYW5kbGVkIGJ5IC13ZWJraXQtYm94LgorICAgICAgICAodmlk
ZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5KTogQWRqdXN0ZWQgdGV4dCBjb2xv
ciB0byBtYXRjaAorICAgICAgICB0aGUgY29sb3IgcmVxdWlyZWQgaW4gdGhlIFdlYlZUVCBzcGVj
IChzZWN0aW9uIDMuNS4xICdjb2xvcicgcHJvcGVydHkpCisgICAgICAgICogY3NzL21lZGlhQ29u
dHJvbHNDaHJvbWl1bS5jc3M6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwpOgorICAgICAgICBE
ZWZhdWx0IHBvc2l0aW9uIGF0dHJpYnV0ZSBpcyBub3cgcmVsYXRpdmUsIGhhbmRsZWQgYnkgdGhl
IHBhcmVudCAtd2Via2l0LWJveAorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxFbGVtZW50
OjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQpOiBBZGRlZCBhIHRpbWVyCisgICAgICAgIGZvciB0
aGUgd2Via2l0IGZhZGUgb3V0IHRyYW5zaXRpb24gZXZlbnQuIFRoaXMgdGltZXIgaXMgcmVxdWly
ZWQgZm9yIHNldHRpbmcKKyAgICAgICAgdGhlIGRpc3BsYXkgcHJvcGVydHkgdG8gJ25vbmUnLCB3
aGVuIHRoZSBmYWRlIG91dCB0cmFuc2l0aW9uIGlzIG92ZXIuIE90aGVyd2lzZSwKKyAgICAgICAg
Y2FwdGlvbnMgd291bGQgbm90IGJlIGRpc3BsYXllZCBhdCB0aGUgYm90dG9tIG9mIHRoZSB2aWRl
by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6c3RhcnRUaW1l
cik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xQYW5lbEVsZW1lbnQ6OnN0b3BUaW1lcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojp0cmFuc2l0aW9uVGltZXJGaXJlZCk6IEFkZGVkLiBJ
ZiB0aGUgY3VycmVudAorICAgICAgICBzdGF0ZSBvZiB0aGUgY29udHJvbHMgaXMgdHJhbnNwYXJl
bnQsIHRoZSBkaXNwbGF5IHByb3BlcnR5IGlzIHNldCB0byAnbm9uZScuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6Om1ha2VPcGFxdWUpOiBUaGUgaW5saW5lIGRp
c3BsYXk6J25vbmUnIHByb3BlcnR5CisgICAgICAgIGlzIHJlbW92ZWQgYmVmb3JlIHRoZSBmYWRl
IGluIHRyYW5zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1l
bnQ6Om1ha2VUcmFuc3BhcmVudCk6IEFkZGVkIHRoZSB0aW1lciBzdGFydC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICBSZW1vdmVkIG1fYm90dG9tIGFz
IGl0IGlzIG5vdCBuZWVkZWQgYW55bW9yZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOiBBZGRlZC4gTWFpbgor
ICAgICAgICBmdW5jdGlvbiBmb3IgdGhlIHJlbmRlcmluZyBydWxlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKTog
VGhlIGJvdHRvbSBwb3NpdGlvbgorICAgICAgICBuZWVkcyBub3QgdG8gYmUgc2V0IGFueW1vcmUu
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAg
KE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudCk6IEFkZGVkIHRpbWVyIGludGVybmFscy4KKyAgICAg
ICAgKE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOiBBZGRlZCB1cGRhdGVE
aXNwbGF5KCkgYW5kIHJlbW92ZWQgdW51c2VkCisgICAgICAgIHZhcmlhYmxlcy4KKworICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQuY3BwOiBSZW1vdmVkIG1fdGV4dFRyYWNrRGlzcGxheQorICAgICAgICBhbmQgZHVwbGljYXRl
ZCBjb2RlIHdpdGggTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bSAob25seSBtaW5pbXVt
CisgICAgICAgIGZ1bmN0aW9uIGNhbGxzIHRvIHRoZSBtYWluIHRleHQgdHJhY2sgY29udGFpbmVy
KQorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFJvb3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50
OjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OnVwZGF0ZVRleHRUcmFja0Rpc3BsYXkpOgorCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5jcHA6IFJlbW92
ZWQgbV90ZXh0VHJhY2tEaXNwbGF5CisgICAgICAgIGFuZCBkdXBsaWNhdGUgY29kZSB3aXRoIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50IChvbmx5IG1pbmltdW0gZnVuY3Rpb24gY2FsbHMKKyAgICAg
ICAgdG8gdGhlIG1haW4gdGV4dCB0cmFjayBjb250YWluZXIgcmVtYWluZWQpCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpNZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50Q2hyb21pdW06OnNldE1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnVwZGF0ZVRl
eHRUcmFja0Rpc3BsYXkpOgorCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHA6IEVuaGFuY2VkIHN0cnVjdHVyZSBmb3Igc3VwcG9ydGluZyBt
b3JlIGNvbXBsZXgKKyAgICAgICAgcmVuZGVyaW5nIHJlcXVpcmVkIGJ5IHRoZSBXZWJWVFQgc3Bl
Yy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlRGlkQ2hhbmdlKTogTWFyayB0aGUgZGlzcGxh
eSB0cmVlIGFzIG9ic29sZXRlLCBzbyB0aGF0CisgICAgICAgIGl0IG5lZWRzIHRvIGJlIHJlLWNv
bXB1dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRJc0FjdGl2ZSk6IFRo
ZSBkaXNwbGF5IHRyZWUgbmVlZHMgdG8gYmUgcmVtb3ZlZCBhcworICAgICAgICBzb29uIGFzIHRo
ZSBjdWUgYmVjb21lcyBpbmFjdGl2ZS4gQWRqdXN0ZWQgdGhpcyBtZXRob2QgdG8gc3VwcG9ydCB0
aGUgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlOjpkZXRlcm1pbmVEaXNwbGF5UGFyYW1ldGVycyk6IEFkZGVkLiBUaGlzIG1l
dGhvZCB3aWxsIGhvbGQKKyAgICAgICAgbWFpbiBwb3NpdGlvbmluZyBwYXJhbWV0ZXIgY29tcHV0
YXRpb25zIGZvciBhIFRleHRUcmFja0N1ZQorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldERpc3BsYXlUcmVlKTogQWRkZWQuIFRoaXMgbWV0aG9k
IHJldHVybnMgdGhlIHJvb3Qgbm9kZQorICAgICAgICBvZiB0aGUgQ1NTIGJveGVzIHRoYXQgbmVl
ZCB0byBiZSBkaXNwbGF5ZWQgb24gdG9wIG9mIHRoZSB2aWRlbywgZm9yIHRoZSBjdXJyZW50Cisg
ICAgICAgIGluc3RhbmNlLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHRUcmFja0N1ZSk6CisKIDIwMTItMDMtMDkg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW51cCBpbmNE
T01UcmVlVmVyc2lvbiBjYWxsZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVk
aWFDb250cm9scy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MKaW5k
ZXggMzFjOWQ0MzI2ZTk0ZTAzOTM0YzU4Y2UyNWJkZGJlMzJkMjc5YTY5ZS4uYjgxMzMyZmM3NjEz
YTI1OWY5N2U2MTFkNDc5M2Y0YTQyMWQ2MDQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL21lZGlhQ29udHJvbHMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRy
b2xzLmNzcwpAQCAtMzcsOCArMzcsMTEgQEAgYXVkaW8gewogICAgIHdpZHRoOiBpbmhlcml0Owog
ICAgIGhlaWdodDogaW5oZXJpdDsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZGlzcGxh
eTogYmxvY2s7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgZGlyZWN0aW9uOiBsdHI7
CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0OworICAgIC13ZWJraXQtYm94LXBhY2s6IGVu
ZDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogfQogCiBhdWRpbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFu
ZWwgewpAQCAtNDYsNyArNDksNyBAQCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5l
bCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgewogICAgIC13ZWJraXQtYm94
LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAg
IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICBib3R0b206IDA7CiAgICAgd2lkdGg6IDEwMCU7CiAg
ICAgei1pbmRleDogMDsKQEAgLTIwMSwxNSArMjA0LDE2IEBAIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1heC1idXR0b24sIHZpZGVvOjotd2Via2l0LW1l
ZGlhCiB9CiAKIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIHsKLSAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIHdpZHRo
OiAxMDAlOwogICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgcGFkZGluZy1ib3R0b206IDVweDsK
IAogICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7
Ci0gICAgCisKICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgIHdvcmQtc3BhY2luZzog
bm9ybWFsOwogICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwpAQCAtMjIyLDYgKzIyNiw2IEBAIHZp
ZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIHsKIHZpZGVvOjotd2Via2l0
LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSB7CiAgICAgZGlzcGxheTogaW5saW5lOwogICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsKLSAgICBjb2xvcjogeWVsbG93Owor
ICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwogICAgIHBhZGRpbmc6IDBweCAycHg7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0Nocm9taXVt
LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCmluZGV4
IDUwOGQ3NDQ1ZTJkYTBmODdiNmVhNjJlZTljZDVmYTE0NDJiMjkwOWEuLjVmYjYyY2MzNGRiMTFl
NjcwZWIxMGUxYjUyNTZmYzI2ZWUxNGQ4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRp
YUNvbnRyb2xzQ2hyb21pdW0uY3NzCkBAIC00MSw3ICs0MSw3IEBAIGF1ZGlvOi13ZWJraXQtZnVs
bC1wYWdlLW1lZGlhLCB2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSB7CiAKIGF1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCB7CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIG92ZXJmbG93OiB2aXNpYmxl
OwogICAgIGJvdHRvbTogMDsKICAgICB3aWR0aDogMTAwJTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA4Y2E2NmE0Yjli
OWFiNDRlNWE2ODY2NmU2MjU0NGIyNzMzNmE3Nzk3Li5jOTdiODRmYWE0MTA0MGVkNWQ0NzExNzFj
Zjg5YTFmZWVjODA2YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0
cmluZ3MuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgpAQCAtNTIsNiArNTMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJU
ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA3LDYgKzEwOSw3IEBAIGlubGlu
ZSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX2NhbkJlRHJhZ2dlZChmYWxzZSkKICAgICAsIG1faXNC
ZWluZ0RyYWdnZWQoZmFsc2UpCiAgICAgLCBtX29wYXF1ZSh0cnVlKQorICAgICwgbV90cmFuc2l0
aW9uVGltZXIodGhpcywgJk1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6dHJhbnNpdGlvblRpbWVy
RmlyZWQpCiB7CiB9CiAKQEAgLTE3Myw2ICsxNzYsMzIgQEAgdm9pZCBNZWRpYUNvbnRyb2xQYW5l
bEVsZW1lbnQ6OmVuZERyYWcoKQogICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVy
aW5nTW91c2VFdmVudHNOb2RlKDApOwogfQogCit2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dDo6c3RhcnRUaW1lcigpCit7CisgICAgc3RvcFRpbWVyKCk7CisKKyAgICAvLyBUaGUgdGltZXIg
aXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBwcm9wZXJ0eSBkaXNwbGF5Oidub25lJyBvbiB0aGUgcGFu
ZWwsCisgICAgLy8gc3VjaCB0aGF0IGNhcHRpb25zIGFyZSBjb3JyZWN0bHkgZGlzcGxheWVkIGF0
IHRoZSBib3R0b20gb2YgdGhlIHZpZGVvCisgICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgZmFkZW91
dCB0cmFuc2l0aW9uLgorICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCktPnBhZ2UoKSA/
IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVkaWFDb250cm9sc0ZhZGVPdXREdXJhdGlv
bigpIDogMDsKKyAgICBtX3RyYW5zaXRpb25UaW1lci5zdGFydE9uZVNob3QoZHVyYXRpb24pOwor
fQorCit2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6c3RvcFRpbWVyKCkKK3sKKyAgICBp
ZiAobV90cmFuc2l0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90cmFuc2l0aW9uVGlt
ZXIuc3RvcCgpOworfQorCisKK3ZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojp0cmFuc2l0
aW9uVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+KikKK3sKKyAgICBp
ZiAoIW1fb3BhcXVlKQorICAgICAgICBoaWRlKCk7CisKKyAgICBzdG9wVGltZXIoKTsKK30KKwog
dm9pZCBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKGNvbnN0IExheW91dFBv
aW50JiBwb3NpdGlvbikKIHsKICAgICBkb3VibGUgbGVmdCA9IHBvc2l0aW9uLngoKTsKQEAgLTIx
Miw2ICsyNDEsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6bWFrZU9wYXF1ZSgp
CiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHksIDEuMCwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogCiAgICAgbV9vcGFxdWUgPSB0cnVlOworCisg
ICAgc2hvdygpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6bWFrZVRyYW5z
cGFyZW50KCkKQEAgLTIyNCw2ICsyNTUsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dDo6bWFrZVRyYW5zcGFyZW50KCkKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5T3BhY2l0eSwgMC4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAKICAgICBt
X29wYXF1ZSA9IGZhbHNlOworCisgICAgc3RhcnRUaW1lcigpOwogfQogCiB2b2lkIE1lZGlhQ29u
dHJvbFBhbmVsRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC0x
MTY1LDcgKzExOTgsNiBAQCB2b2lkIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Omxh
eW91dCgpCiBpbmxpbmUgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQogICAgICwgbV9mb250U2l6ZSgwKQot
ICAgICwgbV9ib3R0b20oMCkKIHsKIH0KIApAQCAtMTE4NywxNiArMTIxOSw5MSBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29ucwogICAgIHJldHVybiBpZDsKIH0KIAordm9pZCBNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKK3sKKyAgICBMT0coTWVk
aWEsICJNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5
KCkiKTsKKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVk
aWFFbGVtZW50KHRoaXMpOworCisgICAgLy8gMS4gSWYgdGhlIG1lZGlhIGVsZW1lbnQgaXMgYW4g
YXVkaW8gZWxlbWVudCwgb3IgaXMgYW5vdGhlciBwbGF5YmFjaworICAgIC8vIG1lY2hhbmlzbSB3
aXRoIG5vIHJlbmRlcmluZyBhcmVhLCBhYm9ydCB0aGVzZSBzdGVwcy4gVGhlcmUgaXMgbm90aGlu
ZyB0bworICAgIC8vIHJlbmRlci4KKyAgICBpZiAoIW1lZGlhRWxlbWVudC0+aXNWaWRlbygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyAyLiBMZXQgdmlkZW8gYmUgdGhlIG1lZGlhIGVsZW1l
bnQgb3Igb3RoZXIgcGxheWJhY2sgbWVjaGFuaXNtLgorICAgIEhUTUxWaWRlb0VsZW1lbnQqIHZp
ZGVvID0gc3RhdGljX2Nhc3Q8SFRNTFZpZGVvRWxlbWVudCo+KG1lZGlhRWxlbWVudCk7CisKKyAg
ICAvLyAzLiBMZXQgb3V0cHV0IGJlIGFuIGVtcHR5IGxpc3Qgb2YgYWJzb2x1dGVseSBwb3NpdGlv
bmVkIENTUyBibG9jayBib3hlcy4KKyAgICBWZWN0b3I8UmVmUHRyPEhUTUxEaXZFbGVtZW50PiA+
IG91dHB1dDsKKworICAgIC8vIDQuIElmIHRoZSB1c2VyIGFnZW50IGlzIGV4cG9zaW5nIGEgdXNl
ciBpbnRlcmZhY2UgZm9yIHZpZGVvLCBhZGQgdG8KKyAgICAvLyBvdXRwdXQgb25lIG9yIG1vcmUg
Y29tcGxldGVseSB0cmFuc3BhcmVudCBwb3NpdGlvbmVkIENTUyBibG9jayBib3hlcyB0aGF0Cisg
ICAgLy8gY292ZXIgdGhlIHNhbWUgcmVnaW9uIGFzIHRoZSB1c2VyIGludGVyZmFjZS4KKworICAg
IC8vIDUuIElmIHRoZSBsYXN0IHRpbWUgdGhlc2UgcnVsZXMgd2VyZSBydW4sIHRoZSB1c2VyIGFn
ZW50IHdhcyBub3QgZXhwb3NpbmcKKyAgICAvLyBhIHVzZXIgaW50ZXJmYWNlIGZvciB2aWRlbywg
YnV0IG5vdyBpdCBpcywgbGV0IHJlc2V0IGJlIHRydWUuIE90aGVyd2lzZSwKKyAgICAvLyBsZXQg
cmVzZXQgYmUgZmFsc2UuCisKKyAgICAvLyBUaGVyZSBpcyBub3RoaW5nIHRvIGJlIGRvbmUgZXhw
bGljaXRseSBmb3IgNHRoIGFuZCA1dGggc3RlcHMsIGFzCisgICAgLy8gZXZlcnl0aGluZyBpcyBo
YW5kbGVkIHRocm91Z2ggQ1NTLiBUaGUgY2FwdGlvbiBib3ggaXMgb24gdG9wIG9mIHRoZQorICAg
IC8vIGNvbnRyb2xzIGJveCwgaW4gYSBjb250YWluZXIgc2V0IHdpdGggdGhlIC13ZWJraXQtYm94
IGRpc3BsYXkgcHJvcGVydHkuCisKKyAgICAvLyA2LiBMZXQgdHJhY2tzIGJlIHRoZSBzdWJzZXQg
b2YgdmlkZW8ncyBsaXN0IG9mIHRleHQgdHJhY2tzIHRoYXQgaGF2ZSBhcworICAgIC8vIHRoZWly
IHJ1bGVzIGZvciB1cGRhdGluZyB0aGUgdGV4dCB0cmFjayByZW5kZXJpbmcgdGhlc2UgcnVsZXMg
Zm9yCisgICAgLy8gdXBkYXRpbmcgdGhlIGRpc3BsYXkgb2YgV2ViVlRUIHRleHQgdHJhY2tzLCBh
bmQgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzCisgICAgLy8gc2hvd2luZyBvciBzaG93aW5nIGJ5
IGRlZmF1bHQuCisgICAgLy8gNy4gTGV0IGN1ZXMgYmUgYW4gZW1wdHkgbGlzdCBvZiB0ZXh0IHRy
YWNrIGN1ZXMuCisgICAgLy8gOC4gRm9yIGVhY2ggdHJhY2sgdHJhY2sgaW4gdHJhY2tzLCBhcHBl
bmQgdG8gY3VlcyBhbGwgdGhlIGN1ZXMgZnJvbQorICAgIC8vIHRyYWNrJ3MgbGlzdCBvZiBjdWVz
IHRoYXQgaGF2ZSB0aGVpciB0ZXh0IHRyYWNrIGN1ZSBhY3RpdmUgZmxhZyBzZXQuCisgICAgQ3Vl
TGlzdCBhY3RpdmVDdWVzID0gdmlkZW8tPmN1cnJlbnRseUFjdGl2ZUN1ZXMoKTsKKworICAgIC8v
IDkuIElmIHJlc2V0IGlzIGZhbHNlLCB0aGVuLCBmb3IgZWFjaCB0ZXh0IHRyYWNrIGN1ZSBjdWUg
aW4gY3VlczogaWYgY3VlJ3MKKyAgICAvLyB0ZXh0IHRyYWNrIGN1ZSBkaXNwbGF5IHN0YXRlIGhh
cyBhIHNldCBvZiBDU1MgYm94ZXMsIHRoZW4gYWRkIHRob3NlIGJveGVzCisgICAgLy8gdG8gb3V0
cHV0LCBhbmQgcmVtb3ZlIGN1ZSBmcm9tIGN1ZXMuCisKKyAgICAvLyBUaGVyZSBpcyBub3RoaW5n
IGV4cGxpY2l0bHkgdG8gYmUgZG9uZSBoZXJlLCBhcyBhbGwgdGhlIGNhY2hpbmcgb2NjdXJzCisg
ICAgLy8gd2l0aGluIHRoZSBUZXh0VHJhY2tDdWUgaW5zdGFuY2UgaXRzZWxmLiBJZiBwYXJhbWV0
ZXJzIG9mIHRoZSBjdWUgY2hhbmdlLAorICAgIC8vIHRoZSBkaXNwbGF5IHRyZWUgaXMgY2xlYXJl
ZC4KKworICAgIC8vIDEwLiBGb3IgZWFjaCB0ZXh0IHRyYWNrIGN1ZSBjdWUgaW4gY3VlcyB0aGF0
IGhhcyBub3QgeWV0IGhhZAorICAgIC8vIGNvcnJlc3BvbmRpbmcgQ1NTIGJveGVzIGFkZGVkIHRv
IG91dHB1dCwgaW4gdGV4dCB0cmFjayBjdWUgb3JkZXIsIHJ1biB0aGUKKyAgICAvLyBmb2xsb3dp
bmcgc3Vic3RlcHM6CisKKyAgICAvLyBTaW1wbGUgcmVuZGVyZXIgZm9yIG5vdy4KKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFjdGl2ZUN1ZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgVGV4
dFRyYWNrQ3VlKiBjdWUgPSBhY3RpdmVDdWVzW2ldLmRhdGEoKTsKKworICAgICAgICBBU1NFUlQo
Y3VlLT5pc0FjdGl2ZSgpKTsKKyAgICAgICAgaWYgKCFjdWUtPnRyYWNrKCkgfHwgY3VlLT50cmFj
aygpLT5tb2RlKCkgIT0gVGV4dFRyYWNrOjpTSE9XSU5HKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBkaXNwbGF5VHJlZSA9IGN1ZS0+Z2V0
RGlzcGxheVRyZWUoKTsKKworICAgICAgICAvLyBBcHBlbmQgb25seSBuZXcgZGlzcGxheSB0cmVl
cy4KKyAgICAgICAgaWYgKCFjb250YWlucyhkaXNwbGF5VHJlZS5nZXQoKSkgJiYgZGlzcGxheVRy
ZWUtPmhhc0NoaWxkTm9kZXMoKSkKKyAgICAgICAgICAgIGFwcGVuZENoaWxkKGRpc3BsYXlUcmVl
LCBBU1NFUlRfTk9fRVhDRVBUSU9OLCB0cnVlKTsKKworICAgICAgICAvLyBUaGUgZGlzcGxheSB0
cmVlIG9mIGEgY3VlIGlzIHJlbW92ZWQgd2hlbiB0aGUgYWN0aXZlIGZsYWcgb2YgdGhlIGN1ZSBp
cyB1bnNldC4KKworICAgICAgICAvLyBGSVhNRShCVUcgNzk3NTApOiBSZW5kZXIgdGhlIFRleHRU
cmFja0N1ZSB3aGVuIHNuYXAtdG8tbGluZXMgaXMgc2V0LgorICAgICAgICAvLyBGSVhNRShCVUcg
Nzk3NTEpOiBSZW5kZXIgdGhlIFRleHRUcmFja0N1ZSB3aGVuIHNuYXAtdG8tbGluZXMgaXMgbm90
IHNldC4KKyAgICB9CisKKyAgICAvLyAxMS4gUmV0dXJuIG91dHB1dC4KKyAgICBoYXNDaGlsZE5v
ZGVzKCkgPyBzaG93KCkgOiBoaWRlKCk7Cit9CisKIHN0YXRpYyBjb25zdCBmbG9hdCBtaW1pbXVt
Rm9udFNpemUgPSAxNjsKIHN0YXRpYyBjb25zdCBmbG9hdCB2aWRlb0hlaWdodEZvbnRTaXplUGVy
Y2VudGFnZSA9IC4wNTsKIHN0YXRpYyBjb25zdCBmbG9hdCB0cmFja0JvdHRvbU11bHRpcGxpZXIg
PSAuOTsKLSAgICAKKwogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
Ojp1cGRhdGVTaXplcygpCiB7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0g
dG9QYXJlbnRNZWRpYUVsZW1lbnQodGhpcyk7CiAgICAgaWYgKCFtZWRpYUVsZW1lbnQgfHwgIW1l
ZGlhRWxlbWVudC0+cmVuZGVyZXIoKSB8fCAhbWVkaWFFbGVtZW50LT5yZW5kZXJlcigpLT5pc1Zp
ZGVvKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIEludFJlY3QgdmlkZW9Cb3ggPSB0
b1JlbmRlclZpZGVvKG1lZGlhRWxlbWVudC0+cmVuZGVyZXIoKSktPnZpZGVvQm94KCk7CiAgICAg
aWYgKG1fdmlkZW9EaXNwbGF5U2l6ZSA9PSB2aWRlb0JveCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTIwNywzMyArMTMxNCw5IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxl
bWVudDo6dXBkYXRlU2l6ZXMoKQogICAgICAgICBtX2ZvbnRTaXplID0gZm9udFNpemU7CiAgICAg
ICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgU3RyaW5nOjpu
dW1iZXIoZm9udFNpemUpICsgInB4Iik7CiAgICAgfQotCi0gICAgTGF5b3V0VW5pdCBib3R0b20g
PSBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihtX3ZpZGVvRGlzcGxheVNpemUueSgpICsgbV92aWRl
b0Rpc3BsYXlTaXplLmhlaWdodCgpIC0gKG1fdmlkZW9EaXNwbGF5U2l6ZS5oZWlnaHQoKSAqIHRy
YWNrQm90dG9tTXVsdGlwbGllcikpOwotICAgIGlmIChib3R0b20gIT0gbV9ib3R0b20pIHsKLSAg
ICAgICAgbV9ib3R0b20gPSBib3R0b207Ci0gICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlCb3R0b20sIFN0cmluZzo6bnVtYmVyKHJvdW5kVG9JbnQoYm90dG9tKSkgKyAi
cHgiKTsKLSAgICB9Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTWVk
aWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRleHRUcmFja0Rp
c3BsYXlFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbEVsZW1l
bnQoZG9jdW1lbnQpCi17CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrRGlz
cGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250
cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQoZG9jdW1lbnQpKTsKLX0KLQotY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudDo6c2hhZG93UHNldWRv
SWQoKSBjb25zdAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwg
KCItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSIpKTsKLSAgICByZXR1cm4gaWQ7Ci19
Ci0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShWSURFT19UUkFDSykKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRleCA1MjA1NWE0NDQ2M2YzMTlmNDk4MTA5OWI3ODQ4
YWUxYzI3NGMyYzJmLi5kY2UyNmMxYzg4YWZkMjNhZDlkZmU3YTEyM2EzMmY0M2UxNWVjNjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmgKQEAgLTEyMiw2ICsxMjIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRpbnVlRHJhZyhj
b25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbik7CiAgICAgdm9pZCBlbmREcmFnKCk7CiAK
KyAgICB2b2lkIHN0YXJ0VGltZXIoKTsKKyAgICB2b2lkIHN0b3BUaW1lcigpOworICAgIHZvaWQg
dHJhbnNpdGlvblRpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiopOwor
CiAgICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBMYXlvdXRQb2ludCYpOwogCiAgICAgYm9vbCBt
X2NhbkJlRHJhZ2dlZDsKQEAgLTEyOSw2ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9v
cGFxdWU7CiAgICAgTGF5b3V0UG9pbnQgbV9kcmFnU3RhcnRQb3NpdGlvbjsKICAgICBMYXlvdXRQ
b2ludCBtX2RyYWdTdGFydEV2ZW50TG9jYXRpb247CisKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xQ
YW5lbEVsZW1lbnQ+IG1fdHJhbnNpdGlvblRpbWVyOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtNDkxLDkgKzQ5Nyw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQogY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudCA6
IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKLSAgICAKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQqKTsKLSAgICAKKworICAgIHZvaWQgdXBkYXRlRGlzcGxheSgpOwogICAgIHZvaWQg
dXBkYXRlU2l6ZXMoKTsKIAogcHJpdmF0ZToKQEAgLTUwNSwyMyArNTExLDkgQEAgcHJpdmF0ZToK
IAogICAgIEludFJlY3QgbV92aWRlb0Rpc3BsYXlTaXplOwogICAgIGZsb2F0IG1fZm9udFNpemU7
Ci0gICAgTGF5b3V0VW5pdCBtX2JvdHRvbTsKIH07CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQgOiBw
dWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCop
OwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50KERv
Y3VtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlU
eXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFUZXh0VHJhY2tEaXNwbGF5OyB9Ci0gICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci19OwogI2VuZGlm
Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQuY3BwCmluZGV4IGQyNmZlMjA5ZWU3NTA1MjhiNWY5ZmM2NjlhNmMwMGY0OGVl
MWI1M2QuLjIzODMyMDBmM2FjODk4ZjlkNTJmZjA1YTFkOTNmY2RkNWViNTc4YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVu
dC5jcHAKQEAgLTczLDcgKzczLDYgQEAgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fcGFuZWwoMCkKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBtX3RleHREaXNwbGF5Q29udGFpbmVyKDApCi0g
ICAgLCBtX3RleHRUcmFja0Rpc3BsYXkoMCkKICNlbmRpZgogICAgICwgbV9oaWRlRnVsbHNjcmVl
bkNvbnRyb2xzVGltZXIodGhpcywgJk1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpoaWRlRnVsbHNj
cmVlbkNvbnRyb2xzVGltZXJGaXJlZCkKICAgICAsIG1faXNNb3VzZU92ZXJDb250cm9scyhmYWxz
ZSkKQEAgLTI3Nyw4ICsyNzYsNiBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpzZXRN
ZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKiBjb250cgogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKICAgICBpZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikKICAgICAgICAg
bV90ZXh0RGlzcGxheUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwot
ICAgIGlmIChtX3RleHRUcmFja0Rpc3BsYXkpCi0gICAgICAgIG1fdGV4dFRyYWNrRGlzcGxheS0+
c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwogI2VuZGlmCiAgICAgcmVzZXQoKTsKIH0K
QEAgLTYwNCwxNiArNjAxLDggQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6Y3JlYXRl
VGV4dFRyYWNrRGlzcGxheSgpCiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ+IHRleHREaXNwbGF5Q29udGFpbmVyID0gTWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgIG1fdGV4dERpc3BsYXlD
b250YWluZXIgPSB0ZXh0RGlzcGxheUNvbnRhaW5lci5nZXQoKTsKIAotICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudD4gdGV4dERpc3BsYXkgPSBNZWRpYUNvbnRy
b2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIG1fdGV4
dERpc3BsYXlDb250YWluZXItPmhpZGUoKTsKLSAgICBtX3RleHRUcmFja0Rpc3BsYXkgPSB0ZXh0
RGlzcGxheS5nZXQoKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgdGV4dERpc3BsYXlD
b250YWluZXItPmFwcGVuZENoaWxkKHRleHREaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwot
ICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gSW5zZXJ0IGl0IGJlZm9yZSB0
aGUgZmlyc3QgY29udHJvbGxlciBlbGVtZW50IHNvIGl0IGFsd2F5cyBkaXNwbGF5cyBiZWhpbmQg
dGhlIGNvbnRyb2xzLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgaW5zZXJ0QmVmb3JlKHRl
eHREaXNwbGF5Q29udGFpbmVyLnJlbGVhc2UoKSwgbV9wYW5lbCwgZWMsIHRydWUpOwogfQogCkBA
IC02MzYsMjggKzYyNSw4IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OnVwZGF0ZVRl
eHRUcmFja0Rpc3BsYXkoKQogICAgIGlmICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikKICAgICAg
ICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogCi0gICAgQ3VlTGlzdCBhY3RpdmVDdWVzID0g
dG9QYXJlbnRNZWRpYUVsZW1lbnQobV90ZXh0RGlzcGxheUNvbnRhaW5lciktPmN1cnJlbnRseUFj
dGl2ZUN1ZXMoKTsKLSAgICBtX3RleHRUcmFja0Rpc3BsYXktPnJlbW92ZUNoaWxkcmVuKCk7Ci0g
ICAgYm9vbCBub3RoaW5nVG9EaXNwbGF5ID0gdHJ1ZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFjdGl2ZUN1ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dFRyYWNrQ3VlKiBjdWUg
PSBhY3RpdmVDdWVzW2ldLmRhdGEoKTsKLSAgICAgICAgQVNTRVJUKGN1ZS0+aXNBY3RpdmUoKSk7
Ci0gICAgICAgIGlmICghY3VlLT50cmFjaygpIHx8IGN1ZS0+dHJhY2soKS0+bW9kZSgpICE9IFRl
eHRUcmFjazo6U0hPV0lORykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIFN0cmlu
ZyBjdWVUZXh0ID0gY3VlLT50ZXh0KCk7Ci0gICAgICAgIGlmICghY3VlVGV4dC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIGlmICghbm90aGluZ1RvRGlzcGxheSkKLSAgICAgICAgICAgICAgICBt
X3RleHRUcmFja0Rpc3BsYXktPmFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQo
SFRNTE5hbWVzOjpiclRhZywgZmFsc2UpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAg
ICAgIG1fdGV4dFRyYWNrRGlzcGxheS0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS0+Y3JlYXRlVGV4
dE5vZGUoY3VlVGV4dCksIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgICAgICAgICAgbm90aGlu
Z1RvRGlzcGxheSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQorICAgIG1fdGV4dERpc3BsYXlD
b250YWluZXItPnVwZGF0ZURpc3BsYXkoKTsKIAotICAgIGlmICghbm90aGluZ1RvRGlzcGxheSkK
LSAgICAgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+c2hvdygpOwotICAgIGVsc2UKLSAgICAg
ICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+aGlkZSgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bS5jcHAKaW5kZXggZTY5ZDgxOGQzYTE3MzU5N2YyZGJiZmFhYWJkYzEzMWQ2
ODE1OWU4Yi4uNjYzZTUxZjgwZjZmYmI5ZjFiYzA3MzkxZWM0ZjlkY2Y0YzI3ZDU4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
Um9vdEVsZW1lbnRDaHJvbWl1bS5jcHAKQEAgLTU4LDcgKzU4LDYgQEAgTWVkaWFDb250cm9sUm9v
dEVsZW1lbnRDaHJvbWl1bTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bShEb2N1bWVu
dCogZG9jdW0KICAgICAsIG1fcGFuZWwoMCkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
LCBtX3RleHREaXNwbGF5Q29udGFpbmVyKDApCi0gICAgLCBtX3RleHRUcmFja0Rpc3BsYXkoMCkK
ICNlbmRpZgogICAgICwgbV9vcGFxdWUodHJ1ZSkKICAgICAsIG1faXNNb3VzZU92ZXJDb250cm9s
cyhmYWxzZSkKQEAgLTE1OCw4ICsxNTcsNiBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
Q2hyb21pdW06OnNldE1lZGlhQ29udHJvbGxlcihNZWRpYUNvbnRyb2xsZXJJbnRlcmZhYwogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAobV90ZXh0RGlzcGxheUNvbnRhaW5lcikKICAg
ICAgICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xs
ZXIpOwotICAgIGlmIChtX3RleHRUcmFja0Rpc3BsYXkpCi0gICAgICAgIG1fdGV4dFRyYWNrRGlz
cGxheS0+c2V0TWVkaWFDb250cm9sbGVyKGNvbnRyb2xsZXIpOwogI2VuZGlmCiAgICAgcmVzZXQo
KTsKIH0KQEAgLTMzNSwxNiArMzMyLDggQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENo
cm9taXVtOjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCkKICAgICBSZWZQdHI8TWVkaWFDb250cm9s
VGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4gdGV4dERpc3BsYXlDb250YWluZXIgPSBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAg
bV90ZXh0RGlzcGxheUNvbnRhaW5lciA9IHRleHREaXNwbGF5Q29udGFpbmVyLmdldCgpOwogCi0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50PiB0ZXh0RGlzcGxh
eSA9IE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQo
KSk7Ci0gICAgbV90ZXh0RGlzcGxheUNvbnRhaW5lci0+aGlkZSgpOwotICAgIG1fdGV4dFRyYWNr
RGlzcGxheSA9IHRleHREaXNwbGF5LmdldCgpOwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAg
ICB0ZXh0RGlzcGxheUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodGV4dERpc3BsYXkucmVsZWFzZSgp
LCBlYywgdHJ1ZSk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm47Ci0KICAgICAvLyBJbnNl
cnQgaXQgYmVmb3JlIHRoZSBmaXJzdCBjb250cm9sbGVyIGVsZW1lbnQgc28gaXQgYWx3YXlzIGRp
c3BsYXlzIGJlaGluZCB0aGUgY29udHJvbHMuCisgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICBp
bnNlcnRCZWZvcmUodGV4dERpc3BsYXlDb250YWluZXIucmVsZWFzZSgpLCBtX3BhbmVsLCBlYywg
dHJ1ZSk7CiB9CiAKQEAgLTM2NywzMSArMzU2LDEwIEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVs
ZW1lbnRDaHJvbWl1bTo6dXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpCiAgICAgaWYgKCFtX3RleHRE
aXNwbGF5Q29udGFpbmVyKQogICAgICAgICBjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAKLSAg
ICBDdWVMaXN0IGFjdGl2ZUN1ZXMgPSB0b1BhcmVudE1lZGlhRWxlbWVudChtX3RleHREaXNwbGF5
Q29udGFpbmVyKS0+Y3VycmVudGx5QWN0aXZlQ3VlcygpOwotICAgIG1fdGV4dFRyYWNrRGlzcGxh
eS0+cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICBib29sIG5vdGhpbmdUb0Rpc3BsYXkgPSB0cnVlOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWN0aXZlQ3Vlcy5zaXplKCk7ICsraSkgewotICAg
ICAgICBUZXh0VHJhY2tDdWUqIGN1ZSA9IGFjdGl2ZUN1ZXNbaV0uZGF0YSgpOwotICAgICAgICBB
U1NFUlQoY3VlLT5pc0FjdGl2ZSgpKTsKLSAgICAgICAgaWYgKCFjdWUtPnRyYWNrKCkgfHwgY3Vl
LT50cmFjaygpLT5tb2RlKCkgIT0gVGV4dFRyYWNrOjpTSE9XSU5HKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgU3RyaW5nIGN1ZVRleHQgPSBjdWUtPnRleHQoKTsKLSAgICAgICAg
aWYgKCFjdWVUZXh0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKCFub3RoaW5nVG9EaXNw
bGF5KQotICAgICAgICAgICAgICAgIG1fdGV4dFRyYWNrRGlzcGxheS0+YXBwZW5kQ2hpbGQoZG9j
dW1lbnQoKS0+Y3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OmJyVGFnLCBmYWxzZSksIEFTU0VSVF9O
T19FWENFUFRJT04pOwotICAgICAgICAgICAgbV90ZXh0VHJhY2tEaXNwbGF5LT5hcHBlbmRDaGls
ZChkb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShjdWVUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7Ci0gICAgICAgICAgICBub3RoaW5nVG9EaXNwbGF5ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBpZiAoIW5vdGhpbmdUb0Rpc3BsYXkpCi0gICAgICAgIG1fdGV4dERpc3BsYXlD
b250YWluZXItPnNob3coKTsKLSAgICBlbHNlCi0gICAgICAgIG1fdGV4dERpc3BsYXlDb250YWlu
ZXItPmhpZGUoKTsKKyAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51cGRhdGVEaXNwbGF5KCk7
CiB9CiAjZW5kaWYKLSAgICAKKwogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtOjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMiKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXggODNmYjVl
NDEwYzQ3YzMwNDJjZTFmN2U4MWE5MTg3ODFkNDAyYmE1MS4uYjBmODg5YzY0OGExYzE4YWM2ZjZh
Y2VjYWZiYjRiM2FjYWYyNjA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcApAQCAtMzUsOCArMzUsMTIgQEAKIAogI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5o
IgogCi0jaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisj
aW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQu
aCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCisjaW5j
bHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUgIlRleHRUcmFj
a0N1ZUxpc3QuaCIKICNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKQEAgLTExMSw2ICsxMTUsOCBA
QCBUZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIGlkLCBkbwogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAs
IG1fcGF1c2VPbkV4aXQocGF1c2VPbkV4aXQpCiAgICAgLCBtX3NuYXBUb0xpbmVzKHRydWUpCisg
ICAgLCBtX2Rpc3BsYXlUcmVlU2hvdWxkQ2hhbmdlKHRydWUpCisgICAgLCBtX2Rpc3BsYXlUcmVl
KEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSkp
CiB7CiAgICAgcGFyc2VTZXR0aW5ncyhzZXR0aW5ncyk7CiB9CkBAIC0xMjksNiArMTM1LDggQEAg
dm9pZCBUZXh0VHJhY2tDdWU6OmN1ZURpZENoYW5nZSgpCiB7CiAgICAgaWYgKG1fdHJhY2spCiAg
ICAgICAgIG1fdHJhY2stPmN1ZURpZENoYW5nZSh0aGlzKTsKKworICAgIG1fZGlzcGxheVRyZWVT
aG91bGRDaGFuZ2UgPSB0cnVlOwogfQogCiBUZXh0VHJhY2sqIFRleHRUcmFja0N1ZTo6dHJhY2so
KSBjb25zdApAQCAtMzk0LDYgKzQwMiw2MyBAQCBib29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUo
KQogdm9pZCBUZXh0VHJhY2tDdWU6OnNldElzQWN0aXZlKGJvb2wgYWN0aXZlKQogewogICAgIG1f
aXNBY3RpdmUgPSBhY3RpdmU7CisKKyAgICBpZiAoIWFjdGl2ZSkgeworICAgICAgICAvLyBSZW1v
dmUgdGhlIGRpc3BsYXkgdHJlZSBhcyBzb29uIGFzIHRoZSBjdWUgYmVjb21lcyBpbmFjdGl2ZS4K
KyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgbV9kaXNwbGF5VHJlZS0+cmVtb3Zl
KGVjKTsKKyAgICB9Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpkZXRlcm1pbmVEaXNwbGF5UGFy
YW1ldGVycygpCit7CisgICAgLy8gRklYTUUoQlVHIDc5NzQ5KTogRGV0ZXJtaW5lIHRoZSB0ZXh0
IGRpcmVjdGlvbiB1c2luZyB0aGUgQklESSBhbGdvcml0aG0uCisgICAgLy8gU3RlcHMgMTAuMiwg
MTAuMworCisgICAgLy8gRklYTUUoQlVHIDc5NzQ3KTogRGV0ZXJtaW5lIHRoZSBkaXNwbGF5IHBh
cmFtZXRlcnMgZnJvbSB0aGUgcnVsZXMuCisgICAgLy8gU3RlcHMgMTAuMSwgMTAuNCAtIDEwLjEw
Cit9CisKK1Bhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IFRleHRUcmFja0N1ZTo6Z2V0RGlzcGxh
eVRyZWUoKQoreworICAgIGlmICghbV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSB8fCAhbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBtX2Rpc3Bs
YXlUcmVlOworCisgICAgLy8gMTAuMSAtIDEwLjEwCisgICAgZGV0ZXJtaW5lRGlzcGxheVBhcmFt
ZXRlcnMoKTsKKworICAgIC8vIDEwLjExLiBBcHBseSB0aGUgdGVybXMgb2YgdGhlIENTUyBzcGVj
aWZpY2F0aW9ucyB0byBub2RlcyB3aXRoaW4gdGhlCisgICAgLy8gZm9sbG93aW5nIGNvbnN0cmFp
bnRzLCB0aHVzIG9idGFpbmluZyBhIHNldCBvZiBDU1MgYm94ZXMgcG9zaXRpb25lZAorICAgIC8v
IHJlbGF0aXZlIHRvIGFuIGluaXRpYWwgY29udGFpbmluZyBibG9jazoKKyAgICBtX2Rpc3BsYXlU
cmVlLT5yZW1vdmVDaGlsZHJlbigpOworCisgICAgLy8gVGhlIGRvY3VtZW50IHRyZWUgaXMgdGhl
IHRyZWUgb2YgV2ViVlRUIE5vZGUgT2JqZWN0cyByb290ZWQgYXQgbm9kZXMuCisKKyAgICAvLyBU
aGUgY2hpbGRyZW4gb2YgdGhlIG5vZGVzIG11c3QgYmUgd3JhcHBlZCBpbiBhbiBhbm9ueW1vdXMg
Ym94IHdob3NlCisgICAgLy8gJ2Rpc3BsYXknIHByb3BlcnR5IGhhcyB0aGUgdmFsdWUgJ2lubGlu
ZScuIFRoaXMgaXMgdGhlIFdlYlZUVCBjdWUKKyAgICAvLyBiYWNrZ3JvdW5kIGJveC4KKyAgICBt
X2Rpc3BsYXlUcmVlLT5zZXRTaGFkb3dQc2V1ZG9JZChBdG9taWNTdHJpbmcoIi13ZWJraXQtbWVk
aWEtdGV4dC10cmFjay1kaXNwbGF5IiksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIG1fZGlz
cGxheVRyZWUtPmFwcGVuZENoaWxkKGdldEN1ZUFzSFRNTCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9O
LCB0cnVlKTsKKworICAgIC8vIEZJWE1FKEJVRyA3OTkxNik6IFJ1bnMgb2YgY2hpbGRyZW4gb2Yg
V2ViVlRUIFJ1YnkgT2JqZWN0cyB0aGF0IGFyZSBub3QKKyAgICAvLyBXZWJWVFQgUnVieSBUZXh0
IE9iamVjdHMgbXVzdCBiZSB3cmFwcGVkIGluIGFub255bW91cyBib3hlcyB3aG9zZQorICAgIC8v
ICdkaXNwbGF5JyBwcm9wZXJ0eSBoYXMgdGhlIHZhbHVlICdydWJ5LWJhc2UnLgorCisgICAgLy8g
RklYTUUoQlVHIDc5OTE2KTogVGV4dCBydW5zIG11c3QgYmUgd3JhcHBlZCBhY2NvcmRpbmcgdG8g
dGhlIENTUworICAgIC8vIGxpbmUtd3JhcHBpbmcgcnVsZXMsIGV4Y2VwdCB0aGF0IGFkZGl0aW9u
YWxseSwgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YKKyAgICAvLyB0aGUgJ3doaXRlLXNwYWNl
JyBwcm9wZXJ0eSwgbGluZXMgbXVzdCBiZSB3cmFwcGVkIGF0IHRoZSBlZGdlIG9mIHRoZWlyCisg
ICAgLy8gY29udGFpbmluZyBibG9ja3MsIGV2ZW4gaWYgZG9pbmcgc28gcmVxdWlyZXMgc3BsaXR0
aW5nIGEgd29yZCB3aGVyZSB0aGVyZQorICAgIC8vIGlzIG5vIGxpbmUgYnJlYWtpbmcgb3Bwb3J0
dW5pdHkuIChUaHVzLCBub3JtYWxseSB0ZXh0IHdyYXBzIGFzIG5lZWRlZCwKKyAgICAvLyBidXQg
aWYgdGhlcmUgaXMgYSBwYXJ0aWN1bGFybHkgbG9uZyB3b3JkLCBpdCBkb2VzIG5vdCBvdmVyZmxv
dyBhcyBpdAorICAgIC8vIG5vcm1hbGx5IHdvdWxkIGluIENTUywgaXQgaXMgaW5zdGVhZCBmb3Jj
aWJseSB3cmFwcGVkIGF0IHRoZSBib3gncyBlZGdlLikKKworICAgIC8vIEZJWE1FKEJVRyA3OTc1
MCwgNzk3NTEpOiBTdGVwcyAxMC4xMiAtIDEwLjE0CisKKyAgICBtX2Rpc3BsYXlUcmVlU2hvdWxk
Q2hhbmdlID0gZmFsc2U7CisKKyAgICAvLyAxMC4xNS4gTGV0IGN1ZSdzIHRleHQgdHJhY2sgY3Vl
IGRpc3BsYXkgc3RhdGUgaGF2ZSB0aGUgQ1NTIGJveGVzIGluCisgICAgLy8gYm94ZXMuCisgICAg
cmV0dXJuIG1fZGlzcGxheVRyZWU7CiB9CiAKIHZvaWQgVGV4dFRyYWNrQ3VlOjpwYXJzZVNldHRp
bmdzKGNvbnN0IFN0cmluZyYgaW5wdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuaAppbmRleCA2Y2Y5NzkzOWRiMmIyZTRlMTE4MzMwODQzOTVjZjQ3YmQ1MTIzYzA1Li40
MDExMzJkOTY0MWM4ZDVjNDFlZjYzY2VjNTdlYTUwZGFmNjdmODQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBIVE1MRGl2RWxlbWVudDsKIAogY2xhc3Mg
VGV4dFRyYWNrQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPiwgcHVibGljIEV2
ZW50VGFyZ2V0IHsKIHB1YmxpYzoKQEAgLTEwMCw2ICsxMDEsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0FjdGl2ZSgpOwogICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7CiAKKyAgICBQYXNzUmVm
UHRyPEhUTUxEaXZFbGVtZW50PiBnZXREaXNwbGF5VHJlZSgpOworCiAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIApAQCAt
MTEwLDcgKzExMyw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFRleHRUcmFja0N1
ZT46OmRlcmVmOwogCiBwcm90ZWN0ZWQ6Ci0KICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpOwogCkBAIC0xMTgsNiArMTIwLDggQEAgcHJpdmF0ZToKICAgICBUZXh0
VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaWQsIGRvdWJs
ZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcm
IHNldHRpbmdzLCBib29sIHBhdXNlT25FeGl0KTsKIAogICAgIHZvaWQgcGFyc2VTZXR0aW5ncyhj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRldGVybWluZURpc3BsYXlQYXJhbWV0ZXJzKCk7CisK
ICAgICB2b2lkIGN1ZVdpbGxDaGFuZ2UoKTsKICAgICB2b2lkIGN1ZURpZENoYW5nZSgpOwogCkBA
IC0xNDgsNiArMTUyLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBY3RpdmU7CiAgICAgYm9v
bCBtX3BhdXNlT25FeGl0OwogICAgIGJvb2wgbV9zbmFwVG9MaW5lczsKKworICAgIGJvb2wgbV9k
aXNwbGF5VHJlZVNob3VsZENoYW5nZTsKKyAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IG1fZGlz
cGxheVRyZWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTUwMzQxODg2
ODczNTZkMGViMmQzYTRiY2ZjMjQ1NjE2ZTY2ZTljNC4uOWFmY2M0ODVmMWIxYWNlODlhY2IyNzIw
ZTA1MDEyYTRiMmQwYmRlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAzLTA5ICBWaWN0
b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGFkb2JlLmNvbT4KKworICAgICAgICBVcGRhdGVkIGxheW91
dCB0ZXN0cyBmb3IgYmFzaWMgcmVuZGVyaW5nIG9mIGN1ZXMuCisgICAgICAgIFNvbWUgQ2hyb21p
dW0gdGVzdHMgcmVxdWlyZSByZWJhc2VsaW5pbmcgYW5kIGhhdmUgYmVlbiBtYXJrZWQgYWNjb3Jk
aW5nbHkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc5NzQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBtZWRpYS9tZWRpYS1jb250cm9scy5qczogQWRqdXN0ZWQgaGVscGVyIGZ1bmN0aW9uLgorICAg
ICAgICAobWVkaWFDb250cm9sc0VsZW1lbnQpOgorICAgICAgICAodGV4dFRyYWNrRGlzcGxheUVs
ZW1lbnQpOiBJZiB0aGUgbWV0aG9kIGlzIGNhbGxlZCB3aXRoIG9ubHkKKyAgICAgICAgb25lIHBh
cmFtZXRlciwgaXQgcmV0dXJucyB0aGUgdGV4dCB0cmFjayBjb250YWluZXIgaW5zdGVhZCBvZgor
ICAgICAgICBhIHNwZWNpZmljIGN1ZS4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWUt
bXV0YWJsZS10ZXh0LWV4cGVjdGVkLnR4dDogQWRqdXN0ZWQuCisgICAgICAgICogbWVkaWEvdHJh
Y2svdHJhY2stY3VlLW5vdGhpbmctdG8tcmVuZGVyLWV4cGVjdGVkLnR4dDogQWRqdXN0ZWQuCisg
ICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQ6IEFk
anVzdGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbDog
QWRqdXN0ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0OiBNYXJrZWQgdGVzdHMgdGhhdCBuZWVkIHRvCisgICAgICAgIGJlIHJlYmFzZWxpbmVkIGFj
Y29yZGluZ2x5LgorCiAyMDEyLTAzLTA4ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW1Y4XSBGaXggb2JqZWN0IHNjb3BlIGZvciBpbmxpbmUgZXZlbnQgYXR0
cmlidXRlIGhhbmRsZXJzCkBAIC0zMTM3LDYgKzMxNTgsMjEgQEAKICAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS1tYWMvZWRpdGluZy9leGVjQ29tbWFuZC80OTE2NTQxLWV4cGVjdGVkLnBuZzoK
ICAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZWRpdGluZy9leGVjQ29tbWFuZC80OTI0
NDQxLWV4cGVjdGVkLnBuZzoKIAorMjAxMi0wMy0wOCAgVmljdG9yIENhcmJ1bmUgIDx2Y2FyYnVu
ZUBhZG9iZS5jb20+CisKKyAgICAgICAgVXBkYXRlZCBMYXlvdXRUZXN0cyBmb3IgYmFzaWMgcmVu
ZGVyaW5nIG9mIGN1ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03OTc0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogbWVkaWEvbWVkaWEtY29udHJvbHMuanM6CisgICAgICAgIChtZWRpYUNvbnRyb2xz
RWxlbWVudCk6CisgICAgICAgICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCk6CisgICAgICAgICog
bWVkaWEvdHJhY2svdHJhY2stY3VlLW11dGFibGUtdGV4dC1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogbWVkaWEvdHJhY2svdHJhY2stY3VlLW5vdGhpbmctdG8tcmVuZGVyLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWw6CisKIDIwMTIt
MDMtMDcgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtXZWJTb2NrZXRdIFNob3VsZCByYWlzZSBTWU5UQVhfRVJSIHdoZW4gbWVzc2FnZSBjb250YWlu
cyB1bnBhaXJlZCBzdXJyb2dhdGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRp
YS1jb250cm9scy5qcyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xzLmpzCmluZGV4
IDQ0ODdkMTg5OWQwZjIwNWY0ZmIzMDE3NDM1MDU3N2MxOTkzNDUxOGMuLmU0NDQ5ZDkxZjg3MzUy
ZjM2YmFhODMwYzBkOWE0MjJiYjJkMGRlYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlh
L21lZGlhLWNvbnRyb2xzLmpzCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xz
LmpzCkBAIC0yLDcgKzIsNiBAQAogZnVuY3Rpb24gbWVkaWFDb250cm9sc0VsZW1lbnQoZmlyc3Qs
IGlkKQogewogICAgIGZvciAodmFyIGVsZW1lbnQgPSBmaXJzdDsgZWxlbWVudDsgZWxlbWVudCA9
IGVsZW1lbnQubmV4dFNpYmxpbmcpIHsKLQogICAgICAgICAvLyBOb3QgZXZlcnkgZWxlbWVudCBp
biB0aGUgbWVkaWEgY29udHJvbHMgaGFzIGEgc2hhZG93IHBzZXVkbyBJRCwgZWcuIHRoZQogICAg
ICAgICAvLyB0ZXh0IG5vZGVzIGZvciB0aGUgdGltZSB2YWx1ZXMsIHNvIGd1YXJkIGFnYWluc3Qg
ZXhjZXB0aW9ucy4KICAgICAgICAgdHJ5IHsKQEAgLTM1LDkgKzM0LDIwIEBAIGZ1bmN0aW9uIG1l
ZGlhQ29udHJvbHNCdXR0b25Db29yZGluYXRlcyhlbGVtZW50LCBpZCkKIAogZnVuY3Rpb24gdGV4
dFRyYWNrRGlzcGxheUVsZW1lbnQocGFyZW50RWxlbWVudCwgaWQpCiB7Ci0gICAgdmFyIGNvbnRy
b2xJRCA9ICItd2Via2l0LW1lZGlhLXRleHQtdHJhY2stIiArIGlkOwotICAgIHZhciBkaXNwbGF5
RWxlbWVudCA9IG1lZGlhQ29udHJvbHNFbGVtZW50KGludGVybmFscy5zaGFkb3dSb290KHBhcmVu
dEVsZW1lbnQpLmZpcnN0Q2hpbGQsIGNvbnRyb2xJRCk7CisgICAgdmFyIHRleHRUcmFja0NvbnRh
aW5lcklEID0gIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1jb250YWluZXIiOworICAgIHZhciBj
b250YWluZXJFbGVtZW50ID0gbWVkaWFDb250cm9sc0VsZW1lbnQoaW50ZXJuYWxzLnNoYWRvd1Jv
b3QocGFyZW50RWxlbWVudCkuZmlyc3RDaGlsZCwgIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1j
b250YWluZXIiKTsKKworICAgIGlmICghY29udGFpbmVyRWxlbWVudCkKKyAgICAgICAgdGhyb3cg
IkZhaWxlZCB0byBmaW5kIHRleHQgdHJhY2sgY29udGFpbmVyIGVsZW1lbnQiOworCisgICAgaWYg
KCFpZCkKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5lckVsZW1lbnQ7CisKKyAgICB2YXIgY29udHJv
bElEID0gIi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay0iICsgYXJndW1lbnRzWzFdOworCisgICAg
dmFyIGRpc3BsYXlFbGVtZW50ID0gbWVkaWFDb250cm9sc0VsZW1lbnQoY29udGFpbmVyRWxlbWVu
dC5maXJzdENoaWxkLCBjb250cm9sSUQpOwogICAgIGlmICghZGlzcGxheUVsZW1lbnQpCi0gICAg
ICAgIHRocm93ICJGYWlsZWQgdG8gZmluZCBtZWRpYSBjb250cm9sIGVsZW1lbnQgSUQgJyIgKyBj
b250cm9sSUQgKyAiJyI7CisgICAgICAgIHRocm93ICJObyB0ZXh0IHRyYWNrIGN1ZSB3aXRoIGRp
c3BsYXkgaWQgJyIgKyBjb250cm9sSUQgKyAiJyBpcyBjdXJyZW50bHkgdmlzaWJsZSI7CisKICAg
ICByZXR1cm4gZGlzcGxheUVsZW1lbnQ7Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLW11dGFibGUt
dGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtbXV0
YWJsZS10ZXh0LWV4cGVjdGVkLnR4dAppbmRleCBjZWE5MGEwZjMxYTMzOWY1MTY1MmZmZDZmNDQx
ZGQ3NjhiMDliMWI5Li44OTVmZjA1YTgwNjJjZjYyNGVjNDU0NGM0NTU2ODc2OWZiYzk0YzAxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtbXV0YWJsZS10ZXh0
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtbXV0
YWJsZS10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdCB0aGF0IGN1ZSB0ZXh0
IGlzIG11dGFibGUuCiAKICoqIFRlc3QgaW5pdGlhbCBjdWUgaW5mbwogRVhQRUNURUQgKHRlc3RU
cmFjay50cmFjay5hY3RpdmVDdWVzLmxlbmd0aCA9PSAnMCcpIE9LCi1FWFBFQ1RFRCAodGV4dFRy
YWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuaW5uZXJUZXh0ID09ICcnKSBPSwor
Tm8gdGV4dCB0cmFjayBjdWUgd2l0aCBkaXNwbGF5IGlkICctd2Via2l0LW1lZGlhLXRleHQtdHJh
Y2stZGlzcGxheScgaXMgY3VycmVudGx5IHZpc2libGUKIEVYUEVDVEVEICh0ZXN0VHJhY2sudHJh
Y2suY3Vlc1swXS5zdGFydFRpbWUgPT0gJzEnKSBPSwogRVhQRUNURUQgKHRlc3RUcmFjay50cmFj
ay5jdWVzWzFdLnN0YXJ0VGltZSA9PSAnMycpIE9LCiBFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNr
LmN1ZXNbMF0udGV4dCA9PSAnTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsJykgT0sKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1ub3RoaW5nLXRvLXJlbmRl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtbm90aGlu
Zy10by1yZW5kZXItZXhwZWN0ZWQudHh0CmluZGV4IGY2YTVmODgwNjFkNzdiZDk5MTMxNzdiZWIz
YzRlNzE1Y2JiNTVjODYuLjJlOGE3ODliZTMxMzY2ZDUyYmEzMDQ5YTQ1ZTQ5ODFlYjRjMTEzNmYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1ub3RoaW5nLXRv
LXJlbmRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
Y3VlLW5vdGhpbmctdG8tcmVuZGVyLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdCB0
aGF0IGN1ZXMgYXJlIHJlbmRlcmVkIGFuZCByZW1vdmVkLgogRVZFTlQoY2FucGxheXRocm91Z2gp
CiBFVkVOVChzZWVrZWQpCiBFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUudG9GaXhlZCgxKSA9
PSAnMC41JykgT0sKLUVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rp
c3BsYXknKS5pbm5lclRleHQgPT0gJycpIE9LCitObyB0ZXh0IHRyYWNrIGN1ZSB3aXRoIGRpc3Bs
YXkgaWQgJy13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5JyBpcyBjdXJyZW50bHkgdmlz
aWJsZQogCiBSVU4odmlkZW8uY3VycmVudFRpbWUgPSAxLjUpCiBFVkVOVChzZWVrZWQpCkBAIC0x
NCw3ICsxNCw3IEBAIEVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rp
c3BsYXknKS5pbm5lclRleHQgPT0gJ0xvcmVtIGlwc3VtIGRvCiBSVU4odmlkZW8uY3VycmVudFRp
bWUgPSAyLjUpCiBFVkVOVChzZWVrZWQpCiBFWFBFQ1RFRCAodmlkZW8uY3VycmVudFRpbWUudG9G
aXhlZCgxKSA9PSAnMi41JykgT0sKLUVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2
aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJycpIE9LCitObyB0ZXh0IHRyYWNrIGN1ZSB3
aXRoIGRpc3BsYXkgaWQgJy13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5JyBpcyBjdXJy
ZW50bHkgdmlzaWJsZQogCiBSVU4odmlkZW8uY3VycmVudFRpbWUgPSAzLjMpCiBFVkVOVChzZWVr
ZWQpCkBAIC0yNSw3ICsyNSw3IEBAIEVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2
aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJ2NvbnNlY3RldHVlciBhCiBSVU4odmlkZW8u
Y3VycmVudFRpbWUgPSAwLjYpCiBFVkVOVChzZWVrZWQpCiBFWFBFQ1RFRCAodmlkZW8uY3VycmVu
dFRpbWUudG9GaXhlZCgxKSA9PSAnMC42JykgT0sKLUVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJycpIE9LCitObyB0ZXh0IHRy
YWNrIGN1ZSB3aXRoIGRpc3BsYXkgaWQgJy13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5
JyBpcyBjdXJyZW50bHkgdmlzaWJsZQogCiBSVU4odmlkZW8uY3VycmVudFRpbWUgPSA1LjkpCiBF
VkVOVChzZWVrZWQpCkBAIC0zNiw3ICszNiw3IEBAIEVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJ3NlZCBkaWFtIG5vbnVtCiBS
VU4odmlkZW8uY3VycmVudFRpbWUgPSA0LjQpCiBFVkVOVChzZWVrZWQpCiBFWFBFQ1RFRCAodmlk
ZW8uY3VycmVudFRpbWUudG9GaXhlZCgxKSA9PSAnNC40JykgT0sKLUVYUEVDVEVEICh0ZXh0VHJh
Y2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJycpIE9LCitO
byB0ZXh0IHRyYWNrIGN1ZSB3aXRoIGRpc3BsYXkgaWQgJy13ZWJraXQtbWVkaWEtdGV4dC10cmFj
ay1kaXNwbGF5JyBpcyBjdXJyZW50bHkgdmlzaWJsZQogCiBSVU4odmlkZW8uY3VycmVudFRpbWUg
PSA3LjkpCiBFVkVOVChzZWVrZWQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CmluZGV4IDFmMmNlZGZkMTExNjcy
NmEzZDEwYjY4OTQzMmYwNDY4NDhkMzdkMjIuLjAzZDA0OWE2NTVlNmI5M2I0MzYyMzEwMDY0ZGUx
ZTMyMTljYWVlNTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1
ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CkBAIC0zMCwyMiArMzAsMjIgQEAgRVhQRUNU
RUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVyVGV4dCA9
PSAnc2l0JykgT0sKIFRlc3QgdGhlIGN1ZSBkaXNwbGF5IGNvbG9ycyBhbmQgZm9udC4KIFJVTih2
aWRlby53aWR0aCA9IDMyMCkKIFJVTih2aWRlby5oZWlnaHQgPSAyNDApCi1FWFBFQ1RFRCAoZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2NvbnRhaW5lcicp
KS5mb250U2l6ZSA9PSAnMTJweCcpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0
VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRTaXplID09ICcxMnB4JykgT0sKIAogUlVO
KHZpZGVvLndpZHRoID0gNjQwKQogUlVOKHZpZGVvLmhlaWdodCA9IDQ4MCkKLUVYUEVDVEVEIChn
ZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY29udGFpbmVy
JykpLmZvbnRTaXplID09ICcyNHB4JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRl
eHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udFNpemUgPT0gJzI0cHgnKSBPSwogCiBS
VU4odmlkZW8ud2lkdGggPSAxMjgwKQogUlVOKHZpZGVvLmhlaWdodCA9IDk2MCkKLUVYUEVDVEVE
IChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY29udGFp
bmVyJykpLmZvbnRTaXplID09ICc0OHB4JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxl
KHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udFNpemUgPT0gJzQ4cHgnKSBPSwog
CiBSVU4odmlkZW8ud2lkdGggPSAyNTYwKQogUlVOKHZpZGVvLmhlaWdodCA9IDE0NDApCi1FWFBF
Q1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Nv
bnRhaW5lcicpKS5mb250U2l6ZSA9PSAnNzJweCcpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRTaXplID09ICc3MnB4Jykg
T0sKIAotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQo
dmlkZW8sICdjb250YWluZXInKSkuZm9udEZhbWlseSA9PSAnc2Fucy1zZXJpZicpIE9LCi1FWFBF
Q1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Nv
bnRhaW5lcicpKS5jb2xvciA9PSAncmdiYSgyNTUsIDI1NSwgMjU1LCAwKScpIE9LCitFWFBFQ1RF
RCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRG
YW1pbHkgPT0gJ3NhbnMtc2VyaWYnKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4
dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciA9PSAncmdiYSgyNTUsIDI1NSwgMjU1
LCAwKScpIE9LCiBFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxl
bWVudCh2aWRlbywgJ2Rpc3BsYXknKSkuYmFja2dyb3VuZENvbG9yID09ICdyZ2JhKDAsIDAsIDAs
IDAuNzk2ODc1KScpIE9LCiBFTkQgT0YgVEVTVAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwKaW5kZXggNjlhMDljZjY1ZWI1OTdmODUzMzk2
MjgzOWRmNjJkZmJkZDhjNzQ4Ny4uYzE3YjcxNzM1NGFiZjIwZTFhYzM0ZDg1NDZiYmIxZmUxNTQz
YjQ1YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRl
cmluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJp
bmcuaHRtbApAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICAgICAgcnVuKCJ2aWRlby53aWR0aCA9
ICIgKyB3aWR0aCk7CiAgICAgICAgICAgICBydW4oInZpZGVvLmhlaWdodCA9ICIgKyBoZWlnaHQp
OwogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8s
ICdjb250YWluZXInKSkuZm9udFNpemUiLCBwYXJzZUludChoZWlnaHQgKiAwLjA1KSArICJweCIp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rp
c3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udFNpemUiLCBwYXJzZUludChoZWlnaHQgKiAwLjA1KSAr
ICJweCIpOwogICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKICAgICAgICAgfQogCkBAIC0z
MCw4ICszMCw4IEBACiAgICAgICAgICAgICB0ZXN0Rm9udFNpemUoMTI4MCwgOTYwKTsKICAgICAg
ICAgICAgIHRlc3RGb250U2l6ZSgyNTYwLCAxNDQwKTsKIAotICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY29u
dGFpbmVyJykpLmZvbnRGYW1pbHkiLCAic2Fucy1zZXJpZiIpOwotICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAn
Y29udGFpbmVyJykpLmNvbG9yIiwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMCkiKTsKKyAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVu
dCh2aWRlbykpLmZvbnRGYW1pbHkiLCAic2Fucy1zZXJpZiIpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSku
Y29sb3IiLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIpOwogICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlz
cGxheScpKS5iYWNrZ3JvdW5kQ29sb3IiLCAicmdiYSgwLCAwLCAwLCAwLjc5Njg3NSkiKTsKIAog
ICAgICAgICAgICAgZW5kVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDJiOWRmNTE1OWE3MTkwYmNkMDc5NzZj
NTJmYzEwZThkOTkxNWY2M2EuLjIyNjhiMzk4ZmRmMDU3NWViMWQzNWJlOGNmZWRlNGVhMzE5MDky
MTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQKQEAgLTM0MTUsNiArMzQxNSwzMiBAQCBCVUdXSzczODY1IDogbWVkaWEvdHJh
Y2svdHJhY2tsaXN0LWlzLXJlYWNoYWJsZS5odG1sID0gVEVYVCBDUkFTSAogQlVHV0s3Mzg2NSA6
IG1lZGlhL3RyYWNrL3RleHQtdHJhY2stY3VlLWlzLXJlYWNoYWJsZS5odG1sID0gVEVYVCBDUkFT
SAogQlVHV0s3Mzg2NSA6IG1lZGlhL3RyYWNrL3RleHQtdHJhY2staXMtcmVhY2hhYmxlLmh0bWwg
PSBURVhUIENSQVNICiAKKy8vIE5lZWQgcmViYXNlbGluaW5nCitCVUdXSzc5NzQ2IDogbWVkaWEv
bWVkaWEtZG9jdW1lbnQtYXVkaW8tcmVwYWludC5odG1sID0gSU1BR0UrVEVYVAorQlVHV0s3OTc0
NiA6IG1lZGlhL3ZpZGVvLW5vLWF1ZGlvLmh0bWwgPSBJTUFHRStURVhUCitCVUdXSzc5NzQ2IDog
bWVkaWEvY29udHJvbHMtc3RyaWN0Lmh0bWwgPSBJTUFHRStURVhUCitCVUdXSzc5NzQ2IDogbWVk
aWEvdmlkZW8tdm9sdW1lLXNsaWRlci5odG1sID0gSU1BR0UrVEVYVAorQlVHV0s3OTc0NiA6IG1l
ZGlhL2NvbnRyb2xzLXN0eWxpbmcuaHRtbCA9IElNQUdFK1RFWFQKK0JVR1dLNzk3NDYgOiBtZWRp
YS92aWRlby1kaXNwbGF5LXRvZ2dsZS5odG1sID0gSU1BR0UrVEVYVAorQlVHV0s3OTc0NiA6IG1l
ZGlhL2F1ZGlvLWNvbnRyb2xzLXJlbmRlcmluZy5odG1sID0gSU1BR0UrVEVYVAorQlVHV0s3OTc0
NiA6IG1lZGlhL3ZpZGVvLXpvb20tY29udHJvbHMuaHRtbCA9IElNQUdFK1RFWFQKK0JVR1dLNzk3
NDYgOiBtZWRpYS92aWRlby1jb250cm9scy1yZW5kZXJpbmcuaHRtbCA9IElNQUdFK1RFWFQKK0JV
R1dLNzk3NDYgOiBtZWRpYS9jb250cm9scy13aXRob3V0LXByZWxvYWQuaHRtbCA9IElNQUdFK1RF
WFQKK0JVR1dLNzk3NDYgOiBtZWRpYS9tZWRpYS1jb250cm9scy1jbG9uZS5odG1sID0gSU1BR0Ur
VEVYVAorQlVHV0s3OTc0NiA6IGZhc3QvbGF5ZXJzL3ZpZGVvLWxheWVyLmh0bWwgPSBJTUFHRStU
RVhUCitCVUdXSzc5NzQ2IDogbWVkaWEvdmlkZW8tZW1wdHktc291cmNlLmh0bWwgPSBJTUFHRStU
RVhUCitCVUdXSzc5NzQ2IDogbWVkaWEvdmlkZW8tcGxheWluZy1hbmQtcGF1c2UuaHRtbCA9IElN
QUdFK1RFWFQKK0JVR1dLNzk3NDYgOiBtZWRpYS9jb250cm9scy1hZnRlci1yZWxvYWQuaHRtbCA9
IElNQUdFK1RFWFQKK0JVR1dLNzk3NDYgOiBtZWRpYS9hdWRpby1yZXBhaW50Lmh0bWwgPSBJTUFH
RStURVhUCitCVUdXSzc5NzQ2IDogbWVkaWEvY29udHJvbHMtbGF5b3V0LWRpcmVjdGlvbi5odG1s
ID0gSU1BR0UKK0JVR1dLNzk3NDYgOiBtZWRpYS92aWRlby1hc3BlY3QtcmF0aW8uaHRtbCA9IElN
QUdFCitCVUdXSzc5NzQ2IDogbWVkaWEvdmlkZW8tY29sb3JzcGFjZS15dXY0MjAuaHRtbCA9IElN
QUdFCitCVUdXSzc5NzQ2IDogbWVkaWEvdmlkZW8tY29sb3JzcGFjZS15dXY0MjIuaHRtbCA9IElN
QUdFCitCVUdXSzc5NzQ2IDogbWVkaWEvdmlkZW8tZnJhbWUtYWNjdXJhdGUtc2Vlay5odG1sID0g
SU1BR0UKK0JVR1dLNzk3NDYgOiBtZWRpYS92aWRlby1sYXllci1jcmFzaC5odG1sID0gSU1BR0UK
K0JVR1dLNzk3NDYgOiBtZWRpYS92aWRlby10cmFuc2Zvcm1lZC5odG1sID0gSU1BR0UKK0JVR1dL
Nzk3NDYgOiBtZWRpYS92aWRlby16b29tLmh0bWwgPSBJTUFHRQorCiBCVUdXSzcyMjcxIE1BQyBE
RUJVRyA6IGZhc3QvbG9hZGVyL2phdmFzY3JpcHQtdXJsLWluLWVtYmVkLmh0bWwgPSBQQVNTIENS
QVNICiBCVUdXSzcyMjcxIFNOT1dMRU9QQVJEIERFQlVHIDogZmFzdC9kb20vbm9kZS1pdGVyYXRv
ci1yZWZlcmVuY2Utbm9kZS1tb3ZlZC1jcmFzaC5odG1sID0gUEFTUyBDUkFTSAogCkBAIC0zNjk0
LDkgKzM3MjAsNiBAQCBCVUdXSzgwNTE3IERFQlVHIDogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LXJlbW92ZS1saWdodAogQlVHQ1IxMTQ3NzcgOiBjb21w
b3NpdGluZy9jdWxsaW5nL2ZpbHRlci1vY2NsdXNpb24tYmx1ci1sYXJnZS5odG1sID0gUEFTUyBJ
TUFHRQogQlVHQ1IxMTQ3NzcgOiBjb21wb3NpdGluZy9jdWxsaW5nL2ZpbHRlci1vY2NsdXNpb24t
Ymx1ci5odG1sID0gUEFTUyBJTUFHRQogCi0vLyBOZWVkcyByZWJhc2VsaW5lCi1CVUdXSzc4ODc4
IDogbWVkaWEvYXVkaW8tcmVwYWludC5odG1sID0gSU1BR0UKLQogLy8gTmVlZHMgbmV3IGJhc2Vs
aW5lcy4KIEJVR1dLNjUwNzIgOiBzdmcvdGV4dC9leHMtZGlzcGxheS1ub25lLnN2ZyA9IElNQUdF
IElNQUdFK1RFWFQKIEJVR1dLNjUwNzIgOiBzdmcvdGV4dC9lbXMtZGlzcGxheS1ub25lLnN2ZyA9
IElNQUdFIElNQUdFK1RFWFQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131260</attachid>
            <date>2012-03-11 16:10:30 -0700</date>
            <delta_ts>2012-03-11 21:47:46 -0700</delta_ts>
            <desc>Small fixed and corrected ChangeLog</desc>
            <filename>bug-79746-20120312011028.patch</filename>
            <type>text/plain</type>
            <size>40019</size>
            <attacher name="Victor Carbune">vcarbune</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU4NzYzZGQ3OWQ2NGZm
ZjQ1MTlmYTdmM2ExZmRhZDNiOGMyYjM2Yy4uMjQwMDY5NzdkYTVkNjlmMDA5M2MzMDMyNjc5M2Mw
M2YyNDM2ZTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTAzLTA5ICBWaWN0
b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGFkb2JlLmNvbT4KKworICAgICAgICBUaGUgbWFpbiBjb2Rl
IHN0cnVjdHVyZSBmb3IgcGxhY2luZyBmdXR1cmUgdGV4dCB0cmFjayBjdWUgcmVuZGVyaW5nCisg
ICAgICAgIGNvZGUgYW5kIG1haW4gb3V0ZXIgcmVuZGVyaW5nIHN0ZXBzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3NDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE9ubHkgcmVm
YWN0b3JpbmcsIGJ1dCBzb21lIGNocm9taXVtIHRlc3RzIHJlcXVpcmUgcmViYXNlbGluaW5nCisg
ICAgICAgIGFuZCBoYXZlIGJlZW4gbWFya2VkIGFjY29yZGluZ2x5LgorCisgICAgICAgICogY3Nz
L21lZGlhQ29udHJvbHMuY3NzOgorICAgICAgICAoOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzKTog
Q2hhbmdlZCB0aGUgZGVmYXVsdCBkaXNwbGF5IHRvIC13ZWJraXQtYm94LCBhcworICAgICAgICBj
YXB0aW9ucyBuZWVkIHRvIGFsd2F5cyBiZSByZW5kZXJlZCBvbiB0b3Agb2YgdGhlIGNvbnRyb2xz
LCBpZiB0aGV5IGFyZSB2aXNpYmxlLgorICAgICAgICAoYXVkaW86Oi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtcGFuZWwsIHZpZGVvOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsKToKKyAgICAg
ICAgRGVmYXVsdCBwb3NpdGlvbiBhdHRyaWJ1dGUgaXMgbm93IHJlbGF0aXZlLCBoYW5kbGVkIGJ5
IHRoZSBwYXJlbnQgLXdlYmtpdC1ib3gKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLXRl
eHQtdHJhY2stY29udGFpbmVyKTogVGhlIHBvc2l0aW9uIG9mIHRoZSBjb250YWluZXIgaXMKKyAg
ICAgICAgbm93IHJlbGF0aXZlLCBoYW5kbGVkIGJ5IC13ZWJraXQtYm94LgorICAgICAgICAodmlk
ZW86Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5KTogQWRqdXN0ZWQgdGV4dCBjb2xv
ciB0byBtYXRjaAorICAgICAgICB0aGUgY29sb3IgcmVxdWlyZWQgaW4gdGhlIFdlYlZUVCBzcGVj
IChzZWN0aW9uIDMuNS4xICdjb2xvcicgcHJvcGVydHkpCisgICAgICAgICogY3NzL21lZGlhQ29u
dHJvbHNDaHJvbWl1bS5jc3M6CisgICAgICAgIChhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwpOgorICAgICAgICBE
ZWZhdWx0IHBvc2l0aW9uIGF0dHJpYnV0ZSBpcyBub3cgcmVsYXRpdmUsIGhhbmRsZWQgYnkgdGhl
IHBhcmVudCAtd2Via2l0LWJveAorCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxFbGVtZW50
OjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQpOiBBZGRlZCBhIHRpbWVyCisgICAgICAgIGZvciB0
aGUgd2Via2l0IGZhZGUgb3V0IHRyYW5zaXRpb24gZXZlbnQuIFRoaXMgdGltZXIgaXMgcmVxdWly
ZWQgZm9yIHNldHRpbmcKKyAgICAgICAgdGhlIGRpc3BsYXkgcHJvcGVydHkgdG8gJ25vbmUnLCB3
aGVuIHRoZSBmYWRlIG91dCB0cmFuc2l0aW9uIGlzIG92ZXIuIE90aGVyd2lzZSwKKyAgICAgICAg
Y2FwdGlvbnMgd291bGQgbm90IGJlIGRpc3BsYXllZCBhdCB0aGUgYm90dG9tIG9mIHRoZSB2aWRl
by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6c3RhcnRUaW1l
cik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xQYW5lbEVsZW1lbnQ6OnN0b3BUaW1lcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojp0cmFuc2l0aW9uVGltZXJGaXJlZCk6IEFkZGVkLiBJ
ZiB0aGUgY3VycmVudAorICAgICAgICBzdGF0ZSBvZiB0aGUgY29udHJvbHMgaXMgdHJhbnNwYXJl
bnQsIHRoZSBkaXNwbGF5IHByb3BlcnR5IGlzIHNldCB0byAnbm9uZScuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6Om1ha2VPcGFxdWUpOiBUaGUgaW5saW5lIGRp
c3BsYXk6J25vbmUnIHByb3BlcnR5CisgICAgICAgIGlzIHJlbW92ZWQgYmVmb3JlIHRoZSBmYWRl
IGluIHRyYW5zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1l
bnQ6Om1ha2VUcmFuc3BhcmVudCk6IEFkZGVkIHRoZSB0aW1lciBzdGFydC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICBSZW1vdmVkIG1fYm90dG9tIGFz
IGl0IGlzIG5vdCBuZWVkZWQgYW55bW9yZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOiBBZGRlZC4gTWFpbgor
ICAgICAgICBmdW5jdGlvbiBmb3IgdGhlIHJlbmRlcmluZyBydWxlcy4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKTog
VGhlIGJvdHRvbSBwb3NpdGlvbgorICAgICAgICBuZWVkcyBub3QgdG8gYmUgc2V0IGFueW1vcmUu
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAg
KE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudCk6IEFkZGVkIHRpbWVyIGludGVybmFscy4KKyAgICAg
ICAgKE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOiBBZGRlZCB1cGRhdGVE
aXNwbGF5KCkgYW5kIHJlbW92ZWQgdW51c2VkCisgICAgICAgIHZhcmlhYmxlcy4KKworICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1l
bnQuY3BwOiBSZW1vdmVkIG1fdGV4dFRyYWNrRGlzcGxheQorICAgICAgICBhbmQgZHVwbGljYXRl
ZCBjb2RlIHdpdGggTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bSAob25seSBtaW5pbXVt
CisgICAgICAgIGZ1bmN0aW9uIGNhbGxzIHRvIHRoZSBtYWluIHRleHQgdHJhY2sgY29udGFpbmVy
KQorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6Ok1lZGlhQ29udHJv
bFJvb3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50
OjpzZXRNZWRpYUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUm9v
dEVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ6OnVwZGF0ZVRleHRUcmFja0Rpc3BsYXkpOgorCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5jcHA6IFJlbW92
ZWQgbV90ZXh0VHJhY2tEaXNwbGF5CisgICAgICAgIGFuZCBkdXBsaWNhdGUgY29kZSB3aXRoIE1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50IChvbmx5IG1pbmltdW0gZnVuY3Rpb24gY2FsbHMKKyAgICAg
ICAgdG8gdGhlIG1haW4gdGV4dCB0cmFjayBjb250YWluZXIgcmVtYWluZWQpCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpNZWRpYUNvbnRyb2xSb290
RWxlbWVudENocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50Q2hyb21pdW06OnNldE1lZGlhQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpjcmVhdGVUZXh0VHJhY2tEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnVwZGF0ZVRl
eHRUcmFja0Rpc3BsYXkpOgorCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHA6IEVuaGFuY2VkIHN0cnVjdHVyZSBmb3Igc3VwcG9ydGluZyBt
b3JlIGNvbXBsZXgKKyAgICAgICAgcmVuZGVyaW5nIHJlcXVpcmVkIGJ5IHRoZSBXZWJWVFQgc3Bl
Yy4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y3VlRGlkQ2hhbmdlKTogTWFyayB0aGUgZGlzcGxh
eSB0cmVlIGFzIG9ic29sZXRlLCBzbyB0aGF0CisgICAgICAgIGl0IG5lZWRzIHRvIGJlIHJlLWNv
bXB1dGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpzZXRJc0FjdGl2ZSk6IFRo
ZSBkaXNwbGF5IHRyZWUgbmVlZHMgdG8gYmUgcmVtb3ZlZCBhcworICAgICAgICBzb29uIGFzIHRo
ZSBjdWUgYmVjb21lcyBpbmFjdGl2ZS4gQWRqdXN0ZWQgdGhpcyBtZXRob2QgdG8gc3VwcG9ydCB0
aGUgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlOjpkZXRlcm1pbmVEaXNwbGF5UGFyYW1ldGVycyk6IEFkZGVkLiBUaGlzIG1l
dGhvZCB3aWxsIGhvbGQKKyAgICAgICAgbWFpbiBwb3NpdGlvbmluZyBwYXJhbWV0ZXIgY29tcHV0
YXRpb25zIGZvciBhIFRleHRUcmFja0N1ZQorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmdldERpc3BsYXlUcmVlKTogQWRkZWQuIFRoaXMgbWV0aG9k
IHJldHVybnMgdGhlIHJvb3Qgbm9kZQorICAgICAgICBvZiB0aGUgQ1NTIGJveGVzIHRoYXQgbmVl
ZCB0byBiZSBkaXNwbGF5ZWQgb24gdG9wIG9mIHRoZSB2aWRlbywgZm9yIHRoZSBjdXJyZW50Cisg
ICAgICAgIGluc3RhbmNlLgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHRUcmFja0N1ZSk6CisKIDIwMTItMDMtMDkg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW51cCBpbmNE
T01UcmVlVmVyc2lvbiBjYWxsZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVk
aWFDb250cm9scy5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9scy5jc3MKaW5k
ZXggMzFjOWQ0MzI2ZTk0ZTAzOTM0YzU4Y2UyNWJkZGJlMzJkMjc5YTY5ZS4uYjgxMzMyZmM3NjEz
YTI1OWY5N2U2MTFkNDc5M2Y0YTQyMWQ2MDQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL21lZGlhQ29udHJvbHMuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRy
b2xzLmNzcwpAQCAtMzcsOCArMzcsMTEgQEAgYXVkaW8gewogICAgIHdpZHRoOiBpbmhlcml0Owog
ICAgIGhlaWdodDogaW5oZXJpdDsKICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgZGlzcGxh
eTogYmxvY2s7CisgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgZGlyZWN0aW9uOiBsdHI7
CisgICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0YXJ0OworICAgIC13ZWJraXQtYm94LXBhY2s6IGVu
ZDsKKyAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogfQogCiBhdWRpbzo6LXdlYmtp
dC1tZWRpYS1jb250cm9scy1wYW5lbCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFu
ZWwgewpAQCAtNDYsNyArNDksNyBAQCBhdWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5l
bCwgdmlkZW86Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgewogICAgIC13ZWJraXQtYm94
LW9yaWVudDogaG9yaXpvbnRhbDsKICAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOwogICAg
IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICBib3R0b206IDA7CiAgICAgd2lkdGg6IDEwMCU7CiAg
ICAgei1pbmRleDogMDsKQEAgLTIwMSwxNSArMjA0LDE2IEBAIGF1ZGlvOjotd2Via2l0LW1lZGlh
LWNvbnRyb2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1heC1idXR0b24sIHZpZGVvOjotd2Via2l0LW1l
ZGlhCiB9CiAKIHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIHsKLSAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIHdpZHRo
OiAxMDAlOwogICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgcGFkZGluZy1ib3R0b206IDVweDsK
IAogICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAg
ICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7
Ci0gICAgCisKICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogICAgIHdvcmQtc3BhY2luZzog
bm9ybWFsOwogICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwpAQCAtMjIyLDYgKzIyNiw2IEBAIHZp
ZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stY29udGFpbmVyIHsKIHZpZGVvOjotd2Via2l0
LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheSB7CiAgICAgZGlzcGxheTogaW5saW5lOwogICAgIGJh
Y2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsKLSAgICBjb2xvcjogeWVsbG93Owor
ICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwogICAgIHBhZGRpbmc6IDBweCAycHg7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWVkaWFDb250cm9sc0Nocm9taXVt
LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCmluZGV4
IDUwOGQ3NDQ1ZTJkYTBmODdiNmVhNjJlZTljZDVmYTE0NDJiMjkwOWEuLjVmYjYyY2MzNGRiMTFl
NjcwZWIxMGUxYjUyNTZmYzI2ZWUxNGQ4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9tZWRpYUNvbnRyb2xzQ2hyb21pdW0uY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRp
YUNvbnRyb2xzQ2hyb21pdW0uY3NzCkBAIC00MSw3ICs0MSw3IEBAIGF1ZGlvOi13ZWJraXQtZnVs
bC1wYWdlLW1lZGlhLCB2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYSB7CiAKIGF1ZGlvOjot
d2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsLCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCB7CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgIG92ZXJmbG93OiB2aXNpYmxl
OwogICAgIGJvdHRvbTogMDsKICAgICB3aWR0aDogMTAwJTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA4Y2E2NmE0Yjli
OWFiNDRlNWE2ODY2NmU2MjU0NGIyNzMzNmE3Nzk3Li4wMTFhZGZmNzk5NDYwMzY1ZWIzNmQ2YTU5
OTMyZTY5NWYzZDEwN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0
cmluZ3MuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgpAQCAtNTIsNiArNTMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJU
ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA3LDYgKzEwOSw3IEBAIGlubGlu
ZSBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX2NhbkJlRHJhZ2dlZChmYWxzZSkKICAgICAsIG1faXNC
ZWluZ0RyYWdnZWQoZmFsc2UpCiAgICAgLCBtX29wYXF1ZSh0cnVlKQorICAgICwgbV90cmFuc2l0
aW9uVGltZXIodGhpcywgJk1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6dHJhbnNpdGlvblRpbWVy
RmlyZWQpCiB7CiB9CiAKQEAgLTE3Myw2ICsxNzYsMzIgQEAgdm9pZCBNZWRpYUNvbnRyb2xQYW5l
bEVsZW1lbnQ6OmVuZERyYWcoKQogICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVy
aW5nTW91c2VFdmVudHNOb2RlKDApOwogfQogCit2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dDo6c3RhcnRUaW1lcigpCit7CisgICAgc3RvcFRpbWVyKCk7CisKKyAgICAvLyBUaGUgdGltZXIg
aXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBwcm9wZXJ0eSBkaXNwbGF5Oidub25lJyBvbiB0aGUgcGFu
ZWwsCisgICAgLy8gc3VjaCB0aGF0IGNhcHRpb25zIGFyZSBjb3JyZWN0bHkgZGlzcGxheWVkIGF0
IHRoZSBib3R0b20gb2YgdGhlIHZpZGVvCisgICAgLy8gYXQgdGhlIGVuZCBvZiB0aGUgZmFkZW91
dCB0cmFuc2l0aW9uLgorICAgIGRvdWJsZSBkdXJhdGlvbiA9IGRvY3VtZW50KCktPnBhZ2UoKSA/
IGRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKS0+bWVkaWFDb250cm9sc0ZhZGVPdXREdXJhdGlv
bigpIDogMDsKKyAgICBtX3RyYW5zaXRpb25UaW1lci5zdGFydE9uZVNob3QoZHVyYXRpb24pOwor
fQorCit2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6c3RvcFRpbWVyKCkKK3sKKyAgICBp
ZiAobV90cmFuc2l0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90cmFuc2l0aW9uVGlt
ZXIuc3RvcCgpOworfQorCisKK3ZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojp0cmFuc2l0
aW9uVGltZXJGaXJlZChUaW1lcjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+KikKK3sKKyAgICBp
ZiAoIW1fb3BhcXVlKQorICAgICAgICBoaWRlKCk7CisKKyAgICBzdG9wVGltZXIoKTsKK30KKwog
dm9pZCBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OnNldFBvc2l0aW9uKGNvbnN0IExheW91dFBv
aW50JiBwb3NpdGlvbikKIHsKICAgICBkb3VibGUgbGVmdCA9IHBvc2l0aW9uLngoKTsKQEAgLTIx
Miw2ICsyNDEsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6bWFrZU9wYXF1ZSgp
CiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHksIDEuMCwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogCiAgICAgbV9vcGFxdWUgPSB0cnVlOworCisg
ICAgc2hvdygpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6bWFrZVRyYW5z
cGFyZW50KCkKQEAgLTIyNCw2ICsyNTUsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVu
dDo6bWFrZVRyYW5zcGFyZW50KCkKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5T3BhY2l0eSwgMC4wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAKICAgICBt
X29wYXF1ZSA9IGZhbHNlOworCisgICAgc3RhcnRUaW1lcigpOwogfQogCiB2b2lkIE1lZGlhQ29u
dHJvbFBhbmVsRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC0x
MTY1LDcgKzExOTgsNiBAQCB2b2lkIFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6Omxh
eW91dCgpCiBpbmxpbmUgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAg
ICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQogICAgICwgbV9mb250U2l6ZSgwKQot
ICAgICwgbV9ib3R0b20oMCkKIHsKIH0KIApAQCAtMTE4NywxNiArMTIxOSw4OSBAQCBjb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29ucwogICAgIHJldHVybiBpZDsKIH0KIAordm9pZCBNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKK3sKKyAgICBIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKTsKKwor
ICAgIC8vIDEuIElmIHRoZSBtZWRpYSBlbGVtZW50IGlzIGFuIGF1ZGlvIGVsZW1lbnQsIG9yIGlz
IGFub3RoZXIgcGxheWJhY2sKKyAgICAvLyBtZWNoYW5pc20gd2l0aCBubyByZW5kZXJpbmcgYXJl
YSwgYWJvcnQgdGhlc2Ugc3RlcHMuIFRoZXJlIGlzIG5vdGhpbmcgdG8KKyAgICAvLyByZW5kZXIu
CisgICAgaWYgKCFtZWRpYUVsZW1lbnQtPmlzVmlkZW8oKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gMi4gTGV0IHZpZGVvIGJlIHRoZSBtZWRpYSBlbGVtZW50IG9yIG90aGVyIHBsYXliYWNr
IG1lY2hhbmlzbS4KKyAgICBIVE1MVmlkZW9FbGVtZW50KiB2aWRlbyA9IHN0YXRpY19jYXN0PEhU
TUxWaWRlb0VsZW1lbnQqPihtZWRpYUVsZW1lbnQpOworCisgICAgLy8gMy4gTGV0IG91dHB1dCBi
ZSBhbiBlbXB0eSBsaXN0IG9mIGFic29sdXRlbHkgcG9zaXRpb25lZCBDU1MgYmxvY2sgYm94ZXMu
CisgICAgVmVjdG9yPFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gPiBvdXRwdXQ7CisKKyAgICAvLyA0
LiBJZiB0aGUgdXNlciBhZ2VudCBpcyBleHBvc2luZyBhIHVzZXIgaW50ZXJmYWNlIGZvciB2aWRl
bywgYWRkIHRvCisgICAgLy8gb3V0cHV0IG9uZSBvciBtb3JlIGNvbXBsZXRlbHkgdHJhbnNwYXJl
bnQgcG9zaXRpb25lZCBDU1MgYmxvY2sgYm94ZXMgdGhhdAorICAgIC8vIGNvdmVyIHRoZSBzYW1l
IHJlZ2lvbiBhcyB0aGUgdXNlciBpbnRlcmZhY2UuCisKKyAgICAvLyA1LiBJZiB0aGUgbGFzdCB0
aW1lIHRoZXNlIHJ1bGVzIHdlcmUgcnVuLCB0aGUgdXNlciBhZ2VudCB3YXMgbm90IGV4cG9zaW5n
CisgICAgLy8gYSB1c2VyIGludGVyZmFjZSBmb3IgdmlkZW8sIGJ1dCBub3cgaXQgaXMsIGxldCBy
ZXNldCBiZSB0cnVlLiBPdGhlcndpc2UsCisgICAgLy8gbGV0IHJlc2V0IGJlIGZhbHNlLgorCisg
ICAgLy8gVGhlcmUgaXMgbm90aGluZyB0byBiZSBkb25lIGV4cGxpY2l0bHkgZm9yIDR0aCBhbmQg
NXRoIHN0ZXBzLCBhcworICAgIC8vIGV2ZXJ5dGhpbmcgaXMgaGFuZGxlZCB0aHJvdWdoIENTUy4g
VGhlIGNhcHRpb24gYm94IGlzIG9uIHRvcCBvZiB0aGUKKyAgICAvLyBjb250cm9scyBib3gsIGlu
IGEgY29udGFpbmVyIHNldCB3aXRoIHRoZSAtd2Via2l0LWJveCBkaXNwbGF5IHByb3BlcnR5Lgor
CisgICAgLy8gNi4gTGV0IHRyYWNrcyBiZSB0aGUgc3Vic2V0IG9mIHZpZGVvJ3MgbGlzdCBvZiB0
ZXh0IHRyYWNrcyB0aGF0IGhhdmUgYXMKKyAgICAvLyB0aGVpciBydWxlcyBmb3IgdXBkYXRpbmcg
dGhlIHRleHQgdHJhY2sgcmVuZGVyaW5nIHRoZXNlIHJ1bGVzIGZvcgorICAgIC8vIHVwZGF0aW5n
IHRoZSBkaXNwbGF5IG9mIFdlYlZUVCB0ZXh0IHRyYWNrcywgYW5kIHdob3NlIHRleHQgdHJhY2sg
bW9kZSBpcworICAgIC8vIHNob3dpbmcgb3Igc2hvd2luZyBieSBkZWZhdWx0LgorICAgIC8vIDcu
IExldCBjdWVzIGJlIGFuIGVtcHR5IGxpc3Qgb2YgdGV4dCB0cmFjayBjdWVzLgorICAgIC8vIDgu
IEZvciBlYWNoIHRyYWNrIHRyYWNrIGluIHRyYWNrcywgYXBwZW5kIHRvIGN1ZXMgYWxsIHRoZSBj
dWVzIGZyb20KKyAgICAvLyB0cmFjaydzIGxpc3Qgb2YgY3VlcyB0aGF0IGhhdmUgdGhlaXIgdGV4
dCB0cmFjayBjdWUgYWN0aXZlIGZsYWcgc2V0LgorICAgIEN1ZUxpc3QgYWN0aXZlQ3VlcyA9IHZp
ZGVvLT5jdXJyZW50bHlBY3RpdmVDdWVzKCk7CisKKyAgICAvLyA5LiBJZiByZXNldCBpcyBmYWxz
ZSwgdGhlbiwgZm9yIGVhY2ggdGV4dCB0cmFjayBjdWUgY3VlIGluIGN1ZXM6IGlmIGN1ZSdzCisg
ICAgLy8gdGV4dCB0cmFjayBjdWUgZGlzcGxheSBzdGF0ZSBoYXMgYSBzZXQgb2YgQ1NTIGJveGVz
LCB0aGVuIGFkZCB0aG9zZSBib3hlcworICAgIC8vIHRvIG91dHB1dCwgYW5kIHJlbW92ZSBjdWUg
ZnJvbSBjdWVzLgorCisgICAgLy8gVGhlcmUgaXMgbm90aGluZyBleHBsaWNpdGx5IHRvIGJlIGRv
bmUgaGVyZSwgYXMgYWxsIHRoZSBjYWNoaW5nIG9jY3VycworICAgIC8vIHdpdGhpbiB0aGUgVGV4
dFRyYWNrQ3VlIGluc3RhbmNlIGl0c2VsZi4gSWYgcGFyYW1ldGVycyBvZiB0aGUgY3VlIGNoYW5n
ZSwKKyAgICAvLyB0aGUgZGlzcGxheSB0cmVlIGlzIGNsZWFyZWQuCisKKyAgICAvLyAxMC4gRm9y
IGVhY2ggdGV4dCB0cmFjayBjdWUgY3VlIGluIGN1ZXMgdGhhdCBoYXMgbm90IHlldCBoYWQKKyAg
ICAvLyBjb3JyZXNwb25kaW5nIENTUyBib3hlcyBhZGRlZCB0byBvdXRwdXQsIGluIHRleHQgdHJh
Y2sgY3VlIG9yZGVyLCBydW4gdGhlCisgICAgLy8gZm9sbG93aW5nIHN1YnN0ZXBzOgorCisgICAg
Ly8gU2ltcGxlIHJlbmRlcmVyIGZvciBub3cuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
Y3RpdmVDdWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gYWN0
aXZlQ3Vlc1tpXS5kYXRhKCk7CisKKyAgICAgICAgQVNTRVJUKGN1ZS0+aXNBY3RpdmUoKSk7Cisg
ICAgICAgIGlmICghY3VlLT50cmFjaygpIHx8IGN1ZS0+dHJhY2soKS0+bW9kZSgpICE9IFRleHRU
cmFjazo6U0hPV0lORykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlZlB0cjxI
VE1MRGl2RWxlbWVudD4gZGlzcGxheVRyZWUgPSBjdWUtPmdldERpc3BsYXlUcmVlKCk7CisKKyAg
ICAgICAgLy8gQXBwZW5kIG9ubHkgbmV3IGRpc3BsYXkgdHJlZXMuCisgICAgICAgIGlmIChkaXNw
bGF5VHJlZS0+aGFzQ2hpbGROb2RlcygpICYmICFjb250YWlucyhkaXNwbGF5VHJlZS5nZXQoKSkp
CisgICAgICAgICAgICBhcHBlbmRDaGlsZChkaXNwbGF5VHJlZSwgQVNTRVJUX05PX0VYQ0VQVElP
TiwgdHJ1ZSk7CisKKyAgICAgICAgLy8gVGhlIGRpc3BsYXkgdHJlZSBvZiBhIGN1ZSBpcyByZW1v
dmVkIHdoZW4gdGhlIGFjdGl2ZSBmbGFnIG9mIHRoZSBjdWUgaXMgdW5zZXQuCisKKyAgICAgICAg
Ly8gRklYTUUoQlVHIDc5NzUwKTogUmVuZGVyIHRoZSBUZXh0VHJhY2tDdWUgd2hlbiBzbmFwLXRv
LWxpbmVzIGlzIHNldC4KKyAgICAgICAgLy8gRklYTUUoQlVHIDc5NzUxKTogUmVuZGVyIHRoZSBU
ZXh0VHJhY2tDdWUgd2hlbiBzbmFwLXRvLWxpbmVzIGlzIG5vdCBzZXQuCisgICAgfQorCisgICAg
Ly8gMTEuIFJldHVybiBvdXRwdXQuCisgICAgaGFzQ2hpbGROb2RlcygpID8gc2hvdygpIDogaGlk
ZSgpOworfQorCiBzdGF0aWMgY29uc3QgZmxvYXQgbWltaW11bUZvbnRTaXplID0gMTY7CiBzdGF0
aWMgY29uc3QgZmxvYXQgdmlkZW9IZWlnaHRGb250U2l6ZVBlcmNlbnRhZ2UgPSAuMDU7CiBzdGF0
aWMgY29uc3QgZmxvYXQgdHJhY2tCb3R0b21NdWx0aXBsaWVyID0gLjk7Ci0gICAgCisKIHZvaWQg
TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMoKQogewog
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50
KHRoaXMpOwogICAgIGlmICghbWVkaWFFbGVtZW50IHx8ICFtZWRpYUVsZW1lbnQtPnJlbmRlcmVy
KCkgfHwgIW1lZGlhRWxlbWVudC0+cmVuZGVyZXIoKS0+aXNWaWRlbygpKQogICAgICAgICByZXR1
cm47Ci0gICAgCisKICAgICBJbnRSZWN0IHZpZGVvQm94ID0gdG9SZW5kZXJWaWRlbyhtZWRpYUVs
ZW1lbnQtPnJlbmRlcmVyKCkpLT52aWRlb0JveCgpOwogICAgIGlmIChtX3ZpZGVvRGlzcGxheVNp
emUgPT0gdmlkZW9Cb3gpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMDcsMzMgKzEzMTIsOSBAQCB2
b2lkIE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKCkK
ICAgICAgICAgbV9mb250U2l6ZSA9IGZvbnRTaXplOwogICAgICAgICBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZvbnRTaXplKSArICJw
eCIpOwogICAgIH0KLQotICAgIExheW91dFVuaXQgYm90dG9tID0gc3RhdGljX2Nhc3Q8TGF5b3V0
VW5pdD4obV92aWRlb0Rpc3BsYXlTaXplLnkoKSArIG1fdmlkZW9EaXNwbGF5U2l6ZS5oZWlnaHQo
KSAtIChtX3ZpZGVvRGlzcGxheVNpemUuaGVpZ2h0KCkgKiB0cmFja0JvdHRvbU11bHRpcGxpZXIp
KTsKLSAgICBpZiAoYm90dG9tICE9IG1fYm90dG9tKSB7Ci0gICAgICAgIG1fYm90dG9tID0gYm90
dG9tOwotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Qm90dG9tLCBT
dHJpbmc6Om51bWJlcihyb3VuZFRvSW50KGJvdHRvbSkpICsgInB4Iik7Ci0gICAgfQogfQogCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU1lZGlhQ29udHJvbFRleHRUcmFja0Rp
c3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQotewotfQot
Ci1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlF
bGVtZW50KGRvY3VtZW50KSk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9s
VGV4dFRyYWNrRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWRpc3BsYXkiKSk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi0jZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoVklERU9fVFJBQ0spCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmgKaW5kZXggNTIwNTVhNDQ0NjNmMzE5ZjQ5ODEwOTliNzg0OGFlMWMyNzRjMmMyZi4uZGNlMjZj
MWM4OGFmZDIzYWQ5ZGZlN2ExMjNhMzJmNDNlMTVlYzY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCkBAIC0xMjIsNiArMTIyLDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250aW51ZURyYWcoY29uc3QgTGF5b3V0UG9pbnQmIGV2
ZW50TG9jYXRpb24pOwogICAgIHZvaWQgZW5kRHJhZygpOwogCisgICAgdm9pZCBzdGFydFRpbWVy
KCk7CisgICAgdm9pZCBzdG9wVGltZXIoKTsKKyAgICB2b2lkIHRyYW5zaXRpb25UaW1lckZpcmVk
KFRpbWVyPE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudD4qKTsKKwogICAgIHZvaWQgc2V0UG9zaXRp
b24oY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIGJvb2wgbV9jYW5CZURyYWdnZWQ7CkBAIC0x
MjksNiArMTMzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fb3BhcXVlOwogICAgIExheW91dFBv
aW50IG1fZHJhZ1N0YXJ0UG9zaXRpb247CiAgICAgTGF5b3V0UG9pbnQgbV9kcmFnU3RhcnRFdmVu
dExvY2F0aW9uOworCisgICAgVGltZXI8TWVkaWFDb250cm9sUGFuZWxFbGVtZW50PiBtX3RyYW5z
aXRpb25UaW1lcjsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ5
MSw5ICs0OTcsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIGNsYXNzIE1l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9s
RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7Ci0gICAgCisK
KyAgICB2b2lkIHVwZGF0ZURpc3BsYXkoKTsKICAgICB2b2lkIHVwZGF0ZVNpemVzKCk7CiAKIHBy
aXZhdGU6CkBAIC01MDUsMjMgKzUxMSw5IEBAIHByaXZhdGU6CiAKICAgICBJbnRSZWN0IG1fdmlk
ZW9EaXNwbGF5U2l6ZTsKICAgICBmbG9hdCBtX2ZvbnRTaXplOwotICAgIExheW91dFVuaXQgbV9i
b3R0b207CiB9OwogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIE1l
ZGlhQ29udHJvbFRleHRUcmFja0Rpc3BsYXlFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbEVs
ZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRU
cmFja0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudChEb2N1bWVudCopOwotCi0gICAgdmly
dHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IE1lZGlhVGV4dFRyYWNrRGlzcGxheTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotfTsKICNlbmRpZgotCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcAppbmRl
eCBkMjZmZTIwOWVlNzUwNTI4YjVmOWZjNjY5YTZjMDBmNDhlZTFiNTNkLi4yMzgzMjAwZjNhYzg5
OGY5ZDUyZmYwNWExZDkzZmNkZDVlYjU3OGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwCkBAIC03Myw3ICs3Myw2
IEBAIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xSb290RWxlbWVudChEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX3BhbmVsKDApCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgICwgbV90ZXh0RGlzcGxheUNvbnRhaW5lcigwKQotICAgICwgbV90ZXh0VHJhY2tEaXNw
bGF5KDApCiAjZW5kaWYKICAgICAsIG1faGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKHRoaXMs
ICZNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6aGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyRmly
ZWQpCiAgICAgLCBtX2lzTW91c2VPdmVyQ29udHJvbHMoZmFsc2UpCkBAIC0yNzcsOCArMjc2LDYg
QEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudDo6c2V0TWVkaWFDb250cm9sbGVyKE1lZGlh
Q29udHJvbGxlckludGVyZmFjZSogY29udHIKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
aWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCiAgICAgICAgIG1fdGV4dERpc3BsYXlDb250YWlu
ZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV90ZXh0VHJhY2tE
aXNwbGF5KQotICAgICAgICBtX3RleHRUcmFja0Rpc3BsYXktPnNldE1lZGlhQ29udHJvbGxlcihj
b250cm9sbGVyKTsKICNlbmRpZgogICAgIHJlc2V0KCk7CiB9CkBAIC02MDQsMTYgKzYwMSw4IEBA
IHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKQog
ICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiB0ZXh0RGlz
cGxheUNvbnRhaW5lciA9IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCgpKTsKICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyID0gdGV4dERpc3Bs
YXlDb250YWluZXIuZ2V0KCk7CiAKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrRGlz
cGxheUVsZW1lbnQ+IHRleHREaXNwbGF5ID0gTWVkaWFDb250cm9sVGV4dFRyYWNrRGlzcGxheUVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKLSAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5o
aWRlKCk7Ci0gICAgbV90ZXh0VHJhY2tEaXNwbGF5ID0gdGV4dERpc3BsYXkuZ2V0KCk7Ci0KLSAg
ICBFeGNlcHRpb25Db2RlIGVjOwotICAgIHRleHREaXNwbGF5Q29udGFpbmVyLT5hcHBlbmRDaGls
ZCh0ZXh0RGlzcGxheS5yZWxlYXNlKCksIGVjLCB0cnVlKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybjsKLQogICAgIC8vIEluc2VydCBpdCBiZWZvcmUgdGhlIGZpcnN0IGNvbnRyb2xsZXIg
ZWxlbWVudCBzbyBpdCBhbHdheXMgZGlzcGxheXMgYmVoaW5kIHRoZSBjb250cm9scy4KKyAgICBF
eGNlcHRpb25Db2RlIGVjOwogICAgIGluc2VydEJlZm9yZSh0ZXh0RGlzcGxheUNvbnRhaW5lci5y
ZWxlYXNlKCksIG1fcGFuZWwsIGVjLCB0cnVlKTsKIH0KIApAQCAtNjM2LDI4ICs2MjUsOCBAQCB2
b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Ojp1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCkKICAg
ICBpZiAoIW1fdGV4dERpc3BsYXlDb250YWluZXIpCiAgICAgICAgIGNyZWF0ZVRleHRUcmFja0Rp
c3BsYXkoKTsKIAotICAgIEN1ZUxpc3QgYWN0aXZlQ3VlcyA9IHRvUGFyZW50TWVkaWFFbGVtZW50
KG1fdGV4dERpc3BsYXlDb250YWluZXIpLT5jdXJyZW50bHlBY3RpdmVDdWVzKCk7Ci0gICAgbV90
ZXh0VHJhY2tEaXNwbGF5LT5yZW1vdmVDaGlsZHJlbigpOwotICAgIGJvb2wgbm90aGluZ1RvRGlz
cGxheSA9IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3RpdmVDdWVzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5kYXRh
KCk7Ci0gICAgICAgIEFTU0VSVChjdWUtPmlzQWN0aXZlKCkpOwotICAgICAgICBpZiAoIWN1ZS0+
dHJhY2soKSB8fCBjdWUtPnRyYWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6OlNIT1dJTkcpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBTdHJpbmcgY3VlVGV4dCA9IGN1ZS0+dGV4
dCgpOwotICAgICAgICBpZiAoIWN1ZVRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAo
IW5vdGhpbmdUb0Rpc3BsYXkpCi0gICAgICAgICAgICAgICAgbV90ZXh0VHJhY2tEaXNwbGF5LT5h
cHBlbmRDaGlsZChkb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6YnJUYWcsIGZh
bHNlKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgICAgICAgICBtX3RleHRUcmFja0Rpc3Bs
YXktPmFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKGN1ZVRleHQpLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKLSAgICAgICAgICAgIG5vdGhpbmdUb0Rpc3BsYXkgPSBmYWxzZTsK
LSAgICAgICAgfQotICAgIH0KKyAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51cGRhdGVEaXNw
bGF5KCk7CiAKLSAgICBpZiAoIW5vdGhpbmdUb0Rpc3BsYXkpCi0gICAgICAgIG1fdGV4dERpc3Bs
YXlDb250YWluZXItPnNob3coKTsKLSAgICBlbHNlCi0gICAgICAgIG1fdGV4dERpc3BsYXlDb250
YWluZXItPmhpZGUoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwCmlu
ZGV4IGU2OWQ4MThkM2ExNzM1OTdmMmRiYmZhYWFiZGMxMzFkNjgxNTllOGIuLjY2M2U1MWY4MGY2
ZmJiOWYxYmMwNzM5MWVjNGY5ZGNmNGMyN2Q1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0u
Y3BwCkBAIC01OCw3ICs1OCw2IEBAIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06Ok1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0oRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX3Bh
bmVsKDApCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgbV90ZXh0RGlzcGxheUNvbnRh
aW5lcigwKQotICAgICwgbV90ZXh0VHJhY2tEaXNwbGF5KDApCiAjZW5kaWYKICAgICAsIG1fb3Bh
cXVlKHRydWUpCiAgICAgLCBtX2lzTW91c2VPdmVyQ29udHJvbHMoZmFsc2UpCkBAIC0xNTgsOCAr
MTU3LDYgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjpzZXRNZWRpYUNv
bnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWMKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CiAgICAgaWYgKG1fdGV4dERpc3BsYXlDb250YWluZXIpCiAgICAgICAgIG1fdGV4dERpc3BsYXlD
b250YWluZXItPnNldE1lZGlhQ29udHJvbGxlcihjb250cm9sbGVyKTsKLSAgICBpZiAobV90ZXh0
VHJhY2tEaXNwbGF5KQotICAgICAgICBtX3RleHRUcmFja0Rpc3BsYXktPnNldE1lZGlhQ29udHJv
bGxlcihjb250cm9sbGVyKTsKICNlbmRpZgogICAgIHJlc2V0KCk7CiB9CkBAIC0zMzUsMTYgKzMz
Miw4IEBAIHZvaWQgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y3JlYXRlVGV4dFRy
YWNrRGlzcGxheSgpCiAgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQ+IHRleHREaXNwbGF5Q29udGFpbmVyID0gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgIG1fdGV4dERpc3BsYXlDb250YWlu
ZXIgPSB0ZXh0RGlzcGxheUNvbnRhaW5lci5nZXQoKTsKIAotICAgIFJlZlB0cjxNZWRpYUNvbnRy
b2xUZXh0VHJhY2tEaXNwbGF5RWxlbWVudD4gdGV4dERpc3BsYXkgPSBNZWRpYUNvbnRyb2xUZXh0
VHJhY2tEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIG1fdGV4dERpc3Bs
YXlDb250YWluZXItPmhpZGUoKTsKLSAgICBtX3RleHRUcmFja0Rpc3BsYXkgPSB0ZXh0RGlzcGxh
eS5nZXQoKTsKLQotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgdGV4dERpc3BsYXlDb250YWlu
ZXItPmFwcGVuZENoaWxkKHRleHREaXNwbGF5LnJlbGVhc2UoKSwgZWMsIHRydWUpOwotICAgIGlm
IChlYykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gSW5zZXJ0IGl0IGJlZm9yZSB0aGUgZmly
c3QgY29udHJvbGxlciBlbGVtZW50IHNvIGl0IGFsd2F5cyBkaXNwbGF5cyBiZWhpbmQgdGhlIGNv
bnRyb2xzLgorICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgaW5zZXJ0QmVmb3JlKHRleHREaXNw
bGF5Q29udGFpbmVyLnJlbGVhc2UoKSwgbV9wYW5lbCwgZWMsIHRydWUpOwogfQogCkBAIC0zNjcs
MzEgKzM1NiwxMCBAQCB2b2lkIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OnVwZGF0
ZVRleHRUcmFja0Rpc3BsYXkoKQogICAgIGlmICghbV90ZXh0RGlzcGxheUNvbnRhaW5lcikKICAg
ICAgICAgY3JlYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogCi0gICAgQ3VlTGlzdCBhY3RpdmVDdWVz
ID0gdG9QYXJlbnRNZWRpYUVsZW1lbnQobV90ZXh0RGlzcGxheUNvbnRhaW5lciktPmN1cnJlbnRs
eUFjdGl2ZUN1ZXMoKTsKLSAgICBtX3RleHRUcmFja0Rpc3BsYXktPnJlbW92ZUNoaWxkcmVuKCk7
Ci0gICAgYm9vbCBub3RoaW5nVG9EaXNwbGF5ID0gdHJ1ZTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFjdGl2ZUN1ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgVGV4dFRyYWNrQ3VlKiBj
dWUgPSBhY3RpdmVDdWVzW2ldLmRhdGEoKTsKLSAgICAgICAgQVNTRVJUKGN1ZS0+aXNBY3RpdmUo
KSk7Ci0gICAgICAgIGlmICghY3VlLT50cmFjaygpIHx8IGN1ZS0+dHJhY2soKS0+bW9kZSgpICE9
IFRleHRUcmFjazo6U0hPV0lORykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIFN0
cmluZyBjdWVUZXh0ID0gY3VlLT50ZXh0KCk7Ci0gICAgICAgIGlmICghY3VlVGV4dC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIGlmICghbm90aGluZ1RvRGlzcGxheSkKLSAgICAgICAgICAgICAg
ICBtX3RleHRUcmFja0Rpc3BsYXktPmFwcGVuZENoaWxkKGRvY3VtZW50KCktPmNyZWF0ZUVsZW1l
bnQoSFRNTE5hbWVzOjpiclRhZywgZmFsc2UpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKLSAgICAg
ICAgICAgIG1fdGV4dFRyYWNrRGlzcGxheS0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQoKS0+Y3JlYXRl
VGV4dE5vZGUoY3VlVGV4dCksIEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgICAgICAgICAgbm90
aGluZ1RvRGlzcGxheSA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFub3Ro
aW5nVG9EaXNwbGF5KQotICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5zaG93KCk7Ci0g
ICAgZWxzZQotICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT5oaWRlKCk7CisgICAgbV90
ZXh0RGlzcGxheUNvbnRhaW5lci0+dXBkYXRlRGlzcGxheSgpOwogfQogI2VuZGlmCi0gICAgCisK
IGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6c2hh
ZG93UHNldWRvSWQoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzIikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IDgzZmI1ZTQxMGM0N2MzMDQyY2UxZjdlODFh
OTE4NzgxZDQwMmJhNTEuLjAwZWJiMjFhOWFiNDI1MTViYWZlOGQxOTNhZDk4N2NmZDdiZTE4M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTM1LDgg
KzM1LDEyIEBACiAKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKIAotI2luY2x1ZGUgIkV2ZW50
LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5
d29yZHMuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQu
aCIKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorI2luY2x1ZGUgIlRleHQuaCIKICNpbmNs
dWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAjaW5jbHVk
ZSAiV2ViVlRUUGFyc2VyLmgiCkBAIC0xMTEsNyArMTE1LDEwIEBAIFRleHRUcmFja0N1ZTo6VGV4
dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
aWQsIGRvCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAgICwgbV9wYXVzZU9uRXhpdChwYXVz
ZU9uRXhpdCkKICAgICAsIG1fc25hcFRvTGluZXModHJ1ZSkKKyAgICAsIG1fZGlzcGxheVRyZWVT
aG91bGRDaGFuZ2UodHJ1ZSkKKyAgICAsIG1fZGlzcGxheVRyZWUoSFRNTERpdkVsZW1lbnQ6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpKSkKIHsKKyAgICBBU1NFUlQobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIHBhcnNlU2V0dGluZ3Mo
c2V0dGluZ3MpOwogfQogCkBAIC0xMjksNiArMTM2LDggQEAgdm9pZCBUZXh0VHJhY2tDdWU6OmN1
ZURpZENoYW5nZSgpCiB7CiAgICAgaWYgKG1fdHJhY2spCiAgICAgICAgIG1fdHJhY2stPmN1ZURp
ZENoYW5nZSh0aGlzKTsKKworICAgIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2UgPSB0cnVlOwog
fQogCiBUZXh0VHJhY2sqIFRleHRUcmFja0N1ZTo6dHJhY2soKSBjb25zdApAQCAtMzk0LDYgKzQw
Myw2MyBAQCBib29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUoKQogdm9pZCBUZXh0VHJhY2tDdWU6
OnNldElzQWN0aXZlKGJvb2wgYWN0aXZlKQogewogICAgIG1faXNBY3RpdmUgPSBhY3RpdmU7CisK
KyAgICBpZiAoIWFjdGl2ZSkgeworICAgICAgICAvLyBSZW1vdmUgdGhlIGRpc3BsYXkgdHJlZSBh
cyBzb29uIGFzIHRoZSBjdWUgYmVjb21lcyBpbmFjdGl2ZS4KKyAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYzsKKyAgICAgICAgbV9kaXNwbGF5VHJlZS0+cmVtb3ZlKGVjKTsKKyAgICB9Cit9CisKK3Zv
aWQgVGV4dFRyYWNrQ3VlOjpkZXRlcm1pbmVEaXNwbGF5UGFyYW1ldGVycygpCit7CisgICAgLy8g
RklYTUUoQlVHIDc5NzQ5KTogRGV0ZXJtaW5lIHRoZSB0ZXh0IGRpcmVjdGlvbiB1c2luZyB0aGUg
QklESSBhbGdvcml0aG0uCisgICAgLy8gU3RlcHMgMTAuMiwgMTAuMworCisgICAgLy8gRklYTUUo
QlVHIDc5NzQ3KTogRGV0ZXJtaW5lIHRoZSBkaXNwbGF5IHBhcmFtZXRlcnMgZnJvbSB0aGUgcnVs
ZXMuCisgICAgLy8gU3RlcHMgMTAuMSwgMTAuNCAtIDEwLjEwCit9CisKK1Bhc3NSZWZQdHI8SFRN
TERpdkVsZW1lbnQ+IFRleHRUcmFja0N1ZTo6Z2V0RGlzcGxheVRyZWUoKQoreworICAgIGlmICgh
bV9kaXNwbGF5VHJlZVNob3VsZENoYW5nZSkKKyAgICAgICAgcmV0dXJuIG1fZGlzcGxheVRyZWU7
CisKKyAgICAvLyAxMC4xIC0gMTAuMTAKKyAgICBkZXRlcm1pbmVEaXNwbGF5UGFyYW1ldGVycygp
OworCisgICAgLy8gMTAuMTEuIEFwcGx5IHRoZSB0ZXJtcyBvZiB0aGUgQ1NTIHNwZWNpZmljYXRp
b25zIHRvIG5vZGVzIHdpdGhpbiB0aGUKKyAgICAvLyBmb2xsb3dpbmcgY29uc3RyYWludHMsIHRo
dXMgb2J0YWluaW5nIGEgc2V0IG9mIENTUyBib3hlcyBwb3NpdGlvbmVkCisgICAgLy8gcmVsYXRp
dmUgdG8gYW4gaW5pdGlhbCBjb250YWluaW5nIGJsb2NrOgorICAgIG1fZGlzcGxheVRyZWUtPnJl
bW92ZUNoaWxkcmVuKCk7CisKKyAgICAvLyBUaGUgZG9jdW1lbnQgdHJlZSBpcyB0aGUgdHJlZSBv
ZiBXZWJWVFQgTm9kZSBPYmplY3RzIHJvb3RlZCBhdCBub2Rlcy4KKworICAgIC8vIFRoZSBjaGls
ZHJlbiBvZiB0aGUgbm9kZXMgbXVzdCBiZSB3cmFwcGVkIGluIGFuIGFub255bW91cyBib3ggd2hv
c2UKKyAgICAvLyAnZGlzcGxheScgcHJvcGVydHkgaGFzIHRoZSB2YWx1ZSAnaW5saW5lJy4gVGhp
cyBpcyB0aGUgV2ViVlRUIGN1ZQorICAgIC8vIGJhY2tncm91bmQgYm94LgorICAgIG1fZGlzcGxh
eVRyZWUtPnNldFNoYWRvd1BzZXVkb0lkKEF0b21pY1N0cmluZygiLXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWRpc3BsYXkiKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgbV9kaXNwbGF5VHJl
ZS0+YXBwZW5kQ2hpbGQoZ2V0Q3VlQXNIVE1MKCksIEFTU0VSVF9OT19FWENFUFRJT04sIHRydWUp
OworCisgICAgLy8gRklYTUUoQlVHIDc5OTE2KTogUnVucyBvZiBjaGlsZHJlbiBvZiBXZWJWVFQg
UnVieSBPYmplY3RzIHRoYXQgYXJlIG5vdAorICAgIC8vIFdlYlZUVCBSdWJ5IFRleHQgT2JqZWN0
cyBtdXN0IGJlIHdyYXBwZWQgaW4gYW5vbnltb3VzIGJveGVzIHdob3NlCisgICAgLy8gJ2Rpc3Bs
YXknIHByb3BlcnR5IGhhcyB0aGUgdmFsdWUgJ3J1YnktYmFzZScuCisKKyAgICAvLyBGSVhNRShC
VUcgNzk5MTYpOiBUZXh0IHJ1bnMgbXVzdCBiZSB3cmFwcGVkIGFjY29yZGluZyB0byB0aGUgQ1NT
CisgICAgLy8gbGluZS13cmFwcGluZyBydWxlcywgZXhjZXB0IHRoYXQgYWRkaXRpb25hbGx5LCBy
ZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZgorICAgIC8vIHRoZSAnd2hpdGUtc3BhY2UnIHByb3Bl
cnR5LCBsaW5lcyBtdXN0IGJlIHdyYXBwZWQgYXQgdGhlIGVkZ2Ugb2YgdGhlaXIKKyAgICAvLyBj
b250YWluaW5nIGJsb2NrcywgZXZlbiBpZiBkb2luZyBzbyByZXF1aXJlcyBzcGxpdHRpbmcgYSB3
b3JkIHdoZXJlIHRoZXJlCisgICAgLy8gaXMgbm8gbGluZSBicmVha2luZyBvcHBvcnR1bml0eS4g
KFRodXMsIG5vcm1hbGx5IHRleHQgd3JhcHMgYXMgbmVlZGVkLAorICAgIC8vIGJ1dCBpZiB0aGVy
ZSBpcyBhIHBhcnRpY3VsYXJseSBsb25nIHdvcmQsIGl0IGRvZXMgbm90IG92ZXJmbG93IGFzIGl0
CisgICAgLy8gbm9ybWFsbHkgd291bGQgaW4gQ1NTLCBpdCBpcyBpbnN0ZWFkIGZvcmNpYmx5IHdy
YXBwZWQgYXQgdGhlIGJveCdzIGVkZ2UuKQorCisgICAgLy8gRklYTUUoQlVHIDc5NzUwLCA3OTc1
MSk6IFN0ZXBzIDEwLjEyIC0gMTAuMTQKKworICAgIG1fZGlzcGxheVRyZWVTaG91bGRDaGFuZ2Ug
PSBmYWxzZTsKKworICAgIC8vIDEwLjE1LiBMZXQgY3VlJ3MgdGV4dCB0cmFjayBjdWUgZGlzcGxh
eSBzdGF0ZSBoYXZlIHRoZSBDU1MgYm94ZXMgaW4KKyAgICAvLyBib3hlcy4KKyAgICByZXR1cm4g
bV9kaXNwbGF5VHJlZTsKIH0KIAogdm9pZCBUZXh0VHJhY2tDdWU6OnBhcnNlU2V0dGluZ3MoY29u
c3QgU3RyaW5nJiBpbnB1dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5o
CmluZGV4IDZjZjk3OTM5ZGIyYjJlNGUxMTgzMzA4NDM5NWNmNDdiZDUxMjNjMDUuLjQwMTEzMmQ5
NjQxYzhkNWM0MWVmNjNjZWM1N2VhNTBkYWY2N2Y4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFRleHRUcmFjazsKK2NsYXNzIEhUTUxEaXZFbGVtZW50OwogCiBjbGFzcyBUZXh0VHJh
Y2tDdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJn
ZXQgewogcHVibGljOgpAQCAtMTAwLDYgKzEwMSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWN0
aXZlKCk7CiAgICAgdm9pZCBzZXRJc0FjdGl2ZShib29sKTsKIAorICAgIFBhc3NSZWZQdHI8SFRN
TERpdkVsZW1lbnQ+IGdldERpc3BsYXlUcmVlKCk7CisKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCkBAIC0xMTAsNyAr
MTEzLDYgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrQ3VlPjo6ZGVy
ZWY7CiAKIHByb3RlY3RlZDoKLQogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCk7CiAKQEAgLTExOCw2ICsxMjAsOCBAQCBwcml2YXRlOgogICAgIFRleHRUcmFja0N1
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIHN0YXJ0
LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0dGlu
Z3MsIGJvb2wgcGF1c2VPbkV4aXQpOwogCiAgICAgdm9pZCBwYXJzZVNldHRpbmdzKGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgZGV0ZXJtaW5lRGlzcGxheVBhcmFtZXRlcnMoKTsKKwogICAgIHZv
aWQgY3VlV2lsbENoYW5nZSgpOwogICAgIHZvaWQgY3VlRGlkQ2hhbmdlKCk7CiAKQEAgLTE0OCw2
ICsxNTIsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0FjdGl2ZTsKICAgICBib29sIG1fcGF1
c2VPbkV4aXQ7CiAgICAgYm9vbCBtX3NuYXBUb0xpbmVzOworCisgICAgYm9vbCBtX2Rpc3BsYXlU
cmVlU2hvdWxkQ2hhbmdlOworICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gbV9kaXNwbGF5VHJl
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NTAzNDE4ODY4NzM1NmQw
ZWIyZDNhNGJjZmMyNDU2MTZlNjZlOWM0Li42ZmU5ZjRmYTk4NjJmZTdjNjgxYmNiNWJhZjJmNmI2
NWNmODBhNjM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDMtMDkgIFZpY3RvciBDYXJi
dW5lICA8dmNhcmJ1bmVAYWRvYmUuY29tPgorCisgICAgICAgIFVwZGF0ZWQgbGF5b3V0IHRlc3Rz
IGZvciBiYXNpYyByZW5kZXJpbmcgb2YgY3Vlcy4KKyAgICAgICAgU29tZSBDaHJvbWl1bSB0ZXN0
cyByZXF1aXJlIHJlYmFzZWxpbmluZyBhbmQgaGF2ZSBiZWVuIG1hcmtlZCBhY2NvcmRpbmdseS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3NDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlh
L21lZGlhLWNvbnRyb2xzLmpzOiBBZGp1c3RlZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgICht
ZWRpYUNvbnRyb2xzRWxlbWVudCk6CisgICAgICAgICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCk6
IElmIHRoZSBtZXRob2QgaXMgY2FsbGVkIHdpdGggb25seQorICAgICAgICBvbmUgcGFyYW1ldGVy
LCBpdCByZXR1cm5zIHRoZSB0ZXh0IHRyYWNrIGNvbnRhaW5lciBpbnN0ZWFkIG9mCisgICAgICAg
IGEgc3BlY2lmaWMgY3VlLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxl
LXRleHQtZXhwZWN0ZWQudHh0OiBBZGp1c3RlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFj
ay1jdWUtbm90aGluZy10by1yZW5kZXItZXhwZWN0ZWQudHh0OiBBZGp1c3RlZC4KKyAgICAgICAg
KiBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDogQWRqdXN0ZWQu
CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sOiBBZGp1c3Rl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6IE1h
cmtlZCB0ZXN0cyB0aGF0IG5lZWQgdG8KKyAgICAgICAgYmUgcmViYXNlbGluZWQgYWNjb3JkaW5n
bHkuCisKIDIwMTItMDMtMDggIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbVjhdIEZpeCBvYmplY3Qgc2NvcGUgZm9yIGlubGluZSBldmVudCBhdHRyaWJ1dGUg
aGFuZGxlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNvbnRyb2xzLmpz
IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbHMuanMKaW5kZXggNDQ4N2QxODk5ZDBm
MjA1ZjRmYjMwMTc0MzUwNTc3YzE5OTM0NTE4Yy4uZTQ0NDlkOTFmODczNTJmMzZiYWE4MzBjMGQ5
YTQyMmJiMmQwZGVjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJv
bHMuanMKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtY29udHJvbHMuanMKQEAgLTIsNyAr
Miw2IEBACiBmdW5jdGlvbiBtZWRpYUNvbnRyb2xzRWxlbWVudChmaXJzdCwgaWQpCiB7CiAgICAg
Zm9yICh2YXIgZWxlbWVudCA9IGZpcnN0OyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC5uZXh0
U2libGluZykgewotCiAgICAgICAgIC8vIE5vdCBldmVyeSBlbGVtZW50IGluIHRoZSBtZWRpYSBj
b250cm9scyBoYXMgYSBzaGFkb3cgcHNldWRvIElELCBlZy4gdGhlCiAgICAgICAgIC8vIHRleHQg
bm9kZXMgZm9yIHRoZSB0aW1lIHZhbHVlcywgc28gZ3VhcmQgYWdhaW5zdCBleGNlcHRpb25zLgog
ICAgICAgICB0cnkgewpAQCAtMzUsOSArMzQsMjAgQEAgZnVuY3Rpb24gbWVkaWFDb250cm9sc0J1
dHRvbkNvb3JkaW5hdGVzKGVsZW1lbnQsIGlkKQogCiBmdW5jdGlvbiB0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudChwYXJlbnRFbGVtZW50LCBpZCkKIHsKLSAgICB2YXIgY29udHJvbElEID0gIi13ZWJr
aXQtbWVkaWEtdGV4dC10cmFjay0iICsgaWQ7Ci0gICAgdmFyIGRpc3BsYXlFbGVtZW50ID0gbWVk
aWFDb250cm9sc0VsZW1lbnQoaW50ZXJuYWxzLnNoYWRvd1Jvb3QocGFyZW50RWxlbWVudCkuZmly
c3RDaGlsZCwgY29udHJvbElEKTsKKyAgICB2YXIgdGV4dFRyYWNrQ29udGFpbmVySUQgPSAiLXdl
YmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciI7CisgICAgdmFyIGNvbnRhaW5lckVsZW1l
bnQgPSBtZWRpYUNvbnRyb2xzRWxlbWVudChpbnRlcm5hbHMuc2hhZG93Um9vdChwYXJlbnRFbGVt
ZW50KS5maXJzdENoaWxkLCAiLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWNvbnRhaW5lciIpOwor
CisgICAgaWYgKCFjb250YWluZXJFbGVtZW50KQorICAgICAgICB0aHJvdyAiRmFpbGVkIHRvIGZp
bmQgdGV4dCB0cmFjayBjb250YWluZXIgZWxlbWVudCI7CisKKyAgICBpZiAoIWlkKQorICAgICAg
ICByZXR1cm4gY29udGFpbmVyRWxlbWVudDsKKworICAgIHZhciBjb250cm9sSUQgPSAiLXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLSIgKyBhcmd1bWVudHNbMV07CisKKyAgICB2YXIgZGlzcGxheUVs
ZW1lbnQgPSBtZWRpYUNvbnRyb2xzRWxlbWVudChjb250YWluZXJFbGVtZW50LmZpcnN0Q2hpbGQs
IGNvbnRyb2xJRCk7CiAgICAgaWYgKCFkaXNwbGF5RWxlbWVudCkKLSAgICAgICAgdGhyb3cgIkZh
aWxlZCB0byBmaW5kIG1lZGlhIGNvbnRyb2wgZWxlbWVudCBJRCAnIiArIGNvbnRyb2xJRCArICIn
IjsKKyAgICAgICAgdGhyb3cgIk5vIHRleHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBpZCAnIiAr
IGNvbnRyb2xJRCArICInIGlzIGN1cnJlbnRseSB2aXNpYmxlIjsKKwogICAgIHJldHVybiBkaXNw
bGF5RWxlbWVudDsKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtbXV0YWJsZS10ZXh0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZXhw
ZWN0ZWQudHh0CmluZGV4IGNlYTkwYTBmMzFhMzM5ZjUxNjUyZmZkNmY0NDFkZDc2OGIwOWIxYjku
Ljg5NWZmMDVhODA2MmNmNjI0ZWM0NTQ0YzQ1NTY4NzY5ZmJjOTRjMDEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1tdXRhYmxlLXRleHQtZXhw
ZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBUZXN0IHRoYXQgY3VlIHRleHQgaXMgbXV0YWJsZS4K
IAogKiogVGVzdCBpbml0aWFsIGN1ZSBpbmZvCiBFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLmFj
dGl2ZUN1ZXMubGVuZ3RoID09ICcwJykgT0sKLUVYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxl
bWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJycpIE9LCitObyB0ZXh0IHRyYWNr
IGN1ZSB3aXRoIGRpc3BsYXkgaWQgJy13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5JyBp
cyBjdXJyZW50bHkgdmlzaWJsZQogRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5jdWVzWzBdLnN0
YXJ0VGltZSA9PSAnMScpIE9LCiBFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLmN1ZXNbMV0uc3Rh
cnRUaW1lID09ICczJykgT0sKIEVYUEVDVEVEICh0ZXN0VHJhY2sudHJhY2suY3Vlc1swXS50ZXh0
ID09ICdMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwnKSBPSwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLW5vdGhpbmctdG8tcmVuZGVyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1ub3RoaW5nLXRvLXJlbmRlci1l
eHBlY3RlZC50eHQKaW5kZXggZjZhNWY4ODA2MWQ3N2JkOTkxMzE3N2JlYjNjNGU3MTVjYmI1NWM4
Ni4uMmU4YTc4OWJlMzEzNjZkNTJiYTMwNDlhNDVlNDk4MWViNGMxMTM2ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLW5vdGhpbmctdG8tcmVuZGVyLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtbm90aGluZy10
by1yZW5kZXItZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBUZXN0IHRoYXQgY3VlcyBhcmUg
cmVuZGVyZWQgYW5kIHJlbW92ZWQuCiBFVkVOVChjYW5wbGF5dGhyb3VnaCkKIEVWRU5UKHNlZWtl
ZCkKIEVYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDEpID09ICcwLjUnKSBPSwot
RVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVy
VGV4dCA9PSAnJykgT0sKK05vIHRleHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBpZCAnLXdlYmtp
dC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXknIGlzIGN1cnJlbnRseSB2aXNpYmxlCiAKIFJVTih2
aWRlby5jdXJyZW50VGltZSA9IDEuNSkKIEVWRU5UKHNlZWtlZCkKQEAgLTE0LDcgKzE0LDcgQEAg
RVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVy
VGV4dCA9PSAnTG9yZW0gaXBzdW0gZG8KIFJVTih2aWRlby5jdXJyZW50VGltZSA9IDIuNSkKIEVW
RU5UKHNlZWtlZCkKIEVYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZS50b0ZpeGVkKDEpID09ICcy
LjUnKSBPSwotRVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxh
eScpLmlubmVyVGV4dCA9PSAnJykgT0sKK05vIHRleHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBp
ZCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXknIGlzIGN1cnJlbnRseSB2aXNpYmxl
CiAKIFJVTih2aWRlby5jdXJyZW50VGltZSA9IDMuMykKIEVWRU5UKHNlZWtlZCkKQEAgLTI1LDcg
KzI1LDcgQEAgRVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxh
eScpLmlubmVyVGV4dCA9PSAnY29uc2VjdGV0dWVyIGEKIFJVTih2aWRlby5jdXJyZW50VGltZSA9
IDAuNikKIEVWRU5UKHNlZWtlZCkKIEVYUEVDVEVEICh2aWRlby5jdXJyZW50VGltZS50b0ZpeGVk
KDEpID09ICcwLjYnKSBPSwotRVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVv
LCAnZGlzcGxheScpLmlubmVyVGV4dCA9PSAnJykgT0sKK05vIHRleHQgdHJhY2sgY3VlIHdpdGgg
ZGlzcGxheSBpZCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXknIGlzIGN1cnJlbnRs
eSB2aXNpYmxlCiAKIFJVTih2aWRlby5jdXJyZW50VGltZSA9IDUuOSkKIEVWRU5UKHNlZWtlZCkK
QEAgLTM2LDcgKzM2LDcgQEAgRVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVv
LCAnZGlzcGxheScpLmlubmVyVGV4dCA9PSAnc2VkIGRpYW0gbm9udW0KIFJVTih2aWRlby5jdXJy
ZW50VGltZSA9IDQuNCkKIEVWRU5UKHNlZWtlZCkKIEVYUEVDVEVEICh2aWRlby5jdXJyZW50VGlt
ZS50b0ZpeGVkKDEpID09ICc0LjQnKSBPSwotRVhQRUNURUQgKHRleHRUcmFja0Rpc3BsYXlFbGVt
ZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVyVGV4dCA9PSAnJykgT0sKK05vIHRleHQgdHJhY2sg
Y3VlIHdpdGggZGlzcGxheSBpZCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXknIGlz
IGN1cnJlbnRseSB2aXNpYmxlCiAKIFJVTih2aWRlby5jdXJyZW50VGltZSA9IDcuOSkKIEVWRU5U
KHNlZWtlZCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1y
ZW5kZXJpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vl
LXJlbmRlcmluZy1leHBlY3RlZC50eHQKaW5kZXggMWYyY2VkZmQxMTE2NzI2YTNkMTBiNjg5NDMy
ZjA0Njg0OGQzN2QyMi4uMDNkMDQ5YTY1NWU2YjkzYjQzNjIzMTAwNjRkZTFlMzIxOWNhZWU1OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRl
cmluZy1leHBlY3RlZC50eHQKQEAgLTMwLDIyICszMCwyMiBAQCBFWFBFQ1RFRCAodGV4dFRyYWNr
RGlzcGxheUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuaW5uZXJUZXh0ID09ICdzaXQnKSBPSwog
VGVzdCB0aGUgY3VlIGRpc3BsYXkgY29sb3JzIGFuZCBmb250LgogUlVOKHZpZGVvLndpZHRoID0g
MzIwKQogUlVOKHZpZGVvLmhlaWdodCA9IDI0MCkKLUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxl
KHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY29udGFpbmVyJykpLmZvbnRTaXplID09
ICcxMnB4JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlF
bGVtZW50KHZpZGVvKSkuZm9udFNpemUgPT0gJzEycHgnKSBPSwogCiBSVU4odmlkZW8ud2lkdGgg
PSA2NDApCiBSVU4odmlkZW8uaGVpZ2h0ID0gNDgwKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5
bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjb250YWluZXInKSkuZm9udFNpemUg
PT0gJzI0cHgnKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQodmlkZW8pKS5mb250U2l6ZSA9PSAnMjRweCcpIE9LCiAKIFJVTih2aWRlby53aWR0
aCA9IDEyODApCiBSVU4odmlkZW8uaGVpZ2h0ID0gOTYwKQotRVhQRUNURUQgKGdldENvbXB1dGVk
U3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjb250YWluZXInKSkuZm9udFNp
emUgPT0gJzQ4cHgnKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlz
cGxheUVsZW1lbnQodmlkZW8pKS5mb250U2l6ZSA9PSAnNDhweCcpIE9LCiAKIFJVTih2aWRlby53
aWR0aCA9IDI1NjApCiBSVU4odmlkZW8uaGVpZ2h0ID0gMTQ0MCkKLUVYUEVDVEVEIChnZXRDb21w
dXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY29udGFpbmVyJykpLmZv
bnRTaXplID09ICc3MnB4JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFj
a0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udFNpemUgPT0gJzcycHgnKSBPSwogCi1FWFBFQ1RF
RCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2NvbnRh
aW5lcicpKS5mb250RmFtaWx5ID09ICdzYW5zLXNlcmlmJykgT0sKLUVYUEVDVEVEIChnZXRDb21w
dXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY29udGFpbmVyJykpLmNv
bG9yID09ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRl
ZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udEZhbWlseSA9PSAnc2Fu
cy1zZXJpZicpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudCh2aWRlbykpLmNvbG9yID09ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJykgT0sKIEVY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAn
ZGlzcGxheScpKS5iYWNrZ3JvdW5kQ29sb3IgPT0gJ3JnYmEoMCwgMCwgMCwgMC43OTY4NzUpJykg
T0sKIEVORCBPRiBURVNUCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLWN1ZS1yZW5kZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1
ZS1yZW5kZXJpbmcuaHRtbAppbmRleCA2OWEwOWNmNjVlYjU5N2Y4NTMzOTYyODM5ZGY2MmRmYmRk
OGM3NDg3Li5jMTdiNzE3MzU0YWJmMjBlMWFjMzRkODU0NmJiYjFmZTE1NDNiNDVhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sCkBAIC0x
OCw3ICsxOCw3IEBACiAgICAgICAgICAgICBydW4oInZpZGVvLndpZHRoID0gIiArIHdpZHRoKTsK
ICAgICAgICAgICAgIHJ1bigidmlkZW8uaGVpZ2h0ID0gIiArIGhlaWdodCk7CiAgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2NvbnRhaW5lcicp
KS5mb250U2l6ZSIsIHBhcnNlSW50KGhlaWdodCAqIDAuMDUpICsgInB4Iik7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQo
dmlkZW8pKS5mb250U2l6ZSIsIHBhcnNlSW50KGhlaWdodCAqIDAuMDUpICsgInB4Iik7CiAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwogICAgICAgICB9CiAKQEAgLTMwLDggKzMwLDggQEAK
ICAgICAgICAgICAgIHRlc3RGb250U2l6ZSgxMjgwLCA5NjApOwogICAgICAgICAgICAgdGVzdEZv
bnRTaXplKDI1NjAsIDE0NDApOwogCi0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1
dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjb250YWluZXInKSkuZm9u
dEZhbWlseSIsICJzYW5zLXNlcmlmIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENv
bXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjb250YWluZXInKSku
Y29sb3IiLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwKSIpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9u
dEZhbWlseSIsICJzYW5zLXNlcmlmIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENv
bXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5jb2xvciIsICJyZ2Jh
KDI1NSwgMjU1LCAyNTUsIDApIik7CiAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1
dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykpLmJhY2tn
cm91bmRDb2xvciIsICJyZ2JhKDAsIDAsIDAsIDAuNzk2ODc1KSIpOwogCiAgICAgICAgICAgICBl
bmRUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKaW5kZXggMmI5ZGY1MTU5YTcxOTBiY2QwNzk3NmM1MmZjMTBlOGQ5OTE1
ZjYzYS4uMjI2OGIzOThmZGYwNTc1ZWIxZDM1YmU4Y2ZlZGU0ZWEzMTkwOTIxMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApA
QCAtMzQxNSw2ICszNDE1LDMyIEBAIEJVR1dLNzM4NjUgOiBtZWRpYS90cmFjay90cmFja2xpc3Qt
aXMtcmVhY2hhYmxlLmh0bWwgPSBURVhUIENSQVNICiBCVUdXSzczODY1IDogbWVkaWEvdHJhY2sv
dGV4dC10cmFjay1jdWUtaXMtcmVhY2hhYmxlLmh0bWwgPSBURVhUIENSQVNICiBCVUdXSzczODY1
IDogbWVkaWEvdHJhY2svdGV4dC10cmFjay1pcy1yZWFjaGFibGUuaHRtbCA9IFRFWFQgQ1JBU0gK
IAorLy8gTmVlZCByZWJhc2VsaW5pbmcKK0JVR1dLNzk3NDYgOiBtZWRpYS9tZWRpYS1kb2N1bWVu
dC1hdWRpby1yZXBhaW50Lmh0bWwgPSBJTUFHRStURVhUCitCVUdXSzc5NzQ2IDogbWVkaWEvdmlk
ZW8tbm8tYXVkaW8uaHRtbCA9IElNQUdFK1RFWFQKK0JVR1dLNzk3NDYgOiBtZWRpYS9jb250cm9s
cy1zdHJpY3QuaHRtbCA9IElNQUdFK1RFWFQKK0JVR1dLNzk3NDYgOiBtZWRpYS92aWRlby12b2x1
bWUtc2xpZGVyLmh0bWwgPSBJTUFHRStURVhUCitCVUdXSzc5NzQ2IDogbWVkaWEvY29udHJvbHMt
c3R5bGluZy5odG1sID0gSU1BR0UrVEVYVAorQlVHV0s3OTc0NiA6IG1lZGlhL3ZpZGVvLWRpc3Bs
YXktdG9nZ2xlLmh0bWwgPSBJTUFHRStURVhUCitCVUdXSzc5NzQ2IDogbWVkaWEvYXVkaW8tY29u
dHJvbHMtcmVuZGVyaW5nLmh0bWwgPSBJTUFHRStURVhUCitCVUdXSzc5NzQ2IDogbWVkaWEvdmlk
ZW8tem9vbS1jb250cm9scy5odG1sID0gSU1BR0UrVEVYVAorQlVHV0s3OTc0NiA6IG1lZGlhL3Zp
ZGVvLWNvbnRyb2xzLXJlbmRlcmluZy5odG1sID0gSU1BR0UrVEVYVAorQlVHV0s3OTc0NiA6IG1l
ZGlhL2NvbnRyb2xzLXdpdGhvdXQtcHJlbG9hZC5odG1sID0gSU1BR0UrVEVYVAorQlVHV0s3OTc0
NiA6IG1lZGlhL21lZGlhLWNvbnRyb2xzLWNsb25lLmh0bWwgPSBJTUFHRStURVhUCitCVUdXSzc5
NzQ2IDogZmFzdC9sYXllcnMvdmlkZW8tbGF5ZXIuaHRtbCA9IElNQUdFK1RFWFQKK0JVR1dLNzk3
NDYgOiBtZWRpYS92aWRlby1lbXB0eS1zb3VyY2UuaHRtbCA9IElNQUdFK1RFWFQKK0JVR1dLNzk3
NDYgOiBtZWRpYS92aWRlby1wbGF5aW5nLWFuZC1wYXVzZS5odG1sID0gSU1BR0UrVEVYVAorQlVH
V0s3OTc0NiA6IG1lZGlhL2NvbnRyb2xzLWFmdGVyLXJlbG9hZC5odG1sID0gSU1BR0UrVEVYVAor
QlVHV0s3OTc0NiA6IG1lZGlhL2F1ZGlvLXJlcGFpbnQuaHRtbCA9IElNQUdFK1RFWFQKK0JVR1dL
Nzk3NDYgOiBtZWRpYS9jb250cm9scy1sYXlvdXQtZGlyZWN0aW9uLmh0bWwgPSBJTUFHRQorQlVH
V0s3OTc0NiA6IG1lZGlhL3ZpZGVvLWFzcGVjdC1yYXRpby5odG1sID0gSU1BR0UKK0JVR1dLNzk3
NDYgOiBtZWRpYS92aWRlby1jb2xvcnNwYWNlLXl1djQyMC5odG1sID0gSU1BR0UKK0JVR1dLNzk3
NDYgOiBtZWRpYS92aWRlby1jb2xvcnNwYWNlLXl1djQyMi5odG1sID0gSU1BR0UKK0JVR1dLNzk3
NDYgOiBtZWRpYS92aWRlby1mcmFtZS1hY2N1cmF0ZS1zZWVrLmh0bWwgPSBJTUFHRQorQlVHV0s3
OTc0NiA6IG1lZGlhL3ZpZGVvLWxheWVyLWNyYXNoLmh0bWwgPSBJTUFHRQorQlVHV0s3OTc0NiA6
IG1lZGlhL3ZpZGVvLXRyYW5zZm9ybWVkLmh0bWwgPSBJTUFHRQorQlVHV0s3OTc0NiA6IG1lZGlh
L3ZpZGVvLXpvb20uaHRtbCA9IElNQUdFCisKIEJVR1dLNzIyNzEgTUFDIERFQlVHIDogZmFzdC9s
b2FkZXIvamF2YXNjcmlwdC11cmwtaW4tZW1iZWQuaHRtbCA9IFBBU1MgQ1JBU0gKIEJVR1dLNzIy
NzEgU05PV0xFT1BBUkQgREVCVUcgOiBmYXN0L2RvbS9ub2RlLWl0ZXJhdG9yLXJlZmVyZW5jZS1u
b2RlLW1vdmVkLWNyYXNoLmh0bWwgPSBQQVNTIENSQVNICiAKQEAgLTM2OTQsOSArMzcyMCw2IEBA
IEJVR1dLODA1MTcgREVCVUcgOiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQtcmVtb3ZlLWxpZ2h0CiBCVUdDUjExNDc3NyA6IGNvbXBvc2l0aW5nL2N1bGxp
bmcvZmlsdGVyLW9jY2x1c2lvbi1ibHVyLWxhcmdlLmh0bWwgPSBQQVNTIElNQUdFCiBCVUdDUjEx
NDc3NyA6IGNvbXBvc2l0aW5nL2N1bGxpbmcvZmlsdGVyLW9jY2x1c2lvbi1ibHVyLmh0bWwgPSBQ
QVNTIElNQUdFCiAKLS8vIE5lZWRzIHJlYmFzZWxpbmUKLUJVR1dLNzg4NzggOiBtZWRpYS9hdWRp
by1yZXBhaW50Lmh0bWwgPSBJTUFHRQotCiAvLyBOZWVkcyBuZXcgYmFzZWxpbmVzLgogQlVHV0s2
NTA3MiA6IHN2Zy90ZXh0L2V4cy1kaXNwbGF5LW5vbmUuc3ZnID0gSU1BR0UgSU1BR0UrVEVYVAog
QlVHV0s2NTA3MiA6IHN2Zy90ZXh0L2Vtcy1kaXNwbGF5LW5vbmUuc3ZnID0gSU1BR0UgSU1BR0Ur
VEVYVAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>