<?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>261056</bug_id>
          
          <creation_ts>2023-09-01 18:41:55 -0700</creation_ts>
          <short_desc>AX: Expose accessibility attributes for inline text predictions</short_desc>
          <delta_ts>2023-09-14 09:29:02 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Hoffman">jhoffman23</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mifenton</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1975123</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-01 18:41:55 -0700</bug_when>
    <thetext>Text predictions are not exposed in attributed string to AX clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975124</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-09-01 18:42:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/114851958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975125</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-01 18:42:37 -0700</bug_when>
    <thetext>rdar://114844079</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975128</commentid>
    <comment_count>3</comment_count>
      <attachid>467522</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-01 19:17:13 -0700</bug_when>
    <thetext>Created attachment 467522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975130</commentid>
    <comment_count>4</comment_count>
      <attachid>467522</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-09-01 19:50:00 -0700</bug_when>
    <thetext>Comment on attachment 467522
Patch

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

&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:218
&gt; +    unsigned lastPresentedCompleteWordLength = [lastPresentedCompleteWord.first length];

Since lastPresentedCompleteWord and everything in it are C++ types, I think it may be better style to avoid bracket calling syntax.

&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:225
&gt; +    if (!lastPresentedCompleteWord.first.isEmpty() &amp;&amp; lastPresentedCompleteWordPosition + lastPresentedCompleteWordLength &lt;= [attrString length]) {
&gt; +        NSRange completeWordRange = NSMakeRange(lastPresentedCompleteWordPosition, lastPresentedCompleteWordLength);
&gt; +        if ([[attrString.string substringWithRange:completeWordRange] isEqualToString:lastPresentedCompleteWord.first])
&gt; +            [attrString addAttribute:UIAccessibilityAcceptedInlineTextCompletion value:lastPresentedCompleteWord.first range:completeWordRange];
&gt; +    }

Will having a nil attrString cause any logic issues in this block? If so, maybe we can add a bail condition above.

&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:244
&gt; +#endif

#endifs that are reasonably large (like this one) should have a comment indicating the branch they&apos;re closing. So should be this:

#endif // HAVE(INLINE_PREDICTIONS)

&gt; Source/WebCore/editing/Editor.cpp:2344
&gt; +            // Assistive technologies need to know the position &amp; text of the last accepted completion to expose it properly.

I think WebKit comment style prefers spelling out &quot;and&quot; vs. using &amp;. Also, this comment could be re-worded a bit, since it implies assistive technologies are the ones exposing this information, but really it&apos;s WebKit.

&gt; Source/WebCore/editing/Editor.cpp:2345
&gt; +            if (AXObjectCache::accessibilityEnabled() &amp;&amp; state == AXObjectCache::CompositionState::Ended &amp;&amp; !m_lastPresentedTextPrediction.first.isEmpty()) {

I don&apos;t think we need to check AXObjectCache::accessibilityEnabled() here. If we&apos;ve got this far, that means Document::existingAXObjectCache() returned non-null, which must mean that accessibility is enabled.

&gt; Source/WebCore/editing/Editor.cpp:2347
&gt; +                size_t wordStart = previousCompositionNodeText.contains(&quot; &quot;_s) ? previousCompositionNodeText.reverseFind(&quot; &quot;_s) + 1 : 0;

Do we need to check for other types of whitespace like line breaks or tabs? Or is it OK to only check for spaces?

&gt; Source/WebCore/editing/Editor.cpp:2351
&gt; +                Vector&lt;String&gt; strings = { previousCompositionNodeText, m_lastPresentedTextPrediction.first };
&gt; +                String completePredictedWord = makeStringByJoining(strings, &quot;&quot;_s);

Is the purpose of this makeStringByJoining and Vector just to combine these two strings? If so, I think you can do it much more simply like this:

String completePredictedWord = makeString(previousCompositionNodeText, m_lastPresentedTextPrediction.first);

&gt; Source/WebCore/editing/Editor.cpp:2354
&gt; +                // Reset last presented prrediction since a candidate was accepted.

Typo on prrediction here.

&gt; Source/WebCore/editing/Editor.cpp:2361
&gt; +            m_lastPresentedTextPredictionComplete = std::make_pair(&quot;&quot;_s, 0);

If you make m_lastPresentedTextPredictionComplete a struct, you could have a reset() method that documents the intention better here and above.

&gt; Source/WebCore/editing/Editor.h:603
&gt; +    std::pair&lt;String, unsigned&gt; lastPresentedTextPrediction() const { return m_lastPresentedTextPrediction; }
&gt; +    std::pair&lt;String, unsigned&gt; lastPresentedTextPredictionComplete() const { return m_lastPresentedTextPredictionComplete; }

It might be better to use a struct rather than a pair since you can name the members of a struct. Based on the name of the variable, it&apos;s reasonable to guess that the String part is the text prediction. But it&apos;s not as clear what the unsigned refers to. You can declare the struct right above these two function declarations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975141</commentid>
    <comment_count>5</comment_count>
      <attachid>467522</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-09-01 22:14:27 -0700</bug_when>
    <thetext>Comment on attachment 467522
Patch

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

&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:217
&gt; +    std::pair&lt;String, unsigned&gt; lastPresentedCompleteWord = editor.lastPresentedTextPredictionComplete();

auto lastPresentedCompleteWord

&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:227
&gt; +    if (&amp;node != editor.compositionNode())

we should check this at the top so we don&apos;t do this other work first

&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:230
&gt; +    std::pair&lt;String, unsigned&gt; lastPresentedTextPrediction = editor.lastPresentedTextPrediction();

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975729</commentid>
    <comment_count>6</comment_count>
      <attachid>467522</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-05 22:48:41 -0700</bug_when>
    <thetext>Comment on attachment 467522
Patch

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

&gt;&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:227
&gt;&gt; +    if (&amp;node != editor.compositionNode())
&gt; 
&gt; we should check this at the top so we don&apos;t do this other work first

We need to do this check after getting the complete word because the composition node that stores the last word will not be equal to the current node (since the prediction is complete).

&gt;&gt; Source/WebCore/editing/Editor.h:603
&gt;&gt; +    std::pair&lt;String, unsigned&gt; lastPresentedTextPredictionComplete() const { return m_lastPresentedTextPredictionComplete; }
&gt; 
&gt; It might be better to use a struct rather than a pair since you can name the members of a struct. Based on the name of the variable, it&apos;s reasonable to guess that the String part is the text prediction. But it&apos;s not as clear what the unsigned refers to. You can declare the struct right above these two function declarations.

I like the idea of a struct—will switch to that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975735</commentid>
    <comment_count>7</comment_count>
      <attachid>467565</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-05 23:32:16 -0700</bug_when>
    <thetext>Created attachment 467565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975739</commentid>
    <comment_count>8</comment_count>
      <attachid>467565</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-09-06 00:26:01 -0700</bug_when>
    <thetext>Comment on attachment 467565
Patch

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

Thanks for getting a test working!

&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:212
&gt; +static void attributedStringSetCompositionAttributes(NSMutableAttributedString *attrString, Node&amp; node)

I know we use the attrString abbreviation everywhere, but since this is new code let&apos;s follow the style guide and spell it out as attributedString.

&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:231
&gt; +    if (!lastPresentedCompleteWord.text.isEmpty() &amp;&amp; lastPresentedCompleteWordPosition + lastPresentedCompleteWordLength &lt;= [attrString length]) {
&gt; +        NSRange completeWordRange = NSMakeRange(lastPresentedCompleteWordPosition, lastPresentedCompleteWordLength);
&gt; +        if ([[attrString.string substringWithRange:completeWordRange] isEqualToString:lastPresentedCompleteWord.text])
&gt; +            [attrString addAttribute:UIAccessibilityAcceptedInlineTextCompletion value:lastPresentedCompleteWord.text range:completeWordRange];
&gt; +    }
&gt; +
&gt; +    if (&amp;node != editor.compositionNode())
&gt; +        return;

Would it make sense to move this early-return check before doing the work on this block (maybe with the attributedString nil check)? Seems like the result isn&apos;t used if &amp;node != editor.compositionNode().

&gt; Source/WebCore/editing/Editor.cpp:2348
&gt; +                for (size_t pos = previousCompositionNodeText.length() - 1; pos &gt; 0; pos--) {

This should probably be position instead of pos.

Also:
size_t pos = previousCompositionNodeText.length() - 1

if previousCompositionNodeText.length() is zero, subtracting one from it (an unsigned value) will wrap to the max unsigned value, causing pos to be very big, in turn causing an out-of-bounds access on previousCompositionNodeText[pos].

Is it guaranteed that this length will not be zero? Or can we make this safer somehow?

&gt; Source/WebCore/editing/Editor.h:602
&gt; +    struct InlineTextPrediction {

Is it OK to just call this TextPrediction? Inline feels unnecessarily specific, but you know this code better, so feel free to leave it if you feel it makes sense.

&gt; Source/WebCore/editing/Editor.h:604
&gt; +        String text;
&gt; +        size_t location;

Let&apos;s default initialize this size_t to zero just to be safe. We don&apos;t need to default initialize WTFStrings.

size_t location { 0 };

&gt; Source/WebCore/editing/Editor.h:605
&gt; +        void reset() { text = &quot;&quot;_s; location = 0; }

WebKit coding style (https://webkit.org/code-style-guidelines/) recommends one statement per-line. So maybe something like this:

void reset() {
    text = &quot;&quot;_s;
    location = 0;
}

&gt; LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string.html:2
&gt; +

Extra newline here I think.

&gt; LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string.html:9
&gt; +&lt;body id=&quot;body&quot;&gt;

Is this id=&quot;body&quot; necessary?

&gt; LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string.html:11
&gt; +
&gt; +

One extra newline here I think.

&gt; LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string.html:20
&gt; +    var obj = accessibilityController.focusedElement;
&gt; +    obj.insertText(&quot;Good mo&quot;)

Calling this `input` (or something else) instead of `obj` might read better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975811</commentid>
    <comment_count>9</comment_count>
      <attachid>467565</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-06 09:08:36 -0700</bug_when>
    <thetext>Comment on attachment 467565
Patch

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

&gt;&gt; Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm:231
&gt;&gt; +        return;
&gt; 
&gt; Would it make sense to move this early-return check before doing the work on this block (maybe with the attributedString nil check)? Seems like the result isn&apos;t used if &amp;node != editor.compositionNode().

When we are getting a completed word, the previous composition will have ended, so the node we are looking at will not be equal to the compositionNode of the editor. We need them to be equal only when parsing presented (and incomplete) completions.

&gt;&gt; Source/WebCore/editing/Editor.cpp:2348
&gt;&gt; +                for (size_t pos = previousCompositionNodeText.length() - 1; pos &gt; 0; pos--) {
&gt; 
&gt; This should probably be position instead of pos.
&gt; 
&gt; Also:
&gt; size_t pos = previousCompositionNodeText.length() - 1
&gt; 
&gt; if previousCompositionNodeText.length() is zero, subtracting one from it (an unsigned value) will wrap to the max unsigned value, causing pos to be very big, in turn causing an out-of-bounds access on previousCompositionNodeText[pos].
&gt; 
&gt; Is it guaranteed that this length will not be zero? Or can we make this safer somehow?

I can guard against the length of that text earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975842</commentid>
    <comment_count>10</comment_count>
      <attachid>467570</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-06 10:24:20 -0700</bug_when>
    <thetext>Created attachment 467570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975864</commentid>
    <comment_count>11</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-09-06 12:04:42 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #10)
&gt; Created attachment 467570 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm
+++ b/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm

+static void attributedStringSetCompositionAttributes(NSMutableAttributedString *attributedString, Node&amp; node)

Does this need to be different from the same function in AccessibilityObjectMac.mm? Or can we have a common COCOA function?

+    if (&amp;node != editor.compositionNode())
+        return;


Seems like this check should be earlier in the function, same as in the MAC version.

--- a/Source/WebCore/editing/Editor.cpp
+++ b/Source/WebCore/editing/Editor.cpp

             cache-&gt;onTextCompositionChange(*previousCompositionNode, state, true);
+
+            // WebKit needs to store inline-predicted words to expose their position and text values to assistive technologies.
+            if (state == AXObjectCache::CompositionState::Ended &amp;&amp; !m_lastPresentedTextPrediction.text.isEmpty()) {
+                String previousCompositionNodeText = previousCompositionNode-&gt;wholeText();
+                size_t wordStart = 0;
+                if (previousCompositionNodeText.length()) {
+                    for (size_t position = previousCompositionNodeText.length() - 1; position &gt; 0; position--) {
+                        if (isASCIIWhitespace(previousCompositionNodeText[position])) {
+                            wordStart = position + 1;
+                            break;
+                        }
+                    }
+                }
+                previousCompositionNodeText = previousCompositionNodeText.substring(wordStart);
+
+                String completePredictedWord = makeString(previousCompositionNodeText, m_lastPresentedTextPrediction.text);
+                m_lastPresentedTextPredictionComplete = { completePredictedWord, wordStart };
+
+                // Reset last presented prediction since a candidate was accepted.
+                m_lastPresentedTextPrediction.reset();
+            }
         }
         if (m_compositionNode) {
             auto state = previousCompositionNode ? AXObjectCache::CompositionState::InProgress : AXObjectCache::CompositionState::Started;
             cache-&gt;onTextCompositionChange(*m_compositionNode, state, true);
+            m_lastPresentedTextPredictionComplete.reset();

Instead of keeping these variables in the Editor, I wondering if it would make more sense to pass them as context to AXObjectCache::onTextCompositionChange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1975910</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-06 14:01:48 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #11)
&gt; (In reply to Joshua Hoffman from comment #10)
&gt; &gt; Created attachment 467570 [details]
&gt; &gt; Patch
&gt; 
&gt; --- a/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm
&gt; +++ b/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm
&gt; 
&gt; +static void
&gt; attributedStringSetCompositionAttributes(NSMutableAttributedString
&gt; *attributedString, Node&amp; node)
&gt; 
&gt; Does this need to be different from the same function in
&gt; AccessibilityObjectMac.mm? Or can we have a common COCOA function?
We need to have these stay separate functions, since we expose different attributes for each platform. 
 
&gt; +    if (&amp;node != editor.compositionNode())
&gt; +        return; 
&gt; 
&gt; Seems like this check should be earlier in the function, same as in the MAC
&gt; version.
When accessing completed words, the previous composition will have ended, so the node we are looking at will not be equal to the compositionNode of the editor. We need them to be equal only when parsing presented (and incomplete) completions.

&gt; --- a/Source/WebCore/editing/Editor.cpp
&gt; +++ b/Source/WebCore/editing/Editor.cpp
&gt; 
&gt;              cache-&gt;onTextCompositionChange(*previousCompositionNode, state,
&gt; true);
&gt; +
&gt; +            // WebKit needs to store inline-predicted words to expose their
&gt; position and text values to assistive technologies.
&gt; +            if (state == AXObjectCache::CompositionState::Ended &amp;&amp;
&gt; !m_lastPresentedTextPrediction.text.isEmpty()) {
&gt; +                String previousCompositionNodeText =
&gt; previousCompositionNode-&gt;wholeText();
&gt; +                size_t wordStart = 0;
&gt; +                if (previousCompositionNodeText.length()) {
&gt; +                    for (size_t position =
&gt; previousCompositionNodeText.length() - 1; position &gt; 0; position--) {
&gt; +                        if
&gt; (isASCIIWhitespace(previousCompositionNodeText[position])) {
&gt; +                            wordStart = position + 1;
&gt; +                            break;
&gt; +                        }
&gt; +                    }
&gt; +                }
&gt; +                previousCompositionNodeText =
&gt; previousCompositionNodeText.substring(wordStart);
&gt; +
&gt; +                String completePredictedWord =
&gt; makeString(previousCompositionNodeText, m_lastPresentedTextPrediction.text);
&gt; +                m_lastPresentedTextPredictionComplete = {
&gt; completePredictedWord, wordStart };
&gt; +
&gt; +                // Reset last presented prediction since a candidate was
&gt; accepted.
&gt; +                m_lastPresentedTextPrediction.reset();
&gt; +            }
&gt;          }
&gt;          if (m_compositionNode) {
&gt;              auto state = previousCompositionNode ?
&gt; AXObjectCache::CompositionState::InProgress :
&gt; AXObjectCache::CompositionState::Started;
&gt;              cache-&gt;onTextCompositionChange(*m_compositionNode, state, true);
&gt; +            m_lastPresentedTextPredictionComplete.reset();
&gt; 
&gt; Instead of keeping these variables in the Editor, I wondering if it would
&gt; make more sense to pass them as context to
&gt; AXObjectCache::onTextCompositionChange.

I have debated this as well. Ultimately, I believe maintaining this state here will make more sense so that the state remains up-to-date, and we don&apos;t have to worry about updating the cached properties. Happy to discuss further, however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976107</commentid>
    <comment_count>13</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-09-07 05:51:40 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #10)
&gt; Created attachment 467570 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm
+++ b/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm

+static void attributedStringSetCompositionAttributes(NSMutableAttributedString *attributedString, Node&amp; node)
+{
+#if HAVE(INLINE_PREDICTIONS)
+    auto&amp; editor = node.document().editor();
+
+    auto lastPresentedCompleteWord = editor.lastPresentedTextPredictionComplete();
+    unsigned lastPresentedCompleteWordLength = lastPresentedCompleteWord.text.length();
+    unsigned lastPresentedCompleteWordPosition = lastPresentedCompleteWord.location;
+
+    if (!attributedString)
+        return;

Should we move this param validation / early return to the beginning of the function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976108</commentid>
    <comment_count>14</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-09-07 06:00:06 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #12)
&gt; (In reply to Andres Gonzalez from comment #11)
&gt; &gt; (In reply to Joshua Hoffman from comment #10)
&gt; &gt; &gt; Created attachment 467570 [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; --- a/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm
&gt; &gt; +++ b/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm
&gt; &gt; 
&gt; &gt; +static void
&gt; &gt; attributedStringSetCompositionAttributes(NSMutableAttributedString
&gt; &gt; *attributedString, Node&amp; node)
&gt; &gt; 
&gt; &gt; Does this need to be different from the same function in
&gt; &gt; AccessibilityObjectMac.mm? Or can we have a common COCOA function?
&gt; We need to have these stay separate functions, since we expose different
&gt; attributes for each platform. 
&gt;  
&gt; &gt; +    if (&amp;node != editor.compositionNode())
&gt; &gt; +        return; 
&gt; &gt; 
&gt; &gt; Seems like this check should be earlier in the function, same as in the MAC
&gt; &gt; version.
&gt; When accessing completed words, the previous composition will have ended, so
&gt; the node we are looking at will not be equal to the compositionNode of the
&gt; editor. We need them to be equal only when parsing presented (and
&gt; incomplete) completions.
&gt; 
&gt; &gt; --- a/Source/WebCore/editing/Editor.cpp
&gt; &gt; +++ b/Source/WebCore/editing/Editor.cpp
&gt; &gt; 
&gt; &gt;              cache-&gt;onTextCompositionChange(*previousCompositionNode, state,
&gt; &gt; true);
&gt; &gt; +
&gt; &gt; +            // WebKit needs to store inline-predicted words to expose their
&gt; &gt; position and text values to assistive technologies.
&gt; &gt; +            if (state == AXObjectCache::CompositionState::Ended &amp;&amp;
&gt; &gt; !m_lastPresentedTextPrediction.text.isEmpty()) {
&gt; &gt; +                String previousCompositionNodeText =
&gt; &gt; previousCompositionNode-&gt;wholeText();
&gt; &gt; +                size_t wordStart = 0;
&gt; &gt; +                if (previousCompositionNodeText.length()) {
&gt; &gt; +                    for (size_t position =
&gt; &gt; previousCompositionNodeText.length() - 1; position &gt; 0; position--) {
&gt; &gt; +                        if
&gt; &gt; (isASCIIWhitespace(previousCompositionNodeText[position])) {
&gt; &gt; +                            wordStart = position + 1;
&gt; &gt; +                            break;
&gt; &gt; +                        }
&gt; &gt; +                    }
&gt; &gt; +                }
&gt; &gt; +                previousCompositionNodeText =
&gt; &gt; previousCompositionNodeText.substring(wordStart);
&gt; &gt; +
&gt; &gt; +                String completePredictedWord =
&gt; &gt; makeString(previousCompositionNodeText, m_lastPresentedTextPrediction.text);
&gt; &gt; +                m_lastPresentedTextPredictionComplete = {
&gt; &gt; completePredictedWord, wordStart };
&gt; &gt; +
&gt; &gt; +                // Reset last presented prediction since a candidate was
&gt; &gt; accepted.
&gt; &gt; +                m_lastPresentedTextPrediction.reset();
&gt; &gt; +            }
&gt; &gt;          }
&gt; &gt;          if (m_compositionNode) {
&gt; &gt;              auto state = previousCompositionNode ?
&gt; &gt; AXObjectCache::CompositionState::InProgress :
&gt; &gt; AXObjectCache::CompositionState::Started;
&gt; &gt;              cache-&gt;onTextCompositionChange(*m_compositionNode, state, true);
&gt; &gt; +            m_lastPresentedTextPredictionComplete.reset();
&gt; &gt; 
&gt; &gt; Instead of keeping these variables in the Editor, I wondering if it would
&gt; &gt; make more sense to pass them as context to
&gt; &gt; AXObjectCache::onTextCompositionChange.
&gt; 
&gt; I have debated this as well. Ultimately, I believe maintaining this state
&gt; here will make more sense so that the state remains up-to-date, and we don&apos;t
&gt; have to worry about updating the cached properties. Happy to discuss
&gt; further, however.

If this is used only by accessibility, I think we should pass the relevant state to onTextCompositionChange and there we do the processing of the notification. The necessary state can be kept in the AXObjectCache or maybe better, in the corresponding AX object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976257</commentid>
    <comment_count>15</comment_count>
      <attachid>467592</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-07 16:30:47 -0700</bug_when>
    <thetext>Created attachment 467592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976275</commentid>
    <comment_count>16</comment_count>
      <attachid>467595</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-07 17:30:06 -0700</bug_when>
    <thetext>Created attachment 467595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976292</commentid>
    <comment_count>17</comment_count>
      <attachid>467596</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-07 18:49:47 -0700</bug_when>
    <thetext>Created attachment 467596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976559</commentid>
    <comment_count>18</comment_count>
      <attachid>467596</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-09-08 16:29:21 -0700</bug_when>
    <thetext>Comment on attachment 467596
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.h:782
&gt; +#endif

This block is probably long enough to warrant a // PLATFORM(IOS) after the #endif.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976811</commentid>
    <comment_count>19</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-09-11 06:54:54 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #17)
&gt; Created attachment 467596 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AccessibilityObject.cpp
+++ b/Source/WebCore/accessibility/AccessibilityObject.cpp

+#if PLATFORM(IOS)
+void AccessibilityObject::setLastPresentedTextPrediction(Node&amp; previousCompositionNode, CompositionState state, String text, size_t location, bool handlingAcceptedCandidate)

This should be in AccessibilityObjectIOS.mm instead. 

--- a/Source/WebCore/accessibility/AccessibilityObjectInterface.h
+++ b/Source/WebCore/accessibility/AccessibilityObjectInterface.h

+enum class CompositionState : uint8_t { Started, InProgress, Ended };

Could we have Accepted as another CompositionState? As opposed to a separate state/variable/param?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976860</commentid>
    <comment_count>20</comment_count>
      <attachid>467641</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-11 11:09:43 -0700</bug_when>
    <thetext>Created attachment 467641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1976887</commentid>
    <comment_count>21</comment_count>
      <attachid>467646</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-11 13:27:45 -0700</bug_when>
    <thetext>Created attachment 467646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977051</commentid>
    <comment_count>22</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-09-12 06:35:52 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #21)
&gt; Created attachment 467646 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm
+++ b/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm

+        // Find the location of the the complete word being predicted by iterating backwards through the text to find whitespace.

Typo: the the 

+        previousCompositionNodeText = previousCompositionNodeText.substring(wordStart);

If wordStart is 0, we are unnecessarily copying previousCompositionNodeText. Can we avoid this copy?

+static void attributedStringSetCompositionAttributes(NSMutableAttributedString *attributedString, RenderObject* renderer)
+{
+#if HAVE(INLINE_PREDICTIONS)
+    if (!renderer)
+        return;
+
+    RefPtr object = renderer-&gt;document().axObjectCache()-&gt;getOrCreate(renderer);
+
+    auto lastPresentedCompleteWord = object-&gt;lastPresentedTextPredictionComplete();

Check object for null before using it?
Also, we are copying the strings unnecessarily. You may want to make the inline method lastPresentedTextPredictionComplete() to return a reference.

+    auto lastPresentedTextPrediction = object-&gt;lastPresentedTextPrediction();

Same comment applies here to lastPresentedTextPrediction().

--- /dev/null
+++ b/LayoutTests/accessibility/ios-simulator/inline-prediction-attributed-string.html

+    editable.focus();

editable.xxx --&gt; document.getElementById(&quot;editable&quot;).xxx instead.

+    input.insertText(&quot;Good mo&quot;)

Missing ;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977104</commentid>
    <comment_count>23</comment_count>
      <attachid>467666</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-12 12:10:45 -0700</bug_when>
    <thetext>Created attachment 467666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977273</commentid>
    <comment_count>24</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-09-13 06:32:42 -0700</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #23)
&gt; Created attachment 467666 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AXObjectCache.h
+++ b/Source/WebCore/accessibility/AXObjectCache.h

-    void onTextCompositionChange(Node&amp;, CompositionState, bool);
+    void onTextCompositionChange(Node&amp;, CompositionState, bool, String, size_t, bool);

String parameter should be const String&amp;.

--- a/Source/WebCore/accessibility/AccessibilityObject.h
+++ b/Source/WebCore/accessibility/AccessibilityObject.h

+    void setLastPresentedTextPrediction(Node&amp;, CompositionState, String, size_t, bool);

Same here.

--- a/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm
+++ b/Source/WebCore/accessibility/ios/AccessibilityObjectIOS.mm

+        String completePredictedWord = makeString(previousCompositionNodeText, m_lastPresentedTextPrediction.text);
+        m_lastPresentedTextPredictionComplete = { completePredictedWord, wordStart };

You can use the + operator to concatenate WTF::Strings instead of makeString. Also, I don&apos;t think you need the completePredictedWord temp, which may prevent the compiler from moving the String into the struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977311</commentid>
    <comment_count>25</comment_count>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-13 09:30:00 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #24)
 
&gt; You can use the + operator to concatenate WTF::Strings instead of
&gt; makeString. Also, I don&apos;t think you need the completePredictedWord temp,
&gt; which may prevent the compiler from moving the String into the struct.

That&apos;s a good call out—I&apos;ll remove that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977319</commentid>
    <comment_count>26</comment_count>
      <attachid>467675</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2023-09-13 09:59:58 -0700</bug_when>
    <thetext>Created attachment 467675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1977503</commentid>
    <comment_count>27</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-09-14 09:28:59 -0700</bug_when>
    <thetext>Committed 267990@main (4d7674e3b99d): &lt;https://commits.webkit.org/267990@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 467675.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467522</attachid>
            <date>2023-09-01 19:17:13 -0700</date>
            <delta_ts>2023-09-05 23:32:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230901191712.patch</filename>
            <type>text/plain</type>
            <size>9988</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA5NDMxMDI0N2M5NzlmZjNhNDcyYjFmNWJkNGE3ZTU5MzlhMDE1MmE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IEZyaSwgMSBTZXAgMjAyMyAxODo1ODowMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gdGhlIGVkaXRvcjoKLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbjog
dGhlICJyZXN0IiBvZiB0aGUgd29yZCBiZWluZyBwcmVkaWN0ZWQuIEZvciBleGFtcGxlLCBpZiB0
aGUgdGV4dCAib3Bwb3J0dW4iIGhhZCBiZWVuIHR5cGVkLCBhbmQKIml0eSIgd2FzIHByZXNlbnRl
ZCBhcyBhIHByZWRpY3Rpb24sIHdlIHdvdWxkIHN0b3JlICJpdHkiLgotIG1fbGFzdFByZXNlbnRl
ZFRleHRQcmVkaWN0aW9uQ29tcGxldGU6IHRoZSB3aG9sZSB3b3JkIGJlaW5nIHByZWRpY3RlZC4g
VXNpbmcgdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdlIHdvdWxkIHN0b3JlIHRoZSB3aG9sZSB3b3Jk
LAoib3Bwb3J0dW5pdHkiLgoKSW4gYm90aCBjYXNlcywgd2Ugc3RvcmUgdGhlIHN0cmluZyB2YWx1
ZSBhbmQgdGhlIHBvc2l0aW9uLCBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBlZGl0b3IuIExh
c3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbiBpcyByZXNldApvbmNlIGEgcHJlZGljdGlvbiBpcyAi
YWNjZXB0ZWQiLCBhbmQgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSBpcyBy
ZXNldCBvbmNlIHdlIHN0YXJ0IGEgbmV3IGNvbXBvc2l0aW9uLgoKSW4gdGhlIGlPUyBhY2Nlc3Np
YmlsaXR5IHdyYXBwZXIsIHdlIGFjY2VzcyB0aGVzZSB2YWx1ZXMgYW5kIGFwcGx5IHRoZW0gdG8g
dGhlIHJlc3VsdGluZyBhdHRyaWJ1dGVkIHN0cmluZywgaWYgYXBwbGljYWJsZS4gVGhlCmF0dHJp
YnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMgbWV0aG9kIGhhbmRsZXMgdGhpcyB3
b3JrLCBhbmQgY2hlY2tzIHRoZSBsb2NhdGlvbiBhbmQgcmFuZ2Ugb2YgdGhlIHZhbHVlcyB0byBl
bnN1cmUKdGhhdCB0aGV5IGFyZSB2YWxpZC4KCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJp
bmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMpOgooV2ViQ29yZTo6YXR0cmlidXRlZFN0cmluZ0Ny
ZWF0ZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MuaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHA6
CihXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oOgooV2ViQ29yZTo6RWRpdG9yOjpsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rp
b24gY29uc3QpOgooV2ViQ29yZTo6RWRpdG9yOjpsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25D
b21wbGV0ZSBjb25zdCk6Ci0tLQogLi4uL2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tICAg
ICAgICAgICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKwogLi4uL2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5oICAgIHwgIDMgKysKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcCAgICAgICAgICAgICB8IDE4ICsrKysrKysrKwogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaCAgICAgICAgICAgICAgIHwgIDYgKysrCiA0IGZpbGVzIGNoYW5nZWQsIDY0
IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQppbmRleCA3OWMwMmZkMzJkMDEuLjZh
OGVmNWQ2ZjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
QWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQg
IkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKyNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9y
dCAiRXZlbnROYW1lcy5oIgogI2ltcG9ydCAiSFRNTElucHV0RWxlbWVudC5oIgogI2ltcG9ydCAi
SFRNTE5hbWVzLmgiCkBAIC0yMDgsNiArMjA5LDQxIEBAIHN0YXRpYyB2b2lkIGF0dHJpYnV0ZVN0
cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJTdHJpbmcsIFJlbmRl
CiAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUZXh0QXR0
cmlidXRlQ29udGV4dCB2YWx1ZTpVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNv
ZGUgcmFuZ2U6cmFuZ2VdOwogfQogCitzdGF0aWMgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nU2V0Q29t
cG9zaXRpb25BdHRyaWJ1dGVzKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJTdHJpbmcs
IE5vZGUmIG5vZGUpCit7CisjaWYgSEFWRShJTkxJTkVfUFJFRElDVElPTlMpCisgICAgYXV0byYg
ZWRpdG9yID0gbm9kZS5kb2N1bWVudCgpLmVkaXRvcigpOworCisgICAgc3RkOjpwYWlyPFN0cmlu
ZywgdW5zaWduZWQ+IGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQgPSBlZGl0b3IubGFzdFByZXNl
bnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUoKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVk
Q29tcGxldGVXb3JkTGVuZ3RoID0gW2xhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQuZmlyc3QgbGVu
Z3RoXTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24gPSBs
YXN0UHJlc2VudGVkQ29tcGxldGVXb3JkLnNlY29uZDsKKworICAgIGlmICghbGFzdFByZXNlbnRl
ZENvbXBsZXRlV29yZC5maXJzdC5pc0VtcHR5KCkgJiYgbGFzdFByZXNlbnRlZENvbXBsZXRlV29y
ZFBvc2l0aW9uICsgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0aCA8PSBbYXR0clN0cmlu
ZyBsZW5ndGhdKSB7CisgICAgICAgIE5TUmFuZ2UgY29tcGxldGVXb3JkUmFuZ2UgPSBOU01ha2VS
YW5nZShsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24sIGxhc3RQcmVzZW50ZWRDb21w
bGV0ZVdvcmRMZW5ndGgpOworICAgICAgICBpZiAoW1thdHRyU3RyaW5nLnN0cmluZyBzdWJzdHJp
bmdXaXRoUmFuZ2U6Y29tcGxldGVXb3JkUmFuZ2VdIGlzRXF1YWxUb1N0cmluZzpsYXN0UHJlc2Vu
dGVkQ29tcGxldGVXb3JkLmZpcnN0XSkKKyAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJp
YnV0ZTpVSUFjY2Vzc2liaWxpdHlBY2NlcHRlZElubGluZVRleHRDb21wbGV0aW9uIHZhbHVlOmxh
c3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQuZmlyc3QgcmFuZ2U6Y29tcGxldGVXb3JkUmFuZ2VdOwor
ICAgIH0KKworICAgIGlmICgmbm9kZSAhPSBlZGl0b3IuY29tcG9zaXRpb25Ob2RlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIHVuc2lnbmVkPiBsYXN0UHJlc2Vu
dGVkVGV4dFByZWRpY3Rpb24gPSBlZGl0b3IubGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKCk7
CisgICAgdW5zaWduZWQgbGFzdFByZXNlbnRlZExlbmd0aCA9IFtsYXN0UHJlc2VudGVkVGV4dFBy
ZWRpY3Rpb24uZmlyc3QgbGVuZ3RoXTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkUG9zaXRp
b24gPSBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24uc2Vjb25kOworCisgICAgaWYgKCFsYXN0
UHJlc2VudGVkVGV4dFByZWRpY3Rpb24uZmlyc3QuaXNFbXB0eSgpICYmIGxhc3RQcmVzZW50ZWRQ
b3NpdGlvbiArIGxhc3RQcmVzZW50ZWRMZW5ndGggPD0gW2F0dHJTdHJpbmcgbGVuZ3RoXSkgewor
ICAgICAgICBOU1JhbmdlIHByZXNlbnRlZFJhbmdlID0gTlNNYWtlUmFuZ2UobGFzdFByZXNlbnRl
ZFBvc2l0aW9uLCBsYXN0UHJlc2VudGVkTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFbW2F0dHJTdHJp
bmcuc3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpwcmVzZW50ZWRSYW5nZV0gaXNFcXVhbFRvU3Ry
aW5nOmxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbi5maXJzdF0pCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eUlu
bGluZVRleHRDb21wbGV0aW9uIHZhbHVlOlthdHRyU3RyaW5nLnN0cmluZyBzdWJzdHJpbmdXaXRo
UmFuZ2U6cHJlc2VudGVkUmFuZ2VdIHJhbmdlOnByZXNlbnRlZFJhbmdlXTsKKyAgICB9CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShhdHRyU3RyaW5nKTsKKyAgICBVTlVTRURfUEFSQU0obm9kZSk7
CisjZW5kaWYKK30KKwogUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0
cmluZ0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHRleHQsIGNvbnN0IFNpbXBsZVJhbmdl
JiwgQVhDb3JlT2JqZWN0OjpTcGVsbENoZWNrKQogewogICAgIC8vIFNraXAgaW52aXNpYmxlIHRl
eHQuCkBAIC0yMjMsNiArMjU5LDcgQEAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0
cmlidXRlZFN0cmluZ0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHRleHQKICAgICBhdHRy
aWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwocmVzdWx0LmdldCgpLCByZW5kZXJlciwgcmFuZ2Up
OwogICAgIGF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChyZXN1bHQuZ2V0KCksIHJl
bmRlcmVyLCByYW5nZSk7CiAgICAgYXR0cmlidXRlU3RyaW5nU2V0TGFuZ3VhZ2UocmVzdWx0Lmdl
dCgpLCByZW5kZXJlciwgcmFuZ2UpOworICAgIGF0dHJpYnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlv
bkF0dHJpYnV0ZXMocmVzdWx0LmdldCgpLCAqbm9kZSk7CiAKICAgICByZXR1cm4gcmVzdWx0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmgKaW5kZXggMTA1NTJjM2U5NGQw
Li42YzZiYjkxZjgwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaApA
QCAtNDYsNiArNDYsOSBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlU
b2tlbkF0dGFjaG1lbnQgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuQQogc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dEF0dHJpYnV0ZUNvbnRleHQgPSBAIlVJQWNjZXNz
aWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0IjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJ
QWNjZXNzaWJpbGl0eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSA9IEAiVUlBY2Nlc3NpYmlsaXR5
VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlIjsKIAorc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlB
Y2Nlc3NpYmlsaXR5SW5saW5lVGV4dENvbXBsZXRpb24gPSBAIlVJQWNjZXNzaWJpbGl0eUlubGlu
ZVRleHRDb21wbGV0aW9uIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0
eUFjY2VwdGVkSW5saW5lVGV4dENvbXBsZXRpb24gPSBAIlVJQWNjZXNzaWJpbGl0eUFjY2VwdGVk
SW5saW5lVGV4dENvbXBsZXRpb24iOworCiBAaW50ZXJmYWNlIFdBS1ZpZXcgKGlPU0FjY2Vzc2li
aWxpdHkpCiAtIChCT09MKWFjY2Vzc2liaWxpdHlJc0lnbm9yZWQ7CiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggYWY2MDcxYTNmZjYyLi5hYzcwYzBkNjU5ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIzMjMsNiArMjMyMyw5IEBAIHZvaWQgRWRpdG9yOjpz
ZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlv
blVuZGVybGluCiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmxvY2F0aW9uICs9IGJhc2VPZmZz
ZXQ7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmIChtX2lzSGFuZGxpbmdBY2NlcHRl
ZENhbmRpZGF0ZSkKKyAgICAgICAgICAgICAgICBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlv
biA9IHN0ZDo6bWFrZV9wYWlyKHRleHQsIGJhc2VPZmZzZXQpOworCiAgICAgICAgICAgICBpZiAo
YXV0byByZW5kZXJlciA9IGJhc2VOb2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAgIHJl
bmRlcmVyLT5yZXBhaW50KCk7CiAKQEAgLTIzMzcsMTAgKzIzNDAsMjUgQEAgdm9pZCBFZGl0b3I6
OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0
aW9uVW5kZXJsaW4KICAgICAgICAgaWYgKHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlICYmIHByZXZp
b3VzQ29tcG9zaXRpb25Ob2RlICE9IG1fY29tcG9zaXRpb25Ob2RlKSB7CiAgICAgICAgICAgICBh
dXRvIHN0YXRlID0gbV9jb21wb3NpdGlvbk5vZGUgPyBBWE9iamVjdENhY2hlOjpDb21wb3NpdGlv
blN0YXRlOjpJblByb2dyZXNzIDogQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6RW5k
ZWQ7CiAgICAgICAgICAgICBjYWNoZS0+b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoKnByZXZpb3Vz
Q29tcG9zaXRpb25Ob2RlLCBzdGF0ZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIC8vIEFzc2lzdGl2
ZSB0ZWNobm9sb2dpZXMgbmVlZCB0byBrbm93IHRoZSBwb3NpdGlvbiAmIHRleHQgb2YgdGhlIGxh
c3QgYWNjZXB0ZWQgY29tcGxldGlvbiB0byBleHBvc2UgaXQgcHJvcGVybHkuCisgICAgICAgICAg
ICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBzdGF0ZSA9PSBB
WE9iamVjdENhY2hlOjpDb21wb3NpdGlvblN0YXRlOjpFbmRlZCAmJiAhbV9sYXN0UHJlc2VudGVk
VGV4dFByZWRpY3Rpb24uZmlyc3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5n
IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dCA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlLT53
aG9sZVRleHQoKTsKKyAgICAgICAgICAgICAgICBzaXplX3Qgd29yZFN0YXJ0ID0gcHJldmlvdXND
b21wb3NpdGlvbk5vZGVUZXh0LmNvbnRhaW5zKCIgIl9zKSA/IHByZXZpb3VzQ29tcG9zaXRpb25O
b2RlVGV4dC5yZXZlcnNlRmluZCgiICJfcykgKyAxIDogMDsKKyAgICAgICAgICAgICAgICBwcmV2
aW91c0NvbXBvc2l0aW9uTm9kZVRleHQgPSBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHQuc3Vi
c3RyaW5nKHdvcmRTdGFydCk7CisKKyAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBzdHJp
bmdzID0geyBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHQsIG1fbGFzdFByZXNlbnRlZFRleHRQ
cmVkaWN0aW9uLmZpcnN0IH07CisgICAgICAgICAgICAgICAgU3RyaW5nIGNvbXBsZXRlUHJlZGlj
dGVkV29yZCA9IG1ha2VTdHJpbmdCeUpvaW5pbmcoc3RyaW5ncywgIiJfcyk7CisgICAgICAgICAg
ICAgICAgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSA9IHN0ZDo6bWFrZV9w
YWlyKGNvbXBsZXRlUHJlZGljdGVkV29yZCwgd29yZFN0YXJ0KTsKKworICAgICAgICAgICAgICAg
IC8vIFJlc2V0IGxhc3QgcHJlc2VudGVkIHBycmVkaWN0aW9uIHNpbmNlIGEgY2FuZGlkYXRlIHdh
cyBhY2NlcHRlZC4KKyAgICAgICAgICAgICAgICBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlv
biA9IHN0ZDo6bWFrZV9wYWlyKCIiX3MsIDApOworICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIGlmIChtX2NvbXBvc2l0aW9uTm9kZSkgewogICAgICAgICAgICAgYXV0byBzdGF0ZSA9
IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0
ZTo6SW5Qcm9ncmVzcyA6IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OlN0YXJ0ZWQ7
CiAgICAgICAgICAgICBjYWNoZS0+b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoKm1fY29tcG9zaXRp
b25Ob2RlLCBzdGF0ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtX2xhc3RQcmVzZW50ZWRUZXh0UHJl
ZGljdGlvbkNvbXBsZXRlID0gc3RkOjptYWtlX3BhaXIoIiJfcywgMCk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDU0MTJhZmMyYjE3OS4uYWMwMDBmNmVm
MDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU5OSw2ICs1OTksOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1Bhc3RpbmdGcm9tTWVudU9yS2V5QmluZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcGFzdGluZ0Zyb21NZW51T3JLZXlCaW5kaW5nOyB9CiAgICAgYm9vbCBpc0NvcHlpbmdGcm9t
TWVudU9yS2V5QmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY29weWluZ0Zyb21NZW51T3JLZXlC
aW5kaW5nOyB9CiAKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCB1bnNpZ25lZD4gbGFzdFByZXNlbnRl
ZFRleHRQcmVkaWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRp
Y3Rpb247IH0KKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCB1bnNpZ25lZD4gbGFzdFByZXNlbnRlZFRl
eHRQcmVkaWN0aW9uQ29tcGxldGUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcmVzZW50ZWRUZXh0
UHJlZGljdGlvbkNvbXBsZXRlOyB9CisKIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfQogCkBAIC02ODksNiArNjkyLDkgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fY29weWluZ0Zyb21NZW51T3JLZXlCaW5kaW5nIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fcGFzdGluZ0Zyb21NZW51T3JLZXlCaW5kaW5nIHsgZmFsc2UgfTsKIAorICAg
IHN0ZDo6cGFpcjxTdHJpbmcsIHVuc2lnbmVkPiBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlv
bjsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCB1bnNpZ25lZD4gbV9sYXN0UHJlc2VudGVkVGV4dFBy
ZWRpY3Rpb25Db21wbGV0ZTsKKwogI2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElP
TikgJiYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgc2hvdWxkRGV0ZWN0VGVsZXBob25lTnVtYmVy
cygpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467565</attachid>
            <date>2023-09-05 23:32:16 -0700</date>
            <delta_ts>2023-09-06 10:24:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230905233215.patch</filename>
            <type>text/plain</type>
            <size>13962</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBiNzUyNDk5ZWE3MWJhZTk1ODJlYzk0MzNlNjZmM2UwNGU4NWRkYjAyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgNSBTZXAgMjAyMyAyMjo1NjozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gdGhlIGVkaXRvcjoKLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbjog
dGhlICJyZXN0IiBvZiB0aGUgd29yZCBiZWluZyBwcmVkaWN0ZWQuIEZvciBleGFtcGxlLCBpZiB0
aGUgdGV4dCAib3Bwb3J0dW4iIGhhZCBiZWVuIHR5cGVkLCBhbmQKIml0eSIgd2FzIHByZXNlbnRl
ZCBhcyBhIHByZWRpY3Rpb24sIHdlIHdvdWxkIHN0b3JlICJpdHkiLgotIG1fbGFzdFByZXNlbnRl
ZFRleHRQcmVkaWN0aW9uQ29tcGxldGU6IHRoZSB3aG9sZSB3b3JkIGJlaW5nIHByZWRpY3RlZC4g
VXNpbmcgdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdlIHdvdWxkIHN0b3JlIHRoZSB3aG9sZSB3b3Jk
LAoib3Bwb3J0dW5pdHkiLgoKSW4gYm90aCBjYXNlcywgd2Ugc3RvcmUgdGhlIHN0cmluZyB2YWx1
ZSBhbmQgdGhlIHBvc2l0aW9uLCBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBlZGl0b3IuIExh
c3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbiBpcyByZXNldApvbmNlIGEgcHJlZGljdGlvbiBpcyAi
YWNjZXB0ZWQiLCBhbmQgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSBpcyBy
ZXNldCBvbmNlIHdlIHN0YXJ0IGEgbmV3IGNvbXBvc2l0aW9uLgoKSW4gdGhlIGlPUyBhY2Nlc3Np
YmlsaXR5IHdyYXBwZXIsIHdlIGFjY2VzcyB0aGVzZSB2YWx1ZXMgYW5kIGFwcGx5IHRoZW0gdG8g
dGhlIHJlc3VsdGluZyBhdHRyaWJ1dGVkIHN0cmluZywgaWYgYXBwbGljYWJsZS4gVGhlCmF0dHJp
YnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMgbWV0aG9kIGhhbmRsZXMgdGhpcyB3
b3JrLCBhbmQgY2hlY2tzIHRoZSBsb2NhdGlvbiBhbmQgcmFuZ2Ugb2YgdGhlIHZhbHVlcyB0byBl
bnN1cmUKdGhhdCB0aGV5IGFyZSB2YWxpZC4KClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIG5l
dyB0ZXN0IHRoYXQgc2ltdWxhdGVzIGlubGluZSBwcmVkaWN0aW9ucyBhbmQgY2hlY2tzIHRoYXQg
dGhlIGNvcnJlY3QgYXR0cmlidXRlcyBhcmUgZXhwb3NlZC4KCiogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWw6IEFkZGVkLgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1Mu
bW06CihXZWJDb3JlOjphdHRyaWJ1dGVkU3RyaW5nU2V0Q29tcG9zaXRpb25BdHRyaWJ1dGVzKToK
KFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmg6CiogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwOgooV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3Np
dGlvbik6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaDoKKFdlYkNvcmU6OkVkaXRv
cjo6SW5saW5lVGV4dFByZWRpY3Rpb246OnJlc2V0KToKKFdlYkNvcmU6OkVkaXRvcjo6bGFzdFBy
ZXNlbnRlZFRleHRQcmVkaWN0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkVkaXRvcjo6bGFzdFByZXNl
bnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUgY29uc3QpOgotLS0KIC4uLi9pb3MvQWNjZXNzaWJp
bGl0eU9iamVjdElPUy5tbSAgICAgICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysKIC4u
Li9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaCAgICB8ICAzICsrCiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAgICAgICAgICAgfCAyMyArKysrKysrKysr
KwogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCAgICAgICAgICAgICAgIHwgMTIgKysr
KysrCiAuLi4tcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQgfCAzNyAr
KysrKysrKysrKysrKysrKwogLi4uL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5n
Lmh0bWwgIHwgMzYgKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTUxIGluc2Vy
dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lv
cy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9i
amVjdElPUy5tbQppbmRleCA3OWMwMmZkMzJkMDEuLjAxMzRkZWFlMWM4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SU9TLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaCIKKyNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRXZlbnROYW1lcy5oIgogI2ltcG9y
dCAiSFRNTElucHV0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCkBAIC0yMDgsNiAr
MjA5LDQ0IEBAIHN0YXRpYyB2b2lkIGF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcgKmF0dHJTdHJpbmcsIFJlbmRlCiAgICAgICAgIFthdHRyU3RyaW5nIGFk
ZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCB2YWx1ZTpVSUFj
Y2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUgcmFuZ2U6cmFuZ2VdOwogfQogCitz
dGF0aWMgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nU2V0Q29tcG9zaXRpb25BdHRyaWJ1dGVzKE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJTdHJpbmcsIE5vZGUmIG5vZGUpCit7CisjaWYgSEFW
RShJTkxJTkVfUFJFRElDVElPTlMpCisgICAgYXV0byYgZWRpdG9yID0gbm9kZS5kb2N1bWVudCgp
LmVkaXRvcigpOworCisgICAgYXV0byBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkID0gZWRpdG9y
Lmxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbkNvbXBsZXRlKCk7CisgICAgdW5zaWduZWQgbGFz
dFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0aCA9IGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQu
dGV4dC5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9z
aXRpb24gPSBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkLmxvY2F0aW9uOworCisgICAgaWYgKCFh
dHRyU3RyaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWxhc3RQcmVzZW50ZWRDb21w
bGV0ZVdvcmQudGV4dC5pc0VtcHR5KCkgJiYgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZFBvc2l0
aW9uICsgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0aCA8PSBbYXR0clN0cmluZyBsZW5n
dGhdKSB7CisgICAgICAgIE5TUmFuZ2UgY29tcGxldGVXb3JkUmFuZ2UgPSBOU01ha2VSYW5nZShs
YXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24sIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdv
cmRMZW5ndGgpOworICAgICAgICBpZiAoW1thdHRyU3RyaW5nLnN0cmluZyBzdWJzdHJpbmdXaXRo
UmFuZ2U6Y29tcGxldGVXb3JkUmFuZ2VdIGlzRXF1YWxUb1N0cmluZzpsYXN0UHJlc2VudGVkQ29t
cGxldGVXb3JkLnRleHRdKQorICAgICAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJ
QWNjZXNzaWJpbGl0eUFjY2VwdGVkSW5saW5lVGV4dENvbXBsZXRpb24gdmFsdWU6bGFzdFByZXNl
bnRlZENvbXBsZXRlV29yZC50ZXh0IHJhbmdlOmNvbXBsZXRlV29yZFJhbmdlXTsKKyAgICB9CisK
KyAgICBpZiAoJm5vZGUgIT0gZWRpdG9yLmNvbXBvc2l0aW9uTm9kZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIGxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbiA9IGVkaXRvci5sYXN0
UHJlc2VudGVkVGV4dFByZWRpY3Rpb24oKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkTGVu
Z3RoID0gbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uLnRleHQubGVuZ3RoKCk7CisgICAgdW5z
aWduZWQgbGFzdFByZXNlbnRlZFBvc2l0aW9uID0gbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9u
LmxvY2F0aW9uOworCisgICAgaWYgKCFsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dC5p
c0VtcHR5KCkgJiYgbGFzdFByZXNlbnRlZFBvc2l0aW9uICsgbGFzdFByZXNlbnRlZExlbmd0aCA8
PSBbYXR0clN0cmluZyBsZW5ndGhdKSB7CisgICAgICAgIE5TUmFuZ2UgcHJlc2VudGVkUmFuZ2Ug
PSBOU01ha2VSYW5nZShsYXN0UHJlc2VudGVkUG9zaXRpb24sIGxhc3RQcmVzZW50ZWRMZW5ndGgp
OworICAgICAgICBpZiAoIVtbYXR0clN0cmluZy5zdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnBy
ZXNlbnRlZFJhbmdlXSBpc0VxdWFsVG9TdHJpbmc6bGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9u
LnRleHRdKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0
dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiB2YWx1ZTpbYXR0clN0
cmluZy5zdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnByZXNlbnRlZFJhbmdlXSByYW5nZTpwcmVz
ZW50ZWRSYW5nZV07CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXR0clN0cmluZyk7
CisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworI2VuZGlmIC8vIEhBVkUoSU5MSU5FX1BSRURJQ1RJ
T05TKQorfQorCiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5n
Q3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dCwgY29uc3QgU2ltcGxlUmFuZ2UmLCBB
WENvcmVPYmplY3Q6OlNwZWxsQ2hlY2spCiB7CiAgICAgLy8gU2tpcCBpbnZpc2libGUgdGV4dC4K
QEAgLTIyMyw2ICsyNjIsNyBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1
dGVkU3RyaW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIGF0dHJpYnV0
ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChyZXN1bHQuZ2V0KCksIHJlbmRlcmVyLCByYW5nZSk7CiAg
ICAgYXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKHJlc3VsdC5nZXQoKSwgcmVuZGVy
ZXIsIHJhbmdlKTsKICAgICBhdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShyZXN1bHQuZ2V0KCks
IHJlbmRlcmVyLCByYW5nZSk7CisgICAgYXR0cmlidXRlZFN0cmluZ1NldENvbXBvc2l0aW9uQXR0
cmlidXRlcyhyZXN1bHQuZ2V0KCksICpub2RlKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAppbmRleCAxMDU1MmMzZTk0ZDAuLjZj
NmJiOTFmODBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCkBAIC00
Niw2ICs0Niw5IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2Vu
QXR0YWNobWVudCA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5BCiBzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBVSUFjY2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3NpYmls
aXR5VGV4dEF0dHJpYnV0ZUNvbnRleHQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nl
c3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlUZXh0
dWFsQ29udGV4dFNvdXJjZUNvZGUiOwogCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vz
c2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5SW5saW5lVGV4
dENvbXBsZXRpb24iOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxp
bmVUZXh0Q29tcGxldGlvbiI7CisKIEBpbnRlcmZhY2UgV0FLVmlldyAoaU9TQWNjZXNzaWJpbGl0
eSkKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCBhZjYwNzFhM2ZmNjIuLjViNmJmZWU5NTA4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcApAQCAtMjMyMyw2ICsyMzIzLDkgQEAgdm9pZCBFZGl0b3I6OnNldENv
bXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5k
ZXJsaW4KICAgICAgICAgICAgICAgICAgICAgcmFuZ2UubG9jYXRpb24gKz0gYmFzZU9mZnNldDsK
ICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKG1faXNIYW5kbGluZ0FjY2VwdGVkQ2Fu
ZGlkYXRlKQorICAgICAgICAgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uID0g
eyB0ZXh0LCBiYXNlT2Zmc2V0IH07CisKICAgICAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0g
YmFzZU5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyZXItPnJlcGFpbnQo
KTsKIApAQCAtMjMzNywxMCArMjM0MCwzMCBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRpb24o
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAg
ICAgICBpZiAocHJldmlvdXNDb21wb3NpdGlvbk5vZGUgJiYgcHJldmlvdXNDb21wb3NpdGlvbk5v
ZGUgIT0gbV9jb21wb3NpdGlvbk5vZGUpIHsKICAgICAgICAgICAgIGF1dG8gc3RhdGUgPSBtX2Nv
bXBvc2l0aW9uTm9kZSA/IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OkluUHJvZ3Jl
c3MgOiBBWE9iamVjdENhY2hlOjpDb21wb3NpdGlvblN0YXRlOjpFbmRlZDsKICAgICAgICAgICAg
IGNhY2hlLT5vblRleHRDb21wb3NpdGlvbkNoYW5nZSgqcHJldmlvdXNDb21wb3NpdGlvbk5vZGUs
IHN0YXRlLCB0cnVlKTsKKworICAgICAgICAgICAgLy8gV2ViS2l0IG5lZWRzIHRvIHN0b3JlIGlu
bGluZS1wcmVkaWN0ZWQgd29yZHMgdG8gZXhwb3NlIHRoZWlyIHBvc2l0aW9uIGFuZCB0ZXh0IHZh
bHVlcyB0byBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLgorICAgICAgICAgICAgaWYgKHN0YXRlID09
IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OkVuZGVkICYmICFtX2xhc3RQcmVzZW50
ZWRUZXh0UHJlZGljdGlvbi50ZXh0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFN0cmlu
ZyBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHQgPSBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZS0+
d2hvbGVUZXh0KCk7CisgICAgICAgICAgICAgICAgc2l6ZV90IHdvcmRTdGFydCA9IDA7CisgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgcG9zID0gcHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0
Lmxlbmd0aCgpIC0gMTsgcG9zID4gMDsgcG9zLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGlzQVNDSUlXaGl0ZXNwYWNlKHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dFtwb3NdKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgd29yZFN0YXJ0ID0gcG9zICsgMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dCA9IHByZXZp
b3VzQ29tcG9zaXRpb25Ob2RlVGV4dC5zdWJzdHJpbmcod29yZFN0YXJ0KTsKKworICAgICAgICAg
ICAgICAgIFN0cmluZyBjb21wbGV0ZVByZWRpY3RlZFdvcmQgPSBtYWtlU3RyaW5nKHByZXZpb3Vz
Q29tcG9zaXRpb25Ob2RlVGV4dCwgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dCk7
CisgICAgICAgICAgICAgICAgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSA9
IHsgY29tcGxldGVQcmVkaWN0ZWRXb3JkLCB3b3JkU3RhcnQgfTsKKworICAgICAgICAgICAgICAg
IC8vIFJlc2V0IGxhc3QgcHJlc2VudGVkIHByZWRpY3Rpb24gc2luY2UgYSBjYW5kaWRhdGUgd2Fz
IGFjY2VwdGVkLgorICAgICAgICAgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9u
LnJlc2V0KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fY29tcG9z
aXRpb25Ob2RlKSB7CiAgICAgICAgICAgICBhdXRvIHN0YXRlID0gcHJldmlvdXNDb21wb3NpdGlv
bk5vZGUgPyBBWE9iamVjdENhY2hlOjpDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIDogQVhP
YmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6U3RhcnRlZDsKICAgICAgICAgICAgIGNhY2hl
LT5vblRleHRDb21wb3NpdGlvbkNoYW5nZSgqbV9jb21wb3NpdGlvbk5vZGUsIHN0YXRlLCB0cnVl
KTsKKyAgICAgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUucmVz
ZXQoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNTQx
MmFmYzJiMTc5Li5hYTc4MTg5NDIzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTk5
LDYgKzU5OSwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Bhc3RpbmdGcm9tTWVudU9yS2V5Qmlu
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGFzdGluZ0Zyb21NZW51T3JLZXlCaW5kaW5nOyB9CiAg
ICAgYm9vbCBpc0NvcHlpbmdGcm9tTWVudU9yS2V5QmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
Y29weWluZ0Zyb21NZW51T3JLZXlCaW5kaW5nOyB9CiAKKyAgICBzdHJ1Y3QgSW5saW5lVGV4dFBy
ZWRpY3Rpb24geworICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgc2l6ZV90IGxvY2F0aW9u
OworICAgICAgICB2b2lkIHJlc2V0KCkgeyB0ZXh0ID0gIiJfczsgbG9jYXRpb24gPSAwOyB9Cisg
ICAgfTsKKworICAgIElubGluZVRleHRQcmVkaWN0aW9uIGxhc3RQcmVzZW50ZWRUZXh0UHJlZGlj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uOyB9Cisg
ICAgSW5saW5lVGV4dFByZWRpY3Rpb24gbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxl
dGUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbkNvbXBsZXRl
OyB9CisKIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9kb2N1bWVudDsgfQogCkBAIC02ODksNiArNjk4LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
Y29weWluZ0Zyb21NZW51T3JLZXlCaW5kaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fcGFzdGlu
Z0Zyb21NZW51T3JLZXlCaW5kaW5nIHsgZmFsc2UgfTsKIAorICAgIElubGluZVRleHRQcmVkaWN0
aW9uIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uOworICAgIElubGluZVRleHRQcmVkaWN0
aW9uIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGU7CisKICNpZiBFTkFCTEUo
VEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKICAgICBib29sIHNo
b3VsZERldGVjdFRlbGVwaG9uZU51bWJlcnMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJp
YnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9z
LXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wOWQ2OGM1NjcwOTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0
b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMzcgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGF0dHJpYnV0ZWQgc3RyaW5n
IGZvciBpbmxpbmUgcHJlZGljdGlvbnMgaXMgYWNjdXJhdGUuCisKK0dvb2QgbW97CisgICAgVUlB
Y2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAg
VUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAg
ICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9CisKK1NpbXVsYXRpbmcgcHJl
c2VudGVkIGNvbXBsZXRpb246CitHb29kIG1veworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9u
dEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2Vu
Rm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxhciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250U2l6ZSA9IDExOworfXJuaW5neworICAgIFVJQWNjZXNzaWJpbGl0eUlubGluZVRleHRD
b21wbGV0aW9uID0gcm5pbmc7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0g
Ii5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9
ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXpl
ID0gMTE7Cit9CisKK1NpbXVsYXRpbmcgYWNjZXB0ZWQgY29tcGxldGlvbjoKK0dvb2QgeworICAg
IFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOwor
ICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxhciI7
CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDExOworfW1vcm5pbmd7CisgICAg
VUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiA9IG1vcm5pbmc7Cisg
ICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7
CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFy
IjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9CisKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlv
bi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mt
c2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYzI4NWJkM2Q5OTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5l
LXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CisKKzxodG1sPgorPGhl
YWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBl
ci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgaWQ9ImJvZHkiPgorCisKKzxpbnB1dCBp
ZD0iZWRpdGFibGUiIHR5cGU9InRleHQiIHRhYmluZGV4PSIwIj48L2lucHV0PgorCis8c2NyaXB0
PgordmFyIHJlc3VsdCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBhdHRyaWJ1dGVkIHN0
cmluZyBmb3IgaW5saW5lIHByZWRpY3Rpb25zIGlzIGFjY3VyYXRlLlxuXG4iOworCitpZiAod2lu
ZG93LnRleHRJbnB1dENvbnRyb2xsZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgZWRpdGFibGUuZm9jdXMoKTsKKyAgICB2YXIgb2JqID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgb2JqLmluc2VydFRleHQoIkdvb2QgbW8iKQor
ICAgIHJlc3VsdCArPSBgJHtvYmouYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKDAsIDcpfVxuXG5g
OworCisgICAgcmVzdWx0ICs9ICJTaW11bGF0aW5nIHByZXNlbnRlZCBjb21wbGV0aW9uOlxuIjsK
KyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQoInJuaW5nIiwgMCwgNSwgZmFs
c2UsIFsgeyBmcm9tOiAiMCIsIGxlbmd0aDogIjUiLCBjb2xvcjogIiNGRjAwMDAzMyIsIGZvcmVn
cm91bmRDb2xvcjogIiNGRjAwMDBGRiIgfSBdLCB1bmRlZmluZWQpOworICAgIHJlc3VsdCArPSBg
JHtvYmouYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKDAsIDEyKX1cblxuYDsKKworICAgIHJlc3Vs
dCArPSAiU2ltdWxhdGluZyBhY2NlcHRlZCBjb21wbGV0aW9uOlxuIjsKKyAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLnNldE1hcmtlZFRleHQoIiIsIDAsIDAsIGZhbHNlLCB1bmRlZmluZWQsIHVuZGVm
aW5lZCk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KCJybmluZyIpOworICAg
IHJlc3VsdCArPSBgJHtvYmouYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKDAsIDEyKX1cblxuYDsK
KworICAgIGRlYnVnKHJlc3VsdCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467570</attachid>
            <date>2023-09-06 10:24:20 -0700</date>
            <delta_ts>2023-09-07 16:30:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230906102419.patch</filename>
            <type>text/plain</type>
            <size>14896</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSA4MDQyZjk4YzUyYzc1ZDk3MDViNmIwNjI0ZmM0NWE3MjBhNWY2OWVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgNSBTZXAgMjAyMyAyMjo1NjozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gdGhlIGVkaXRvcjoKLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbjog
dGhlICJyZXN0IiBvZiB0aGUgd29yZCBiZWluZyBwcmVkaWN0ZWQuIEZvciBleGFtcGxlLCBpZiB0
aGUgdGV4dCAib3Bwb3J0dW4iIGhhZCBiZWVuIHR5cGVkLCBhbmQKIml0eSIgd2FzIHByZXNlbnRl
ZCBhcyBhIHByZWRpY3Rpb24sIHdlIHdvdWxkIHN0b3JlICJpdHkiLgotIG1fbGFzdFByZXNlbnRl
ZFRleHRQcmVkaWN0aW9uQ29tcGxldGU6IHRoZSB3aG9sZSB3b3JkIGJlaW5nIHByZWRpY3RlZC4g
VXNpbmcgdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdlIHdvdWxkIHN0b3JlIHRoZSB3aG9sZSB3b3Jk
LAoib3Bwb3J0dW5pdHkiLgoKSW4gYm90aCBjYXNlcywgd2Ugc3RvcmUgdGhlIHN0cmluZyB2YWx1
ZSBhbmQgdGhlIHBvc2l0aW9uLCBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBlZGl0b3IuIExh
c3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbiBpcyByZXNldApvbmNlIGEgcHJlZGljdGlvbiBpcyAi
YWNjZXB0ZWQiLCBhbmQgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSBpcyBy
ZXNldCBvbmNlIHdlIHN0YXJ0IGEgbmV3IGNvbXBvc2l0aW9uLgoKSW4gdGhlIGlPUyBhY2Nlc3Np
YmlsaXR5IHdyYXBwZXIsIHdlIGFjY2VzcyB0aGVzZSB2YWx1ZXMgYW5kIGFwcGx5IHRoZW0gdG8g
dGhlIHJlc3VsdGluZyBhdHRyaWJ1dGVkIHN0cmluZywgaWYgYXBwbGljYWJsZS4gVGhlCmF0dHJp
YnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMgbWV0aG9kIGhhbmRsZXMgdGhpcyB3
b3JrLCBhbmQgY2hlY2tzIHRoZSBsb2NhdGlvbiBhbmQgcmFuZ2Ugb2YgdGhlIHZhbHVlcyB0byBl
bnN1cmUKdGhhdCB0aGV5IGFyZSB2YWxpZC4KClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIG5l
dyB0ZXN0IHRoYXQgc2ltdWxhdGVzIGlubGluZSBwcmVkaWN0aW9ucyBhbmQgY2hlY2tzIHRoYXQg
dGhlIGNvcnJlY3QgYXR0cmlidXRlcyBhcmUgZXhwb3NlZC4KCiogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWw6IEFkZGVkLgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1Mu
bW06CihXZWJDb3JlOjphdHRyaWJ1dGVkU3RyaW5nU2V0Q29tcG9zaXRpb25BdHRyaWJ1dGVzKToK
KFdlYkNvcmU6OmF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmg6CiogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwOgooV2ViQ29yZTo6RWRpdG9yOjpzZXRDb21wb3Np
dGlvbik6CiogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaDoKKFdlYkNvcmU6OkVkaXRv
cjo6SW5saW5lVGV4dFByZWRpY3Rpb246OnJlc2V0KToKKFdlYkNvcmU6OkVkaXRvcjo6bGFzdFBy
ZXNlbnRlZFRleHRQcmVkaWN0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkVkaXRvcjo6bGFzdFByZXNl
bnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUgY29uc3QpOgotLS0KIC4uLi9pb3MvQWNjZXNzaWJp
bGl0eU9iamVjdElPUy5tbSAgICAgICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysKIC4u
Li9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaCAgICB8ICAzICsrCiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAgICAgICAgICAgfCAyNSArKysrKysrKysr
KysKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggICAgICAgICAgICAgICB8IDE2ICsr
KysrKysrCiAuLi4tcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQgfCAz
NyArKysrKysrKysrKysrKysrKwogLi4uL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3Ry
aW5nLmh0bWwgIHwgMzUgKysrKysrKysrKysrKysrKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LTE2L1Rlc3RFeHBlY3RhdGlvbnMgIHwgIDMgKysKIDcgZmlsZXMgY2hhbmdlZCwgMTU5IGluc2Vy
dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lv
cy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9i
amVjdElPUy5tbQppbmRleCA3OWMwMmZkMzJkMDEuLmRlNzNlZjM3YzcwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SU9TLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaCIKKyNpbXBvcnQgIkVkaXRvci5oIgogI2ltcG9ydCAiRXZlbnROYW1lcy5oIgogI2ltcG9y
dCAiSFRNTElucHV0RWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCkBAIC0yMDgsNiAr
MjA5LDQ0IEBAIHN0YXRpYyB2b2lkIGF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcgKmF0dHJTdHJpbmcsIFJlbmRlCiAgICAgICAgIFthdHRyU3RyaW5nIGFk
ZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCB2YWx1ZTpVSUFj
Y2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUgcmFuZ2U6cmFuZ2VdOwogfQogCitz
dGF0aWMgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nU2V0Q29tcG9zaXRpb25BdHRyaWJ1dGVzKE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcsIE5vZGUmIG5vZGUpCit7Cisj
aWYgSEFWRShJTkxJTkVfUFJFRElDVElPTlMpCisgICAgYXV0byYgZWRpdG9yID0gbm9kZS5kb2N1
bWVudCgpLmVkaXRvcigpOworCisgICAgYXV0byBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkID0g
ZWRpdG9yLmxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbkNvbXBsZXRlKCk7CisgICAgdW5zaWdu
ZWQgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0aCA9IGxhc3RQcmVzZW50ZWRDb21wbGV0
ZVdvcmQudGV4dC5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkQ29tcGxldGVX
b3JkUG9zaXRpb24gPSBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkLmxvY2F0aW9uOworCisgICAg
aWYgKCFhdHRyaWJ1dGVkU3RyaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWxhc3RQ
cmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dC5pc0VtcHR5KCkgJiYgbGFzdFByZXNlbnRlZENvbXBs
ZXRlV29yZFBvc2l0aW9uICsgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0aCA8PSBbYXR0
cmlidXRlZFN0cmluZyBsZW5ndGhdKSB7CisgICAgICAgIE5TUmFuZ2UgY29tcGxldGVXb3JkUmFu
Z2UgPSBOU01ha2VSYW5nZShsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24sIGxhc3RQ
cmVzZW50ZWRDb21wbGV0ZVdvcmRMZW5ndGgpOworICAgICAgICBpZiAoW1thdHRyaWJ1dGVkU3Ry
aW5nLnN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6Y29tcGxldGVXb3JkUmFuZ2VdIGlzRXF1YWxU
b1N0cmluZzpsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkLnRleHRdKQorICAgICAgICAgICAgW2F0
dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eUFjY2VwdGVkSW5saW5l
VGV4dENvbXBsZXRpb24gdmFsdWU6bGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50ZXh0IHJhbmdl
OmNvbXBsZXRlV29yZFJhbmdlXTsKKyAgICB9CisKKyAgICBpZiAoJm5vZGUgIT0gZWRpdG9yLmNv
bXBvc2l0aW9uTm9kZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGxhc3RQcmVzZW50
ZWRUZXh0UHJlZGljdGlvbiA9IGVkaXRvci5sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24oKTsK
KyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkTGVuZ3RoID0gbGFzdFByZXNlbnRlZFRleHRQcmVk
aWN0aW9uLnRleHQubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGFzdFByZXNlbnRlZFBvc2l0aW9u
ID0gbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uLmxvY2F0aW9uOworCisgICAgaWYgKCFsYXN0
UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dC5pc0VtcHR5KCkgJiYgbGFzdFByZXNlbnRlZFBv
c2l0aW9uICsgbGFzdFByZXNlbnRlZExlbmd0aCA8PSBbYXR0cmlidXRlZFN0cmluZyBsZW5ndGhd
KSB7CisgICAgICAgIE5TUmFuZ2UgcHJlc2VudGVkUmFuZ2UgPSBOU01ha2VSYW5nZShsYXN0UHJl
c2VudGVkUG9zaXRpb24sIGxhc3RQcmVzZW50ZWRMZW5ndGgpOworICAgICAgICBpZiAoIVtbYXR0
cmlidXRlZFN0cmluZy5zdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnByZXNlbnRlZFJhbmdlXSBp
c0VxdWFsVG9TdHJpbmc6bGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uLnRleHRdKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiB2YWx1ZTpbYXR0cmlidXRlZFN0cmlu
Zy5zdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnByZXNlbnRlZFJhbmdlXSByYW5nZTpwcmVzZW50
ZWRSYW5nZV07CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXR0cmlidXRlZFN0cmlu
Zyk7CisgICAgVU5VU0VEX1BBUkFNKG5vZGUpOworI2VuZGlmIC8vIEhBVkUoSU5MSU5FX1BSRURJ
Q1RJT05TKQorfQorCiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3Ry
aW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dCwgY29uc3QgU2ltcGxlUmFuZ2Um
LCBBWENvcmVPYmplY3Q6OlNwZWxsQ2hlY2spCiB7CiAgICAgLy8gU2tpcCBpbnZpc2libGUgdGV4
dC4KQEAgLTIyMyw2ICsyNjIsNyBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRy
aWJ1dGVkU3RyaW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIGF0dHJp
YnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChyZXN1bHQuZ2V0KCksIHJlbmRlcmVyLCByYW5nZSk7
CiAgICAgYXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKHJlc3VsdC5nZXQoKSwgcmVu
ZGVyZXIsIHJhbmdlKTsKICAgICBhdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShyZXN1bHQuZ2V0
KCksIHJlbmRlcmVyLCByYW5nZSk7CisgICAgYXR0cmlidXRlZFN0cmluZ1NldENvbXBvc2l0aW9u
QXR0cmlidXRlcyhyZXN1bHQuZ2V0KCksICpub2RlKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAppbmRleCAxMDU1MmMzZTk0ZDAu
LjZjNmJiOTFmODBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCkBA
IC00Niw2ICs0Niw5IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRv
a2VuQXR0YWNobWVudCA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5BCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3Np
YmlsaXR5VGV4dEF0dHJpYnV0ZUNvbnRleHQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlB
Y2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlU
ZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUiOwogCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFj
Y2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5SW5saW5l
VGV4dENvbXBsZXRpb24iOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5
QWNjZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJ
bmxpbmVUZXh0Q29tcGxldGlvbiI7CisKIEBpbnRlcmZhY2UgV0FLVmlldyAoaU9TQWNjZXNzaWJp
bGl0eSkKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZDsKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCBhZjYwNzFhM2ZmNjIuLjhjZjVlMzg0ZmI3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjMyMyw2ICsyMzIzLDkgQEAgdm9pZCBFZGl0b3I6OnNl
dENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9u
VW5kZXJsaW4KICAgICAgICAgICAgICAgICAgICAgcmFuZ2UubG9jYXRpb24gKz0gYmFzZU9mZnNl
dDsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKG1faXNIYW5kbGluZ0FjY2VwdGVk
Q2FuZGlkYXRlKQorICAgICAgICAgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9u
ID0geyB0ZXh0LCBiYXNlT2Zmc2V0IH07CisKICAgICAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVy
ID0gYmFzZU5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyZXItPnJlcGFp
bnQoKTsKIApAQCAtMjMzNywxMCArMjM0MCwzMiBAQCB2b2lkIEVkaXRvcjo6c2V0Q29tcG9zaXRp
b24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgog
ICAgICAgICBpZiAocHJldmlvdXNDb21wb3NpdGlvbk5vZGUgJiYgcHJldmlvdXNDb21wb3NpdGlv
bk5vZGUgIT0gbV9jb21wb3NpdGlvbk5vZGUpIHsKICAgICAgICAgICAgIGF1dG8gc3RhdGUgPSBt
X2NvbXBvc2l0aW9uTm9kZSA/IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OkluUHJv
Z3Jlc3MgOiBBWE9iamVjdENhY2hlOjpDb21wb3NpdGlvblN0YXRlOjpFbmRlZDsKICAgICAgICAg
ICAgIGNhY2hlLT5vblRleHRDb21wb3NpdGlvbkNoYW5nZSgqcHJldmlvdXNDb21wb3NpdGlvbk5v
ZGUsIHN0YXRlLCB0cnVlKTsKKworICAgICAgICAgICAgLy8gV2ViS2l0IG5lZWRzIHRvIHN0b3Jl
IGlubGluZS1wcmVkaWN0ZWQgd29yZHMgdG8gZXhwb3NlIHRoZWlyIHBvc2l0aW9uIGFuZCB0ZXh0
IHZhbHVlcyB0byBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLgorICAgICAgICAgICAgaWYgKHN0YXRl
ID09IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OkVuZGVkICYmICFtX2xhc3RQcmVz
ZW50ZWRUZXh0UHJlZGljdGlvbi50ZXh0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFN0
cmluZyBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHQgPSBwcmV2aW91c0NvbXBvc2l0aW9uTm9k
ZS0+d2hvbGVUZXh0KCk7CisgICAgICAgICAgICAgICAgc2l6ZV90IHdvcmRTdGFydCA9IDA7Cisg
ICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dC5sZW5ndGgoKSkg
eworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBwb3NpdGlvbiA9IHByZXZpb3VzQ29t
cG9zaXRpb25Ob2RlVGV4dC5sZW5ndGgoKSAtIDE7IHBvc2l0aW9uID4gMDsgcG9zaXRpb24tLSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlXaGl0ZXNwYWNlKHByZXZpb3Vz
Q29tcG9zaXRpb25Ob2RlVGV4dFtwb3NpdGlvbl0pKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd29yZFN0YXJ0ID0gcG9zaXRpb24gKyAxOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHByZXZpb3VzQ29tcG9zaXRp
b25Ob2RlVGV4dCA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dC5zdWJzdHJpbmcod29yZFN0
YXJ0KTsKKworICAgICAgICAgICAgICAgIFN0cmluZyBjb21wbGV0ZVByZWRpY3RlZFdvcmQgPSBt
YWtlU3RyaW5nKHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dCwgbV9sYXN0UHJlc2VudGVkVGV4
dFByZWRpY3Rpb24udGV4dCk7CisgICAgICAgICAgICAgICAgbV9sYXN0UHJlc2VudGVkVGV4dFBy
ZWRpY3Rpb25Db21wbGV0ZSA9IHsgY29tcGxldGVQcmVkaWN0ZWRXb3JkLCB3b3JkU3RhcnQgfTsK
KworICAgICAgICAgICAgICAgIC8vIFJlc2V0IGxhc3QgcHJlc2VudGVkIHByZWRpY3Rpb24gc2lu
Y2UgYSBjYW5kaWRhdGUgd2FzIGFjY2VwdGVkLgorICAgICAgICAgICAgICAgIG1fbGFzdFByZXNl
bnRlZFRleHRQcmVkaWN0aW9uLnJlc2V0KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKG1fY29tcG9zaXRpb25Ob2RlKSB7CiAgICAgICAgICAgICBhdXRvIHN0YXRlID0g
cHJldmlvdXNDb21wb3NpdGlvbk5vZGUgPyBBWE9iamVjdENhY2hlOjpDb21wb3NpdGlvblN0YXRl
OjpJblByb2dyZXNzIDogQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6U3RhcnRlZDsK
ICAgICAgICAgICAgIGNhY2hlLT5vblRleHRDb21wb3NpdGlvbkNoYW5nZSgqbV9jb21wb3NpdGlv
bk5vZGUsIHN0YXRlLCB0cnVlKTsKKyAgICAgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVk
aWN0aW9uQ29tcGxldGUucmVzZXQoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKaW5kZXggNTQxMmFmYzJiMTc5Li45OGZhZmNjNjQwMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaApAQCAtNTk5LDYgKzU5OSwxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Bhc3Rp
bmdGcm9tTWVudU9yS2V5QmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGFzdGluZ0Zyb21NZW51
T3JLZXlCaW5kaW5nOyB9CiAgICAgYm9vbCBpc0NvcHlpbmdGcm9tTWVudU9yS2V5QmluZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fY29weWluZ0Zyb21NZW51T3JLZXlCaW5kaW5nOyB9CiAKKyAgICBz
dHJ1Y3QgSW5saW5lVGV4dFByZWRpY3Rpb24geworICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAg
ICAgc2l6ZV90IGxvY2F0aW9uIHsgMCB9OworICAgICAgICB2b2lkIHJlc2V0KCkKKyAgICAgICAg
eworICAgICAgICAgICAgdGV4dCA9ICIiX3M7CisgICAgICAgICAgICBsb2NhdGlvbiA9IDA7Cisg
ICAgICAgIH0KKyAgICB9OworCisgICAgSW5saW5lVGV4dFByZWRpY3Rpb24gbGFzdFByZXNlbnRl
ZFRleHRQcmVkaWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRp
Y3Rpb247IH0KKyAgICBJbmxpbmVUZXh0UHJlZGljdGlvbiBsYXN0UHJlc2VudGVkVGV4dFByZWRp
Y3Rpb25Db21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0
aW9uQ29tcGxldGU7IH0KKwogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX2RvY3VtZW50OyB9CiAKQEAgLTY4OSw2ICs3MDIsOSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9jb3B5aW5nRnJvbU1lbnVPcktleUJpbmRpbmcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9wYXN0aW5nRnJvbU1lbnVPcktleUJpbmRpbmcgeyBmYWxzZSB9OwogCisgICAgSW5saW5l
VGV4dFByZWRpY3Rpb24gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb247CisgICAgSW5saW5l
VGV4dFByZWRpY3Rpb24gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZTsKKwog
I2lmIEVOQUJMRShURUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oTUFDKQog
ICAgIGJvb2wgc2hvdWxkRGV0ZWN0VGVsZXBob25lTnVtYmVycygpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRp
Y3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5n
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA5
ZDY4YzU2NzA5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNyBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgYXR0cmli
dXRlZCBzdHJpbmcgZm9yIGlubGluZSBwcmVkaWN0aW9ucyBpcyBhY2N1cmF0ZS4KKworR29vZCBt
b3sKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSAiLkFwcGxlU3lzdGVtVUlG
b250IjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gIlN5c3RlbSBGb250IFJl
Z3VsYXIiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxMTsKK30KKworU2lt
dWxhdGluZyBwcmVzZW50ZWQgY29tcGxldGlvbjoKK0dvb2QgbW97CisgICAgVUlBY2Nlc3NpYmls
aXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3Np
YmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vz
c2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9cm5pbmd7CisgICAgVUlBY2Nlc3NpYmlsaXR5
SW5saW5lVGV4dENvbXBsZXRpb24gPSBybmluZzsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZv
bnRGYW1pbHkgPSAiLkFwcGxlU3lzdGVtVUlGb250IjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tl
bkZvbnROYW1lID0gIlN5c3RlbSBGb250IFJlZ3VsYXIiOworICAgIFVJQWNjZXNzaWJpbGl0eVRv
a2VuRm9udFNpemUgPSAxMTsKK30KKworU2ltdWxhdGluZyBhY2NlcHRlZCBjb21wbGV0aW9uOgor
R29vZCB7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3Rl
bVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9u
dCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9bW9y
bmluZ3sKKyAgICBVSUFjY2Vzc2liaWxpdHlBY2NlcHRlZElubGluZVRleHRDb21wbGV0aW9uID0g
bW9ybmluZzsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSAiLkFwcGxlU3lz
dGVtVUlGb250IjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gIlN5c3RlbSBG
b250IFJlZ3VsYXIiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxMTsKK30K
KworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGlu
ZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRiNDM5ZjY4ZWNl
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVs
YXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sCkBAIC0wLDAgKzEs
MzUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKwor
PGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2li
aWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworPGlucHV0IGlk
PSJlZGl0YWJsZSIgdHlwZT0idGV4dCIgdGFiaW5kZXg9IjAiPjwvaW5wdXQ+CisKKzxzY3JpcHQ+
Cit2YXIgcmVzdWx0ID0gIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGF0dHJpYnV0ZWQgc3Ry
aW5nIGZvciBpbmxpbmUgcHJlZGljdGlvbnMgaXMgYWNjdXJhdGUuXG5cbiI7CisKK2lmICh3aW5k
b3cudGV4dElucHV0Q29udHJvbGxlciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKKyAgICBlZGl0YWJsZS5mb2N1cygpOworICAgIHZhciBpbnB1dCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIGlucHV0Lmluc2VydFRleHQoIkdvb2QgbW8i
KQorICAgIHJlc3VsdCArPSBgJHtpbnB1dC5hdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UoMCwgNyl9
XG5cbmA7CisKKyAgICByZXN1bHQgKz0gIlNpbXVsYXRpbmcgcHJlc2VudGVkIGNvbXBsZXRpb246
XG4iOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgicm5pbmciLCAwLCA1
LCBmYWxzZSwgWyB7IGZyb206ICIwIiwgbGVuZ3RoOiAiNSIsIGNvbG9yOiAiI0ZGMDAwMDMzIiwg
Zm9yZWdyb3VuZENvbG9yOiAiI0ZGMDAwMEZGIiB9IF0sIHVuZGVmaW5lZCk7CisgICAgcmVzdWx0
ICs9IGAke2lucHV0LmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSgwLCAxMil9XG5cbmA7CisKKyAg
ICByZXN1bHQgKz0gIlNpbXVsYXRpbmcgYWNjZXB0ZWQgY29tcGxldGlvbjpcbiI7CisgICAgdGV4
dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCIiLCAwLCAwLCBmYWxzZSwgdW5kZWZpbmVk
LCB1bmRlZmluZWQpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5zZXJ0VGV4dCgicm5pbmci
KTsKKyAgICByZXN1bHQgKz0gYCR7aW5wdXQuYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKDAsIDEy
KX1cblxuYDsKKworICAgIGRlYnVnKHJlc3VsdCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xNi9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTE2L1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggM2ExZWUyNGEwMWY3Li44OWYwNmU3ZTgyNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNCwzICsxNCw2IEBAIGZhc3QvaW1hZ2VzL3Bh
Z2Utd2lkZS1hbmltYXRpb24tdG9nZ2xlLmh0bWwgWyBTa2lwIF0KIGZhc3QvaW1hZ2VzL3BhZ2V3
aWRlLXBsYXktcGF1c2UtYW5pbWF0ZVRyYW5zZm9ybS1zdmctYW5pbWF0aW9uLmh0bWwgWyBTa2lw
IF0gCiBmYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLW9mZnNjcmVlbi1hbmltYXRpb25z
Lmh0bWwgWyBTa2lwIF0KIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLWluLWh0bWwuaHRtbCBbIFNraXAg
XQorCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjEwNTYKK2Fj
Y2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0
cmluZy5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467592</attachid>
            <date>2023-09-07 16:30:47 -0700</date>
            <delta_ts>2023-09-07 17:31:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230907163047.patch</filename>
            <type>text/plain</type>
            <size>21158</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSAwZWMzNzQ4ZjcwYjdjN2FlZTk5NjY4NjI0ZmY4ZjhmYzI4ZmQ2MTM4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgNSBTZXAgMjAyMyAyMjo1NjozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gYWNjZXNzaWJpbGl0eSBvYmplY3RzLCB3aGljaCBhcmUgdXBkYXRlZCBpbgpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb246Ci0gbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb246IHRoZSAicmVzdCIgb2YgdGhlIHdvcmQgYmVpbmcg
cHJlZGljdGVkLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHRleHQgIm9wcG9ydHVuIiBoYWQgYmVlbiB0
eXBlZCwgYW5kCiJpdHkiIHdhcyBwcmVzZW50ZWQgYXMgYSBwcmVkaWN0aW9uLCB3ZSB3b3VsZCBz
dG9yZSAiaXR5Ii4KLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbkNvbXBsZXRlOiB0aGUg
d2hvbGUgd29yZCBiZWluZyBwcmVkaWN0ZWQuIFVzaW5nIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3
ZSB3b3VsZCBzdG9yZSB0aGUgd2hvbGUgd29yZCwKIm9wcG9ydHVuaXR5Ii4KCkluIGJvdGggY2Fz
ZXMsIHdlIHN0b3JlIHRoZSBzdHJpbmcgdmFsdWUgYW5kIHRoZSBwb3NpdGlvbiwgb2Zmc2V0IHRv
IHRoZSBzdGFydCBvZiB0aGUgZWRpdG9yLiBMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24gaXMg
cmVzZXQKb25jZSBhIHByZWRpY3Rpb24gaXMgImFjY2VwdGVkIiwgYW5kIG1fbGFzdFByZXNlbnRl
ZFRleHRQcmVkaWN0aW9uQ29tcGxldGUgaXMgcmVzZXQgb25jZSB3ZSBzdGFydCBhIG5ldyBjb21w
b3NpdGlvbi4KCkluIHRoZSBpT1MgYWNjZXNzaWJpbGl0eSB3cmFwcGVyLCB3ZSBhY2Nlc3MgdGhl
c2UgdmFsdWVzIGFuZCBhcHBseSB0aGVtIHRvIHRoZSByZXN1bHRpbmcgYXR0cmlidXRlZCBzdHJp
bmcsIGlmIGFwcGxpY2FibGUuIFRoZQphdHRyaWJ1dGVkU3RyaW5nU2V0Q29tcG9zaXRpb25BdHRy
aWJ1dGVzIG1ldGhvZCBoYW5kbGVzIHRoaXMgd29yaywgYW5kIGNoZWNrcyB0aGUgbG9jYXRpb24g
YW5kIHJhbmdlIG9mIHRoZSB2YWx1ZXMgdG8gZW5zdXJlCnRoYXQgdGhleSBhcmUgdmFsaWQuCgpU
aGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYSBuZXcgdGVzdCB0aGF0IHNpbXVsYXRlcyBpbmxpbmUg
cHJlZGljdGlvbnMgYW5kIGNoZWNrcyB0aGF0IHRoZSBjb3JyZWN0IGF0dHJpYnV0ZXMgYXJlIGV4
cG9zZWQuCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUt
cHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRy
aWJ1dGVkLXN0cmluZy5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTYv
VGVzdEV4cGVjdGF0aW9uczoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFu
Z2UpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24pOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6SW5saW5lVGV4dFByZWRpY3Rpb246OnJlc2V0KToKKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbiBj
b25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0UHJlc2VudGVkVGV4dFBy
ZWRpY3Rpb25Db21wbGV0ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKFdlYkNvcmU6OmF0dHJpYnV0ZWRT
dHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMpOgooV2ViQ29yZTo6YXR0cmlidXRlZFN0cmlu
Z0NyZWF0ZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MuaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHA6CihXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKLS0tCiAuLi4vV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAxMSArKysrKy0KIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICA2ICstLQogLi4uL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgICAgIHwgMjkgKysrKysrKysrKysrKysrCiAu
Li4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggICAgICAgfCAyMSArKysrKysr
KysrKwogLi4uL0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCAgICAgICAgICAgIHwgIDIg
KwogLi4uL2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tICAgICAgICAgICAgIHwgMzcgKysr
KysrKysrKysrKysrKysrKwogLi4uL2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5oICAgIHwgIDMgKysKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCAgICAgICAg
ICAgICB8IDEwICsrLS0tCiAuLi4tcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3Rl
ZC50eHQgfCAzNyArKysrKysrKysrKysrKysrKysrCiAuLi4vaW5saW5lLXByZWRpY3Rpb24tYXR0
cmlidXRlZC1zdHJpbmcuaHRtbCAgfCAzNSArKysrKysrKysrKysrKysrKysKIExheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zICB8ICAzICsrCiAxMSBmaWxlcyBjaGFu
Z2VkLCAxODQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0
aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1h
dHRyaWJ1dGVkLXN0cmluZy5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKaW5kZXggNWY4MDhkZWU0YWFiLi4zMTlhZTAzZTllY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTcz
MSwxMyArMTczMSwyMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVmFsaWRpdHlDaGFuZ2UoRWxl
bWVudCYgZWxlbWVudCkKICAgICBwb3N0Tm90aWZpY2F0aW9uKGdldCgmZWxlbWVudCksIG51bGxw
dHIsIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6Om9u
VGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmIG5vZGUsIENvbXBvc2l0aW9uU3RhdGUgY29tcG9z
aXRpb25TdGF0ZSwgYm9vbCB2YWx1ZUNoYW5nZWQpCit2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4
dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmIG5vZGUsIENvbXBvc2l0aW9uU3RhdGUgY29tcG9zaXRp
b25TdGF0ZSwgYm9vbCB2YWx1ZUNoYW5nZWQsIFN0cmluZyB0ZXh0LCBzaXplX3QgcG9zaXRpb24s
IGJvb2wgaGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSkKIHsKICNpZiBIQVZFKElOTElORV9QUkVE
SUNUSU9OUykKICAgICBhdXRvKiBvYmplY3QgPSBnZXRPckNyZWF0ZSgmbm9kZSk7CiAgICAgaWYg
KCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgaWYgKHZhbHVlQ2hhbmdlZCkKKyAgICAgICAgb2JqZWN0LT5zZXRMYXN0UHJlc2VudGVkVGV4
dFByZWRpY3Rpb24obm9kZSwgY29tcG9zaXRpb25TdGF0ZSwgdGV4dCwgcG9zaXRpb24sIGhhbmRs
aW5nQWNjZXB0ZWRDYW5kaWRhdGUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odGV4dCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxpbmdBY2Nl
cHRlZENhbmRpZGF0ZSk7CisjZW5kaWYKKwogICAgIGlmIChhdXRvKiBvYnNlcnZhYmxlT2JqZWN0
ID0gb2JqZWN0LT5vYnNlcnZhYmxlT2JqZWN0KCkpCiAgICAgICAgIG9iamVjdCA9IG9ic2VydmFi
bGVPYmplY3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmgKaW5kZXggYmNmZGE5NmU2Yzg1Li5iNDE3OTk2MTBkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0xODcsOCArMTg3LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiBwdWJs
aWM6Ci0gICAgZW51bSBjbGFzcyBDb21wb3NpdGlvblN0YXRlIDogdWludDhfdCB7IFN0YXJ0ZWQs
IEluUHJvZ3Jlc3MsIEVuZGVkIH07Ci0KICAgICB2b2lkIG9uUGFnZUFjdGl2aXR5U3RhdGVDaGFu
Z2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU+KTsKICAgICB2b2lkIHNldFBhZ2VBY3Rpdml0eVN0
YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlPiBzdGF0ZSkgeyBtX3BhZ2VBY3Rpdml0eVN0YXRl
ID0gc3RhdGU7IH0KICAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZT4gcGFnZUFjdGl2aXR5U3Rh
dGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBY3Rpdml0eVN0YXRlOyB9CkBAIC0yMDMsNyArMjAx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgb25UZXh0U2VjdXJpdHlDaGFuZ2VkKEhUTUxJbnB1dEVs
ZW1lbnQmKTsKICAgICB2b2lkIG9uVGl0bGVDaGFuZ2UoRG9jdW1lbnQmKTsKICAgICB2b2lkIG9u
VmFsaWRpdHlDaGFuZ2UoRWxlbWVudCYpOwotICAgIHZvaWQgb25UZXh0Q29tcG9zaXRpb25DaGFu
Z2UoTm9kZSYsIENvbXBvc2l0aW9uU3RhdGUsIGJvb2wpOworICAgIHZvaWQgb25UZXh0Q29tcG9z
aXRpb25DaGFuZ2UoTm9kZSYsIENvbXBvc2l0aW9uU3RhdGUsIGJvb2wsIFN0cmluZywgc2l6ZV90
LCBib29sKTsKICAgICB2b2lkIHZhbHVlQ2hhbmdlZChFbGVtZW50Kik7CiAgICAgdm9pZCBjaGVj
a2VkU3RhdGVDaGFuZ2VkKE5vZGUqKTsKICAgICB2b2lkIGF1dG9maWxsVHlwZUNoYW5nZWQoTm9k
ZSopOwpAQCAtNzQ4LDcgKzc0Niw3IEBAIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uU2Vs
ZWN0ZWRDaGFuZ2VkKE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4
dFNlY3VyaXR5Q2hhbmdlZChIVE1MSW5wdXRFbGVtZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpvblRpdGxlQ2hhbmdlKERvY3VtZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpvblZhbGlkaXR5Q2hhbmdlKEVsZW1lbnQmKSB7IH0KLWlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmLCBDb21wb3NpdGlvblN0
YXRlLCBib29sKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBvc2l0
aW9uQ2hhbmdlKE5vZGUmLCBDb21wb3NpdGlvblN0YXRlLCBib29sLCBTdHJpbmcsIHNpemVfdCwg
Ym9vbCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjp2YWx1ZUNoYW5nZWQoRWxlbWVu
dCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6b25Gb2N1c0NoYW5nZShOb2RlKiwg
Tm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6b25QYWdlQWN0aXZpdHlTdGF0
ZUNoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZT4pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggZjQyZmIw
ZDAwNzRmLi4zNjRlZWViYjMxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtNDM3Myw2ICs0MzczLDM1IEBAIFN0
cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpvdXRlckhUTUwoKSBjb25zdAogICAgIHJldHVybiBl
bGVtZW50ID8gZWxlbWVudC0+b3V0ZXJIVE1MKCkgOiBTdHJpbmcoKTsKIH0KIAorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RQcmVzZW50
ZWRUZXh0UHJlZGljdGlvbihOb2RlJiBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQ29tcG9zaXRp
b25TdGF0ZSBzdGF0ZSwgU3RyaW5nIHRleHQsIHNpemVfdCBsb2NhdGlvbiwgYm9vbCBoYW5kbGlu
Z0FjY2VwdGVkQ2FuZGlkYXRlKQoreworICAgIGlmIChoYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRl
KQorICAgICAgICBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbiA9IHsgdGV4dCwgbG9jYXRp
b24gfTsKKworICAgIGlmIChzdGF0ZSA9PSBDb21wb3NpdGlvblN0YXRlOjpFbmRlZCAmJiAhbGFz
dFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKCkudGV4dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3Ry
aW5nIHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dCA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2Rl
LmlzVGV4dE5vZGUoKSA/IGR5bmFtaWNEb3duY2FzdDxUZXh0PihwcmV2aW91c0NvbXBvc2l0aW9u
Tm9kZSktPndob2xlVGV4dCgpIDogU3RyaW5nKCk7CisgICAgICAgIHNpemVfdCB3b3JkU3RhcnQg
PSAwOworICAgICAgICBpZiAocHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0Lmxlbmd0aCgpKSB7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBwb3NpdGlvbiA9IHByZXZpb3VzQ29tcG9zaXRpb25O
b2RlVGV4dC5sZW5ndGgoKSAtIDE7IHBvc2l0aW9uID4gMDsgcG9zaXRpb24tLSkgeworICAgICAg
ICAgICAgICAgIGlmIChpc0FTQ0lJV2hpdGVzcGFjZShwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRl
eHRbcG9zaXRpb25dKSkgeworICAgICAgICAgICAgICAgICAgICB3b3JkU3RhcnQgPSBwb3NpdGlv
biArIDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRl
eHQgPSBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHQuc3Vic3RyaW5nKHdvcmRTdGFydCk7CisK
KyAgICAgICAgU3RyaW5nIGNvbXBsZXRlUHJlZGljdGVkV29yZCA9IG1ha2VTdHJpbmcocHJldmlv
dXNDb21wb3NpdGlvbk5vZGVUZXh0LCBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbi50ZXh0
KTsKKyAgICAgICAgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSA9IHsgY29t
cGxldGVQcmVkaWN0ZWRXb3JkLCB3b3JkU3RhcnQgfTsKKworICAgICAgICAvLyBSZXNldCBsYXN0
IHByZXNlbnRlZCBwcmVkaWN0aW9uIHNpbmNlIGEgY2FuZGlkYXRlIHdhcyBhY2NlcHRlZC4KKyAg
ICAgICAgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24ucmVzZXQoKTsKKyAgICB9IGVsc2Ug
aWYgKHN0YXRlID09IENvbXBvc2l0aW9uU3RhdGU6OkluUHJvZ3Jlc3MgfHwgc3RhdGUgPT0gQ29t
cG9zaXRpb25TdGF0ZTo6U3RhcnRlZCkKKyAgICAgICAgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRp
Y3Rpb25Db21wbGV0ZS5yZXNldCgpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CisKIG5hbWVzcGFjZSBBY2Nlc3NpYmlsaXR5IHsKIAogI2lmICFQTEFURk9STShNQUMpICYmICFV
U0UoQVRTUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCmluZGV4IDA5MDJhNjM1NzljNy4uZjVhNWVhNjQ5YTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAt
NzY0LDYgKzc2NCwyMyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShN
T0RFTF9FTEVNRU5UKQogICAgIFZlY3RvcjxSZXRhaW5QdHI8aWQ+PiBtb2RlbEVsZW1lbnRDaGls
ZHJlbigpIG92ZXJyaWRlOwogI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IHN0cnVjdCBJbmxpbmVUZXh0UHJlZGljdGlvbiB7CisgICAgICAgIFN0cmluZyB0ZXh0OworICAg
ICAgICBzaXplX3QgbG9jYXRpb24geyAwIH07CisgICAgICAgIHZvaWQgcmVzZXQoKQorICAgICAg
ICB7CisgICAgICAgICAgICB0ZXh0ID0gIiJfczsKKyAgICAgICAgICAgIGxvY2F0aW9uID0gMDsK
KyAgICAgICAgfQorICAgIH07CisKKyAgICBJbmxpbmVUZXh0UHJlZGljdGlvbiBsYXN0UHJlc2Vu
dGVkVGV4dFByZWRpY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcmVzZW50ZWRUZXh0UHJl
ZGljdGlvbjsgfQorICAgIElubGluZVRleHRQcmVkaWN0aW9uIGxhc3RQcmVzZW50ZWRUZXh0UHJl
ZGljdGlvbkNvbXBsZXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRp
Y3Rpb25Db21wbGV0ZTsgfQorICAgIHZvaWQgc2V0TGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9u
KE5vZGUmLCBDb21wb3NpdGlvblN0YXRlLCBTdHJpbmcsIHNpemVfdCwgYm9vbCk7CisjZW5kaWYK
KwogcHJvdGVjdGVkOgogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QoKSA9IGRlZmF1bHQ7CiAKQEAg
LTgyOCw2ICs4NDUsMTAgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IG1fY2FjaGVkVmlzaWJsZUNoYXJhY3RlclJhbmdlOwogICAgIC8vIFRoaXMgaXMg
c3RkOjpudWxsb3B0IGlmIHdlIGhhdmVuJ3QgY2FjaGVkIGFueSBpbnB1dCB5ZXQuCiAgICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4s
IEZsb2F0UmVjdCwgSW50UmVjdD4+IG1fY2FjaGVkVmlzaWJsZUNoYXJhY3RlclJhbmdlSW5wdXRz
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgSW5saW5lVGV4dFByZWRpY3Rpb24gbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb247CisgICAgSW5saW5lVGV4dFByZWRpY3Rpb24gbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZTsKKyNlbmRpZgogcHJvdGVjdGVkOiAv
LyBGSVhNRTogTWFrZSB0aGUgZGF0YSBtZW1iZXJzIHByaXZhdGUuCiAgICAgLy8gRklYTUU6IFRo
aXMgY2FuIGJlIHJlcGxhY2VkIGJ5IEFYQW5jZXN0b3JGbGFncy4KICAgICBBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgbV9pc0lnbm9yZWRGcm9tUGFyZW50RGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLmgKaW5kZXggN2MyNjU2YzhhMjA4Li5jZTRjODQzZDYwZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCkBAIC03NzEsNiArNzcxLDggQEAgZW51bSBjbGFzcyBBY2Nlc3NpYmls
aXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzIHsKIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1h
dGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9OwogZW51bSBjbGFz
cyBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSB7IFByZVN1YnNjcmlwdCwg
UHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJzY3JpcHQsIFBvc3RTdXBlcnNjcmlwdCB9OwogCitlbnVt
IGNsYXNzIENvbXBvc2l0aW9uU3RhdGUgOiB1aW50OF90IHsgU3RhcnRlZCwgSW5Qcm9ncmVzcywg
RW5kZWQgfTsKKwogLy8gUmVsYXRpb25zaGlwcyBiZXR3ZWVuIEFYIG9iamVjdHMuCiBlbnVtIGNs
YXNzIEFYUmVsYXRpb25UeXBlIDogdWludDhfdCB7CiAgICAgTm9uZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9T
Lm1tCmluZGV4IDc5YzAyZmQzMmQwMS4uZGRkNjE0YThkZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1Mu
bW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgor
I2ltcG9ydCAiRWRpdG9yLmgiCiAjaW1wb3J0ICJFdmVudE5hbWVzLmgiCiAjaW1wb3J0ICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKQEAgLTIwOCw2ICsyMDksNDEg
QEAgc3RhdGljIHZvaWQgYXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyAqYXR0clN0cmluZywgUmVuZGUKICAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmli
dXRlOlVJQWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0IHZhbHVlOlVJQWNjZXNzaWJp
bGl0eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSByYW5nZTpyYW5nZV07CiB9CiAKK3N0YXRpYyB2
b2lkIGF0dHJpYnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMoTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
K3sKKyNpZiBIQVZFKElOTElORV9QUkVESUNUSU9OUykKKyAgICBpZiAoIXJlbmRlcmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWZQdHIgb2JqZWN0ID0gcmVuZGVyZXItPmRvY3VtZW50KCku
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlcik7CisKKyAgICBhdXRvIGxhc3RQ
cmVzZW50ZWRDb21wbGV0ZVdvcmQgPSBvYmplY3QtPmxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlv
bkNvbXBsZXRlKCk7CisgICAgdW5zaWduZWQgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0
aCA9IGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dC5sZW5ndGgoKTsKKyAgICB1bnNpZ25l
ZCBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24gPSBsYXN0UHJlc2VudGVkQ29tcGxl
dGVXb3JkLmxvY2F0aW9uOworCisgICAgaWYgKCFsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkLnRl
eHQuaXNFbXB0eSgpICYmIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRQb3NpdGlvbiArIGxhc3RQ
cmVzZW50ZWRDb21wbGV0ZVdvcmRMZW5ndGggPD0gW2F0dHJpYnV0ZWRTdHJpbmcgbGVuZ3RoXSkg
eworICAgICAgICBOU1JhbmdlIGNvbXBsZXRlV29yZFJhbmdlID0gTlNNYWtlUmFuZ2UobGFzdFBy
ZXNlbnRlZENvbXBsZXRlV29yZFBvc2l0aW9uLCBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkTGVu
Z3RoKTsKKyAgICAgICAgaWYgKFtbYXR0cmlidXRlZFN0cmluZy5zdHJpbmcgc3Vic3RyaW5nV2l0
aFJhbmdlOmNvbXBsZXRlV29yZFJhbmdlXSBpc0VxdWFsVG9TdHJpbmc6bGFzdFByZXNlbnRlZENv
bXBsZXRlV29yZC50ZXh0XSkKKyAgICAgICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJp
YnV0ZTpVSUFjY2Vzc2liaWxpdHlBY2NlcHRlZElubGluZVRleHRDb21wbGV0aW9uIHZhbHVlOmxh
c3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dCByYW5nZTpjb21wbGV0ZVdvcmRSYW5nZV07Cisg
ICAgfQorCisgICAgYXV0byBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24gPSBvYmplY3QtPmxh
c3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbigpOworICAgIHVuc2lnbmVkIGxhc3RQcmVzZW50ZWRM
ZW5ndGggPSBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dC5sZW5ndGgoKTsKKyAgICB1
bnNpZ25lZCBsYXN0UHJlc2VudGVkUG9zaXRpb24gPSBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rp
b24ubG9jYXRpb247CisKKyAgICBpZiAoIWxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbi50ZXh0
LmlzRW1wdHkoKSAmJiBsYXN0UHJlc2VudGVkUG9zaXRpb24gKyBsYXN0UHJlc2VudGVkTGVuZ3Ro
IDw9IFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0pIHsKKyAgICAgICAgTlNSYW5nZSBwcmVzZW50
ZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGxhc3RQcmVzZW50ZWRQb3NpdGlvbiwgbGFzdFByZXNlbnRl
ZExlbmd0aCk7CisgICAgICAgIGlmICghW1thdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyBzdWJzdHJp
bmdXaXRoUmFuZ2U6cHJlc2VudGVkUmFuZ2VdIGlzRXF1YWxUb1N0cmluZzpsYXN0UHJlc2VudGVk
VGV4dFByZWRpY3Rpb24udGV4dF0pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW2F0
dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eUlubGluZVRleHRDb21w
bGV0aW9uIHZhbHVlOlthdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6
cHJlc2VudGVkUmFuZ2VdIHJhbmdlOnByZXNlbnRlZFJhbmdlXTsKKyAgICB9CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShhdHRyaWJ1dGVkU3RyaW5nKTsKKyAgICBVTlVTRURfUEFSQU0ocmVuZGVy
ZXIpOworI2VuZGlmIC8vIEhBVkUoSU5MSU5FX1BSRURJQ1RJT05TKQorfQorCiBSZXRhaW5QdHI8
TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0
cmluZ1ZpZXcgdGV4dCwgY29uc3QgU2ltcGxlUmFuZ2UmLCBBWENvcmVPYmplY3Q6OlNwZWxsQ2hl
Y2spCiB7CiAgICAgLy8gU2tpcCBpbnZpc2libGUgdGV4dC4KQEAgLTIyMyw2ICsyNTksNyBAQCBS
ZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKE5vZGUq
IG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIGF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZl
bChyZXN1bHQuZ2V0KCksIHJlbmRlcmVyLCByYW5nZSk7CiAgICAgYXR0cmlidXRlU3RyaW5nU2V0
QmxvY2txdW90ZUxldmVsKHJlc3VsdC5nZXQoKSwgcmVuZGVyZXIsIHJhbmdlKTsKICAgICBhdHRy
aWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShyZXN1bHQuZ2V0KCksIHJlbmRlcmVyLCByYW5nZSk7Cisg
ICAgYXR0cmlidXRlZFN0cmluZ1NldENvbXBvc2l0aW9uQXR0cmlidXRlcyhyZXN1bHQuZ2V0KCks
IHJlbmRlcmVyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MuaAppbmRleCAxMDU1MmMzZTk0ZDAuLjZjNmJiOTFmODBjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCkBAIC00Niw2ICs0Niw5IEBAIHN0YXRp
YyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2VuQXR0YWNobWVudCA9IEAiVUlB
Y2Nlc3NpYmlsaXR5VG9rZW5BCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxp
dHlUZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3NpYmlsaXR5VGV4dEF0dHJpYnV0ZUNv
bnRleHQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENv
bnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNv
ZGUiOwogCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0
Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5SW5saW5lVGV4dENvbXBsZXRpb24iOworc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxpbmVUZXh0Q29t
cGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiI7
CisKIEBpbnRlcmZhY2UgV0FLVmlldyAoaU9TQWNjZXNzaWJpbGl0eSkKIC0gKEJPT0wpYWNjZXNz
aWJpbGl0eUlzSWdub3JlZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBh
ZjYwNzFhM2ZmNjIuLmNmNTY2ZDkwMWM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtMjE4OCw3ICsyMTg4LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0
cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUpCiAgICAgbV9jdXN0b21Db21wb3Np
dGlvbkFubm90YXRpb25zLmNsZWFyKCk7CiAKICAgICBpZiAoYXV0byogY2FjaGUgPSBtX2RvY3Vt
ZW50LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOyBjYWNoZSAmJiBwcmV2aW91c0NvbXBvc2l0aW9u
Tm9kZSkKLSAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpwcmV2aW91c0Nv
bXBvc2l0aW9uTm9kZSwgQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6RW5kZWQsIGZh
bHNlKTsKKyAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpwcmV2aW91c0Nv
bXBvc2l0aW9uTm9kZSwgQ29tcG9zaXRpb25TdGF0ZTo6RW5kZWQsIGZhbHNlLCB0ZXh0LCBtX2Nv
bXBvc2l0aW9uU3RhcnQsIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKIAogICAgIGlm
IChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm47CkBAIC0y
MzM1LDEyICsyMzM1LDEyIEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAKICAgICBpZiAoYXV0
byogY2FjaGUgPSBtX2RvY3VtZW50LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKSB7CiAgICAgICAg
IGlmIChwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSAmJiBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSAh
PSBtX2NvbXBvc2l0aW9uTm9kZSkgewotICAgICAgICAgICAgYXV0byBzdGF0ZSA9IG1fY29tcG9z
aXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzcyA6
IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OkVuZGVkOwotICAgICAgICAgICAgY2Fj
aGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgc3Rh
dGUsIHRydWUpOworICAgICAgICAgICAgYXV0byBzdGF0ZSA9IG1fY29tcG9zaXRpb25Ob2RlID8g
Q29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzcyA6IENvbXBvc2l0aW9uU3RhdGU6OkVuZGVkOwor
ICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpwcmV2aW91c0NvbXBv
c2l0aW9uTm9kZSwgc3RhdGUsIHRydWUsIHRleHQsIG1fY29tcG9zaXRpb25TdGFydCwgbV9pc0hh
bmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2NvbXBv
c2l0aW9uTm9kZSkgewotICAgICAgICAgICAgYXV0byBzdGF0ZSA9IHByZXZpb3VzQ29tcG9zaXRp
b25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzcyA6IEFY
T2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OlN0YXJ0ZWQ7Ci0gICAgICAgICAgICBjYWNo
ZS0+b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoKm1fY29tcG9zaXRpb25Ob2RlLCBzdGF0ZSwgdHJ1
ZSk7CisgICAgICAgICAgICBhdXRvIHN0YXRlID0gcHJldmlvdXNDb21wb3NpdGlvbk5vZGUgPyBD
b21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIDogQ29tcG9zaXRpb25TdGF0ZTo6U3RhcnRlZDsK
KyAgICAgICAgICAgIGNhY2hlLT5vblRleHRDb21wb3NpdGlvbkNoYW5nZSgqbV9jb21wb3NpdGlv
bk5vZGUsIHN0YXRlLCB0cnVlLCB0ZXh0LCBtX2NvbXBvc2l0aW9uU3RhcnQsIG1faXNIYW5kbGlu
Z0FjY2VwdGVkQ2FuZGlkYXRlKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0
dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wOWQ2OGM1Njcw
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMzcgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGF0dHJpYnV0ZWQgc3Ry
aW5nIGZvciBpbmxpbmUgcHJlZGljdGlvbnMgaXMgYWNjdXJhdGUuCisKK0dvb2QgbW97CisgICAg
VUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7Cisg
ICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsK
KyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9CisKK1NpbXVsYXRpbmcg
cHJlc2VudGVkIGNvbXBsZXRpb246CitHb29kIG1veworICAgIFVJQWNjZXNzaWJpbGl0eVRva2Vu
Rm9udEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOworICAgIFVJQWNjZXNzaWJpbGl0eVRv
a2VuRm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxhciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5
VG9rZW5Gb250U2l6ZSA9IDExOworfXJuaW5neworICAgIFVJQWNjZXNzaWJpbGl0eUlubGluZVRl
eHRDb21wbGV0aW9uID0gcm5pbmc7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5
ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFt
ZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRT
aXplID0gMTE7Cit9CisKK1NpbXVsYXRpbmcgYWNjZXB0ZWQgY29tcGxldGlvbjoKK0dvb2Qgewor
ICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQi
OworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxh
ciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDExOworfW1vcm5pbmd7Cisg
ICAgVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiA9IG1vcm5pbmc7
CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9u
dCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1
bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9CisKKworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGlj
dGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9p
b3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYjQzOWY2OGVjZWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5s
aW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRtbApAQCAtMCwwICsxLDM1IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CisKKzxodG1sPgor
PGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhl
bHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKzxpbnB1dCBpZD0iZWRpdGFi
bGUiIHR5cGU9InRleHQiIHRhYmluZGV4PSIwIj48L2lucHV0PgorCis8c2NyaXB0PgordmFyIHJl
c3VsdCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBhdHRyaWJ1dGVkIHN0cmluZyBmb3Ig
aW5saW5lIHByZWRpY3Rpb25zIGlzIGFjY3VyYXRlLlxuXG4iOworCitpZiAod2luZG93LnRleHRJ
bnB1dENvbnRyb2xsZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
ZWRpdGFibGUuZm9jdXMoKTsKKyAgICB2YXIgaW5wdXQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudDsKKyAgICBpbnB1dC5pbnNlcnRUZXh0KCJHb29kIG1vIikKKyAgICBy
ZXN1bHQgKz0gYCR7aW5wdXQuYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKDAsIDcpfVxuXG5gOwor
CisgICAgcmVzdWx0ICs9ICJTaW11bGF0aW5nIHByZXNlbnRlZCBjb21wbGV0aW9uOlxuIjsKKyAg
ICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQoInJuaW5nIiwgMCwgNSwgZmFsc2Us
IFsgeyBmcm9tOiAiMCIsIGxlbmd0aDogIjUiLCBjb2xvcjogIiNGRjAwMDAzMyIsIGZvcmVncm91
bmRDb2xvcjogIiNGRjAwMDBGRiIgfSBdLCB1bmRlZmluZWQpOworICAgIHJlc3VsdCArPSBgJHtp
bnB1dC5hdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UoMCwgMTIpfVxuXG5gOworCisgICAgcmVzdWx0
ICs9ICJTaW11bGF0aW5nIGFjY2VwdGVkIGNvbXBsZXRpb246XG4iOworICAgIHRleHRJbnB1dENv
bnRyb2xsZXIuc2V0TWFya2VkVGV4dCgiIiwgMCwgMCwgZmFsc2UsIHVuZGVmaW5lZCwgdW5kZWZp
bmVkKTsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQoInJuaW5nIik7CisgICAg
cmVzdWx0ICs9IGAke2lucHV0LmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSgwLCAxMil9XG5cbmA7
CisKKyAgICBkZWJ1ZyhyZXN1bHQpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTYvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDNhMWVl
MjRhMDFmNy4uODlmMDZlN2U4MjcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MtMTYvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTYv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQsMyArMTQsNiBAQCBmYXN0L2ltYWdlcy9wYWdlLXdpZGUt
YW5pbWF0aW9uLXRvZ2dsZS5odG1sIFsgU2tpcCBdCiBmYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5
LXBhdXNlLWFuaW1hdGVUcmFuc2Zvcm0tc3ZnLWFuaW1hdGlvbi5odG1sIFsgU2tpcCBdIAogZmFz
dC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1vZmZzY3JlZW4tYW5pbWF0aW9ucy5odG1sIFsg
U2tpcCBdCiBzdmcvY3VzdG9tL3N2Zy1mb250cy1pbi1odG1sLmh0bWwgWyBTa2lwIF0KKworIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYxMDU2CithY2Nlc3NpYmls
aXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRt
bCBbIFNraXAgXQo=
</data>
<flag name="commit-queue"
          id="494806"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467595</attachid>
            <date>2023-09-07 17:30:06 -0700</date>
            <delta_ts>2023-09-07 18:49:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230907173005.patch</filename>
            <type>text/plain</type>
            <size>21420</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBkNTgzNzU2MWQxMDEyN2IxYmVlNGM4Zjg0YzY2MTk5NWYzM2U5YWE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgNSBTZXAgMjAyMyAyMjo1NjozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gYWNjZXNzaWJpbGl0eSBvYmplY3RzLCB3aGljaCBhcmUgdXBkYXRlZCBpbgpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb246Ci0gbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb246IHRoZSAicmVzdCIgb2YgdGhlIHdvcmQgYmVpbmcg
cHJlZGljdGVkLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHRleHQgIm9wcG9ydHVuIiBoYWQgYmVlbiB0
eXBlZCwgYW5kCiJpdHkiIHdhcyBwcmVzZW50ZWQgYXMgYSBwcmVkaWN0aW9uLCB3ZSB3b3VsZCBz
dG9yZSAiaXR5Ii4KLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbkNvbXBsZXRlOiB0aGUg
d2hvbGUgd29yZCBiZWluZyBwcmVkaWN0ZWQuIFVzaW5nIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3
ZSB3b3VsZCBzdG9yZSB0aGUgd2hvbGUgd29yZCwKIm9wcG9ydHVuaXR5Ii4KCkluIGJvdGggY2Fz
ZXMsIHdlIHN0b3JlIHRoZSBzdHJpbmcgdmFsdWUgYW5kIHRoZSBwb3NpdGlvbiwgb2Zmc2V0IHRv
IHRoZSBzdGFydCBvZiB0aGUgZWRpdG9yLiBMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24gaXMg
cmVzZXQKb25jZSBhIHByZWRpY3Rpb24gaXMgImFjY2VwdGVkIiwgYW5kIG1fbGFzdFByZXNlbnRl
ZFRleHRQcmVkaWN0aW9uQ29tcGxldGUgaXMgcmVzZXQgb25jZSB3ZSBzdGFydCBhIG5ldyBjb21w
b3NpdGlvbi4KCkluIHRoZSBpT1MgYWNjZXNzaWJpbGl0eSB3cmFwcGVyLCB3ZSBhY2Nlc3MgdGhl
c2UgdmFsdWVzIGFuZCBhcHBseSB0aGVtIHRvIHRoZSByZXN1bHRpbmcgYXR0cmlidXRlZCBzdHJp
bmcsIGlmIGFwcGxpY2FibGUuIFRoZQphdHRyaWJ1dGVkU3RyaW5nU2V0Q29tcG9zaXRpb25BdHRy
aWJ1dGVzIG1ldGhvZCBoYW5kbGVzIHRoaXMgd29yaywgYW5kIGNoZWNrcyB0aGUgbG9jYXRpb24g
YW5kIHJhbmdlIG9mIHRoZSB2YWx1ZXMgdG8gZW5zdXJlCnRoYXQgdGhleSBhcmUgdmFsaWQuCgpU
aGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYSBuZXcgdGVzdCB0aGF0IHNpbXVsYXRlcyBpbmxpbmUg
cHJlZGljdGlvbnMgYW5kIGNoZWNrcyB0aGF0IHRoZSBjb3JyZWN0IGF0dHJpYnV0ZXMgYXJlIGV4
cG9zZWQuCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUt
cHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRy
aWJ1dGVkLXN0cmluZy5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTYv
VGVzdEV4cGVjdGF0aW9uczoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFu
Z2UpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24pOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6SW5saW5lVGV4dFByZWRpY3Rpb246OnJlc2V0KToKKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbiBj
b25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0UHJlc2VudGVkVGV4dFBy
ZWRpY3Rpb25Db21wbGV0ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKFdlYkNvcmU6OmF0dHJpYnV0ZWRT
dHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMpOgooV2ViQ29yZTo6YXR0cmlidXRlZFN0cmlu
Z0NyZWF0ZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MuaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHA6CihXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKLS0tCiAuLi4vV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAxMyArKysrKystCiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgNiArLS0KIC4uLi9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwICAgICB8IDI5ICsrKysrKysrKysrKysrKwog
Li4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgMjEgKysrKysr
KysrKysKIC4uLi9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggICAgICAgICAgICB8ICAy
ICsKIC4uLi9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbSAgICAgICAgICAgICB8IDM3ICsr
KysrKysrKysrKysrKysrKysKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MuaCAgICB8ICAzICsrCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAgICAg
ICAgICAgfCAxMCArKy0tLQogLi4uLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0
ZWQudHh0IHwgMzcgKysrKysrKysrKysrKysrKysrKwogLi4uL2lubGluZS1wcmVkaWN0aW9uLWF0
dHJpYnV0ZWQtc3RyaW5nLmh0bWwgIHwgMzUgKysrKysrKysrKysrKysrKysrCiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MtMTYvVGVzdEV4cGVjdGF0aW9ucyAgfCAgMyArKwogMTEgZmlsZXMgY2hh
bmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGlj
dGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24t
YXR0cmlidXRlZC1zdHJpbmcuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDVmODA4ZGVlNGFhYi4uYjkwNjkyNzM2YWE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3
MzEsMTMgKzE3MzEsMTggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpvblZhbGlkaXR5Q2hhbmdlKEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgcG9zdE5vdGlmaWNhdGlvbihnZXQoJmVsZW1lbnQpLCBudWxs
cHRyLCBBWEludmFsaWRTdGF0dXNDaGFuZ2VkKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpv
blRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiBub2RlLCBDb21wb3NpdGlvblN0YXRlIGNvbXBv
c2l0aW9uU3RhdGUsIGJvb2wgdmFsdWVDaGFuZ2VkKQordm9pZCBBWE9iamVjdENhY2hlOjpvblRl
eHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiBub2RlLCBDb21wb3NpdGlvblN0YXRlIGNvbXBvc2l0
aW9uU3RhdGUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBTdHJpbmcgdGV4dCwgc2l6ZV90IHBvc2l0aW9u
LCBib29sIGhhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpCiB7CiAjaWYgSEFWRShJTkxJTkVfUFJF
RElDVElPTlMpCiAgICAgYXV0byogb2JqZWN0ID0gZ2V0T3JDcmVhdGUoJm5vZGUpOwogICAgIGlm
ICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIGlmICh2YWx1ZUNoYW5nZWQpCisgICAgICAgIG9iamVjdC0+c2V0TGFzdFByZXNlbnRlZFRl
eHRQcmVkaWN0aW9uKG5vZGUsIGNvbXBvc2l0aW9uU3RhdGUsIHRleHQsIHBvc2l0aW9uLCBoYW5k
bGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKKyNlbmRpZgorCiAgICAgaWYgKGF1dG8qIG9ic2VydmFi
bGVPYmplY3QgPSBvYmplY3QtPm9ic2VydmFibGVPYmplY3QoKSkKICAgICAgICAgb2JqZWN0ID0g
b2JzZXJ2YWJsZU9iamVjdDsKIApAQCAtMTc1OCw2ICsxNzYzLDEyIEBAIHZvaWQgQVhPYmplY3RD
YWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoTm9kZSYgbm9kZSwgQ29tcG9zaXRpb25TdGF0
ZSBjb21wb3NpCiAgICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0aW9uU3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh2YWx1ZUNoYW5nZWQpOwogI2VuZGlmIC8vIEhBVkUoSU5MSU5FX1BSRURJQ1RJT05T
KQorCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgVU5VU0VEX1BBUkFNKHRleHQpOwor
ICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsaW5nQWNj
ZXB0ZWRDYW5kaWRhdGUpOworI2VuZGlmCiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGJjZmRhOTZlNmM4NS4u
YjQxNzk5NjEwZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuaApAQCAtMTg3LDggKzE4Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdHRhY2hXcmFw
cGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKIAogcHVibGljOgotICAgIGVudW0gY2xhc3MgQ29t
cG9zaXRpb25TdGF0ZSA6IHVpbnQ4X3QgeyBTdGFydGVkLCBJblByb2dyZXNzLCBFbmRlZCB9Owot
CiAgICAgdm9pZCBvblBhZ2VBY3Rpdml0eVN0YXRlQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlPik7CiAgICAgdm9pZCBzZXRQYWdlQWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlT
dGF0ZT4gc3RhdGUpIHsgbV9wYWdlQWN0aXZpdHlTdGF0ZSA9IHN0YXRlOyB9CiAgICAgT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU+IHBhZ2VBY3Rpdml0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlQWN0aXZpdHlTdGF0ZTsgfQpAQCAtMjAzLDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IG9uVGV4dFNlY3VyaXR5Q2hhbmdlZChIVE1MSW5wdXRFbGVtZW50Jik7CiAgICAgdm9pZCBvblRp
dGxlQ2hhbmdlKERvY3VtZW50Jik7CiAgICAgdm9pZCBvblZhbGlkaXR5Q2hhbmdlKEVsZW1lbnQm
KTsKLSAgICB2b2lkIG9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmLCBDb21wb3NpdGlvblN0
YXRlLCBib29sKTsKKyAgICB2b2lkIG9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmLCBDb21w
b3NpdGlvblN0YXRlLCBib29sLCBTdHJpbmcsIHNpemVfdCwgYm9vbCk7CiAgICAgdm9pZCB2YWx1
ZUNoYW5nZWQoRWxlbWVudCopOwogICAgIHZvaWQgY2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKik7
CiAgICAgdm9pZCBhdXRvZmlsbFR5cGVDaGFuZ2VkKE5vZGUqKTsKQEAgLTc0OCw3ICs3NDYsNyBA
QCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblNlbGVjdGVkQ2hhbmdlZChOb2RlKikgeyB9
CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRTZWN1cml0eUNoYW5nZWQoSFRNTElu
cHV0RWxlbWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6b25UaXRsZUNoYW5n
ZShEb2N1bWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6b25WYWxpZGl0eUNo
YW5nZShFbGVtZW50JikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRDb21w
b3NpdGlvbkNoYW5nZShOb2RlJiwgQ29tcG9zaXRpb25TdGF0ZSwgYm9vbCkgeyB9CitpbmxpbmUg
dm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiwgQ29tcG9z
aXRpb25TdGF0ZSwgYm9vbCwgU3RyaW5nLCBzaXplX3QsIGJvb2wpIHsgfQogaW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6dmFsdWVDaGFuZ2VkKEVsZW1lbnQqKSB7IH0KIGlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6Om9uRm9jdXNDaGFuZ2UoTm9kZSosIE5vZGUqKSB7IH0KIGlubGluZSB2b2lk
IEFYT2JqZWN0Q2FjaGU6Om9uUGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2
aXR5U3RhdGU+KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGY0MmZiMGQwMDc0Zi4uMzY0ZWVlYmIzMTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKQEAgLTQzNzMsNiArNDM3MywzNSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVj
dDo6b3V0ZXJIVE1MKCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQtPm91dGVy
SFRNTCgpIDogU3RyaW5nKCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQordm9pZCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24oTm9kZSYg
cHJldmlvdXNDb21wb3NpdGlvbk5vZGUsIENvbXBvc2l0aW9uU3RhdGUgc3RhdGUsIFN0cmluZyB0
ZXh0LCBzaXplX3QgbG9jYXRpb24sIGJvb2wgaGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSkKK3sK
KyAgICBpZiAoaGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSkKKyAgICAgICAgbV9sYXN0UHJlc2Vu
dGVkVGV4dFByZWRpY3Rpb24gPSB7IHRleHQsIGxvY2F0aW9uIH07CisKKyAgICBpZiAoc3RhdGUg
PT0gQ29tcG9zaXRpb25TdGF0ZTo6RW5kZWQgJiYgIWxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlv
bigpLnRleHQuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyBwcmV2aW91c0NvbXBvc2l0aW9u
Tm9kZVRleHQgPSBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZS5pc1RleHROb2RlKCkgPyBkeW5hbWlj
RG93bmNhc3Q8VGV4dD4ocHJldmlvdXNDb21wb3NpdGlvbk5vZGUpLT53aG9sZVRleHQoKSA6IFN0
cmluZygpOworICAgICAgICBzaXplX3Qgd29yZFN0YXJ0ID0gMDsKKyAgICAgICAgaWYgKHByZXZp
b3VzQ29tcG9zaXRpb25Ob2RlVGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgZm9yIChzaXpl
X3QgcG9zaXRpb24gPSBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHQubGVuZ3RoKCkgLSAxOyBw
b3NpdGlvbiA+IDA7IHBvc2l0aW9uLS0pIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBU0NJSVdo
aXRlc3BhY2UocHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0W3Bvc2l0aW9uXSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgd29yZFN0YXJ0ID0gcG9zaXRpb24gKyAxOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0ID0gcHJldmlvdXNDb21wb3NpdGlv
bk5vZGVUZXh0LnN1YnN0cmluZyh3b3JkU3RhcnQpOworCisgICAgICAgIFN0cmluZyBjb21wbGV0
ZVByZWRpY3RlZFdvcmQgPSBtYWtlU3RyaW5nKHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dCwg
bV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dCk7CisgICAgICAgIG1fbGFzdFByZXNl
bnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUgPSB7IGNvbXBsZXRlUHJlZGljdGVkV29yZCwgd29y
ZFN0YXJ0IH07CisKKyAgICAgICAgLy8gUmVzZXQgbGFzdCBwcmVzZW50ZWQgcHJlZGljdGlvbiBz
aW5jZSBhIGNhbmRpZGF0ZSB3YXMgYWNjZXB0ZWQuCisgICAgICAgIG1fbGFzdFByZXNlbnRlZFRl
eHRQcmVkaWN0aW9uLnJlc2V0KCk7CisgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBDb21wb3NpdGlv
blN0YXRlOjpJblByb2dyZXNzIHx8IHN0YXRlID09IENvbXBvc2l0aW9uU3RhdGU6OlN0YXJ0ZWQp
CisgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUucmVzZXQoKTsK
K30KKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCiBuYW1lc3BhY2UgQWNjZXNzaWJp
bGl0eSB7CiAKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFUU1BJKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCAwOTAy
YTYzNTc5YzcuLmY1YTVlYTY0OWE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTc2NCw2ICs3NjQsMjMgQEAgcHVibGlj
OgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBWZWN0
b3I8UmV0YWluUHRyPGlkPj4gbW9kZWxFbGVtZW50Q2hpbGRyZW4oKSBvdmVycmlkZTsKICNlbmRp
ZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBzdHJ1Y3QgSW5saW5lVGV4dFByZWRp
Y3Rpb24geworICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgc2l6ZV90IGxvY2F0aW9uIHsg
MCB9OworICAgICAgICB2b2lkIHJlc2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGV4dCA9
ICIiX3M7CisgICAgICAgICAgICBsb2NhdGlvbiA9IDA7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgSW5saW5lVGV4dFByZWRpY3Rpb24gbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb247IH0KKyAgICBJbmxpbmVU
ZXh0UHJlZGljdGlvbiBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGU7IH0KKyAgICB2
b2lkIHNldExhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbihOb2RlJiwgQ29tcG9zaXRpb25TdGF0
ZSwgU3RyaW5nLCBzaXplX3QsIGJvb2wpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KCkgPSBkZWZhdWx0OwogCkBAIC04MjgsNiArODQ1LDEwIEBAIHByaXZh
dGU6CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtX2NhY2hlZFZpc2li
bGVDaGFyYWN0ZXJSYW5nZTsKICAgICAvLyBUaGlzIGlzIHN0ZDo6bnVsbG9wdCBpZiB3ZSBoYXZl
bid0IGNhY2hlZCBhbnkgaW5wdXQgeWV0LgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxzdGQ6
OnR1cGxlPHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBGbG9hdFJlY3QsIEludFJlY3Q+PiBt
X2NhY2hlZFZpc2libGVDaGFyYWN0ZXJSYW5nZUlucHV0czsKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIElubGluZVRleHRQcmVkaWN0aW9uIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0
aW9uOworICAgIElubGluZVRleHRQcmVkaWN0aW9uIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0
aW9uQ29tcGxldGU7CisjZW5kaWYKIHByb3RlY3RlZDogLy8gRklYTUU6IE1ha2UgdGhlIGRhdGEg
bWVtYmVycyBwcml2YXRlLgogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZXBsYWNlZCBieSBB
WEFuY2VzdG9yRmxhZ3MuCiAgICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRh
IG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDdj
MjY1NmM4YTIwOC4uY2U0Yzg0M2Q2MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtNzcx
LDYgKzc3MSw4IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJv
dW5kcyB7CiBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7IFN1
YnNjcmlwdCwgU3VwZXJzY3JpcHQgfTsKIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhNdWx0
aXNjcmlwdE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0U3Vi
c2NyaXB0LCBQb3N0U3VwZXJzY3JpcHQgfTsKIAorZW51bSBjbGFzcyBDb21wb3NpdGlvblN0YXRl
IDogdWludDhfdCB7IFN0YXJ0ZWQsIEluUHJvZ3Jlc3MsIEVuZGVkIH07CisKIC8vIFJlbGF0aW9u
c2hpcHMgYmV0d2VlbiBBWCBvYmplY3RzLgogZW51bSBjbGFzcyBBWFJlbGF0aW9uVHlwZSA6IHVp
bnQ4X3QgewogICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQppbmRleCA3OWMwMmZkMzJkMDEu
LmRkZDYxNGE4ZGZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKyNpbXBvcnQgIkVkaXRvci5oIgogI2lt
cG9ydCAiRXZlbnROYW1lcy5oIgogI2ltcG9ydCAiSFRNTElucHV0RWxlbWVudC5oIgogI2ltcG9y
dCAiSFRNTE5hbWVzLmgiCkBAIC0yMDgsNiArMjA5LDQxIEBAIHN0YXRpYyB2b2lkIGF0dHJpYnV0
ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJTdHJpbmcsIFJl
bmRlCiAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUZXh0
QXR0cmlidXRlQ29udGV4dCB2YWx1ZTpVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJj
ZUNvZGUgcmFuZ2U6cmFuZ2VdOwogfQogCitzdGF0aWMgdm9pZCBhdHRyaWJ1dGVkU3RyaW5nU2V0
Q29tcG9zaXRpb25BdHRyaWJ1dGVzKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0
ZWRTdHJpbmcsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisjaWYgSEFWRShJTkxJTkVfUFJF
RElDVElPTlMpCisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyIG9iamVjdCA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUocmVuZGVyZXIpOworCisgICAgYXV0byBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkID0g
b2JqZWN0LT5sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSgpOworICAgIHVuc2ln
bmVkIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRMZW5ndGggPSBsYXN0UHJlc2VudGVkQ29tcGxl
dGVXb3JkLnRleHQubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGFzdFByZXNlbnRlZENvbXBsZXRl
V29yZFBvc2l0aW9uID0gbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC5sb2NhdGlvbjsKKworICAg
IGlmICghbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50ZXh0LmlzRW1wdHkoKSAmJiBsYXN0UHJl
c2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24gKyBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkTGVu
Z3RoIDw9IFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0pIHsKKyAgICAgICAgTlNSYW5nZSBjb21w
bGV0ZVdvcmRSYW5nZSA9IE5TTWFrZVJhbmdlKGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRQb3Np
dGlvbiwgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0aCk7CisgICAgICAgIGlmIChbW2F0
dHJpYnV0ZWRTdHJpbmcuc3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpjb21wbGV0ZVdvcmRSYW5n
ZV0gaXNFcXVhbFRvU3RyaW5nOmxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dF0pCisgICAg
ICAgICAgICBbYXR0cmlidXRlZFN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB2YWx1ZTpsYXN0UHJlc2VudGVkQ29tcGxldGVXb3Jk
LnRleHQgcmFuZ2U6Y29tcGxldGVXb3JkUmFuZ2VdOworICAgIH0KKworICAgIGF1dG8gbGFzdFBy
ZXNlbnRlZFRleHRQcmVkaWN0aW9uID0gb2JqZWN0LT5sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rp
b24oKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkTGVuZ3RoID0gbGFzdFByZXNlbnRlZFRl
eHRQcmVkaWN0aW9uLnRleHQubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGFzdFByZXNlbnRlZFBv
c2l0aW9uID0gbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uLmxvY2F0aW9uOworCisgICAgaWYg
KCFsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dC5pc0VtcHR5KCkgJiYgbGFzdFByZXNl
bnRlZFBvc2l0aW9uICsgbGFzdFByZXNlbnRlZExlbmd0aCA8PSBbYXR0cmlidXRlZFN0cmluZyBs
ZW5ndGhdKSB7CisgICAgICAgIE5TUmFuZ2UgcHJlc2VudGVkUmFuZ2UgPSBOU01ha2VSYW5nZShs
YXN0UHJlc2VudGVkUG9zaXRpb24sIGxhc3RQcmVzZW50ZWRMZW5ndGgpOworICAgICAgICBpZiAo
IVtbYXR0cmlidXRlZFN0cmluZy5zdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnByZXNlbnRlZFJh
bmdlXSBpc0VxdWFsVG9TdHJpbmc6bGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uLnRleHRdKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJp
YnV0ZTpVSUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiB2YWx1ZTpbYXR0cmlidXRl
ZFN0cmluZy5zdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOnByZXNlbnRlZFJhbmdlXSByYW5nZTpw
cmVzZW50ZWRSYW5nZV07CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXR0cmlidXRl
ZFN0cmluZyk7CisgICAgVU5VU0VEX1BBUkFNKHJlbmRlcmVyKTsKKyNlbmRpZiAvLyBIQVZFKElO
TElORV9QUkVESUNUSU9OUykKK30KKwogUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0
cmlidXRlZFN0cmluZ0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHRleHQsIGNvbnN0IFNp
bXBsZVJhbmdlJiwgQVhDb3JlT2JqZWN0OjpTcGVsbENoZWNrKQogewogICAgIC8vIFNraXAgaW52
aXNpYmxlIHRleHQuCkBAIC0yMjMsNiArMjU5LDcgQEAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0
cmluZz4gYXR0cmlidXRlZFN0cmluZ0NyZWF0ZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHRleHQK
ICAgICBhdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwocmVzdWx0LmdldCgpLCByZW5kZXJl
ciwgcmFuZ2UpOwogICAgIGF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChyZXN1bHQu
Z2V0KCksIHJlbmRlcmVyLCByYW5nZSk7CiAgICAgYXR0cmlidXRlU3RyaW5nU2V0TGFuZ3VhZ2Uo
cmVzdWx0LmdldCgpLCByZW5kZXJlciwgcmFuZ2UpOworICAgIGF0dHJpYnV0ZWRTdHJpbmdTZXRD
b21wb3NpdGlvbkF0dHJpYnV0ZXMocmVzdWx0LmdldCgpLCByZW5kZXJlcik7CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmgKaW5kZXgg
MTA1NTJjM2U5NGQwLi42YzZiYjkxZjgwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MuaApAQCAtNDYsNiArNDYsOSBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkF0dGFjaG1lbnQgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuQQogc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dEF0dHJpYnV0ZUNvbnRleHQg
PSBAIlVJQWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0IjsKIHN0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSA9IEAiVUlB
Y2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlIjsKIAorc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5SW5saW5lVGV4dENvbXBsZXRpb24gPSBAIlVJQWNjZXNz
aWJpbGl0eUlubGluZVRleHRDb21wbGV0aW9uIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJ
QWNjZXNzaWJpbGl0eUFjY2VwdGVkSW5saW5lVGV4dENvbXBsZXRpb24gPSBAIlVJQWNjZXNzaWJp
bGl0eUFjY2VwdGVkSW5saW5lVGV4dENvbXBsZXRpb24iOworCiBAaW50ZXJmYWNlIFdBS1ZpZXcg
KGlPU0FjY2Vzc2liaWxpdHkpCiAtIChCT09MKWFjY2Vzc2liaWxpdHlJc0lnbm9yZWQ7CiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYWY2MDcxYTNmZjYyLi5jZjU2NmQ5MDFj
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIxODgsNyArMjE4OCw3IEBAIHZv
aWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIFNldENvbXBvc2l0
aW9uTW9kZSBtb2RlKQogICAgIG1fY3VzdG9tQ29tcG9zaXRpb25Bbm5vdGF0aW9ucy5jbGVhcigp
OwogCiAgICAgaWYgKGF1dG8qIGNhY2hlID0gbV9kb2N1bWVudC5leGlzdGluZ0FYT2JqZWN0Q2Fj
aGUoKTsgY2FjaGUgJiYgcHJldmlvdXNDb21wb3NpdGlvbk5vZGUpCi0gICAgICAgIGNhY2hlLT5v
blRleHRDb21wb3NpdGlvbkNoYW5nZSgqcHJldmlvdXNDb21wb3NpdGlvbk5vZGUsIEFYT2JqZWN0
Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OkVuZGVkLCBmYWxzZSk7CisgICAgICAgIGNhY2hlLT5v
blRleHRDb21wb3NpdGlvbkNoYW5nZSgqcHJldmlvdXNDb21wb3NpdGlvbk5vZGUsIENvbXBvc2l0
aW9uU3RhdGU6OkVuZGVkLCBmYWxzZSwgdGV4dCwgbV9jb21wb3NpdGlvblN0YXJ0LCBtX2lzSGFu
ZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSk7CiAKICAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rpb24o
KS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjMzNSwxMiArMjMzNSwxMiBAQCB2b2lk
IEVkaXRvcjo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8
Q29tcG9zaXRpb25VbmRlcmxpbgogCiAgICAgaWYgKGF1dG8qIGNhY2hlID0gbV9kb2N1bWVudC5l
eGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkgewogICAgICAgICBpZiAocHJldmlvdXNDb21wb3NpdGlv
bk5vZGUgJiYgcHJldmlvdXNDb21wb3NpdGlvbk5vZGUgIT0gbV9jb21wb3NpdGlvbk5vZGUpIHsK
LSAgICAgICAgICAgIGF1dG8gc3RhdGUgPSBtX2NvbXBvc2l0aW9uTm9kZSA/IEFYT2JqZWN0Q2Fj
aGU6OkNvbXBvc2l0aW9uU3RhdGU6OkluUHJvZ3Jlc3MgOiBBWE9iamVjdENhY2hlOjpDb21wb3Np
dGlvblN0YXRlOjpFbmRlZDsKLSAgICAgICAgICAgIGNhY2hlLT5vblRleHRDb21wb3NpdGlvbkNo
YW5nZSgqcHJldmlvdXNDb21wb3NpdGlvbk5vZGUsIHN0YXRlLCB0cnVlKTsKKyAgICAgICAgICAg
IGF1dG8gc3RhdGUgPSBtX2NvbXBvc2l0aW9uTm9kZSA/IENvbXBvc2l0aW9uU3RhdGU6OkluUHJv
Z3Jlc3MgOiBDb21wb3NpdGlvblN0YXRlOjpFbmRlZDsKKyAgICAgICAgICAgIGNhY2hlLT5vblRl
eHRDb21wb3NpdGlvbkNoYW5nZSgqcHJldmlvdXNDb21wb3NpdGlvbk5vZGUsIHN0YXRlLCB0cnVl
LCB0ZXh0LCBtX2NvbXBvc2l0aW9uU3RhcnQsIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRl
KTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9jb21wb3NpdGlvbk5vZGUpIHsKLSAgICAgICAg
ICAgIGF1dG8gc3RhdGUgPSBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSA/IEFYT2JqZWN0Q2FjaGU6
OkNvbXBvc2l0aW9uU3RhdGU6OkluUHJvZ3Jlc3MgOiBBWE9iamVjdENhY2hlOjpDb21wb3NpdGlv
blN0YXRlOjpTdGFydGVkOwotICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hh
bmdlKCptX2NvbXBvc2l0aW9uTm9kZSwgc3RhdGUsIHRydWUpOworICAgICAgICAgICAgYXV0byBz
dGF0ZSA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlID8gQ29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9n
cmVzcyA6IENvbXBvc2l0aW9uU3RhdGU6OlN0YXJ0ZWQ7CisgICAgICAgICAgICBjYWNoZS0+b25U
ZXh0Q29tcG9zaXRpb25DaGFuZ2UoKm1fY29tcG9zaXRpb25Ob2RlLCBzdGF0ZSwgdHJ1ZSwgdGV4
dCwgbV9jb21wb3NpdGlvblN0YXJ0LCBtX2lzSGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXBy
ZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDlkNjhjNTY3MDkxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9u
LWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACitUaGlzIHRl
c3QgZW5zdXJlcyB0aGF0IHRoZSBhdHRyaWJ1dGVkIHN0cmluZyBmb3IgaW5saW5lIHByZWRpY3Rp
b25zIGlzIGFjY3VyYXRlLgorCitHb29kIG1veworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9u
dEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2Vu
Rm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxhciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250U2l6ZSA9IDExOworfQorCitTaW11bGF0aW5nIHByZXNlbnRlZCBjb21wbGV0aW9uOgor
R29vZCBtb3sKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSAiLkFwcGxlU3lz
dGVtVUlGb250IjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gIlN5c3RlbSBG
b250IFJlZ3VsYXIiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxMTsKK31y
bmluZ3sKKyAgICBVSUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiA9IHJuaW5nOwor
ICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQi
OworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxh
ciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDExOworfQorCitTaW11bGF0
aW5nIGFjY2VwdGVkIGNvbXBsZXRpb246CitHb29kIHsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tl
bkZvbnRGYW1pbHkgPSAiLkFwcGxlU3lzdGVtVUlGb250IjsKKyAgICBVSUFjY2Vzc2liaWxpdHlU
b2tlbkZvbnROYW1lID0gIlN5c3RlbSBGb250IFJlZ3VsYXIiOworICAgIFVJQWNjZXNzaWJpbGl0
eVRva2VuRm9udFNpemUgPSAxMTsKK31tb3JuaW5neworICAgIFVJQWNjZXNzaWJpbGl0eUFjY2Vw
dGVkSW5saW5lVGV4dENvbXBsZXRpb24gPSBtb3JuaW5nOworICAgIFVJQWNjZXNzaWJpbGl0eVRv
a2VuRm9udEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOworICAgIFVJQWNjZXNzaWJpbGl0
eVRva2VuRm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxhciI7CisgICAgVUlBY2Nlc3NpYmls
aXR5VG9rZW5Gb250U2l6ZSA9IDExOworfQorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcu
aHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJl
ZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZGI0MzlmNjhlY2VlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0
ZWQtc3RyaW5nLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorCis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+CisKKzxib2R5PgorCis8aW5wdXQgaWQ9ImVkaXRhYmxlIiB0eXBlPSJ0ZXh0IiB0YWJpbmRl
eD0iMCI+PC9pbnB1dD4KKworPHNjcmlwdD4KK3ZhciByZXN1bHQgPSAiVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCB0aGUgYXR0cmlidXRlZCBzdHJpbmcgZm9yIGlubGluZSBwcmVkaWN0aW9ucyBpcyBh
Y2N1cmF0ZS5cblxuIjsKKworaWYgKHdpbmRvdy50ZXh0SW5wdXRDb250cm9sbGVyICYmIHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIGVkaXRhYmxlLmZvY3VzKCk7CisgICAg
dmFyIGlucHV0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAg
aW5wdXQuaW5zZXJ0VGV4dCgiR29vZCBtbyIpCisgICAgcmVzdWx0ICs9IGAke2lucHV0LmF0dHJp
YnV0ZWRTdHJpbmdGb3JSYW5nZSgwLCA3KX1cblxuYDsKKworICAgIHJlc3VsdCArPSAiU2ltdWxh
dGluZyBwcmVzZW50ZWQgY29tcGxldGlvbjpcbiI7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5z
ZXRNYXJrZWRUZXh0KCJybmluZyIsIDAsIDUsIGZhbHNlLCBbIHsgZnJvbTogIjAiLCBsZW5ndGg6
ICI1IiwgY29sb3I6ICIjRkYwMDAwMzMiLCBmb3JlZ3JvdW5kQ29sb3I6ICIjRkYwMDAwRkYiIH0g
XSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHQgKz0gYCR7aW5wdXQuYXR0cmlidXRlZFN0cmluZ0Zv
clJhbmdlKDAsIDEyKX1cblxuYDsKKworICAgIHJlc3VsdCArPSAiU2ltdWxhdGluZyBhY2NlcHRl
ZCBjb21wbGV0aW9uOlxuIjsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQo
IiIsIDAsIDAsIGZhbHNlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7CisgICAgdGV4dElucHV0Q29u
dHJvbGxlci5pbnNlcnRUZXh0KCJybmluZyIpOworICAgIHJlc3VsdCArPSBgJHtpbnB1dC5hdHRy
aWJ1dGVkU3RyaW5nRm9yUmFuZ2UoMCwgMTIpfVxuXG5gOworCisgICAgZGVidWcocmVzdWx0KTsK
K30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLTE2L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MtMTYvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYTFlZTI0YTAxZjcuLjg5ZjA2ZTdlODI3MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTE2L1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTE2L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0
LDMgKzE0LDYgQEAgZmFzdC9pbWFnZXMvcGFnZS13aWRlLWFuaW1hdGlvbi10b2dnbGUuaHRtbCBb
IFNraXAgXQogZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1hbmltYXRlVHJhbnNmb3Jt
LXN2Zy1hbmltYXRpb24uaHRtbCBbIFNraXAgXSAKIGZhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXkt
cGF1c2Utb2Zmc2NyZWVuLWFuaW1hdGlvbnMuaHRtbCBbIFNraXAgXQogc3ZnL2N1c3RvbS9zdmct
Zm9udHMtaW4taHRtbC5odG1sIFsgU2tpcCBdCisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI2MTA1NgorYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGlu
ZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467596</attachid>
            <date>2023-09-07 18:49:47 -0700</date>
            <delta_ts>2023-09-11 11:09:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230907184946.patch</filename>
            <type>text/plain</type>
            <size>21407</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBiM2QxMmIwNGI1NTAyNWVjNTU3MzFkN2RjYjNiNzYwMzZlYmMwZDJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgNSBTZXAgMjAyMyAyMjo1NjozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gYWNjZXNzaWJpbGl0eSBvYmplY3RzLCB3aGljaCBhcmUgdXBkYXRlZCBpbgpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb246Ci0gbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb246IHRoZSAicmVzdCIgb2YgdGhlIHdvcmQgYmVpbmcg
cHJlZGljdGVkLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHRleHQgIm9wcG9ydHVuIiBoYWQgYmVlbiB0
eXBlZCwgYW5kCiJpdHkiIHdhcyBwcmVzZW50ZWQgYXMgYSBwcmVkaWN0aW9uLCB3ZSB3b3VsZCBz
dG9yZSAiaXR5Ii4KLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbkNvbXBsZXRlOiB0aGUg
d2hvbGUgd29yZCBiZWluZyBwcmVkaWN0ZWQuIFVzaW5nIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3
ZSB3b3VsZCBzdG9yZSB0aGUgd2hvbGUgd29yZCwKIm9wcG9ydHVuaXR5Ii4KCkluIGJvdGggY2Fz
ZXMsIHdlIHN0b3JlIHRoZSBzdHJpbmcgdmFsdWUgYW5kIHRoZSBwb3NpdGlvbiwgb2Zmc2V0IHRv
IHRoZSBzdGFydCBvZiB0aGUgZWRpdG9yLiBMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24gaXMg
cmVzZXQKb25jZSBhIHByZWRpY3Rpb24gaXMgImFjY2VwdGVkIiwgYW5kIG1fbGFzdFByZXNlbnRl
ZFRleHRQcmVkaWN0aW9uQ29tcGxldGUgaXMgcmVzZXQgb25jZSB3ZSBzdGFydCBhIG5ldyBjb21w
b3NpdGlvbi4KCkluIHRoZSBpT1MgYWNjZXNzaWJpbGl0eSB3cmFwcGVyLCB3ZSBhY2Nlc3MgdGhl
c2UgdmFsdWVzIGFuZCBhcHBseSB0aGVtIHRvIHRoZSByZXN1bHRpbmcgYXR0cmlidXRlZCBzdHJp
bmcsIGlmIGFwcGxpY2FibGUuIFRoZQphdHRyaWJ1dGVkU3RyaW5nU2V0Q29tcG9zaXRpb25BdHRy
aWJ1dGVzIG1ldGhvZCBoYW5kbGVzIHRoaXMgd29yaywgYW5kIGNoZWNrcyB0aGUgbG9jYXRpb24g
YW5kIHJhbmdlIG9mIHRoZSB2YWx1ZXMgdG8gZW5zdXJlCnRoYXQgdGhleSBhcmUgdmFsaWQuCgpU
aGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYSBuZXcgdGVzdCB0aGF0IHNpbXVsYXRlcyBpbmxpbmUg
cHJlZGljdGlvbnMgYW5kIGNoZWNrcyB0aGF0IHRoZSBjb3JyZWN0IGF0dHJpYnV0ZXMgYXJlIGV4
cG9zZWQuCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUt
cHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRy
aWJ1dGVkLXN0cmluZy5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTYv
VGVzdEV4cGVjdGF0aW9uczoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFu
Z2UpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24pOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6SW5saW5lVGV4dFByZWRpY3Rpb246OnJlc2V0KToKKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbiBj
b25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYXN0UHJlc2VudGVkVGV4dFBy
ZWRpY3Rpb25Db21wbGV0ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbToKKFdlYkNvcmU6OmF0dHJpYnV0ZWRT
dHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMpOgooV2ViQ29yZTo6YXR0cmlidXRlZFN0cmlu
Z0NyZWF0ZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MuaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHA6CihXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKLS0tCiAuLi4vV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAxMyArKysrKystCiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgNiArLS0KIC4uLi9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwICAgICB8IDI5ICsrKysrKysrKysrKysrKwog
Li4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgMjEgKysrKysr
KysrKysKIC4uLi9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggICAgICAgICAgICB8ICAy
ICsKIC4uLi9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbSAgICAgICAgICAgICB8IDM3ICsr
KysrKysrKysrKysrKysrKysKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MuaCAgICB8ICAzICsrCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAgICAg
ICAgICAgfCAxMCArKy0tLQogLi4uLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0
ZWQudHh0IHwgMzcgKysrKysrKysrKysrKysrKysrKwogLi4uL2lubGluZS1wcmVkaWN0aW9uLWF0
dHJpYnV0ZWQtc3RyaW5nLmh0bWwgIHwgMzUgKysrKysrKysrKysrKysrKysrCiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MtMTYvVGVzdEV4cGVjdGF0aW9ucyAgfCAgMyArKwogMTEgZmlsZXMgY2hh
bmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGlj
dGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24t
YXR0cmlidXRlZC1zdHJpbmcuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDVmODA4ZGVlNGFhYi4uNzZjNDc4ODI5ZWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3
MzEsMTMgKzE3MzEsMTggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpvblZhbGlkaXR5Q2hhbmdlKEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgcG9zdE5vdGlmaWNhdGlvbihnZXQoJmVsZW1lbnQpLCBudWxs
cHRyLCBBWEludmFsaWRTdGF0dXNDaGFuZ2VkKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpv
blRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiBub2RlLCBDb21wb3NpdGlvblN0YXRlIGNvbXBv
c2l0aW9uU3RhdGUsIGJvb2wgdmFsdWVDaGFuZ2VkKQordm9pZCBBWE9iamVjdENhY2hlOjpvblRl
eHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiBub2RlLCBDb21wb3NpdGlvblN0YXRlIGNvbXBvc2l0
aW9uU3RhdGUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBTdHJpbmcgdGV4dCwgc2l6ZV90IHBvc2l0aW9u
LCBib29sIGhhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpCiB7CiAjaWYgSEFWRShJTkxJTkVfUFJF
RElDVElPTlMpCiAgICAgYXV0byogb2JqZWN0ID0gZ2V0T3JDcmVhdGUoJm5vZGUpOwogICAgIGlm
ICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYg
KHZhbHVlQ2hhbmdlZCkKKyAgICAgICAgb2JqZWN0LT5zZXRMYXN0UHJlc2VudGVkVGV4dFByZWRp
Y3Rpb24obm9kZSwgY29tcG9zaXRpb25TdGF0ZSwgdGV4dCwgcG9zaXRpb24sIGhhbmRsaW5nQWNj
ZXB0ZWRDYW5kaWRhdGUpOworI2VuZGlmCisKICAgICBpZiAoYXV0byogb2JzZXJ2YWJsZU9iamVj
dCA9IG9iamVjdC0+b2JzZXJ2YWJsZU9iamVjdCgpKQogICAgICAgICBvYmplY3QgPSBvYnNlcnZh
YmxlT2JqZWN0OwogCkBAIC0xNzU4LDYgKzE3NjMsMTIgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpv
blRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiBub2RlLCBDb21wb3NpdGlvblN0YXRlIGNvbXBv
c2kKICAgICBVTlVTRURfUEFSQU0oY29tcG9zaXRpb25TdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHZhbHVlQ2hhbmdlZCk7CiAjZW5kaWYgLy8gSEFWRShJTkxJTkVfUFJFRElDVElPTlMpCisKKyNp
ZiAhUExBVEZPUk0oSU9TKSB8fCAhSEFWRShJTkxJTkVfUFJFRElDVElPTlMpCisgICAgVU5VU0VE
X1BBUkFNKHRleHQpOworICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CisgICAgVU5VU0VEX1BB
UkFNKGhhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpOworI2VuZGlmCiB9CiAKICNpZm5kZWYgTkRF
QlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4
IGJjZmRhOTZlNmM4NS4uYjQxNzk5NjEwZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMTg3LDggKzE4Nyw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKIAogcHVibGljOgotICAg
IGVudW0gY2xhc3MgQ29tcG9zaXRpb25TdGF0ZSA6IHVpbnQ4X3QgeyBTdGFydGVkLCBJblByb2dy
ZXNzLCBFbmRlZCB9OwotCiAgICAgdm9pZCBvblBhZ2VBY3Rpdml0eVN0YXRlQ2hhbmdlKE9wdGlv
blNldDxBY3Rpdml0eVN0YXRlPik7CiAgICAgdm9pZCBzZXRQYWdlQWN0aXZpdHlTdGF0ZShPcHRp
b25TZXQ8QWN0aXZpdHlTdGF0ZT4gc3RhdGUpIHsgbV9wYWdlQWN0aXZpdHlTdGF0ZSA9IHN0YXRl
OyB9CiAgICAgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU+IHBhZ2VBY3Rpdml0eVN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlQWN0aXZpdHlTdGF0ZTsgfQpAQCAtMjAzLDcgKzIwMSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIG9uVGV4dFNlY3VyaXR5Q2hhbmdlZChIVE1MSW5wdXRFbGVtZW50Jik7
CiAgICAgdm9pZCBvblRpdGxlQ2hhbmdlKERvY3VtZW50Jik7CiAgICAgdm9pZCBvblZhbGlkaXR5
Q2hhbmdlKEVsZW1lbnQmKTsKLSAgICB2b2lkIG9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUm
LCBDb21wb3NpdGlvblN0YXRlLCBib29sKTsKKyAgICB2b2lkIG9uVGV4dENvbXBvc2l0aW9uQ2hh
bmdlKE5vZGUmLCBDb21wb3NpdGlvblN0YXRlLCBib29sLCBTdHJpbmcsIHNpemVfdCwgYm9vbCk7
CiAgICAgdm9pZCB2YWx1ZUNoYW5nZWQoRWxlbWVudCopOwogICAgIHZvaWQgY2hlY2tlZFN0YXRl
Q2hhbmdlZChOb2RlKik7CiAgICAgdm9pZCBhdXRvZmlsbFR5cGVDaGFuZ2VkKE5vZGUqKTsKQEAg
LTc0OCw3ICs3NDYsNyBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblNlbGVjdGVkQ2hh
bmdlZChOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRTZWN1cml0
eUNoYW5nZWQoSFRNTElucHV0RWxlbWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNo
ZTo6b25UaXRsZUNoYW5nZShEb2N1bWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNo
ZTo6b25WYWxpZGl0eUNoYW5nZShFbGVtZW50JikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENh
Y2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiwgQ29tcG9zaXRpb25TdGF0ZSwgYm9v
bCkgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5n
ZShOb2RlJiwgQ29tcG9zaXRpb25TdGF0ZSwgYm9vbCwgU3RyaW5nLCBzaXplX3QsIGJvb2wpIHsg
fQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6dmFsdWVDaGFuZ2VkKEVsZW1lbnQqKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uRm9jdXNDaGFuZ2UoTm9kZSosIE5vZGUqKSB7
IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2Uo
T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU+KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGY0MmZiMGQwMDc0Zi4u
NTFlY2FjMzc1NjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTQzNzMsNiArNDM3MywzNSBAQCBTdHJpbmcgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6b3V0ZXJIVE1MKCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudCA/
IGVsZW1lbnQtPm91dGVySFRNTCgpIDogU3RyaW5nKCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1Mp
Cit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlv
bihOb2RlJiBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQ29tcG9zaXRpb25TdGF0ZSBzdGF0ZSwg
U3RyaW5nIHRleHQsIHNpemVfdCBsb2NhdGlvbiwgYm9vbCBoYW5kbGluZ0FjY2VwdGVkQ2FuZGlk
YXRlKQoreworICAgIGlmIChoYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKQorICAgICAgICBtX2xh
c3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbiA9IHsgdGV4dCwgbG9jYXRpb24gfTsKKworICAgIGlm
IChzdGF0ZSA9PSBDb21wb3NpdGlvblN0YXRlOjpFbmRlZCAmJiAhbGFzdFByZXNlbnRlZFRleHRQ
cmVkaWN0aW9uKCkudGV4dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIHByZXZpb3VzQ29t
cG9zaXRpb25Ob2RlVGV4dCA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlLmlzVGV4dE5vZGUoKSA/
IGR5bmFtaWNEb3duY2FzdDxUZXh0PihwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSktPndob2xlVGV4
dCgpIDogU3RyaW5nKCk7CisgICAgICAgIHNpemVfdCB3b3JkU3RhcnQgPSAwOworICAgICAgICBp
ZiAocHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBwb3NpdGlvbiA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dC5sZW5ndGgo
KSAtIDE7IHBvc2l0aW9uID4gMDsgcG9zaXRpb24tLSkgeworICAgICAgICAgICAgICAgIGlmIChp
c0FTQ0lJV2hpdGVzcGFjZShwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHRbcG9zaXRpb25dKSkg
eworICAgICAgICAgICAgICAgICAgICB3b3JkU3RhcnQgPSBwb3NpdGlvbiArIDE7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHQgPSBwcmV2aW91c0Nv
bXBvc2l0aW9uTm9kZVRleHQuc3Vic3RyaW5nKHdvcmRTdGFydCk7CisKKyAgICAgICAgU3RyaW5n
IGNvbXBsZXRlUHJlZGljdGVkV29yZCA9IG1ha2VTdHJpbmcocHJldmlvdXNDb21wb3NpdGlvbk5v
ZGVUZXh0LCBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbi50ZXh0KTsKKyAgICAgICAgbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSA9IHsgY29tcGxldGVQcmVkaWN0ZWRX
b3JkLCB3b3JkU3RhcnQgfTsKKworICAgICAgICAvLyBSZXNldCBsYXN0IHByZXNlbnRlZCBwcmVk
aWN0aW9uIHNpbmNlIGEgY2FuZGlkYXRlIHdhcyBhY2NlcHRlZC4KKyAgICAgICAgbV9sYXN0UHJl
c2VudGVkVGV4dFByZWRpY3Rpb24ucmVzZXQoKTsKKyAgICB9IGVsc2UgaWYgKHN0YXRlID09IENv
bXBvc2l0aW9uU3RhdGU6OkluUHJvZ3Jlc3MgfHwgc3RhdGUgPT0gQ29tcG9zaXRpb25TdGF0ZTo6
U3RhcnRlZCkKKyAgICAgICAgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZS5y
ZXNldCgpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogbmFtZXNwYWNlIEFjY2Vzc2li
aWxpdHkgewogCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVVTRShBVFNQSSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMDkw
MmE2MzU3OWM3Li42OTY1ZmMzMWMyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC03NjQsNiArNzY0LDIzIEBAIHB1Ymxp
YzoKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgVmVj
dG9yPFJldGFpblB0cjxpZD4+IG1vZGVsRWxlbWVudENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICBzdHJ1Y3QgSW5saW5lVGV4dFByZWRpY3Rpb24g
eworICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgc2l6ZV90IGxvY2F0aW9uIHsgMCB9Owor
ICAgICAgICB2b2lkIHJlc2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGV4dCA9ICIiX3M7
CisgICAgICAgICAgICBsb2NhdGlvbiA9IDA7CisgICAgICAgIH0KKyAgICB9OworCisgICAgSW5s
aW5lVGV4dFByZWRpY3Rpb24gbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb247IH0KKyAgICBJbmxpbmVUZXh0UHJl
ZGljdGlvbiBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGU7IH0KKyAgICB2b2lkIHNl
dExhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbihOb2RlJiwgQ29tcG9zaXRpb25TdGF0ZSwgU3Ry
aW5nLCBzaXplX3QsIGJvb2wpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KCkgPSBkZWZhdWx0OwogCkBAIC04MjgsNiArODQ1LDEwIEBAIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtX2NhY2hlZFZpc2libGVDaGFy
YWN0ZXJSYW5nZTsKICAgICAvLyBUaGlzIGlzIHN0ZDo6bnVsbG9wdCBpZiB3ZSBoYXZlbid0IGNh
Y2hlZCBhbnkgaW5wdXQgeWV0LgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxl
PHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBGbG9hdFJlY3QsIEludFJlY3Q+PiBtX2NhY2hl
ZFZpc2libGVDaGFyYWN0ZXJSYW5nZUlucHV0czsKKyNpZiBQTEFURk9STShJT1MpCisgICAgSW5s
aW5lVGV4dFByZWRpY3Rpb24gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb247CisgICAgSW5s
aW5lVGV4dFByZWRpY3Rpb24gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZTsK
KyNlbmRpZgogcHJvdGVjdGVkOiAvLyBGSVhNRTogTWFrZSB0aGUgZGF0YSBtZW1iZXJzIHByaXZh
dGUuCiAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIHJlcGxhY2VkIGJ5IEFYQW5jZXN0b3JGbGFn
cy4KICAgICBBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRnJvbVBhcmVudERhdGEgbV9pc0lnbm9yZWRG
cm9tUGFyZW50RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggN2MyNjU2YzhhMjA4Li5j
ZTRjODQzZDYwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC03NzEsNiArNzcxLDggQEAg
ZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5VmlzaWJsZVBvc2l0aW9uRm9yQm91bmRzIHsKIGVudW0g
Y2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlIHsgU3Vic2NyaXB0LCBTdXBl
cnNjcmlwdCB9OwogZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0
VHlwZSB7IFByZVN1YnNjcmlwdCwgUHJlU3VwZXJzY3JpcHQsIFBvc3RTdWJzY3JpcHQsIFBvc3RT
dXBlcnNjcmlwdCB9OwogCitlbnVtIGNsYXNzIENvbXBvc2l0aW9uU3RhdGUgOiB1aW50OF90IHsg
U3RhcnRlZCwgSW5Qcm9ncmVzcywgRW5kZWQgfTsKKwogLy8gUmVsYXRpb25zaGlwcyBiZXR3ZWVu
IEFYIG9iamVjdHMuCiBlbnVtIGNsYXNzIEFYUmVsYXRpb25UeXBlIDogdWludDhfdCB7CiAgICAg
Tm9uZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vz
c2liaWxpdHlPYmplY3RJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCmluZGV4IDc5YzAyZmQzMmQwMS4uZGRkNjE0YThkZmQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmls
aXR5T2JqZWN0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0Fj
Y2Vzc2liaWxpdHlPYmplY3RJT1MubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQUND
RVNTSUJJTElUWSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oIgorI2ltcG9ydCAiRWRpdG9yLmgiCiAjaW1wb3J0ICJFdmVudE5h
bWVzLmgiCiAjaW1wb3J0ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMu
aCIKQEAgLTIwOCw2ICsyMDksNDEgQEAgc3RhdGljIHZvaWQgYXR0cmlidXRlU3RyaW5nU2V0U3R5
bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0clN0cmluZywgUmVuZGUKICAgICAgICAg
W2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1dGVDb250
ZXh0IHZhbHVlOlVJQWNjZXNzaWJpbGl0eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSByYW5nZTpy
YW5nZV07CiB9CiAKK3N0YXRpYyB2b2lkIGF0dHJpYnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0
dHJpYnV0ZXMoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZywgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyNpZiBIQVZFKElOTElORV9QUkVESUNUSU9OUykKKyAg
ICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHIgb2JqZWN0ID0g
cmVuZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJl
cik7CisKKyAgICBhdXRvIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQgPSBvYmplY3QtPmxhc3RQ
cmVzZW50ZWRUZXh0UHJlZGljdGlvbkNvbXBsZXRlKCk7CisgICAgdW5zaWduZWQgbGFzdFByZXNl
bnRlZENvbXBsZXRlV29yZExlbmd0aCA9IGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dC5s
ZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24g
PSBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkLmxvY2F0aW9uOworCisgICAgaWYgKCFsYXN0UHJl
c2VudGVkQ29tcGxldGVXb3JkLnRleHQuaXNFbXB0eSgpICYmIGxhc3RQcmVzZW50ZWRDb21wbGV0
ZVdvcmRQb3NpdGlvbiArIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRMZW5ndGggPD0gW2F0dHJp
YnV0ZWRTdHJpbmcgbGVuZ3RoXSkgeworICAgICAgICBOU1JhbmdlIGNvbXBsZXRlV29yZFJhbmdl
ID0gTlNNYWtlUmFuZ2UobGFzdFByZXNlbnRlZENvbXBsZXRlV29yZFBvc2l0aW9uLCBsYXN0UHJl
c2VudGVkQ29tcGxldGVXb3JkTGVuZ3RoKTsKKyAgICAgICAgaWYgKFtbYXR0cmlidXRlZFN0cmlu
Zy5zdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOmNvbXBsZXRlV29yZFJhbmdlXSBpc0VxdWFsVG9T
dHJpbmc6bGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50ZXh0XSkKKyAgICAgICAgICAgIFthdHRy
aWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlBY2NlcHRlZElubGluZVRl
eHRDb21wbGV0aW9uIHZhbHVlOmxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dCByYW5nZTpj
b21wbGV0ZVdvcmRSYW5nZV07CisgICAgfQorCisgICAgYXV0byBsYXN0UHJlc2VudGVkVGV4dFBy
ZWRpY3Rpb24gPSBvYmplY3QtPmxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbigpOworICAgIHVu
c2lnbmVkIGxhc3RQcmVzZW50ZWRMZW5ndGggPSBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24u
dGV4dC5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkUG9zaXRpb24gPSBsYXN0
UHJlc2VudGVkVGV4dFByZWRpY3Rpb24ubG9jYXRpb247CisKKyAgICBpZiAoIWxhc3RQcmVzZW50
ZWRUZXh0UHJlZGljdGlvbi50ZXh0LmlzRW1wdHkoKSAmJiBsYXN0UHJlc2VudGVkUG9zaXRpb24g
KyBsYXN0UHJlc2VudGVkTGVuZ3RoIDw9IFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0pIHsKKyAg
ICAgICAgTlNSYW5nZSBwcmVzZW50ZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGxhc3RQcmVzZW50ZWRQ
b3NpdGlvbiwgbGFzdFByZXNlbnRlZExlbmd0aCk7CisgICAgICAgIGlmICghW1thdHRyaWJ1dGVk
U3RyaW5nLnN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cHJlc2VudGVkUmFuZ2VdIGlzRXF1YWxU
b1N0cmluZzpsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dF0pCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNz
aWJpbGl0eUlubGluZVRleHRDb21wbGV0aW9uIHZhbHVlOlthdHRyaWJ1dGVkU3RyaW5nLnN0cmlu
ZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cHJlc2VudGVkUmFuZ2VdIHJhbmdlOnByZXNlbnRlZFJhbmdl
XTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhdHRyaWJ1dGVkU3RyaW5nKTsKKyAg
ICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOworI2VuZGlmIC8vIEhBVkUoSU5MSU5FX1BSRURJQ1RJ
T05TKQorfQorCiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5n
Q3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dCwgY29uc3QgU2ltcGxlUmFuZ2UmLCBB
WENvcmVPYmplY3Q6OlNwZWxsQ2hlY2spCiB7CiAgICAgLy8gU2tpcCBpbnZpc2libGUgdGV4dC4K
QEAgLTIyMyw2ICsyNTksNyBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1
dGVkU3RyaW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIGF0dHJpYnV0
ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChyZXN1bHQuZ2V0KCksIHJlbmRlcmVyLCByYW5nZSk7CiAg
ICAgYXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKHJlc3VsdC5nZXQoKSwgcmVuZGVy
ZXIsIHJhbmdlKTsKICAgICBhdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShyZXN1bHQuZ2V0KCks
IHJlbmRlcmVyLCByYW5nZSk7CisgICAgYXR0cmlidXRlZFN0cmluZ1NldENvbXBvc2l0aW9uQXR0
cmlidXRlcyhyZXN1bHQuZ2V0KCksIHJlbmRlcmVyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAppbmRleCAxMDU1MmMzZTk0ZDAu
LjZjNmJiOTFmODBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCkBA
IC00Niw2ICs0Niw5IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRv
a2VuQXR0YWNobWVudCA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5BCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3Np
YmlsaXR5VGV4dEF0dHJpYnV0ZUNvbnRleHQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlB
Y2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlU
ZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUiOwogCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFj
Y2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5SW5saW5l
VGV4dENvbXBsZXRpb24iOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5
QWNjZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJ
bmxpbmVUZXh0Q29tcGxldGlvbiI7CisKIEBpbnRlcmZhY2UgV0FLVmlldyAoaU9TQWNjZXNzaWJp
bGl0eSkKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZDsKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCBhZjYwNzFhM2ZmNjIuLmNmNTY2ZDkwMWM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjE4OCw3ICsyMTg4LDcgQEAgdm9pZCBFZGl0b3I6OnNl
dENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUp
CiAgICAgbV9jdXN0b21Db21wb3NpdGlvbkFubm90YXRpb25zLmNsZWFyKCk7CiAKICAgICBpZiAo
YXV0byogY2FjaGUgPSBtX2RvY3VtZW50LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOyBjYWNoZSAm
JiBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSkKLSAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0
aW9uQ2hhbmdlKCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQVhPYmplY3RDYWNoZTo6Q29tcG9z
aXRpb25TdGF0ZTo6RW5kZWQsIGZhbHNlKTsKKyAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0
aW9uQ2hhbmdlKCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQ29tcG9zaXRpb25TdGF0ZTo6RW5k
ZWQsIGZhbHNlLCB0ZXh0LCBtX2NvbXBvc2l0aW9uU3RhcnQsIG1faXNIYW5kbGluZ0FjY2VwdGVk
Q2FuZGlkYXRlKTsKIAogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzTm9uZSgpKQog
ICAgICAgICByZXR1cm47CkBAIC0yMzM1LDEyICsyMzM1LDEyIEBAIHZvaWQgRWRpdG9yOjpzZXRD
b21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVu
ZGVybGluCiAKICAgICBpZiAoYXV0byogY2FjaGUgPSBtX2RvY3VtZW50LmV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpKSB7CiAgICAgICAgIGlmIChwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSAmJiBwcmV2
aW91c0NvbXBvc2l0aW9uTm9kZSAhPSBtX2NvbXBvc2l0aW9uTm9kZSkgewotICAgICAgICAgICAg
YXV0byBzdGF0ZSA9IG1fY29tcG9zaXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRp
b25TdGF0ZTo6SW5Qcm9ncmVzcyA6IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OkVu
ZGVkOwotICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpwcmV2aW91
c0NvbXBvc2l0aW9uTm9kZSwgc3RhdGUsIHRydWUpOworICAgICAgICAgICAgYXV0byBzdGF0ZSA9
IG1fY29tcG9zaXRpb25Ob2RlID8gQ29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzcyA6IENvbXBv
c2l0aW9uU3RhdGU6OkVuZGVkOworICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9u
Q2hhbmdlKCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgc3RhdGUsIHRydWUsIHRleHQsIG1fY29t
cG9zaXRpb25TdGFydCwgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChtX2NvbXBvc2l0aW9uTm9kZSkgewotICAgICAgICAgICAgYXV0byBzdGF0
ZSA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25T
dGF0ZTo6SW5Qcm9ncmVzcyA6IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OlN0YXJ0
ZWQ7Ci0gICAgICAgICAgICBjYWNoZS0+b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoKm1fY29tcG9z
aXRpb25Ob2RlLCBzdGF0ZSwgdHJ1ZSk7CisgICAgICAgICAgICBhdXRvIHN0YXRlID0gcHJldmlv
dXNDb21wb3NpdGlvbk5vZGUgPyBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIDogQ29tcG9z
aXRpb25TdGF0ZTo6U3RhcnRlZDsKKyAgICAgICAgICAgIGNhY2hlLT5vblRleHRDb21wb3NpdGlv
bkNoYW5nZSgqbV9jb21wb3NpdGlvbk5vZGUsIHN0YXRlLCB0cnVlLCB0ZXh0LCBtX2NvbXBvc2l0
aW9uU3RhcnQsIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9y
L2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRy
aWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi4wOWQ2OGM1NjcwOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1z
dHJpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRo
YXQgdGhlIGF0dHJpYnV0ZWQgc3RyaW5nIGZvciBpbmxpbmUgcHJlZGljdGlvbnMgaXMgYWNjdXJh
dGUuCisKK0dvb2QgbW97CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5B
cHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJT
eXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0g
MTE7Cit9CisKK1NpbXVsYXRpbmcgcHJlc2VudGVkIGNvbXBsZXRpb246CitHb29kIG1veworICAg
IFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOwor
ICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxhciI7
CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDExOworfXJuaW5neworICAgIFVJ
QWNjZXNzaWJpbGl0eUlubGluZVRleHRDb21wbGV0aW9uID0gcm5pbmc7CisgICAgVUlBY2Nlc3Np
YmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nl
c3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9CisKK1NpbXVsYXRpbmcgYWNjZXB0ZWQg
Y29tcGxldGlvbjoKK0dvb2QgeworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9
ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUg
PSAiU3lzdGVtIEZvbnQgUmVndWxhciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6
ZSA9IDExOworfW1vcm5pbmd7CisgICAgVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxpbmVUZXh0
Q29tcGxldGlvbiA9IG1vcm5pbmc7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5
ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFt
ZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRT
aXplID0gMTE7Cit9CisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNp
bXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJp
YnV0ZWQtc3RyaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5kYjQzOWY2OGVjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRt
bApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+
CisKKzxpbnB1dCBpZD0iZWRpdGFibGUiIHR5cGU9InRleHQiIHRhYmluZGV4PSIwIj48L2lucHV0
PgorCis8c2NyaXB0PgordmFyIHJlc3VsdCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBh
dHRyaWJ1dGVkIHN0cmluZyBmb3IgaW5saW5lIHByZWRpY3Rpb25zIGlzIGFjY3VyYXRlLlxuXG4i
OworCitpZiAod2luZG93LnRleHRJbnB1dENvbnRyb2xsZXIgJiYgd2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgZWRpdGFibGUuZm9jdXMoKTsKKyAgICB2YXIgaW5wdXQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBpbnB1dC5pbnNlcnRU
ZXh0KCJHb29kIG1vIikKKyAgICByZXN1bHQgKz0gYCR7aW5wdXQuYXR0cmlidXRlZFN0cmluZ0Zv
clJhbmdlKDAsIDcpfVxuXG5gOworCisgICAgcmVzdWx0ICs9ICJTaW11bGF0aW5nIHByZXNlbnRl
ZCBjb21wbGV0aW9uOlxuIjsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQo
InJuaW5nIiwgMCwgNSwgZmFsc2UsIFsgeyBmcm9tOiAiMCIsIGxlbmd0aDogIjUiLCBjb2xvcjog
IiNGRjAwMDAzMyIsIGZvcmVncm91bmRDb2xvcjogIiNGRjAwMDBGRiIgfSBdLCB1bmRlZmluZWQp
OworICAgIHJlc3VsdCArPSBgJHtpbnB1dC5hdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UoMCwgMTIp
fVxuXG5gOworCisgICAgcmVzdWx0ICs9ICJTaW11bGF0aW5nIGFjY2VwdGVkIGNvbXBsZXRpb246
XG4iOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgiIiwgMCwgMCwgZmFs
c2UsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2Vy
dFRleHQoInJuaW5nIik7CisgICAgcmVzdWx0ICs9IGAke2lucHV0LmF0dHJpYnV0ZWRTdHJpbmdG
b3JSYW5nZSgwLCAxMil9XG5cbmA7CisKKyAgICBkZWJ1ZyhyZXN1bHQpOworfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
MTYvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xNi9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDNhMWVlMjRhMDFmNy4uODlmMDZlN2U4MjcyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTYvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MtMTYvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQsMyArMTQsNiBAQCBm
YXN0L2ltYWdlcy9wYWdlLXdpZGUtYW5pbWF0aW9uLXRvZ2dsZS5odG1sIFsgU2tpcCBdCiBmYXN0
L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLWFuaW1hdGVUcmFuc2Zvcm0tc3ZnLWFuaW1hdGlv
bi5odG1sIFsgU2tpcCBdIAogZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1vZmZzY3Jl
ZW4tYW5pbWF0aW9ucy5odG1sIFsgU2tpcCBdCiBzdmcvY3VzdG9tL3N2Zy1mb250cy1pbi1odG1s
Lmh0bWwgWyBTa2lwIF0KKworIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjYxMDU2CithY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24t
YXR0cmlidXRlZC1zdHJpbmcuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467641</attachid>
            <date>2023-09-11 11:09:43 -0700</date>
            <delta_ts>2023-09-11 13:27:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230911110942.patch</filename>
            <type>text/plain</type>
            <size>20953</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSAyZGVkZTJjMzBhMWRiYzk4YjI0MWQ1NmNhYmY1MjA2MmM2OGYzM2EwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgNSBTZXAgMjAyMyAyMjo1NjozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gYWNjZXNzaWJpbGl0eSBvYmplY3RzLCB3aGljaCBhcmUgdXBkYXRlZCBpbgpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24gKGlPUyBv
bmx5KToKLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbjogdGhlICJyZXN0IiBvZiB0aGUg
d29yZCBiZWluZyBwcmVkaWN0ZWQuIEZvciBleGFtcGxlLCBpZiB0aGUgdGV4dCAib3Bwb3J0dW4i
IGhhZCBiZWVuIHR5cGVkLCBhbmQKIml0eSIgd2FzIHByZXNlbnRlZCBhcyBhIHByZWRpY3Rpb24s
IHdlIHdvdWxkIHN0b3JlICJpdHkiLgotIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29t
cGxldGU6IHRoZSB3aG9sZSB3b3JkIGJlaW5nIHByZWRpY3RlZC4gVXNpbmcgdGhlIHByZXZpb3Vz
IGV4YW1wbGUsIHdlIHdvdWxkIHN0b3JlIHRoZSB3aG9sZSB3b3JkLAoib3Bwb3J0dW5pdHkiLgoK
SW4gYm90aCBjYXNlcywgd2Ugc3RvcmUgdGhlIHN0cmluZyB2YWx1ZSBhbmQgdGhlIHBvc2l0aW9u
LCBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBlZGl0b3IuIExhc3RQcmVzZW50ZWRUZXh0UHJl
ZGljdGlvbiBpcyByZXNldApvbmNlIGEgcHJlZGljdGlvbiBpcyAiYWNjZXB0ZWQiLCBhbmQgbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSBpcyByZXNldCBvbmNlIHdlIHN0YXJ0
IGEgbmV3IGNvbXBvc2l0aW9uLgoKSW4gdGhlIGlPUyBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIsIHdl
IGFjY2VzcyB0aGVzZSB2YWx1ZXMgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIHJlc3VsdGluZyBhdHRy
aWJ1dGVkIHN0cmluZywgaWYgYXBwbGljYWJsZS4gVGhlCmF0dHJpYnV0ZWRTdHJpbmdTZXRDb21w
b3NpdGlvbkF0dHJpYnV0ZXMgbWV0aG9kIGhhbmRsZXMgdGhpcyB3b3JrLCBhbmQgY2hlY2tzIHRo
ZSBsb2NhdGlvbiBhbmQgcmFuZ2Ugb2YgdGhlIHZhbHVlcyB0byBlbnN1cmUKdGhhdCB0aGV5IGFy
ZSB2YWxpZC4KClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIG5ldyB0ZXN0IHRoYXQgc2ltdWxh
dGVzIGlubGluZSBwcmVkaWN0aW9ucyBhbmQgY2hlY2tzIHRoYXQgdGhlIGNvcnJlY3QgYXR0cmli
dXRlcyBhcmUgZXhwb3NlZC4KCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVk
aWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblRleHRDb21w
b3NpdGlvbkNoYW5nZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmg6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5nZSk6
CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CihX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpJbmxpbmVUZXh0UHJlZGljdGlvbjo6cmVzZXQp
OgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGFzdFByZXNlbnRlZFRleHRQcmVkaWN0
aW9uIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RQcmVzZW50ZWRU
ZXh0UHJlZGljdGlvbkNvbXBsZXRlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tOgooV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2V0TGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKToKKFdlYkNvcmU6
OmF0dHJpYnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMpOgooV2ViQ29yZTo6YXR0
cmlidXRlZFN0cmluZ0NyZWF0ZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHA6CihXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKLS0tCiAu
Li4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAxMyArKystCiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgNiArLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgMjEgKysrKysrCiAu
Li4vQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oICAgICAgICAgICAgfCAgMiArCiAuLi4v
aW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0gICAgICAgICAgICAgfCA2NSArKysrKysrKysr
KysrKysrKysrCiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmggICAg
fCAgMyArCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAgICAgICAgICAgfCAx
MCArLS0KIC4uLi1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dCB8IDM3
ICsrKysrKysrKysrCiAuLi4vaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRt
bCAgfCAzNSArKysrKysrKysrCiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTYvVGVzdEV4cGVj
dGF0aW9ucyAgfCAgMyArCiAxMCBmaWxlcyBjaGFuZ2VkLCAxODUgaW5zZXJ0aW9ucygrKSwgMTAg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVj
dGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9z
LXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggNWY4
MDhkZWU0YWFiLi43NmM0Nzg4MjllYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMTczMSwxMyArMTczMSwxOCBAQCB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6Om9uVmFsaWRpdHlDaGFuZ2UoRWxlbWVudCYgZWxlbWVudCkKICAgICBwb3N0Tm90
aWZpY2F0aW9uKGdldCgmZWxlbWVudCksIG51bGxwdHIsIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQp
OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUm
IG5vZGUsIENvbXBvc2l0aW9uU3RhdGUgY29tcG9zaXRpb25TdGF0ZSwgYm9vbCB2YWx1ZUNoYW5n
ZWQpCit2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmIG5v
ZGUsIENvbXBvc2l0aW9uU3RhdGUgY29tcG9zaXRpb25TdGF0ZSwgYm9vbCB2YWx1ZUNoYW5nZWQs
IFN0cmluZyB0ZXh0LCBzaXplX3QgcG9zaXRpb24sIGJvb2wgaGFuZGxpbmdBY2NlcHRlZENhbmRp
ZGF0ZSkKIHsKICNpZiBIQVZFKElOTElORV9QUkVESUNUSU9OUykKICAgICBhdXRvKiBvYmplY3Qg
PSBnZXRPckNyZWF0ZSgmbm9kZSk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsK
IAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAodmFsdWVDaGFuZ2VkKQorICAgICAgICBvYmpl
Y3QtPnNldExhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbihub2RlLCBjb21wb3NpdGlvblN0YXRl
LCB0ZXh0LCBwb3NpdGlvbiwgaGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSk7CisjZW5kaWYKKwog
ICAgIGlmIChhdXRvKiBvYnNlcnZhYmxlT2JqZWN0ID0gb2JqZWN0LT5vYnNlcnZhYmxlT2JqZWN0
KCkpCiAgICAgICAgIG9iamVjdCA9IG9ic2VydmFibGVPYmplY3Q7CiAKQEAgLTE3NTgsNiArMTc2
MywxMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUm
IG5vZGUsIENvbXBvc2l0aW9uU3RhdGUgY29tcG9zaQogICAgIFVOVVNFRF9QQVJBTShjb21wb3Np
dGlvblN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVDaGFuZ2VkKTsKICNlbmRpZiAvLyBI
QVZFKElOTElORV9QUkVESUNUSU9OUykKKworI2lmICFQTEFURk9STShJT1MpIHx8ICFIQVZFKElO
TElORV9QUkVESUNUSU9OUykKKyAgICBVTlVTRURfUEFSQU0odGV4dCk7CisgICAgVU5VU0VEX1BB
UkFNKHBvc2l0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0
ZSk7CisjZW5kaWYKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggYmNmZGE5NmU2Yzg1Li5iNDE3OTk2MTBkNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0x
ODcsOCArMTg3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF0dGFjaFdyYXBwZXIoQWNjZXNzaWJp
bGl0eU9iamVjdCopOwogCiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBDb21wb3NpdGlvblN0YXRl
IDogdWludDhfdCB7IFN0YXJ0ZWQsIEluUHJvZ3Jlc3MsIEVuZGVkIH07Ci0KICAgICB2b2lkIG9u
UGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU+KTsKICAgICB2
b2lkIHNldFBhZ2VBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlPiBzdGF0ZSkg
eyBtX3BhZ2VBY3Rpdml0eVN0YXRlID0gc3RhdGU7IH0KICAgICBPcHRpb25TZXQ8QWN0aXZpdHlT
dGF0ZT4gcGFnZUFjdGl2aXR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VBY3Rpdml0eVN0
YXRlOyB9CkBAIC0yMDMsNyArMjAxLDcgQEAgcHVibGljOgogICAgIHZvaWQgb25UZXh0U2VjdXJp
dHlDaGFuZ2VkKEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2b2lkIG9uVGl0bGVDaGFuZ2UoRG9j
dW1lbnQmKTsKICAgICB2b2lkIG9uVmFsaWRpdHlDaGFuZ2UoRWxlbWVudCYpOwotICAgIHZvaWQg
b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoTm9kZSYsIENvbXBvc2l0aW9uU3RhdGUsIGJvb2wpOwor
ICAgIHZvaWQgb25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoTm9kZSYsIENvbXBvc2l0aW9uU3RhdGUs
IGJvb2wsIFN0cmluZywgc2l6ZV90LCBib29sKTsKICAgICB2b2lkIHZhbHVlQ2hhbmdlZChFbGVt
ZW50Kik7CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUqKTsKICAgICB2b2lkIGF1
dG9maWxsVHlwZUNoYW5nZWQoTm9kZSopOwpAQCAtNzQ4LDcgKzc0Niw3IEBAIGlubGluZSB2b2lk
IEFYT2JqZWN0Q2FjaGU6Om9uU2VsZWN0ZWRDaGFuZ2VkKE5vZGUqKSB7IH0KIGlubGluZSB2b2lk
IEFYT2JqZWN0Q2FjaGU6Om9uVGV4dFNlY3VyaXR5Q2hhbmdlZChIVE1MSW5wdXRFbGVtZW50Jikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblRpdGxlQ2hhbmdlKERvY3VtZW50Jikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblZhbGlkaXR5Q2hhbmdlKEVsZW1lbnQm
KSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdl
KE5vZGUmLCBDb21wb3NpdGlvblN0YXRlLCBib29sKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmLCBDb21wb3NpdGlvblN0YXRlLCBi
b29sLCBTdHJpbmcsIHNpemVfdCwgYm9vbCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
Ojp2YWx1ZUNoYW5nZWQoRWxlbWVudCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
b25Gb2N1c0NoYW5nZShOb2RlKiwgTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNo
ZTo6b25QYWdlQWN0aXZpdHlTdGF0ZUNoYW5nZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZT4pIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAppbmRleCAwOTAyYTYzNTc5YzcuLmFmYjllNWNhODEyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTc2NCw2ICs3
NjQsMjMgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTU9ERUxfRUxF
TUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlkPj4gbW9kZWxFbGVtZW50Q2hpbGRyZW4oKSBv
dmVycmlkZTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorICAgIHN0cnVjdCBJbmxpbmVU
ZXh0UHJlZGljdGlvbiB7CisgICAgICAgIFN0cmluZyB0ZXh0OworICAgICAgICBzaXplX3QgbG9j
YXRpb24geyAwIH07CisgICAgICAgIHZvaWQgcmVzZXQoKQorICAgICAgICB7CisgICAgICAgICAg
ICB0ZXh0ID0gIiJfczsKKyAgICAgICAgICAgIGxvY2F0aW9uID0gMDsKKyAgICAgICAgfQorICAg
IH07CisKKyAgICBJbmxpbmVUZXh0UHJlZGljdGlvbiBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbjsgfQorICAg
IElubGluZVRleHRQcmVkaWN0aW9uIGxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbkNvbXBsZXRl
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZTsg
fQorICAgIHZvaWQgc2V0TGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKE5vZGUmLCBDb21wb3Np
dGlvblN0YXRlLCBTdHJpbmcsIHNpemVfdCwgYm9vbCk7CisjZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQorCiBwcm90ZWN0ZWQ6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCgpID0gZGVmYXVsdDsKIApA
QCAtODI4LDYgKzg0NSwxMCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gbV9jYWNoZWRWaXNpYmxlQ2hhcmFjdGVyUmFuZ2U7CiAgICAgLy8gVGhpcyBp
cyBzdGQ6Om51bGxvcHQgaWYgd2UgaGF2ZW4ndCBjYWNoZWQgYW55IGlucHV0IHlldC4KICAgICBt
dXRhYmxlIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiwgRmxvYXRSZWN0LCBJbnRSZWN0Pj4gbV9jYWNoZWRWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VJbnB1
dHM7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIElubGluZVRleHRQcmVkaWN0aW9uIG1fbGFzdFBy
ZXNlbnRlZFRleHRQcmVkaWN0aW9uOworICAgIElubGluZVRleHRQcmVkaWN0aW9uIG1fbGFzdFBy
ZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGU7CisjZW5kaWYKIHByb3RlY3RlZDogLy8gRklY
TUU6IE1ha2UgdGhlIGRhdGEgbWVtYmVycyBwcml2YXRlLgogICAgIC8vIEZJWE1FOiBUaGlzIGNh
biBiZSByZXBsYWNlZCBieSBBWEFuY2VzdG9yRmxhZ3MuCiAgICAgQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZEZyb21QYXJlbnREYXRhIG1faXNJZ25vcmVkRnJvbVBhcmVudERhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oCmluZGV4IDdjMjY1NmM4YTIwOC4uY2U0Yzg0M2Q2MGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJ
bnRlcmZhY2UuaApAQCAtNzcxLDYgKzc3MSw4IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVZp
c2libGVQb3NpdGlvbkZvckJvdW5kcyB7CiBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2Ny
aXB0T2JqZWN0VHlwZSB7IFN1YnNjcmlwdCwgU3VwZXJzY3JpcHQgfTsKIGVudW0gY2xhc3MgQWNj
ZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1
cGVyc2NyaXB0LCBQb3N0U3Vic2NyaXB0LCBQb3N0U3VwZXJzY3JpcHQgfTsKIAorZW51bSBjbGFz
cyBDb21wb3NpdGlvblN0YXRlIDogdWludDhfdCB7IFN0YXJ0ZWQsIEluUHJvZ3Jlc3MsIEVuZGVk
IH07CisKIC8vIFJlbGF0aW9uc2hpcHMgYmV0d2VlbiBBWCBvYmplY3RzLgogZW51bSBjbGFzcyBB
WFJlbGF0aW9uVHlwZSA6IHVpbnQ4X3QgewogICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQpp
bmRleCA3OWMwMmZkMzJkMDEuLjY4MmU1OTE0NmIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCkBA
IC0xMjksNiArMTI5LDM1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbnB1dFR5cGVQ
b3B1cEJ1dHRvbigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnNldExhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbihOb2RlJiBwcmV2aW91
c0NvbXBvc2l0aW9uTm9kZSwgQ29tcG9zaXRpb25TdGF0ZSBzdGF0ZSwgU3RyaW5nIHRleHQsIHNp
emVfdCBsb2NhdGlvbiwgYm9vbCBoYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKQoreworICAgIGlm
IChoYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKQorICAgICAgICBtX2xhc3RQcmVzZW50ZWRUZXh0
UHJlZGljdGlvbiA9IHsgdGV4dCwgbG9jYXRpb24gfTsKKworICAgIGlmIChzdGF0ZSA9PSBDb21w
b3NpdGlvblN0YXRlOjpFbmRlZCAmJiAhbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKCkudGV4
dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4
dCA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlLmlzVGV4dE5vZGUoKSA/IGR5bmFtaWNEb3duY2Fz
dDxUZXh0PihwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSktPndob2xlVGV4dCgpIDogU3RyaW5nKCk7
CisgICAgICAgIHNpemVfdCB3b3JkU3RhcnQgPSAwOworCisgICAgICAgIC8vIEZpbmQgdGhlIGxv
Y2F0aW9uIG9mIHRoZSB0aGUgY29tcGxldGUgd29yZCBiZWluZyBwcmVkaWN0ZWQgYnkgaXRlcmF0
aW5nIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSB0ZXh0IHRvIGZpbmQgd2hpdGVzcGFjZS4KKyAgICAg
ICAgaWYgKHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dC5sZW5ndGgoKSkgeworICAgICAgICAg
ICAgZm9yIChzaXplX3QgcG9zaXRpb24gPSBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHQubGVu
Z3RoKCkgLSAxOyBwb3NpdGlvbiA+IDA7IHBvc2l0aW9uLS0pIHsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNBU0NJSVdoaXRlc3BhY2UocHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0W3Bvc2l0aW9u
XSkpIHsKKyAgICAgICAgICAgICAgICAgICAgd29yZFN0YXJ0ID0gcG9zaXRpb24gKyAxOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0ID0gcHJldmlv
dXNDb21wb3NpdGlvbk5vZGVUZXh0LnN1YnN0cmluZyh3b3JkU3RhcnQpOworCisgICAgICAgIFN0
cmluZyBjb21wbGV0ZVByZWRpY3RlZFdvcmQgPSBtYWtlU3RyaW5nKHByZXZpb3VzQ29tcG9zaXRp
b25Ob2RlVGV4dCwgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dCk7CisgICAgICAg
IG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUgPSB7IGNvbXBsZXRlUHJlZGlj
dGVkV29yZCwgd29yZFN0YXJ0IH07CisKKyAgICAgICAgLy8gUmVzZXQgbGFzdCBwcmVzZW50ZWQg
cHJlZGljdGlvbiBzaW5jZSBhIGNhbmRpZGF0ZSB3YXMgYWNjZXB0ZWQuCisgICAgICAgIG1fbGFz
dFByZXNlbnRlZFRleHRQcmVkaWN0aW9uLnJlc2V0KCk7CisgICAgfSBlbHNlIGlmIChzdGF0ZSA9
PSBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIHx8IHN0YXRlID09IENvbXBvc2l0aW9uU3Rh
dGU6OlN0YXJ0ZWQpCisgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxl
dGUucmVzZXQoKTsKK30KKwogLy8gTlNBdHRyaWJ1dGVkU3RyaW5nIHN1cHBvcnQuCiAKIHN0YXRp
YyB2b2lkIGF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJp
bmcgKmF0dHJTdHJpbmcsIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IE5TUmFuZ2UmIHJh
bmdlKQpAQCAtMjA4LDYgKzIzNyw0MSBAQCBzdGF0aWMgdm9pZCBhdHRyaWJ1dGVTdHJpbmdTZXRT
dHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICphdHRyU3RyaW5nLCBSZW5kZQogICAgICAg
ICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VGV4dEF0dHJpYnV0ZUNv
bnRleHQgdmFsdWU6VUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlIHJhbmdl
OnJhbmdlXTsKIH0KIAorc3RhdGljIHZvaWQgYXR0cmlidXRlZFN0cmluZ1NldENvbXBvc2l0aW9u
QXR0cmlidXRlcyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nLCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworI2lmIEhBVkUoSU5MSU5FX1BSRURJQ1RJT05TKQor
ICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0ciBvYmplY3Qg
PSByZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRl
cmVyKTsKKworICAgIGF1dG8gbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZCA9IG9iamVjdC0+bGFz
dFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUoKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJl
c2VudGVkQ29tcGxldGVXb3JkTGVuZ3RoID0gbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50ZXh0
Lmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRQb3NpdGlv
biA9IGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQubG9jYXRpb247CisKKyAgICBpZiAoIWxhc3RQ
cmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dC5pc0VtcHR5KCkgJiYgbGFzdFByZXNlbnRlZENvbXBs
ZXRlV29yZFBvc2l0aW9uICsgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0aCA8PSBbYXR0
cmlidXRlZFN0cmluZyBsZW5ndGhdKSB7CisgICAgICAgIE5TUmFuZ2UgY29tcGxldGVXb3JkUmFu
Z2UgPSBOU01ha2VSYW5nZShsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24sIGxhc3RQ
cmVzZW50ZWRDb21wbGV0ZVdvcmRMZW5ndGgpOworICAgICAgICBpZiAoW1thdHRyaWJ1dGVkU3Ry
aW5nLnN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6Y29tcGxldGVXb3JkUmFuZ2VdIGlzRXF1YWxU
b1N0cmluZzpsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkLnRleHRdKQorICAgICAgICAgICAgW2F0
dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eUFjY2VwdGVkSW5saW5l
VGV4dENvbXBsZXRpb24gdmFsdWU6bGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50ZXh0IHJhbmdl
OmNvbXBsZXRlV29yZFJhbmdlXTsKKyAgICB9CisKKyAgICBhdXRvIGxhc3RQcmVzZW50ZWRUZXh0
UHJlZGljdGlvbiA9IG9iamVjdC0+bGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKCk7CisgICAg
dW5zaWduZWQgbGFzdFByZXNlbnRlZExlbmd0aCA9IGxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlv
bi50ZXh0Lmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGxhc3RQcmVzZW50ZWRQb3NpdGlvbiA9IGxh
c3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbi5sb2NhdGlvbjsKKworICAgIGlmICghbGFzdFByZXNl
bnRlZFRleHRQcmVkaWN0aW9uLnRleHQuaXNFbXB0eSgpICYmIGxhc3RQcmVzZW50ZWRQb3NpdGlv
biArIGxhc3RQcmVzZW50ZWRMZW5ndGggPD0gW2F0dHJpYnV0ZWRTdHJpbmcgbGVuZ3RoXSkgewor
ICAgICAgICBOU1JhbmdlIHByZXNlbnRlZFJhbmdlID0gTlNNYWtlUmFuZ2UobGFzdFByZXNlbnRl
ZFBvc2l0aW9uLCBsYXN0UHJlc2VudGVkTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFbW2F0dHJpYnV0
ZWRTdHJpbmcuc3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpwcmVzZW50ZWRSYW5nZV0gaXNFcXVh
bFRvU3RyaW5nOmxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbi50ZXh0XSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBbYXR0cmlidXRlZFN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nl
c3NpYmlsaXR5SW5saW5lVGV4dENvbXBsZXRpb24gdmFsdWU6W2F0dHJpYnV0ZWRTdHJpbmcuc3Ry
aW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpwcmVzZW50ZWRSYW5nZV0gcmFuZ2U6cHJlc2VudGVkUmFu
Z2VdOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGF0dHJpYnV0ZWRTdHJpbmcpOwor
ICAgIFVOVVNFRF9QQVJBTShyZW5kZXJlcik7CisjZW5kaWYgLy8gSEFWRShJTkxJTkVfUFJFRElD
VElPTlMpCit9CisKIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTdHJp
bmdDcmVhdGUoTm9kZSogbm9kZSwgU3RyaW5nVmlldyB0ZXh0LCBjb25zdCBTaW1wbGVSYW5nZSYs
IEFYQ29yZU9iamVjdDo6U3BlbGxDaGVjaykKIHsKICAgICAvLyBTa2lwIGludmlzaWJsZSB0ZXh0
LgpAQCAtMjIzLDYgKzI4Nyw3IEBAIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJp
YnV0ZWRTdHJpbmdDcmVhdGUoTm9kZSogbm9kZSwgU3RyaW5nVmlldyB0ZXh0CiAgICAgYXR0cmli
dXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKHJlc3VsdC5nZXQoKSwgcmVuZGVyZXIsIHJhbmdlKTsK
ICAgICBhdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2ZWwocmVzdWx0LmdldCgpLCByZW5k
ZXJlciwgcmFuZ2UpOwogICAgIGF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKHJlc3VsdC5nZXQo
KSwgcmVuZGVyZXIsIHJhbmdlKTsKKyAgICBhdHRyaWJ1dGVkU3RyaW5nU2V0Q29tcG9zaXRpb25B
dHRyaWJ1dGVzKHJlc3VsdC5nZXQoKSwgcmVuZGVyZXIpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCmluZGV4IDEwNTUyYzNlOTRk
MC4uNmM2YmI5MWY4MGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmgK
QEAgLTQ2LDYgKzQ2LDkgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5
VG9rZW5BdHRhY2htZW50ID0gQCJVSUFjY2Vzc2liaWxpdHlUb2tlbkEKIHN0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0ID0gQCJVSUFjY2Vz
c2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBV
SUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUgPSBAIlVJQWNjZXNzaWJpbGl0
eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSI7CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJ
QWNjZXNzaWJpbGl0eUlubGluZVRleHRDb21wbGV0aW9uID0gQCJVSUFjY2Vzc2liaWxpdHlJbmxp
bmVUZXh0Q29tcGxldGlvbiI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxp
dHlBY2NlcHRlZElubGluZVRleHRDb21wbGV0aW9uID0gQCJVSUFjY2Vzc2liaWxpdHlBY2NlcHRl
ZElubGluZVRleHRDb21wbGV0aW9uIjsKKwogQGludGVyZmFjZSBXQUtWaWV3IChpT1NBY2Nlc3Np
YmlsaXR5KQogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkOwogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IGFmNjA3MWEzZmY2Mi4uY2Y1NjZkOTAxYzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yMTg4LDcgKzIxODgsNyBAQCB2b2lkIEVkaXRvcjo6
c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBTZXRDb21wb3NpdGlvbk1vZGUgbW9k
ZSkKICAgICBtX2N1c3RvbUNvbXBvc2l0aW9uQW5ub3RhdGlvbnMuY2xlYXIoKTsKIAogICAgIGlm
IChhdXRvKiBjYWNoZSA9IG1fZG9jdW1lbnQuZXhpc3RpbmdBWE9iamVjdENhY2hlKCk7IGNhY2hl
ICYmIHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlKQotICAgICAgICBjYWNoZS0+b25UZXh0Q29tcG9z
aXRpb25DaGFuZ2UoKnByZXZpb3VzQ29tcG9zaXRpb25Ob2RlLCBBWE9iamVjdENhY2hlOjpDb21w
b3NpdGlvblN0YXRlOjpFbmRlZCwgZmFsc2UpOworICAgICAgICBjYWNoZS0+b25UZXh0Q29tcG9z
aXRpb25DaGFuZ2UoKnByZXZpb3VzQ29tcG9zaXRpb25Ob2RlLCBDb21wb3NpdGlvblN0YXRlOjpF
bmRlZCwgZmFsc2UsIHRleHQsIG1fY29tcG9zaXRpb25TdGFydCwgbV9pc0hhbmRsaW5nQWNjZXB0
ZWRDYW5kaWRhdGUpOwogCiAgICAgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuaXNOb25lKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTIzMzUsMTIgKzIzMzUsMTIgQEAgdm9pZCBFZGl0b3I6OnNl
dENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9u
VW5kZXJsaW4KIAogICAgIGlmIChhdXRvKiBjYWNoZSA9IG1fZG9jdW1lbnQuZXhpc3RpbmdBWE9i
amVjdENhY2hlKCkpIHsKICAgICAgICAgaWYgKHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlICYmIHBy
ZXZpb3VzQ29tcG9zaXRpb25Ob2RlICE9IG1fY29tcG9zaXRpb25Ob2RlKSB7Ci0gICAgICAgICAg
ICBhdXRvIHN0YXRlID0gbV9jb21wb3NpdGlvbk5vZGUgPyBBWE9iamVjdENhY2hlOjpDb21wb3Np
dGlvblN0YXRlOjpJblByb2dyZXNzIDogQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6
RW5kZWQ7Ci0gICAgICAgICAgICBjYWNoZS0+b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoKnByZXZp
b3VzQ29tcG9zaXRpb25Ob2RlLCBzdGF0ZSwgdHJ1ZSk7CisgICAgICAgICAgICBhdXRvIHN0YXRl
ID0gbV9jb21wb3NpdGlvbk5vZGUgPyBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIDogQ29t
cG9zaXRpb25TdGF0ZTo6RW5kZWQ7CisgICAgICAgICAgICBjYWNoZS0+b25UZXh0Q29tcG9zaXRp
b25DaGFuZ2UoKnByZXZpb3VzQ29tcG9zaXRpb25Ob2RlLCBzdGF0ZSwgdHJ1ZSwgdGV4dCwgbV9j
b21wb3NpdGlvblN0YXJ0LCBtX2lzSGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fY29tcG9zaXRpb25Ob2RlKSB7Ci0gICAgICAgICAgICBhdXRvIHN0
YXRlID0gcHJldmlvdXNDb21wb3NpdGlvbk5vZGUgPyBBWE9iamVjdENhY2hlOjpDb21wb3NpdGlv
blN0YXRlOjpJblByb2dyZXNzIDogQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6U3Rh
cnRlZDsKLSAgICAgICAgICAgIGNhY2hlLT5vblRleHRDb21wb3NpdGlvbkNoYW5nZSgqbV9jb21w
b3NpdGlvbk5vZGUsIHN0YXRlLCB0cnVlKTsKKyAgICAgICAgICAgIGF1dG8gc3RhdGUgPSBwcmV2
aW91c0NvbXBvc2l0aW9uTm9kZSA/IENvbXBvc2l0aW9uU3RhdGU6OkluUHJvZ3Jlc3MgOiBDb21w
b3NpdGlvblN0YXRlOjpTdGFydGVkOworICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0
aW9uQ2hhbmdlKCptX2NvbXBvc2l0aW9uTm9kZSwgc3RhdGUsIHRydWUsIHRleHQsIG1fY29tcG9z
aXRpb25TdGFydCwgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpOwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0
b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0
dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjA5ZDY4YzU2NzA5MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVk
LXN0cmluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNyBAQAorVGhpcyB0ZXN0IGVuc3VyZXMg
dGhhdCB0aGUgYXR0cmlidXRlZCBzdHJpbmcgZm9yIGlubGluZSBwcmVkaWN0aW9ucyBpcyBhY2N1
cmF0ZS4KKworR29vZCBtb3sKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSAi
LkFwcGxlU3lzdGVtVUlGb250IjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0g
IlN5c3RlbSBGb250IFJlZ3VsYXIiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUg
PSAxMTsKK30KKworU2ltdWxhdGluZyBwcmVzZW50ZWQgY29tcGxldGlvbjoKK0dvb2QgbW97Cisg
ICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7
CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFy
IjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9cm5pbmd7CisgICAg
VUlBY2Nlc3NpYmlsaXR5SW5saW5lVGV4dENvbXBsZXRpb24gPSBybmluZzsKKyAgICBVSUFjY2Vz
c2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSAiLkFwcGxlU3lzdGVtVUlGb250IjsKKyAgICBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gIlN5c3RlbSBGb250IFJlZ3VsYXIiOworICAgIFVJ
QWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxMTsKK30KKworU2ltdWxhdGluZyBhY2NlcHRl
ZCBjb21wbGV0aW9uOgorR29vZCB7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5
ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFt
ZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRT
aXplID0gMTE7Cit9bW9ybmluZ3sKKyAgICBVSUFjY2Vzc2liaWxpdHlBY2NlcHRlZElubGluZVRl
eHRDb21wbGV0aW9uID0gbW9ybmluZzsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1p
bHkgPSAiLkFwcGxlU3lzdGVtVUlGb250IjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRO
YW1lID0gIlN5c3RlbSBGb250IFJlZ3VsYXIiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9u
dFNpemUgPSAxMTsKK30KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mt
c2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0
cmlidXRlZC1zdHJpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmRiNDM5ZjY4ZWNlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5o
dG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKworPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9k
eT4KKworPGlucHV0IGlkPSJlZGl0YWJsZSIgdHlwZT0idGV4dCIgdGFiaW5kZXg9IjAiPjwvaW5w
dXQ+CisKKzxzY3JpcHQ+Cit2YXIgcmVzdWx0ID0gIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhl
IGF0dHJpYnV0ZWQgc3RyaW5nIGZvciBpbmxpbmUgcHJlZGljdGlvbnMgaXMgYWNjdXJhdGUuXG5c
biI7CisKK2lmICh3aW5kb3cudGV4dElucHV0Q29udHJvbGxlciAmJiB3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKKyAgICBlZGl0YWJsZS5mb2N1cygpOworICAgIHZhciBpbnB1dCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIGlucHV0Lmluc2Vy
dFRleHQoIkdvb2QgbW8iKQorICAgIHJlc3VsdCArPSBgJHtpbnB1dC5hdHRyaWJ1dGVkU3RyaW5n
Rm9yUmFuZ2UoMCwgNyl9XG5cbmA7CisKKyAgICByZXN1bHQgKz0gIlNpbXVsYXRpbmcgcHJlc2Vu
dGVkIGNvbXBsZXRpb246XG4iOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4
dCgicm5pbmciLCAwLCA1LCBmYWxzZSwgWyB7IGZyb206ICIwIiwgbGVuZ3RoOiAiNSIsIGNvbG9y
OiAiI0ZGMDAwMDMzIiwgZm9yZWdyb3VuZENvbG9yOiAiI0ZGMDAwMEZGIiB9IF0sIHVuZGVmaW5l
ZCk7CisgICAgcmVzdWx0ICs9IGAke2lucHV0LmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSgwLCAx
Mil9XG5cbmA7CisKKyAgICByZXN1bHQgKz0gIlNpbXVsYXRpbmcgYWNjZXB0ZWQgY29tcGxldGlv
bjpcbiI7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCIiLCAwLCAwLCBm
YWxzZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpOworICAgIHRleHRJbnB1dENvbnRyb2xsZXIuaW5z
ZXJ0VGV4dCgicm5pbmciKTsKKyAgICByZXN1bHQgKz0gYCR7aW5wdXQuYXR0cmlidXRlZFN0cmlu
Z0ZvclJhbmdlKDAsIDEyKX1cblxuYDsKKworICAgIGRlYnVnKHJlc3VsdCk7Cit9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy0xNi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTE2L1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggM2ExZWUyNGEwMWY3Li44OWYwNmU3ZTgyNzIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNCwzICsxNCw2IEBA
IGZhc3QvaW1hZ2VzL3BhZ2Utd2lkZS1hbmltYXRpb24tdG9nZ2xlLmh0bWwgWyBTa2lwIF0KIGZh
c3QvaW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2UtYW5pbWF0ZVRyYW5zZm9ybS1zdmctYW5pbWF0
aW9uLmh0bWwgWyBTa2lwIF0gCiBmYXN0L2ltYWdlcy9wYWdld2lkZS1wbGF5LXBhdXNlLW9mZnNj
cmVlbi1hbmltYXRpb25zLmh0bWwgWyBTa2lwIF0KIHN2Zy9jdXN0b20vc3ZnLWZvbnRzLWluLWh0
bWwuaHRtbCBbIFNraXAgXQorCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNjEwNTYKK2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlv
bi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467646</attachid>
            <date>2023-09-11 13:27:45 -0700</date>
            <delta_ts>2023-09-12 12:10:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230911132744.patch</filename>
            <type>text/plain</type>
            <size>21230</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSAzMGQ0NWQxZDFjYzBjMGM3ODAzYjNlYTI1YWExZTI0OTNlMTEzZmVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgNSBTZXAgMjAyMyAyMjo1NjozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gYWNjZXNzaWJpbGl0eSBvYmplY3RzLCB3aGljaCBhcmUgdXBkYXRlZCBpbgpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24gKGlPUyBv
bmx5KToKLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbjogdGhlICJyZXN0IiBvZiB0aGUg
d29yZCBiZWluZyBwcmVkaWN0ZWQuIEZvciBleGFtcGxlLCBpZiB0aGUgdGV4dCAib3Bwb3J0dW4i
IGhhZCBiZWVuIHR5cGVkLCBhbmQKIml0eSIgd2FzIHByZXNlbnRlZCBhcyBhIHByZWRpY3Rpb24s
IHdlIHdvdWxkIHN0b3JlICJpdHkiLgotIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29t
cGxldGU6IHRoZSB3aG9sZSB3b3JkIGJlaW5nIHByZWRpY3RlZC4gVXNpbmcgdGhlIHByZXZpb3Vz
IGV4YW1wbGUsIHdlIHdvdWxkIHN0b3JlIHRoZSB3aG9sZSB3b3JkLAoib3Bwb3J0dW5pdHkiLgoK
SW4gYm90aCBjYXNlcywgd2Ugc3RvcmUgdGhlIHN0cmluZyB2YWx1ZSBhbmQgdGhlIHBvc2l0aW9u
LCBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBlZGl0b3IuIExhc3RQcmVzZW50ZWRUZXh0UHJl
ZGljdGlvbiBpcyByZXNldApvbmNlIGEgcHJlZGljdGlvbiBpcyAiYWNjZXB0ZWQiLCBhbmQgbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSBpcyByZXNldCBvbmNlIHdlIHN0YXJ0
IGEgbmV3IGNvbXBvc2l0aW9uLgoKSW4gdGhlIGlPUyBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIsIHdl
IGFjY2VzcyB0aGVzZSB2YWx1ZXMgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIHJlc3VsdGluZyBhdHRy
aWJ1dGVkIHN0cmluZywgaWYgYXBwbGljYWJsZS4gVGhlCmF0dHJpYnV0ZWRTdHJpbmdTZXRDb21w
b3NpdGlvbkF0dHJpYnV0ZXMgbWV0aG9kIGhhbmRsZXMgdGhpcyB3b3JrLCBhbmQgY2hlY2tzIHRo
ZSBsb2NhdGlvbiBhbmQgcmFuZ2Ugb2YgdGhlIHZhbHVlcyB0byBlbnN1cmUKdGhhdCB0aGV5IGFy
ZSB2YWxpZC4KClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIG5ldyB0ZXN0IHRoYXQgc2ltdWxh
dGVzIGlubGluZSBwcmVkaWN0aW9ucyBhbmQgY2hlY2tzIHRoYXQgdGhlIGNvcnJlY3QgYXR0cmli
dXRlcyBhcmUgZXhwb3NlZC4KCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVk
aWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblRleHRDb21w
b3NpdGlvbkNoYW5nZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmg6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5nZSk6
CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CihX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpJbmxpbmVUZXh0UHJlZGljdGlvbjo6cmVzZXQp
OgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGFzdFByZXNlbnRlZFRleHRQcmVkaWN0
aW9uIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RQcmVzZW50ZWRU
ZXh0UHJlZGljdGlvbkNvbXBsZXRlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tOgooV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2V0TGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKToKKFdlYkNvcmU6
OmF0dHJpYnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMpOgooV2ViQ29yZTo6YXR0
cmlidXRlZFN0cmluZ0NyZWF0ZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHA6CihXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKLS0tCiAu
Li4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAxMyArKystCiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgNiArLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgMjEgKysrKysrCiAu
Li4vQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oICAgICAgICAgICAgfCAgMiArCiAuLi4v
aW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0gICAgICAgICAgICAgfCA3MyArKysrKysrKysr
KysrKysrKysrCiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLmggICAg
fCAgMyArCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgICAgICAgICAgICAgfCAx
MCArLS0KIC4uLi1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dCB8IDM3
ICsrKysrKysrKysKIC4uLi9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5odG1s
ICB8IDM1ICsrKysrKysrKwogTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTE2L1Rlc3RFeHBlY3Rh
dGlvbnMgIHwgIDMgKwogMTAgZmlsZXMgY2hhbmdlZCwgMTkzIGluc2VydGlvbnMoKyksIDEwIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3Rl
ZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1z
aW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRtbAoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDVmODA4
ZGVlNGFhYi4uNzM5ZDdkZjUxNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTE3MzEsMTMgKzE3MzEsMTggQEAgdm9pZCBBWE9iamVj
dENhY2hlOjpvblZhbGlkaXR5Q2hhbmdlKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcG9zdE5vdGlm
aWNhdGlvbihnZXQoJmVsZW1lbnQpLCBudWxscHRyLCBBWEludmFsaWRTdGF0dXNDaGFuZ2VkKTsK
IH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiBu
b2RlLCBDb21wb3NpdGlvblN0YXRlIGNvbXBvc2l0aW9uU3RhdGUsIGJvb2wgdmFsdWVDaGFuZ2Vk
KQordm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiBub2Rl
LCBDb21wb3NpdGlvblN0YXRlIGNvbXBvc2l0aW9uU3RhdGUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBT
dHJpbmcgdGV4dCwgc2l6ZV90IHBvc2l0aW9uLCBib29sIGhhbmRsaW5nQWNjZXB0ZWRDYW5kaWRh
dGUpCiB7CiAjaWYgSEFWRShJTkxJTkVfUFJFRElDVElPTlMpCiAgICAgYXV0byogb2JqZWN0ID0g
Z2V0T3JDcmVhdGUoJm5vZGUpOwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmICh2YWx1ZUNoYW5nZWQpCisgICAgICAg
IG9iamVjdC0+c2V0TGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKG5vZGUsIGNvbXBvc2l0aW9u
U3RhdGUsIHRleHQsIHBvc2l0aW9uLCBoYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKKyNlbmRp
ZgorCiAgICAgaWYgKGF1dG8qIG9ic2VydmFibGVPYmplY3QgPSBvYmplY3QtPm9ic2VydmFibGVP
YmplY3QoKSkKICAgICAgICAgb2JqZWN0ID0gb2JzZXJ2YWJsZU9iamVjdDsKIApAQCAtMTc1OCw2
ICsxNzYzLDEyIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFuZ2Uo
Tm9kZSYgbm9kZSwgQ29tcG9zaXRpb25TdGF0ZSBjb21wb3NpCiAgICAgVU5VU0VEX1BBUkFNKGNv
bXBvc2l0aW9uU3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1ZUNoYW5nZWQpOwogI2VuZGlm
IC8vIEhBVkUoSU5MSU5FX1BSRURJQ1RJT05TKQorCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
IHx8ICFIQVZFKElOTElORV9QUkVESUNUSU9OUykKKyAgICBVTlVTRURfUEFSQU0odGV4dCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxpbmdBY2Nl
cHRlZENhbmRpZGF0ZSk7CisjZW5kaWYKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggYmNmZGE5NmU2Yzg1Li5i
NDE3OTk2MTBkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCkBAIC0xODcsOCArMTg3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF0dGFjaFdyYXBw
ZXIoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBDb21w
b3NpdGlvblN0YXRlIDogdWludDhfdCB7IFN0YXJ0ZWQsIEluUHJvZ3Jlc3MsIEVuZGVkIH07Ci0K
ICAgICB2b2lkIG9uUGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5U3Rh
dGU+KTsKICAgICB2b2lkIHNldFBhZ2VBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlPiBzdGF0ZSkgeyBtX3BhZ2VBY3Rpdml0eVN0YXRlID0gc3RhdGU7IH0KICAgICBPcHRpb25T
ZXQ8QWN0aXZpdHlTdGF0ZT4gcGFnZUFjdGl2aXR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VBY3Rpdml0eVN0YXRlOyB9CkBAIC0yMDMsNyArMjAxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
b25UZXh0U2VjdXJpdHlDaGFuZ2VkKEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2b2lkIG9uVGl0
bGVDaGFuZ2UoRG9jdW1lbnQmKTsKICAgICB2b2lkIG9uVmFsaWRpdHlDaGFuZ2UoRWxlbWVudCYp
OwotICAgIHZvaWQgb25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoTm9kZSYsIENvbXBvc2l0aW9uU3Rh
dGUsIGJvb2wpOworICAgIHZvaWQgb25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoTm9kZSYsIENvbXBv
c2l0aW9uU3RhdGUsIGJvb2wsIFN0cmluZywgc2l6ZV90LCBib29sKTsKICAgICB2b2lkIHZhbHVl
Q2hhbmdlZChFbGVtZW50Kik7CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFuZ2VkKE5vZGUqKTsK
ICAgICB2b2lkIGF1dG9maWxsVHlwZUNoYW5nZWQoTm9kZSopOwpAQCAtNzQ4LDcgKzc0Niw3IEBA
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uU2VsZWN0ZWRDaGFuZ2VkKE5vZGUqKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dFNlY3VyaXR5Q2hhbmdlZChIVE1MSW5w
dXRFbGVtZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblRpdGxlQ2hhbmdl
KERvY3VtZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblZhbGlkaXR5Q2hh
bmdlKEVsZW1lbnQmKSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBv
c2l0aW9uQ2hhbmdlKE5vZGUmLCBDb21wb3NpdGlvblN0YXRlLCBib29sKSB7IH0KK2lubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmLCBDb21wb3Np
dGlvblN0YXRlLCBib29sLCBTdHJpbmcsIHNpemVfdCwgYm9vbCkgeyB9CiBpbmxpbmUgdm9pZCBB
WE9iamVjdENhY2hlOjp2YWx1ZUNoYW5nZWQoRWxlbWVudCopIHsgfQogaW5saW5lIHZvaWQgQVhP
YmplY3RDYWNoZTo6b25Gb2N1c0NoYW5nZShOb2RlKiwgTm9kZSopIHsgfQogaW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6b25QYWdlQWN0aXZpdHlTdGF0ZUNoYW5nZShPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZT4pIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAppbmRleCAwOTAyYTYzNTc5YzcuLjkzMWQ3YmMzYmY4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgK
QEAgLTc2NCw2ICs3NjQsMjMgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoTU9ERUxfRUxFTUVOVCkKICAgICBWZWN0b3I8UmV0YWluUHRyPGlkPj4gbW9kZWxFbGVtZW50
Q2hpbGRyZW4oKSBvdmVycmlkZTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICBzdHJ1Y3QgSW5saW5lVGV4dFByZWRpY3Rpb24geworICAgICAgICBTdHJpbmcgdGV4dDsK
KyAgICAgICAgc2l6ZV90IGxvY2F0aW9uIHsgMCB9OworICAgICAgICB2b2lkIHJlc2V0KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdGV4dCA9ICIiX3M7CisgICAgICAgICAgICBsb2NhdGlvbiA9
IDA7CisgICAgICAgIH0KKyAgICB9OworCisgICAgSW5saW5lVGV4dFByZWRpY3Rpb24gbGFzdFBy
ZXNlbnRlZFRleHRQcmVkaWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UHJlc2VudGVkVGV4
dFByZWRpY3Rpb247IH0KKyAgICBJbmxpbmVUZXh0UHJlZGljdGlvbiBsYXN0UHJlc2VudGVkVGV4
dFByZWRpY3Rpb25Db21wbGV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFByZXNlbnRlZFRleHRQ
cmVkaWN0aW9uQ29tcGxldGU7IH0KKyAgICB2b2lkIHNldExhc3RQcmVzZW50ZWRUZXh0UHJlZGlj
dGlvbihOb2RlJiwgQ29tcG9zaXRpb25TdGF0ZSwgU3RyaW5nLCBzaXplX3QsIGJvb2wpOworI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCisKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KCkgPSBkZWZhdWx0OwogCkBAIC04MjgsNiArODQ1LDEwIEBAIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtX2NhY2hlZFZpc2libGVDaGFy
YWN0ZXJSYW5nZTsKICAgICAvLyBUaGlzIGlzIHN0ZDo6bnVsbG9wdCBpZiB3ZSBoYXZlbid0IGNh
Y2hlZCBhbnkgaW5wdXQgeWV0LgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxl
PHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBGbG9hdFJlY3QsIEludFJlY3Q+PiBtX2NhY2hl
ZFZpc2libGVDaGFyYWN0ZXJSYW5nZUlucHV0czsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIElubGluZVRleHRQcmVkaWN0aW9uIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uOwor
ICAgIElubGluZVRleHRQcmVkaWN0aW9uIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29t
cGxldGU7CisjZW5kaWYKIHByb3RlY3RlZDogLy8gRklYTUU6IE1ha2UgdGhlIGRhdGEgbWVtYmVy
cyBwcml2YXRlLgogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZXBsYWNlZCBieSBBWEFuY2Vz
dG9yRmxhZ3MuCiAgICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhIG1faXNJ
Z25vcmVkRnJvbVBhcmVudERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDdjMjY1NmM4
YTIwOC4uY2U0Yzg0M2Q2MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtNzcxLDYgKzc3
MSw4IEBAIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJvdW5kcyB7
CiBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7IFN1YnNjcmlw
dCwgU3VwZXJzY3JpcHQgfTsKIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlw
dE9iamVjdFR5cGUgeyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0U3Vic2NyaXB0
LCBQb3N0U3VwZXJzY3JpcHQgfTsKIAorZW51bSBjbGFzcyBDb21wb3NpdGlvblN0YXRlIDogdWlu
dDhfdCB7IFN0YXJ0ZWQsIEluUHJvZ3Jlc3MsIEVuZGVkIH07CisKIC8vIFJlbGF0aW9uc2hpcHMg
YmV0d2VlbiBBWCBvYmplY3RzLgogZW51bSBjbGFzcyBBWFJlbGF0aW9uVHlwZSA6IHVpbnQ4X3Qg
ewogICAgIE5vbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQppbmRleCA3OWMwMmZkMzJkMDEuLmYwNmFj
YjljMTNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNj
ZXNzaWJpbGl0eU9iamVjdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCkBAIC0xMjksNiArMTI5LDQzIEBAIGJvb2wg
QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RQcmVz
ZW50ZWRUZXh0UHJlZGljdGlvbihOb2RlJiBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQ29tcG9z
aXRpb25TdGF0ZSBzdGF0ZSwgU3RyaW5nIHRleHQsIHNpemVfdCBsb2NhdGlvbiwgYm9vbCBoYW5k
bGluZ0FjY2VwdGVkQ2FuZGlkYXRlKQoreworI2lmIEhBVkUoSU5MSU5FX1BSRURJQ1RJT05TKQor
ICAgIGlmIChoYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKQorICAgICAgICBtX2xhc3RQcmVzZW50
ZWRUZXh0UHJlZGljdGlvbiA9IHsgdGV4dCwgbG9jYXRpb24gfTsKKworICAgIGlmIChzdGF0ZSA9
PSBDb21wb3NpdGlvblN0YXRlOjpFbmRlZCAmJiAhbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9u
KCkudGV4dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIHByZXZpb3VzQ29tcG9zaXRpb25O
b2RlVGV4dCA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlLmlzVGV4dE5vZGUoKSA/IGR5bmFtaWNE
b3duY2FzdDxUZXh0PihwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSktPndob2xlVGV4dCgpIDogU3Ry
aW5nKCk7CisgICAgICAgIHNpemVfdCB3b3JkU3RhcnQgPSAwOworCisgICAgICAgIC8vIEZpbmQg
dGhlIGxvY2F0aW9uIG9mIHRoZSB0aGUgY29tcGxldGUgd29yZCBiZWluZyBwcmVkaWN0ZWQgYnkg
aXRlcmF0aW5nIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSB0ZXh0IHRvIGZpbmQgd2hpdGVzcGFjZS4K
KyAgICAgICAgaWYgKHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dC5sZW5ndGgoKSkgeworICAg
ICAgICAgICAgZm9yIChzaXplX3QgcG9zaXRpb24gPSBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRl
eHQubGVuZ3RoKCkgLSAxOyBwb3NpdGlvbiA+IDA7IHBvc2l0aW9uLS0pIHsKKyAgICAgICAgICAg
ICAgICBpZiAoaXNBU0NJSVdoaXRlc3BhY2UocHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0W3Bv
c2l0aW9uXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgd29yZFN0YXJ0ID0gcG9zaXRpb24gKyAx
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0ID0g
cHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0LnN1YnN0cmluZyh3b3JkU3RhcnQpOworCisgICAg
ICAgIFN0cmluZyBjb21wbGV0ZVByZWRpY3RlZFdvcmQgPSBtYWtlU3RyaW5nKHByZXZpb3VzQ29t
cG9zaXRpb25Ob2RlVGV4dCwgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dCk7Cisg
ICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUgPSB7IGNvbXBsZXRl
UHJlZGljdGVkV29yZCwgd29yZFN0YXJ0IH07CisKKyAgICAgICAgLy8gUmVzZXQgbGFzdCBwcmVz
ZW50ZWQgcHJlZGljdGlvbiBzaW5jZSBhIGNhbmRpZGF0ZSB3YXMgYWNjZXB0ZWQuCisgICAgICAg
IG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uLnJlc2V0KCk7CisgICAgfSBlbHNlIGlmIChz
dGF0ZSA9PSBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIHx8IHN0YXRlID09IENvbXBvc2l0
aW9uU3RhdGU6OlN0YXJ0ZWQpCisgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9u
Q29tcGxldGUucmVzZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHByZXZpb3VzQ29tcG9z
aXRpb25Ob2RlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0
ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNFRF9QQVJBTShoYW5k
bGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKKyNlbmRpZiAvLyBIQVZFIChJTkxJTkVfUFJFRElDVElP
TlMpCit9CisKIC8vIE5TQXR0cmlidXRlZFN0cmluZyBzdXBwb3J0LgogCiBzdGF0aWMgdm9pZCBh
dHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICphdHRy
U3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBOU1JhbmdlJiByYW5nZSkKQEAg
LTIwOCw2ICsyNDUsNDEgQEAgc3RhdGljIHZvaWQgYXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0clN0cmluZywgUmVuZGUKICAgICAgICAgW2F0dHJT
dHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0IHZh
bHVlOlVJQWNjZXNzaWJpbGl0eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSByYW5nZTpyYW5nZV07
CiB9CiAKK3N0YXRpYyB2b2lkIGF0dHJpYnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0
ZXMoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZywgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKK3sKKyNpZiBIQVZFKElOTElORV9QUkVESUNUSU9OUykKKyAgICBpZiAo
IXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHIgb2JqZWN0ID0gcmVuZGVy
ZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlcik7CisK
KyAgICBhdXRvIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQgPSBvYmplY3QtPmxhc3RQcmVzZW50
ZWRUZXh0UHJlZGljdGlvbkNvbXBsZXRlKCk7CisgICAgdW5zaWduZWQgbGFzdFByZXNlbnRlZENv
bXBsZXRlV29yZExlbmd0aCA9IGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dC5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24gPSBsYXN0
UHJlc2VudGVkQ29tcGxldGVXb3JkLmxvY2F0aW9uOworCisgICAgaWYgKCFsYXN0UHJlc2VudGVk
Q29tcGxldGVXb3JkLnRleHQuaXNFbXB0eSgpICYmIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRQ
b3NpdGlvbiArIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRMZW5ndGggPD0gW2F0dHJpYnV0ZWRT
dHJpbmcgbGVuZ3RoXSkgeworICAgICAgICBOU1JhbmdlIGNvbXBsZXRlV29yZFJhbmdlID0gTlNN
YWtlUmFuZ2UobGFzdFByZXNlbnRlZENvbXBsZXRlV29yZFBvc2l0aW9uLCBsYXN0UHJlc2VudGVk
Q29tcGxldGVXb3JkTGVuZ3RoKTsKKyAgICAgICAgaWYgKFtbYXR0cmlidXRlZFN0cmluZy5zdHJp
bmcgc3Vic3RyaW5nV2l0aFJhbmdlOmNvbXBsZXRlV29yZFJhbmdlXSBpc0VxdWFsVG9TdHJpbmc6
bGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50ZXh0XSkKKyAgICAgICAgICAgIFthdHRyaWJ1dGVk
U3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlBY2NlcHRlZElubGluZVRleHRDb21w
bGV0aW9uIHZhbHVlOmxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dCByYW5nZTpjb21wbGV0
ZVdvcmRSYW5nZV07CisgICAgfQorCisgICAgYXV0byBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rp
b24gPSBvYmplY3QtPmxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbigpOworICAgIHVuc2lnbmVk
IGxhc3RQcmVzZW50ZWRMZW5ndGggPSBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dC5s
ZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkUG9zaXRpb24gPSBsYXN0UHJlc2Vu
dGVkVGV4dFByZWRpY3Rpb24ubG9jYXRpb247CisKKyAgICBpZiAoIWxhc3RQcmVzZW50ZWRUZXh0
UHJlZGljdGlvbi50ZXh0LmlzRW1wdHkoKSAmJiBsYXN0UHJlc2VudGVkUG9zaXRpb24gKyBsYXN0
UHJlc2VudGVkTGVuZ3RoIDw9IFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0pIHsKKyAgICAgICAg
TlNSYW5nZSBwcmVzZW50ZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGxhc3RQcmVzZW50ZWRQb3NpdGlv
biwgbGFzdFByZXNlbnRlZExlbmd0aCk7CisgICAgICAgIGlmICghW1thdHRyaWJ1dGVkU3RyaW5n
LnN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cHJlc2VudGVkUmFuZ2VdIGlzRXF1YWxUb1N0cmlu
ZzpsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dF0pCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0
eUlubGluZVRleHRDb21wbGV0aW9uIHZhbHVlOlthdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyBzdWJz
dHJpbmdXaXRoUmFuZ2U6cHJlc2VudGVkUmFuZ2VdIHJhbmdlOnByZXNlbnRlZFJhbmdlXTsKKyAg
ICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhdHRyaWJ1dGVkU3RyaW5nKTsKKyAgICBVTlVT
RURfUEFSQU0ocmVuZGVyZXIpOworI2VuZGlmIC8vIEhBVkUoSU5MSU5FX1BSRURJQ1RJT05TKQor
fQorCiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nQ3JlYXRl
KE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dCwgY29uc3QgU2ltcGxlUmFuZ2UmLCBBWENvcmVP
YmplY3Q6OlNwZWxsQ2hlY2spCiB7CiAgICAgLy8gU2tpcCBpbnZpc2libGUgdGV4dC4KQEAgLTIy
Myw2ICsyOTUsNyBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3Ry
aW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIGF0dHJpYnV0ZVN0cmlu
Z1NldEhlYWRpbmdMZXZlbChyZXN1bHQuZ2V0KCksIHJlbmRlcmVyLCByYW5nZSk7CiAgICAgYXR0
cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKHJlc3VsdC5nZXQoKSwgcmVuZGVyZXIsIHJh
bmdlKTsKICAgICBhdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShyZXN1bHQuZ2V0KCksIHJlbmRl
cmVyLCByYW5nZSk7CisgICAgYXR0cmlidXRlZFN0cmluZ1NldENvbXBvc2l0aW9uQXR0cmlidXRl
cyhyZXN1bHQuZ2V0KCksIHJlbmRlcmVyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAppbmRleCAxMDU1MmMzZTk0ZDAuLjZjNmJi
OTFmODBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCkBAIC00Niw2
ICs0Niw5IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2VuQXR0
YWNobWVudCA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5BCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBVSUFjY2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3NpYmlsaXR5
VGV4dEF0dHJpYnV0ZUNvbnRleHQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3Np
YmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlUZXh0dWFs
Q29udGV4dFNvdXJjZUNvZGUiOwogCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2li
aWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5SW5saW5lVGV4dENv
bXBsZXRpb24iOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5QWNjZXB0
ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxpbmVU
ZXh0Q29tcGxldGlvbiI7CisKIEBpbnRlcmZhY2UgV0FLVmlldyAoaU9TQWNjZXNzaWJpbGl0eSkK
IC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAppbmRleCBhZjYwNzFhM2ZmNjIuLmNmNTY2ZDkwMWM2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcApAQCAtMjE4OCw3ICsyMTg4LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBv
c2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUpCiAgICAg
bV9jdXN0b21Db21wb3NpdGlvbkFubm90YXRpb25zLmNsZWFyKCk7CiAKICAgICBpZiAoYXV0byog
Y2FjaGUgPSBtX2RvY3VtZW50LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOyBjYWNoZSAmJiBwcmV2
aW91c0NvbXBvc2l0aW9uTm9kZSkKLSAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hh
bmdlKCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25T
dGF0ZTo6RW5kZWQsIGZhbHNlKTsKKyAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hh
bmdlKCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQ29tcG9zaXRpb25TdGF0ZTo6RW5kZWQsIGZh
bHNlLCB0ZXh0LCBtX2NvbXBvc2l0aW9uU3RhcnQsIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlk
YXRlKTsKIAogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAg
ICByZXR1cm47CkBAIC0yMzM1LDEyICsyMzM1LDEyIEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3Np
dGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGlu
CiAKICAgICBpZiAoYXV0byogY2FjaGUgPSBtX2RvY3VtZW50LmV4aXN0aW5nQVhPYmplY3RDYWNo
ZSgpKSB7CiAgICAgICAgIGlmIChwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSAmJiBwcmV2aW91c0Nv
bXBvc2l0aW9uTm9kZSAhPSBtX2NvbXBvc2l0aW9uTm9kZSkgewotICAgICAgICAgICAgYXV0byBz
dGF0ZSA9IG1fY29tcG9zaXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0
ZTo6SW5Qcm9ncmVzcyA6IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OkVuZGVkOwot
ICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpwcmV2aW91c0NvbXBv
c2l0aW9uTm9kZSwgc3RhdGUsIHRydWUpOworICAgICAgICAgICAgYXV0byBzdGF0ZSA9IG1fY29t
cG9zaXRpb25Ob2RlID8gQ29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzcyA6IENvbXBvc2l0aW9u
U3RhdGU6OkVuZGVkOworICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdl
KCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgc3RhdGUsIHRydWUsIHRleHQsIG1fY29tcG9zaXRp
b25TdGFydCwgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChtX2NvbXBvc2l0aW9uTm9kZSkgewotICAgICAgICAgICAgYXV0byBzdGF0ZSA9IHBy
ZXZpb3VzQ29tcG9zaXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6
SW5Qcm9ncmVzcyA6IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OlN0YXJ0ZWQ7Ci0g
ICAgICAgICAgICBjYWNoZS0+b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoKm1fY29tcG9zaXRpb25O
b2RlLCBzdGF0ZSwgdHJ1ZSk7CisgICAgICAgICAgICBhdXRvIHN0YXRlID0gcHJldmlvdXNDb21w
b3NpdGlvbk5vZGUgPyBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIDogQ29tcG9zaXRpb25T
dGF0ZTo6U3RhcnRlZDsKKyAgICAgICAgICAgIGNhY2hlLT5vblRleHRDb21wb3NpdGlvbkNoYW5n
ZSgqbV9jb21wb3NpdGlvbk5vZGUsIHN0YXRlLCB0cnVlLCB0ZXh0LCBtX2NvbXBvc2l0aW9uU3Rh
cnQsIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGlu
ZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVk
LXN0cmluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4wOWQ2OGM1NjcwOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhl
IGF0dHJpYnV0ZWQgc3RyaW5nIGZvciBpbmxpbmUgcHJlZGljdGlvbnMgaXMgYWNjdXJhdGUuCisK
K0dvb2QgbW97CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5
c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0g
Rm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9
CisKK1NpbXVsYXRpbmcgcHJlc2VudGVkIGNvbXBsZXRpb246CitHb29kIG1veworICAgIFVJQWNj
ZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOworICAgIFVJ
QWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxhciI7CisgICAg
VUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDExOworfXJuaW5neworICAgIFVJQWNjZXNz
aWJpbGl0eUlubGluZVRleHRDb21wbGV0aW9uID0gcm5pbmc7CisgICAgVUlBY2Nlc3NpYmlsaXR5
VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmls
aXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2li
aWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9CisKK1NpbXVsYXRpbmcgYWNjZXB0ZWQgY29tcGxl
dGlvbjoKK0dvb2QgeworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9ICIuQXBw
bGVTeXN0ZW1VSUZvbnQiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSAiU3lz
dGVtIEZvbnQgUmVndWxhciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDEx
OworfW1vcm5pbmd7CisgICAgVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxpbmVUZXh0Q29tcGxl
dGlvbiA9IG1vcm5pbmc7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5B
cHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJT
eXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0g
MTE7Cit9CisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRv
ci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQt
c3RyaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kYjQz
OWY2OGVjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lv
cy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRtbApAQCAt
MCwwICsxLDM1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9h
Y2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKzxp
bnB1dCBpZD0iZWRpdGFibGUiIHR5cGU9InRleHQiIHRhYmluZGV4PSIwIj48L2lucHV0PgorCis8
c2NyaXB0PgordmFyIHJlc3VsdCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBhdHRyaWJ1
dGVkIHN0cmluZyBmb3IgaW5saW5lIHByZWRpY3Rpb25zIGlzIGFjY3VyYXRlLlxuXG4iOworCitp
ZiAod2luZG93LnRleHRJbnB1dENvbnRyb2xsZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKSB7CisgICAgZWRpdGFibGUuZm9jdXMoKTsKKyAgICB2YXIgaW5wdXQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICBpbnB1dC5pbnNlcnRUZXh0KCJH
b29kIG1vIikKKyAgICByZXN1bHQgKz0gYCR7aW5wdXQuYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdl
KDAsIDcpfVxuXG5gOworCisgICAgcmVzdWx0ICs9ICJTaW11bGF0aW5nIHByZXNlbnRlZCBjb21w
bGV0aW9uOlxuIjsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRleHQoInJuaW5n
IiwgMCwgNSwgZmFsc2UsIFsgeyBmcm9tOiAiMCIsIGxlbmd0aDogIjUiLCBjb2xvcjogIiNGRjAw
MDAzMyIsIGZvcmVncm91bmRDb2xvcjogIiNGRjAwMDBGRiIgfSBdLCB1bmRlZmluZWQpOworICAg
IHJlc3VsdCArPSBgJHtpbnB1dC5hdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UoMCwgMTIpfVxuXG5g
OworCisgICAgcmVzdWx0ICs9ICJTaW11bGF0aW5nIGFjY2VwdGVkIGNvbXBsZXRpb246XG4iOwor
ICAgIHRleHRJbnB1dENvbnRyb2xsZXIuc2V0TWFya2VkVGV4dCgiIiwgMCwgMCwgZmFsc2UsIHVu
ZGVmaW5lZCwgdW5kZWZpbmVkKTsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmluc2VydFRleHQo
InJuaW5nIik7CisgICAgcmVzdWx0ICs9IGAke2lucHV0LmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5n
ZSgwLCAxMil9XG5cbmA7CisKKyAgICBkZWJ1ZyhyZXN1bHQpOworfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTYvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDNhMWVlMjRhMDFmNy4uODlmMDZlN2U4MjcyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MtMTYvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MtMTYvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQsMyArMTQsNiBAQCBmYXN0L2lt
YWdlcy9wYWdlLXdpZGUtYW5pbWF0aW9uLXRvZ2dsZS5odG1sIFsgU2tpcCBdCiBmYXN0L2ltYWdl
cy9wYWdld2lkZS1wbGF5LXBhdXNlLWFuaW1hdGVUcmFuc2Zvcm0tc3ZnLWFuaW1hdGlvbi5odG1s
IFsgU2tpcCBdIAogZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1vZmZzY3JlZW4tYW5p
bWF0aW9ucy5odG1sIFsgU2tpcCBdCiBzdmcvY3VzdG9tL3N2Zy1mb250cy1pbi1odG1sLmh0bWwg
WyBTa2lwIF0KKworIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYx
MDU2CithY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmli
dXRlZC1zdHJpbmcuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467666</attachid>
            <date>2023-09-12 12:10:45 -0700</date>
            <delta_ts>2023-09-13 09:59:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230912121044.patch</filename>
            <type>text/plain</type>
            <size>21309</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSBjMGRlNDMxOWIxNzBiNTM2Nzc1YzE1ZTQ0YmIzNzVhYjRhYzE1NTVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgNSBTZXAgMjAyMyAyMjo1NjozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gYWNjZXNzaWJpbGl0eSBvYmplY3RzLCB3aGljaCBhcmUgdXBkYXRlZCBpbgpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24gKGlPUyBv
bmx5KToKLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbjogdGhlICJyZXN0IiBvZiB0aGUg
d29yZCBiZWluZyBwcmVkaWN0ZWQuIEZvciBleGFtcGxlLCBpZiB0aGUgdGV4dCAib3Bwb3J0dW4i
IGhhZCBiZWVuIHR5cGVkLCBhbmQKIml0eSIgd2FzIHByZXNlbnRlZCBhcyBhIHByZWRpY3Rpb24s
IHdlIHdvdWxkIHN0b3JlICJpdHkiLgotIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29t
cGxldGU6IHRoZSB3aG9sZSB3b3JkIGJlaW5nIHByZWRpY3RlZC4gVXNpbmcgdGhlIHByZXZpb3Vz
IGV4YW1wbGUsIHdlIHdvdWxkIHN0b3JlIHRoZSB3aG9sZSB3b3JkLAoib3Bwb3J0dW5pdHkiLgoK
SW4gYm90aCBjYXNlcywgd2Ugc3RvcmUgdGhlIHN0cmluZyB2YWx1ZSBhbmQgdGhlIHBvc2l0aW9u
LCBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBlZGl0b3IuIExhc3RQcmVzZW50ZWRUZXh0UHJl
ZGljdGlvbiBpcyByZXNldApvbmNlIGEgcHJlZGljdGlvbiBpcyAiYWNjZXB0ZWQiLCBhbmQgbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSBpcyByZXNldCBvbmNlIHdlIHN0YXJ0
IGEgbmV3IGNvbXBvc2l0aW9uLgoKSW4gdGhlIGlPUyBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIsIHdl
IGFjY2VzcyB0aGVzZSB2YWx1ZXMgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIHJlc3VsdGluZyBhdHRy
aWJ1dGVkIHN0cmluZywgaWYgYXBwbGljYWJsZS4gVGhlCmF0dHJpYnV0ZWRTdHJpbmdTZXRDb21w
b3NpdGlvbkF0dHJpYnV0ZXMgbWV0aG9kIGhhbmRsZXMgdGhpcyB3b3JrLCBhbmQgY2hlY2tzIHRo
ZSBsb2NhdGlvbiBhbmQgcmFuZ2Ugb2YgdGhlIHZhbHVlcyB0byBlbnN1cmUKdGhhdCB0aGV5IGFy
ZSB2YWxpZC4KClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIG5ldyB0ZXN0IHRoYXQgc2ltdWxh
dGVzIGlubGluZSBwcmVkaWN0aW9ucyBhbmQgY2hlY2tzIHRoYXQgdGhlIGNvcnJlY3QgYXR0cmli
dXRlcyBhcmUgZXhwb3NlZC4KCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVk
aWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblRleHRDb21w
b3NpdGlvbkNoYW5nZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmg6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5nZSk6
CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CihX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpJbmxpbmVUZXh0UHJlZGljdGlvbjo6cmVzZXQp
OgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGFzdFByZXNlbnRlZFRleHRQcmVkaWN0
aW9uIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RQcmVzZW50ZWRU
ZXh0UHJlZGljdGlvbkNvbXBsZXRlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tOgooV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2V0TGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKToKKFdlYkNvcmU6
OmF0dHJpYnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMpOgooV2ViQ29yZTo6YXR0
cmlidXRlZFN0cmluZ0NyZWF0ZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHA6CihXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKLS0tCiAu
Li4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAxMyArKystCiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgNiArLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgMjEgKysrKysKIC4u
Li9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggICAgICAgICAgICB8ICAyICsKIC4uLi9p
b3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbSAgICAgICAgICAgICB8IDc3ICsrKysrKysrKysr
KysrKysrKysKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaCAgICB8
ICAzICsKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCAgICAgICAgICAgICB8IDEw
ICstLQogLi4uLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQudHh0IHwgMzcg
KysrKysrKysrCiAuLi4vaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRtbCAg
fCAzNSArKysrKysrKysKIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRp
b25zICB8ICAzICsKIDEwIGZpbGVzIGNoYW5nZWQsIDE5NyBpbnNlcnRpb25zKCspLCAxMCBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lv
cy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCA1ZjgwOGRl
ZTRhYWIuLjczOWQ3ZGY1MTcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNzMxLDEzICsxNzMxLDE4IEBAIHZvaWQgQVhPYmplY3RD
YWNoZTo6b25WYWxpZGl0eUNoYW5nZShFbGVtZW50JiBlbGVtZW50KQogICAgIHBvc3ROb3RpZmlj
YXRpb24oZ2V0KCZlbGVtZW50KSwgbnVsbHB0ciwgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCk7CiB9
CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoTm9kZSYgbm9k
ZSwgQ29tcG9zaXRpb25TdGF0ZSBjb21wb3NpdGlvblN0YXRlLCBib29sIHZhbHVlQ2hhbmdlZCkK
K3ZvaWQgQVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoTm9kZSYgbm9kZSwg
Q29tcG9zaXRpb25TdGF0ZSBjb21wb3NpdGlvblN0YXRlLCBib29sIHZhbHVlQ2hhbmdlZCwgU3Ry
aW5nIHRleHQsIHNpemVfdCBwb3NpdGlvbiwgYm9vbCBoYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRl
KQogewogI2lmIEhBVkUoSU5MSU5FX1BSRURJQ1RJT05TKQogICAgIGF1dG8qIG9iamVjdCA9IGdl
dE9yQ3JlYXRlKCZub2RlKTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAodmFsdWVDaGFuZ2VkKQorICAgICAgICBv
YmplY3QtPnNldExhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbihub2RlLCBjb21wb3NpdGlvblN0
YXRlLCB0ZXh0LCBwb3NpdGlvbiwgaGFuZGxpbmdBY2NlcHRlZENhbmRpZGF0ZSk7CisjZW5kaWYK
KwogICAgIGlmIChhdXRvKiBvYnNlcnZhYmxlT2JqZWN0ID0gb2JqZWN0LT5vYnNlcnZhYmxlT2Jq
ZWN0KCkpCiAgICAgICAgIG9iamVjdCA9IG9ic2VydmFibGVPYmplY3Q7CiAKQEAgLTE3NTgsNiAr
MTc2MywxMiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5v
ZGUmIG5vZGUsIENvbXBvc2l0aW9uU3RhdGUgY29tcG9zaQogICAgIFVOVVNFRF9QQVJBTShjb21w
b3NpdGlvblN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWVDaGFuZ2VkKTsKICNlbmRpZiAv
LyBIQVZFKElOTElORV9QUkVESUNUSU9OUykKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKSB8
fCAhSEFWRShJTkxJTkVfUFJFRElDVElPTlMpCisgICAgVU5VU0VEX1BBUkFNKHRleHQpOworICAg
IFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsaW5nQWNjZXB0
ZWRDYW5kaWRhdGUpOworI2VuZGlmCiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGJjZmRhOTZlNmM4NS4uYjQx
Nzk5NjEwZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtMTg3LDggKzE4Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhdHRhY2hXcmFwcGVy
KEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKIAogcHVibGljOgotICAgIGVudW0gY2xhc3MgQ29tcG9z
aXRpb25TdGF0ZSA6IHVpbnQ4X3QgeyBTdGFydGVkLCBJblByb2dyZXNzLCBFbmRlZCB9OwotCiAg
ICAgdm9pZCBvblBhZ2VBY3Rpdml0eVN0YXRlQ2hhbmdlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRl
Pik7CiAgICAgdm9pZCBzZXRQYWdlQWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0
ZT4gc3RhdGUpIHsgbV9wYWdlQWN0aXZpdHlTdGF0ZSA9IHN0YXRlOyB9CiAgICAgT3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU+IHBhZ2VBY3Rpdml0eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
QWN0aXZpdHlTdGF0ZTsgfQpAQCAtMjAzLDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG9u
VGV4dFNlY3VyaXR5Q2hhbmdlZChIVE1MSW5wdXRFbGVtZW50Jik7CiAgICAgdm9pZCBvblRpdGxl
Q2hhbmdlKERvY3VtZW50Jik7CiAgICAgdm9pZCBvblZhbGlkaXR5Q2hhbmdlKEVsZW1lbnQmKTsK
LSAgICB2b2lkIG9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmLCBDb21wb3NpdGlvblN0YXRl
LCBib29sKTsKKyAgICB2b2lkIG9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmLCBDb21wb3Np
dGlvblN0YXRlLCBib29sLCBTdHJpbmcsIHNpemVfdCwgYm9vbCk7CiAgICAgdm9pZCB2YWx1ZUNo
YW5nZWQoRWxlbWVudCopOwogICAgIHZvaWQgY2hlY2tlZFN0YXRlQ2hhbmdlZChOb2RlKik7CiAg
ICAgdm9pZCBhdXRvZmlsbFR5cGVDaGFuZ2VkKE5vZGUqKTsKQEAgLTc0OCw3ICs3NDYsNyBAQCBp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblNlbGVjdGVkQ2hhbmdlZChOb2RlKikgeyB9CiBp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRTZWN1cml0eUNoYW5nZWQoSFRNTElucHV0
RWxlbWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6b25UaXRsZUNoYW5nZShE
b2N1bWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6b25WYWxpZGl0eUNoYW5n
ZShFbGVtZW50JikgeyB9Ci1pbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3Np
dGlvbkNoYW5nZShOb2RlJiwgQ29tcG9zaXRpb25TdGF0ZSwgYm9vbCkgeyB9CitpbmxpbmUgdm9p
ZCBBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiwgQ29tcG9zaXRp
b25TdGF0ZSwgYm9vbCwgU3RyaW5nLCBzaXplX3QsIGJvb2wpIHsgfQogaW5saW5lIHZvaWQgQVhP
YmplY3RDYWNoZTo6dmFsdWVDaGFuZ2VkKEVsZW1lbnQqKSB7IH0KIGlubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6Om9uRm9jdXNDaGFuZ2UoTm9kZSosIE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6Om9uUGFnZUFjdGl2aXR5U3RhdGVDaGFuZ2UoT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU+KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgKaW5kZXggMDkwMmE2MzU3OWM3Li5jYjVhZjViOWM3MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBA
IC03NjQsNiArNzY0LDIzIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KE1PREVMX0VMRU1FTlQpCiAgICAgVmVjdG9yPFJldGFpblB0cjxpZD4+IG1vZGVsRWxlbWVudENo
aWxkcmVuKCkgb3ZlcnJpZGU7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgc3RydWN0IElubGluZVRleHRQcmVkaWN0aW9uIHsKKyAgICAgICAgU3RyaW5nIHRleHQ7Cisg
ICAgICAgIHNpemVfdCBsb2NhdGlvbiB7IDAgfTsKKyAgICAgICAgdm9pZCByZXNldCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHRleHQgPSAiIl9zOworICAgICAgICAgICAgbG9jYXRpb24gPSAw
OworICAgICAgICB9CisgICAgfTsKKworICAgIElubGluZVRleHRQcmVkaWN0aW9uJiBsYXN0UHJl
c2VudGVkVGV4dFByZWRpY3Rpb24oKSB7IHJldHVybiBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGlj
dGlvbjsgfQorICAgIElubGluZVRleHRQcmVkaWN0aW9uJiBsYXN0UHJlc2VudGVkVGV4dFByZWRp
Y3Rpb25Db21wbGV0ZSgpIHsgcmV0dXJuIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29t
cGxldGU7IH0KKyAgICB2b2lkIHNldExhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbihOb2RlJiwg
Q29tcG9zaXRpb25TdGF0ZSwgU3RyaW5nLCBzaXplX3QsIGJvb2wpOworI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KCkg
PSBkZWZhdWx0OwogCkBAIC04MjgsNiArODQ1LDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtX2NhY2hlZFZpc2libGVDaGFyYWN0ZXJSYW5nZTsK
ICAgICAvLyBUaGlzIGlzIHN0ZDo6bnVsbG9wdCBpZiB3ZSBoYXZlbid0IGNhY2hlZCBhbnkgaW5w
dXQgeWV0LgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+LCBGbG9hdFJlY3QsIEludFJlY3Q+PiBtX2NhY2hlZFZpc2libGVDaGFy
YWN0ZXJSYW5nZUlucHV0czsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIElubGluZVRl
eHRQcmVkaWN0aW9uIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uOworICAgIElubGluZVRl
eHRQcmVkaWN0aW9uIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGU7CisjZW5k
aWYKIHByb3RlY3RlZDogLy8gRklYTUU6IE1ha2UgdGhlIGRhdGEgbWVtYmVycyBwcml2YXRlLgog
ICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZXBsYWNlZCBieSBBWEFuY2VzdG9yRmxhZ3MuCiAg
ICAgQWNjZXNzaWJpbGl0eUlzSWdub3JlZEZyb21QYXJlbnREYXRhIG1faXNJZ25vcmVkRnJvbVBh
cmVudERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDdjMjY1NmM4YTIwOC4uY2U0Yzg0
M2Q2MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtNzcxLDYgKzc3MSw4IEBAIGVudW0g
Y2xhc3MgQWNjZXNzaWJpbGl0eVZpc2libGVQb3NpdGlvbkZvckJvdW5kcyB7CiBlbnVtIGNsYXNz
IEFjY2Vzc2liaWxpdHlNYXRoU2NyaXB0T2JqZWN0VHlwZSB7IFN1YnNjcmlwdCwgU3VwZXJzY3Jp
cHQgfTsKIGVudW0gY2xhc3MgQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGUg
eyBQcmVTdWJzY3JpcHQsIFByZVN1cGVyc2NyaXB0LCBQb3N0U3Vic2NyaXB0LCBQb3N0U3VwZXJz
Y3JpcHQgfTsKIAorZW51bSBjbGFzcyBDb21wb3NpdGlvblN0YXRlIDogdWludDhfdCB7IFN0YXJ0
ZWQsIEluUHJvZ3Jlc3MsIEVuZGVkIH07CisKIC8vIFJlbGF0aW9uc2hpcHMgYmV0d2VlbiBBWCBv
YmplY3RzLgogZW51bSBjbGFzcyBBWFJlbGF0aW9uVHlwZSA6IHVpbnQ4X3QgewogICAgIE5vbmUs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmls
aXR5T2JqZWN0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNz
aWJpbGl0eU9iamVjdElPUy5tbQppbmRleCA3OWMwMmZkMzJkMDEuLjc0NWQ2NjQwMDExNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9i
amVjdElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3Np
YmlsaXR5T2JqZWN0SU9TLm1tCkBAIC0xMjksNiArMTI5LDQ0IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aXNJbnB1dFR5cGVQb3B1cEJ1dHRvbigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldExhc3RQcmVzZW50ZWRUZXh0UHJl
ZGljdGlvbihOb2RlJiBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQ29tcG9zaXRpb25TdGF0ZSBz
dGF0ZSwgU3RyaW5nIHRleHQsIHNpemVfdCBsb2NhdGlvbiwgYm9vbCBoYW5kbGluZ0FjY2VwdGVk
Q2FuZGlkYXRlKQoreworI2lmIEhBVkUoSU5MSU5FX1BSRURJQ1RJT05TKQorICAgIGlmIChoYW5k
bGluZ0FjY2VwdGVkQ2FuZGlkYXRlKQorICAgICAgICBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGlj
dGlvbiA9IHsgdGV4dCwgbG9jYXRpb24gfTsKKworICAgIGlmIChzdGF0ZSA9PSBDb21wb3NpdGlv
blN0YXRlOjpFbmRlZCAmJiAhbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKCkudGV4dC5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dCA9IHBy
ZXZpb3VzQ29tcG9zaXRpb25Ob2RlLmlzVGV4dE5vZGUoKSA/IGR5bmFtaWNEb3duY2FzdDxUZXh0
PihwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSktPndob2xlVGV4dCgpIDogU3RyaW5nKCk7CisgICAg
ICAgIHNpemVfdCB3b3JkU3RhcnQgPSAwOworCisgICAgICAgIC8vIEZpbmQgdGhlIGxvY2F0aW9u
IG9mIHRoZSBjb21wbGV0ZSB3b3JkIGJlaW5nIHByZWRpY3RlZCBieSBpdGVyYXRpbmcgYmFja3dh
cmRzIHRocm91Z2ggdGhlIHRleHQgdG8gZmluZCB3aGl0ZXNwYWNlLgorICAgICAgICBpZiAocHJl
dmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBwb3NpdGlvbiA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dC5sZW5ndGgoKSAtIDE7
IHBvc2l0aW9uID4gMDsgcG9zaXRpb24tLSkgeworICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJ
V2hpdGVzcGFjZShwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHRbcG9zaXRpb25dKSkgeworICAg
ICAgICAgICAgICAgICAgICB3b3JkU3RhcnQgPSBwb3NpdGlvbiArIDE7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBpZiAod29yZFN0YXJ0KQorICAgICAgICAgICAgcHJldmlvdXNDb21wb3NpdGlv
bk5vZGVUZXh0ID0gcHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0LnN1YnN0cmluZyh3b3JkU3Rh
cnQpOworCisgICAgICAgIFN0cmluZyBjb21wbGV0ZVByZWRpY3RlZFdvcmQgPSBtYWtlU3RyaW5n
KHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlVGV4dCwgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rp
b24udGV4dCk7CisgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUg
PSB7IGNvbXBsZXRlUHJlZGljdGVkV29yZCwgd29yZFN0YXJ0IH07CisKKyAgICAgICAgLy8gUmVz
ZXQgbGFzdCBwcmVzZW50ZWQgcHJlZGljdGlvbiBzaW5jZSBhIGNhbmRpZGF0ZSB3YXMgYWNjZXB0
ZWQuCisgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uLnJlc2V0KCk7CisgICAg
fSBlbHNlIGlmIChzdGF0ZSA9PSBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIHx8IHN0YXRl
ID09IENvbXBvc2l0aW9uU3RhdGU6OlN0YXJ0ZWQpCisgICAgICAgIG1fbGFzdFByZXNlbnRlZFRl
eHRQcmVkaWN0aW9uQ29tcGxldGUucmVzZXQoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBy
ZXZpb3VzQ29tcG9zaXRpb25Ob2RlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVO
VVNFRF9QQVJBTSh0ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworICAgIFVOVVNF
RF9QQVJBTShoYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKKyNlbmRpZiAvLyBIQVZFIChJTkxJ
TkVfUFJFRElDVElPTlMpCit9CisKIC8vIE5TQXR0cmlidXRlZFN0cmluZyBzdXBwb3J0LgogCiBz
dGF0aWMgdm9pZCBhdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShOU011dGFibGVBdHRyaWJ1dGVk
U3RyaW5nICphdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBOU1Jhbmdl
JiByYW5nZSkKQEAgLTIwOCw2ICsyNDYsNDQgQEAgc3RhdGljIHZvaWQgYXR0cmlidXRlU3RyaW5n
U2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0clN0cmluZywgUmVuZGUKICAg
ICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1
dGVDb250ZXh0IHZhbHVlOlVJQWNjZXNzaWJpbGl0eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSBy
YW5nZTpyYW5nZV07CiB9CiAKK3N0YXRpYyB2b2lkIGF0dHJpYnV0ZWRTdHJpbmdTZXRDb21wb3Np
dGlvbkF0dHJpYnV0ZXMoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyNpZiBIQVZFKElOTElORV9QUkVESUNUSU9O
UykKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHIgb2Jq
ZWN0ID0gcmVuZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShy
ZW5kZXJlcik7CisKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byYgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZCA9IG9iamVjdC0+bGFzdFByZXNlbnRlZFRleHRQ
cmVkaWN0aW9uQ29tcGxldGUoKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkQ29tcGxldGVX
b3JkTGVuZ3RoID0gbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50ZXh0Lmxlbmd0aCgpOworICAg
IHVuc2lnbmVkIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRQb3NpdGlvbiA9IGxhc3RQcmVzZW50
ZWRDb21wbGV0ZVdvcmQubG9jYXRpb247CisKKyAgICBpZiAoIWxhc3RQcmVzZW50ZWRDb21wbGV0
ZVdvcmQudGV4dC5pc0VtcHR5KCkgJiYgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZFBvc2l0aW9u
ICsgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0aCA8PSBbYXR0cmlidXRlZFN0cmluZyBs
ZW5ndGhdKSB7CisgICAgICAgIE5TUmFuZ2UgY29tcGxldGVXb3JkUmFuZ2UgPSBOU01ha2VSYW5n
ZShsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24sIGxhc3RQcmVzZW50ZWRDb21wbGV0
ZVdvcmRMZW5ndGgpOworICAgICAgICBpZiAoW1thdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyBzdWJz
dHJpbmdXaXRoUmFuZ2U6Y29tcGxldGVXb3JkUmFuZ2VdIGlzRXF1YWxUb1N0cmluZzpsYXN0UHJl
c2VudGVkQ29tcGxldGVXb3JkLnRleHRdKQorICAgICAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcg
YWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eUFjY2VwdGVkSW5saW5lVGV4dENvbXBsZXRpb24g
dmFsdWU6bGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50ZXh0IHJhbmdlOmNvbXBsZXRlV29yZFJh
bmdlXTsKKyAgICB9CisKKyAgICBhdXRvJiBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24gPSBv
YmplY3QtPmxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbigpOworICAgIHVuc2lnbmVkIGxhc3RQ
cmVzZW50ZWRMZW5ndGggPSBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dC5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkUG9zaXRpb24gPSBsYXN0UHJlc2VudGVkVGV4
dFByZWRpY3Rpb24ubG9jYXRpb247CisKKyAgICBpZiAoIWxhc3RQcmVzZW50ZWRUZXh0UHJlZGlj
dGlvbi50ZXh0LmlzRW1wdHkoKSAmJiBsYXN0UHJlc2VudGVkUG9zaXRpb24gKyBsYXN0UHJlc2Vu
dGVkTGVuZ3RoIDw9IFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0pIHsKKyAgICAgICAgTlNSYW5n
ZSBwcmVzZW50ZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGxhc3RQcmVzZW50ZWRQb3NpdGlvbiwgbGFz
dFByZXNlbnRlZExlbmd0aCk7CisgICAgICAgIGlmICghW1thdHRyaWJ1dGVkU3RyaW5nLnN0cmlu
ZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cHJlc2VudGVkUmFuZ2VdIGlzRXF1YWxUb1N0cmluZzpsYXN0
UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dF0pCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eUlubGlu
ZVRleHRDb21wbGV0aW9uIHZhbHVlOlthdHRyaWJ1dGVkU3RyaW5nLnN0cmluZyBzdWJzdHJpbmdX
aXRoUmFuZ2U6cHJlc2VudGVkUmFuZ2VdIHJhbmdlOnByZXNlbnRlZFJhbmdlXTsKKyAgICB9Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShhdHRyaWJ1dGVkU3RyaW5nKTsKKyAgICBVTlVTRURfUEFS
QU0ocmVuZGVyZXIpOworI2VuZGlmIC8vIEhBVkUoSU5MSU5FX1BSRURJQ1RJT05TKQorfQorCiBS
ZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKE5vZGUq
IG5vZGUsIFN0cmluZ1ZpZXcgdGV4dCwgY29uc3QgU2ltcGxlUmFuZ2UmLCBBWENvcmVPYmplY3Q6
OlNwZWxsQ2hlY2spCiB7CiAgICAgLy8gU2tpcCBpbnZpc2libGUgdGV4dC4KQEAgLTIyMyw2ICsy
OTksNyBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nQ3Jl
YXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIGF0dHJpYnV0ZVN0cmluZ1NldEhl
YWRpbmdMZXZlbChyZXN1bHQuZ2V0KCksIHJlbmRlcmVyLCByYW5nZSk7CiAgICAgYXR0cmlidXRl
U3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKHJlc3VsdC5nZXQoKSwgcmVuZGVyZXIsIHJhbmdlKTsK
ICAgICBhdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShyZXN1bHQuZ2V0KCksIHJlbmRlcmVyLCBy
YW5nZSk7CisgICAgYXR0cmlidXRlZFN0cmluZ1NldENvbXBvc2l0aW9uQXR0cmlidXRlcyhyZXN1
bHQuZ2V0KCksIHJlbmRlcmVyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAppbmRleCAxMDU1MmMzZTk0ZDAuLjZjNmJiOTFmODBj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oCkBAIC00Niw2ICs0Niw5
IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2VuQXR0YWNobWVu
dCA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5BCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFj
Y2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3NpYmlsaXR5VGV4dEF0
dHJpYnV0ZUNvbnRleHQiOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5
VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4
dFNvdXJjZUNvZGUiOwogCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlJ
bmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5SW5saW5lVGV4dENvbXBsZXRp
b24iOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxp
bmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxpbmVUZXh0Q29t
cGxldGlvbiI7CisKIEBpbnRlcmZhY2UgV0FLVmlldyAoaU9TQWNjZXNzaWJpbGl0eSkKIC0gKEJP
T0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCBhZjYwNzFhM2ZmNjIuLmNmNTY2ZDkwMWM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtMjE4OCw3ICsyMTg4LDcgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2RlIG1vZGUpCiAgICAgbV9jdXN0
b21Db21wb3NpdGlvbkFubm90YXRpb25zLmNsZWFyKCk7CiAKICAgICBpZiAoYXV0byogY2FjaGUg
PSBtX2RvY3VtZW50LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOyBjYWNoZSAmJiBwcmV2aW91c0Nv
bXBvc2l0aW9uTm9kZSkKLSAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpw
cmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6
RW5kZWQsIGZhbHNlKTsKKyAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpw
cmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQ29tcG9zaXRpb25TdGF0ZTo6RW5kZWQsIGZhbHNlLCB0
ZXh0LCBtX2NvbXBvc2l0aW9uU3RhcnQsIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsK
IAogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1
cm47CkBAIC0yMzM1LDEyICsyMzM1LDEyIEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAKICAg
ICBpZiAoYXV0byogY2FjaGUgPSBtX2RvY3VtZW50LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKSB7
CiAgICAgICAgIGlmIChwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSAmJiBwcmV2aW91c0NvbXBvc2l0
aW9uTm9kZSAhPSBtX2NvbXBvc2l0aW9uTm9kZSkgewotICAgICAgICAgICAgYXV0byBzdGF0ZSA9
IG1fY29tcG9zaXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6SW5Q
cm9ncmVzcyA6IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OkVuZGVkOwotICAgICAg
ICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpwcmV2aW91c0NvbXBvc2l0aW9u
Tm9kZSwgc3RhdGUsIHRydWUpOworICAgICAgICAgICAgYXV0byBzdGF0ZSA9IG1fY29tcG9zaXRp
b25Ob2RlID8gQ29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzcyA6IENvbXBvc2l0aW9uU3RhdGU6
OkVuZGVkOworICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpwcmV2
aW91c0NvbXBvc2l0aW9uTm9kZSwgc3RhdGUsIHRydWUsIHRleHQsIG1fY29tcG9zaXRpb25TdGFy
dCwgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAgICAgIGlm
IChtX2NvbXBvc2l0aW9uTm9kZSkgewotICAgICAgICAgICAgYXV0byBzdGF0ZSA9IHByZXZpb3Vz
Q29tcG9zaXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9n
cmVzcyA6IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6OlN0YXJ0ZWQ7Ci0gICAgICAg
ICAgICBjYWNoZS0+b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoKm1fY29tcG9zaXRpb25Ob2RlLCBz
dGF0ZSwgdHJ1ZSk7CisgICAgICAgICAgICBhdXRvIHN0YXRlID0gcHJldmlvdXNDb21wb3NpdGlv
bk5vZGUgPyBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIDogQ29tcG9zaXRpb25TdGF0ZTo6
U3RhcnRlZDsKKyAgICAgICAgICAgIGNhY2hlLT5vblRleHRDb21wb3NpdGlvbkNoYW5nZSgqbV9j
b21wb3NpdGlvbk5vZGUsIHN0YXRlLCB0cnVlLCB0ZXh0LCBtX2NvbXBvc2l0aW9uU3RhcnQsIG1f
aXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVk
aWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmlu
Zy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4w
OWQ2OGM1NjcwOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIGF0dHJp
YnV0ZWQgc3RyaW5nIGZvciBpbmxpbmUgcHJlZGljdGlvbnMgaXMgYWNjdXJhdGUuCisKK0dvb2Qg
bW97CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJ
Rm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBS
ZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9CisKK1Np
bXVsYXRpbmcgcHJlc2VudGVkIGNvbXBsZXRpb246CitHb29kIG1veworICAgIFVJQWNjZXNzaWJp
bGl0eVRva2VuRm9udEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOworICAgIFVJQWNjZXNz
aWJpbGl0eVRva2VuRm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxhciI7CisgICAgVUlBY2Nl
c3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDExOworfXJuaW5neworICAgIFVJQWNjZXNzaWJpbGl0
eUlubGluZVRleHRDb21wbGV0aW9uID0gcm5pbmc7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5G
b250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlU
b2tlbkZvbnRTaXplID0gMTE7Cit9CisKK1NpbXVsYXRpbmcgYWNjZXB0ZWQgY29tcGxldGlvbjoK
K0dvb2QgeworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9ICIuQXBwbGVTeXN0
ZW1VSUZvbnQiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSAiU3lzdGVtIEZv
bnQgUmVndWxhciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDExOworfW1v
cm5pbmd7CisgICAgVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiA9
IG1vcm5pbmc7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5
c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0g
Rm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9
CisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxp
bmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5n
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NWYwNWVjY2Nl
YjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRtbApAQCAtMCwwICsx
LDM1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CisK
KzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3Np
YmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKzxpbnB1dCBp
ZD0iZWRpdGFibGUiIHR5cGU9InRleHQiIHRhYmluZGV4PSIwIj48L2lucHV0PgorCis8c2NyaXB0
PgordmFyIHJlc3VsdCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBhdHRyaWJ1dGVkIHN0
cmluZyBmb3IgaW5saW5lIHByZWRpY3Rpb25zIGlzIGFjY3VyYXRlLlxuXG4iOworCitpZiAod2lu
ZG93LnRleHRJbnB1dENvbnRyb2xsZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRhYmxlIikuZm9jdXMoKTsKKyAg
ICB2YXIgaW5wdXQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAg
ICBpbnB1dC5pbnNlcnRUZXh0KCJHb29kIG1vIik7CisgICAgcmVzdWx0ICs9IGAke2lucHV0LmF0
dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSgwLCA3KX1cblxuYDsKKworICAgIHJlc3VsdCArPSAiU2lt
dWxhdGluZyBwcmVzZW50ZWQgY29tcGxldGlvbjpcbiI7CisgICAgdGV4dElucHV0Q29udHJvbGxl
ci5zZXRNYXJrZWRUZXh0KCJybmluZyIsIDAsIDUsIGZhbHNlLCBbIHsgZnJvbTogIjAiLCBsZW5n
dGg6ICI1IiwgY29sb3I6ICIjRkYwMDAwMzMiLCBmb3JlZ3JvdW5kQ29sb3I6ICIjRkYwMDAwRkYi
IH0gXSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHQgKz0gYCR7aW5wdXQuYXR0cmlidXRlZFN0cmlu
Z0ZvclJhbmdlKDAsIDEyKX1cblxuYDsKKworICAgIHJlc3VsdCArPSAiU2ltdWxhdGluZyBhY2Nl
cHRlZCBjb21wbGV0aW9uOlxuIjsKKyAgICB0ZXh0SW5wdXRDb250cm9sbGVyLnNldE1hcmtlZFRl
eHQoIiIsIDAsIDAsIGZhbHNlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7CisgICAgdGV4dElucHV0
Q29udHJvbGxlci5pbnNlcnRUZXh0KCJybmluZyIpOworICAgIHJlc3VsdCArPSBgJHtpbnB1dC5h
dHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UoMCwgMTIpfVxuXG5gOworCisgICAgZGVidWcocmVzdWx0
KTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zLTE2L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3MtMTYvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYTFlZTI0YTAxZjcuLjg5ZjA2ZTdlODI3
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTE2L1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTE2L1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTE0LDMgKzE0LDYgQEAgZmFzdC9pbWFnZXMvcGFnZS13aWRlLWFuaW1hdGlvbi10b2dnbGUuaHRt
bCBbIFNraXAgXQogZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1wYXVzZS1hbmltYXRlVHJhbnNm
b3JtLXN2Zy1hbmltYXRpb24uaHRtbCBbIFNraXAgXSAKIGZhc3QvaW1hZ2VzL3BhZ2V3aWRlLXBs
YXktcGF1c2Utb2Zmc2NyZWVuLWFuaW1hdGlvbnMuaHRtbCBbIFNraXAgXQogc3ZnL2N1c3RvbS9z
dmctZm9udHMtaW4taHRtbC5odG1sIFsgU2tpcCBdCisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NgorYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lu
bGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467675</attachid>
            <date>2023-09-13 09:59:58 -0700</date>
            <delta_ts>2023-09-14 09:29:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-261056-20230913095958.patch</filename>
            <type>text/plain</type>
            <size>21270</size>
            <attacher name="Joshua Hoffman">jhoffman23</attacher>
            
              <data encoding="base64">RnJvbSAwNThiYTljOGM1ZDBhMGUwM2E1N2EwYTQ5ODFjZTUxMTIyMWU1NjExIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NodWEgSG9mZm1hbiA8amhvZmZtYW4yM0BhcHBsZS5jb20+
CkRhdGU6IFR1ZSwgNSBTZXAgMjAyMyAyMjo1NjozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFY
OiBFeHBvc2UgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIGZvciBpbmxpbmUgdGV4dAogcHJlZGlj
dGlvbnMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NiByZGFy
Oi8vMTE0ODQ0MDc5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCkF0IHByZXNlbnQsIFdl
YktpdCBkb2VzIG5vdCBleHBvc2UgaW5saW5lIHByZWRpY3Rpb25zIHRvIEFYIGNsaWVudHMgb24g
aU9TLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGF0IGJ5IGFkZGluZyB0aGUgYXR0cmlidXRlcwpV
SUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiBhbmQgVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiB0byB0aGUgYXR0cmlidXRlZCBzdHJpbmcgcHJvdmlk
ZWQgdG8gQVRzLgoKVGhpcyBpcyBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0d28gbmV3IG1lbWJlciB2
YXJpYWJsZXMgaW4gYWNjZXNzaWJpbGl0eSBvYmplY3RzLCB3aGljaCBhcmUgdXBkYXRlZCBpbgpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24gKGlPUyBv
bmx5KToKLSBtX2xhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbjogdGhlICJyZXN0IiBvZiB0aGUg
d29yZCBiZWluZyBwcmVkaWN0ZWQuIEZvciBleGFtcGxlLCBpZiB0aGUgdGV4dCAib3Bwb3J0dW4i
IGhhZCBiZWVuIHR5cGVkLCBhbmQKIml0eSIgd2FzIHByZXNlbnRlZCBhcyBhIHByZWRpY3Rpb24s
IHdlIHdvdWxkIHN0b3JlICJpdHkiLgotIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29t
cGxldGU6IHRoZSB3aG9sZSB3b3JkIGJlaW5nIHByZWRpY3RlZC4gVXNpbmcgdGhlIHByZXZpb3Vz
IGV4YW1wbGUsIHdlIHdvdWxkIHN0b3JlIHRoZSB3aG9sZSB3b3JkLAoib3Bwb3J0dW5pdHkiLgoK
SW4gYm90aCBjYXNlcywgd2Ugc3RvcmUgdGhlIHN0cmluZyB2YWx1ZSBhbmQgdGhlIHBvc2l0aW9u
LCBvZmZzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBlZGl0b3IuIExhc3RQcmVzZW50ZWRUZXh0UHJl
ZGljdGlvbiBpcyByZXNldApvbmNlIGEgcHJlZGljdGlvbiBpcyAiYWNjZXB0ZWQiLCBhbmQgbV9s
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSBpcyByZXNldCBvbmNlIHdlIHN0YXJ0
IGEgbmV3IGNvbXBvc2l0aW9uLgoKSW4gdGhlIGlPUyBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIsIHdl
IGFjY2VzcyB0aGVzZSB2YWx1ZXMgYW5kIGFwcGx5IHRoZW0gdG8gdGhlIHJlc3VsdGluZyBhdHRy
aWJ1dGVkIHN0cmluZywgaWYgYXBwbGljYWJsZS4gVGhlCmF0dHJpYnV0ZWRTdHJpbmdTZXRDb21w
b3NpdGlvbkF0dHJpYnV0ZXMgbWV0aG9kIGhhbmRsZXMgdGhpcyB3b3JrLCBhbmQgY2hlY2tzIHRo
ZSBsb2NhdGlvbiBhbmQgcmFuZ2Ugb2YgdGhlIHZhbHVlcyB0byBlbnN1cmUKdGhhdCB0aGV5IGFy
ZSB2YWxpZC4KClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhIG5ldyB0ZXN0IHRoYXQgc2ltdWxh
dGVzIGlubGluZSBwcmVkaWN0aW9ucyBhbmQgY2hlY2tzIHRoYXQgdGhlIGNvcnJlY3QgYXR0cmli
dXRlcyBhcmUgZXhwb3NlZC4KCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxh
dG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVk
aWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRpb25zOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHA6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblRleHRDb21w
b3NpdGlvbkNoYW5nZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmg6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNoYW5nZSk6
CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CihX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpJbmxpbmVUZXh0UHJlZGljdGlvbjo6cmVzZXQp
OgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6bGFzdFByZXNlbnRlZFRleHRQcmVkaWN0
aW9uIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omxhc3RQcmVzZW50ZWRU
ZXh0UHJlZGljdGlvbkNvbXBsZXRlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tOgooV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6c2V0TGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uKToKKFdlYkNvcmU6
OmF0dHJpYnV0ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMpOgooV2ViQ29yZTo6YXR0
cmlidXRlZFN0cmluZ0NyZWF0ZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaDoKKiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHA6CihXZWJDb3JlOjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKLS0tCiAu
Li4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAxMyArKystCiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgNiArLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgMjEgKysrKysKIC4u
Li9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggICAgICAgICAgICB8ICAyICsKIC4uLi9p
b3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbSAgICAgICAgICAgICB8IDc2ICsrKysrKysrKysr
KysrKysrKysKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaCAgICB8
ICAzICsKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCAgICAgICAgICAgICB8IDEw
ICstLQogLi4uLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQudHh0IHwgMzcg
KysrKysrKysrCiAuLi4vaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmcuaHRtbCAg
fCAzNSArKysrKysrKysKIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy0xNi9UZXN0RXhwZWN0YXRp
b25zICB8ICAzICsKIDEwIGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCAxMCBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lv
cy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJpbmctZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCA1ZjgwOGRl
ZTRhYWIuLjYzNjlkN2E5ZDIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNzMxLDEzICsxNzMxLDE4IEBAIHZvaWQgQVhPYmplY3RD
YWNoZTo6b25WYWxpZGl0eUNoYW5nZShFbGVtZW50JiBlbGVtZW50KQogICAgIHBvc3ROb3RpZmlj
YXRpb24oZ2V0KCZlbGVtZW50KSwgbnVsbHB0ciwgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCk7CiB9
CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoTm9kZSYgbm9k
ZSwgQ29tcG9zaXRpb25TdGF0ZSBjb21wb3NpdGlvblN0YXRlLCBib29sIHZhbHVlQ2hhbmdlZCkK
K3ZvaWQgQVhPYmplY3RDYWNoZTo6b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoTm9kZSYgbm9kZSwg
Q29tcG9zaXRpb25TdGF0ZSBjb21wb3NpdGlvblN0YXRlLCBib29sIHZhbHVlQ2hhbmdlZCwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBzaXplX3QgcG9zaXRpb24sIGJvb2wgaGFuZGxpbmdBY2NlcHRlZENh
bmRpZGF0ZSkKIHsKICNpZiBIQVZFKElOTElORV9QUkVESUNUSU9OUykKICAgICBhdXRvKiBvYmpl
Y3QgPSBnZXRPckNyZWF0ZSgmbm9kZSk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVy
bjsKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKHZhbHVlQ2hhbmdlZCkKKyAg
ICAgICAgb2JqZWN0LT5zZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24obm9kZSwgY29tcG9z
aXRpb25TdGF0ZSwgdGV4dCwgcG9zaXRpb24sIGhhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpOwor
I2VuZGlmCisKICAgICBpZiAoYXV0byogb2JzZXJ2YWJsZU9iamVjdCA9IG9iamVjdC0+b2JzZXJ2
YWJsZU9iamVjdCgpKQogICAgICAgICBvYmplY3QgPSBvYnNlcnZhYmxlT2JqZWN0OwogCkBAIC0x
NzU4LDYgKzE3NjMsMTIgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpvblRleHRDb21wb3NpdGlvbkNo
YW5nZShOb2RlJiBub2RlLCBDb21wb3NpdGlvblN0YXRlIGNvbXBvc2kKICAgICBVTlVTRURfUEFS
QU0oY29tcG9zaXRpb25TdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlQ2hhbmdlZCk7CiAj
ZW5kaWYgLy8gSEFWRShJTkxJTkVfUFJFRElDVElPTlMpCisKKyNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkgfHwgIUhBVkUoSU5MSU5FX1BSRURJQ1RJT05TKQorICAgIFVOVVNFRF9QQVJBTSh0ZXh0
KTsKKyAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOworICAgIFVOVVNFRF9QQVJBTShoYW5kbGlu
Z0FjY2VwdGVkQ2FuZGlkYXRlKTsKKyNlbmRpZgogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBiY2ZkYTk2ZTZj
ODUuLjA1ZjgwY2M1MTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmgKQEAgLTE4Nyw4ICsxODcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXR0YWNo
V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNz
IENvbXBvc2l0aW9uU3RhdGUgOiB1aW50OF90IHsgU3RhcnRlZCwgSW5Qcm9ncmVzcywgRW5kZWQg
fTsKLQogICAgIHZvaWQgb25QYWdlQWN0aXZpdHlTdGF0ZUNoYW5nZShPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZT4pOwogICAgIHZvaWQgc2V0UGFnZUFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2
aXR5U3RhdGU+IHN0YXRlKSB7IG1fcGFnZUFjdGl2aXR5U3RhdGUgPSBzdGF0ZTsgfQogICAgIE9w
dGlvblNldDxBY3Rpdml0eVN0YXRlPiBwYWdlQWN0aXZpdHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZUFjdGl2aXR5U3RhdGU7IH0KQEAgLTIwMyw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBvblRleHRTZWN1cml0eUNoYW5nZWQoSFRNTElucHV0RWxlbWVudCYpOwogICAgIHZvaWQg
b25UaXRsZUNoYW5nZShEb2N1bWVudCYpOwogICAgIHZvaWQgb25WYWxpZGl0eUNoYW5nZShFbGVt
ZW50Jik7Ci0gICAgdm9pZCBvblRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiwgQ29tcG9zaXRp
b25TdGF0ZSwgYm9vbCk7CisgICAgdm9pZCBvblRleHRDb21wb3NpdGlvbkNoYW5nZShOb2RlJiwg
Q29tcG9zaXRpb25TdGF0ZSwgYm9vbCwgY29uc3QgU3RyaW5nJiwgc2l6ZV90LCBib29sKTsKICAg
ICB2b2lkIHZhbHVlQ2hhbmdlZChFbGVtZW50Kik7CiAgICAgdm9pZCBjaGVja2VkU3RhdGVDaGFu
Z2VkKE5vZGUqKTsKICAgICB2b2lkIGF1dG9maWxsVHlwZUNoYW5nZWQoTm9kZSopOwpAQCAtNzQ4
LDcgKzc0Niw3IEBAIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uU2VsZWN0ZWRDaGFuZ2Vk
KE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dFNlY3VyaXR5Q2hh
bmdlZChIVE1MSW5wdXRFbGVtZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpv
blRpdGxlQ2hhbmdlKERvY3VtZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpv
blZhbGlkaXR5Q2hhbmdlKEVsZW1lbnQmKSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5vZGUmLCBDb21wb3NpdGlvblN0YXRlLCBib29sKSB7
IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKE5v
ZGUmLCBDb21wb3NpdGlvblN0YXRlLCBib29sLCBjb25zdCBTdHJpbmcmLCBzaXplX3QsIGJvb2wp
IHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6dmFsdWVDaGFuZ2VkKEVsZW1lbnQqKSB7
IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uRm9jdXNDaGFuZ2UoTm9kZSosIE5vZGUq
KSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUGFnZUFjdGl2aXR5U3RhdGVDaGFu
Z2UoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU+KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMDkwMmE2MzU3OWM3Li44
M2YwMTQwMTMwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCkBAIC03NjQsNiArNzY0LDIzIEBAIHB1YmxpYzoKICNpZiBQTEFU
Rk9STShDT0NPQSkgJiYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgVmVjdG9yPFJldGFpblB0
cjxpZD4+IG1vZGVsRWxlbWVudENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAjZW5kaWYKKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgc3RydWN0IElubGluZVRleHRQcmVkaWN0aW9uIHsKKyAg
ICAgICAgU3RyaW5nIHRleHQ7CisgICAgICAgIHNpemVfdCBsb2NhdGlvbiB7IDAgfTsKKyAgICAg
ICAgdm9pZCByZXNldCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRleHQgPSAiIl9zOworICAg
ICAgICAgICAgbG9jYXRpb24gPSAwOworICAgICAgICB9CisgICAgfTsKKworICAgIElubGluZVRl
eHRQcmVkaWN0aW9uJiBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24oKSB7IHJldHVybiBtX2xh
c3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbjsgfQorICAgIElubGluZVRleHRQcmVkaWN0aW9uJiBs
YXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSgpIHsgcmV0dXJuIG1fbGFzdFByZXNl
bnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGU7IH0KKyAgICB2b2lkIHNldExhc3RQcmVzZW50ZWRU
ZXh0UHJlZGljdGlvbihOb2RlJiwgQ29tcG9zaXRpb25TdGF0ZSwgY29uc3QgU3RyaW5nJiwgc2l6
ZV90LCBib29sKTsKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCiBwcm90ZWN0ZWQ6
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCgpID0gZGVmYXVsdDsKIApAQCAtODI4LDYgKzg0NSwx
MCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbV9j
YWNoZWRWaXNpYmxlQ2hhcmFjdGVyUmFuZ2U7CiAgICAgLy8gVGhpcyBpcyBzdGQ6Om51bGxvcHQg
aWYgd2UgaGF2ZW4ndCBjYWNoZWQgYW55IGlucHV0IHlldC4KICAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8c3RkOjp0dXBsZTxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgRmxvYXRSZWN0LCBJ
bnRSZWN0Pj4gbV9jYWNoZWRWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VJbnB1dHM7CisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBJbmxpbmVUZXh0UHJlZGljdGlvbiBtX2xhc3RQcmVzZW50ZWRU
ZXh0UHJlZGljdGlvbjsKKyAgICBJbmxpbmVUZXh0UHJlZGljdGlvbiBtX2xhc3RQcmVzZW50ZWRU
ZXh0UHJlZGljdGlvbkNvbXBsZXRlOworI2VuZGlmCiBwcm90ZWN0ZWQ6IC8vIEZJWE1FOiBNYWtl
IHRoZSBkYXRhIG1lbWJlcnMgcHJpdmF0ZS4KICAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgcmVw
bGFjZWQgYnkgQVhBbmNlc3RvckZsYWdzLgogICAgIEFjY2Vzc2liaWxpdHlJc0lnbm9yZWRGcm9t
UGFyZW50RGF0YSBtX2lzSWdub3JlZEZyb21QYXJlbnREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aAppbmRleCA3YzI2NTZjOGEyMDguLmNlNGM4NDNkNjBmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmgKQEAgLTc3MSw2ICs3NzEsOCBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlWaXNpYmxlUG9z
aXRpb25Gb3JCb3VuZHMgewogZW51bSBjbGFzcyBBY2Nlc3NpYmlsaXR5TWF0aFNjcmlwdE9iamVj
dFR5cGUgeyBTdWJzY3JpcHQsIFN1cGVyc2NyaXB0IH07CiBlbnVtIGNsYXNzIEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlIHsgUHJlU3Vic2NyaXB0LCBQcmVTdXBlcnNjcmlw
dCwgUG9zdFN1YnNjcmlwdCwgUG9zdFN1cGVyc2NyaXB0IH07CiAKK2VudW0gY2xhc3MgQ29tcG9z
aXRpb25TdGF0ZSA6IHVpbnQ4X3QgeyBTdGFydGVkLCBJblByb2dyZXNzLCBFbmRlZCB9OworCiAv
LyBSZWxhdGlvbnNoaXBzIGJldHdlZW4gQVggb2JqZWN0cy4KIGVudW0gY2xhc3MgQVhSZWxhdGlv
blR5cGUgOiB1aW50OF90IHsKICAgICBOb25lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KaW5kZXggNzlj
MDJmZDMyZDAxLi4xNzZiNjgwYzNlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQpAQCAtMTI5LDYg
KzEyOSw0MyBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzSW5wdXRUeXBlUG9wdXBCdXR0
b24oKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzZXRMYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24oTm9kZSYgcHJldmlvdXNDb21wb3Np
dGlvbk5vZGUsIENvbXBvc2l0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgc2l6
ZV90IGxvY2F0aW9uLCBib29sIGhhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpCit7CisjaWYgSEFW
RShJTkxJTkVfUFJFRElDVElPTlMpCisgICAgaWYgKGhhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUp
CisgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uID0geyB0ZXh0LCBsb2NhdGlv
biB9OworCisgICAgaWYgKHN0YXRlID09IENvbXBvc2l0aW9uU3RhdGU6OkVuZGVkICYmICFsYXN0
UHJlc2VudGVkVGV4dFByZWRpY3Rpb24oKS50ZXh0LmlzRW1wdHkoKSkgeworICAgICAgICBTdHJp
bmcgcHJldmlvdXNDb21wb3NpdGlvbk5vZGVUZXh0ID0gcHJldmlvdXNDb21wb3NpdGlvbk5vZGUu
aXNUZXh0Tm9kZSgpID8gZHluYW1pY0Rvd25jYXN0PFRleHQ+KHByZXZpb3VzQ29tcG9zaXRpb25O
b2RlKS0+d2hvbGVUZXh0KCkgOiBTdHJpbmcoKTsKKyAgICAgICAgc2l6ZV90IHdvcmRTdGFydCA9
IDA7CisKKyAgICAgICAgLy8gRmluZCB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbXBsZXRlIHdvcmQg
YmVpbmcgcHJlZGljdGVkIGJ5IGl0ZXJhdGluZyBiYWNrd2FyZHMgdGhyb3VnaCB0aGUgdGV4dCB0
byBmaW5kIHdoaXRlc3BhY2UuCisgICAgICAgIGlmIChwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRl
eHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHBvc2l0aW9uID0gcHJldmlv
dXNDb21wb3NpdGlvbk5vZGVUZXh0Lmxlbmd0aCgpIC0gMTsgcG9zaXRpb24gPiAwOyBwb3NpdGlv
bi0tKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlXaGl0ZXNwYWNlKHByZXZpb3VzQ29t
cG9zaXRpb25Ob2RlVGV4dFtwb3NpdGlvbl0pKSB7CisgICAgICAgICAgICAgICAgICAgIHdvcmRT
dGFydCA9IHBvc2l0aW9uICsgMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh3b3JkU3Rh
cnQpCisgICAgICAgICAgICBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZVRleHQgPSBwcmV2aW91c0Nv
bXBvc2l0aW9uTm9kZVRleHQuc3Vic3RyaW5nKHdvcmRTdGFydCk7CisKKyAgICAgICAgbV9sYXN0
UHJlc2VudGVkVGV4dFByZWRpY3Rpb25Db21wbGV0ZSA9IHsgcHJldmlvdXNDb21wb3NpdGlvbk5v
ZGVUZXh0ICsgbV9sYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dCwgd29yZFN0YXJ0IH07
CisKKyAgICAgICAgLy8gUmVzZXQgbGFzdCBwcmVzZW50ZWQgcHJlZGljdGlvbiBzaW5jZSBhIGNh
bmRpZGF0ZSB3YXMgYWNjZXB0ZWQuCisgICAgICAgIG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0
aW9uLnJlc2V0KCk7CisgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBDb21wb3NpdGlvblN0YXRlOjpJ
blByb2dyZXNzIHx8IHN0YXRlID09IENvbXBvc2l0aW9uU3RhdGU6OlN0YXJ0ZWQpCisgICAgICAg
IG1fbGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUucmVzZXQoKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlKTsKKyAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0obG9j
YXRpb24pOworICAgIFVOVVNFRF9QQVJBTShoYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKKyNl
bmRpZiAvLyBIQVZFIChJTkxJTkVfUFJFRElDVElPTlMpCit9CisKIC8vIE5TQXR0cmlidXRlZFN0
cmluZyBzdXBwb3J0LgogCiBzdGF0aWMgdm9pZCBhdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICphdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBOU1JhbmdlJiByYW5nZSkKQEAgLTIwOCw2ICsyNDUsNDQgQEAgc3RhdGljIHZv
aWQgYXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0
clN0cmluZywgUmVuZGUKICAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNz
aWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0IHZhbHVlOlVJQWNjZXNzaWJpbGl0eVRleHR1YWxD
b250ZXh0U291cmNlQ29kZSByYW5nZTpyYW5nZV07CiB9CiAKK3N0YXRpYyB2b2lkIGF0dHJpYnV0
ZWRTdHJpbmdTZXRDb21wb3NpdGlvbkF0dHJpYnV0ZXMoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyNpZiBIQVZF
KElOTElORV9QUkVESUNUSU9OUykKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBSZWZQdHIgb2JqZWN0ID0gcmVuZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlcik7CisKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byYgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZCA9IG9iamVjdC0+
bGFzdFByZXNlbnRlZFRleHRQcmVkaWN0aW9uQ29tcGxldGUoKTsKKyAgICB1bnNpZ25lZCBsYXN0
UHJlc2VudGVkQ29tcGxldGVXb3JkTGVuZ3RoID0gbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50
ZXh0Lmxlbmd0aCgpOworICAgIHVuc2lnbmVkIGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRQb3Np
dGlvbiA9IGxhc3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQubG9jYXRpb247CisKKyAgICBpZiAoIWxh
c3RQcmVzZW50ZWRDb21wbGV0ZVdvcmQudGV4dC5pc0VtcHR5KCkgJiYgbGFzdFByZXNlbnRlZENv
bXBsZXRlV29yZFBvc2l0aW9uICsgbGFzdFByZXNlbnRlZENvbXBsZXRlV29yZExlbmd0aCA8PSBb
YXR0cmlidXRlZFN0cmluZyBsZW5ndGhdKSB7CisgICAgICAgIE5TUmFuZ2UgY29tcGxldGVXb3Jk
UmFuZ2UgPSBOU01ha2VSYW5nZShsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkUG9zaXRpb24sIGxh
c3RQcmVzZW50ZWRDb21wbGV0ZVdvcmRMZW5ndGgpOworICAgICAgICBpZiAoW1thdHRyaWJ1dGVk
U3RyaW5nLnN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6Y29tcGxldGVXb3JkUmFuZ2VdIGlzRXF1
YWxUb1N0cmluZzpsYXN0UHJlc2VudGVkQ29tcGxldGVXb3JkLnRleHRdKQorICAgICAgICAgICAg
W2F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eUFjY2VwdGVkSW5s
aW5lVGV4dENvbXBsZXRpb24gdmFsdWU6bGFzdFByZXNlbnRlZENvbXBsZXRlV29yZC50ZXh0IHJh
bmdlOmNvbXBsZXRlV29yZFJhbmdlXTsKKyAgICB9CisKKyAgICBhdXRvJiBsYXN0UHJlc2VudGVk
VGV4dFByZWRpY3Rpb24gPSBvYmplY3QtPmxhc3RQcmVzZW50ZWRUZXh0UHJlZGljdGlvbigpOwor
ICAgIHVuc2lnbmVkIGxhc3RQcmVzZW50ZWRMZW5ndGggPSBsYXN0UHJlc2VudGVkVGV4dFByZWRp
Y3Rpb24udGV4dC5sZW5ndGgoKTsKKyAgICB1bnNpZ25lZCBsYXN0UHJlc2VudGVkUG9zaXRpb24g
PSBsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24ubG9jYXRpb247CisKKyAgICBpZiAoIWxhc3RQ
cmVzZW50ZWRUZXh0UHJlZGljdGlvbi50ZXh0LmlzRW1wdHkoKSAmJiBsYXN0UHJlc2VudGVkUG9z
aXRpb24gKyBsYXN0UHJlc2VudGVkTGVuZ3RoIDw9IFthdHRyaWJ1dGVkU3RyaW5nIGxlbmd0aF0p
IHsKKyAgICAgICAgTlNSYW5nZSBwcmVzZW50ZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGxhc3RQcmVz
ZW50ZWRQb3NpdGlvbiwgbGFzdFByZXNlbnRlZExlbmd0aCk7CisgICAgICAgIGlmICghW1thdHRy
aWJ1dGVkU3RyaW5nLnN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cHJlc2VudGVkUmFuZ2VdIGlz
RXF1YWxUb1N0cmluZzpsYXN0UHJlc2VudGVkVGV4dFByZWRpY3Rpb24udGV4dF0pCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgW2F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOlVJ
QWNjZXNzaWJpbGl0eUlubGluZVRleHRDb21wbGV0aW9uIHZhbHVlOlthdHRyaWJ1dGVkU3RyaW5n
LnN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cHJlc2VudGVkUmFuZ2VdIHJhbmdlOnByZXNlbnRl
ZFJhbmdlXTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShhdHRyaWJ1dGVkU3RyaW5n
KTsKKyAgICBVTlVTRURfUEFSQU0ocmVuZGVyZXIpOworI2VuZGlmIC8vIEhBVkUoSU5MSU5FX1BS
RURJQ1RJT05TKQorfQorCiBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVk
U3RyaW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dCwgY29uc3QgU2ltcGxlUmFu
Z2UmLCBBWENvcmVPYmplY3Q6OlNwZWxsQ2hlY2spCiB7CiAgICAgLy8gU2tpcCBpbnZpc2libGUg
dGV4dC4KQEAgLTIyMyw2ICsyOTgsNyBAQCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBh
dHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgdGV4dAogICAgIGF0
dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChyZXN1bHQuZ2V0KCksIHJlbmRlcmVyLCByYW5n
ZSk7CiAgICAgYXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKHJlc3VsdC5nZXQoKSwg
cmVuZGVyZXIsIHJhbmdlKTsKICAgICBhdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShyZXN1bHQu
Z2V0KCksIHJlbmRlcmVyLCByYW5nZSk7CisgICAgYXR0cmlidXRlZFN0cmluZ1NldENvbXBvc2l0
aW9uQXR0cmlidXRlcyhyZXN1bHQuZ2V0KCksIHJlbmRlcmVyKTsKIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAppbmRleCAxMDU1MmMz
ZTk0ZDAuLjZjNmJiOTFmODBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5oCkBAIC00Niw2ICs0Niw5IEBAIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJp
bGl0eVRva2VuQXR0YWNobWVudCA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5BCiBzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlB
Y2Nlc3NpYmlsaXR5VGV4dEF0dHJpYnV0ZUNvbnRleHQiOwogc3RhdGljIE5TU3RyaW5nICogY29u
c3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2li
aWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUiOwogCitzdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBVSUFjY2Vzc2liaWxpdHlJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5
SW5saW5lVGV4dENvbXBsZXRpb24iOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3Np
YmlsaXR5QWNjZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiA9IEAiVUlBY2Nlc3NpYmlsaXR5QWNj
ZXB0ZWRJbmxpbmVUZXh0Q29tcGxldGlvbiI7CisKIEBpbnRlcmZhY2UgV0FLVmlldyAoaU9TQWNj
ZXNzaWJpbGl0eSkKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZDsKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBhZjYwNzFhM2ZmNjIuLmNmNTY2ZDkwMWM2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjE4OCw3ICsyMTg4LDcgQEAgdm9pZCBFZGl0
b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgU2V0Q29tcG9zaXRpb25Nb2Rl
IG1vZGUpCiAgICAgbV9jdXN0b21Db21wb3NpdGlvbkFubm90YXRpb25zLmNsZWFyKCk7CiAKICAg
ICBpZiAoYXV0byogY2FjaGUgPSBtX2RvY3VtZW50LmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOyBj
YWNoZSAmJiBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSkKLSAgICAgICAgY2FjaGUtPm9uVGV4dENv
bXBvc2l0aW9uQ2hhbmdlKCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQVhPYmplY3RDYWNoZTo6
Q29tcG9zaXRpb25TdGF0ZTo6RW5kZWQsIGZhbHNlKTsKKyAgICAgICAgY2FjaGUtPm9uVGV4dENv
bXBvc2l0aW9uQ2hhbmdlKCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgQ29tcG9zaXRpb25TdGF0
ZTo6RW5kZWQsIGZhbHNlLCB0ZXh0LCBtX2NvbXBvc2l0aW9uU3RhcnQsIG1faXNIYW5kbGluZ0Fj
Y2VwdGVkQ2FuZGlkYXRlKTsKIAogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzTm9u
ZSgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzM1LDEyICsyMzM1LDEyIEBAIHZvaWQgRWRpdG9y
OjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3Np
dGlvblVuZGVybGluCiAKICAgICBpZiAoYXV0byogY2FjaGUgPSBtX2RvY3VtZW50LmV4aXN0aW5n
QVhPYmplY3RDYWNoZSgpKSB7CiAgICAgICAgIGlmIChwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSAm
JiBwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSAhPSBtX2NvbXBvc2l0aW9uTm9kZSkgewotICAgICAg
ICAgICAgYXV0byBzdGF0ZSA9IG1fY29tcG9zaXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29t
cG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzcyA6IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3Rh
dGU6OkVuZGVkOwotICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBvc2l0aW9uQ2hhbmdlKCpw
cmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgc3RhdGUsIHRydWUpOworICAgICAgICAgICAgYXV0byBz
dGF0ZSA9IG1fY29tcG9zaXRpb25Ob2RlID8gQ29tcG9zaXRpb25TdGF0ZTo6SW5Qcm9ncmVzcyA6
IENvbXBvc2l0aW9uU3RhdGU6OkVuZGVkOworICAgICAgICAgICAgY2FjaGUtPm9uVGV4dENvbXBv
c2l0aW9uQ2hhbmdlKCpwcmV2aW91c0NvbXBvc2l0aW9uTm9kZSwgc3RhdGUsIHRydWUsIHRleHQs
IG1fY29tcG9zaXRpb25TdGFydCwgbV9pc0hhbmRsaW5nQWNjZXB0ZWRDYW5kaWRhdGUpOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChtX2NvbXBvc2l0aW9uTm9kZSkgewotICAgICAgICAgICAgYXV0
byBzdGF0ZSA9IHByZXZpb3VzQ29tcG9zaXRpb25Ob2RlID8gQVhPYmplY3RDYWNoZTo6Q29tcG9z
aXRpb25TdGF0ZTo6SW5Qcm9ncmVzcyA6IEFYT2JqZWN0Q2FjaGU6OkNvbXBvc2l0aW9uU3RhdGU6
OlN0YXJ0ZWQ7Ci0gICAgICAgICAgICBjYWNoZS0+b25UZXh0Q29tcG9zaXRpb25DaGFuZ2UoKm1f
Y29tcG9zaXRpb25Ob2RlLCBzdGF0ZSwgdHJ1ZSk7CisgICAgICAgICAgICBhdXRvIHN0YXRlID0g
cHJldmlvdXNDb21wb3NpdGlvbk5vZGUgPyBDb21wb3NpdGlvblN0YXRlOjpJblByb2dyZXNzIDog
Q29tcG9zaXRpb25TdGF0ZTo6U3RhcnRlZDsKKyAgICAgICAgICAgIGNhY2hlLT5vblRleHRDb21w
b3NpdGlvbkNoYW5nZSgqbV9jb21wb3NpdGlvbk5vZGUsIHN0YXRlLCB0cnVlLCB0ZXh0LCBtX2Nv
bXBvc2l0aW9uU3RhcnQsIG1faXNIYW5kbGluZ0FjY2VwdGVkQ2FuZGlkYXRlKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2lt
dWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlv
bi1hdHRyaWJ1dGVkLXN0cmluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi4wOWQ2OGM1NjcwOTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmli
dXRlZC1zdHJpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1RoaXMgdGVzdCBlbnN1
cmVzIHRoYXQgdGhlIGF0dHJpYnV0ZWQgc3RyaW5nIGZvciBpbmxpbmUgcHJlZGljdGlvbnMgaXMg
YWNjdXJhdGUuCisKK0dvb2QgbW97CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5
ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFt
ZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRT
aXplID0gMTE7Cit9CisKK1NpbXVsYXRpbmcgcHJlc2VudGVkIGNvbXBsZXRpb246CitHb29kIG1v
eworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZv
bnQiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVn
dWxhciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDExOworfXJuaW5newor
ICAgIFVJQWNjZXNzaWJpbGl0eUlubGluZVRleHRDb21wbGV0aW9uID0gcm5pbmc7CisgICAgVUlB
Y2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAg
VUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAg
ICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTE7Cit9CisKK1NpbXVsYXRpbmcgYWNj
ZXB0ZWQgY29tcGxldGlvbjoKK0dvb2QgeworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZh
bWlseSA9ICIuQXBwbGVTeXN0ZW1VSUZvbnQiOworICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9u
dE5hbWUgPSAiU3lzdGVtIEZvbnQgUmVndWxhciI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5G
b250U2l6ZSA9IDExOworfW1vcm5pbmd7CisgICAgVUlBY2Nlc3NpYmlsaXR5QWNjZXB0ZWRJbmxp
bmVUZXh0Q29tcGxldGlvbiA9IG1vcm5pbmc7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250
RmFtaWx5ID0gIi5BcHBsZVN5c3RlbVVJRm9udCI7CisgICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5G
b250TmFtZSA9ICJTeXN0ZW0gRm9udCBSZWd1bGFyIjsKKyAgICBVSUFjY2Vzc2liaWxpdHlUb2tl
bkZvbnRTaXplID0gMTE7Cit9CisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aW9zLXNpbXVsYXRvci9pbmxpbmUtcHJlZGljdGlvbi1hdHRyaWJ1dGVkLXN0cmluZy5odG1sIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9u
LWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi44NWYwNWVjY2NlYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvaW5saW5lLXByZWRpY3Rpb24tYXR0cmlidXRlZC1zdHJp
bmcuaHRtbApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+CisKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKwor
PGJvZHk+CisKKzxpbnB1dCBpZD0iZWRpdGFibGUiIHR5cGU9InRleHQiIHRhYmluZGV4PSIwIj48
L2lucHV0PgorCis8c2NyaXB0PgordmFyIHJlc3VsdCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0
IHRoZSBhdHRyaWJ1dGVkIHN0cmluZyBmb3IgaW5saW5lIHByZWRpY3Rpb25zIGlzIGFjY3VyYXRl
LlxuXG4iOworCitpZiAod2luZG93LnRleHRJbnB1dENvbnRyb2xsZXIgJiYgd2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRh
YmxlIikuZm9jdXMoKTsKKyAgICB2YXIgaW5wdXQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudDsKKyAgICBpbnB1dC5pbnNlcnRUZXh0KCJHb29kIG1vIik7CisgICAgcmVz
dWx0ICs9IGAke2lucHV0LmF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZSgwLCA3KX1cblxuYDsKKwor
ICAgIHJlc3VsdCArPSAiU2ltdWxhdGluZyBwcmVzZW50ZWQgY29tcGxldGlvbjpcbiI7CisgICAg
dGV4dElucHV0Q29udHJvbGxlci5zZXRNYXJrZWRUZXh0KCJybmluZyIsIDAsIDUsIGZhbHNlLCBb
IHsgZnJvbTogIjAiLCBsZW5ndGg6ICI1IiwgY29sb3I6ICIjRkYwMDAwMzMiLCBmb3JlZ3JvdW5k
Q29sb3I6ICIjRkYwMDAwRkYiIH0gXSwgdW5kZWZpbmVkKTsKKyAgICByZXN1bHQgKz0gYCR7aW5w
dXQuYXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKDAsIDEyKX1cblxuYDsKKworICAgIHJlc3VsdCAr
PSAiU2ltdWxhdGluZyBhY2NlcHRlZCBjb21wbGV0aW9uOlxuIjsKKyAgICB0ZXh0SW5wdXRDb250
cm9sbGVyLnNldE1hcmtlZFRleHQoIiIsIDAsIDAsIGZhbHNlLCB1bmRlZmluZWQsIHVuZGVmaW5l
ZCk7CisgICAgdGV4dElucHV0Q29udHJvbGxlci5pbnNlcnRUZXh0KCJybmluZyIpOworICAgIHJl
c3VsdCArPSBgJHtpbnB1dC5hdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UoMCwgMTIpfVxuXG5gOwor
CisgICAgZGVidWcocmVzdWx0KTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTE2L1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtMTYvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzYTFlZTI0
YTAxZjcuLjg5ZjA2ZTdlODI3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LTE2L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLTE2L1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTE0LDMgKzE0LDYgQEAgZmFzdC9pbWFnZXMvcGFnZS13aWRlLWFu
aW1hdGlvbi10b2dnbGUuaHRtbCBbIFNraXAgXQogZmFzdC9pbWFnZXMvcGFnZXdpZGUtcGxheS1w
YXVzZS1hbmltYXRlVHJhbnNmb3JtLXN2Zy1hbmltYXRpb24uaHRtbCBbIFNraXAgXSAKIGZhc3Qv
aW1hZ2VzL3BhZ2V3aWRlLXBsYXktcGF1c2Utb2Zmc2NyZWVuLWFuaW1hdGlvbnMuaHRtbCBbIFNr
aXAgXQogc3ZnL2N1c3RvbS9zdmctZm9udHMtaW4taHRtbC5odG1sIFsgU2tpcCBdCisKKyMgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTA1NgorYWNjZXNzaWJpbGl0
eS9pb3Mtc2ltdWxhdG9yL2lubGluZS1wcmVkaWN0aW9uLWF0dHJpYnV0ZWQtc3RyaW5nLmh0bWwg
WyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>