<?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>201368</bug_id>
          
          <creation_ts>2019-08-30 17:08:20 -0700</creation_ts>
          <short_desc>Mail appears to be double inverting code copied from Notes, Xcode, or Terminal</short_desc>
          <delta_ts>2019-09-04 19:52:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1566893</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-08-30 17:08:20 -0700</bug_when>
    <thetext>Copied text from Xcode or Terminal in dark mode will show as light when pasted in a dark mode Mail compose window.

&lt;rdar://problem/40529867&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566894</commentid>
    <comment_count>1</comment_count>
      <attachid>377773</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-08-30 17:11:58 -0700</bug_when>
    <thetext>Created attachment 377773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567387</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-09-03 08:16:03 -0700</bug_when>
    <thetext>iOS EWS failures are unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567508</commentid>
    <comment_count>3</comment_count>
      <attachid>377773</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-03 14:19:57 -0700</bug_when>
    <thetext>Comment on attachment 377773
Patch

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

Are we trying to detect the dark mode content? That doesn&apos;t sound right.
The attributed string itself should contain that information.

r- because I don&apos;t think this patch should be landed as is.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:530
&gt; +    ContainerNode* context = insertedNodes.firstNodeInserted()-&gt;parentNode();

This is not safe. updateLayoutIgnorePendingStylesheets can delete this node. Need to use RefPtr.
Also, why is it okay to not do this work when we&apos;re inserting into a list item?

This work probably needs to be done right before we start inserting contents where hasBlankLinesBetweenParagraphs, etc... is computed.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:537
&gt; +    auto* contextRenderer = context-&gt;renderer();
&gt; +    if (!contextRenderer || !contextRenderer-&gt;style().hasAppleColorFilter())

Why don&apos;t we just check the style of the root editable element?
Realistically speaking, applying color filter to some part of the editable region isn&apos;t gonna work anyway.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:541
&gt; +    // Only the apple-invert-lightness() color filter is supported. It is the only
&gt; +    // FilterOperation that implements inverseTransformColor().

This is obvious from the code. I don&apos;t think we need this comment.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:564
&gt; +    // Check the top-level inserted node&apos;s text and background colors. If any node has
&gt; +    // dark text or light background colors, abort before the transformation step.

I don&apos;t think we need this comment. It&apos;s self-evident from the code.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:565
&gt; +    RefPtr&lt;Node&gt; pastEndNode = insertedNodes.pastLastSibling();

Please use pastLastLeaf() as we&apos;ve done elsewhere.
Introducing a new traversal code like this is very likely going to result in a hang or a crash.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:574
&gt; +        auto* element = downcast&lt;StyledElement&gt;(node.get());
&gt; +        auto* inlineStyle = element-&gt;inlineStyle();

Please don&apos;t use raw pointers.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:578
&gt; +        // Abort if the text color is too dark.

Ditto.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:583
&gt; +        // Abort if the background color is too light.

Ditto.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:597
&gt; +        StyledElement* element = downcast&lt;StyledElement&gt;(node.get());

Please don&apos;t use raw pointers.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:599
&gt; +        auto* inlineStyle = element-&gt;inlineStyle();

Ditto.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.h:85
&gt; +        Node* pastLastSibling() const

Why do we need to add this?

&gt; LayoutTests/editing/pasteboard/paste-dark-mode-color-filtered.html:41
&gt; +        document.execCommand(&quot;SelectAll&quot;, false);
&gt; +        document.execCommand(&quot;Copy&quot;, false);
&gt; +
&gt; +        copyNode.remove();

This will not test cross origin / cross app sanitization code path.
We should probably add an equivalent API test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567592</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-09-03 17:56:33 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #3)
&gt; Comment on attachment 377773 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377773&amp;action=review
&gt; 
&gt; Are we trying to detect the dark mode content? That doesn&apos;t sound right.
&gt; The attributed string itself should contain that information.

Attributed strings and the HTML pasteboard data does not contain any information on dark or light appearance of the original content. So unfortunately, we have to detect based on the color information. This is an area I plan to bring up with the AppKit/UIKit team.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567595</commentid>
    <comment_count>5</comment_count>
      <attachid>377773</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-09-03 18:08:47 -0700</bug_when>
    <thetext>Comment on attachment 377773
Patch

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

&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:530
&gt;&gt; +    ContainerNode* context = insertedNodes.firstNodeInserted()-&gt;parentNode();
&gt; 
&gt; This is not safe. updateLayoutIgnorePendingStylesheets can delete this node. Need to use RefPtr.
&gt; Also, why is it okay to not do this work when we&apos;re inserting into a list item?
&gt; 
&gt; This work probably needs to be done right before we start inserting contents where hasBlankLinesBetweenParagraphs, etc... is computed.

I&apos;ll update this to use RefPtr.

I don&apos;t understand why this needs to happen before hasBlankLinesBetweenParagraphs. Are you suggesting modifying the fragment? Nothing else seems to do that.

Pasting into a list as list items works as expected with this code. I&apos;ll add a test to show it.

&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:537
&gt;&gt; +    if (!contextRenderer || !contextRenderer-&gt;style().hasAppleColorFilter())
&gt; 
&gt; Why don&apos;t we just check the style of the root editable element?
&gt; Realistically speaking, applying color filter to some part of the editable region isn&apos;t gonna work anyway.

This matches other code we have in EditingStyle::inverseTransformColorIfNeeded(). A color filter can be applied to any element, undoing filtering or applying other filters. It is best to check the most relevant element for the correct color filter. It is also inherited.

&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:541
&gt;&gt; +    // FilterOperation that implements inverseTransformColor().
&gt; 
&gt; This is obvious from the code. I don&apos;t think we need this comment.

Sure.

&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:564
&gt;&gt; +    // dark text or light background colors, abort before the transformation step.
&gt; 
&gt; I don&apos;t think we need this comment. It&apos;s self-evident from the code.

Sure.

&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:565
&gt;&gt; +    RefPtr&lt;Node&gt; pastEndNode = insertedNodes.pastLastSibling();
&gt; 
&gt; Please use pastLastLeaf() as we&apos;ve done elsewhere.
&gt; Introducing a new traversal code like this is very likely going to result in a hang or a crash.

I use NodeTraversal::nextSkippingChildren() in this loop, not NodeTraversal::next(), so I needed a matching past-end node.

&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:574
&gt;&gt; +        auto* inlineStyle = element-&gt;inlineStyle();
&gt; 
&gt; Please don&apos;t use raw pointers.

I&apos;ll fix StyledElement, but the inlineStyle pointer is unavoidable. No?

&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:597
&gt;&gt; +        StyledElement* element = downcast&lt;StyledElement&gt;(node.get());
&gt; 
&gt; Please don&apos;t use raw pointers.

See above.

&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:599
&gt;&gt; +        auto* inlineStyle = element-&gt;inlineStyle();
&gt; 
&gt; Ditto.

See above.

&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.h:85
&gt;&gt; +        Node* pastLastSibling() const
&gt; 
&gt; Why do we need to add this?

See above.

&gt;&gt; LayoutTests/editing/pasteboard/paste-dark-mode-color-filtered.html:41
&gt;&gt; +        copyNode.remove();
&gt; 
&gt; This will not test cross origin / cross app sanitization code path.
&gt; We should probably add an equivalent API test.

If my change touched these areas, sure. Otherwise is that really needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567613</commentid>
    <comment_count>6</comment_count>
      <attachid>377773</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-09-03 19:59:04 -0700</bug_when>
    <thetext>Comment on attachment 377773
Patch

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

&gt;&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:565
&gt;&gt;&gt; +    RefPtr&lt;Node&gt; pastEndNode = insertedNodes.pastLastSibling();
&gt;&gt; 
&gt;&gt; Please use pastLastLeaf() as we&apos;ve done elsewhere.
&gt;&gt; Introducing a new traversal code like this is very likely going to result in a hang or a crash.
&gt; 
&gt; I use NodeTraversal::nextSkippingChildren() in this loop, not NodeTraversal::next(), so I needed a matching past-end node.

After thinking about it more, I&apos;m just going to use NodeTraversal::next() and pastLastLeaf() for simplicity and consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567646</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-03 22:08:07 -0700</bug_when>
    <thetext>(In reply to Timothy Hatcher from comment #5)
&gt; Comment on attachment 377773 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377773&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:530
&gt; &gt;&gt; +    ContainerNode* context = insertedNodes.firstNodeInserted()-&gt;parentNode();
&gt; &gt; 
&gt; &gt; This is not safe. updateLayoutIgnorePendingStylesheets can delete this node. Need to use RefPtr.
&gt; &gt; Also, why is it okay to not do this work when we&apos;re inserting into a list item?
&gt; &gt; 
&gt; &gt; This work probably needs to be done right before we start inserting contents where hasBlankLinesBetweenParagraphs, etc... is computed.
&gt; 
&gt; I&apos;ll update this to use RefPtr.
&gt; 
&gt; I don&apos;t understand why this needs to happen before
&gt; hasBlankLinesBetweenParagraphs. Are you suggesting modifying the fragment?
&gt; Nothing else seems to do that.

No, I mean that you&apos;d have to determine whether color filter is used or not prior to the fragment being inserted. The thing about editing code is that we need to be always mindful of scripts in the document synchronously modifying things. It&apos;s not safe to assume the container means what we think it means once nodes are inserted.

&gt; Pasting into a list as list items works as expected with this code. I&apos;ll add
&gt; a test to show it.

Okay.

&gt; &gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:537
&gt; &gt;&gt; +    if (!contextRenderer || !contextRenderer-&gt;style().hasAppleColorFilter())
&gt; &gt; 
&gt; &gt; Why don&apos;t we just check the style of the root editable element?
&gt; &gt; Realistically speaking, applying color filter to some part of the editable region isn&apos;t gonna work anyway.
&gt; 
&gt; This matches other code we have in
&gt; EditingStyle::inverseTransformColorIfNeeded(). A color filter can be applied
&gt; to any element, undoing filtering or applying other filters. It is best to
&gt; check the most relevant element for the correct color filter. It is also
&gt; inherited.

I disagree. What happens if only a part of the selection was inside the inverted color and the part was not inverted? That just makes no sense. To make matters worse, as you insert more content, CSS selectors that depend on sibling combinator, etc... could change whether a given node has a filter or not. So it&apos;s not really a fruitful endeavor. 

&gt; &gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:565
&gt; &gt;&gt; +    RefPtr&lt;Node&gt; pastEndNode = insertedNodes.pastLastSibling();
&gt; &gt; 
&gt; &gt; Please use pastLastLeaf() as we&apos;ve done elsewhere.
&gt; &gt; Introducing a new traversal code like this is very likely going to result in a hang or a crash.
&gt; 
&gt; I use NodeTraversal::nextSkippingChildren() in this loop, not
&gt; NodeTraversal::next(), so I needed a matching past-end node.

That&apos;s likely wrong. We can&apos;t skip leaf nodes in editing because leaf nodes are often ones that have useful styling infomation.

&gt; &gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:574
&gt; &gt;&gt; +        auto* inlineStyle = element-&gt;inlineStyle();
&gt; &gt; 
&gt; &gt; Please don&apos;t use raw pointers.
&gt; 
&gt; I&apos;ll fix StyledElement, but the inlineStyle pointer is unavoidable. No?

StyleProperties is ref counted you can do: makeRefPtr(element-&gt;inlineStyle()).

&gt; &gt;&gt; LayoutTests/editing/pasteboard/paste-dark-mode-color-filtered.html:41
&gt; &gt;&gt; +        copyNode.remove();
&gt; &gt; 
&gt; &gt; This will not test cross origin / cross app sanitization code path.
&gt; &gt; We should probably add an equivalent API test.
&gt; 
&gt; If my change touched these areas, sure. Otherwise is that really needed?

Yes. Whenever given this bug is about coping from Xcode / Terminal, you&apos;d have to test cross-origin / cross-app sanitization code path. Otherwise, we&apos;re just testing the code path of copying &amp; pasting within Mail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567763</commentid>
    <comment_count>8</comment_count>
      <attachid>377773</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-09-04 08:52:48 -0700</bug_when>
    <thetext>Comment on attachment 377773
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:530
&gt;&gt;&gt;&gt; +    ContainerNode* context = insertedNodes.firstNodeInserted()-&gt;parentNode();
&gt;&gt;&gt; 
&gt;&gt;&gt; This is not safe. updateLayoutIgnorePendingStylesheets can delete this node. Need to use RefPtr.
&gt;&gt;&gt; Also, why is it okay to not do this work when we&apos;re inserting into a list item?
&gt;&gt;&gt; 
&gt;&gt;&gt; This work probably needs to be done right before we start inserting contents where hasBlankLinesBetweenParagraphs, etc... is computed.
&gt;&gt; 
&gt;&gt; I&apos;ll update this to use RefPtr.
&gt;&gt; 
&gt;&gt; I don&apos;t understand why this needs to happen before hasBlankLinesBetweenParagraphs. Are you suggesting modifying the fragment? Nothing else seems to do that.
&gt;&gt; 
&gt;&gt; Pasting into a list as list items works as expected with this code. I&apos;ll add a test to show it.
&gt; 
&gt; No, I mean that you&apos;d have to determine whether color filter is used or not prior to the fragment being inserted. The thing about editing code is that we need to be always mindful of scripts in the document synchronously modifying things. It&apos;s not safe to assume the container means what we think it means once nodes are inserted.

I see, will change.

&gt;&gt;&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:574
&gt;&gt;&gt;&gt; +        auto* inlineStyle = element-&gt;inlineStyle();
&gt;&gt;&gt; 
&gt;&gt;&gt; Please don&apos;t use raw pointers.
&gt;&gt; 
&gt;&gt; I&apos;ll fix StyledElement, but the inlineStyle pointer is unavoidable. No?
&gt; 
&gt; StyleProperties is ref counted you can do: makeRefPtr(element-&gt;inlineStyle()).

No existing code does this when accessing inlineStyle(). inlineStyle() returns const StyleProperties*. Using makeRefPtr() with a const is a build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567765</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-04 08:57:21 -0700</bug_when>
    <thetext>(In reply to Timothy Hatcher from comment #8)
&gt; Comment on attachment 377773 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377773&amp;action=review
&gt;
&gt; &gt;&gt;&gt;&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:574
&gt; &gt;&gt;&gt;&gt; +        auto* inlineStyle = element-&gt;inlineStyle();
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Please don&apos;t use raw pointers.
&gt; &gt;&gt; 
&gt; &gt;&gt; I&apos;ll fix StyledElement, but the inlineStyle pointer is unavoidable. No?
&gt; &gt; 
&gt; &gt; StyleProperties is ref counted you can do: makeRefPtr(element-&gt;inlineStyle()).
&gt; 
&gt; No existing code does this when accessing inlineStyle(). inlineStyle()
&gt; returns const StyleProperties*. Using makeRefPtr() with a const is a build
&gt; failure.

Ugh... we should probably fix that but not in this patch I guess. We&apos;d need to be very careful about when we call inlineStyle() then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567829</commentid>
    <comment_count>10</comment_count>
      <attachid>378001</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-09-04 12:47:41 -0700</bug_when>
    <thetext>Created attachment 378001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567841</commentid>
    <comment_count>11</comment_count>
      <attachid>378001</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-09-04 13:10:56 -0700</bug_when>
    <thetext>Comment on attachment 378001
Patch

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

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:548
&gt; +        if (auto color = inlineStyle.propertyAsColor(propertyID)) {
&gt; +            if (color.value().isVisible() &amp;&amp; !color.value().isSemantic()) {

Can we use an early return instead of nested if&apos;s?

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:563
&gt; +        next = NodeTraversal::next(*node);

Since we&apos;re not modifying code there is no need to compute next early.
Just do: for (RefPtr&lt;Node&gt; node = fragment.firstChild(); node; node = NodeTraversal::next(*node))

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:573
&gt; +        // Abort if the text color is too dark.

I don&apos;t think this comment is necessary. It&apos;s pretty self-evident from the code.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:575
&gt; +        if (textLightness &amp;&amp; *textLightness &lt; textLightnessThreshold)

textLightnessThreshold doesn&apos;t quite tell us what kind threshold it is.
How about lightnessDarkEnoughForText?

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:578
&gt; +        // Abort if the background color is too light.

Ditto.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:580
&gt; +        if (backgroundLightness &amp;&amp; *backgroundLightness &gt; backgroundLightnessThreshold)

How about lightnessLightEnoughForBackground?

&gt; Source/WebCore/editing/ReplaceSelectionCommand.cpp:592
&gt; +    for (RefPtr&lt;Node&gt; node = insertedNodes.firstNodeInserted(); node &amp;&amp; node != pastEndNode; node = next) {
&gt; +        next = NodeTraversal::next(*node);

Ditto about traversal. Updating the attribute doesn&apos;t necessitate storing the next node.
If sync DOM mutation were to occur (I don&apos;t think it could due to event scope),
then such a script would be mutated a node further down in the traversal
so it&apos;s not really meaningful to get just the next immediate node for traversal regardless.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm:389
&gt; +    [webView setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameDarkAqua]];

Maybe we can add a helper function instead of repeating it twice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567850</commentid>
    <comment_count>12</comment_count>
      <attachid>378009</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-09-04 13:31:02 -0700</bug_when>
    <thetext>Created attachment 378009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567873</commentid>
    <comment_count>13</comment_count>
      <attachid>378015</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-09-04 14:27:25 -0700</bug_when>
    <thetext>Created attachment 378015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567969</commentid>
    <comment_count>14</comment_count>
      <attachid>378015</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-04 19:52:46 -0700</bug_when>
    <thetext>Comment on attachment 378015
Patch

Clearing flags on attachment: 378015

Committed r249517: &lt;https://trac.webkit.org/changeset/249517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567970</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-04 19:52:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377773</attachid>
            <date>2019-08-30 17:11:58 -0700</date>
            <delta_ts>2019-09-04 12:47:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201368-20190830171157.patch</filename>
            <type>text/plain</type>
            <size>20600</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ1MTQ1ODk4YjdmMWMx
Njc3YmUzNTg3ZjVhYWIzZTQxODkwOGM3NC4uNTdjNGY0NTUzNzljMmUzY2FhODEzNDNmZTUwZDAx
MjNhMDg3YTRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA4LTMwICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWlsIGFwcGVhcnMg
dG8gYmUgZG91YmxlIGludmVydGluZyBjb2RlIGNvcGllZCBmcm9tIE5vdGVzLCBYY29kZSwgb3Ig
VGVybWluYWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDEzNjgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDA1Mjk4NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEYXJrIG1vZGUgY29udGVudCB0aGF0
IGlzIHBhc3RlZCBzaG91bGQgaGF2ZSB0aGUgaW5saW5lIHN0eWxlcyBpbnZlcnNlIGNvbG9yCisg
ICAgICAgIHRyYW5zZm9ybWVkIGJ5IHRoZSBjb2xvciBmaWx0ZXIgdG8gbWF0Y2ggdGhlIGNvbG9y
IGZpbHRlcmVkIGRvY3VtZW50IGNvbnRlbnRzLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQuaHRtbAorCisgICAgICAgICog
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxl
OjppbnZlcnNlVHJhbnNmb3JtQ29sb3JJZk5lZWRlZCk6IEFkZGVkIGNhcmV0LWNvbG9yIHRvIHRo
ZSB0cmFuc2Zvcm1lZCBwcm9wZXJ0aWVzLgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OmludmVyc2VUcmFuc2Zvcm1Db2xvcklmTmVlZGVkKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6IENhbGwgaW52ZXJzZVRyYW5z
Zm9ybUNvbG9ySWZOZWVkZWQoKS4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SW5z
ZXJ0ZWROb2Rlczo6cGFzdExhc3RTaWJsaW5nIGNvbnN0KTogQWRkZWQuCisKIDIwMTktMDgtMjkg
IFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIENvcHlpbmcg
YW5kIHBhc3RpbmcgdHdvIHBhcmFncmFwaHMgd2l0aCBhIG5ld2xpbmUgYmV0d2VlbiB0aGVtIHJl
c3VsdHMgaW4gc3RyYXkgcGFyYWdyYXBoIHdpdGggbmV3bGluZSBpbnNpZGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggZDZlMTFiNDc5OTQ0MTkzZDU2NjY0NGQ2
ZGJkMWM2ODlkNTUzNWZlZC4uM2NmMzU1NjQzOGQ2ZmJkNzRiZjVkNWRiYTI1MTlmMjVhZGM4MDgw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTU4MCw4ICsx
NTgwLDkgQEAgUmVmPEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0eWxlOjppbnZlcnNlVHJhbnNmb3Jt
Q29sb3JJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAK
ICAgICBib29sIGhhc0NvbG9yID0gbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlDb2xvcik7CisgICAgYm9vbCBoYXNDYXJldENvbG9yID0gbV9tdXRhYmxlU3R5
bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlDYXJldENvbG9yKTsKICAgICBib29s
IGhhc0JhY2tncm91bmRDb2xvciA9IG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBpZiAoIWhhc0NvbG9yICYmICFoYXNC
YWNrZ3JvdW5kQ29sb3IpCisgICAgaWYgKCFoYXNDb2xvciAmJiAhaGFzQ2FyZXRDb2xvciAmJiAh
aGFzQmFja2dyb3VuZENvbG9yKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBhdXRvIHN0
eWxlV2l0aEludmVydGVkQ29sb3JzID0gY29weSgpOwpAQCAtMTU5Nyw2ICsxNTk4LDkgQEAgUmVm
PEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0eWxlOjppbnZlcnNlVHJhbnNmb3JtQ29sb3JJZk5lZWRl
ZChFbGVtZW50JiBlbGVtZW50KQogICAgIGlmIChoYXNDb2xvcikKICAgICAgICAgaW52ZXJ0ZWRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKIAorICAgIGlmIChoYXNDYXJldENvbG9yKQorICAgICAg
ICBpbnZlcnRlZENvbG9yKENTU1Byb3BlcnR5Q2FyZXRDb2xvcik7CisKICAgICBpZiAoaGFzQmFj
a2dyb3VuZENvbG9yKQogICAgICAgICBpbnZlcnRlZENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcAppbmRleCBmMjYwZDZmMjllZGY5YTFiNTA1NTBkNWJhMDgxM2JkZTk1OTE2
ZGJjLi4yODFkZGRhOTYxODI4MDRjYzM5NzhhMTI0ODlhNDI5ODM5MjkwMTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAt
NTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkhUTUxUaXRsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJO
b2RlTGlzdC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlBvc2l0
aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5o
IgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQuaCIKQEAgLTUyMCw2ICs1MjEsOTQgQEAgYm9vbCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hvdWxkTWVyZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBzb3VyY2UsIGNvbnN0IFYKICAgICAgICAgJiYgIWlzQmxvY2soc291cmNlTm9kZSkgJiYgIWlz
QmxvY2soZGVzdGluYXRpb25Ob2RlKTsKIH0KIAordm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6aW52ZXJzZVRyYW5zZm9ybUNvbG9ySWZOZWVkZWQoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWRO
b2RlcykKK3sKKyAgICAvLyBEYXJrIG1vZGUgY29udGVudCB0aGF0IGlzIGluc2VydGVkIHNob3Vs
ZCBoYXZlIHRoZSBpbmxpbmUgc3R5bGVzIGludmVyc2UgY29sb3IKKyAgICAvLyB0cmFuc2Zvcm1l
ZCBieSB0aGUgY29sb3IgZmlsdGVyIHRvIG1hdGNoIHRoZSBjb2xvciBmaWx0ZXJlZCBkb2N1bWVu
dCBjb250ZW50cy4KKyAgICAvLyBUaGlzIGFwcGxpZXMgdG8gTWFpbCBhbmQgTm90ZXMgd2hlbiBw
YXN0aW5nIGZyb20gWGNvZGUuIDxyZGFyOi8vcHJvYmxlbS80MDUyOTg2Nz4KKworICAgIENvbnRh
aW5lck5vZGUqIGNvbnRleHQgPSBpbnNlcnRlZE5vZGVzLmZpcnN0Tm9kZUluc2VydGVkKCktPnBh
cmVudE5vZGUoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIGRv
Y3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAgICBh
dXRvKiBjb250ZXh0UmVuZGVyZXIgPSBjb250ZXh0LT5yZW5kZXJlcigpOworICAgIGlmICghY29u
dGV4dFJlbmRlcmVyIHx8ICFjb250ZXh0UmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwbGVDb2xvckZp
bHRlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPbmx5IHRoZSBhcHBsZS1pbnZlcnQt
bGlnaHRuZXNzKCkgY29sb3IgZmlsdGVyIGlzIHN1cHBvcnRlZC4gSXQgaXMgdGhlIG9ubHkKKyAg
ICAvLyBGaWx0ZXJPcGVyYXRpb24gdGhhdCBpbXBsZW1lbnRzIGludmVyc2VUcmFuc2Zvcm1Db2xv
cigpLgorICAgIGNvbnN0IGF1dG8mIGNvbG9yRmlsdGVyID0gY29udGV4dFJlbmRlcmVyLT5zdHls
ZSgpLmFwcGxlQ29sb3JGaWx0ZXIoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbG9yRmlsdGVy
T3BlcmF0aW9uIDogY29sb3JGaWx0ZXIub3BlcmF0aW9ucygpKSB7CisgICAgICAgIGlmIChjb2xv
ckZpbHRlck9wZXJhdGlvbi0+dHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6QVBQTEVfSU5WRVJU
X0xJR0hUTkVTUykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHByb3Bl
cnR5TGlnaHRuZXNzID0gWyZdKGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5lU3R5bGUsIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgLT4gT3B0aW9uYWw8ZG91YmxlPiB7CisgICAgICAgIGlm
IChhdXRvIGNvbG9yID0gaW5saW5lU3R5bGUtPnByb3BlcnR5QXNDb2xvcihwcm9wZXJ0eUlEKSkg
eworICAgICAgICAgICAgaWYgKGNvbG9yLnZhbHVlKCkuaXNWaXNpYmxlKCkgJiYgIWNvbG9yLnZh
bHVlKCkuaXNTZW1hbnRpYygpKSB7CisgICAgICAgICAgICAgICAgZG91YmxlIGh1ZSwgc2F0dXJh
dGlvbiwgbGlnaHRuZXNzOworICAgICAgICAgICAgICAgIGNvbG9yLnZhbHVlKCkuZ2V0SFNMKGh1
ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlnaHRu
ZXNzOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9OworCisgICAgY29uc3QgZG91YmxlIHRleHRMaWdodG5lc3NUaHJlc2hvbGQgPSAwLjQ7Cisg
ICAgY29uc3QgZG91YmxlIGJhY2tncm91bmRMaWdodG5lc3NUaHJlc2hvbGQgPSAwLjY7CisKKyAg
ICAvLyBDaGVjayB0aGUgdG9wLWxldmVsIGluc2VydGVkIG5vZGUncyB0ZXh0IGFuZCBiYWNrZ3Jv
dW5kIGNvbG9ycy4gSWYgYW55IG5vZGUgaGFzCisgICAgLy8gZGFyayB0ZXh0IG9yIGxpZ2h0IGJh
Y2tncm91bmQgY29sb3JzLCBhYm9ydCBiZWZvcmUgdGhlIHRyYW5zZm9ybWF0aW9uIHN0ZXAuCisg
ICAgUmVmUHRyPE5vZGU+IHBhc3RFbmROb2RlID0gaW5zZXJ0ZWROb2Rlcy5wYXN0TGFzdFNpYmxp
bmcoKTsKKyAgICBSZWZQdHI8Tm9kZT4gbmV4dDsKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2Rl
ID0gaW5zZXJ0ZWROb2Rlcy5maXJzdE5vZGVJbnNlcnRlZCgpOyBub2RlICYmIG5vZGUgIT0gcGFz
dEVuZE5vZGU7IG5vZGUgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBOb2RlVHJhdmVyc2FsOjpu
ZXh0U2tpcHBpbmdDaGlsZHJlbigqbm9kZSk7CisKKyAgICAgICAgaWYgKCFpczxTdHlsZWRFbGVt
ZW50Pigqbm9kZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvKiBlbGVt
ZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4obm9kZS5nZXQoKSk7CisgICAgICAgIGF1dG8q
IGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGUoKTsKKyAgICAgICAgaWYgKCFpbmxp
bmVTdHlsZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIEFib3J0IGlmIHRo
ZSB0ZXh0IGNvbG9yIGlzIHRvbyBkYXJrLgorICAgICAgICBhdXRvIHRleHRMaWdodG5lc3MgPSBw
cm9wZXJ0eUxpZ2h0bmVzcyhpbmxpbmVTdHlsZSwgQ1NTUHJvcGVydHlDb2xvcik7CisgICAgICAg
IGlmICh0ZXh0TGlnaHRuZXNzICYmICp0ZXh0TGlnaHRuZXNzIDwgdGV4dExpZ2h0bmVzc1RocmVz
aG9sZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBBYm9ydCBpZiB0aGUgYmFj
a2dyb3VuZCBjb2xvciBpcyB0b28gbGlnaHQuCisgICAgICAgIGF1dG8gYmFja2dyb3VuZExpZ2h0
bmVzcyA9IHByb3BlcnR5TGlnaHRuZXNzKGlubGluZVN0eWxlLCBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcik7CisgICAgICAgIGlmIChiYWNrZ3JvdW5kTGlnaHRuZXNzICYmICpiYWNrZ3JvdW5k
TGlnaHRuZXNzID4gYmFja2dyb3VuZExpZ2h0bmVzc1RocmVzaG9sZCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBBcHBseSBhbiBpbnZlcnNlIGNvbG9yIHRyYW5zZm9ybSB0
byB0aGUgaW5saW5lIHN0eWxlcyBvZiBhbGwgdGhlIGluc2VydGVkIG5vZGVzLgorICAgIHBhc3RF
bmROb2RlID0gaW5zZXJ0ZWROb2Rlcy5wYXN0TGFzdExlYWYoKTsKKyAgICBmb3IgKFJlZlB0cjxO
b2RlPiBub2RlID0gaW5zZXJ0ZWROb2Rlcy5maXJzdE5vZGVJbnNlcnRlZCgpOyBub2RlICYmIG5v
ZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBOb2RlVHJh
dmVyc2FsOjpuZXh0KCpub2RlKTsKKworICAgICAgICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KCpu
b2RlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFN0eWxlZEVsZW1lbnQqIGVs
ZW1lbnQgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50Pihub2RlLmdldCgpKTsKKworICAgICAgICBh
dXRvKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlKCk7CisgICAgICAgIGlmICgh
aW5saW5lU3R5bGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGVkaXRp
bmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAgICAgYXV0
byB0cmFuc2Zvcm1lZFN0eWxlID0gZWRpdGluZ1N0eWxlLT5pbnZlcnNlVHJhbnNmb3JtQ29sb3JJ
Zk5lZWRlZCgqZWxlbWVudCk7CisgICAgICAgIGlmIChlZGl0aW5nU3R5bGUucHRyKCkgPT0gdHJh
bnNmb3JtZWRTdHlsZS5wdHIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNl
dE5vZGVBdHRyaWJ1dGUoKmVsZW1lbnQsIHN0eWxlQXR0ciwgdHJhbnNmb3JtZWRTdHlsZS0+c3R5
bGUoKS0+YXNUZXh0KCkpOworICAgIH0KK30KKwogLy8gU3R5bGUgcnVsZXMgdGhhdCBtYXRjaCBq
dXN0IGluc2VydGVkIGVsZW1lbnRzIGNvdWxkIGNoYW5nZSB0aGVpciBhcHBlYXJhbmNlLCBsaWtl
CiAvLyBhIGRpdiBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQgd2l0aCBkaXYgeyBkaXNwbGF5Omlu
bGluZTsgfS4KIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0
eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykK
QEAgLTEyMjcsMTEgKzEzMTYsMTUgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9B
cHBseSgpCiAgICAgICAgICAgICByZW1vdmVOb2RlKCpub2RlVG9SZW1vdmUpOwogICAgICAgICB9
CiAgICAgfQotICAgIAorCiAgICAgbWFrZUluc2VydGVkQ29udGVudFJvdW5kVHJpcHBhYmxlV2l0
aEhUTUxUcmVlQnVpbGRlcihpbnNlcnRlZE5vZGVzKTsKICAgICBpZiAoaW5zZXJ0ZWROb2Rlcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGludmVyc2VUcmFuc2Zvcm1Db2xvcklm
TmVlZGVkKGluc2VydGVkTm9kZXMpOworICAgIGlmIChpbnNlcnRlZE5vZGVzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgcmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxl
U3BhbklubGluZShpbnNlcnRlZE5vZGVzKTsKICAgICBpZiAoaW5zZXJ0ZWROb2Rlcy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCAwYjJlYjk5YTFlZmVjNzI4NDYxY2QwNGZjN2FmOWFl
MmMyNTU5ZDdiLi44NWMwOTdkNWZhY2JlNWY0ZDg0ZDIxZjU5M2JmY2EwNDVlYzlmM2Y2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCkBA
IC02OSwxNyArNjksMjUgQEAgcHJpdmF0ZToKIAogICAgICAgICBib29sIGlzRW1wdHkoKSB7IHJl
dHVybiAhbV9maXJzdE5vZGVJbnNlcnRlZDsgfQogICAgICAgICBOb2RlKiBmaXJzdE5vZGVJbnNl
cnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCk7IH0KKwogICAg
ICAgICBOb2RlKiBsYXN0TGVhZkluc2VydGVkKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKG1fbGFzdE5vZGVJbnNlcnRlZCk7CiAgICAgICAgICAgICByZXR1cm4gbV9sYXN0
Tm9kZUluc2VydGVkLT5sYXN0RGVzY2VuZGFudCgpOwogICAgICAgICB9CisKICAgICAgICAgTm9k
ZSogcGFzdExhc3RMZWFmKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1f
bGFzdE5vZGVJbnNlcnRlZCk7CiAgICAgICAgICAgICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6bmV4
dCgqbGFzdExlYWZJbnNlcnRlZCgpKTsKICAgICAgICAgfQogCisgICAgICAgIE5vZGUqIHBhc3RM
YXN0U2libGluZygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2xhc3RO
b2RlSW5zZXJ0ZWQpOworICAgICAgICAgICAgcmV0dXJuIE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lw
cGluZ0NoaWxkcmVuKCptX2xhc3ROb2RlSW5zZXJ0ZWQpOworICAgICAgICB9CisKICAgICBwcml2
YXRlOgogICAgICAgICBSZWZQdHI8Tm9kZT4gbV9maXJzdE5vZGVJbnNlcnRlZDsKICAgICAgICAg
UmVmUHRyPE5vZGU+IG1fbGFzdE5vZGVJbnNlcnRlZDsKQEAgLTk5LDYgKzEwNyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZW1vdmVVbnJlbmRlcmVkVGV4dE5vZGVzQXRFbmRzKEluc2VydGVkTm9k
ZXMmKTsKICAgICAKICAgICB2b2lkIHJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNw
YW5JbmxpbmUoSW5zZXJ0ZWROb2RlcyYpOworICAgIHZvaWQgaW52ZXJzZVRyYW5zZm9ybUNvbG9y
SWZOZWVkZWQoSW5zZXJ0ZWROb2RlcyYpOwogICAgIHZvaWQgbWFrZUluc2VydGVkQ29udGVudFJv
dW5kVHJpcHBhYmxlV2l0aEhUTUxUcmVlQnVpbGRlcihJbnNlcnRlZE5vZGVzJik7CiAgICAgdm9p
ZCBtb3ZlTm9kZU91dE9mQW5jZXN0b3IoTm9kZSYsIE5vZGUmIGFuY2VzdG9yLCBJbnNlcnRlZE5v
ZGVzJik7CiAgICAgdm9pZCBoYW5kbGVTdHlsZVNwYW5zKEluc2VydGVkTm9kZXMmKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBjYmFjNTViYTUyODVlNzJlMDA2MDMwYjIxYmQ1MWMzMmYzYjQyMmQ3Li42Njk2ZmYxZTY1NzU1
NzdkN2Q3M2U4NjQ5YTM1OThjYTljNmFlZTE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTkt
MDgtMzAgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIE1h
aWwgYXBwZWFycyB0byBiZSBkb3VibGUgaW52ZXJ0aW5nIGNvZGUgY29waWVkIGZyb20gTm90ZXMs
IFhjb2RlLCBvciBUZXJtaW5hbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMTM2OAorICAgICAgICByZGFyOi8vcHJvYmxlbS80MDUyOTg2NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVj
dGF0aW9uczoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNv
bG9yLWZpbHRlcmVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MtMTIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9uczoKKwogMjAxOS0wOC0yOSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ29weWluZyBhbmQgcGFzdGluZyB0d28gcGFyYWdyYXBocyB3aXRoIGEg
bmV3bGluZSBiZXR3ZWVuIHRoZW0gcmVzdWx0cyBpbiBzdHJheSBwYXJhZ3JhcGggd2l0aCBuZXds
aW5lIGluc2lkZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGUyZTUwZjhkZGExMDE5NWU2MDMwYmQx
YzdkNWYyNWUzM2U2NmUyZWIuLjVmNjJiZWIzYjliZDYzNTIyNDNjYmIyMmVjNDNlNzJiODIzZWE0
NzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODcsMTAgKzg3LDExIEBAIGZhc3QvZm9ybXMvc2Vh
cmNoL3NlYXJjaC1yZXN1bHRzLWhpZGRlbi1jcmFzaC5odG1sIFsgU2tpcCBdCiAjIFRoZXNlIHRl
c3RzIGRvbid0IGhhdmUgdG8gYmUgcGxhdGZvcm0tc3BlY2lmaWMsIGJ1dCB0aGV5IGFyZSBvbmx5
IGltcGxlbWVudGVkIG9uIE1hYyBub3cuCiBmYXN0L2ltYWdlcy9lcHMtYXMtaW1hZ2UuaHRtbCBb
IFNraXAgXQogCi0jIE9ubHkgYXBwbGljYWJsZSBvbiBtYWNPUworIyBPbmx5IGFwcGxpY2FibGUg
b24gcGxhdGZvcm1zIHdpdGggZGFyayBtb2RlIHN1cHBvcnQKIGNzcy1kYXJrLW1vZGUgWyBTa2lw
IF0KIGZhc3QvY3NzL2FwcGxlLXN5c3RlbS1jb250cm9sLWNvbG9ycy5odG1sIFsgU2tpcCBdCiBp
bnNwZWN0b3IvY3NzL2ZvcmNlLXBhZ2UtYXBwZWFyYW5jZS5odG1sIFsgU2tpcCBdCitlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwgWyBTa2lwIF0K
IAogIyBPbmx5IE1hYyBzdXBwb3J0cyBmb3JjZSB0ZXN0cy4KIGZhc3QvZXZlbnRzL2NhbmNlbGxl
ZC1mb3JjZS1jbGljay1saW5rLW5hdmlnYXRpb24uaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0
ZXJlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
ZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjhkMjA2
ZDZhMTk2ZGUyNjQ5YzQzMTM2YzhmZDVlNmQxNTllYzJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJl
ZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHBh
c3RpbmcgaW50byBhIGNvbG9yIGZpbHRlcmVkIGRhcmsgbW9kZSBkb2N1bWVudCBpbnNlcnRzIGxp
Z2h0IG1vZGUgdHJhbnNmb3JtZWQgY29udGVudC4KKworUEFTUyBjb25maXJtZWRNYXJrdXAgaXMg
JzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBjb2xvcjogcmdiKDAsIDAs
IDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bhbj4n
CitQQVNTIGNvbmZpcm1lZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2Io
MjEsIDIxLCAyMSk7IGNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJhY2tncm91bmQtY29sb3I6IHJn
YigyNTUsIDI1NSwgMjU1KTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgY29uZmlybWVkTWFya3VwIGlz
ICc8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigyMSwgMjEsIDIxKTsgY29sb3I6IHJnYigy
MSwgMjEsIDIxKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxMywgMjEzLCAyMTMpOyI+SGVsbG88
L3NwYW4+JworUEFTUyBjb25maXJtZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjb2xvcjogcmdi
KDEwNiwgMTA2LCAxMDYpOyI+SGVsbG88L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTI3
LCAxMjgsIDEyNyk7Ij5IZWxsbyAyPC9zcGFuPicKK1BBU1MgY29uZmlybWVkTWFya3VwIGlzICc8
c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigxMjcsIDEyOCwgMTI3KTsgY29sb3I6IHJnYigx
MjcsIDEyOCwgMTI3KTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgY29uZmlybWVkTWFya3VwIGlzICc8
c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigxNzAsIDE3MCwgMTcwKTsgY29sb3I6IHJnYigx
NzAsIDE3MCwgMTcwKTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgY29uZmlybWVkTWFya3VwIGlzICc8
c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgY29sb3I6IHJnYigx
OTEsIDE5MSwgMTkxKTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgY29uZmlybWVkTWFya3VwIGlzICc8
c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigxMDEsIDEwMSwgMTAxKTsgY29sb3I6IHJnYigx
MDEsIDEwMSwgMTAxKTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgY29uZmlybWVkTWFya3VwIGlzICc8
c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYig5MCwgOTAsIDkwKTsgY29sb3I6IHJnYig5MCwg
OTAsIDkwKTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgY29uZmlybWVkTWFya3VwIGlzICc8c3BhbiBz
dHlsZT0iY29sb3I6IHJnYig4NSwgODUsIDg1KTsiPkhlbGxvPC9zcGFuPjxzcGFuIHN0eWxlPSJi
YWNrZ3JvdW5kLWNvbG9yOiBibGFjazsiPkhlbGxvIDI8L3NwYW4+JworUEFTUyBjb25maXJtZWRN
YXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDY4LCA2OCwgNjgpOyBjb2xv
cjogcmdiKDY4LCA2OCwgNjgpOyI+SGVsbG88L3NwYW4+JworUEFTUyBjb25maXJtZWRNYXJrdXAg
aXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDY4LCA2OCwgNjgpOyBjb2xvcjogcmdi
KDY4LCA2OCwgNjgpOyI+SGVsbG88L3NwYW4+JworUEFTUyBjb25maXJtZWRNYXJrdXAgaXMgJzxz
cGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBjb2xvcjogcmdiKDAsIDAsIDAp
OyI+SGVsbG88L3NwYW4+JworUEFTUyBjb25maXJtZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJj
YXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBjb2xvcjogcmdiKDAsIDAsIDApOyBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIGNvbmZpcm1l
ZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwg
MjU1KTsiPkhlbGxvPC9zcGFuPicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmNiNzdhYmE4NTI2ODQwNjIwMjg5ZWFlNzE2NTg3M2QyM2NhODFlYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUt
Y29sb3ItZmlsdGVyZWQuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgaHRtbD48IS0t
IHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNvbG9yRmlsdGVyPXRydWUgXSAtLT4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgICAgICA6cm9vdCB7CisgICAgICAgICAgICBj
b2xvci1zY2hlbWU6IGRhcms7CisgICAgICAgICAgICAtYXBwbGUtY29sb3ItZmlsdGVyOiBhcHBs
ZS1pbnZlcnQtbGlnaHRuZXNzKCk7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgcGFz
dGluZyBpbnRvIGEgY29sb3IgZmlsdGVyZWQgZGFyayBtb2RlIGRvY3VtZW50IGluc2VydHMgbGln
aHQgbW9kZSB0cmFuc2Zvcm1lZCBjb250ZW50LjwvcD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKworICAgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRVc2VEYXJrQXBwZWFyYW5jZSh0cnVlKTsKKworICAgIGxl
dCBzZWwgPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTsKKyAgICBsZXQgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInJvb3QiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJv
b3QpOworCisgICAgZnVuY3Rpb24gY3JlYXRlRWRpdGFibGUodGFnTmFtZSwgbWFya3VwKSB7Cisg
ICAgICAgIGxldCBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsKKyAgICAg
ICAgbm9kZS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworICAgICAgICBpZiAobWFya3VwKQorICAg
ICAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBtYXJrdXA7CisgICAgICAgIHJldHVybiBub2RlOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb3B5UGFzdGUob3JpZ2luYWxNYXJrdXAsIGV4cGVj
dGVkKSB7CisgICAgICAgIGNvbnN0IHRhZ05hbWUgPSAiZGl2IjsKKyAgICAgICAgbGV0IGNvcHlO
b2RlID0gY3JlYXRlRWRpdGFibGUodGFnTmFtZSwgb3JpZ2luYWxNYXJrdXApOworICAgICAgICBy
b290LmFwcGVuZENoaWxkKGNvcHlOb2RlKTsKKyAgICAgICAgY29weU5vZGUuZm9jdXMoKTsKKwor
ICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIiwgZmFsc2UpOworICAgICAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgiQ29weSIsIGZhbHNlKTsKKworICAgICAgICBjb3B5Tm9k
ZS5yZW1vdmUoKTsKKworICAgICAgICBsZXQgcGFzdGVOb2RlID0gY3JlYXRlRWRpdGFibGUodGFn
TmFtZSk7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFzdGVOb2RlKTsKKyAgICAgICAgcGFz
dGVOb2RlLmZvY3VzKCk7CisKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3RlIiwg
ZmFsc2UpOworCisgICAgICAgIGNvbmZpcm1lZE1hcmt1cCA9IHBhc3RlTm9kZS5pbm5lckhUTUw7
CisKKyAgICAgICAgc2hvdWxkQmUoImNvbmZpcm1lZE1hcmt1cCIsICInIiArIGV4cGVjdGVkICsg
IiciKTsKKyAgICB9CisKKyAgICAvLyBUcmFuc2Zvcm1lZCBvbiBwYXN0ZQorICAgIHRlc3RDb3B5
UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiBibGFj
a1wiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwg
MCk7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwg
MjU1KTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1c
ImNvbG9yOiByZ2IoMjM4LCAyMzgsIDIzOCk7IGJhY2tncm91bmQtY29sb3I6IHJnYig1MSwgNTEs
IDUxKVwiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoMjEs
IDIxLCAyMSk7IGNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJhY2tncm91bmQtY29sb3I6IHJnYigy
NTUsIDI1NSwgMjU1KTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3Bh
biBzdHlsZT1cImNvbG9yOiByZ2IoMjM4LCAyMzgsIDIzOCk7IGJhY2tncm91bmQtY29sb3I6IHJn
Yig4NSwgODUsIDg1KVwiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9y
OiByZ2IoMjEsIDIxLCAyMSk7IGNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJhY2tncm91bmQtY29s
b3I6IHJnYigyMTMsIDIxMywgMjEzKTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBh
c3RlKCI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTcwLCAxNzAsIDE3MClcIj5IZWxsbzwvc3Bh
bj48c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTUzLCAxNTMsIDE1MylcIj5IZWxsbyAyPC9zcGFu
PiIsICI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTA2LCAxMDYsIDEwNik7XCI+SGVsbG88L3Nw
YW4+PHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDEyNywgMTI4LCAxMjcpO1wiPkhlbGxvIDI8L3Nw
YW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDE1Mywg
MTUzLCAxNTMpXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJn
YigxMjcsIDEyOCwgMTI3KTsgY29sb3I6IHJnYigxMjcsIDEyOCwgMTI3KTtcIj5IZWxsbzwvc3Bh
bj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTE5LCAx
MTksIDExOSlcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJjYXJldC1jb2xvcjogcmdi
KDE3MCwgMTcwLCAxNzApOyBjb2xvcjogcmdiKDE3MCwgMTcwLCAxNzApO1wiPkhlbGxvPC9zcGFu
PiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigxMDIsIDEw
MiwgMTAyKVwiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2Io
MTkxLCAxOTEsIDE5MSk7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7XCI+SGVsbG88L3NwYW4+
Iik7CisKKyAgICAvLyBOb3QgdHJhbnNmb3JtZWQgb24gcGFzdGUKKyAgICB0ZXN0Q29weVBhc3Rl
KCI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTAxLCAxMDEsIDEwMSlcIj5IZWxsbzwvc3Bhbj4i
LCAiPHNwYW4gc3R5bGU9XCJjYXJldC1jb2xvcjogcmdiKDEwMSwgMTAxLCAxMDEpOyBjb2xvcjog
cmdiKDEwMSwgMTAxLCAxMDEpO1wiPkhlbGxvPC9zcGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUo
IjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig5MCwgOTAsIDkwKVwiPkhlbGxvPC9zcGFuPiIsICI8
c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoOTAsIDkwLCA5MCk7IGNvbG9yOiByZ2IoOTAs
IDkwLCA5MCk7XCI+SGVsbG88L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5
bGU9XCJjb2xvcjogcmdiKDg1LCA4NSwgODUpXCI+SGVsbG88L3NwYW4+PHNwYW4gc3R5bGU9XCJj
b2xvcjogd2hpdGU7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrXCI+SGVsbG8gMjwvc3Bhbj4iLCAi
PHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDg1LCA4NSwgODUpO1wiPkhlbGxvPC9zcGFuPjxzcGFu
IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XCI+SGVsbG8gMjwvc3Bhbj4iKTsKKyAg
ICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoNjgsIDY4LCA2OClcIj5I
ZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJjYXJldC1jb2xvcjogcmdiKDY4LCA2OCwgNjgp
OyBjb2xvcjogcmdiKDY4LCA2OCwgNjgpO1wiPkhlbGxvPC9zcGFuPiIpOworICAgIHRlc3RDb3B5
UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig2OCwgNjgsIDY4KVwiPkhlbGxvPC9zcGFu
PiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoNjgsIDY4LCA2OCk7IGNvbG9yOiBy
Z2IoNjgsIDY4LCA2OCk7XCI+SGVsbG88L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgiPHNw
YW4gc3R5bGU9XCJjb2xvcjogYmxhY2tcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJj
YXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBjb2xvcjogcmdiKDAsIDAsIDApO1wiPkhlbGxvPC9z
cGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IGJsYWNrOyBi
YWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZVwiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNh
cmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGJhY2tncm91bmQt
Y29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29w
eVBhc3RlKCI8c3BhbiBzdHlsZT1cImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogd2hp
dGVcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjU1LCAyNTUsIDI1NSk7XCI+SGVsbG88L3NwYW4+Iik7CisKKyAgICByb290LnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CisgICAgPC9zY3JpcHQ+CisKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ5NmFmMmM3
ZDUxMjliMGM2M2E0ZThmZDFiNjdhNjE0YzNjNWViZTMuLjkyOWQ2ZWEzYzViNGIwZjg5ZDA5NjVl
NDljYzZmZjVjOGQyMTEyMzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0x
Mi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xLDUgKzEsNiBAQAogY3NzLWRhcmstbW9kZSBbIFNraXAgXQogY3Nz
LWRhcmstbW9kZS9vbGRlci1zeXN0ZW1zIFsgUGFzcyBdCitlZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwgWyBTa2lwIF0KIAogIyA8cmRhcjovL3By
b2JsZW0vNDg3ODEwOTg+IEhFSUYgYW5kIEhFSUNTIGltYWdlcyBhcmUgc3VwcG9ydGVkIG9ubHkg
b24gaU9TIDEzCiBmYXN0L2ltYWdlcy9hbmltYXRlZC1oZWljcy1kcmF3Lmh0bWwgWyBTa2lwIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMjJlM2QwZjlj
ODE5OGRjNGI2MzJjYTlkNWFhMjgxYjhhOWFkZmU5NC4uNmU4NGNjMjdhMDNiMTJlYTE0NGIzY2I3
ZjQ0ZTNjNzMzNjQ0ZTJkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTMyNDIsNiArMzI0Miw3IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9zZWxlY3Qt
YWxsLW5vbi1lZGl0YWJsZS10ZXh0LXVzaW5nLWtleWJvYXJkLmh0bWwgWyBTa2lwIF0KICMgRGFy
ayBNb2RlIGlzIGlPUyAxMyBhbmQgbGF0ZXIuCiBjc3MtZGFyay1tb2RlIFsgUGFzcyBdCiBjc3Mt
ZGFyay1tb2RlL29sZGVyLXN5c3RlbXMgWyBTa2lwIF0KK2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQuaHRtbCBbIFBhc3MgXQogCiBmYXN0L2Zvcm1zL2F1
dG8tZmlsbC1idXR0b24vY2Fwcy1sb2NrLWluZGljYXRvci1zaG91bGQtYmUtdmlzaWJsZS1hZnRl
ci1oaWRpbmctYXV0by1maWxsLXN0cm9uZy1wYXNzd29yZC1idXR0b24uaHRtbCBbIFBhc3MgXQog
ZmFzdC9mb3Jtcy9hdXRvLWZpbGwtYnV0dG9uL2NhcHMtbG9jay1pbmRpY2F0b3Itc2hvdWxkLW5v
dC1iZS12aXNpYmxlLXdoZW4tYXV0by1maWxsLXN0cm9uZy1wYXNzd29yZC1idXR0b24taXMtdmlz
aWJsZS5odG1sIFsgUGFzcyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDZlYTRiMGFkN2JmMDg4MTQ1MGFjMTg4ZTkwYjVjYmU2Mzc3NTdkYjMuLjk4OWFj
MGY1YWExZDgzZTk3ZTU4MjE0NTczOGM5ZjgzZDJmZTA3NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzQ5LDYgKzE3NDksNyBAQCB3ZWJraXQub3Jn
L2IvMTg3MzkzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvMmRjb250ZXh0L2ltYWdl
Yml0bWFwL2NyZWF0ZQogWyBNb2phdmUrIF0gY3NzLWRhcmstbW9kZSBbIFBhc3MgXQogWyBNb2ph
dmUrIF0gY3NzLWRhcmstbW9kZS9vbGRlci1zeXN0ZW1zIFsgU2tpcCBdCiBbIE1vamF2ZSsgXSBp
bnNwZWN0b3IvY3NzL2ZvcmNlLXBhZ2UtYXBwZWFyYW5jZS5odG1sIFsgUGFzcyBdCitbIE1vamF2
ZSsgXSBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0
bWwgWyBQYXNzIF0KIAogIyBUZXN0IERhcmsgTW9kZSBDU1Mgc3VwcG9ydCBmb3IgbGlnaHQgbW9k
ZSBvbiBvbGRlciBzeXN0ZW1zLgogWyBTaWVycmEgSGlnaFNpZXJyYSBdIGNzcy1kYXJrLW1vZGUv
b2xkZXItc3lzdGVtcyBbIFBhc3MgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378001</attachid>
            <date>2019-09-04 12:47:41 -0700</date>
            <delta_ts>2019-09-04 13:31:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201368-20190904124741.patch</filename>
            <type>text/plain</type>
            <size>37179</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQzN2E3ZWJjY2NjZDkz
Y2M2NjRlZTQ5NzBlODQwY2E2MDg1MTA0My4uOTQ0NmQ3YzY3ZThmYTczMTY2OGU3NTJiNGUwMGUy
YzUwY2U2MzU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA5LTA0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWlsIGFwcGVhcnMg
dG8gYmUgZG91YmxlIGludmVydGluZyBjb2RlIGNvcGllZCBmcm9tIE5vdGVzLCBYY29kZSwgb3Ig
VGVybWluYWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDEzNjgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDA1Mjk4NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEYXJrIG1vZGUgY29udGVudCB0aGF0
IGlzIHBhc3RlZCBzaG91bGQgaGF2ZSB0aGUgaW5saW5lIHN0eWxlcyBpbnZlcnNlIGNvbG9yCisg
ICAgICAgIHRyYW5zZm9ybWVkIGJ5IHRoZSBjb2xvciBmaWx0ZXIgdG8gbWF0Y2ggdGhlIGNvbG9y
IGZpbHRlcmVkIGRvY3VtZW50IGNvbnRlbnRzLgorCisgICAgICAgIExheW91dCBUZXN0OiBlZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwKKyAgICAg
ICAgQVBJIFRlc3RzOiBQYXN0ZUhUTUwuVHJhbnNmb3JtQ29sb3JzT2ZEYXJrQ29udGVudCwgUGFz
dGVIVE1MLkRvZXNOb3RUcmFuc2Zvcm1Db2xvcnNPZkxpZ2h0Q29udGVudCwKKyAgICAgICAgICAg
IFBhc3RlUlRGRC5UcmFuc2Zvcm1Db2xvcnNPZkRhcmtDb250ZW50LCBQYXN0ZVJURkQuRG9lc05v
dFRyYW5zZm9ybUNvbG9yc09mTGlnaHRDb250ZW50CisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRp
bmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmludmVyc2VUcmFu
c2Zvcm1Db2xvcklmTmVlZGVkKTogQWRkZWQgY2FyZXQtY29sb3IgdG8gdGhlIHRyYW5zZm9ybWVk
IHByb3BlcnRpZXMuCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpmcmFnbWVudE5lZWRzQ29sb3JUcmFuc2Zvcm1lZCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmludmVyc2VU
cmFuc2Zvcm1Db2xvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmRvQXBwbHkpOiBDYWxsIGZyYWdtZW50TmVlZHNDb2xvclRyYW5zZm9ybWVkKCkg
YW5kIGludmVyc2VUcmFuc2Zvcm1Db2xvcigpLgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuaDoKKwogMjAxOS0wOC0yOSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3Ro
eUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29weWluZyBhbmQgcGFzdGluZyB0d28gcGFyYWdyYXBo
cyB3aXRoIGEgbmV3bGluZSBiZXR3ZWVuIHRoZW0gcmVzdWx0cyBpbiBzdHJheSBwYXJhZ3JhcGgg
d2l0aCBuZXdsaW5lIGluc2lkZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cAppbmRleCBkNmUxMWI0Nzk5NDQxOTNkNTY2NjQ0ZDZkYmQxYzY4OWQ1NTM1ZmVkLi4zY2YzNTU2
NDM4ZDZmYmQ3NGJmNWQ1ZGJhMjUxOWYyNWFkYzgwODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xNTgwLDggKzE1ODAsOSBAQCBSZWY8RWRpdGluZ1N0eWxl
PiBFZGl0aW5nU3R5bGU6OmludmVyc2VUcmFuc2Zvcm1Db2xvcklmTmVlZGVkKEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGJvb2wgaGFzQ29sb3IgPSBtX211
dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKTsKKyAgICBi
b29sIGhhc0NhcmV0Q29sb3IgPSBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShD
U1NQcm9wZXJ0eUNhcmV0Q29sb3IpOwogICAgIGJvb2wgaGFzQmFja2dyb3VuZENvbG9yID0gbV9t
dXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwotICAgIGlmICghaGFzQ29sb3IgJiYgIWhhc0JhY2tncm91bmRDb2xvcikKKyAgICBpZiAo
IWhhc0NvbG9yICYmICFoYXNDYXJldENvbG9yICYmICFoYXNCYWNrZ3JvdW5kQ29sb3IpCiAgICAg
ICAgIHJldHVybiAqdGhpczsKIAogICAgIGF1dG8gc3R5bGVXaXRoSW52ZXJ0ZWRDb2xvcnMgPSBj
b3B5KCk7CkBAIC0xNTk3LDYgKzE1OTgsOSBAQCBSZWY8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5
bGU6OmludmVyc2VUcmFuc2Zvcm1Db2xvcklmTmVlZGVkKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
aWYgKGhhc0NvbG9yKQogICAgICAgICBpbnZlcnRlZENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwog
CisgICAgaWYgKGhhc0NhcmV0Q29sb3IpCisgICAgICAgIGludmVydGVkQ29sb3IoQ1NTUHJvcGVy
dHlDYXJldENvbG9yKTsKKwogICAgIGlmIChoYXNCYWNrZ3JvdW5kQ29sb3IpCiAgICAgICAgIGlu
dmVydGVkQ29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGYyNjBk
NmYyOWVkZjlhMWI1MDU1MGQ1YmEwODEzYmRlOTU5MTZkYmMuLmMyNjM3ODVhNjhlZGVlMzAyYmJh
MjY0NDcxOWY5Y2YwZmQxNTk2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAi
SFRNTFRpdGxlRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm9k
ZVJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUG9zaXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJJ
bmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxlbWVu
dC5oIgpAQCAtNTIwLDYgKzUyMSw5MyBAQCBib29sIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpz
aG91bGRNZXJnZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHNvdXJjZSwgY29uc3QgVgogICAgICAg
ICAmJiAhaXNCbG9jayhzb3VyY2VOb2RlKSAmJiAhaXNCbG9jayhkZXN0aW5hdGlvbk5vZGUpOwog
fQogCitzdGF0aWMgYm9vbCBmcmFnbWVudE5lZWRzQ29sb3JUcmFuc2Zvcm1lZChSZXBsYWNlbWVu
dEZyYWdtZW50JiBmcmFnbWVudCwgY29uc3QgUG9zaXRpb24mIGluc2VydGlvblBvcykKK3sKKyAg
ICAvLyBEYXJrIG1vZGUgY29udGVudCB0aGF0IGlzIGluc2VydGVkIHNob3VsZCBoYXZlIHRoZSBp
bmxpbmUgc3R5bGVzIGludmVyc2UgY29sb3IKKyAgICAvLyB0cmFuc2Zvcm1lZCBieSB0aGUgY29s
b3IgZmlsdGVyIHRvIG1hdGNoIHRoZSBjb2xvciBmaWx0ZXJlZCBkb2N1bWVudCBjb250ZW50cy4K
KyAgICAvLyBUaGlzIGFwcGxpZXMgdG8gTWFpbCBhbmQgTm90ZXMgd2hlbiBwYXN0aW5nIGZyb20g
WGNvZGUuIDxyZGFyOi8vcHJvYmxlbS80MDUyOTg2Nz4KKworICAgIFJlZlB0cjxFbGVtZW50PiBl
ZGl0YWJsZVJvb3QgPSBpbnNlcnRpb25Qb3Mucm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIEFT
U0VSVChlZGl0YWJsZVJvb3QpOworICAgIGlmICghZWRpdGFibGVSb290KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBhdXRvKiBlZGl0YWJsZVJvb3RSZW5kZXJlciA9IGVkaXRhYmxlUm9v
dC0+cmVuZGVyZXIoKTsKKyAgICBBU1NFUlQoZWRpdGFibGVSb290UmVuZGVyZXIpOworICAgIGlm
ICghZWRpdGFibGVSb290UmVuZGVyZXIgfHwgIWVkaXRhYmxlUm9vdFJlbmRlcmVyLT5zdHlsZSgp
Lmhhc0FwcGxlQ29sb3JGaWx0ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29u
c3QgYXV0byYgY29sb3JGaWx0ZXIgPSBlZGl0YWJsZVJvb3RSZW5kZXJlci0+c3R5bGUoKS5hcHBs
ZUNvbG9yRmlsdGVyKCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBjb2xvckZpbHRlck9wZXJhdGlv
biA6IGNvbG9yRmlsdGVyLm9wZXJhdGlvbnMoKSkgeworICAgICAgICBpZiAoY29sb3JGaWx0ZXJP
cGVyYXRpb24tPnR5cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246OkFQUExFX0lOVkVSVF9MSUdIVE5F
U1MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgYXV0byBwcm9wZXJ0
eUxpZ2h0bmVzcyA9IFsmXShjb25zdCBTdHlsZVByb3BlcnRpZXMmIGlubGluZVN0eWxlLCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQpIC0+IE9wdGlvbmFsPGRvdWJsZT4geworICAgICAgICBpZiAo
YXV0byBjb2xvciA9IGlubGluZVN0eWxlLnByb3BlcnR5QXNDb2xvcihwcm9wZXJ0eUlEKSkgewor
ICAgICAgICAgICAgaWYgKGNvbG9yLnZhbHVlKCkuaXNWaXNpYmxlKCkgJiYgIWNvbG9yLnZhbHVl
KCkuaXNTZW1hbnRpYygpKSB7CisgICAgICAgICAgICAgICAgZG91YmxlIGh1ZSwgc2F0dXJhdGlv
biwgbGlnaHRuZXNzOworICAgICAgICAgICAgICAgIGNvbG9yLnZhbHVlKCkuZ2V0SFNMKGh1ZSwg
c2F0dXJhdGlvbiwgbGlnaHRuZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlnaHRuZXNz
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
OworCisgICAgY29uc3QgZG91YmxlIHRleHRMaWdodG5lc3NUaHJlc2hvbGQgPSAwLjQ7CisgICAg
Y29uc3QgZG91YmxlIGJhY2tncm91bmRMaWdodG5lc3NUaHJlc2hvbGQgPSAwLjY7CisKKyAgICBS
ZWZQdHI8Tm9kZT4gbmV4dDsKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0gZnJhZ21lbnQu
Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gTm9kZVRy
YXZlcnNhbDo6bmV4dCgqbm9kZSk7CisKKyAgICAgICAgaWYgKCFpczxTdHlsZWRFbGVtZW50Pigq
bm9kZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBlbGVtZW50ID0g
ZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKm5vZGUpOworICAgICAgICBhdXRvKiBpbmxpbmVTdHls
ZSA9IGVsZW1lbnQuaW5saW5lU3R5bGUoKTsKKyAgICAgICAgaWYgKCFpbmxpbmVTdHlsZSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIEFib3J0IGlmIHRoZSB0ZXh0IGNvbG9y
IGlzIHRvbyBkYXJrLgorICAgICAgICBhdXRvIHRleHRMaWdodG5lc3MgPSBwcm9wZXJ0eUxpZ2h0
bmVzcygqaW5saW5lU3R5bGUsIENTU1Byb3BlcnR5Q29sb3IpOworICAgICAgICBpZiAodGV4dExp
Z2h0bmVzcyAmJiAqdGV4dExpZ2h0bmVzcyA8IHRleHRMaWdodG5lc3NUaHJlc2hvbGQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gQWJvcnQgaWYgdGhlIGJhY2tncm91
bmQgY29sb3IgaXMgdG9vIGxpZ2h0LgorICAgICAgICBhdXRvIGJhY2tncm91bmRMaWdodG5lc3Mg
PSBwcm9wZXJ0eUxpZ2h0bmVzcygqaW5saW5lU3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKKyAgICAgICAgaWYgKGJhY2tncm91bmRMaWdodG5lc3MgJiYgKmJhY2tncm91bmRMaWdo
dG5lc3MgPiBiYWNrZ3JvdW5kTGlnaHRuZXNzVGhyZXNob2xkKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjppbnZlcnNlVHJhbnNmb3JtQ29sb3IoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0
ZWROb2RlcykKK3sKKyAgICBSZWZQdHI8Tm9kZT4gbmV4dDsKKyAgICBSZWZQdHI8Tm9kZT4gcGFz
dEVuZE5vZGUgPSBpbnNlcnRlZE5vZGVzLnBhc3RMYXN0TGVhZigpOworICAgIGZvciAoUmVmUHRy
PE5vZGU+IG5vZGUgPSBpbnNlcnRlZE5vZGVzLmZpcnN0Tm9kZUluc2VydGVkKCk7IG5vZGUgJiYg
bm9kZSAhPSBwYXN0RW5kTm9kZTsgbm9kZSA9IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IE5vZGVU
cmF2ZXJzYWw6Om5leHQoKm5vZGUpOworCisgICAgICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4o
Km5vZGUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYgZWxlbWVudCA9
IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpub2RlKTsKKyAgICAgICAgYXV0byogaW5saW5lU3R5
bGUgPSBlbGVtZW50LmlubGluZVN0eWxlKCk7CisgICAgICAgIGlmICghaW5saW5lU3R5bGUpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIGVkaXRpbmdTdHlsZSA9IEVkaXRp
bmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAgICAgYXV0byB0cmFuc2Zvcm1lZFN0
eWxlID0gZWRpdGluZ1N0eWxlLT5pbnZlcnNlVHJhbnNmb3JtQ29sb3JJZk5lZWRlZChlbGVtZW50
KTsKKyAgICAgICAgaWYgKGVkaXRpbmdTdHlsZS5wdHIoKSA9PSB0cmFuc2Zvcm1lZFN0eWxlLnB0
cigpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShl
bGVtZW50LCBzdHlsZUF0dHIsIHRyYW5zZm9ybWVkU3R5bGUtPnN0eWxlKCktPmFzVGV4dCgpKTsK
KyAgICB9Cit9CisKIC8vIFN0eWxlIHJ1bGVzIHRoYXQgbWF0Y2gganVzdCBpbnNlcnRlZCBlbGVt
ZW50cyBjb3VsZCBjaGFuZ2UgdGhlaXIgYXBwZWFyYW5jZSwgbGlrZQogLy8gYSBkaXYgaW5zZXJ0
ZWQgaW50byBhIGRvY3VtZW50IHdpdGggZGl2IHsgZGlzcGxheTppbmxpbmU7IH0uCiB2b2lkIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVT
cGFuSW5saW5lKEluc2VydGVkTm9kZXMmIGluc2VydGVkTm9kZXMpCkBAIC0xMTE1LDggKzEyMDMs
OCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICBpbnNlcnRp
b25Qb3MgPSBwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGluc2VydGlvblBvcyk7CiAKICAgICBib29s
IGhhc0JsYW5rTGluZXNCZXR3ZWVuUGFyYWdyYXBocyA9IGhhc0JsYW5rTGluZUJldHdlZW5QYXJh
Z3JhcGhzKGluc2VydGlvblBvcyk7Ci0gICAgCiAgICAgYm9vbCBoYW5kbGVkU3R5bGVTcGFucyA9
IGhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNlcnRpb24oZnJhZ21lbnQsIGluc2VydGlvblBvcyk7
CisgICAgYm9vbCBuZWVkc0NvbG9yVHJhbnNmb3JtZWQgPSBmcmFnbWVudE5lZWRzQ29sb3JUcmFu
c2Zvcm1lZChmcmFnbWVudCwgaW5zZXJ0aW9uUG9zKTsKIAogICAgIC8vIFdlJ3JlIGZpbmlzaGVk
IGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gYWRkLgogICAgIGlmIChmcmFnbWVudC5pc0VtcHR5KCkg
fHwgIWZyYWdtZW50LmZpcnN0Q2hpbGQoKSkKQEAgLTEyMjcsMTEgKzEzMTUsMTQgQEAgdm9pZCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICByZW1vdmVOb2Rl
KCpub2RlVG9SZW1vdmUpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgbWFrZUluc2Vy
dGVkQ29udGVudFJvdW5kVHJpcHBhYmxlV2l0aEhUTUxUcmVlQnVpbGRlcihpbnNlcnRlZE5vZGVz
KTsKICAgICBpZiAoaW5zZXJ0ZWROb2Rlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGlmIChuZWVkc0NvbG9yVHJhbnNmb3JtZWQpCisgICAgICAgIGludmVyc2VUcmFuc2Zvcm1D
b2xvcihpbnNlcnRlZE5vZGVzKTsKKwogICAgIHJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBT
dHlsZVNwYW5JbmxpbmUoaW5zZXJ0ZWROb2Rlcyk7CiAgICAgaWYgKGluc2VydGVkTm9kZXMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKaW5kZXggMGIyZWI5OWExZWZlYzcyODQ2MWNkMDRmYzdh
ZjlhZTJjMjU1OWQ3Yi4uMjljZWM0M2FiMGJjMTMyMjhlZDM3OTc2YzBkNjNkZjI1YTdhMTE5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
aApAQCAtOTksNiArOTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlVW5yZW5kZXJlZFRl
eHROb2Rlc0F0RW5kcyhJbnNlcnRlZE5vZGVzJik7CiAgICAgCiAgICAgdm9pZCByZW1vdmVSZWR1
bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydGVkTm9kZXMmKTsKKyAgICB2
b2lkIGludmVyc2VUcmFuc2Zvcm1Db2xvcihJbnNlcnRlZE5vZGVzJik7CiAgICAgdm9pZCBtYWtl
SW5zZXJ0ZWRDb250ZW50Um91bmRUcmlwcGFibGVXaXRoSFRNTFRyZWVCdWlsZGVyKEluc2VydGVk
Tm9kZXMmKTsKICAgICB2b2lkIG1vdmVOb2RlT3V0T2ZBbmNlc3RvcihOb2RlJiwgTm9kZSYgYW5j
ZXN0b3IsIEluc2VydGVkTm9kZXMmKTsKICAgICB2b2lkIGhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0
ZWROb2RlcyYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGY5NTI2NjAwN2IxZWM5MjIwMzg2MTRhYWU0NDMyNzE4NTNiNzFkMzAuLjYwMzAxN2Jj
ZTY0OWIyNmE3OWZmNDY4NDlhMWJkNjRlOTYyMzdmODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0wOS0wNCAg
VGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFpbCBhcHBl
YXJzIHRvIGJlIGRvdWJsZSBpbnZlcnRpbmcgY29kZSBjb3BpZWQgZnJvbSBOb3RlcywgWGNvZGUs
IG9yIFRlcm1pbmFsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAxMzY4CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzQwNTI5ODY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgVGVzdHM6IFBhc3Rl
SFRNTC5UcmFuc2Zvcm1Db2xvcnNPZkRhcmtDb250ZW50LCBQYXN0ZUhUTUwuRG9lc05vdFRyYW5z
Zm9ybUNvbG9yc09mTGlnaHRDb250ZW50LAorICAgICAgICAgICAgUGFzdGVSVEZELlRyYW5zZm9y
bUNvbG9yc09mRGFya0NvbnRlbnQsIFBhc3RlUlRGRC5Eb2VzTm90VHJhbnNmb3JtQ29sb3JzT2ZM
aWdodENvbnRlbnQKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVIVE1MLm1tOgorICAgICAgICAoY3JlYXRlV2ViVmlld1dpdGhDdXN0b21Q
YXN0ZWJvYXJkRGF0YVNldHRpbmcpOiBBZGRlZCBhcmd1bWVudCB0byBlbmFibGUgY29sb3IgZmls
dGVyLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVSVEZE
Lm1tOgorICAgICAgICAoY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJs
ZWQpOiBBZGRlZCBhcmd1bWVudCB0byBlbmFibGUgY29sb3IgZmlsdGVyLgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcmljaC1jb2xvci1maWx0ZXJlZC5odG1sOiBB
ZGRlZC4KKwogMjAxOS0wOS0wMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dQRV0gTWluaUJyb3dzZXIgc2hvdWxkIGhhbmRsZSB0aGUgV2ViS2l0V2Vi
Vmlldzo6Y3JlYXRlIHNpZ25hbApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MmE1ZmZiYmM1
MTZjOGM4NzQwN2NjYzllMmQ4OWY5MWJmYWVjNGI2Li43ODBmMDI5YTBlNDhmNWEzNTc0ZTdjZTM1
NTYwMjBkNzk5NmNkZmUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2LDYgKzEwNiw3
IEBACiAJCTFDN0ZFQjIwMjA3QzBGMkUwMEQyMzI3OCAvKiBCYWNrZ3JvdW5kQ29sb3IubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzdGRUIxRjIwN0Mw
RjJEMDBEMjMyNzggLyogQmFja2dyb3VuZENvbG9yLm1tICovOyB9OwogCQkxQzlFQjg0MTFFMzgw
REExMDA1QzY0NDIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOUVCODQwMUUzODBEQTEwMDVDNjQ0MiAv
KiBDb21wbGV4VGV4dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQkxQ0FDQURBMTIzMDYyMEFFMDAw
N0Q1NEMgLyogV0tXZWJWaWV3T3BhcXVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUNBQ0FEQTAyMzA2MjBBRDAwMDdENTRDIC8qIFdLV2ViVmlld09w
YXF1ZS5tbSAqLzsgfTsKKwkJMUNFNkZBQzMyMzIwMjY3QzAwRTQ4RjZFIC8qIHJpY2gtY29sb3It
ZmlsdGVyZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQ0U2RkFDMTIzMjAyNjRGMDBFNDhGNkUgLyogcmljaC1jb2xvci1maWx0ZXJl
ZC5odG1sICovOyB9OwogCQkxQ0Y1OUFFMjIxRTY4OTI1MDA2RTM3RUMgLyogRm9yY2VMaWdodEFw
cGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0Y1OUFFMDIxRTY4OTI1MDA2RTM3RUMgLyogRm9yY2VMaWdodEFw
cGVhcmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0gKi87IH07CiAJCTFDRjU5QUUzMjFFNjg5MzIwMDZF
MzdFQyAvKiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGNTlBREYyMUU2ODkyNTAwNkUzN0VDIC8q
IEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGUubW0gKi87IH07CiAJCTFDRjU5QUU1MjFFNjk3
N0QwMDZFMzdFQyAvKiBkYXJrLW1vZGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0Y1OUFFNDIxRTY5NkZCMDA2RTM3RUMgLyogZGFy
ay1tb2RlLmh0bWwgKi87IH07CkBAIC0xMzcyLDYgKzEzNzMsNyBAQAogCQkJCUY2RkREREQ2MTQy
NDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJQTEyRERDMDAxRTgzNzNFNzAwQ0Y2Q0FFIC8qIHJlbmRlcmVkLWltYWdlLWV4Y2x1ZGluZy1v
dmVyZmxvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0Njg0OUMwMUVFRjVFRjMw
MEI5MzdGRSAvKiByaWNoLWFuZC1wbGFpbi10ZXh0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CisJCQkJMUNFNkZBQzMyMzIwMjY3QzAwRTQ4RjZFIC8qIHJpY2gtY29sb3ItZmlsdGVyZWQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkyRTkyQjhGNzIxNjQ5MEQ0MDA1QjY0RjAgLyog
cmljaC10ZXh0LWF0dHJpYnV0ZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkwRjU2
NTFGOTFGQ0U1MTM1MDAzMTBGQkMgLyogc2Nyb2xsLXRvLWFuY2hvci5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUY0RTBBMjk2MjExRkM1RkIwMEFGN0M3RiAvKiBzZWxlY3RlZC10ZXh0
LWFuZC10ZXh0YXJlYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTUyNCw2ICsxNTI2
LDcgQEAKIAkJMUM5RUI4NDAxRTM4MERBMTAwNUM2NDQyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FDQURBMDIzMDYy
MEFEMDAwN0Q1NEMgLyogV0tXZWJWaWV3T3BhcXVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3T3BhcXVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0I5QkMzNzFBNjc0ODIzMDBGRTU2NzggLyogV2Vha1B0ci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrUHRyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUNFNkZBQzEyMzIwMjY0RjAwRTQ4RjZFIC8qIHJpY2gtY29sb3It
ZmlsdGVyZWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJyaWNoLWNvbG9yLWZp
bHRlcmVkLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0YwRDM3ODFCQkYy
RjNEMDBCNEVGNTQgLyogV0tSZXRhaW5QdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tSZXRhaW5QdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQ0Y1OUFERjIxRTY4OTI1MDA2RTM3RUMgLyogRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRs
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvcmNlTGlnaHRB
cHBlYXJhbmNlSW5CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjU5
QUUwMjFFNjg5MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRs
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvcmNlTGlnaHRB
cHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzMwMyw2ICszMzA2LDcgQEAKIAkJCQlGNDFBQjk5QTFFRjQ2OTJDMDA4M0ZBMDggLyogcHJl
dmVudC1zdGFydC5odG1sICovLAogCQkJCUExMkREQkZGMUU4MzczQzEwMENGNkNBRSAvKiByZW5k
ZXJlZC1pbWFnZS1leGNsdWRpbmctb3ZlcmZsb3cuaHRtbCAqLywKIAkJCQlGNDY4NDlCRjFFRUY1
RURDMDBCOTM3RkUgLyogcmljaC1hbmQtcGxhaW4tdGV4dC5odG1sICovLAorCQkJCTFDRTZGQUMx
MjMyMDI2NEYwMEU0OEY2RSAvKiByaWNoLWNvbG9yLWZpbHRlcmVkLmh0bWwgKi8sCiAJCQkJMkU5
MkI4RjYyMTY0OTBDMzAwNUI2NEYwIC8qIHJpY2gtdGV4dC1hdHRyaWJ1dGVzLmh0bWwgKi8sCiAJ
CQkJRjRFMEEyOTUyMTFGQzVBMzAwQUY3QzdGIC8qIHNlbGVjdGVkLXRleHQtYW5kLXRleHRhcmVh
Lmh0bWwgKi8sCiAJCQkJRjRENjVEQTcxRjVFNDZDMDAwOUQ4QzI3IC8qIHNlbGVjdGVkLXRleHQt
aW1hZ2UtbGluay1hbmQtZWRpdGFibGUuaHRtbCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW0KaW5kZXggNjQwYzFjMDNhODgxZDkx
ODYxYTIwN2Y3Yjk0NTc1NTMzZTU1MTRlMS4uMjE4YWVmZjY1NDgzZjFlZjQxMzM5MjA5M2Y0Nzgz
YTRkYWYzMTM1MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZUhUTUwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZUhUTUwubW0KQEAgLTU3LDkgKzU3LDEyIEBAIHZvaWQgd3JpdGVIVE1MVG9QYXN0
ZWJvYXJkKE5TU3RyaW5nICpodG1sKQogfQogI2VuZGlmCiAKLXN0YXRpYyBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmco
Ym9vbCBlbmFibGVkKQorc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBjcmVhdGVXZWJW
aWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyhib29sIGVuYWJsZWQsIGJvb2wgY29s
b3JGaWx0ZXJFbmFibGVkID0gZmFsc2UpCiB7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAs
IDQwMCldKTsKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRp
b24gX3NldENvbG9yRmlsdGVyRW5hYmxlZDpjb2xvckZpbHRlckVuYWJsZWRdOworCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJh
dGlvbi5nZXQoKV0pOwogICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoX19icmlkZ2UgV0tQcmVmZXJl
bmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOwogICAgIFdLUHJl
ZmVyZW5jZXNTZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwog
ICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQocHJlZmVyZW5j
ZXMsIGVuYWJsZWQpOwpAQCAtMzU3LDQgKzM2MCw0NSBAQCBURVNUKFBhc3RlSFRNTCwgU3RyaXBz
U3lzdGVtRm9udE5hbWVzKQogICAgICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5mb250RmFtaWx5Il0pOwog
fQogCitURVNUKFBhc3RlSFRNTCwgVHJhbnNmb3JtQ29sb3JzT2ZEYXJrQ29udGVudCkKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0
dGluZyh0cnVlLCB0cnVlKTsKKworI2lmIFVTRShBUFBLSVQpCisgICAgW3dlYlZpZXcgc2V0QXBw
ZWFyYW5jZTpbTlNBcHBlYXJhbmNlIGFwcGVhcmFuY2VOYW1lZDpOU0FwcGVhcmFuY2VOYW1lRGFy
a0FxdWFdXTsKKyNlbHNlCisgICAgW3dlYlZpZXcgc2V0T3ZlcnJpZGVVc2VySW50ZXJmYWNlU3R5
bGU6VUlVc2VySW50ZXJmYWNlU3R5bGVEYXJrXTsKKyNlbmRpZgorCisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicmljaC1jb2xvci1maWx0ZXJlZCJdOworCisg
ICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDIzOCwg
MjM4LCAyMzgpOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTEsIDUxLCA1MSlcIj5IZWxsbzwvc3Bh
bj4iKTsKKworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZWxl
Y3RSaWNoVGV4dCgpIl07CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9X
S19TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVy
eVNlbGVjdG9yKCdzcGFuJykuc3R5bGUuY29sb3IiXSwgQCJyZ2IoMjEsIDIxLCAyMSkiKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InJpY2gucXVlcnlTZWxlY3Rvcignc3BhbicpLnN0eWxlLmJhY2tncm91bmRDb2xvciJdLCBAInJn
YigyNTUsIDI1NSwgMjU1KSIpOworfQorCitURVNUKFBhc3RlSFRNTCwgRG9lc05vdFRyYW5zZm9y
bUNvbG9yc09mTGlnaHRDb250ZW50KQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZp
ZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFTZXR0aW5nKHRydWUsIHRydWUpOworCisjaWYgVVNF
KEFQUEtJVCkKKyAgICBbd2ViVmlldyBzZXRBcHBlYXJhbmNlOltOU0FwcGVhcmFuY2UgYXBwZWFy
YW5jZU5hbWVkOk5TQXBwZWFyYW5jZU5hbWVEYXJrQXF1YV1dOworI2Vsc2UKKyAgICBbd2ViVmll
dyBzZXRPdmVycmlkZVVzZXJJbnRlcmZhY2VTdHlsZTpVSVVzZXJJbnRlcmZhY2VTdHlsZURhcmtd
OworI2VuZGlmCisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6
QCJyaWNoLWNvbG9yLWZpbHRlcmVkIl07CisKKyAgICB3cml0ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8
c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTAxLCAxMDEsIDEwMSlcIj5IZWxsbzwvc3Bhbj4iKTsK
KworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZWxlY3RSaWNo
VGV4dCgpIl07CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJF
UShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVyeVNlbGVj
dG9yKCdzcGFuJykuc3R5bGUuY29sb3IiXSwgQCJyZ2IoMTAxLCAxMDEsIDEwMSkiKTsKK30KKwog
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Bhc3RlUlRGRC5tbQppbmRleCA2ZjIzZmJlMjdmNzhhOTRjMTc5NjA0
MTFhMGMyNTQxMmRhNDcyZGZkLi43ODQ1ZTE4ZWVmYTkyYWQyODMyMDRiYmQxNTY1NzUwM2NkMTFj
MWUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bh
c3RlUlRGRC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bh
c3RlUlRGRC5tbQpAQCAtMzksNiArMzksMTIgQEAKICNpbmNsdWRlIDxNb2JpbGVDb3JlU2Vydmlj
ZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjZW5kaWYKIAorI2lmIFVTRShBUFBLSVQpCit1c2lu
ZyBQbGF0Zm9ybUNvbG9yID0gTlNDb2xvcjsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybUNvbG9yID0g
VUlDb2xvcjsKKyNlbmRpZgorCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoKQogLSAodm9pZClwYXN0
ZTooaWQpc2VuZGVyOwogQGVuZApAQCAtNzYsOSArODIsMTIgQEAgdm9pZCB3cml0ZVJURkRUb1Bh
c3RlYm9hcmQoTlNEYXRhICpkYXRhKQogfQogI2VuZGlmCiAKLXN0YXRpYyBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQo
KQorc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBjcmVhdGVXZWJWaWV3V2l0aEN1c3Rv
bVBhc3RlYm9hcmREYXRhRW5hYmxlZChib29sIGNvbG9yRmlsdGVyRW5hYmxlZCA9IGZhbHNlKQog
ewotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgYXV0byB3ZWJWaWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRDb2xvckZpbHRlckVuYWJsZWQ6
Y29sb3JGaWx0ZXJFbmFibGVkXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDAp
IGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvIHBy
ZWZlcmVuY2VzID0gKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW1t3ZWJWaWV3IGNvbmZpZ3Vy
YXRpb25dIHByZWZlcmVuY2VzXTsKICAgICBXS1ByZWZlcmVuY2VzU2V0RGF0YVRyYW5zZmVySXRl
bXNFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9t
UGFzdGVib2FyZERhdGFFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKQEAgLTE3Niw3ICsxODUs
NzQgQEAgVEVTVChQYXN0ZVJURkQsIEltYWdlRWxlbWVudFVzZXNCbG9iVVJMSW5IVE1MKQogICAg
IEVYUEVDVF9XS19TVFJFUSgiYmxvYjoiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAibmV3IFVSTChpbWFnZUVsZW1lbnQuc3JjKS5wcm90b2NvbCJdKTsKIH0KIAotI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKK1RFU1QoUGFzdGVSVEZELCBUcmFuc2Zvcm1Db2xvcnNPZkRh
cmtDb250ZW50KQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9t
UGFzdGVib2FyZERhdGFFbmFibGVkKHRydWUpOworCisjaWYgVVNFKEFQUEtJVCkKKyAgICBbd2Vi
VmlldyBzZXRBcHBlYXJhbmNlOltOU0FwcGVhcmFuY2UgYXBwZWFyYW5jZU5hbWVkOk5TQXBwZWFy
YW5jZU5hbWVEYXJrQXF1YV1dOworI2Vsc2UKKyAgICBbd2ViVmlldyBzZXRPdmVycmlkZVVzZXJJ
bnRlcmZhY2VTdHlsZTpVSVVzZXJJbnRlcmZhY2VTdHlsZURhcmtdOworI2VuZGlmCisKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJyaWNoLWNvbG9yLWZpbHRl
cmVkIl07CisKKyAgICBQbGF0Zm9ybUNvbG9yICp0ZXh0Q29sb3IgPSBbUGxhdGZvcm1Db2xvciBs
aWdodEdyYXlDb2xvcl07CisgICAgUGxhdGZvcm1Db2xvciAqYmFja2dyb3VuZENvbG9yID0gW1Bs
YXRmb3JtQ29sb3IgZGFya0dyYXlDb2xvcl07CiAKKyAgICBhdXRvIGhlbGxvID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJIZWxsbyIgYXR0cmli
dXRlczpAeyBOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgOiBiYWNrZ3JvdW5kQ29sb3Is
IE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSA6IHRleHRDb2xvciB9XSk7CisgICAgYXV0
byB3b3JsZCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3Ry
aW5nOkAiIFdvcmxkIiBhdHRyaWJ1dGVzOkB7IE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFt
ZSA6IHRleHRDb2xvciB9XSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pOworICAgIFtzdHJpbmcgYXBwZW5kQXR0cmli
dXRlZFN0cmluZzpoZWxsby5nZXQoKV07CisgICAgW3N0cmluZyBhcHBlbmRBdHRyaWJ1dGVkU3Ry
aW5nOndvcmxkLmdldCgpXTsKKworICAgIHdyaXRlUlRGVG9QYXN0ZWJvYXJkKFtzdHJpbmcgUlRG
RnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1
dGVzOkB7IH1dKTsKIAorICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJzZWxlY3RSaWNoVGV4dCgpIl07CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworI2lmIFVT
RShBUFBLSVQpCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJyaWNoLnF1ZXJ5U2VsZWN0b3IoJ3AnKS5zdHlsZS5jb2xvciJdLCBAInJn
YigxMjYsIDEyNiwgMTI2KSIpOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVyeVNlbGVjdG9yKCdwID4gc3BhbicpLnN0
eWxlLmJhY2tncm91bmRDb2xvciJdLCBAInJnYigyMzUsIDIzNSwgMjM1KSIpOworI2Vsc2UKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InJpY2gucXVlcnlTZWxlY3RvcigncCcpLnN0eWxlLmNvbG9yIl0sIEAicmdiKDEwNiwgMTA2LCAx
MDYpIik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJyaWNoLnF1ZXJ5U2VsZWN0b3IoJ3AgPiBzcGFuJykuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yIl0sIEAicmdiKDIxMywgMjEzLCAyMTMpIik7CisjZW5kaWYKK30KKworVEVTVChQYXN0
ZVJURkQsIERvZXNOb3RUcmFuc2Zvcm1Db2xvcnNPZkxpZ2h0Q29udGVudCkKK3sKKyAgICBhdXRv
IHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCh0
cnVlKTsKKworI2lmIFVTRShBUFBLSVQpCisgICAgW3dlYlZpZXcgc2V0QXBwZWFyYW5jZTpbTlNB
cHBlYXJhbmNlIGFwcGVhcmFuY2VOYW1lZDpOU0FwcGVhcmFuY2VOYW1lRGFya0FxdWFdXTsKKyNl
bHNlCisgICAgW3dlYlZpZXcgc2V0T3ZlcnJpZGVVc2VySW50ZXJmYWNlU3R5bGU6VUlVc2VySW50
ZXJmYWNlU3R5bGVEYXJrXTsKKyNlbmRpZgorCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOkAicmljaC1jb2xvci1maWx0ZXJlZCJdOworCisgICAgUGxhdGZvcm1D
b2xvciAqdGV4dENvbG9yID0gW1BsYXRmb3JtQ29sb3IgZGFya0dyYXlDb2xvcl07CisgICAgUGxh
dGZvcm1Db2xvciAqYmFja2dyb3VuZENvbG9yID0gW1BsYXRmb3JtQ29sb3IgbGlnaHRHcmF5Q29s
b3JdOworCisgICAgYXV0byBoZWxsbyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOkAiSGVsbG8iIGF0dHJpYnV0ZXM6QHsgTlNCYWNrZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lIDogYmFja2dyb3VuZENvbG9yLCBOU0ZvcmVncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWUgOiB0ZXh0Q29sb3IgfV0pOworICAgIGF1dG8gd29ybGQgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiBXb3JsZCIgYXR0cmlidXRl
czpAeyBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgOiB0ZXh0Q29sb3IgfV0pOworICAg
IGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRdKTsKKyAgICBbc3RyaW5nIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6aGVsbG8uZ2V0KCld
OworICAgIFtzdHJpbmcgYXBwZW5kQXR0cmlidXRlZFN0cmluZzp3b3JsZC5nZXQoKV07CisKKyAg
ICB3cml0ZVJURlRvUGFzdGVib2FyZChbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgw
LCBbc3RyaW5nIGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisKKyAgICBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic2VsZWN0UmljaFRleHQoKSJdOwor
ICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyNpZiBVU0UoQVBQS0lUKQorICAgIEVYUEVDVF9X
S19TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVy
eVNlbGVjdG9yKCdwJykuc3R5bGUuY29sb3IiXSwgQCJyZ2IoNjcsIDY3LCA2NykiKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJp
Y2gucXVlcnlTZWxlY3RvcigncCA+IHNwYW4nKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IiXSwgQCJy
Z2IoMTU0LCAxNTQsIDE1NCkiKTsKKyNlbHNlCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJyaWNoLnF1ZXJ5U2VsZWN0b3IoJ3AnKS5z
dHlsZS5jb2xvciJdLCBAInJnYig4NSwgODUsIDg1KSIpOworICAgIEVYUEVDVF9XS19TVFJFUShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVyeVNlbGVjdG9y
KCdwID4gc3BhbicpLnN0eWxlLmJhY2tncm91bmRDb2xvciJdLCBAInJnYigxNzAsIDE3MCwgMTcw
KSIpOworI2VuZGlmCit9CiAKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcmljaC1jb2xvci1maWx0ZXJl
ZC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9yaWNoLWNvbG9y
LWZpbHRlcmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI4NmVkMDgwYmEwMzUzZWM0ZTljYzRjMTFkZjFm
MWMxZTczM2JkYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvcmljaC1jb2xvci1maWx0ZXJlZC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxo
ZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lk
dGgiPgorICAgIDxzdHlsZT4KKyAgICA6cm9vdCB7CisgICAgICAgIGNvbG9yLXNjaGVtZTogZGFy
azsKKyAgICAgICAgLWFwcGxlLWNvbG9yLWZpbHRlcjogYXBwbGUtaW52ZXJ0LWxpZ2h0bmVzcygp
OworICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keT4KKyAgICA8ZGl2IGlkPSJy
aWNoIiBjb250ZW50ZWRpdGFibGU+SGVsbG8gd29ybGQ8L2Rpdj4KKyAgICA8c2NyaXB0PgorICAg
IGZ1bmN0aW9uIGRlc2VsZWN0VGV4dCgpCisgICAgeworICAgICAgICBibHVyKCk7CisgICAgICAg
IGdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHNlbGVjdFJpY2hUZXh0KCkKKyAgICB7CisgICAgICAgIGRlc2VsZWN0VGV4dCgpOworICAgICAg
ICBsZXQgdGV4dCA9IHJpY2guY2hpbGROb2Rlc1swXTsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCku
c2V0QmFzZUFuZEV4dGVudCh0ZXh0LCAwLCB0ZXh0LCB0ZXh0LmRhdGEubGVuZ3RoKTsKKyAgICB9
CisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWNhMWFiMGZjMDZkZDY2ZWFlNDhmOThh
NzMxZWE4ZmRjZmZlYWUzNi4uZDBjMDFhNjkxNThjYzgzN2U2ZDhlOTcyZjU1NDI1MGY1YmQxN2Rj
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTA0ICBUaW1vdGh5IEhhdGNoZXIgIDx0
aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWlsIGFwcGVhcnMgdG8gYmUgZG91YmxlIGlu
dmVydGluZyBjb2RlIGNvcGllZCBmcm9tIE5vdGVzLCBYY29kZSwgb3IgVGVybWluYWwuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzNjgKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNDA1Mjk4NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29s
b3ItZmlsdGVyZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLTEyL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTktMDgtMjkgIFRp
bW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIENvcHlpbmcgYW5k
IHBhc3RpbmcgdHdvIHBhcmFncmFwaHMgd2l0aCBhIG5ld2xpbmUgYmV0d2VlbiB0aGVtIHJlc3Vs
dHMgaW4gc3RyYXkgcGFyYWdyYXBoIHdpdGggbmV3bGluZSBpbnNpZGUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCA5NTlhNzRlZmJjYTIwNWRjMDA5MDg4YzY3N2YxZmM3ZDFhMmQ5MzM3Li45ZjE0MzRj
MGIwMTNmYmYzY2Q2NjM3ZDM4Nzk1MzU2OTU4NjI0MDY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTg3LDEwICs4NywxMSBAQCBmYXN0L2Zvcm1zL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy1oaWRkZW4t
Y3Jhc2guaHRtbCBbIFNraXAgXQogIyBUaGVzZSB0ZXN0cyBkb24ndCBoYXZlIHRvIGJlIHBsYXRm
b3JtLXNwZWNpZmljLCBidXQgdGhleSBhcmUgb25seSBpbXBsZW1lbnRlZCBvbiBNYWMgbm93Lgog
ZmFzdC9pbWFnZXMvZXBzLWFzLWltYWdlLmh0bWwgWyBTa2lwIF0KIAotIyBPbmx5IGFwcGxpY2Fi
bGUgb24gbWFjT1MKKyMgT25seSBhcHBsaWNhYmxlIG9uIHBsYXRmb3JtcyB3aXRoIGRhcmsgbW9k
ZSBzdXBwb3J0CiBjc3MtZGFyay1tb2RlIFsgU2tpcCBdCiBmYXN0L2Nzcy9hcHBsZS1zeXN0ZW0t
Y29udHJvbC1jb2xvcnMuaHRtbCBbIFNraXAgXQogaW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFw
cGVhcmFuY2UuaHRtbCBbIFNraXAgXQorZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9k
ZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgU2tpcCBdCiAKICMgT25seSBNYWMgc3VwcG9ydHMgZm9y
Y2UgdGVzdHMuCiBmYXN0L2V2ZW50cy9jYW5jZWxsZWQtZm9yY2UtY2xpY2stbGluay1uYXZpZ2F0
aW9uLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZjNzNhZTA3NDI4NjY4ZjU4NDg2ZDM2Zjg2YWY3ZWY5
MGFmZThlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjcgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBwYXN0aW5nIGludG8gYSBjb2xvciBmaWx0ZXJl
ZCBkYXJrIG1vZGUgZG9jdW1lbnQgaW5zZXJ0cyBsaWdodCBtb2RlIHRyYW5zZm9ybWVkIGNvbnRl
bnQuCisKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJn
YigwLCAwLCAwKTsgY29sb3I6IHJnYigwLCAwLCAwKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1
NSwgMjU1LCAyNTUpOyI+SGVsbG88L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFu
IHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDIxLCAyMSwgMjEpOyBjb2xvcjogcmdiKDIxLCAyMSwg
MjEpOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bhbj4n
CitQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMjEs
IDIxLCAyMSk7IGNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJhY2tncm91bmQtY29sb3I6IHJnYigy
MTMsIDIxMywgMjEzKTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3Bh
biBzdHlsZT0iY29sb3I6IHJnYigxMDYsIDEwNiwgMTA2KTsiPkhlbGxvPC9zcGFuPjxzcGFuIHN0
eWxlPSJjb2xvcjogcmdiKDEyNywgMTI4LCAxMjcpOyI+SGVsbG8gMjwvc3Bhbj4nCitQQVNTIHBh
c3RlZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMTI3LCAxMjgsIDEy
Nyk7IGNvbG9yOiByZ2IoMTI3LCAxMjgsIDEyNyk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIHBhc3Rl
ZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMTcwLCAxNzAsIDE3MCk7
IGNvbG9yOiByZ2IoMTcwLCAxNzAsIDE3MCk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIHBhc3RlZE1h
cmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7IGNv
bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIHBhc3RlZE1hcmt1
cCBpcyAnPGxpPkl0ZW0gMTwvbGk+PGxpPjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDAp
OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bhbj48L2xp
PjxsaT5JdGVtIDI8L2xpPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8bGk+SXRlbSAxPC9saT48
bGkgc3R5bGU9ImNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJhY2tncm91bmQtY29sb3I6IHJnYigy
MTMsIDIxMywgMjEzKTsiPkhlbGxvIDE8L2xpPjxsaT5IZWxsbyAyPC9saT48bGk+SXRlbSAyPC9s
aT4nCitQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPGxpPkl0ZW0gMTwvbGk+PGxpPkhlbGxvIDE8L2xp
PjxsaSBzdHlsZT0iY29sb3I6IHJnYigxMjcsIDEyOCwgMTI3KTsiPkhlbGxvIDI8L2xpPjxsaT5J
dGVtIDI8L2xpPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY2FyZXQtY29s
b3I6IHJnYigxMDEsIDEwMSwgMTAxKTsgY29sb3I6IHJnYigxMDEsIDEwMSwgMTAxKTsiPkhlbGxv
PC9zcGFuPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6
IHJnYig5MCwgOTAsIDkwKTsgY29sb3I6IHJnYig5MCwgOTAsIDkwKTsiPkhlbGxvPC9zcGFuPicK
K1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY29sb3I6IHJnYig4NSwgODUsIDg1
KTsiPkhlbGxvPC9zcGFuPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsiPkhl
bGxvIDI8L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1j
b2xvcjogcmdiKDY4LCA2OCwgNjgpOyBjb2xvcjogcmdiKDY4LCA2OCwgNjgpOyI+SGVsbG88L3Nw
YW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdi
KDY4LCA2OCwgNjgpOyBjb2xvcjogcmdiKDY4LCA2OCwgNjgpOyI+SGVsbG88L3NwYW4+JworUEFT
UyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDAp
OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+SGVsbG88L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAg
aXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBjb2xvcjogcmdiKDAs
IDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bh
bj4nCitQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IHJnYigyNTUsIDI1NSwgMjU1KTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgcGFzdGVkTWFya3VwIGlz
ICc8bGk+SXRlbSAxPC9saT48bGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHdoaXRl
OyI+SGVsbG88L3NwYW4+PC9saT48bGk+SXRlbSAyPC9saT4nCitQQVNTIHBhc3RlZE1hcmt1cCBp
cyAnPGxpPkl0ZW0gMTwvbGk+PGxpIHN0eWxlPSJjb2xvcjogcmdiKDg1LCA4NSwgODUpOyBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Ij5IZWxsbyAxPC9saT48bGk+SGVsbG8g
MjwvbGk+PGxpPkl0ZW0gMjwvbGk+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxsaT5JdGVtIDE8
L2xpPjxsaT5IZWxsbyAxPC9saT48bGkgc3R5bGU9ImNvbG9yOiBibGFjazsiPkhlbGxvIDI8L2xp
PjxsaT5JdGVtIDI8L2xpPicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmZhYThjNzU5ZDVjZDYzMDk0NzAzYWMzY2M3Mzg1YjJkMDIyYjU1NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29s
b3ItZmlsdGVyZWQuaHRtbApAQCAtMCwwICsxLDk1IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNvbG9yRmlsdGVyPXRydWUgXSAtLT4KKzxodG1sPgor
PGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAg
IDxzdHlsZT4KKyAgICAgICAgOnJvb3QgeworICAgICAgICAgICAgY29sb3Itc2NoZW1lOiBkYXJr
OworICAgICAgICAgICAgLWFwcGxlLWNvbG9yLWZpbHRlcjogYXBwbGUtaW52ZXJ0LWxpZ2h0bmVz
cygpOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwIGlk
PSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHBhc3RpbmcgaW50byBhIGNvbG9y
IGZpbHRlcmVkIGRhcmsgbW9kZSBkb2N1bWVudCBpbnNlcnRzIGxpZ2h0IG1vZGUgdHJhbnNmb3Jt
ZWQgY29udGVudC48L3A+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgICA8c2Ny
aXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1ZSk7CisKKyAgICBsZXQgc2VsID0gZG9jdW1lbnQu
Z2V0U2VsZWN0aW9uKCk7CisgICAgbGV0IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJy
b290Iik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIGZ1bmN0
aW9uIGNyZWF0ZUVkaXRhYmxlKHRhZ05hbWUsIG1hcmt1cCkgeworICAgICAgICBsZXQgbm9kZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7CisgICAgICAgIG5vZGUuY29udGVudEVk
aXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1hcmt1cCkKKyAgICAgICAgICAgIG5vZGUuaW5u
ZXJIVE1MID0gbWFya3VwOworICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiB0ZXN0Q29weVBhc3RlKG9yaWdpbmFsTWFya3VwLCBleHBlY3RlZCwgYXNMaXN0ID0gZmFs
c2UpIHsKKyAgICAgICAgbGV0IHRhZ05hbWUgPSBhc0xpc3QgPyAidWwiIDogImRpdiI7CisgICAg
ICAgIGxldCBjb3B5Tm9kZSA9IGNyZWF0ZUVkaXRhYmxlKHRhZ05hbWUsIG9yaWdpbmFsTWFya3Vw
KTsKKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChjb3B5Tm9kZSk7CisgICAgICAgIGNvcHlOb2Rl
LmZvY3VzKCk7CisKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIsIGZh
bHNlKTsKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkNvcHkiLCBmYWxzZSk7CisKKyAg
ICAgICAgY29weU5vZGUucmVtb3ZlKCk7CisKKyAgICAgICAgbGV0IHBhc3RlTm9kZSA9IGNyZWF0
ZUVkaXRhYmxlKHRhZ05hbWUpOworICAgICAgICByb290LmFwcGVuZENoaWxkKHBhc3RlTm9kZSk7
CisKKyAgICAgICAgaWYgKGFzTGlzdCkgeworICAgICAgICAgICAgcGFzdGVOb2RlLmlubmVySFRN
TCA9ICI8bGk+SXRlbSAxPC9saT48bGk+SXRlbSAyPC9saT4iOworICAgICAgICAgICAgcGFzdGVO
b2RlLmZvY3VzKCk7CisgICAgICAgICAgICBtb3ZlU2VsZWN0aW9uRm9yd2FyZEJ5TGluZUNvbW1h
bmQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwYXN0ZU5vZGUuZm9jdXMoKTsKKwor
ICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiUGFzdGUiLCBmYWxzZSk7CisKKyAgICAgICAg
cGFzdGVkTWFya3VwID0gcGFzdGVOb2RlLmlubmVySFRNTDsKKworICAgICAgICBzaG91bGRCZSgi
cGFzdGVkTWFya3VwIiwgIiciICsgZXhwZWN0ZWQgKyAiJyIpOworICAgIH0KKworICAgIC8vIFRy
YW5zZm9ybWVkIG9uIHBhc3RlCisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5bGU9XCJjb2xv
cjogd2hpdGU7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFu
IHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgY29sb3I6IHJnYigwLCAwLCAwKTsg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wiPkhlbGxvPC9zcGFuPiIpOwor
ICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigyMzgsIDIzOCwgMjM4
KTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDUxLCA1MSwgNTEpXCI+SGVsbG88L3NwYW4+IiwgIjxz
cGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigyMSwgMjEsIDIxKTsgY29sb3I6IHJnYigyMSwg
MjEsIDIxKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wiPkhlbGxvPC9z
cGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigyMzgs
IDIzOCwgMjM4KTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDg1LCA4NSwgODUpXCI+SGVsbG88L3Nw
YW4+IiwgIjxzcGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigyMSwgMjEsIDIxKTsgY29sb3I6
IHJnYigyMSwgMjEsIDIxKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxMywgMjEzLCAyMTMpO1wi
PkhlbGxvPC9zcGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6
IHJnYigxNzAsIDE3MCwgMTcwKVwiPkhlbGxvPC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IHJn
YigxNTMsIDE1MywgMTUzKVwiPkhlbGxvIDI8L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwiY29sb3I6
IHJnYigxMDYsIDEwNiwgMTA2KTtcIj5IZWxsbzwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiBy
Z2IoMTI3LCAxMjgsIDEyNyk7XCI+SGVsbG8gMjwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3Rl
KCI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTUzLCAxNTMsIDE1MylcIj5IZWxsbzwvc3Bhbj4i
LCAiPHNwYW4gc3R5bGU9XCJjYXJldC1jb2xvcjogcmdiKDEyNywgMTI4LCAxMjcpOyBjb2xvcjog
cmdiKDEyNywgMTI4LCAxMjcpO1wiPkhlbGxvPC9zcGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUo
IjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigxMTksIDExOSwgMTE5KVwiPkhlbGxvPC9zcGFuPiIs
ICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoMTcwLCAxNzAsIDE3MCk7IGNvbG9yOiBy
Z2IoMTcwLCAxNzAsIDE3MCk7XCI+SGVsbG88L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgi
PHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDEwMiwgMTAyLCAxMDIpXCI+SGVsbG88L3NwYW4+Iiwg
IjxzcGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgY29sb3I6IHJn
YigxOTEsIDE5MSwgMTkxKTtcIj5IZWxsbzwvc3Bhbj4iKTsKKworICAgIC8vIFRyYW5zZm9ybWVk
IGxpc3QgaXRlbXMgb24gcGFzdGUKKyAgICB0ZXN0Q29weVBhc3RlKCI8bGk+PHNwYW4gc3R5bGU9
XCJjb2xvcjogd2hpdGU7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrXCI+SGVsbG88L3NwYW4+PC9s
aT4iLCAiPGxpPkl0ZW0gMTwvbGk+PGxpPjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigwLCAwLCAw
KTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wiPkhlbGxvPC9zcGFuPjwv
bGk+PGxpPkl0ZW0gMjwvbGk+IiwgdHJ1ZSk7CisgICAgdGVzdENvcHlQYXN0ZSgiPGxpIHN0eWxl
PVwiY29sb3I6IHJnYigyMzgsIDIzOCwgMjM4KTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDg1LCA4
NSwgODUpXCI+SGVsbG8gMTwvbGk+PGxpPkhlbGxvIDI8L2xpPiIsICI8bGk+SXRlbSAxPC9saT48
bGkgc3R5bGU9XCJjb2xvcjogcmdiKDIxLCAyMSwgMjEpOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjEzLCAyMTMsIDIxMyk7XCI+SGVsbG8gMTwvbGk+PGxpPkhlbGxvIDI8L2xpPjxsaT5JdGVtIDI8
L2xpPiIsIHRydWUpOworICAgIHRlc3RDb3B5UGFzdGUoIjxsaT5IZWxsbyAxPC9saT48bGkgc3R5
bGU9XCJjb2xvcjogcmdiKDE1MywgMTUzLCAxNTMpXCI+SGVsbG8gMjwvbGk+IiwgIjxsaT5JdGVt
IDE8L2xpPjxsaT5IZWxsbyAxPC9saT48bGkgc3R5bGU9XCJjb2xvcjogcmdiKDEyNywgMTI4LCAx
MjcpO1wiPkhlbGxvIDI8L2xpPjxsaT5JdGVtIDI8L2xpPiIsIHRydWUpOworCisgICAgLy8gTm90
IHRyYW5zZm9ybWVkIG9uIHBhc3RlCisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5bGU9XCJj
b2xvcjogcmdiKDEwMSwgMTAxLCAxMDEpXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwi
Y2FyZXQtY29sb3I6IHJnYigxMDEsIDEwMSwgMTAxKTsgY29sb3I6IHJnYigxMDEsIDEwMSwgMTAx
KTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1cImNv
bG9yOiByZ2IoOTAsIDkwLCA5MClcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJjYXJl
dC1jb2xvcjogcmdiKDkwLCA5MCwgOTApOyBjb2xvcjogcmdiKDkwLCA5MCwgOTApO1wiPkhlbGxv
PC9zcGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig4
NSwgODUsIDg1KVwiPkhlbGxvPC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBiYWNr
Z3JvdW5kLWNvbG9yOiBibGFja1wiPkhlbGxvIDI8L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwiY29s
b3I6IHJnYig4NSwgODUsIDg1KTtcIj5IZWxsbzwvc3Bhbj48c3BhbiBzdHlsZT1cImJhY2tncm91
bmQtY29sb3I6IGJsYWNrO1wiPkhlbGxvIDI8L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgi
PHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDY4LCA2OCwgNjgpXCI+SGVsbG88L3NwYW4+IiwgIjxz
cGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYig2OCwgNjgsIDY4KTsgY29sb3I6IHJnYig2OCwg
NjgsIDY4KTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHls
ZT1cImNvbG9yOiByZ2IoNjgsIDY4LCA2OClcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9
XCJjYXJldC1jb2xvcjogcmdiKDY4LCA2OCwgNjgpOyBjb2xvcjogcmdiKDY4LCA2OCwgNjgpO1wi
PkhlbGxvPC9zcGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6
IGJsYWNrXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigw
LCAwLCAwKTsgY29sb3I6IHJnYigwLCAwLCAwKTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0
Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1cImNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1jb2xvcjog
d2hpdGVcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJjYXJldC1jb2xvcjogcmdiKDAs
IDAsIDApOyBjb2xvcjogcmdiKDAsIDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAy
NTUsIDI1NSk7XCI+SGVsbG88L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5
bGU9XCJjb2xvcjogd2hpdGU7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlXCI+SGVsbG88L3NwYW4+
IiwgIjxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wi
PkhlbGxvPC9zcGFuPiIpOworCisgICAgLy8gTGlzdCBpdGVtcyBub3QgdHJhbnNmb3JtZWQgb24g
cGFzdGUKKyAgICB0ZXN0Q29weVBhc3RlKCI8bGk+PHNwYW4gc3R5bGU9XCJjb2xvcjogd2hpdGU7
IGJhY2tncm91bmQtY29sb3I6IHdoaXRlXCI+SGVsbG88L3NwYW4+PC9saT4iLCAiPGxpPkl0ZW0g
MTwvbGk+PGxpPjxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XCI+SGVsbG88
L3NwYW4+PC9saT48bGk+SXRlbSAyPC9saT4iLCB0cnVlKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8
bGkgc3R5bGU9XCJjb2xvcjogcmdiKDg1LCA4NSwgODUpOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjM1LCAyMzUsIDIzNSlcIj5IZWxsbyAxPC9saT48bGk+SGVsbG8gMjwvbGk+IiwgIjxsaT5JdGVt
IDE8L2xpPjxsaSBzdHlsZT1cImNvbG9yOiByZ2IoODUsIDg1LCA4NSk7IGJhY2tncm91bmQtY29s
b3I6IHJnYigyMzUsIDIzNSwgMjM1KTtcIj5IZWxsbyAxPC9saT48bGk+SGVsbG8gMjwvbGk+PGxp
Pkl0ZW0gMjwvbGk+IiwgdHJ1ZSk7CisgICAgdGVzdENvcHlQYXN0ZSgiPGxpPkhlbGxvIDE8L2xp
PjxsaSBzdHlsZT1cImNvbG9yOiBibGFja1wiPkhlbGxvIDI8L2xpPiIsICI8bGk+SXRlbSAxPC9s
aT48bGk+SGVsbG8gMTwvbGk+PGxpIHN0eWxlPVwiY29sb3I6IGJsYWNrO1wiPkhlbGxvIDI8L2xp
PjxsaT5JdGVtIDI8L2xpPiIsIHRydWUpOworCisgICAgcm9vdC5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEyL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MtMTIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxZjg1NDhlOWIyMjIyYzBl
ODVmZmYwODYyN2E3MTA1ZjlhZWY5Nzk0Li5jOWJlODI3Yzk0Njk2MTk5ODUyNjE3ZmZlNDcwZGEz
NmM1ZjM1ZmJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTIvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMSw1ICsxLDYgQEAKIGNzcy1kYXJrLW1vZGUgWyBTa2lwIF0KIGNzcy1kYXJrLW1v
ZGUvb2xkZXItc3lzdGVtcyBbIFBhc3MgXQorZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmst
bW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgU2tpcCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzQ4
NzgxMDk4PiBIRUlGIGFuZCBIRUlDUyBpbWFnZXMgYXJlIHN1cHBvcnRlZCBvbmx5IG9uIGlPUyAx
MwogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJhdy5odG1sIFsgU2tpcCBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk4ZTA2ZTE1Mjc5MTZhNzQ2
ODk0MGI0N2QwZWQ5NTAyZjc0ZmQ5NjcuLjE0NzIwMWZkMjE2MmIyZDExNmU0Y2I1ZDhmZDBhOTVl
OWRkZWVlMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBA
IC0zMjQyLDYgKzMyNDIsNyBAQCBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LWFsbC1ub24t
ZWRpdGFibGUtdGV4dC11c2luZy1rZXlib2FyZC5odG1sIFsgU2tpcCBdCiAjIERhcmsgTW9kZSBp
cyBpT1MgMTMgYW5kIGxhdGVyLgogY3NzLWRhcmstbW9kZSBbIFBhc3MgXQogY3NzLWRhcmstbW9k
ZS9vbGRlci1zeXN0ZW1zIFsgU2tpcCBdCitlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1t
b2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwgWyBQYXNzIF0KIAogZmFzdC9mb3Jtcy9hdXRvLWZpbGwt
YnV0dG9uL2NhcHMtbG9jay1pbmRpY2F0b3Itc2hvdWxkLWJlLXZpc2libGUtYWZ0ZXItaGlkaW5n
LWF1dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9y
bXMvYXV0by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1ub3QtYmUtdmlz
aWJsZS13aGVuLWF1dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLWlzLXZpc2libGUuaHRt
bCBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA3NjUzYzAzMzFmYjhkYzU1YmIzZGIwYjc0MDg2ZGEwZjY5YWJkYjIzLi5jYmJjNWE1NDllMDll
NWIyYWZkYTI2YjllYzA4Mjc2OTVhMWUzM2IxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc0OSw2ICsxNzQ5LDcgQEAgd2Via2l0Lm9yZy9iLzE4NzM5
MyBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLzJkY29udGV4dC9pbWFnZWJpdG1hcC9j
cmVhdGUKIFsgTW9qYXZlKyBdIGNzcy1kYXJrLW1vZGUgWyBQYXNzIF0KIFsgTW9qYXZlKyBdIGNz
cy1kYXJrLW1vZGUvb2xkZXItc3lzdGVtcyBbIFNraXAgXQogWyBNb2phdmUrIF0gaW5zcGVjdG9y
L2Nzcy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbCBbIFBhc3MgXQorWyBNb2phdmUrIF0gZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgUGFz
cyBdCiAKICMgVGVzdCBEYXJrIE1vZGUgQ1NTIHN1cHBvcnQgZm9yIGxpZ2h0IG1vZGUgb24gb2xk
ZXIgc3lzdGVtcy4KIFsgU2llcnJhIEhpZ2hTaWVycmEgXSBjc3MtZGFyay1tb2RlL29sZGVyLXN5
c3RlbXMgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378009</attachid>
            <date>2019-09-04 13:31:02 -0700</date>
            <delta_ts>2019-09-04 14:27:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201368-20190904133101.patch</filename>
            <type>text/plain</type>
            <size>38202</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQzN2E3ZWJjY2NjZDkz
Y2M2NjRlZTQ5NzBlODQwY2E2MDg1MTA0My4uN2ViMGE0ZmJkZWUwODJhODA0ZjhlMGUzOTQ5Mjlk
ZjliMDAyNTYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA5LTA0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWlsIGFwcGVhcnMg
dG8gYmUgZG91YmxlIGludmVydGluZyBjb2RlIGNvcGllZCBmcm9tIE5vdGVzLCBYY29kZSwgb3Ig
VGVybWluYWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDEzNjgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDA1Mjk4NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgRGFyayBtb2RlIGNvbnRlbnQgdGhhdCBp
cyBwYXN0ZWQgc2hvdWxkIGhhdmUgdGhlIGlubGluZSBzdHlsZXMgaW52ZXJzZSBjb2xvcgorICAg
ICAgICB0cmFuc2Zvcm1lZCBieSB0aGUgY29sb3IgZmlsdGVyIHRvIG1hdGNoIHRoZSBjb2xvciBm
aWx0ZXJlZCBkb2N1bWVudCBjb250ZW50cy4KKworICAgICAgICBMYXlvdXQgVGVzdDogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sCisgICAgICAg
IEFQSSBUZXN0czogUGFzdGVIVE1MLlRyYW5zZm9ybUNvbG9yc09mRGFya0NvbnRlbnQsIFBhc3Rl
SFRNTC5Eb2VzTm90VHJhbnNmb3JtQ29sb3JzT2ZMaWdodENvbnRlbnQsCisgICAgICAgICAgICBQ
YXN0ZVJURkQuVHJhbnNmb3JtQ29sb3JzT2ZEYXJrQ29udGVudCwgUGFzdGVSVEZELkRvZXNOb3RU
cmFuc2Zvcm1Db2xvcnNPZkxpZ2h0Q29udGVudAorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjppbnZlcnNlVHJhbnNm
b3JtQ29sb3JJZk5lZWRlZCk6IEFkZGVkIGNhcmV0LWNvbG9yIHRvIHRoZSB0cmFuc2Zvcm1lZCBw
cm9wZXJ0aWVzLgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZnJhZ21lbnROZWVkc0NvbG9yVHJhbnNmb3JtZWQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnZlcnNlVHJh
bnNmb3JtQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KTogQ2FsbCBmcmFnbWVudE5lZWRzQ29sb3JUcmFuc2Zvcm1lZCgpIGFu
ZCBpbnZlcnNlVHJhbnNmb3JtQ29sb3IoKS4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmg6CisKIDIwMTktMDgtMjkgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlA
YXBwbGUuY29tPgogCiAgICAgICAgIENvcHlpbmcgYW5kIHBhc3RpbmcgdHdvIHBhcmFncmFwaHMg
d2l0aCBhIG5ld2xpbmUgYmV0d2VlbiB0aGVtIHJlc3VsdHMgaW4gc3RyYXkgcGFyYWdyYXBoIHdp
dGggbmV3bGluZSBpbnNpZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAK
aW5kZXggZDZlMTFiNDc5OTQ0MTkzZDU2NjY0NGQ2ZGJkMWM2ODlkNTUzNWZlZC4uM2NmMzU1NjQz
OGQ2ZmJkNzRiZjVkNWRiYTI1MTlmMjVhZGM4MDgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcApAQCAtMTU4MCw4ICsxNTgwLDkgQEAgUmVmPEVkaXRpbmdTdHlsZT4g
RWRpdGluZ1N0eWxlOjppbnZlcnNlVHJhbnNmb3JtQ29sb3JJZk5lZWRlZChFbGVtZW50JiBlbGVt
ZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBib29sIGhhc0NvbG9yID0gbV9tdXRh
YmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlDb2xvcik7CisgICAgYm9v
bCBoYXNDYXJldENvbG9yID0gbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NT
UHJvcGVydHlDYXJldENvbG9yKTsKICAgICBib29sIGhhc0JhY2tncm91bmRDb2xvciA9IG1fbXV0
YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKLSAgICBpZiAoIWhhc0NvbG9yICYmICFoYXNCYWNrZ3JvdW5kQ29sb3IpCisgICAgaWYgKCFo
YXNDb2xvciAmJiAhaGFzQ2FyZXRDb2xvciAmJiAhaGFzQmFja2dyb3VuZENvbG9yKQogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAKICAgICBhdXRvIHN0eWxlV2l0aEludmVydGVkQ29sb3JzID0gY29w
eSgpOwpAQCAtMTU5Nyw2ICsxNTk4LDkgQEAgUmVmPEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0eWxl
OjppbnZlcnNlVHJhbnNmb3JtQ29sb3JJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50KQogICAgIGlm
IChoYXNDb2xvcikKICAgICAgICAgaW52ZXJ0ZWRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKIAor
ICAgIGlmIChoYXNDYXJldENvbG9yKQorICAgICAgICBpbnZlcnRlZENvbG9yKENTU1Byb3BlcnR5
Q2FyZXRDb2xvcik7CisKICAgICBpZiAoaGFzQmFja2dyb3VuZENvbG9yKQogICAgICAgICBpbnZl
cnRlZENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBmMjYwZDZm
MjllZGY5YTFiNTA1NTBkNWJhMDgxM2JkZTk1OTE2ZGJjLi41ZjE4ZmQyNDlkZDU0Y2E2YzMxMThh
YmMyZGUzNWZhNzRjYmFiMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkhU
TUxUaXRsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5vZGVS
ZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5s
aW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQu
aCIKQEAgLTUyMCw2ICs1MjEsODMgQEAgYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hv
dWxkTWVyZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzb3VyY2UsIGNvbnN0IFYKICAgICAgICAg
JiYgIWlzQmxvY2soc291cmNlTm9kZSkgJiYgIWlzQmxvY2soZGVzdGluYXRpb25Ob2RlKTsKIH0K
IAorc3RhdGljIGJvb2wgZnJhZ21lbnROZWVkc0NvbG9yVHJhbnNmb3JtZWQoUmVwbGFjZW1lbnRG
cmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IFBvc2l0aW9uJiBpbnNlcnRpb25Qb3MpCit7CisgICAg
Ly8gRGFyayBtb2RlIGNvbnRlbnQgdGhhdCBpcyBpbnNlcnRlZCBzaG91bGQgaGF2ZSB0aGUgaW5s
aW5lIHN0eWxlcyBpbnZlcnNlIGNvbG9yCisgICAgLy8gdHJhbnNmb3JtZWQgYnkgdGhlIGNvbG9y
IGZpbHRlciB0byBtYXRjaCB0aGUgY29sb3IgZmlsdGVyZWQgZG9jdW1lbnQgY29udGVudHMuCisg
ICAgLy8gVGhpcyBhcHBsaWVzIHRvIE1haWwgYW5kIE5vdGVzIHdoZW4gcGFzdGluZyBmcm9tIFhj
b2RlLiA8cmRhcjovL3Byb2JsZW0vNDA1Mjk4Njc+CisKKyAgICBSZWZQdHI8RWxlbWVudD4gZWRp
dGFibGVSb290ID0gaW5zZXJ0aW9uUG9zLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBBU1NF
UlQoZWRpdGFibGVSb290KTsKKyAgICBpZiAoIWVkaXRhYmxlUm9vdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byogZWRpdGFibGVSb290UmVuZGVyZXIgPSBlZGl0YWJsZVJvb3Qt
PnJlbmRlcmVyKCk7CisgICAgQVNTRVJUKGVkaXRhYmxlUm9vdFJlbmRlcmVyKTsKKyAgICBpZiAo
IWVkaXRhYmxlUm9vdFJlbmRlcmVyIHx8ICFlZGl0YWJsZVJvb3RSZW5kZXJlci0+c3R5bGUoKS5o
YXNBcHBsZUNvbG9yRmlsdGVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0
IGF1dG8mIGNvbG9yRmlsdGVyID0gZWRpdGFibGVSb290UmVuZGVyZXItPnN0eWxlKCkuYXBwbGVD
b2xvckZpbHRlcigpOworICAgIGZvciAoY29uc3QgYXV0byYgY29sb3JGaWx0ZXJPcGVyYXRpb24g
OiBjb2xvckZpbHRlci5vcGVyYXRpb25zKCkpIHsKKyAgICAgICAgaWYgKGNvbG9yRmlsdGVyT3Bl
cmF0aW9uLT50eXBlKCkgIT0gRmlsdGVyT3BlcmF0aW9uOjpBUFBMRV9JTlZFUlRfTElHSFRORVNT
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGF1dG8gcHJvcGVydHlM
aWdodG5lc3MgPSBbJl0oY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBpbmxpbmVTdHlsZSwgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEKSAtPiBPcHRpb25hbDxkb3VibGU+IHsKKyAgICAgICAgYXV0byBj
b2xvciA9IGlubGluZVN0eWxlLnByb3BlcnR5QXNDb2xvcihwcm9wZXJ0eUlEKTsKKyAgICAgICAg
aWYgKCFjb2xvciB8fCAhY29sb3IudmFsdWUoKS5pc1Zpc2libGUoKSB8fCBjb2xvci52YWx1ZSgp
LmlzU2VtYW50aWMoKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgZG91Ymxl
IGh1ZSwgc2F0dXJhdGlvbiwgbGlnaHRuZXNzOworICAgICAgICBjb2xvci52YWx1ZSgpLmdldEhT
TChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7CisgICAgICAgIHJldHVybiBsaWdodG5lc3M7
CisgICAgfTsKKworICAgIGNvbnN0IGRvdWJsZSBsaWdodG5lc3NEYXJrRW5vdWdoRm9yVGV4dCA9
IDAuNDsKKyAgICBjb25zdCBkb3VibGUgbGlnaHRuZXNzTGlnaHRFbm91Z2hGb3JCYWNrZ3JvdW5k
ID0gMC42OworCisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IGZyYWdtZW50LmZpcnN0Q2hp
bGQoKTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7CisgICAgICAg
IGlmICghaXM8U3R5bGVkRWxlbWVudD4oKm5vZGUpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpub2RlKTsK
KyAgICAgICAgYXV0byogaW5saW5lU3R5bGUgPSBlbGVtZW50LmlubGluZVN0eWxlKCk7CisgICAg
ICAgIGlmICghaW5saW5lU3R5bGUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBh
dXRvIHRleHRMaWdodG5lc3MgPSBwcm9wZXJ0eUxpZ2h0bmVzcygqaW5saW5lU3R5bGUsIENTU1By
b3BlcnR5Q29sb3IpOworICAgICAgICBpZiAodGV4dExpZ2h0bmVzcyAmJiAqdGV4dExpZ2h0bmVz
cyA8IGxpZ2h0bmVzc0RhcmtFbm91Z2hGb3JUZXh0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGF1dG8gYmFja2dyb3VuZExpZ2h0bmVzcyA9IHByb3BlcnR5TGlnaHRuZXNz
KCppbmxpbmVTdHlsZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBpZiAo
YmFja2dyb3VuZExpZ2h0bmVzcyAmJiAqYmFja2dyb3VuZExpZ2h0bmVzcyA+IGxpZ2h0bmVzc0xp
Z2h0RW5vdWdoRm9yQmFja2dyb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
aW52ZXJzZVRyYW5zZm9ybUNvbG9yKEluc2VydGVkTm9kZXMmIGluc2VydGVkTm9kZXMpCit7Cisg
ICAgUmVmUHRyPE5vZGU+IHBhc3RFbmROb2RlID0gaW5zZXJ0ZWROb2Rlcy5wYXN0TGFzdExlYWYo
KTsKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0gaW5zZXJ0ZWROb2Rlcy5maXJzdE5vZGVJ
bnNlcnRlZCgpOyBub2RlICYmIG5vZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KCpub2RlKSkgeworICAgICAgICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KCpub2Rl
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3du
Y2FzdDxTdHlsZWRFbGVtZW50Pigqbm9kZSk7CisgICAgICAgIGF1dG8qIGlubGluZVN0eWxlID0g
ZWxlbWVudC5pbmxpbmVTdHlsZSgpOworICAgICAgICBpZiAoIWlubGluZVN0eWxlKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBlZGl0aW5nU3R5bGUgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZShpbmxpbmVTdHlsZSk7CisgICAgICAgIGF1dG8gdHJhbnNmb3JtZWRTdHlsZSA9
IGVkaXRpbmdTdHlsZS0+aW52ZXJzZVRyYW5zZm9ybUNvbG9ySWZOZWVkZWQoZWxlbWVudCk7Cisg
ICAgICAgIGlmIChlZGl0aW5nU3R5bGUucHRyKCkgPT0gdHJhbnNmb3JtZWRTdHlsZS5wdHIoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUoZWxlbWVu
dCwgc3R5bGVBdHRyLCB0cmFuc2Zvcm1lZFN0eWxlLT5zdHlsZSgpLT5hc1RleHQoKSk7CisgICAg
fQorfQorCiAvLyBTdHlsZSBydWxlcyB0aGF0IG1hdGNoIGp1c3QgaW5zZXJ0ZWQgZWxlbWVudHMg
Y291bGQgY2hhbmdlIHRoZWlyIGFwcGVhcmFuY2UsIGxpa2UKIC8vIGEgZGl2IGluc2VydGVkIGlu
dG8gYSBkb2N1bWVudCB3aXRoIGRpdiB7IGRpc3BsYXk6aW5saW5lOyB9Lgogdm9pZCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3Bhbklu
bGluZShJbnNlcnRlZE5vZGVzJiBpbnNlcnRlZE5vZGVzKQpAQCAtMTExNSw4ICsxMTkzLDggQEAg
dm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaW5zZXJ0aW9uUG9z
ID0gcG9zaXRpb25PdXRzaWRlVGFiU3BhbihpbnNlcnRpb25Qb3MpOwogCiAgICAgYm9vbCBoYXNC
bGFua0xpbmVzQmV0d2VlblBhcmFncmFwaHMgPSBoYXNCbGFua0xpbmVCZXR3ZWVuUGFyYWdyYXBo
cyhpbnNlcnRpb25Qb3MpOwotICAgIAogICAgIGJvb2wgaGFuZGxlZFN0eWxlU3BhbnMgPSBoYW5k
bGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKGZyYWdtZW50LCBpbnNlcnRpb25Qb3MpOworICAg
IGJvb2wgbmVlZHNDb2xvclRyYW5zZm9ybWVkID0gZnJhZ21lbnROZWVkc0NvbG9yVHJhbnNmb3Jt
ZWQoZnJhZ21lbnQsIGluc2VydGlvblBvcyk7CiAKICAgICAvLyBXZSdyZSBmaW5pc2hlZCBpZiB0
aGVyZSBpcyBub3RoaW5nIHRvIGFkZC4KICAgICBpZiAoZnJhZ21lbnQuaXNFbXB0eSgpIHx8ICFm
cmFnbWVudC5maXJzdENoaWxkKCkpCkBAIC0xMjI3LDExICsxMzA1LDE0IEBAIHZvaWQgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgcmVtb3ZlTm9kZSgqbm9k
ZVRvUmVtb3ZlKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIG1ha2VJbnNlcnRlZENv
bnRlbnRSb3VuZFRyaXBwYWJsZVdpdGhIVE1MVHJlZUJ1aWxkZXIoaW5zZXJ0ZWROb2Rlcyk7CiAg
ICAgaWYgKGluc2VydGVkTm9kZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBp
ZiAobmVlZHNDb2xvclRyYW5zZm9ybWVkKQorICAgICAgICBpbnZlcnNlVHJhbnNmb3JtQ29sb3Io
aW5zZXJ0ZWROb2Rlcyk7CisKICAgICByZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVT
cGFuSW5saW5lKGluc2VydGVkTm9kZXMpOwogICAgIGlmIChpbnNlcnRlZE5vZGVzLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5oCmluZGV4IDBiMmViOTlhMWVmZWM3Mjg0NjFjZDA0ZmM3YWY5YWUy
YzI1NTlkN2IuLjI5Y2VjNDNhYjBiYzEzMjI4ZWQzNzk3NmMwZDYzZGYyNWE3YTExOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKQEAg
LTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVVucmVuZGVyZWRUZXh0Tm9k
ZXNBdEVuZHMoSW5zZXJ0ZWROb2RlcyYpOwogICAgIAogICAgIHZvaWQgcmVtb3ZlUmVkdW5kYW50
U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnRlZE5vZGVzJik7CisgICAgdm9pZCBp
bnZlcnNlVHJhbnNmb3JtQ29sb3IoSW5zZXJ0ZWROb2RlcyYpOwogICAgIHZvaWQgbWFrZUluc2Vy
dGVkQ29udGVudFJvdW5kVHJpcHBhYmxlV2l0aEhUTUxUcmVlQnVpbGRlcihJbnNlcnRlZE5vZGVz
Jik7CiAgICAgdm9pZCBtb3ZlTm9kZU91dE9mQW5jZXN0b3IoTm9kZSYsIE5vZGUmIGFuY2VzdG9y
LCBJbnNlcnRlZE5vZGVzJik7CiAgICAgdm9pZCBoYW5kbGVTdHlsZVNwYW5zKEluc2VydGVkTm9k
ZXMmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBmOTUyNjYwMDdiMWVjOTIyMDM4NjE0YWFlNDQzMjcxODUzYjcxZDMwLi5kYjA0ZGUwMTIxNGFk
OGM0ZTcxNWRhZTIxM2QxOTAyODYxYjRiNTY0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDktMDQgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIE1haWwgYXBwZWFycyB0
byBiZSBkb3VibGUgaW52ZXJ0aW5nIGNvZGUgY29waWVkIGZyb20gTm90ZXMsIFhjb2RlLCBvciBU
ZXJtaW5hbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMTM2OAorICAgICAgICByZGFyOi8vcHJvYmxlbS80MDUyOTg2NworCisgICAgICAgIFJldmll
d2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBZGRlZCBUZXN0czogUGFzdGVIVE1MLlRy
YW5zZm9ybUNvbG9yc09mRGFya0NvbnRlbnQsIFBhc3RlSFRNTC5Eb2VzTm90VHJhbnNmb3JtQ29s
b3JzT2ZMaWdodENvbnRlbnQsCisgICAgICAgICAgICBQYXN0ZVJURkQuVHJhbnNmb3JtQ29sb3Jz
T2ZEYXJrQ29udGVudCwgUGFzdGVSVEZELkRvZXNOb3RUcmFuc2Zvcm1Db2xvcnNPZkxpZ2h0Q29u
dGVudAorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9QYXN0ZUhUTUwubW06CisgICAgICAgIChjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9h
cmREYXRhU2V0dGluZyk6IEFkZGVkIGFyZ3VtZW50IHRvIGVuYWJsZSBjb2xvciBmaWx0ZXIuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQubW06Cisg
ICAgICAgIChjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCk6IEFk
ZGVkIGFyZ3VtZW50IHRvIGVuYWJsZSBjb2xvciBmaWx0ZXIuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9yaWNoLWNvbG9yLWZpbHRlcmVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFdL
V2ViVmlldyBmb3JjZURhcmtNb2RlXSk6CisKIDIwMTktMDktMDMgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIE1pbmlCcm93c2VyIHNob3VsZCBo
YW5kbGUgdGhlIFdlYktpdFdlYlZpZXc6OmNyZWF0ZSBzaWduYWwKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggODJhNWZmYmJjNTE2YzhjODc0MDdjY2M5ZTJkODlmOTFiZmFlYzRiNi4uNzgwZjAy
OWEwZTQ4ZjVhMzU3NGU3Y2UzNTU2MDIwZDc5OTZjZGZlMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwNiw2ICsxMDYsNyBAQAogCQkxQzdGRUIyMDIwN0MwRjJFMDBEMjMyNzggLyogQmFj
a2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUM3RkVCMUYyMDdDMEYyRDAwRDIzMjc4IC8qIEJhY2tncm91bmRDb2xvci5tbSAqLzsg
fTsKIAkJMUM5RUI4NDExRTM4MERBMTAwNUM2NDQyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzlFQjg0
MDFFMzgwREExMDA1QzY0NDIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJ
MUNBQ0FEQTEyMzA2MjBBRTAwMDdENTRDIC8qIFdLV2ViVmlld09wYXF1ZS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUNBREEwMjMwNjIwQUQwMDA3
RDU0QyAvKiBXS1dlYlZpZXdPcGFxdWUubW0gKi87IH07CisJCTFDRTZGQUMzMjMyMDI2N0MwMEU0
OEY2RSAvKiByaWNoLWNvbG9yLWZpbHRlcmVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFNkZBQzEyMzIwMjY0RjAwRTQ4RjZFIC8q
IHJpY2gtY29sb3ItZmlsdGVyZWQuaHRtbCAqLzsgfTsKIAkJMUNGNTlBRTIyMUU2ODkyNTAwNkUz
N0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGNTlBRTAyMUU2ODkyNTAwNkUz
N0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tICovOyB9OwogCQkx
Q0Y1OUFFMzIxRTY4OTMyMDA2RTM3RUMgLyogRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRsZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjU5QURG
MjFFNjg5MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlLm1tICovOyB9
OwogCQkxQ0Y1OUFFNTIxRTY5NzdEMDA2RTM3RUMgLyogZGFyay1tb2RlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNGNTlBRTQyMUU2
OTZGQjAwNkUzN0VDIC8qIGRhcmstbW9kZS5odG1sICovOyB9OwpAQCAtMTM3Miw2ICsxMzczLDcg
QEAKIAkJCQlGNkZERERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCUExMkREQzAwMUU4MzczRTcwMENGNkNBRSAvKiByZW5kZXJl
ZC1pbWFnZS1leGNsdWRpbmctb3ZlcmZsb3cuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlGNDY4NDlDMDFFRUY1RUYzMDBCOTM3RkUgLyogcmljaC1hbmQtcGxhaW4tdGV4dC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAorCQkJCTFDRTZGQUMzMjMyMDI2N0MwMEU0OEY2RSAvKiByaWNo
LWNvbG9yLWZpbHRlcmVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMkU5MkI4Rjcy
MTY0OTBENDAwNUI2NEYwIC8qIHJpY2gtdGV4dC1hdHRyaWJ1dGVzLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJMEY1NjUxRjkxRkNFNTEzNTAwMzEwRkJDIC8qIHNjcm9sbC10by1hbmNo
b3IuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNEUwQTI5NjIxMUZDNUZCMDBBRjdD
N0YgLyogc2VsZWN0ZWQtdGV4dC1hbmQtdGV4dGFyZWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKQEAgLTE1MjQsNiArMTUyNiw3IEBACiAJCTFDOUVCODQwMUUzODBEQTEwMDVDNjQ0MiAvKiBD
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNBQ0FEQTAyMzA2MjBBRDAwMDdENTRDIC8qIFdLV2ViVmlld09wYXF1ZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld09wYXF1ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCOUJDMzcxQTY3NDgyMzAwRkU1Njc4IC8q
IFdlYWtQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1B0
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRTZGQUMxMjMyMDI2NEYwMEU0
OEY2RSAvKiByaWNoLWNvbG9yLWZpbHRlcmVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAicmljaC1jb2xvci1maWx0ZXJlZC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNGMEQzNzgxQkJGMkYzRDAwQjRFRjU0IC8qIFdLUmV0YWluUHRyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUmV0YWluUHRyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGNTlBREYyMUU2ODkyNTAwNkUzN0VDIC8qIEZvcmNlTGln
aHRBcHBlYXJhbmNlSW5CdW5kbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQ0Y1OUFFMDIxRTY4OTI1MDA2RTM3RUMgLyogRm9yY2VMaWdodEFwcGVh
cmFuY2VJbkJ1bmRsZV9CdW5kbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlX0J1bmRsZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMDMsNiArMzMwNiw3IEBACiAJCQkJRjQxQUI5OUExRUY0
NjkyQzAwODNGQTA4IC8qIHByZXZlbnQtc3RhcnQuaHRtbCAqLywKIAkJCQlBMTJEREJGRjFFODM3
M0MxMDBDRjZDQUUgLyogcmVuZGVyZWQtaW1hZ2UtZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwgKi8s
CiAJCQkJRjQ2ODQ5QkYxRUVGNUVEQzAwQjkzN0ZFIC8qIHJpY2gtYW5kLXBsYWluLXRleHQuaHRt
bCAqLywKKwkJCQkxQ0U2RkFDMTIzMjAyNjRGMDBFNDhGNkUgLyogcmljaC1jb2xvci1maWx0ZXJl
ZC5odG1sICovLAogCQkJCTJFOTJCOEY2MjE2NDkwQzMwMDVCNjRGMCAvKiByaWNoLXRleHQtYXR0
cmlidXRlcy5odG1sICovLAogCQkJCUY0RTBBMjk1MjExRkM1QTMwMEFGN0M3RiAvKiBzZWxlY3Rl
ZC10ZXh0LWFuZC10ZXh0YXJlYS5odG1sICovLAogCQkJCUY0RDY1REE3MUY1RTQ2QzAwMDlEOEMy
NyAvKiBzZWxlY3RlZC10ZXh0LWltYWdlLWxpbmstYW5kLWVkaXRhYmxlLmh0bWwgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1tCmlu
ZGV4IDY0MGMxYzAzYTg4MWQ5MTg2MWEyMDdmN2I5NDU3NTUzM2U1NTE0ZTEuLmIwMTljN2VjZWNj
NzQ3MzU5ZjQ4ZjQxMzU3ZGNmMzZhMzY2MzZlNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1tCkBAIC01Nyw5ICs1NywxMiBAQCB2
b2lkIHdyaXRlSFRNTFRvUGFzdGVib2FyZChOU1N0cmluZyAqaHRtbCkKIH0KICNlbmRpZgogCi1z
dGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFz
dGVib2FyZERhdGFTZXR0aW5nKGJvb2wgZW5hYmxlZCkKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdL
V2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcoYm9v
bCBlbmFibGVkLCBib29sIGNvbG9yRmlsdGVyRW5hYmxlZCA9IGZhbHNlKQogewotICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W3dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRDb2xvckZpbHRlckVuYWJsZWQ6Y29sb3JGaWx0ZXJF
bmFibGVkXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApIGNvbmZpZ3VyYXRp
b246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvIHByZWZlcmVuY2VzID0g
KF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZl
cmVuY2VzXTsKICAgICBXS1ByZWZlcmVuY2VzU2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKHBy
ZWZlcmVuY2VzLCB0cnVlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVib2FyZERh
dGFFbmFibGVkKHByZWZlcmVuY2VzLCBlbmFibGVkKTsKQEAgLTM1Nyw0ICszNjAsMzkgQEAgVEVT
VChQYXN0ZUhUTUwsIFN0cmlwc1N5c3RlbUZvbnROYW1lcykKICAgICAgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9k
eSkuZm9udEZhbWlseSJdKTsKIH0KIAorI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKSAmJiBIQVZF
KE9TX0RBUktfTU9ERV9TVVBQT1JUKQorCitURVNUKFBhc3RlSFRNTCwgVHJhbnNmb3JtQ29sb3Jz
T2ZEYXJrQ29udGVudCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1
c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyh0cnVlLCB0cnVlKTsKKyAgICBbd2ViVmlldyBmb3Jj
ZURhcmtNb2RlXTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1l
ZDpAInJpY2gtY29sb3ItZmlsdGVyZWQiXTsKKworICAgIHdyaXRlSFRNTFRvUGFzdGVib2FyZChA
IjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigyMzgsIDIzOCwgMjM4KTsgYmFja2dyb3VuZC1jb2xv
cjogcmdiKDUxLCA1MSwgNTEpXCI+SGVsbG88L3NwYW4+Iik7CisKKyAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic2VsZWN0UmljaFRleHQoKSJdOworICAgIFt3ZWJW
aWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAInJpY2gucXVlcnlTZWxlY3Rvcignc3BhbicpLnN0eWxlLmNv
bG9yIl0sIEAicmdiKDIxLCAyMSwgMjEpIik7CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJyaWNoLnF1ZXJ5U2VsZWN0b3IoJ3NwYW4n
KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IiXSwgQCJyZ2IoMjU1LCAyNTUsIDI1NSkiKTsKK30KKwor
VEVTVChQYXN0ZUhUTUwsIERvZXNOb3RUcmFuc2Zvcm1Db2xvcnNPZkxpZ2h0Q29udGVudCkKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRh
U2V0dGluZyh0cnVlLCB0cnVlKTsKKyAgICBbd2ViVmlldyBmb3JjZURhcmtNb2RlXTsKKworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInJpY2gtY29sb3ItZmls
dGVyZWQiXTsKKworICAgIHdyaXRlSFRNTFRvUGFzdGVib2FyZChAIjxzcGFuIHN0eWxlPVwiY29s
b3I6IHJnYigxMDEsIDEwMSwgMTAxKVwiPkhlbGxvPC9zcGFuPiIpOworCisgICAgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNlbGVjdFJpY2hUZXh0KCkiXTsKKyAgICBb
d2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJyaWNoLnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKS5zdHls
ZS5jb2xvciJdLCBAInJnYigxMDEsIDEwMSwgMTAxKSIpOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KERBUktfTU9ERV9DU1MpICYmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCisKICNlbmRpZiAv
LyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QYXN0ZVJURkQubW0KaW5kZXggNmYyM2ZiZTI3Zjc4YTk0YzE3OTYwNDExYTBjMjU0
MTJkYTQ3MmRmZC4uN2VlM2IxODRmNTc1ZjQxMTMyYzQ2YWRlNGJlOGU0NDc2Yjg4MTQxNiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZVJURkQu
bW0KQEAgLTM5LDYgKzM5LDEyIEBACiAjaW5jbHVkZSA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmls
ZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoQVBQS0lUKQordXNpbmcgUGxhdGZv
cm1Db2xvciA9IE5TQ29sb3I7CisjZWxzZQordXNpbmcgUGxhdGZvcm1Db2xvciA9IFVJQ29sb3I7
CisjZW5kaWYKKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkKIC0gKHZvaWQpcGFzdGU6KGlkKXNl
bmRlcjsKIEBlbmQKQEAgLTc2LDkgKzgyLDEyIEBAIHZvaWQgd3JpdGVSVEZEVG9QYXN0ZWJvYXJk
KE5TRGF0YSAqZGF0YSkKIH0KICNlbmRpZgogCi1zdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZp
ZXc+IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkKK3N0YXRp
YyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJv
YXJkRGF0YUVuYWJsZWQoYm9vbCBjb2xvckZpbHRlckVuYWJsZWQgPSBmYWxzZSkKIHsKLSAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0Q29sb3JGaWx0ZXJFbmFibGVkOmNvbG9yRmls
dGVyRW5hYmxlZF07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKSBjb25maWd1
cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBwcmVmZXJlbmNl
cyA9IChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBw
cmVmZXJlbmNlc107CiAgICAgV0tQcmVmZXJlbmNlc1NldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxl
ZChwcmVmZXJlbmNlcywgdHJ1ZSk7CiAgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9h
cmREYXRhRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CkBAIC0xNzYsNyArMTg1LDY4IEBAIFRF
U1QoUGFzdGVSVEZELCBJbWFnZUVsZW1lbnRVc2VzQmxvYlVSTEluSFRNTCkKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoImJsb2I6IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
Im5ldyBVUkwoaW1hZ2VFbGVtZW50LnNyYykucHJvdG9jb2wiXSk7CiB9CiAKLSNlbmRpZiAvLyBQ
TEFURk9STShNQUMpCisjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpICYmIEhBVkUoT1NfREFSS19N
T0RFX1NVUFBPUlQpCisKK1RFU1QoUGFzdGVSVEZELCBUcmFuc2Zvcm1Db2xvcnNPZkRhcmtDb250
ZW50KQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVi
b2FyZERhdGFFbmFibGVkKHRydWUpOworICAgIFt3ZWJWaWV3IGZvcmNlRGFya01vZGVdOworCisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicmljaC1jb2xvci1m
aWx0ZXJlZCJdOworCisgICAgUGxhdGZvcm1Db2xvciAqdGV4dENvbG9yID0gW1BsYXRmb3JtQ29s
b3IgbGlnaHRHcmF5Q29sb3JdOworICAgIFBsYXRmb3JtQ29sb3IgKmJhY2tncm91bmRDb2xvciA9
IFtQbGF0Zm9ybUNvbG9yIGRhcmtHcmF5Q29sb3JdOworCisgICAgYXV0byBoZWxsbyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiSGVsbG8iIGF0
dHJpYnV0ZXM6QHsgTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIDogYmFja2dyb3VuZENv
bG9yLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgOiB0ZXh0Q29sb3IgfV0pOworICAg
IGF1dG8gd29ybGQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzpAIiBXb3JsZCIgYXR0cmlidXRlczpAeyBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0
ZU5hbWUgOiB0ZXh0Q29sb3IgfV0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKKyAgICBbc3RyaW5nIGFwcGVuZEF0
dHJpYnV0ZWRTdHJpbmc6aGVsbG8uZ2V0KCldOworICAgIFtzdHJpbmcgYXBwZW5kQXR0cmlidXRl
ZFN0cmluZzp3b3JsZC5nZXQoKV07CisKKyAgICB3cml0ZVJURlRvUGFzdGVib2FyZChbc3RyaW5n
IFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRvY3VtZW50QXR0
cmlidXRlczpAeyB9XSk7CiAKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAic2VsZWN0UmljaFRleHQoKSJdOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyNp
ZiBVU0UoQVBQS0lUKQorICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVyeVNlbGVjdG9yKCdwJykuc3R5bGUuY29sb3IiXSwg
QCJyZ2IoMTI2LCAxMjYsIDEyNikiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJpY2gucXVlcnlTZWxlY3RvcigncCA+IHNwYW4n
KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IiXSwgQCJyZ2IoMjM1LCAyMzUsIDIzNSkiKTsKKyNlbHNl
CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJyaWNoLnF1ZXJ5U2VsZWN0b3IoJ3AnKS5zdHlsZS5jb2xvciJdLCBAInJnYigxMDYsIDEw
NiwgMTA2KSIpOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAicmljaC5xdWVyeVNlbGVjdG9yKCdwID4gc3BhbicpLnN0eWxlLmJhY2tn
cm91bmRDb2xvciJdLCBAInJnYigyMTMsIDIxMywgMjEzKSIpOworI2VuZGlmCit9CisKK1RFU1Qo
UGFzdGVSVEZELCBEb2VzTm90VHJhbnNmb3JtQ29sb3JzT2ZMaWdodENvbnRlbnQpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJs
ZWQodHJ1ZSk7CisgICAgW3dlYlZpZXcgZm9yY2VEYXJrTW9kZV07CisKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJyaWNoLWNvbG9yLWZpbHRlcmVkIl07CisK
KyAgICBQbGF0Zm9ybUNvbG9yICp0ZXh0Q29sb3IgPSBbUGxhdGZvcm1Db2xvciBkYXJrR3JheUNv
bG9yXTsKKyAgICBQbGF0Zm9ybUNvbG9yICpiYWNrZ3JvdW5kQ29sb3IgPSBbUGxhdGZvcm1Db2xv
ciBsaWdodEdyYXlDb2xvcl07CisKKyAgICBhdXRvIGhlbGxvID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJIZWxsbyIgYXR0cmlidXRlczpAeyBO
U0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgOiBiYWNrZ3JvdW5kQ29sb3IsIE5TRm9yZWdy
b3VuZENvbG9yQXR0cmlidXRlTmFtZSA6IHRleHRDb2xvciB9XSk7CisgICAgYXV0byB3b3JsZCA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIFdv
cmxkIiBhdHRyaWJ1dGVzOkB7IE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSA6IHRleHRD
b2xvciB9XSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdF0pOworICAgIFtzdHJpbmcgYXBwZW5kQXR0cmlidXRlZFN0cmlu
ZzpoZWxsby5nZXQoKV07CisgICAgW3N0cmluZyBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOndvcmxk
LmdldCgpXTsKKworICAgIHdyaXRlUlRGVG9QYXN0ZWJvYXJkKFtzdHJpbmcgUlRGRnJvbVJhbmdl
Ok5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1d
KTsKKworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZWxlY3RS
aWNoVGV4dCgpIl07CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworI2lmIFVTRShBUFBLSVQp
CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJyaWNoLnF1ZXJ5U2VsZWN0b3IoJ3AnKS5zdHlsZS5jb2xvciJdLCBAInJnYig2NywgNjcs
IDY3KSIpOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAicmljaC5xdWVyeVNlbGVjdG9yKCdwID4gc3BhbicpLnN0eWxlLmJhY2tncm91
bmRDb2xvciJdLCBAInJnYigxNTQsIDE1NCwgMTU0KSIpOworI2Vsc2UKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJpY2gucXVlcnlT
ZWxlY3RvcigncCcpLnN0eWxlLmNvbG9yIl0sIEAicmdiKDg1LCA4NSwgODUpIik7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJyaWNo
LnF1ZXJ5U2VsZWN0b3IoJ3AgPiBzcGFuJykuc3R5bGUuYmFja2dyb3VuZENvbG9yIl0sIEAicmdi
KDE3MCwgMTcwLCAxNzApIik7CisjZW5kaWYKK30KIAorI2VuZGlmIC8vIEVOQUJMRShEQVJLX01P
REVfQ1NTKSAmJiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQogCisjZW5kaWYgLy8gUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL3JpY2gtY29sb3ItZmlsdGVyZWQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvcmljaC1jb2xvci1maWx0ZXJlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyODZlZDA4
MGJhMDM1M2VjNGU5Y2M0YzExZGYxZjFjMWU3MzNiZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3JpY2gtY29sb3ItZmlsdGVyZWQuaHRt
bApAQCAtMCwwICsxLDI3IEBACis8aGVhZD4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoIj4KKyAgICA8c3R5bGU+CisgICAgOnJvb3QgeworICAg
ICAgICBjb2xvci1zY2hlbWU6IGRhcms7CisgICAgICAgIC1hcHBsZS1jb2xvci1maWx0ZXI6IGFw
cGxlLWludmVydC1saWdodG5lc3MoKTsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKwor
PGJvZHk+CisgICAgPGRpdiBpZD0icmljaCIgY29udGVudGVkaXRhYmxlPkhlbGxvIHdvcmxkPC9k
aXY+CisgICAgPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBkZXNlbGVjdFRleHQoKQorICAgIHsKKyAg
ICAgICAgYmx1cigpOworICAgICAgICBnZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBzZWxlY3RSaWNoVGV4dCgpCisgICAgeworICAgICAgICBk
ZXNlbGVjdFRleHQoKTsKKyAgICAgICAgbGV0IHRleHQgPSByaWNoLmNoaWxkTm9kZXNbMF07Cisg
ICAgICAgIGdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGV4dCwgMCwgdGV4dCwgdGV4
dC5kYXRhLmxlbmd0aCk7CisgICAgfQorICAgIDwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBkNzQ1ZDdlYTg2M2E3ZTlhNTFh
NzJhYTkyOGQxM2I2OTIzZDEyNmNjLi4yNGE1YWNkZWZmZmZhODVkMzBjZmM0ZjdjZWYxMGZkMTJj
NWZlZjg0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAt
NzUsNiArNzUsNyBAQAogLSAodm9pZCl3YWl0Rm9yTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdl
OwogLSAodm9pZClwZXJmb3JtQWZ0ZXJMb2FkaW5nOihkaXNwYXRjaF9ibG9ja190KWFjdGlvbnM7
CiAtICh2b2lkKXdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlOworLSAodm9pZClmb3JjZURh
cmtNb2RlOwogLSAoTlNTdHJpbmcgKilzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDooTlNT
dHJpbmcgKilwcm9wZXJ0eU5hbWU7CiAtIChOU1N0cmluZyAqKXN0eWxlUHJvcGVydHlBdFNlbGVj
dGlvbkVuZDooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWU7CiAtICh2b2lkKWNvbGxhcHNlVG9TdGFy
dDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCBiNDJk
MzUyYjg1NWZiOGJhZDg3NmE0YjE5MjEzMmJmNmNhMmIzNjViLi42NTFiNWYyOWQxNjA4NTlmNThl
OGY2N2U5YWQ1NWU5NWJlNmI1MjY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3Lm1tCkBAIC00MzQsNiArNDM0LDE3IEBAIC0gKHZvaWQpd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGUKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQog
CistICh2b2lkKWZvcmNlRGFya01vZGUKK3sKKyNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JU
KQorI2lmIFVTRShBUFBLSVQpCisgICAgW3NlbGYgc2V0QXBwZWFyYW5jZTpbTlNBcHBlYXJhbmNl
IGFwcGVhcmFuY2VOYW1lZDpOU0FwcGVhcmFuY2VOYW1lRGFya0FxdWFdXTsKKyNlbHNlCisgICAg
W3NlbGYgc2V0T3ZlcnJpZGVVc2VySW50ZXJmYWNlU3R5bGU6VUlVc2VySW50ZXJmYWNlU3R5bGVE
YXJrXTsKKyNlbmRpZgorI2VuZGlmCit9CisKIC0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0eUF0
U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCiB7CiAgICAgTlNTdHJpbmcg
KnNjcmlwdCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZ2V0Q29tcHV0ZWRTdHlsZShn
ZXRTZWxlY3Rpb24oKS5nZXRSYW5nZUF0KDApLnN0YXJ0Q29udGFpbmVyLnBhcmVudEVsZW1lbnQp
WyclQCddIiwgcHJvcGVydHlOYW1lXTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5Y2ExYWIwZmMwNmRkNjZlYWU0OGY5OGE3
MzFlYThmZGNmZmVhZTM2Li5iMTc2NjQ3NTUzMTkwODg2YjNlODAwYjRiZmY1YWYxZmI2YjlhM2E4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDktMDQgIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIE1haWwgYXBwZWFycyB0byBiZSBkb3VibGUgaW52
ZXJ0aW5nIGNvZGUgY29waWVkIGZyb20gTm90ZXMsIFhjb2RlLCBvciBUZXJtaW5hbC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTM2OAorICAgICAg
ICByZGFyOi8vcHJvYmxlbS80MDUyOTg2NworCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3It
ZmlsdGVyZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLTEyL1Rlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTktMDgtMjkgIFRpbW90
aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIENvcHlpbmcgYW5kIHBh
c3RpbmcgdHdvIHBhcmFncmFwaHMgd2l0aCBhIG5ld2xpbmUgYmV0d2VlbiB0aGVtIHJlc3VsdHMg
aW4gc3RyYXkgcGFyYWdyYXBoIHdpdGggbmV3bGluZSBpbnNpZGUuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA5NTlhNzRlZmJjYTIwNWRjMDA5MDg4YzY3N2YxZmM3ZDFhMmQ5MzM3Li45ZjE0MzRjMGIw
MTNmYmYzY2Q2NjM3ZDM4Nzk1MzU2OTU4NjI0MDY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg3
LDEwICs4NywxMSBAQCBmYXN0L2Zvcm1zL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy1oaWRkZW4tY3Jh
c2guaHRtbCBbIFNraXAgXQogIyBUaGVzZSB0ZXN0cyBkb24ndCBoYXZlIHRvIGJlIHBsYXRmb3Jt
LXNwZWNpZmljLCBidXQgdGhleSBhcmUgb25seSBpbXBsZW1lbnRlZCBvbiBNYWMgbm93LgogZmFz
dC9pbWFnZXMvZXBzLWFzLWltYWdlLmh0bWwgWyBTa2lwIF0KIAotIyBPbmx5IGFwcGxpY2FibGUg
b24gbWFjT1MKKyMgT25seSBhcHBsaWNhYmxlIG9uIHBsYXRmb3JtcyB3aXRoIGRhcmsgbW9kZSBz
dXBwb3J0CiBjc3MtZGFyay1tb2RlIFsgU2tpcCBdCiBmYXN0L2Nzcy9hcHBsZS1zeXN0ZW0tY29u
dHJvbC1jb2xvcnMuaHRtbCBbIFNraXAgXQogaW5zcGVjdG9yL2Nzcy9mb3JjZS1wYWdlLWFwcGVh
cmFuY2UuaHRtbCBbIFNraXAgXQorZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1j
b2xvci1maWx0ZXJlZC5odG1sIFsgU2tpcCBdCiAKICMgT25seSBNYWMgc3VwcG9ydHMgZm9yY2Ug
dGVzdHMuCiBmYXN0L2V2ZW50cy9jYW5jZWxsZWQtZm9yY2UtY2xpY2stbGluay1uYXZpZ2F0aW9u
Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZjNzNhZTA3NDI4NjY4ZjU4NDg2ZDM2Zjg2YWY3ZWY5MGFm
ZThlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcg
QEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBwYXN0aW5nIGludG8gYSBjb2xvciBmaWx0ZXJlZCBk
YXJrIG1vZGUgZG9jdW1lbnQgaW5zZXJ0cyBsaWdodCBtb2RlIHRyYW5zZm9ybWVkIGNvbnRlbnQu
CisKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigw
LCAwLCAwKTsgY29sb3I6IHJnYigwLCAwLCAwKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwg
MjU1LCAyNTUpOyI+SGVsbG88L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0
eWxlPSJjYXJldC1jb2xvcjogcmdiKDIxLCAyMSwgMjEpOyBjb2xvcjogcmdiKDIxLCAyMSwgMjEp
OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bhbj4nCitQ
QVNTIHBhc3RlZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMjEsIDIx
LCAyMSk7IGNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMTMs
IDIxMywgMjEzKTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBz
dHlsZT0iY29sb3I6IHJnYigxMDYsIDEwNiwgMTA2KTsiPkhlbGxvPC9zcGFuPjxzcGFuIHN0eWxl
PSJjb2xvcjogcmdiKDEyNywgMTI4LCAxMjcpOyI+SGVsbG8gMjwvc3Bhbj4nCitQQVNTIHBhc3Rl
ZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMTI3LCAxMjgsIDEyNyk7
IGNvbG9yOiByZ2IoMTI3LCAxMjgsIDEyNyk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIHBhc3RlZE1h
cmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMTcwLCAxNzAsIDE3MCk7IGNv
bG9yOiByZ2IoMTcwLCAxNzAsIDE3MCk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIHBhc3RlZE1hcmt1
cCBpcyAnPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7IGNvbG9y
OiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIHBhc3RlZE1hcmt1cCBp
cyAnPGxpPkl0ZW0gMTwvbGk+PGxpPjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bhbj48L2xpPjxs
aT5JdGVtIDI8L2xpPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8bGk+SXRlbSAxPC9saT48bGkg
c3R5bGU9ImNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMTMs
IDIxMywgMjEzKTsiPkhlbGxvIDE8L2xpPjxsaT5IZWxsbyAyPC9saT48bGk+SXRlbSAyPC9saT4n
CitQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPGxpPkl0ZW0gMTwvbGk+PGxpPkhlbGxvIDE8L2xpPjxs
aSBzdHlsZT0iY29sb3I6IHJnYigxMjcsIDEyOCwgMTI3KTsiPkhlbGxvIDI8L2xpPjxsaT5JdGVt
IDI8L2xpPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6
IHJnYigxMDEsIDEwMSwgMTAxKTsgY29sb3I6IHJnYigxMDEsIDEwMSwgMTAxKTsiPkhlbGxvPC9z
cGFuPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJn
Yig5MCwgOTAsIDkwKTsgY29sb3I6IHJnYig5MCwgOTAsIDkwKTsiPkhlbGxvPC9zcGFuPicKK1BB
U1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY29sb3I6IHJnYig4NSwgODUsIDg1KTsi
PkhlbGxvPC9zcGFuPjxzcGFuIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsiPkhlbGxv
IDI8L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xv
cjogcmdiKDY4LCA2OCwgNjgpOyBjb2xvcjogcmdiKDY4LCA2OCwgNjgpOyI+SGVsbG88L3NwYW4+
JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDY4
LCA2OCwgNjgpOyBjb2xvcjogcmdiKDY4LCA2OCwgNjgpOyI+SGVsbG88L3NwYW4+JworUEFTUyBw
YXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBj
b2xvcjogcmdiKDAsIDAsIDApOyI+SGVsbG88L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMg
JzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBjb2xvcjogcmdiKDAsIDAs
IDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bhbj4n
CitQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJn
YigyNTUsIDI1NSwgMjU1KTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8
bGk+SXRlbSAxPC9saT48bGk+PHNwYW4gc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHdoaXRlOyI+
SGVsbG88L3NwYW4+PC9saT48bGk+SXRlbSAyPC9saT4nCitQQVNTIHBhc3RlZE1hcmt1cCBpcyAn
PGxpPkl0ZW0gMTwvbGk+PGxpIHN0eWxlPSJjb2xvcjogcmdiKDg1LCA4NSwgODUpOyBiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7Ij5IZWxsbyAxPC9saT48bGk+SGVsbG8gMjwv
bGk+PGxpPkl0ZW0gMjwvbGk+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxsaT5JdGVtIDE8L2xp
PjxsaT5IZWxsbyAxPC9saT48bGkgc3R5bGU9ImNvbG9yOiBibGFjazsiPkhlbGxvIDI8L2xpPjxs
aT5JdGVtIDI8L2xpPicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmZhYThjNzU5ZDVjZDYzMDk0NzAzYWMzY2M3Mzg1YjJkMDIyYjU1NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3It
ZmlsdGVyZWQuaHRtbApAQCAtMCwwICsxLDk1IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIGVuYWJsZUNvbG9yRmlsdGVyPXRydWUgXSAtLT4KKzxodG1sPgorPGhl
YWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxz
dHlsZT4KKyAgICAgICAgOnJvb3QgeworICAgICAgICAgICAgY29sb3Itc2NoZW1lOiBkYXJrOwor
ICAgICAgICAgICAgLWFwcGxlLWNvbG9yLWZpbHRlcjogYXBwbGUtaW52ZXJ0LWxpZ2h0bmVzcygp
OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwIGlkPSJk
ZXNjcmlwdGlvbiI+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHBhc3RpbmcgaW50byBhIGNvbG9yIGZp
bHRlcmVkIGRhcmsgbW9kZSBkb2N1bWVudCBpbnNlcnRzIGxpZ2h0IG1vZGUgdHJhbnNmb3JtZWQg
Y29udGVudC48L3A+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKyAgICA8c2NyaXB0
PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0VXNlRGFya0FwcGVhcmFuY2UodHJ1ZSk7CisKKyAgICBsZXQgc2VsID0gZG9jdW1lbnQuZ2V0
U2VsZWN0aW9uKCk7CisgICAgbGV0IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJyb290
Iik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIGZ1bmN0aW9u
IGNyZWF0ZUVkaXRhYmxlKHRhZ05hbWUsIG1hcmt1cCkgeworICAgICAgICBsZXQgbm9kZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7CisgICAgICAgIG5vZGUuY29udGVudEVkaXRh
YmxlID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1hcmt1cCkKKyAgICAgICAgICAgIG5vZGUuaW5uZXJI
VE1MID0gbWFya3VwOworICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biB0ZXN0Q29weVBhc3RlKG9yaWdpbmFsTWFya3VwLCBleHBlY3RlZCwgYXNMaXN0ID0gZmFsc2Up
IHsKKyAgICAgICAgbGV0IHRhZ05hbWUgPSBhc0xpc3QgPyAidWwiIDogImRpdiI7CisgICAgICAg
IGxldCBjb3B5Tm9kZSA9IGNyZWF0ZUVkaXRhYmxlKHRhZ05hbWUsIG9yaWdpbmFsTWFya3VwKTsK
KyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChjb3B5Tm9kZSk7CisgICAgICAgIGNvcHlOb2RlLmZv
Y3VzKCk7CisKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIsIGZhbHNl
KTsKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkNvcHkiLCBmYWxzZSk7CisKKyAgICAg
ICAgY29weU5vZGUucmVtb3ZlKCk7CisKKyAgICAgICAgbGV0IHBhc3RlTm9kZSA9IGNyZWF0ZUVk
aXRhYmxlKHRhZ05hbWUpOworICAgICAgICByb290LmFwcGVuZENoaWxkKHBhc3RlTm9kZSk7CisK
KyAgICAgICAgaWYgKGFzTGlzdCkgeworICAgICAgICAgICAgcGFzdGVOb2RlLmlubmVySFRNTCA9
ICI8bGk+SXRlbSAxPC9saT48bGk+SXRlbSAyPC9saT4iOworICAgICAgICAgICAgcGFzdGVOb2Rl
LmZvY3VzKCk7CisgICAgICAgICAgICBtb3ZlU2VsZWN0aW9uRm9yd2FyZEJ5TGluZUNvbW1hbmQo
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwYXN0ZU5vZGUuZm9jdXMoKTsKKworICAg
ICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiUGFzdGUiLCBmYWxzZSk7CisKKyAgICAgICAgcGFz
dGVkTWFya3VwID0gcGFzdGVOb2RlLmlubmVySFRNTDsKKworICAgICAgICBzaG91bGRCZSgicGFz
dGVkTWFya3VwIiwgIiciICsgZXhwZWN0ZWQgKyAiJyIpOworICAgIH0KKworICAgIC8vIFRyYW5z
Zm9ybWVkIG9uIHBhc3RlCisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5bGU9XCJjb2xvcjog
d2hpdGU7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFuIHN0
eWxlPVwiY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgY29sb3I6IHJnYigwLCAwLCAwKTsgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wiPkhlbGxvPC9zcGFuPiIpOworICAg
IHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigyMzgsIDIzOCwgMjM4KTsg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDUxLCA1MSwgNTEpXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFu
IHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigyMSwgMjEsIDIxKTsgY29sb3I6IHJnYigyMSwgMjEs
IDIxKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wiPkhlbGxvPC9zcGFu
PiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigyMzgsIDIz
OCwgMjM4KTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDg1LCA4NSwgODUpXCI+SGVsbG88L3NwYW4+
IiwgIjxzcGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigyMSwgMjEsIDIxKTsgY29sb3I6IHJn
YigyMSwgMjEsIDIxKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxMywgMjEzLCAyMTMpO1wiPkhl
bGxvPC9zcGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJn
YigxNzAsIDE3MCwgMTcwKVwiPkhlbGxvPC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigx
NTMsIDE1MywgMTUzKVwiPkhlbGxvIDI8L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJn
YigxMDYsIDEwNiwgMTA2KTtcIj5IZWxsbzwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiByZ2Io
MTI3LCAxMjgsIDEyNyk7XCI+SGVsbG8gMjwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8
c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTUzLCAxNTMsIDE1MylcIj5IZWxsbzwvc3Bhbj4iLCAi
PHNwYW4gc3R5bGU9XCJjYXJldC1jb2xvcjogcmdiKDEyNywgMTI4LCAxMjcpOyBjb2xvcjogcmdi
KDEyNywgMTI4LCAxMjcpO1wiPkhlbGxvPC9zcGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxz
cGFuIHN0eWxlPVwiY29sb3I6IHJnYigxMTksIDExOSwgMTE5KVwiPkhlbGxvPC9zcGFuPiIsICI8
c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoMTcwLCAxNzAsIDE3MCk7IGNvbG9yOiByZ2Io
MTcwLCAxNzAsIDE3MCk7XCI+SGVsbG88L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgiPHNw
YW4gc3R5bGU9XCJjb2xvcjogcmdiKDEwMiwgMTAyLCAxMDIpXCI+SGVsbG88L3NwYW4+IiwgIjxz
cGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgY29sb3I6IHJnYigx
OTEsIDE5MSwgMTkxKTtcIj5IZWxsbzwvc3Bhbj4iKTsKKworICAgIC8vIFRyYW5zZm9ybWVkIGxp
c3QgaXRlbXMgb24gcGFzdGUKKyAgICB0ZXN0Q29weVBhc3RlKCI8bGk+PHNwYW4gc3R5bGU9XCJj
b2xvcjogd2hpdGU7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrXCI+SGVsbG88L3NwYW4+PC9saT4i
LCAiPGxpPkl0ZW0gMTwvbGk+PGxpPjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigwLCAwLCAwKTsg
YmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wiPkhlbGxvPC9zcGFuPjwvbGk+
PGxpPkl0ZW0gMjwvbGk+IiwgdHJ1ZSk7CisgICAgdGVzdENvcHlQYXN0ZSgiPGxpIHN0eWxlPVwi
Y29sb3I6IHJnYigyMzgsIDIzOCwgMjM4KTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDg1LCA4NSwg
ODUpXCI+SGVsbG8gMTwvbGk+PGxpPkhlbGxvIDI8L2xpPiIsICI8bGk+SXRlbSAxPC9saT48bGkg
c3R5bGU9XCJjb2xvcjogcmdiKDIxLCAyMSwgMjEpOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjEz
LCAyMTMsIDIxMyk7XCI+SGVsbG8gMTwvbGk+PGxpPkhlbGxvIDI8L2xpPjxsaT5JdGVtIDI8L2xp
PiIsIHRydWUpOworICAgIHRlc3RDb3B5UGFzdGUoIjxsaT5IZWxsbyAxPC9saT48bGkgc3R5bGU9
XCJjb2xvcjogcmdiKDE1MywgMTUzLCAxNTMpXCI+SGVsbG8gMjwvbGk+IiwgIjxsaT5JdGVtIDE8
L2xpPjxsaT5IZWxsbyAxPC9saT48bGkgc3R5bGU9XCJjb2xvcjogcmdiKDEyNywgMTI4LCAxMjcp
O1wiPkhlbGxvIDI8L2xpPjxsaT5JdGVtIDI8L2xpPiIsIHRydWUpOworCisgICAgLy8gTm90IHRy
YW5zZm9ybWVkIG9uIHBhc3RlCisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5bGU9XCJjb2xv
cjogcmdiKDEwMSwgMTAxLCAxMDEpXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwiY2Fy
ZXQtY29sb3I6IHJnYigxMDEsIDEwMSwgMTAxKTsgY29sb3I6IHJnYigxMDEsIDEwMSwgMTAxKTtc
Ij5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1cImNvbG9y
OiByZ2IoOTAsIDkwLCA5MClcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJjYXJldC1j
b2xvcjogcmdiKDkwLCA5MCwgOTApOyBjb2xvcjogcmdiKDkwLCA5MCwgOTApO1wiPkhlbGxvPC9z
cGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig4NSwg
ODUsIDg1KVwiPkhlbGxvPC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBiYWNrZ3Jv
dW5kLWNvbG9yOiBibGFja1wiPkhlbGxvIDI8L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwiY29sb3I6
IHJnYig4NSwgODUsIDg1KTtcIj5IZWxsbzwvc3Bhbj48c3BhbiBzdHlsZT1cImJhY2tncm91bmQt
Y29sb3I6IGJsYWNrO1wiPkhlbGxvIDI8L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgiPHNw
YW4gc3R5bGU9XCJjb2xvcjogcmdiKDY4LCA2OCwgNjgpXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFu
IHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYig2OCwgNjgsIDY4KTsgY29sb3I6IHJnYig2OCwgNjgs
IDY4KTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1c
ImNvbG9yOiByZ2IoNjgsIDY4LCA2OClcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJj
YXJldC1jb2xvcjogcmdiKDY4LCA2OCwgNjgpOyBjb2xvcjogcmdiKDY4LCA2OCwgNjgpO1wiPkhl
bGxvPC9zcGFuPiIpOworICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IGJs
YWNrXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigwLCAw
LCAwKTsgY29sb3I6IHJnYigwLCAwLCAwKTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29w
eVBhc3RlKCI8c3BhbiBzdHlsZT1cImNvbG9yOiBibGFjazsgYmFja2dyb3VuZC1jb2xvcjogd2hp
dGVcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJjYXJldC1jb2xvcjogcmdiKDAsIDAs
IDApOyBjb2xvcjogcmdiKDAsIDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUs
IDI1NSk7XCI+SGVsbG88L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5bGU9
XCJjb2xvcjogd2hpdGU7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlXCI+SGVsbG88L3NwYW4+Iiwg
IjxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wiPkhl
bGxvPC9zcGFuPiIpOworCisgICAgLy8gTGlzdCBpdGVtcyBub3QgdHJhbnNmb3JtZWQgb24gcGFz
dGUKKyAgICB0ZXN0Q29weVBhc3RlKCI8bGk+PHNwYW4gc3R5bGU9XCJjb2xvcjogd2hpdGU7IGJh
Y2tncm91bmQtY29sb3I6IHdoaXRlXCI+SGVsbG88L3NwYW4+PC9saT4iLCAiPGxpPkl0ZW0gMTwv
bGk+PGxpPjxzcGFuIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XCI+SGVsbG88L3Nw
YW4+PC9saT48bGk+SXRlbSAyPC9saT4iLCB0cnVlKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8bGkg
c3R5bGU9XCJjb2xvcjogcmdiKDg1LCA4NSwgODUpOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1
LCAyMzUsIDIzNSlcIj5IZWxsbyAxPC9saT48bGk+SGVsbG8gMjwvbGk+IiwgIjxsaT5JdGVtIDE8
L2xpPjxsaSBzdHlsZT1cImNvbG9yOiByZ2IoODUsIDg1LCA4NSk7IGJhY2tncm91bmQtY29sb3I6
IHJnYigyMzUsIDIzNSwgMjM1KTtcIj5IZWxsbyAxPC9saT48bGk+SGVsbG8gMjwvbGk+PGxpPkl0
ZW0gMjwvbGk+IiwgdHJ1ZSk7CisgICAgdGVzdENvcHlQYXN0ZSgiPGxpPkhlbGxvIDE8L2xpPjxs
aSBzdHlsZT1cImNvbG9yOiBibGFja1wiPkhlbGxvIDI8L2xpPiIsICI8bGk+SXRlbSAxPC9saT48
bGk+SGVsbG8gMTwvbGk+PGxpIHN0eWxlPVwiY29sb3I6IGJsYWNrO1wiPkhlbGxvIDI8L2xpPjxs
aT5JdGVtIDI8L2xpPiIsIHRydWUpOworCisgICAgcm9vdC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi
OworICAgIDwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEyL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MtMTIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxZjg1NDhlOWIyMjIyYzBlODVm
ZmYwODYyN2E3MTA1ZjlhZWY5Nzk0Li5jOWJlODI3Yzk0Njk2MTk5ODUyNjE3ZmZlNDcwZGEzNmM1
ZjM1ZmJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTIvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMSw1ICsxLDYgQEAKIGNzcy1kYXJrLW1vZGUgWyBTa2lwIF0KIGNzcy1kYXJrLW1vZGUv
b2xkZXItc3lzdGVtcyBbIFBhc3MgXQorZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9k
ZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgU2tpcCBdCiAKICMgPHJkYXI6Ly9wcm9ibGVtLzQ4Nzgx
MDk4PiBIRUlGIGFuZCBIRUlDUyBpbWFnZXMgYXJlIHN1cHBvcnRlZCBvbmx5IG9uIGlPUyAxMwog
ZmFzdC9pbWFnZXMvYW5pbWF0ZWQtaGVpY3MtZHJhdy5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk4ZTA2ZTE1Mjc5MTZhNzQ2ODk0
MGI0N2QwZWQ5NTAyZjc0ZmQ5NjcuLjE0NzIwMWZkMjE2MmIyZDExNmU0Y2I1ZDhmZDBhOTVlOWRk
ZWVlMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0z
MjQyLDYgKzMyNDIsNyBAQCBlZGl0aW5nL3NlbGVjdGlvbi9pb3Mvc2VsZWN0LWFsbC1ub24tZWRp
dGFibGUtdGV4dC11c2luZy1rZXlib2FyZC5odG1sIFsgU2tpcCBdCiAjIERhcmsgTW9kZSBpcyBp
T1MgMTMgYW5kIGxhdGVyLgogY3NzLWRhcmstbW9kZSBbIFBhc3MgXQogY3NzLWRhcmstbW9kZS9v
bGRlci1zeXN0ZW1zIFsgU2tpcCBdCitlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2Rl
LWNvbG9yLWZpbHRlcmVkLmh0bWwgWyBQYXNzIF0KIAogZmFzdC9mb3Jtcy9hdXRvLWZpbGwtYnV0
dG9uL2NhcHMtbG9jay1pbmRpY2F0b3Itc2hvdWxkLWJlLXZpc2libGUtYWZ0ZXItaGlkaW5nLWF1
dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLmh0bWwgWyBQYXNzIF0KIGZhc3QvZm9ybXMv
YXV0by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1ub3QtYmUtdmlzaWJs
ZS13aGVuLWF1dG8tZmlsbC1zdHJvbmctcGFzc3dvcmQtYnV0dG9uLWlzLXZpc2libGUuaHRtbCBb
IFBhc3MgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3
NjUzYzAzMzFmYjhkYzU1YmIzZGIwYjc0MDg2ZGEwZjY5YWJkYjIzLi5jYmJjNWE1NDllMDllNWIy
YWZkYTI2YjllYzA4Mjc2OTVhMWUzM2IxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtMTc0OSw2ICsxNzQ5LDcgQEAgd2Via2l0Lm9yZy9iLzE4NzM5MyBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLzJkY29udGV4dC9pbWFnZWJpdG1hcC9jcmVh
dGUKIFsgTW9qYXZlKyBdIGNzcy1kYXJrLW1vZGUgWyBQYXNzIF0KIFsgTW9qYXZlKyBdIGNzcy1k
YXJrLW1vZGUvb2xkZXItc3lzdGVtcyBbIFNraXAgXQogWyBNb2phdmUrIF0gaW5zcGVjdG9yL2Nz
cy9mb3JjZS1wYWdlLWFwcGVhcmFuY2UuaHRtbCBbIFBhc3MgXQorWyBNb2phdmUrIF0gZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgUGFzcyBd
CiAKICMgVGVzdCBEYXJrIE1vZGUgQ1NTIHN1cHBvcnQgZm9yIGxpZ2h0IG1vZGUgb24gb2xkZXIg
c3lzdGVtcy4KIFsgU2llcnJhIEhpZ2hTaWVycmEgXSBjc3MtZGFyay1tb2RlL29sZGVyLXN5c3Rl
bXMgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378015</attachid>
            <date>2019-09-04 14:27:25 -0700</date>
            <delta_ts>2019-09-04 19:52:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201368-20190904142724.patch</filename>
            <type>text/plain</type>
            <size>38167</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTQzN2E3ZWJjY2NjZDkz
Y2M2NjRlZTQ5NzBlODQwY2E2MDg1MTA0My4uN2ViMGE0ZmJkZWUwODJhODA0ZjhlMGUzOTQ5Mjlk
ZjliMDAyNTYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE5LTA5LTA0ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWlsIGFwcGVhcnMg
dG8gYmUgZG91YmxlIGludmVydGluZyBjb2RlIGNvcGllZCBmcm9tIE5vdGVzLCBYY29kZSwgb3Ig
VGVybWluYWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDEzNjgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDA1Mjk4NjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgRGFyayBtb2RlIGNvbnRlbnQgdGhhdCBp
cyBwYXN0ZWQgc2hvdWxkIGhhdmUgdGhlIGlubGluZSBzdHlsZXMgaW52ZXJzZSBjb2xvcgorICAg
ICAgICB0cmFuc2Zvcm1lZCBieSB0aGUgY29sb3IgZmlsdGVyIHRvIG1hdGNoIHRoZSBjb2xvciBm
aWx0ZXJlZCBkb2N1bWVudCBjb250ZW50cy4KKworICAgICAgICBMYXlvdXQgVGVzdDogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sCisgICAgICAg
IEFQSSBUZXN0czogUGFzdGVIVE1MLlRyYW5zZm9ybUNvbG9yc09mRGFya0NvbnRlbnQsIFBhc3Rl
SFRNTC5Eb2VzTm90VHJhbnNmb3JtQ29sb3JzT2ZMaWdodENvbnRlbnQsCisgICAgICAgICAgICBQ
YXN0ZVJURkQuVHJhbnNmb3JtQ29sb3JzT2ZEYXJrQ29udGVudCwgUGFzdGVSVEZELkRvZXNOb3RU
cmFuc2Zvcm1Db2xvcnNPZkxpZ2h0Q29udGVudAorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjppbnZlcnNlVHJhbnNm
b3JtQ29sb3JJZk5lZWRlZCk6IEFkZGVkIGNhcmV0LWNvbG9yIHRvIHRoZSB0cmFuc2Zvcm1lZCBw
cm9wZXJ0aWVzLgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZnJhZ21lbnROZWVkc0NvbG9yVHJhbnNmb3JtZWQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnZlcnNlVHJh
bnNmb3JtQ29sb3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KTogQ2FsbCBmcmFnbWVudE5lZWRzQ29sb3JUcmFuc2Zvcm1lZCgpIGFu
ZCBpbnZlcnNlVHJhbnNmb3JtQ29sb3IoKS4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmg6CisKIDIwMTktMDgtMjkgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlA
YXBwbGUuY29tPgogCiAgICAgICAgIENvcHlpbmcgYW5kIHBhc3RpbmcgdHdvIHBhcmFncmFwaHMg
d2l0aCBhIG5ld2xpbmUgYmV0d2VlbiB0aGVtIHJlc3VsdHMgaW4gc3RyYXkgcGFyYWdyYXBoIHdp
dGggbmV3bGluZSBpbnNpZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAK
aW5kZXggZDZlMTFiNDc5OTQ0MTkzZDU2NjY0NGQ2ZGJkMWM2ODlkNTUzNWZlZC4uM2NmMzU1NjQz
OGQ2ZmJkNzRiZjVkNWRiYTI1MTlmMjVhZGM4MDgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcApAQCAtMTU4MCw4ICsxNTgwLDkgQEAgUmVmPEVkaXRpbmdTdHlsZT4g
RWRpdGluZ1N0eWxlOjppbnZlcnNlVHJhbnNmb3JtQ29sb3JJZk5lZWRlZChFbGVtZW50JiBlbGVt
ZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKICAgICBib29sIGhhc0NvbG9yID0gbV9tdXRh
YmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlDb2xvcik7CisgICAgYm9v
bCBoYXNDYXJldENvbG9yID0gbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NT
UHJvcGVydHlDYXJldENvbG9yKTsKICAgICBib29sIGhhc0JhY2tncm91bmRDb2xvciA9IG1fbXV0
YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKLSAgICBpZiAoIWhhc0NvbG9yICYmICFoYXNCYWNrZ3JvdW5kQ29sb3IpCisgICAgaWYgKCFo
YXNDb2xvciAmJiAhaGFzQ2FyZXRDb2xvciAmJiAhaGFzQmFja2dyb3VuZENvbG9yKQogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAKICAgICBhdXRvIHN0eWxlV2l0aEludmVydGVkQ29sb3JzID0gY29w
eSgpOwpAQCAtMTU5Nyw2ICsxNTk4LDkgQEAgUmVmPEVkaXRpbmdTdHlsZT4gRWRpdGluZ1N0eWxl
OjppbnZlcnNlVHJhbnNmb3JtQ29sb3JJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50KQogICAgIGlm
IChoYXNDb2xvcikKICAgICAgICAgaW52ZXJ0ZWRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKIAor
ICAgIGlmIChoYXNDYXJldENvbG9yKQorICAgICAgICBpbnZlcnRlZENvbG9yKENTU1Byb3BlcnR5
Q2FyZXRDb2xvcik7CisKICAgICBpZiAoaGFzQmFja2dyb3VuZENvbG9yKQogICAgICAgICBpbnZl
cnRlZENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBmMjYwZDZm
MjllZGY5YTFiNTA1NTBkNWJhMDgxM2JkZTk1OTE2ZGJjLi45ZjU0MWYwODQ2Mjk2ZTdmMThhZmM3
Nzc4ODJlMmYyYmJmMTA2NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkhU
TUxUaXRsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5vZGVS
ZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlBvc2l0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5s
aW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlNjcmlwdEVsZW1lbnQu
aCIKQEAgLTUyMCw2ICs1MjEsODIgQEAgYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6c2hv
dWxkTWVyZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzb3VyY2UsIGNvbnN0IFYKICAgICAgICAg
JiYgIWlzQmxvY2soc291cmNlTm9kZSkgJiYgIWlzQmxvY2soZGVzdGluYXRpb25Ob2RlKTsKIH0K
IAorc3RhdGljIGJvb2wgZnJhZ21lbnROZWVkc0NvbG9yVHJhbnNmb3JtZWQoUmVwbGFjZW1lbnRG
cmFnbWVudCYgZnJhZ21lbnQsIGNvbnN0IFBvc2l0aW9uJiBpbnNlcnRpb25Qb3MpCit7CisgICAg
Ly8gRGFyayBtb2RlIGNvbnRlbnQgdGhhdCBpcyBpbnNlcnRlZCBzaG91bGQgaGF2ZSB0aGUgaW5s
aW5lIHN0eWxlcyBpbnZlcnNlIGNvbG9yCisgICAgLy8gdHJhbnNmb3JtZWQgYnkgdGhlIGNvbG9y
IGZpbHRlciB0byBtYXRjaCB0aGUgY29sb3IgZmlsdGVyZWQgZG9jdW1lbnQgY29udGVudHMuCisg
ICAgLy8gVGhpcyBhcHBsaWVzIHRvIE1haWwgYW5kIE5vdGVzIHdoZW4gcGFzdGluZyBmcm9tIFhj
b2RlLiA8cmRhcjovL3Byb2JsZW0vNDA1Mjk4Njc+CisKKyAgICBSZWZQdHI8RWxlbWVudD4gZWRp
dGFibGVSb290ID0gaW5zZXJ0aW9uUG9zLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKKyAgICBBU1NF
UlQoZWRpdGFibGVSb290KTsKKyAgICBpZiAoIWVkaXRhYmxlUm9vdCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgYXV0byogZWRpdGFibGVSb290UmVuZGVyZXIgPSBlZGl0YWJsZVJvb3Qt
PnJlbmRlcmVyKCk7CisgICAgaWYgKCFlZGl0YWJsZVJvb3RSZW5kZXJlciB8fCAhZWRpdGFibGVS
b290UmVuZGVyZXItPnN0eWxlKCkuaGFzQXBwbGVDb2xvckZpbHRlcigpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBjb25zdCBhdXRvJiBjb2xvckZpbHRlciA9IGVkaXRhYmxlUm9vdFJl
bmRlcmVyLT5zdHlsZSgpLmFwcGxlQ29sb3JGaWx0ZXIoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGNvbG9yRmlsdGVyT3BlcmF0aW9uIDogY29sb3JGaWx0ZXIub3BlcmF0aW9ucygpKSB7CisgICAg
ICAgIGlmIChjb2xvckZpbHRlck9wZXJhdGlvbi0+dHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6
QVBQTEVfSU5WRVJUX0xJR0hUTkVTUykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBhdXRvIHByb3BlcnR5TGlnaHRuZXNzID0gWyZdKGNvbnN0IFN0eWxlUHJvcGVydGll
cyYgaW5saW5lU3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgLT4gT3B0aW9uYWw8ZG91
YmxlPiB7CisgICAgICAgIGF1dG8gY29sb3IgPSBpbmxpbmVTdHlsZS5wcm9wZXJ0eUFzQ29sb3Io
cHJvcGVydHlJRCk7CisgICAgICAgIGlmICghY29sb3IgfHwgIWNvbG9yLnZhbHVlKCkuaXNWaXNp
YmxlKCkgfHwgY29sb3IudmFsdWUoKS5pc1NlbWFudGljKCkpCisgICAgICAgICAgICByZXR1cm4g
eyB9OworCisgICAgICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKKyAgICAg
ICAgY29sb3IudmFsdWUoKS5nZXRIU0woaHVlLCBzYXR1cmF0aW9uLCBsaWdodG5lc3MpOworICAg
ICAgICByZXR1cm4gbGlnaHRuZXNzOworICAgIH07CisKKyAgICBjb25zdCBkb3VibGUgbGlnaHRu
ZXNzRGFya0Vub3VnaEZvclRleHQgPSAwLjQ7CisgICAgY29uc3QgZG91YmxlIGxpZ2h0bmVzc0xp
Z2h0RW5vdWdoRm9yQmFja2dyb3VuZCA9IDAuNjsKKworICAgIGZvciAoUmVmUHRyPE5vZGU+IG5v
ZGUgPSBmcmFnbWVudC5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpu
ZXh0KCpub2RlKSkgeworICAgICAgICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KCpub2RlKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8mIGVsZW1lbnQgPSBkb3duY2FzdDxT
dHlsZWRFbGVtZW50Pigqbm9kZSk7CisgICAgICAgIGF1dG8qIGlubGluZVN0eWxlID0gZWxlbWVu
dC5pbmxpbmVTdHlsZSgpOworICAgICAgICBpZiAoIWlubGluZVN0eWxlKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgYXV0byB0ZXh0TGlnaHRuZXNzID0gcHJvcGVydHlMaWdodG5l
c3MoKmlubGluZVN0eWxlLCBDU1NQcm9wZXJ0eUNvbG9yKTsKKyAgICAgICAgaWYgKHRleHRMaWdo
dG5lc3MgJiYgKnRleHRMaWdodG5lc3MgPCBsaWdodG5lc3NEYXJrRW5vdWdoRm9yVGV4dCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhdXRvIGJhY2tncm91bmRMaWdodG5l
c3MgPSBwcm9wZXJ0eUxpZ2h0bmVzcygqaW5saW5lU3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKKyAgICAgICAgaWYgKGJhY2tncm91bmRMaWdodG5lc3MgJiYgKmJhY2tncm91bmRM
aWdodG5lc3MgPiBsaWdodG5lc3NMaWdodEVub3VnaEZvckJhY2tncm91bmQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmludmVyc2VUcmFuc2Zvcm1Db2xvcihJbnNlcnRlZE5vZGVz
JiBpbnNlcnRlZE5vZGVzKQoreworICAgIFJlZlB0cjxOb2RlPiBwYXN0RW5kTm9kZSA9IGluc2Vy
dGVkTm9kZXMucGFzdExhc3RMZWFmKCk7CisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IGlu
c2VydGVkTm9kZXMuZmlyc3ROb2RlSW5zZXJ0ZWQoKTsgbm9kZSAmJiBub2RlICE9IHBhc3RFbmRO
b2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSkpIHsKKyAgICAgICAgaWYgKCFp
czxTdHlsZWRFbGVtZW50Pigqbm9kZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKm5vZGUpOworICAgICAg
ICBhdXRvKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQuaW5saW5lU3R5bGUoKTsKKyAgICAgICAgaWYg
KCFpbmxpbmVTdHlsZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gZWRp
dGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5saW5lU3R5bGUpOworICAgICAgICBh
dXRvIHRyYW5zZm9ybWVkU3R5bGUgPSBlZGl0aW5nU3R5bGUtPmludmVyc2VUcmFuc2Zvcm1Db2xv
cklmTmVlZGVkKGVsZW1lbnQpOworICAgICAgICBpZiAoZWRpdGluZ1N0eWxlLnB0cigpID09IHRy
YW5zZm9ybWVkU3R5bGUucHRyKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBz
ZXROb2RlQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlQXR0ciwgdHJhbnNmb3JtZWRTdHlsZS0+c3R5
bGUoKS0+YXNUZXh0KCkpOworICAgIH0KK30KKwogLy8gU3R5bGUgcnVsZXMgdGhhdCBtYXRjaCBq
dXN0IGluc2VydGVkIGVsZW1lbnRzIGNvdWxkIGNoYW5nZSB0aGVpciBhcHBlYXJhbmNlLCBsaWtl
CiAvLyBhIGRpdiBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQgd2l0aCBkaXYgeyBkaXNwbGF5Omlu
bGluZTsgfS4KIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0
eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykK
QEAgLTExMTUsOCArMTE5Miw4IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBw
bHkoKQogICAgIGluc2VydGlvblBvcyA9IHBvc2l0aW9uT3V0c2lkZVRhYlNwYW4oaW5zZXJ0aW9u
UG9zKTsKIAogICAgIGJvb2wgaGFzQmxhbmtMaW5lc0JldHdlZW5QYXJhZ3JhcGhzID0gaGFzQmxh
bmtMaW5lQmV0d2VlblBhcmFncmFwaHMoaW5zZXJ0aW9uUG9zKTsKLSAgICAKICAgICBib29sIGhh
bmRsZWRTdHlsZVNwYW5zID0gaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihmcmFnbWVu
dCwgaW5zZXJ0aW9uUG9zKTsKKyAgICBib29sIG5lZWRzQ29sb3JUcmFuc2Zvcm1lZCA9IGZyYWdt
ZW50TmVlZHNDb2xvclRyYW5zZm9ybWVkKGZyYWdtZW50LCBpbnNlcnRpb25Qb3MpOwogCiAgICAg
Ly8gV2UncmUgZmluaXNoZWQgaWYgdGhlcmUgaXMgbm90aGluZyB0byBhZGQuCiAgICAgaWYgKGZy
YWdtZW50LmlzRW1wdHkoKSB8fCAhZnJhZ21lbnQuZmlyc3RDaGlsZCgpKQpAQCAtMTIyNywxMSAr
MTMwNCwxNCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAg
ICAgICAgIHJlbW92ZU5vZGUoKm5vZGVUb1JlbW92ZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
CisKICAgICBtYWtlSW5zZXJ0ZWRDb250ZW50Um91bmRUcmlwcGFibGVXaXRoSFRNTFRyZWVCdWls
ZGVyKGluc2VydGVkTm9kZXMpOwogICAgIGlmIChpbnNlcnRlZE5vZGVzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgaWYgKG5lZWRzQ29sb3JUcmFuc2Zvcm1lZCkKKyAgICAgICAg
aW52ZXJzZVRyYW5zZm9ybUNvbG9yKGluc2VydGVkTm9kZXMpOworCiAgICAgcmVtb3ZlUmVkdW5k
YW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShpbnNlcnRlZE5vZGVzKTsKICAgICBpZiAo
aW5zZXJ0ZWROb2Rlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCAwYjJlYjk5YTFl
ZmVjNzI4NDYxY2QwNGZjN2FmOWFlMmMyNTU5ZDdiLi4yOWNlYzQzYWIwYmMxMzIyOGVkMzc5NzZj
MGQ2M2RmMjVhN2ExMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5oCkBAIC05OSw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZW1vdmVVbnJlbmRlcmVkVGV4dE5vZGVzQXRFbmRzKEluc2VydGVkTm9kZXMmKTsKICAgICAKICAg
ICB2b2lkIHJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5zZXJ0
ZWROb2RlcyYpOworICAgIHZvaWQgaW52ZXJzZVRyYW5zZm9ybUNvbG9yKEluc2VydGVkTm9kZXMm
KTsKICAgICB2b2lkIG1ha2VJbnNlcnRlZENvbnRlbnRSb3VuZFRyaXBwYWJsZVdpdGhIVE1MVHJl
ZUJ1aWxkZXIoSW5zZXJ0ZWROb2RlcyYpOwogICAgIHZvaWQgbW92ZU5vZGVPdXRPZkFuY2VzdG9y
KE5vZGUmLCBOb2RlJiBhbmNlc3RvciwgSW5zZXJ0ZWROb2RlcyYpOwogICAgIHZvaWQgaGFuZGxl
U3R5bGVTcGFucyhJbnNlcnRlZE5vZGVzJik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjk1MjY2MDA3YjFlYzkyMjAzODYxNGFhZTQ0MzI3MTg1
M2I3MWQzMC4uZGIwNGRlMDEyMTRhZDhjNGU3MTVkYWUyMTNkMTkwMjg2MWI0YjU2NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE5LTA5LTA0ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWlsIGFwcGVhcnMgdG8gYmUgZG91YmxlIGludmVydGluZyBjb2RlIGNvcGllZCBm
cm9tIE5vdGVzLCBYY29kZSwgb3IgVGVybWluYWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzNjgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDA1
Mjk4NjcKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgQWRk
ZWQgVGVzdHM6IFBhc3RlSFRNTC5UcmFuc2Zvcm1Db2xvcnNPZkRhcmtDb250ZW50LCBQYXN0ZUhU
TUwuRG9lc05vdFRyYW5zZm9ybUNvbG9yc09mTGlnaHRDb250ZW50LAorICAgICAgICAgICAgUGFz
dGVSVEZELlRyYW5zZm9ybUNvbG9yc09mRGFya0NvbnRlbnQsIFBhc3RlUlRGRC5Eb2VzTm90VHJh
bnNmb3JtQ29sb3JzT2ZMaWdodENvbnRlbnQKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1tOgorICAgICAgICAoY3JlYXRlV2Vi
Vmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcpOiBBZGRlZCBhcmd1bWVudCB0byBl
bmFibGUgY29sb3IgZmlsdGVyLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUGFzdGVSVEZELm1tOgorICAgICAgICAoY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0
ZWJvYXJkRGF0YUVuYWJsZWQpOiBBZGRlZCBhcmd1bWVudCB0byBlbmFibGUgY29sb3IgZmlsdGVy
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvcmljaC1jb2xvci1m
aWx0ZXJlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgZm9yY2VEYXJrTW9kZV0pOgorCiAyMDE5LTA5
LTAzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BF
XSBNaW5pQnJvd3NlciBzaG91bGQgaGFuZGxlIHRoZSBXZWJLaXRXZWJWaWV3OjpjcmVhdGUgc2ln
bmFsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgyYTVmZmJiYzUxNmM4Yzg3NDA3Y2NjOWUy
ZDg5ZjkxYmZhZWM0YjYuLjc4MGYwMjlhMGU0OGY1YTM1NzRlN2NlMzU1NjAyMGQ3OTk2Y2RmZTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDYsNiArMTA2LDcgQEAKIAkJMUM3RkVCMjAy
MDdDMEYyRTAwRDIzMjc4IC8qIEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDN0ZFQjFGMjA3QzBGMkQwMEQyMzI3OCAvKiBC
YWNrZ3JvdW5kQ29sb3IubW0gKi87IH07CiAJCTFDOUVCODQxMUUzODBEQTEwMDVDNjQ0MiAvKiBD
b21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUM5RUI4NDAxRTM4MERBMTAwNUM2NDQyIC8qIENvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAgKi87IH07CiAJCTFDQUNBREExMjMwNjIwQUUwMDA3RDU0QyAvKiBXS1dlYlZp
ZXdPcGFxdWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQ0FDQURBMDIzMDYyMEFEMDAwN0Q1NEMgLyogV0tXZWJWaWV3T3BhcXVlLm1tICovOyB9Owor
CQkxQ0U2RkFDMzIzMjAyNjdDMDBFNDhGNkUgLyogcmljaC1jb2xvci1maWx0ZXJlZC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRTZG
QUMxMjMyMDI2NEYwMEU0OEY2RSAvKiByaWNoLWNvbG9yLWZpbHRlcmVkLmh0bWwgKi87IH07CiAJ
CTFDRjU5QUUyMjFFNjg5MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxl
X0J1bmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDRjU5QUUwMjFFNjg5MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxl
X0J1bmRsZS5tbSAqLzsgfTsKIAkJMUNGNTlBRTMyMUU2ODkzMjAwNkUzN0VDIC8qIEZvcmNlTGln
aHRBcHBlYXJhbmNlSW5CdW5kbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQ0Y1OUFERjIxRTY4OTI1MDA2RTM3RUMgLyogRm9yY2VMaWdodEFwcGVh
cmFuY2VJbkJ1bmRsZS5tbSAqLzsgfTsKIAkJMUNGNTlBRTUyMUU2OTc3RDAwNkUzN0VDIC8qIGRh
cmstbW9kZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDRjU5QUU0MjFFNjk2RkIwMDZFMzdFQyAvKiBkYXJrLW1vZGUuaHRtbCAqLzsg
fTsKQEAgLTEzNzIsNiArMTM3Myw3IEBACiAJCQkJRjZGRERERDYxNDI0MUM2RjAwNEYxNzI5IC8q
IHB1c2gtc3RhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlBMTJEREMwMDFFODM3
M0U3MDBDRjZDQUUgLyogcmVuZGVyZWQtaW1hZ2UtZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ2ODQ5QzAxRUVGNUVGMzAwQjkzN0ZFIC8qIHJpY2gt
YW5kLXBsYWluLXRleHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkxQ0U2RkFDMzIz
MjAyNjdDMDBFNDhGNkUgLyogcmljaC1jb2xvci1maWx0ZXJlZC5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTJFOTJCOEY3MjE2NDkwRDQwMDVCNjRGMCAvKiByaWNoLXRleHQtYXR0cmli
dXRlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTBGNTY1MUY5MUZDRTUxMzUwMDMx
MEZCQyAvKiBzY3JvbGwtdG8tYW5jaG9yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
RjRFMEEyOTYyMTFGQzVGQjAwQUY3QzdGIC8qIHNlbGVjdGVkLXRleHQtYW5kLXRleHRhcmVhLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNTI0LDYgKzE1MjYsNyBAQAogCQkxQzlFQjg0
MDFFMzgwREExMDA1QzY0NDIgLyogQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUNBREEwMjMwNjIwQUQwMDA3RDU0QyAvKiBX
S1dlYlZpZXdPcGFxdWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS1dlYlZpZXdPcGFxdWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQjlC
QzM3MUE2NzQ4MjMwMEZFNTY3OCAvKiBXZWFrUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYWtQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQ0U2RkFDMTIzMjAyNjRGMDBFNDhGNkUgLyogcmljaC1jb2xvci1maWx0ZXJlZC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInJpY2gtY29sb3ItZmlsdGVyZWQuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjBEMzc4MUJCRjJGM0QwMEI0RUY1NCAvKiBX
S1JldGFpblB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1Jl
dGFpblB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjU5QURGMjFFNjg5
MjUwMDZFMzdFQyAvKiBGb3JjZUxpZ2h0QXBwZWFyYW5jZUluQnVuZGxlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRs
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGNTlBRTAyMUU2ODkyNTAwNkUz
N0VDIC8qIEZvcmNlTGlnaHRBcHBlYXJhbmNlSW5CdW5kbGVfQnVuZGxlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9yY2VMaWdodEFwcGVhcmFuY2VJbkJ1bmRs
ZV9CdW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzAzLDYgKzMzMDYs
NyBAQAogCQkJCUY0MUFCOTlBMUVGNDY5MkMwMDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwg
Ki8sCiAJCQkJQTEyRERCRkYxRTgzNzNDMTAwQ0Y2Q0FFIC8qIHJlbmRlcmVkLWltYWdlLWV4Y2x1
ZGluZy1vdmVyZmxvdy5odG1sICovLAogCQkJCUY0Njg0OUJGMUVFRjVFREMwMEI5MzdGRSAvKiBy
aWNoLWFuZC1wbGFpbi10ZXh0Lmh0bWwgKi8sCisJCQkJMUNFNkZBQzEyMzIwMjY0RjAwRTQ4RjZF
IC8qIHJpY2gtY29sb3ItZmlsdGVyZWQuaHRtbCAqLywKIAkJCQkyRTkyQjhGNjIxNjQ5MEMzMDA1
QjY0RjAgLyogcmljaC10ZXh0LWF0dHJpYnV0ZXMuaHRtbCAqLywKIAkJCQlGNEUwQTI5NTIxMUZD
NUEzMDBBRjdDN0YgLyogc2VsZWN0ZWQtdGV4dC1hbmQtdGV4dGFyZWEuaHRtbCAqLywKIAkJCQlG
NEQ2NURBNzFGNUU0NkMwMDA5RDhDMjcgLyogc2VsZWN0ZWQtdGV4dC1pbWFnZS1saW5rLWFuZC1l
ZGl0YWJsZS5odG1sICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Bhc3RlSFRNTC5tbQppbmRleCA2NDBjMWMwM2E4ODFkOTE4NjFhMjA3ZjdiOTQ1NzU1
MzNlNTUxNGUxLi5iMDE5YzdlY2VjYzc0NzM1OWY0OGY0MTM1N2RjZjM2YTM2NjM2ZTVmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5t
bQpAQCAtNTcsOSArNTcsMTIgQEAgdm9pZCB3cml0ZUhUTUxUb1Bhc3RlYm9hcmQoTlNTdHJpbmcg
Kmh0bWwpCiB9CiAjZW5kaWYKIAotc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBjcmVh
dGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyhib29sIGVuYWJsZWQpCitz
dGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFz
dGVib2FyZERhdGFTZXR0aW5nKGJvb2wgZW5hYmxlZCwgYm9vbCBjb2xvckZpbHRlckVuYWJsZWQg
PSBmYWxzZSkKIHsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIGF1
dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBfc2V0Q29sb3JGaWx0
ZXJFbmFibGVkOmNvbG9yRmlsdGVyRW5hYmxlZF07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDQwMCwgNDAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CiAg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtbd2ViVmll
dyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc107CiAgICAgV0tQcmVmZXJlbmNlc1NldERhdGFU
cmFuc2Zlckl0ZW1zRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CiAgICAgV0tQcmVmZXJlbmNl
c1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChwcmVmZXJlbmNlcywgZW5hYmxlZCk7CkBA
IC0zNTcsNCArMzYwLDM5IEBAIFRFU1QoUGFzdGVIVE1MLCBTdHJpcHNTeXN0ZW1Gb250TmFtZXMp
CiAgICAgICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmZvbnRGYW1pbHkiXSk7CiB9CiAKKyNpZiBFTkFCTEUo
REFSS19NT0RFX0NTUykgJiYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKKworVEVTVChQYXN0
ZUhUTUwsIFRyYW5zZm9ybUNvbG9yc09mRGFya0NvbnRlbnQpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcodHJ1ZSwgdHJ1
ZSk7CisgICAgW3dlYlZpZXcgZm9yY2VEYXJrTW9kZV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJyaWNoLWNvbG9yLWZpbHRlcmVkIl07CisKKyAgICB3
cml0ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMjM4LCAyMzgs
IDIzOCk7IGJhY2tncm91bmQtY29sb3I6IHJnYig1MSwgNTEsIDUxKVwiPkhlbGxvPC9zcGFuPiIp
OworCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNlbGVjdFJp
Y2hUZXh0KCkiXTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNUX1dLX1NU
UkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJyaWNoLnF1ZXJ5U2Vs
ZWN0b3IoJ3NwYW4nKS5zdHlsZS5jb2xvciJdLCBAInJnYigyMSwgMjEsIDIxKSIpOworICAgIEVY
UEVDVF9XS19TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmlj
aC5xdWVyeVNlbGVjdG9yKCdzcGFuJykuc3R5bGUuYmFja2dyb3VuZENvbG9yIl0sIEAicmdiKDI1
NSwgMjU1LCAyNTUpIik7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBEb2VzTm90VHJhbnNmb3JtQ29s
b3JzT2ZMaWdodENvbnRlbnQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dp
dGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcodHJ1ZSwgdHJ1ZSk7CisgICAgW3dlYlZpZXcg
Zm9yY2VEYXJrTW9kZV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJyaWNoLWNvbG9yLWZpbHRlcmVkIl07CisKKyAgICB3cml0ZUhUTUxUb1Bhc3RlYm9h
cmQoQCI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTAxLCAxMDEsIDEwMSlcIj5IZWxsbzwvc3Bh
bj4iKTsKKworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZWxl
Y3RSaWNoVGV4dCgpIl07CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9X
S19TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVy
eVNlbGVjdG9yKCdzcGFuJykuc3R5bGUuY29sb3IiXSwgQCJyZ2IoMTAxLCAxMDEsIDEwMSkiKTsK
K30KKworI2VuZGlmIC8vIEVOQUJMRShEQVJLX01PREVfQ1NTKSAmJiBIQVZFKE9TX0RBUktfTU9E
RV9TVVBQT1JUKQorCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlUlRGRC5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tCmluZGV4IDZmMjNmYmUy
N2Y3OGE5NGMxNzk2MDQxMWEwYzI1NDEyZGE0NzJkZmQuLjdlZTNiMTg0ZjU3NWY0MTEzMmM0NmFk
ZTRiZThlNDQ3NmI4ODE0MTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFzdGVSVEZELm1tCkBAIC0zOSw2ICszOSwxMiBAQAogI2luY2x1ZGUgPE1v
YmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCisjaWYgVVNF
KEFQUEtJVCkKK3VzaW5nIFBsYXRmb3JtQ29sb3IgPSBOU0NvbG9yOworI2Vsc2UKK3VzaW5nIFBs
YXRmb3JtQ29sb3IgPSBVSUNvbG9yOworI2VuZGlmCisKIEBpbnRlcmZhY2UgV0tXZWJWaWV3ICgp
CiAtICh2b2lkKXBhc3RlOihpZClzZW5kZXI7CiBAZW5kCkBAIC03Niw5ICs4MiwxMiBAQCB2b2lk
IHdyaXRlUlRGRFRvUGFzdGVib2FyZChOU0RhdGEgKmRhdGEpCiB9CiAjZW5kaWYKIAotc3RhdGlj
IFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9h
cmREYXRhRW5hYmxlZCgpCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdl
YlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKGJvb2wgY29sb3JGaWx0ZXJFbmFi
bGVkID0gZmFsc2UpCiB7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gX3NldENvbG9y
RmlsdGVyRW5hYmxlZDpjb2xvckZpbHRlckVuYWJsZWRdOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA0MDAsIDQwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0p
OwogICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbW3dl
YlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOwogICAgIFdLUHJlZmVyZW5jZXNTZXRE
YXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwogICAgIFdLUHJlZmVy
ZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwpA
QCAtMTc2LDcgKzE4NSw2OCBAQCBURVNUKFBhc3RlUlRGRCwgSW1hZ2VFbGVtZW50VXNlc0Jsb2JV
UkxJbkhUTUwpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJibG9iOiIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJuZXcgVVJMKGltYWdlRWxlbWVudC5zcmMpLnByb3RvY29s
Il0pOwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorI2lmIEVOQUJMRShEQVJLX01PREVf
Q1NTKSAmJiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQorCitURVNUKFBhc3RlUlRGRCwgVHJh
bnNmb3JtQ29sb3JzT2ZEYXJrQ29udGVudCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVX
ZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCh0cnVlKTsKKyAgICBbd2ViVmll
dyBmb3JjZURhcmtNb2RlXTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBh
Z2VOYW1lZDpAInJpY2gtY29sb3ItZmlsdGVyZWQiXTsKKworICAgIFBsYXRmb3JtQ29sb3IgKnRl
eHRDb2xvciA9IFtQbGF0Zm9ybUNvbG9yIGxpZ2h0R3JheUNvbG9yXTsKKyAgICBQbGF0Zm9ybUNv
bG9yICpiYWNrZ3JvdW5kQ29sb3IgPSBbUGxhdGZvcm1Db2xvciBkYXJrR3JheUNvbG9yXTsKKwor
ICAgIGF1dG8gaGVsbG8gPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpAIkhlbGxvIiBhdHRyaWJ1dGVzOkB7IE5TQmFja2dyb3VuZENvbG9yQXR0cmli
dXRlTmFtZSA6IGJhY2tncm91bmRDb2xvciwgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1l
IDogdGV4dENvbG9yIH1dKTsKKyAgICBhdXRvIHdvcmxkID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIgV29ybGQiIGF0dHJpYnV0ZXM6QHsgTlNG
b3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIDogdGV4dENvbG9yIH1dKTsKKyAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSk7
CisgICAgW3N0cmluZyBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmhlbGxvLmdldCgpXTsKKyAgICBb
c3RyaW5nIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6d29ybGQuZ2V0KCldOworCisgICAgd3JpdGVS
VEZUb1Bhc3RlYm9hcmQoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmlu
ZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogCisgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNlbGVjdFJpY2hUZXh0KCkiXTsKKyAgICBbd2Vi
VmlldyBwYXN0ZTpuaWxdOworCisjaWYgVVNFKEFQUEtJVCkKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJpY2gucXVlcnlTZWxlY3Rv
cigncCcpLnN0eWxlLmNvbG9yIl0sIEAicmdiKDEyNiwgMTI2LCAxMjYpIik7CisgICAgRVhQRUNU
X1dLX1NUUkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJyaWNoLnF1
ZXJ5U2VsZWN0b3IoJ3AgPiBzcGFuJykuc3R5bGUuYmFja2dyb3VuZENvbG9yIl0sIEAicmdiKDIz
NSwgMjM1LCAyMzUpIik7CisjZWxzZQorICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVyeVNlbGVjdG9yKCdwJykuc3R5bGUu
Y29sb3IiXSwgQCJyZ2IoMTA2LCAxMDYsIDEwNikiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJpY2gucXVlcnlTZWxlY3Rvcign
cCA+IHNwYW4nKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IiXSwgQCJyZ2IoMjEzLCAyMTMsIDIxMyki
KTsKKyNlbmRpZgorfQorCitURVNUKFBhc3RlUlRGRCwgRG9lc05vdFRyYW5zZm9ybUNvbG9yc09m
TGlnaHRDb250ZW50KQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3Vz
dG9tUGFzdGVib2FyZERhdGFFbmFibGVkKHRydWUpOworICAgIFt3ZWJWaWV3IGZvcmNlRGFya01v
ZGVdOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicmlj
aC1jb2xvci1maWx0ZXJlZCJdOworCisgICAgUGxhdGZvcm1Db2xvciAqdGV4dENvbG9yID0gW1Bs
YXRmb3JtQ29sb3IgZGFya0dyYXlDb2xvcl07CisgICAgUGxhdGZvcm1Db2xvciAqYmFja2dyb3Vu
ZENvbG9yID0gW1BsYXRmb3JtQ29sb3IgbGlnaHRHcmF5Q29sb3JdOworCisgICAgYXV0byBoZWxs
byA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAi
SGVsbG8iIGF0dHJpYnV0ZXM6QHsgTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIDogYmFj
a2dyb3VuZENvbG9yLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgOiB0ZXh0Q29sb3Ig
fV0pOworICAgIGF1dG8gd29ybGQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzpAIiBXb3JsZCIgYXR0cmlidXRlczpAeyBOU0ZvcmVncm91bmRDb2xv
ckF0dHJpYnV0ZU5hbWUgOiB0ZXh0Q29sb3IgfV0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKKyAgICBbc3RyaW5n
IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6aGVsbG8uZ2V0KCldOworICAgIFtzdHJpbmcgYXBwZW5k
QXR0cmlidXRlZFN0cmluZzp3b3JsZC5nZXQoKV07CisKKyAgICB3cml0ZVJURlRvUGFzdGVib2Fy
ZChbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRv
Y3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAic2VsZWN0UmljaFRleHQoKSJdOworICAgIFt3ZWJWaWV3IHBhc3RlOm5p
bF07CisKKyNpZiBVU0UoQVBQS0lUKQorICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVyeVNlbGVjdG9yKCdwJykuc3R5bGUu
Y29sb3IiXSwgQCJyZ2IoNjcsIDY3LCA2NykiKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJpY2gucXVlcnlTZWxlY3RvcigncCA+
IHNwYW4nKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IiXSwgQCJyZ2IoMTU0LCAxNTQsIDE1NCkiKTsK
KyNlbHNlCisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJyaWNoLnF1ZXJ5U2VsZWN0b3IoJ3AnKS5zdHlsZS5jb2xvciJdLCBAInJnYig4
NSwgODUsIDg1KSIpOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAicmljaC5xdWVyeVNlbGVjdG9yKCdwID4gc3BhbicpLnN0eWxlLmJh
Y2tncm91bmRDb2xvciJdLCBAInJnYigxNzAsIDE3MCwgMTcwKSIpOworI2VuZGlmCit9CiAKKyNl
bmRpZiAvLyBFTkFCTEUoREFSS19NT0RFX0NTUykgJiYgSEFWRShPU19EQVJLX01PREVfU1VQUE9S
VCkKIAorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9yaWNoLWNvbG9yLWZpbHRlcmVkLmh0bWwgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3JpY2gtY29sb3ItZmlsdGVyZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMjg2ZWQwODBiYTAzNTNlYzRlOWNjNGMxMWRmMWYxYzFlNzMzYmRiCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9y
aWNoLWNvbG9yLWZpbHRlcmVkLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGhlYWQ+CisgICAgPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCI+CisgICAgPHN0
eWxlPgorICAgIDpyb290IHsKKyAgICAgICAgY29sb3Itc2NoZW1lOiBkYXJrOworICAgICAgICAt
YXBwbGUtY29sb3ItZmlsdGVyOiBhcHBsZS1pbnZlcnQtbGlnaHRuZXNzKCk7CisgICAgfQorICAg
IDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5PgorICAgIDxkaXYgaWQ9InJpY2giIGNvbnRlbnRl
ZGl0YWJsZT5IZWxsbyB3b3JsZDwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgZnVuY3Rpb24gZGVz
ZWxlY3RUZXh0KCkKKyAgICB7CisgICAgICAgIGJsdXIoKTsKKyAgICAgICAgZ2V0U2VsZWN0aW9u
KCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2VsZWN0UmljaFRl
eHQoKQorICAgIHsKKyAgICAgICAgZGVzZWxlY3RUZXh0KCk7CisgICAgICAgIGxldCB0ZXh0ID0g
cmljaC5jaGlsZE5vZGVzWzBdOworICAgICAgICBnZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0
ZW50KHRleHQsIDAsIHRleHQsIHRleHQuZGF0YS5sZW5ndGgpOworICAgIH0KKyAgICA8L3Njcmlw
dD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5k
ZXggZDc0NWQ3ZWE4NjNhN2U5YTUxYTcyYWE5MjhkMTNiNjkyM2QxMjZjYy4uMjRhNWFjZGVmZmZm
YTg1ZDMwY2ZjNGY3Y2VmMTBmZDEyYzVmZWY4NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3LmgKQEAgLTc1LDYgKzc1LDcgQEAKIC0gKHZvaWQpd2FpdEZvck1lc3Nh
Z2U6KE5TU3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpcGVyZm9ybUFmdGVyTG9hZGluZzooZGlz
cGF0Y2hfYmxvY2tfdClhY3Rpb25zOwogLSAodm9pZCl3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZTsKKy0gKHZvaWQpZm9yY2VEYXJrTW9kZTsKIC0gKE5TU3RyaW5nICopc3R5bGVQcm9wZXJ0
eUF0U2VsZWN0aW9uU3RhcnQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lOwogLSAoTlNTdHJpbmcg
KilzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25FbmQ6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lOwog
LSAodm9pZCljb2xsYXBzZVRvU3RhcnQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW0KaW5kZXggYjQyZDM1MmI4NTVmYjhiYWQ4NzZhNGIxOTIxMzJiZjZjYTJiMzY1
Yi4uNjUxYjVmMjlkMTYwODU5ZjU4ZThmNjdlOWFkNTVlOTViZTZiNTI2NSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpAQCAtNDM0LDYgKzQzNCwxNyBAQCAt
ICh2b2lkKXdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorLSAodm9pZClmb3JjZURhcmtNb2RlCit7CisjaWYgSEFW
RShPU19EQVJLX01PREVfU1VQUE9SVCkKKyNpZiBVU0UoQVBQS0lUKQorICAgIFtzZWxmIHNldEFw
cGVhcmFuY2U6W05TQXBwZWFyYW5jZSBhcHBlYXJhbmNlTmFtZWQ6TlNBcHBlYXJhbmNlTmFtZURh
cmtBcXVhXV07CisjZWxzZQorICAgIFtzZWxmIHNldE92ZXJyaWRlVXNlckludGVyZmFjZVN0eWxl
OlVJVXNlckludGVyZmFjZVN0eWxlRGFya107CisjZW5kaWYKKyNlbmRpZgorfQorCiAtIChOU1N0
cmluZyAqKXN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OihOU1N0cmluZyAqKXByb3BlcnR5
TmFtZQogewogICAgIE5TU3RyaW5nICpzY3JpcHQgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImdldENvbXB1dGVkU3R5bGUoZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5zdGFydENv
bnRhaW5lci5wYXJlbnRFbGVtZW50KVsnJUAnXSIsIHByb3BlcnR5TmFtZV07CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWNh
MWFiMGZjMDZkZDY2ZWFlNDhmOThhNzMxZWE4ZmRjZmZlYWUzNi4uYjE3NjY0NzU1MzE5MDg4NmIz
ZTgwMGI0YmZmNWFmMWZiNmI5YTNhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTA0
ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBNYWlsIGFw
cGVhcnMgdG8gYmUgZG91YmxlIGludmVydGluZyBjb2RlIGNvcGllZCBmcm9tIE5vdGVzLCBYY29k
ZSwgb3IgVGVybWluYWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDEzNjgKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNDA1Mjk4NjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmls
dGVyZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy0xMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDE5LTA4LTI5ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAog
ICAgICAgICBDb3B5aW5nIGFuZCBwYXN0aW5nIHR3byBwYXJhZ3JhcGhzIHdpdGggYSBuZXdsaW5l
IGJldHdlZW4gdGhlbSByZXN1bHRzIGluIHN0cmF5IHBhcmFncmFwaCB3aXRoIG5ld2xpbmUgaW5z
aWRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTU5YTc0ZWZiY2EyMDVkYzAwOTA4OGM2NzdmMWZj
N2QxYTJkOTMzNy4uOWYxNDM0YzBiMDEzZmJmM2NkNjYzN2QzODc5NTM1Njk1ODYyNDA2NCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCkBAIC04NywxMCArODcsMTEgQEAgZmFzdC9mb3Jtcy9zZWFyY2gvc2Vh
cmNoLXJlc3VsdHMtaGlkZGVuLWNyYXNoLmh0bWwgWyBTa2lwIF0KICMgVGhlc2UgdGVzdHMgZG9u
J3QgaGF2ZSB0byBiZSBwbGF0Zm9ybS1zcGVjaWZpYywgYnV0IHRoZXkgYXJlIG9ubHkgaW1wbGVt
ZW50ZWQgb24gTWFjIG5vdy4KIGZhc3QvaW1hZ2VzL2Vwcy1hcy1pbWFnZS5odG1sIFsgU2tpcCBd
CiAKLSMgT25seSBhcHBsaWNhYmxlIG9uIG1hY09TCisjIE9ubHkgYXBwbGljYWJsZSBvbiBwbGF0
Zm9ybXMgd2l0aCBkYXJrIG1vZGUgc3VwcG9ydAogY3NzLWRhcmstbW9kZSBbIFNraXAgXQogZmFz
dC9jc3MvYXBwbGUtc3lzdGVtLWNvbnRyb2wtY29sb3JzLmh0bWwgWyBTa2lwIF0KIGluc3BlY3Rv
ci9jc3MvZm9yY2UtcGFnZS1hcHBlYXJhbmNlLmh0bWwgWyBTa2lwIF0KK2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQuaHRtbCBbIFNraXAgXQogCiAjIE9u
bHkgTWFjIHN1cHBvcnRzIGZvcmNlIHRlc3RzLgogZmFzdC9ldmVudHMvY2FuY2VsbGVkLWZvcmNl
LWNsaWNrLWxpbmstbmF2aWdhdGlvbi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1v
ZGUtY29sb3ItZmlsdGVyZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YzczYWUwNzQyODY2
OGY1ODQ4NmQzNmY4NmFmN2VmOTBhZmU4ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDI3IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgcGFzdGluZyBp
bnRvIGEgY29sb3IgZmlsdGVyZWQgZGFyayBtb2RlIGRvY3VtZW50IGluc2VydHMgbGlnaHQgbW9k
ZSB0cmFuc2Zvcm1lZCBjb250ZW50LgorCitQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPHNwYW4gc3R5
bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGJhY2tn
cm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgcGFz
dGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigyMSwgMjEsIDIxKTsg
Y29sb3I6IHJnYigyMSwgMjEsIDIxKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAy
NTUpOyI+SGVsbG88L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJj
YXJldC1jb2xvcjogcmdiKDIxLCAyMSwgMjEpOyBjb2xvcjogcmdiKDIxLCAyMSwgMjEpOyBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMjEzLCAyMTMsIDIxMyk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIHBh
c3RlZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTA2LCAxMDYsIDEwNik7Ij5I
ZWxsbzwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxMjcsIDEyOCwgMTI3KTsiPkhlbGxv
IDI8L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xv
cjogcmdiKDEyNywgMTI4LCAxMjcpOyBjb2xvcjogcmdiKDEyNywgMTI4LCAxMjcpOyI+SGVsbG88
L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjog
cmdiKDE3MCwgMTcwLCAxNzApOyBjb2xvcjogcmdiKDE3MCwgMTcwLCAxNzApOyI+SGVsbG88L3Nw
YW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdi
KDE5MSwgMTkxLCAxOTEpOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+SGVsbG88L3NwYW4+
JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxsaT5JdGVtIDE8L2xpPjxsaT48c3BhbiBzdHlsZT0i
Y29sb3I6IHJnYigwLCAwLCAwKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUp
OyI+SGVsbG88L3NwYW4+PC9saT48bGk+SXRlbSAyPC9saT4nCitQQVNTIHBhc3RlZE1hcmt1cCBp
cyAnPGxpPkl0ZW0gMTwvbGk+PGxpIHN0eWxlPSJjb2xvcjogcmdiKDIxLCAyMSwgMjEpOyBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMjEzLCAyMTMsIDIxMyk7Ij5IZWxsbyAxPC9saT48bGk+SGVsbG8g
MjwvbGk+PGxpPkl0ZW0gMjwvbGk+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxsaT5JdGVtIDE8
L2xpPjxsaT5IZWxsbyAxPC9saT48bGkgc3R5bGU9ImNvbG9yOiByZ2IoMTI3LCAxMjgsIDEyNyk7
Ij5IZWxsbyAyPC9saT48bGk+SXRlbSAyPC9saT4nCitQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPHNw
YW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMTAxLCAxMDEsIDEwMSk7IGNvbG9yOiByZ2IoMTAx
LCAxMDEsIDEwMSk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPHNwYW4g
c3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoOTAsIDkwLCA5MCk7IGNvbG9yOiByZ2IoOTAsIDkwLCA5
MCk7Ij5IZWxsbzwvc3Bhbj4nCitQQVNTIHBhc3RlZE1hcmt1cCBpcyAnPHNwYW4gc3R5bGU9ImNv
bG9yOiByZ2IoODUsIDg1LCA4NSk7Ij5IZWxsbzwvc3Bhbj48c3BhbiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogYmxhY2s7Ij5IZWxsbyAyPC9zcGFuPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8
c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYig2OCwgNjgsIDY4KTsgY29sb3I6IHJnYig2OCwg
NjgsIDY4KTsiPkhlbGxvPC9zcGFuPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHls
ZT0iY2FyZXQtY29sb3I6IHJnYig2OCwgNjgsIDY4KTsgY29sb3I6IHJnYig2OCwgNjgsIDY4KTsi
PkhlbGxvPC9zcGFuPicKK1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY2FyZXQt
Y29sb3I6IHJnYigwLCAwLCAwKTsgY29sb3I6IHJnYigwLCAwLCAwKTsiPkhlbGxvPC9zcGFuPicK
K1BBU1MgcGFzdGVkTWFya3VwIGlzICc8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAw
LCAwKTsgY29sb3I6IHJnYigwLCAwLCAwKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1
LCAyNTUpOyI+SGVsbG88L3NwYW4+JworUEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxzcGFuIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5IZWxsbzwvc3Bhbj4nCitQ
QVNTIHBhc3RlZE1hcmt1cCBpcyAnPGxpPkl0ZW0gMTwvbGk+PGxpPjxzcGFuIHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOiB3aGl0ZTsiPkhlbGxvPC9zcGFuPjwvbGk+PGxpPkl0ZW0gMjwvbGk+Jwor
UEFTUyBwYXN0ZWRNYXJrdXAgaXMgJzxsaT5JdGVtIDE8L2xpPjxsaSBzdHlsZT0iY29sb3I6IHJn
Yig4NSwgODUsIDg1KTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOyI+SGVs
bG8gMTwvbGk+PGxpPkhlbGxvIDI8L2xpPjxsaT5JdGVtIDI8L2xpPicKK1BBU1MgcGFzdGVkTWFy
a3VwIGlzICc8bGk+SXRlbSAxPC9saT48bGk+SGVsbG8gMTwvbGk+PGxpIHN0eWxlPSJjb2xvcjog
YmxhY2s7Ij5IZWxsbyAyPC9saT48bGk+SXRlbSAyPC9saT4nCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0
ZXJlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmYWE4Yzc1OWQ1Y2Q2MzA5NDcwM2FjM2NjNzM4NWIyZDAy
MmI1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtZGFyay1tb2RlLWNvbG9yLWZpbHRlcmVkLmh0bWwKQEAgLTAsMCArMSw5NSBAQAorPCFE
T0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVDb2xvckZpbHRlcj10
cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgIDpyb290IHsKKyAgICAgICAgICAg
IGNvbG9yLXNjaGVtZTogZGFyazsKKyAgICAgICAgICAgIC1hcHBsZS1jb2xvci1maWx0ZXI6IGFw
cGxlLWludmVydC1saWdodG5lc3MoKTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdCBjaGVja3MgdGhhdCBw
YXN0aW5nIGludG8gYSBjb2xvciBmaWx0ZXJlZCBkYXJrIG1vZGUgZG9jdW1lbnQgaW5zZXJ0cyBs
aWdodCBtb2RlIHRyYW5zZm9ybWVkIGNvbnRlbnQuPC9wPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCisgICAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVzZURhcmtBcHBlYXJhbmNlKHRydWUpOworCisgICAg
bGV0IHNlbCA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpOworICAgIGxldCByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgicm9vdCIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
cm9vdCk7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVFZGl0YWJsZSh0YWdOYW1lLCBtYXJrdXApIHsK
KyAgICAgICAgbGV0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpOworICAg
ICAgICBub2RlLmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7CisgICAgICAgIGlmIChtYXJrdXApCisg
ICAgICAgICAgICBub2RlLmlubmVySFRNTCA9IG1hcmt1cDsKKyAgICAgICAgcmV0dXJuIG5vZGU7
CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdENvcHlQYXN0ZShvcmlnaW5hbE1hcmt1cCwgZXhw
ZWN0ZWQsIGFzTGlzdCA9IGZhbHNlKSB7CisgICAgICAgIGxldCB0YWdOYW1lID0gYXNMaXN0ID8g
InVsIiA6ICJkaXYiOworICAgICAgICBsZXQgY29weU5vZGUgPSBjcmVhdGVFZGl0YWJsZSh0YWdO
YW1lLCBvcmlnaW5hbE1hcmt1cCk7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoY29weU5vZGUp
OworICAgICAgICBjb3B5Tm9kZS5mb2N1cygpOworCisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJTZWxlY3RBbGwiLCBmYWxzZSk7CisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJD
b3B5IiwgZmFsc2UpOworCisgICAgICAgIGNvcHlOb2RlLnJlbW92ZSgpOworCisgICAgICAgIGxl
dCBwYXN0ZU5vZGUgPSBjcmVhdGVFZGl0YWJsZSh0YWdOYW1lKTsKKyAgICAgICAgcm9vdC5hcHBl
bmRDaGlsZChwYXN0ZU5vZGUpOworCisgICAgICAgIGlmIChhc0xpc3QpIHsKKyAgICAgICAgICAg
IHBhc3RlTm9kZS5pbm5lckhUTUwgPSAiPGxpPkl0ZW0gMTwvbGk+PGxpPkl0ZW0gMjwvbGk+IjsK
KyAgICAgICAgICAgIHBhc3RlTm9kZS5mb2N1cygpOworICAgICAgICAgICAgbW92ZVNlbGVjdGlv
bkZvcndhcmRCeUxpbmVDb21tYW5kKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGFz
dGVOb2RlLmZvY3VzKCk7CisKKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3RlIiwg
ZmFsc2UpOworCisgICAgICAgIHBhc3RlZE1hcmt1cCA9IHBhc3RlTm9kZS5pbm5lckhUTUw7CisK
KyAgICAgICAgc2hvdWxkQmUoInBhc3RlZE1hcmt1cCIsICInIiArIGV4cGVjdGVkICsgIiciKTsK
KyAgICB9CisKKyAgICAvLyBUcmFuc2Zvcm1lZCBvbiBwYXN0ZQorICAgIHRlc3RDb3B5UGFzdGUo
IjxzcGFuIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiBibGFja1wiPkhl
bGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGNv
bG9yOiByZ2IoMCwgMCwgMCk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTtc
Ij5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1cImNvbG9y
OiByZ2IoMjM4LCAyMzgsIDIzOCk7IGJhY2tncm91bmQtY29sb3I6IHJnYig1MSwgNTEsIDUxKVwi
PkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoMjEsIDIxLCAy
MSk7IGNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1
NSwgMjU1KTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHls
ZT1cImNvbG9yOiByZ2IoMjM4LCAyMzgsIDIzOCk7IGJhY2tncm91bmQtY29sb3I6IHJnYig4NSwg
ODUsIDg1KVwiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2Io
MjEsIDIxLCAyMSk7IGNvbG9yOiByZ2IoMjEsIDIxLCAyMSk7IGJhY2tncm91bmQtY29sb3I6IHJn
YigyMTMsIDIxMywgMjEzKTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8
c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTcwLCAxNzAsIDE3MClcIj5IZWxsbzwvc3Bhbj48c3Bh
biBzdHlsZT1cImNvbG9yOiByZ2IoMTUzLCAxNTMsIDE1MylcIj5IZWxsbyAyPC9zcGFuPiIsICI8
c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTA2LCAxMDYsIDEwNik7XCI+SGVsbG88L3NwYW4+PHNw
YW4gc3R5bGU9XCJjb2xvcjogcmdiKDEyNywgMTI4LCAxMjcpO1wiPkhlbGxvIDI8L3NwYW4+Iik7
CisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDE1MywgMTUzLCAx
NTMpXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYigxMjcs
IDEyOCwgMTI3KTsgY29sb3I6IHJnYigxMjcsIDEyOCwgMTI3KTtcIj5IZWxsbzwvc3Bhbj4iKTsK
KyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoMTE5LCAxMTksIDEx
OSlcIj5IZWxsbzwvc3Bhbj4iLCAiPHNwYW4gc3R5bGU9XCJjYXJldC1jb2xvcjogcmdiKDE3MCwg
MTcwLCAxNzApOyBjb2xvcjogcmdiKDE3MCwgMTcwLCAxNzApO1wiPkhlbGxvPC9zcGFuPiIpOwor
ICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigxMDIsIDEwMiwgMTAy
KVwiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoMTkxLCAx
OTEsIDE5MSk7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7XCI+SGVsbG88L3NwYW4+Iik7CisK
KyAgICAvLyBUcmFuc2Zvcm1lZCBsaXN0IGl0ZW1zIG9uIHBhc3RlCisgICAgdGVzdENvcHlQYXN0
ZSgiPGxpPjxzcGFuIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiBibGFj
a1wiPkhlbGxvPC9zcGFuPjwvbGk+IiwgIjxsaT5JdGVtIDE8L2xpPjxsaT48c3BhbiBzdHlsZT1c
ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1
KTtcIj5IZWxsbzwvc3Bhbj48L2xpPjxsaT5JdGVtIDI8L2xpPiIsIHRydWUpOworICAgIHRlc3RD
b3B5UGFzdGUoIjxsaSBzdHlsZT1cImNvbG9yOiByZ2IoMjM4LCAyMzgsIDIzOCk7IGJhY2tncm91
bmQtY29sb3I6IHJnYig4NSwgODUsIDg1KVwiPkhlbGxvIDE8L2xpPjxsaT5IZWxsbyAyPC9saT4i
LCAiPGxpPkl0ZW0gMTwvbGk+PGxpIHN0eWxlPVwiY29sb3I6IHJnYigyMSwgMjEsIDIxKTsgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDIxMywgMjEzLCAyMTMpO1wiPkhlbGxvIDE8L2xpPjxsaT5IZWxs
byAyPC9saT48bGk+SXRlbSAyPC9saT4iLCB0cnVlKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8bGk+
SGVsbG8gMTwvbGk+PGxpIHN0eWxlPVwiY29sb3I6IHJnYigxNTMsIDE1MywgMTUzKVwiPkhlbGxv
IDI8L2xpPiIsICI8bGk+SXRlbSAxPC9saT48bGk+SGVsbG8gMTwvbGk+PGxpIHN0eWxlPVwiY29s
b3I6IHJnYigxMjcsIDEyOCwgMTI3KTtcIj5IZWxsbyAyPC9saT48bGk+SXRlbSAyPC9saT4iLCB0
cnVlKTsKKworICAgIC8vIE5vdCB0cmFuc2Zvcm1lZCBvbiBwYXN0ZQorICAgIHRlc3RDb3B5UGFz
dGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYigxMDEsIDEwMSwgMTAxKVwiPkhlbGxvPC9zcGFu
PiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoMTAxLCAxMDEsIDEwMSk7IGNvbG9y
OiByZ2IoMTAxLCAxMDEsIDEwMSk7XCI+SGVsbG88L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0
ZSgiPHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDkwLCA5MCwgOTApXCI+SGVsbG88L3NwYW4+Iiwg
IjxzcGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYig5MCwgOTAsIDkwKTsgY29sb3I6IHJnYig5
MCwgOTAsIDkwKTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8c3BhbiBz
dHlsZT1cImNvbG9yOiByZ2IoODUsIDg1LCA4NSlcIj5IZWxsbzwvc3Bhbj48c3BhbiBzdHlsZT1c
ImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2tcIj5IZWxsbyAyPC9zcGFuPiIs
ICI8c3BhbiBzdHlsZT1cImNvbG9yOiByZ2IoODUsIDg1LCA4NSk7XCI+SGVsbG88L3NwYW4+PHNw
YW4gc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcIj5IZWxsbyAyPC9zcGFuPiIpOwor
ICAgIHRlc3RDb3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHJnYig2OCwgNjgsIDY4KVwi
PkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImNhcmV0LWNvbG9yOiByZ2IoNjgsIDY4LCA2
OCk7IGNvbG9yOiByZ2IoNjgsIDY4LCA2OCk7XCI+SGVsbG88L3NwYW4+Iik7CisgICAgdGVzdENv
cHlQYXN0ZSgiPHNwYW4gc3R5bGU9XCJjb2xvcjogcmdiKDY4LCA2OCwgNjgpXCI+SGVsbG88L3Nw
YW4+IiwgIjxzcGFuIHN0eWxlPVwiY2FyZXQtY29sb3I6IHJnYig2OCwgNjgsIDY4KTsgY29sb3I6
IHJnYig2OCwgNjgsIDY4KTtcIj5IZWxsbzwvc3Bhbj4iKTsKKyAgICB0ZXN0Q29weVBhc3RlKCI8
c3BhbiBzdHlsZT1cImNvbG9yOiBibGFja1wiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1c
ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGNvbG9yOiByZ2IoMCwgMCwgMCk7XCI+SGVsbG88
L3NwYW4+Iik7CisgICAgdGVzdENvcHlQYXN0ZSgiPHNwYW4gc3R5bGU9XCJjb2xvcjogYmxhY2s7
IGJhY2tncm91bmQtY29sb3I6IHdoaXRlXCI+SGVsbG88L3NwYW4+IiwgIjxzcGFuIHN0eWxlPVwi
Y2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgY29sb3I6IHJnYigwLCAwLCAwKTsgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpO1wiPkhlbGxvPC9zcGFuPiIpOworICAgIHRlc3RD
b3B5UGFzdGUoIjxzcGFuIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiB3
aGl0ZVwiPkhlbGxvPC9zcGFuPiIsICI8c3BhbiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHJn
YigyNTUsIDI1NSwgMjU1KTtcIj5IZWxsbzwvc3Bhbj4iKTsKKworICAgIC8vIExpc3QgaXRlbXMg
bm90IHRyYW5zZm9ybWVkIG9uIHBhc3RlCisgICAgdGVzdENvcHlQYXN0ZSgiPGxpPjxzcGFuIHN0
eWxlPVwiY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZVwiPkhlbGxvPC9zcGFu
PjwvbGk+IiwgIjxsaT5JdGVtIDE8L2xpPjxsaT48c3BhbiBzdHlsZT1cImJhY2tncm91bmQtY29s
b3I6IHdoaXRlO1wiPkhlbGxvPC9zcGFuPjwvbGk+PGxpPkl0ZW0gMjwvbGk+IiwgdHJ1ZSk7Cisg
ICAgdGVzdENvcHlQYXN0ZSgiPGxpIHN0eWxlPVwiY29sb3I6IHJnYig4NSwgODUsIDg1KTsgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpXCI+SGVsbG8gMTwvbGk+PGxpPkhlbGxv
IDI8L2xpPiIsICI8bGk+SXRlbSAxPC9saT48bGkgc3R5bGU9XCJjb2xvcjogcmdiKDg1LCA4NSwg
ODUpOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM1LCAyMzUsIDIzNSk7XCI+SGVsbG8gMTwvbGk+
PGxpPkhlbGxvIDI8L2xpPjxsaT5JdGVtIDI8L2xpPiIsIHRydWUpOworICAgIHRlc3RDb3B5UGFz
dGUoIjxsaT5IZWxsbyAxPC9saT48bGkgc3R5bGU9XCJjb2xvcjogYmxhY2tcIj5IZWxsbyAyPC9s
aT4iLCAiPGxpPkl0ZW0gMTwvbGk+PGxpPkhlbGxvIDE8L2xpPjxsaSBzdHlsZT1cImNvbG9yOiBi
bGFjaztcIj5IZWxsbyAyPC9saT48bGk+SXRlbSAyPC9saT4iLCB0cnVlKTsKKworICAgIHJvb3Qu
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICA8L3NjcmlwdD4KKworICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xMi9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTEyL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggMWY4NTQ4ZTliMjIyMmMwZTg1ZmZmMDg2MjdhNzEwNWY5YWVmOTc5NC4uYzliZTgyN2M5NDY5
NjE5OTg1MjYxN2ZmZTQ3MGRhMzZjNWYzNWZiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLTEyL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLTEyL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEsNSArMSw2IEBACiBjc3MtZGFyay1tb2RlIFsg
U2tpcCBdCiBjc3MtZGFyay1tb2RlL29sZGVyLXN5c3RlbXMgWyBQYXNzIF0KK2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3ItZmlsdGVyZWQuaHRtbCBbIFNraXAgXQogCiAj
IDxyZGFyOi8vcHJvYmxlbS80ODc4MTA5OD4gSEVJRiBhbmQgSEVJQ1MgaW1hZ2VzIGFyZSBzdXBw
b3J0ZWQgb25seSBvbiBpT1MgMTMKIGZhc3QvaW1hZ2VzL2FuaW1hdGVkLWhlaWNzLWRyYXcuaHRt
bCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA5OGUwNmUxNTI3OTE2YTc0Njg5NDBiNDdkMGVkOTUwMmY3NGZkOTY3Li4xNDcyMDFmZDIxNjJi
MmQxMTZlNGNiNWQ4ZmQwYTk1ZTlkZGVlZTJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMzI0Miw2ICszMjQyLDcgQEAgZWRpdGluZy9zZWxlY3Rpb24v
aW9zL3NlbGVjdC1hbGwtbm9uLWVkaXRhYmxlLXRleHQtdXNpbmcta2V5Ym9hcmQuaHRtbCBbIFNr
aXAgXQogIyBEYXJrIE1vZGUgaXMgaU9TIDEzIGFuZCBsYXRlci4KIGNzcy1kYXJrLW1vZGUgWyBQ
YXNzIF0KIGNzcy1kYXJrLW1vZGUvb2xkZXItc3lzdGVtcyBbIFNraXAgXQorZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLWRhcmstbW9kZS1jb2xvci1maWx0ZXJlZC5odG1sIFsgUGFzcyBdCiAKIGZh
c3QvZm9ybXMvYXV0by1maWxsLWJ1dHRvbi9jYXBzLWxvY2staW5kaWNhdG9yLXNob3VsZC1iZS12
aXNpYmxlLWFmdGVyLWhpZGluZy1hdXRvLWZpbGwtc3Ryb25nLXBhc3N3b3JkLWJ1dHRvbi5odG1s
IFsgUGFzcyBdCiBmYXN0L2Zvcm1zL2F1dG8tZmlsbC1idXR0b24vY2Fwcy1sb2NrLWluZGljYXRv
ci1zaG91bGQtbm90LWJlLXZpc2libGUtd2hlbi1hdXRvLWZpbGwtc3Ryb25nLXBhc3N3b3JkLWJ1
dHRvbi1pcy12aXNpYmxlLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNzY1M2MwMzMxZmI4ZGM1NWJiM2RiMGI3NDA4NmRhMGY2OWFi
ZGIyMy4uY2JiYzVhNTQ5ZTA5ZTViMmFmZGEyNmI5ZWMwODI3Njk1YTFlMzNiMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3NDksNiArMTc0OSw3IEBA
IHdlYmtpdC5vcmcvYi8xODczOTMgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8yZGNv
bnRleHQvaW1hZ2ViaXRtYXAvY3JlYXRlCiBbIE1vamF2ZSsgXSBjc3MtZGFyay1tb2RlIFsgUGFz
cyBdCiBbIE1vamF2ZSsgXSBjc3MtZGFyay1tb2RlL29sZGVyLXN5c3RlbXMgWyBTa2lwIF0KIFsg
TW9qYXZlKyBdIGluc3BlY3Rvci9jc3MvZm9yY2UtcGFnZS1hcHBlYXJhbmNlLmh0bWwgWyBQYXNz
IF0KK1sgTW9qYXZlKyBdIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1kYXJrLW1vZGUtY29sb3It
ZmlsdGVyZWQuaHRtbCBbIFBhc3MgXQogCiAjIFRlc3QgRGFyayBNb2RlIENTUyBzdXBwb3J0IGZv
ciBsaWdodCBtb2RlIG9uIG9sZGVyIHN5c3RlbXMuCiBbIFNpZXJyYSBIaWdoU2llcnJhIF0gY3Nz
LWRhcmstbW9kZS9vbGRlci1zeXN0ZW1zIFsgUGFzcyBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>