<?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>121111</bug_id>
          
          <creation_ts>2013-09-10 12:28:38 -0700</creation_ts>
          <short_desc>[iOS] Upstream text autosizing</short_desc>
          <delta_ts>2016-09-19 10:58:54 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>121138</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>ahf</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>927421</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-09-10 12:28:38 -0700</bug_when>
    <thetext>Upstream the iOS-specific implementation of text autosizing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927471</commentid>
    <comment_count>1</comment_count>
      <attachid>211237</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-09-10 13:55:36 -0700</bug_when>
    <thetext>Created attachment 211237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927472</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-09-10 13:56:17 -0700</bug_when>
    <thetext>We should look to further clean up this code as well as look to merge this code with the existing ENABLE(TEXT_AUTOSIZING)-guarded code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927480</commentid>
    <comment_count>3</comment_count>
      <attachid>211239</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-09-10 14:03:37 -0700</bug_when>
    <thetext>Created attachment 211239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927489</commentid>
    <comment_count>4</comment_count>
      <attachid>211237</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-09-10 14:15:32 -0700</bug_when>
    <thetext>Comment on attachment 211237
Patch

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

&gt; Source/WebCore/ChangeLog:38
&gt; +        resolved before properties that depend on them; make  See &lt;rdar://problem/13522835&gt;.

&quot;make  See ...&quot;

&gt; Source/WebCore/css/DeprecatedStyleBuilder.cpp:1454
&gt; +    static void applyValue(CSSPropertyID, StyleResolver* styleResolver, CSSValue* value)
&gt; +    {
&gt; +        if (!value-&gt;isPrimitiveValue())
&gt; +            return;
&gt; +
&gt; +        CSSPrimitiveValue* primitiveValue = static_cast&lt;CSSPrimitiveValue*&gt;(value);
&gt; +        Length lineHeight;
&gt; +
&gt; +        if (primitiveValue-&gt;getIdent() == CSSValueNormal)
&gt; +            lineHeight = RenderStyle::initialLineHeight();
&gt; +        else if (primitiveValue-&gt;isLength()) {
&gt; +            double multiplier = styleResolver-&gt;style()-&gt;effectiveZoom();
&gt; +            if (styleResolver-&gt;style()-&gt;textSizeAdjust().isNone()) {
&gt; +                if (Frame* frame = styleResolver-&gt;document().frame())
&gt; +                    multiplier *= frame-&gt;textZoomFactor();
&gt; +            }
&gt; +            lineHeight = primitiveValue-&gt;computeLength&lt;Length&gt;(styleResolver-&gt;style(), styleResolver-&gt;rootElementStyle(), multiplier);
&gt; +            if (styleResolver-&gt;style()-&gt;textSizeAdjust().isPercentage())
&gt; +                lineHeight = Length(lineHeight.value() * styleResolver-&gt;style()-&gt;textSizeAdjust().multiplier(), Fixed);
&gt; +        } else if (primitiveValue-&gt;isPercentage()) {
&gt; +            // FIXME: percentage should not be restricted to an integer here.
&gt; +            lineHeight = Length((styleResolver-&gt;style()-&gt;fontSize() * primitiveValue-&gt;getIntValue()) / 100, Fixed);
&gt; +        } else if (primitiveValue-&gt;isNumber()) {
&gt; +            // FIXME: number and percentage values should produce the same type of Length (ie. Fixed or Percent).
&gt; +            if (styleResolver-&gt;style()-&gt;textSizeAdjust().isPercentage())
&gt; +                lineHeight = Length(primitiveValue-&gt;getDoubleValue() * styleResolver-&gt;style()-&gt;textSizeAdjust().multiplier() * 100.0, Percent);
&gt; +            else
&gt; +                lineHeight = Length(primitiveValue-&gt;getDoubleValue() * 100.0, Percent);
&gt; +        } else if (primitiveValue-&gt;isViewportPercentageLength())
&gt; +            lineHeight = primitiveValue-&gt;viewportPercentageLength();
&gt; +        else
&gt; +            return;
&gt; +        styleResolver-&gt;style()-&gt;setLineHeight(lineHeight);
&gt; +        styleResolver-&gt;style()-&gt;setSpecifiedLineHeight(lineHeight);
&gt; +    }

This is a pretty long function. You could define it outside the class to reduce indentation.

&gt; Source/WebCore/rendering/RenderBlock.cpp:8159
&gt; +#define ParagraphMinWordCount 6
&gt; +#define ParagraphMinLineCount 2
&gt; +#define ParagraphMaxWidth     0.9

These don&apos;t seem to be used.

&gt; Source/WebCore/rendering/style/TextSizeAdjustment.h:34
&gt; +    float percentage() { return m_value; }
&gt; +    float multiplier() { return m_value / 100; }

These functions could be const qualified.

&gt; Source/WebKit/mac/WebView/WebFramePrivate.h:106
&gt; +#if ENABLE(IOS_TEXT_AUTOSIZING)
&gt; +- (void)resetTextAutosizingBeforeLayout;
&gt; +- (void)_setVisibleSize:(CGSize)size;
&gt; +- (void)_setTextAutosizingWidth:(CGFloat)width;
&gt; +#endif

Since this is an SPI header I don&apos;t think it&apos;s safe to use WTF macros here. You can&apos;t rely on Platform.h being included in the translation unit.

&gt; Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h:164
&gt; +#if ENABLE(IOS_TEXT_AUTOSIZING)
&gt; +#define WebKitMinimumZoomFontSizePreferenceKey @&quot;WebKitMinimumZoomFontSizePreferenceKey&quot;
&gt; +#endif

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927506</commentid>
    <comment_count>5</comment_count>
      <attachid>211239</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-09-10 14:31:22 -0700</bug_when>
    <thetext>Comment on attachment 211239
Patch

r=me with previous comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927513</commentid>
    <comment_count>6</comment_count>
      <attachid>211239</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-10 14:41:40 -0700</bug_when>
    <thetext>Comment on attachment 211239
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:2782
&gt; +        // We actually want to merge the following into TOT

This comment doesn&apos;t make sense anymore.

&gt; Source/WebCore/css/StyleResolver.cpp:1455
&gt; +    checkForTextSizeAdjust();

I think this might be a bit cleaner if it was passed the style like the functions below.

&gt; Source/WebCore/dom/Document.cpp:4753
&gt; +    if (m_textAutoSizedNodes.contains(key))
&gt; +        value = m_textAutoSizedNodes.get(key);
&gt; +    else {
&gt; +        value = TextAutoSizingValue::create();
&gt; +        m_textAutoSizedNodes.set(key, value);

This should probably do the add() trick to avoid the double hash lookup.

&gt; Source/WebCore/dom/Document.cpp:4766
&gt; +    TextAutoSizingMap::iterator end = m_textAutoSizedNodes.end();
&gt; +    for (TextAutoSizingMap::iterator i = m_textAutoSizedNodes.begin(); i != end; ++i) {
&gt; +        TextAutoSizingKey key = i-&gt;key;
&gt; +        RefPtr&lt;TextAutoSizingValue&gt; value = i-&gt;value;

This should be using thew new auto hotness.

&gt; Source/WebCore/dom/Document.cpp:4784
&gt; +    TextAutoSizingMap::iterator end = m_textAutoSizedNodes.end();
&gt; +    for (TextAutoSizingMap::iterator i = m_textAutoSizedNodes.begin(); i != end; ++i) {

This should be using thew new auto hotness.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:369
&gt; +    // FIXME: Not a very smart hash. Could be improved upon.
&gt; +    uint32_t hash = 0;
&gt; +    
&gt; +    hash ^= rareNonInheritedData-&gt;m_appearance;
&gt; +    hash ^= rareNonInheritedData-&gt;marginBeforeCollapse;
&gt; +    hash ^= rareNonInheritedData-&gt;marginAfterCollapse;
&gt; +    hash ^= rareNonInheritedData-&gt;lineClamp.value();
&gt; +    hash ^= rareInheritedData-&gt;overflowWrap;
&gt; +    hash ^= rareInheritedData-&gt;nbspMode;
&gt; +    hash ^= rareInheritedData-&gt;lineBreak;
&gt; +    hash ^= WTF::FloatHash&lt;float&gt;::hash(inherited-&gt;specifiedLineHeight.value());
&gt; +    hash ^= computeFontHash(inherited-&gt;font);
&gt; +    hash ^= inherited-&gt;horizontal_border_spacing;
&gt; +    hash ^= inherited-&gt;vertical_border_spacing;
&gt; +    hash ^= inherited_flags._box_direction;
&gt; +    hash ^= inherited_flags.m_rtlOrdering;
&gt; +    hash ^= noninherited_flags._position;
&gt; +    hash ^= noninherited_flags._floating;
&gt; +    hash ^= rareNonInheritedData-&gt;textOverflow;
&gt; +    hash ^= rareInheritedData-&gt;textSecurity;
&gt; +    return hash;

This is a terrible hash function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927515</commentid>
    <comment_count>7</comment_count>
      <attachid>211239</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-10 14:42:58 -0700</bug_when>
    <thetext>Comment on attachment 211239
Patch

Didn&apos;t mean to clear the r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927525</commentid>
    <comment_count>8</comment_count>
      <attachid>211239</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-10 14:53:29 -0700</bug_when>
    <thetext>Comment on attachment 211239
Patch

Attachment 211239 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/1738520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927545</commentid>
    <comment_count>9</comment_count>
      <attachid>211239</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-10 15:19:55 -0700</bug_when>
    <thetext>Comment on attachment 211239
Patch

Attachment 211239 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1734732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927574</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-09-10 16:20:17 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 211237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=211237&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:38
&gt; &gt; +        resolved before properties that depend on them; make  See &lt;rdar://problem/13522835&gt;.
&gt; 
&gt; &quot;make  See ...&quot;

Will fix.

&gt; 
&gt; &gt; Source/WebCore/css/DeprecatedStyleBuilder.cpp:1454
&gt; &gt; +    static void applyValue(CSSPropertyID, StyleResolver* styleResolver, CSSValue* value)
&gt; &gt; +    {
&gt; &gt; +        if (!value-&gt;isPrimitiveValue())
&gt; &gt; +            return;
&gt; &gt; +
&gt; &gt; +        CSSPrimitiveValue* primitiveValue = static_cast&lt;CSSPrimitiveValue*&gt;(value);
&gt; &gt; +        Length lineHeight;
&gt; &gt; +
&gt;&gt; [...]
&gt; &gt; +        styleResolver-&gt;style()-&gt;setLineHeight(lineHeight);
&gt; &gt; +        styleResolver-&gt;style()-&gt;setSpecifiedLineHeight(lineHeight);
&gt; &gt; +    }
&gt; 
&gt; This is a pretty long function. You could define it outside the class to reduce indentation.
&gt; 

With regards to the length of the function, we should look to extract the common code between this function and ApplyPropertyLineHeight::applyValue(). As you mentioned, we can define this function outside of the class to also reduce its level of indentation. I suggest we look into these cleanups in a separate patch.

&gt; &gt; Source/WebCore/rendering/RenderBlock.cpp:8159
&gt; &gt; +#define ParagraphMinWordCount 6
&gt; &gt; +#define ParagraphMinLineCount 2
&gt; &gt; +#define ParagraphMaxWidth     0.9
&gt; 
&gt; These don&apos;t seem to be used.
&gt; 

Will remove.

&gt; &gt; Source/WebCore/rendering/style/TextSizeAdjustment.h:34
&gt; &gt; +    float percentage() { return m_value; }
&gt; &gt; +    float multiplier() { return m_value / 100; }
&gt; 
&gt; These functions could be const qualified.
&gt; 

Will add qualifier const.

&gt; &gt; Source/WebKit/mac/WebView/WebFramePrivate.h:106
&gt; &gt; +#if ENABLE(IOS_TEXT_AUTOSIZING)
&gt; &gt; +- (void)resetTextAutosizingBeforeLayout;
&gt; &gt; +- (void)_setVisibleSize:(CGSize)size;
&gt; &gt; +- (void)_setTextAutosizingWidth:(CGFloat)width;
&gt; &gt; +#endif
&gt; 
&gt; Since this is an SPI header I don&apos;t think it&apos;s safe to use WTF macros here. You can&apos;t rely on Platform.h being included in the translation unit.
&gt; 

Will remove ENABLE(IOS_TEXT_AUTOSIZING)-guard and define empty implementations of these functions when iOS test autosizing is disabled (say, on the Mac port). 

&gt; &gt; Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h:164
&gt; &gt; +#if ENABLE(IOS_TEXT_AUTOSIZING)
&gt; &gt; +#define WebKitMinimumZoomFontSizePreferenceKey @&quot;WebKitMinimumZoomFontSizePreferenceKey&quot;
&gt; &gt; +#endif
&gt; 
&gt; Ditto.

Will remove ENABLE(IOS_TEXT_AUTOSIZING)-guard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927578</commentid>
    <comment_count>11</comment_count>
      <attachid>211239</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-10 16:27:34 -0700</bug_when>
    <thetext>Comment on attachment 211239
Patch

Attachment 211239 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/1738546</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927580</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-09-10 16:28:33 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 211239 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=211239&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:2782
&gt; &gt; +        // We actually want to merge the following into TOT
&gt; 
&gt; This comment doesn&apos;t make sense anymore.
&gt; 

Will remove comment.

&gt; &gt; Source/WebCore/css/StyleResolver.cpp:1455
&gt; &gt; +    checkForTextSizeAdjust();
&gt; 
&gt; I think this might be a bit cleaner if it was passed the style like the functions below.

Will modify function to take argument of type RenderStyle*.

&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:4753
&gt; &gt; +    if (m_textAutoSizedNodes.contains(key))
&gt; &gt; +        value = m_textAutoSizedNodes.get(key);
&gt; &gt; +    else {
&gt; &gt; +        value = TextAutoSizingValue::create();
&gt; &gt; +        m_textAutoSizedNodes.set(key, value);
&gt; 
&gt; This should probably do the add() trick to avoid the double hash lookup.
&gt; 

Will write in terms of HashMap::add().

&gt; &gt; Source/WebCore/dom/Document.cpp:4766
&gt; &gt; +    TextAutoSizingMap::iterator end = m_textAutoSizedNodes.end();
&gt; &gt; +    for (TextAutoSizingMap::iterator i = m_textAutoSizedNodes.begin(); i != end; ++i) {
&gt; &gt; +        TextAutoSizingKey key = i-&gt;key;
&gt; &gt; +        RefPtr&lt;TextAutoSizingValue&gt; value = i-&gt;value;
&gt; 
&gt; This should be using thew new auto hotness.
&gt; 

Will write in terms of keyword auto.

&gt; &gt; Source/WebCore/dom/Document.cpp:4784
&gt; &gt; +    TextAutoSizingMap::iterator end = m_textAutoSizedNodes.end();
&gt; &gt; +    for (TextAutoSizingMap::iterator i = m_textAutoSizedNodes.begin(); i != end; ++i) {
&gt; 
&gt; This should be using thew new auto hotness.
&gt; 

Ditto.

&gt; &gt; Source/WebCore/rendering/style/RenderStyle.cpp:369
&gt; &gt; +    // FIXME: Not a very smart hash. Could be improved upon.
&gt; &gt; +    uint32_t hash = 0;
&gt; &gt; +    
&gt; &gt; +    hash ^= rareNonInheritedData-&gt;m_appearance;
&gt; &gt; +    hash ^= rareNonInheritedData-&gt;marginBeforeCollapse;
&gt; &gt; +    hash ^= rareNonInheritedData-&gt;marginAfterCollapse;
&gt; &gt; +    hash ^= rareNonInheritedData-&gt;lineClamp.value();
&gt; &gt; +    hash ^= rareInheritedData-&gt;overflowWrap;
&gt; &gt; +    hash ^= rareInheritedData-&gt;nbspMode;
&gt; &gt; +    hash ^= rareInheritedData-&gt;lineBreak;
&gt; &gt; +    hash ^= WTF::FloatHash&lt;float&gt;::hash(inherited-&gt;specifiedLineHeight.value());
&gt; &gt; +    hash ^= computeFontHash(inherited-&gt;font);
&gt; &gt; +    hash ^= inherited-&gt;horizontal_border_spacing;
&gt; &gt; +    hash ^= inherited-&gt;vertical_border_spacing;
&gt; &gt; +    hash ^= inherited_flags._box_direction;
&gt; &gt; +    hash ^= inherited_flags.m_rtlOrdering;
&gt; &gt; +    hash ^= noninherited_flags._position;
&gt; &gt; +    hash ^= noninherited_flags._floating;
&gt; &gt; +    hash ^= rareNonInheritedData-&gt;textOverflow;
&gt; &gt; +    hash ^= rareInheritedData-&gt;textSecurity;
&gt; &gt; +    return hash;
&gt; 
&gt; This is a terrible hash function.

Filed bug #121131 to improve the hash function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927623</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-09-10 19:38:25 -0700</bug_when>
    <thetext>Committed r155496: &lt;http://trac.webkit.org/changeset/155496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927822</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-11 09:42:36 -0700</bug_when>
    <thetext>Some comments after the fact:

- I prefer conditional code in a separate paragraph rather than sorted alphabetically in with everything else. That applies in a few places in the patch.
- seems that StyleResolver::checkForTextSizeAdjust could be optimized so it doesn’t call setFontDescription when the font description doesn’t change; I wonder if that’s a real or common case
- StyleResolver::checkForTextSizeAdjust should take a reference rather than a pointer
- TextAutoSizingKey::deletedKeyDoc is not needed, because TextAutoSizingKey::deletedKeyStyle is enough on its own, and there is no need to even look at the document, which can just be nullptr
- addAutoSizingNode should probably take an element rather than a node, and maybe even a more specific type, and a reference rather than a pointer
- code iterating m_textAutoSizedNodes should not churn reference counts by putting the value into a RefPtr
- TextAutoSizingTraits could derive from just HashTraits instead of from WTF::GenericHashTraits
- textAutosizingWidth and setTextAutosizingWidth should not be functions on Frame; we are working so hard to remove functions from Frame and it&apos;s a serious bummer to add more instead of finding one of the Frame sub objects to put it on
- the code in FrameView uses the unpleasant variable name &quot;visWidth&quot; (is that visibleWidth, or is there a better name) and has a pointless local variable for a boolean
- resizeTextPermitted is not a good function name, because it sounds like a verb phrase, a function that will do a resize
- some of the new code uses the variable name &quot;obj&quot;
- the comment before oneLineTextMultiplier states something that is demonstrably untrue if you read the code below it
- the LineCount enum values are ALL_CAPS for no good reason
- RenderObject::traverseNext is a copy of an already-existing function, RenderObject::nextInPreOrder
- the fancy versions of RenderObject::traverseNext should just call the non-fancy version in a loop instead of sprinkling logic inside the iteration
- the depth stack inside RenderObject::adjustComputedFontSizesOnBlocks should have some inline capacity to avoid doing memory allocation for common cases
- it&apos;s easy to make a good hash instead of a horrible one in RenderStyle::hashForTextAutosizing, and we should
- the TextSizeAdjustmentType enum is not really an enum, just some magic values for m_value in TextSizeAdjustment, and the class could encapsulate those magic values much better than that with isXXX functions and the like
- [WebFrame resetTextAutosizingBeforeLayout] has an extra local variable it doesn&apos;t need, as does _setTextAutosizingWidth:

I’d like to fix some of those things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231163</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-09-19 10:58:54 -0700</bug_when>
    <thetext>*** Bug 73546 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211237</attachid>
            <date>2013-09-10 13:55:36 -0700</date>
            <delta_ts>2013-09-10 14:15:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121111-20130910135535.patch</filename>
            <type>text/plain</type>
            <size>125391</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDczMTNjZGU5NzFiMTdkNjRmNTExMjFi
MjY1NGY1OGZkZTI5Y2Y0MjcuLjExYWI5NTRlYmNlMzljYjFjMDYzZDg3MGM5NWQ2MTFkZmZiNDc5
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDktMTAgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFVwc3RyZWFtIHRleHQgYXV0b3NpemluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMTExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIGlP
UyB0ZXh0IGF1dG9zaXppbmcgdG8gYmUgZW5hYmxlZCBvbiBpT1MgdW5sZXNzIG90aGVyd2lzZSBk
ZWZpbmVkLgorCisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTMtMDktMDkg
IEx1Y2lhbm8gV29sZiAgPGx1Y2lhbm8ud29sZkBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIE5p
eCB1cHN0cmVhbWluZyAtIEFkZGluZyBzdHVicyBhbmQgTml4IHNwZWNpZmljIHBsYXRmb3JtIGZp
bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggYmI3MDRmMWYwNGUwZWQ3YzNhZWI4MGM4YWIyYjRmOWY5ZmIxYzU2
ZC4uYzBlMjAwOGY0YjI3YTJkNjNhZGJjMTUxY2EzMGEzMGE0MzZjMDgwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDExNyBAQAorMjAxMy0wOS0xMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgW2lPU10gVXBzdHJlYW0gdGV4dCBhdXRvc2l6aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjExMTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogcGxhdGZvcm0v
aXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvYW5vbnltb3VzLWJsb2NrLmh0bWwKKyAg
ICAgICAgICAgICAgIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2Nv
bnRlbnRlZGl0YWJsZS5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxh
dG9yL3RleHQtYXV0b3NpemluZy9maXJzdC1sZXR0ZXIuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvZm9udC1mYW1pbHktY2FzZS1p
bnNlbnNpdGl2ZS5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9y
L3RleHQtYXV0b3NpemluZy9saXN0cy5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9pcGhv
bmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9vdmVyZmxvdy5odG1sCisgICAgICAgICAgICAg
ICBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9wZXJjZW50LWFkanVz
dC1sZW5ndGgtbGluZS1oZWlnaHQuaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0vaXBob25l
LXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvcGVyY2VudC1hZGp1c3QtbnVtYmVyLWxpbmUtaGVp
Z2h0Lmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1h
dXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LXBlcmNlbnQtbGluZS1oZWlnaHQuaHRtbAorCisgICAg
ICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1
ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Zh
bGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkpOgorICAgICAgICAqIGNz
cy9DU1NQcm9wZXJ0eU5hbWVzLmluOiBBZGQgcHJvcGVydHkgLXdlYmtpdC10ZXh0LXNpemUtYWRq
dXN0LgorICAgICAgICAqIGNzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0Rm9ySU9TVGV4dEF1dG9zaXppbmc6OmFw
cGx5VmFsdWUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVp
Z2h0Rm9ySU9TVGV4dEF1dG9zaXppbmc6OmFwcGx5SW5pdGlhbFZhbHVlKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGluZUhlaWdodEZvcklPU1RleHRBdXRvc2l6aW5n
OjphcHBseUluaGVyaXRWYWx1ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9w
ZXJ0eUxpbmVIZWlnaHRGb3JJT1NUZXh0QXV0b3NpemluZzo6Y3JlYXRlSGFuZGxlcik6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFN0eWxlQnVpbGRlcjo6RGVwcmVjYXRlZFN0
eWxlQnVpbGRlcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6dXBkYXRlRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjphcHBseVByb3BlcnRpZXMpOiBBZGQgQ09NUElMRV9BU1NFUlQgdG8gZW5z
dXJlIHRoYXQKKyAgICAgICAgYWxsIHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgZm9udCBzaXplLCBp
bmNsdWRpbmcgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0LCBhcmUKKyAgICAgICAgcmVzb2x2ZWQg
YmVmb3JlIHByb3BlcnRpZXMgdGhhdCBkZXBlbmQgb24gdGhlbTsgbWFrZSAgU2VlIDxyZGFyOi8v
cHJvYmxlbS8xMzUyMjgzNT4uCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBs
eVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNoZWNrRm9yVGV4
dFNpemVBZGp1c3QpOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0QXV0b1Npemlu
Z1RyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0QXV0b1NpemluZ1RyYWl0czo6aXNEZWxldGVkVmFsdWUpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmFkZEF1dG9TaXppbmdOb2RlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
dmFsaWRhdGVBdXRvU2l6aW5nTm9kZXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZXNldEF1dG9TaXppbmdOb2Rlcyk6IEFkZGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmg6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIHNldFRleHRBdXRvc2l6aW5nV2lkdGgoKSwg
dGV4dEF1dG9zaXppbmdXaWR0aCgpLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmluOiBHZW5lcmF0ZSBzZXR0ZXIgYW5kIGdldHRlciBmb3Igc2V0dGluZyBtaW5pbXVtWm9v
bUZvbnRTaXplLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnQ6OmVxdWFsRm9yVGV4dEF1dG9TaXppbmcpOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udERlc2NyaXB0aW9uOjpmYW1pbGllc0VxdWFsRm9yVGV4dEF1dG9TaXppbmcpOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6ZXF1YWxGb3JUZXh0QXV0b1NpemluZyk6IEFk
ZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6aXNWaXNp
YmxlUmVuZGVyVGV4dCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVzaXplVGV4dFBlcm1p
dHRlZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmltbWVkaWF0ZUxp
bmVDb3VudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNOb25CbG9ja3NPck5vbkZpeGVk
SGVpZ2h0TGlzdEl0ZW1zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvbmVMaW5lVGV4dE11
bHRpcGxpZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRNdWx0aXBsaWVyKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRqdXN0Q29tcHV0ZWRGb250U2l6
ZXMpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZXNldENvbXB1dGVkRm9udFNpemUpOiBBZGRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6dHJhdmVyc2VOZXh0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppbmNs
dWRlTm9uRml4ZWRIZWlnaHQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6YWRqdXN0Q29tcHV0ZWRGb250U2l6ZXNPbkJsb2Nrcyk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0OjpyZXNldFRleHRBdXRvc2l6aW5nKTogQWRkZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OlJlbmRlclRleHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
ZXh0OjpjYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0OjpzZXRDYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKTogQWRkZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVGb250SGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aGFzaEZv
clRleHRBdXRvc2l6aW5nKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6
ZXF1YWxGb3JUZXh0QXV0b3NpemluZyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0
eWxlOjpzcGVjaWZpZWRMaW5lSGVpZ2h0KTogQWRkZWQ7IGlPUy1zcGVjaWZpYyB2YXJpYW50Lgor
ICAgICAgICBXZSBzaG91bGQgcmVjb25jaWxlIHRoaXMgZ2V0dGVyIHdpdGggdGhlIGdldHRlciBv
ZiB0aGUgc2FtZSBuYW1lIHRoYXQgaXMKKyAgICAgICAgY29tcGlsZWQgd2hlbiBidWlsZGluZyB3
aXRoIElPU19URVhUX0FVVE9TSVpJTkcgZGlzYWJsZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6c2V0U3BlY2lmaWVkTGluZUhlaWdodCk6IEFkZGVkLgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmluaXRpYWxTcGVjaWZpZWRMaW5lSGVpZ2h0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRTaXplQWRqdXN0KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dFNpemVBZGp1c3QpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0U2l6ZUFkanVzdCk6IEFkZGVkLgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVJbmhlcml0ZWREYXRhOjpTdHlsZUluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9UZXh0U2l6ZUFkanVzdG1lbnQuaDogQWRkZWQuCisgICAgICAgIChUZXh0U2l6ZUFkanVzdG1l
bnQ6OlRleHRTaXplQWRqdXN0bWVudCk6CisgICAgICAgIChUZXh0U2l6ZUFkanVzdG1lbnQ6OnBl
cmNlbnRhZ2UpOgorICAgICAgICAoVGV4dFNpemVBZGp1c3RtZW50OjptdWx0aXBsaWVyKToKKyAg
ICAgICAgKFRleHRTaXplQWRqdXN0bWVudDo6aXNBdXRvKToKKyAgICAgICAgKFRleHRTaXplQWRq
dXN0bWVudDo6aXNOb25lKToKKyAgICAgICAgKFRleHRTaXplQWRqdXN0bWVudDo6aXNQZXJjZW50
YWdlKToKKyAgICAgICAgKFRleHRTaXplQWRqdXN0bWVudDo6b3BlcmF0b3IgPT0gKToKKyAgICAg
ICAgKFRleHRTaXplQWRqdXN0bWVudDo6b3BlcmF0b3IgIT0gKToKKwogMjAxMy0wOS0wOSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcg
V1RGIHR5cGUgdHJhaXRzIGluIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA4ODE5NTMxNWEw
NWU3N2ZhY2JkMWFlMDEyMWE2Zjg5OWI4ZWY1MTVlLi4yMmNjNmU4NzQ4ZWVkZmE2MjVjNWQzMjUz
ZTE4MDc5Y2I1M2U1YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMt
MDktMTAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1Nd
IFVwc3RyZWFtIHRleHQgYXV0b3NpemluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJG
cmFtZSByZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0XSk6IEFkZGVkLgorICAgICAgICAo
LVtXZWJGcmFtZSBfc2V0VmlzaWJsZVNpemU6XSk6IEFkZGVkLgorICAgICAgICAoLVtXZWJGcmFt
ZSBfc2V0VGV4dEF1dG9zaXppbmdXaWR0aDpdKTogQWRkZWQuCisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgr
W1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X3NldE1pbmltdW1ab29tRm9udFNpemU6XSk6IEFkZGVkLgorICAgICAgICAoLVtXZWJQcmVmZXJl
bmNlcyBfbWluaW11bVpvb21Gb250U2l6ZV0pOiBBZGRlZC4KKwogMjAxMy0wOS0wOSAgRGVhbiBK
YWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIFdlYkdMIGZvciBPUyBY
IG5pZ2h0bGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBi
L1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggNThjOWJmZDk0NTljMjU2YTE1
ODlkMGNhYzJhMmI2NzZkYTBjYmM4Zi4uY2I5MTVkYmU3MzEwNmRjMmUyOTA4NWM0NDQyNjdhZmNm
MzYyMTZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC05Miw2ICs5MiwxMCBAQAogI2Rl
ZmluZSBFTkFCTEVfTEVUVEVSUFJFU1MgMQogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVf
SU9TX1RFWFRfQVVUT1NJWklORykKKyNkZWZpbmUgRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcg
MQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfTUVURVJfRUxFTUVOVCkKICNkZWZpbmUg
RU5BQkxFX01FVEVSX0VMRU1FTlQgMAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGRi
NTg4NTIwYzExOGQ4NzVjZjdjOWY2M2RiZGZhZmFlNjRlYTkxMDMuLjVmNTc0M2RkNzc5MmJmMTEw
Njg2MTA4ZWNkM2Q0Y2FmZTk3ZmVjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNjk4LDYg
KzI2OTgsMTEgQEAgX19aTjdXZWJDb3JlOERvY3VtZW50MTNzdmdFeHRlbnNpb25zRXYKIF9fWk43
V2ViQ29yZThEb2N1bWVudDE5YWNjZXNzU1ZHRXh0ZW5zaW9uc0V2CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QxOXJl
c2V0VGV4dEF1dG9zaXppbmdFdgorX19aTjdXZWJDb3JlNUZyYW1lMjJzZXRUZXh0QXV0b3Npemlu
Z1dpZHRoRWYKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKIF9fWk43
V2ViQ29yZTEzU2Nyb2xsaW5nVHJlZTM3c2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5h
YmxlZEViCiBfX1pON1dlYkNvcmUxM1Njcm9sbGluZ1RyZWUyMXRyeVRvSGFuZGxlV2hlZWxFdmVu
dEVSS05TXzE4UGxhdGZvcm1XaGVlbEV2ZW50RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ4M2IxYmFkODkyYTg5ODMwZDM3Njlk
NDA2NTMxOWJlZDFjNzk3NTkuLjM2YWNmNjQyMDlkZjFmY2IwZmUxNjhjMzc2ZmY0NzFhZGFmNzAw
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEzMjQsNiArMTMyNCw3IEBACiAJCTQ0OEEyOUJGMEE0NkQ5Q0IwMDMwNzU5RiAv
KiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDQ4QTI5QkQwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ0OEEyOUMwMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hU
TUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uY3BwICovOyB9OwogCQk0NDhBRDI3QzBBNDgxMzdBMDAyM0QxNzkgLyogSlNIVE1M
T3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDQ4QjFCN0EwRjNBMkY5QjAwNDdBOUUy
IC8qIFRleHRTaXplQWRqdXN0bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0
bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ0OTZFMzlEMTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OTZFMzlC
MTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCAqLzsgfTsK
IAkJNDQ5NkUzOUUxMzk4MTM2QzAwM0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OTZFMzlD
MTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggKi87IH07CiAJ
CTQ0OTZFM0EwMTM5ODEzQTUwMDNFRTMyQSAvKiBKU1NWR01QYXRoRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5NkUzOUYxMzk4MTNBNTAw
M0VFMzJBIC8qIEpTU1ZHTVBhdGhFbGVtZW50LmggKi87IH07CkBAIC03ODE5LDYgKzc4MjAsNyBA
QAogCQk0NDhBMjlCRDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9wdGlvbnNDb2xsZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OEEyOUJFMEE0NkQ5Q0IwMDMw
NzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDhBRDI3QTBBNDgxMzc5MDAyM0QxNzkgLyogSlNIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NDhCMUI3ODBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3Rt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRleHRTaXplQWRqdXN0bWVu
dC5oOyBwYXRoID0gc3R5bGUvVGV4dFNpemVBZGp1c3RtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ0OTA5OEIxMEY4RjgyNTIwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ5NkUzOUIxMzk4MTM2QzAw
M0VFMzJBIC8qIEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OTZFMzlDMTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE5NDQzLDYgKzE5NDQ1LDcgQEAKIAkJCQlCQzIyNzQ3NTBFODM2NkUyMDBFN0Y5NzUgLyog
U1ZHUmVuZGVyU3R5bGUuaCAqLywKIAkJCQlCQzIyNzQ3NjBFODM2NkUyMDBFN0Y5NzUgLyogU1ZH
UmVuZGVyU3R5bGVEZWZzLmNwcCAqLywKIAkJCQlCQzIyNzQ3NzBFODM2NkUyMDBFN0Y5NzUgLyog
U1ZHUmVuZGVyU3R5bGVEZWZzLmggKi8sCisJCQkJNDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8q
IFRleHRTaXplQWRqdXN0bWVudC5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBzdHlsZTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDI2Miw2ICsyNDI2NSw3IEBACiAJCQkJOTMwRkM2
OEExMDcyQjkyODAwNDUyOTNFIC8qIFRleHRSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0YxOThGNjA4MjQ1RTU5MDAxRTlBQkMgLyogVGV4dFJlc291cmNlRGVjb2Rlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgyNEI0NjUwRTJFRjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCBp
biBIZWFkZXJzICovLAorCQkJCTQ0OEIxQjdBMEYzQTJGOUIwMDQ3QTlFMiAvKiBUZXh0U2l6ZUFk
anVzdG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTRCMEQwMDZDMUQwMEVGNkYyNiAv
KiBUZXh0U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MDE0RUYxQ0Y4MDAyNkEy
REQgLyogVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MzE0RUYxQ0Y4MDAy
NkEyREQgLyogVGV4dFRyYWNrQ3VlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggY2U3MGU1N2M1
NTA1ZTUzMDE0NTQ0MzM4MjQxOTUyYjRkNzhkZDJlMS4uZWM5OTk0MjRmNzA5NTQyMDQzOGY2ZDA4
NzQwZDRmYjczYWNlYWJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTM1NCw2ICszNTQsOSBAQCBzdGF0aWMgY29uc3Qg
Q1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRGaWxsQ29sb3IsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb24s
CiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHksCisjaWYgRU5BQkxFKElPU19URVhU
X0FVVE9TSVpJTkcpCisgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwKKyNlbmRp
ZgogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLAogICAgIENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZVdpZHRoLAogICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLApA
QCAtMjM4Niw2ICsyMzg5LDE0IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQ2xp
cCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6CiAgICAgICAg
ICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRTZWN1cml0
eSgpKTsKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0OgorICAgICAgICAgICAgaWYgKHN0eWxlLT50ZXh0
U2l6ZUFkanVzdCgpLmlzQXV0bygpKQorICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgICAgIGlm
IChzdHlsZS0+dGV4dFNpemVBZGp1c3QoKS5pc05vbmUoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7Cisg
ICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+dGV4dFNp
emVBZGp1c3QoKS5wZXJjZW50YWdlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RSk7CisjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xv
cjoKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUuZ2V0
KCksIHN0eWxlLT50ZXh0U3Ryb2tlQ29sb3IoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlV2lkdGg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDZkMjQ2
NTkyNTNiMWZkNGZlOWNkMDE4OWIzMGEzNjc2MWU5OGJhMjguLmFkY2RjYjU0Y2JlMTRjM2QzZWI2
Y2FlNjU4MjVlMGYwMTkzZGRjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMDEx
LDYgKzEwMTEsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRLZXl3b3JkUHJvcGVydHlB
bmRWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGludAogICAgICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZURpc2MgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNpcmNsZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlU3F1YXJlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRP
U0laSU5HKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25l
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgogICAgICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZUZsYXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI3NzEsNiArMjc3NywxOCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
ICAgIC8vIFdoZW4gc3BlY2lmeWluZyBlaXRoZXIgdHlwZSBvZiB1bml0LCByZXF1aXJlIG5vbi1u
ZWdhdGl2ZSBpbnRlZ2VycwogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgKHZhbHVl
LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSB8fCB2YWx1ZS0+ZlZh
bHVlKSAmJiB2YWxpZFVuaXQodmFsdWUsIEZJbnRlZ2VyIHwgRlBlcmNlbnQgfCBGTm9uTmVnLCBD
U1NRdWlya3NNb2RlKSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRP
U0laSU5HKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoKKyAgICAg
ICAgLy8gV2UgYWN0dWFsbHkgd2FudCB0byBtZXJnZSB0aGUgZm9sbG93aW5nIGludG8gVE9UCisg
ICAgICAgIC8vIDxwZXJjZW50YWdlPiB8IG5vbmUgfCBhdXRvIHwgaW5oZXJpdAorICAgICAgICBp
ZiAoaWQgPT0gQ1NTVmFsdWVBdXRvIHx8IGlkID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIG11bHRpbGVuZ3RoIGNhc2Ugd2hlcmUgd2UgYWxsb3cgcmVsYXRpdmUgdW5p
dHMuCisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9ICghaWQgJiYgdmFsaWRVbml0KHZhbHVl
LCBGUGVyY2VudCB8IEZOb25OZWcsIENTU1N0cmljdE1vZGUpKTsKKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyNlbmRpZgogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRTaXplRGVs
dGE6ICAgICAgICAgICAvLyA8bGVuZ3RoPgogICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHZhbGlk
VW5pdCh2YWx1ZSwgRkxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAppbmRleCAy
MDMzYjE5MzU3OTFiOWVmNzBhOWM1YmRhYTE4OWIwMjI2MmJkNGNhLi5jNDQ2MzcwNTFhYjZiODNm
MDJmODU3YWMxZjk5Y2FiNjdlMDMwNGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAK
QEAgLTM1MCw2ICszNTAsOSBAQCBib29sIENTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dEZpbGxDb2xvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2VjdXJpdHk6CisjaWYgRU5BQkxFKElPU19U
RVhUX0FVVE9TSVpJTkcpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0
OgorI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcjoKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dFN0cm9rZVdpZHRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5p
bgppbmRleCA3ZDg3ODAyYTZjOWQ3ZjExODE4MGZjMmZjYTA1NGVkOTQzZGU1OGE5Li4yODA2MzAw
NmY0MTE5NWY5N2EzN2U5NzFjYjVjOTg4ZDUzY2YxN2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlOYW1lcy5pbgpAQCAtMjgsNiArMjgsOSBAQCB0ZXh0LXJlbmRlcmluZwogLXdlYmtp
dC1sb2NhbGUKIC13ZWJraXQtdGV4dC1vcmllbnRhdGlvbgogLWVwdWItdGV4dC1vcmllbnRhdGlv
biA9IC13ZWJraXQtdGV4dC1vcmllbnRhdGlvbgorI2lmIGRlZmluZWQoRU5BQkxFX0lPU19URVhU
X0FVVE9TSVpJTkcpICYmIEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HCistd2Via2l0LXRleHQt
c2l6ZS1hZGp1c3QKKyNlbmRpZgogLXdlYmtpdC13cml0aW5nLW1vZGUKIC1lcHViLXdyaXRpbmct
bW9kZSA9IC13ZWJraXQtd3JpdGluZy1tb2RlCiB6b29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggYjI1MjRmZTQ5MzNhMzNmYzc0N2Q2N2My
ZDNhNDliNzJhODZhYmQ2Yi4uZjA0NTVjNzc2OTVkMDNkYzQwNjA4M2Y5MTA2MjlkZTkyZmE4ZWJi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApA
QCAtMTQxMyw2ICsxNDEzLDY1IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCisjaWYgRU5BQkxFKElP
U19URVhUX0FVVE9TSVpJTkcpCisvLyBGSVhNRTogU2hhcmUgbW9yZSBjb2RlIHdpdGggY2xhc3Mg
QXBwbHlQcm9wZXJ0eUxpbmVIZWlnaHQuCitjbGFzcyBBcHBseVByb3BlcnR5TGluZUhlaWdodEZv
cklPU1RleHRBdXRvc2l6aW5nIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KENTU1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAg
TGVuZ3RoIGxpbmVIZWlnaHQ7CisKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgICAgICAgICAgbGluZUhlaWdodCA9IFJlbmRlclN0
eWxlOjppbml0aWFsTGluZUhlaWdodCgpOworICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZS0+aXNMZW5ndGgoKSkgeworICAgICAgICAgICAgZG91YmxlIG11bHRpcGxpZXIgPSBzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisgICAgICAgICAgICBpZiAoc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+dGV4dFNpemVBZGp1c3QoKS5pc05vbmUoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLmZyYW1l
KCkpCisgICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgKj0gZnJhbWUtPnRleHRab29tRmFj
dG9yKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gcHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHls
ZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCksIG11bHRpcGxpZXIpOworICAgICAgICAgICAg
aWYgKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnRleHRTaXplQWRqdXN0KCkuaXNQZXJjZW50YWdl
KCkpCisgICAgICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aChsaW5lSGVpZ2h0LnZhbHVl
KCkgKiBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT50ZXh0U2l6ZUFkanVzdCgpLm11bHRpcGxpZXIo
KSwgRml4ZWQpOworICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRh
Z2UoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IHBlcmNlbnRhZ2Ugc2hvdWxkIG5vdCBiZSBy
ZXN0cmljdGVkIHRvIGFuIGludGVnZXIgaGVyZS4KKyAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBM
ZW5ndGgoKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmZvbnRTaXplKCkgKiBwcmltaXRpdmVWYWx1
ZS0+Z2V0SW50VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKKyAgICAgICAgfSBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IG51bWJlciBh
bmQgcGVyY2VudGFnZSB2YWx1ZXMgc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUgdHlwZSBvZiBMZW5n
dGggKGllLiBGaXhlZCBvciBQZXJjZW50KS4KKyAgICAgICAgICAgIGlmIChzdHlsZVJlc29sdmVy
LT5zdHlsZSgpLT50ZXh0U2l6ZUFkanVzdCgpLmlzUGVyY2VudGFnZSgpKQorICAgICAgICAgICAg
ICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCkg
KiBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT50ZXh0U2l6ZUFkanVzdCgpLm11bHRpcGxpZXIoKSAq
IDEwMC4wLCBQZXJjZW50KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaW5l
SGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpICogMTAwLjAs
IFBlcmNlbnQpOworICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpKQorICAgICAgICAgICAgbGluZUhlaWdodCA9IHByaW1pdGl2ZVZh
bHVlLT52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0
KGxpbmVIZWlnaHQpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRTcGVjaWZp
ZWRMaW5lSGVpZ2h0KGxpbmVIZWlnaHQpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5
SW5pdGlhbFZhbHVlKENTU1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIp
CisgICAgeworICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KFJl
bmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbFNwZWNp
ZmllZExpbmVIZWlnaHQoKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0
VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKKyAgICB7
CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldExpbmVIZWlnaHQoc3R5bGVSZXNv
bHZlci0+cGFyZW50U3R5bGUoKS0+bGluZUhlaWdodCgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChzdHlsZVJlc29sdmVyLT5wYXJlbnRT
dHlsZSgpLT5zcGVjaWZpZWRMaW5lSGVpZ2h0KCkpOworICAgIH0KKworICAgIHN0YXRpYyBQcm9w
ZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisgICAgeworICAgICAgICByZXR1cm4gUHJvcGVy
dHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlW
YWx1ZSk7CisgICAgfQorfTsKKyNlbmRpZgorCiBjbGFzcyBBcHBseVByb3BlcnR5UGFnZVNpemUg
ewogcHJpdmF0ZToKICAgICBzdGF0aWMgTGVuZ3RoIG1tTGVuZ3RoKGRvdWJsZSBtbSkgeyByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtbSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19N
TSktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPigwLCAwKTsgfQpAQCAtMjE1NSw3ICsyMjE0LDExIEBA
IERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXI6OkRlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIoKQogI2VuZGlm
CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGVmdCwgQXBwbHlQcm9wZXJ0eUxl
bmd0aDwmUmVuZGVyU3R5bGU6OmxlZnQsICZSZW5kZXJTdHlsZTo6c2V0TGVmdCwgJlJlbmRlclN0
eWxlOjppbml0aWFsT2Zmc2V0LCBBdXRvRW5hYmxlZD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgQXBwbHlQcm9wZXJ0
eUNvbXB1dGVMZW5ndGg8aW50LCAmUmVuZGVyU3R5bGU6OmxldHRlclNwYWNpbmcsICZSZW5kZXJT
dHlsZTo6c2V0TGV0dGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjppbml0aWFsTGV0dGVyV29yZFNw
YWNpbmcsIE5vcm1hbEVuYWJsZWQsIFRoaWNrbmVzc0Rpc2FibGVkLCBTVkdab29tRW5hYmxlZD46
OmNyZWF0ZUhhbmRsZXIoKSk7CisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGluZUhlaWdodCwgQXBwbHlQcm9wZXJ0eUxp
bmVIZWlnaHRGb3JJT1NUZXh0QXV0b3NpemluZzo6Y3JlYXRlSGFuZGxlcigpKTsKKyNlbHNlCiAg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGluZUhlaWdodCwgQXBwbHlQcm9wZXJ0
eUxpbmVIZWlnaHQ6OmNyZWF0ZUhhbmRsZXIoKSk7CisjZW5kaWYKICAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgQXBwbHlQcm9wZXJ0eVN0eWxlSW1hZ2U8
JlJlbmRlclN0eWxlOjpsaXN0U3R5bGVJbWFnZSwgJlJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJ
bWFnZSwgJlJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UsIENTU1Byb3BlcnR5TGlz
dFN0eWxlSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFTGlzdFN0
eWxlUG9zaXRpb24sICZSZW5kZXJTdHlsZTo6bGlzdFN0eWxlUG9zaXRpb24sIEVMaXN0U3R5bGVQ
b3NpdGlvbiwgJlJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVQb3NpdGlvbiwgRUxpc3RTdHlsZVBv
c2l0aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVQb3NpdGlvbj46OmNyZWF0ZUhh
bmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGlzdFN0eWxlVHlw
ZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUxpc3RTdHlsZVR5cGUsICZSZW5kZXJTdHlsZTo6bGlz
dFN0eWxlVHlwZSwgRUxpc3RTdHlsZVR5cGUsICZSZW5kZXJTdHlsZTo6c2V0TGlzdFN0eWxlVHlw
ZSwgRUxpc3RTdHlsZVR5cGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZVR5cGU+Ojpj
cmVhdGVIYW5kbGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDA4
NjE1OTFhODg3NzY0ZmRlZWE5YzAxOGU4ZWIxNjE0NTk3NTdiOTQuLmY5MGY2OTIwYzE5ZmIzN2M1
Y2JkM2M2MmIyZWUwY2Q1MGJhMmYwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKQEAgLTE0NTEsNiArMTQ1MSw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6dXBkYXRlRm9udCgp
CiAgICAgaWYgKCFtX3N0YXRlLmZvbnREaXJ0eSgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiBF
TkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBjaGVja0ZvclRleHRTaXplQWRqdXN0KCk7
CisjZW5kaWYKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBtX3N0YXRlLnN0eWxlKCk7CiAgICAg
Y2hlY2tGb3JHZW5lcmljRmFtaWx5Q2hhbmdlKHN0eWxlLCBtX3N0YXRlLnBhcmVudFN0eWxlKCkp
OwogICAgIGNoZWNrRm9yWm9vbUNoYW5nZShzdHlsZSwgbV9zdGF0ZS5wYXJlbnRTdHlsZSgpKTsK
QEAgLTE1NDUsNyArMTU0OCwxMSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydGll
cyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bAogI2VuZGlmCiAg
ICAgICAgIGNhc2UgSGlnaFByaW9yaXR5UHJvcGVydGllczoKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKGZpcnN0Q1NTUHJvcGVydHkgPT0gQ1NTUHJvcGVydHlDb2xvciwgQ1NTX2NvbG9yX2lz
X2ZpcnN0X3Byb3BlcnR5KTsKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKENTU1Byb3BlcnR5Wm9vbSA9PSBDU1NQcm9wZXJ0eUNvbG9y
ICsgMTgsIENTU196b29tX2lzX2VuZF9vZl9maXJzdF9wcm9wX3JhbmdlKTsKKyNlbHNlCiAgICAg
ICAgICAgICBDT01QSUxFX0FTU0VSVChDU1NQcm9wZXJ0eVpvb20gPT0gQ1NTUHJvcGVydHlDb2xv
ciArIDE3LCBDU1Nfem9vbV9pc19lbmRfb2ZfZmlyc3RfcHJvcF9yYW5nZSk7CisjZW5kaWYKICAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKENTU1Byb3BlcnR5TGluZUhlaWdodCA9PSBDU1NQcm9w
ZXJ0eVpvb20gKyAxLCBDU1NfbGluZV9oZWlnaHRfaXNfYWZ0ZXJfem9vbSk7CiAjaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCiAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlW
YXJpYWJsZSkKQEAgLTI0MzMsNiArMjQ0MCwyMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICBzZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFNpemVBZGp1c3Q6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
dGV4dFNpemVBZGp1c3QsIFRleHRTaXplQWRqdXN0KQorICAgICAgICBpZiAoIXByaW1pdGl2ZVZh
bHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVudChBdXRvVGV4dFNpemVBZGp1c3Rt
ZW50KSk7CisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0VGV4dFNpemVBZGp1
c3QoVGV4dFNpemVBZGp1c3RtZW50KE5vVGV4dFNpemVBZGp1c3RtZW50KSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRleHRTaXplQWRqdXN0KFRleHRTaXpl
QWRqdXN0bWVudChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKSk7CisKKyAgICAgICAg
c3RhdGUuc2V0Rm9udERpcnR5KHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXREYXNoYm9hcmRSZWdpb246CiAgICAgewpAQCAtMzEwNiw2ICszMTMwLDIzIEBAIFBhc3NSZWZQ
dHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6Y3Vyc29yT3JQZW5kaW5nRnJvbVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvCiAgICAgcmV0dXJuIGltYWdlLnJlbGVhc2UoKTsKIH0KIAorI2lmIEVO
QUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQordm9pZCBTdHlsZVJlc29sdmVyOjpjaGVja0ZvclRl
eHRTaXplQWRqdXN0KCkKK3sKKyAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBtX3N0YXRlLnN0eWxl
KCk7CisKKyAgICBpZiAoc3R5bGUtPnRleHRTaXplQWRqdXN0KCkuaXNBdXRvKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIEZvbnREZXNjcmlwdGlvbiBuZXdGb250RGVzY3JpcHRpb24oc3R5bGUt
PmZvbnREZXNjcmlwdGlvbigpKTsKKyAgICBpZiAoIXN0eWxlLT50ZXh0U2l6ZUFkanVzdCgpLmlz
Tm9uZSgpKQorICAgICAgICBuZXdGb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKG5ld0Zv
bnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCkgKiBzdHlsZS0+dGV4dFNpemVBZGp1c3QoKS5t
dWx0aXBsaWVyKCkpOworICAgIGVsc2UKKyAgICAgICAgbmV3Rm9udERlc2NyaXB0aW9uLnNldENv
bXB1dGVkU2l6ZShuZXdGb250RGVzY3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgpKTsKKyAgICBzdHls
ZS0+c2V0Rm9udERlc2NyaXB0aW9uKG5ld0ZvbnREZXNjcmlwdGlvbik7Cit9CisjZW5kaWYKKwog
dm9pZCBTdHlsZVJlc29sdmVyOjpjaGVja0Zvclpvb21DaGFuZ2UoUmVuZGVyU3R5bGUqIHN0eWxl
LCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpCiB7CiAgICAgaWYgKHN0eWxlLT5lZmZlY3RpdmVa
b29tKCkgPT0gcGFyZW50U3R5bGUtPmVmZmVjdGl2ZVpvb20oKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oCmluZGV4IDQ5MzRkN2RmY2M3ZWI2YTMwYjM4ODM3YmFmYjI5NDk4MTVkY2M4ZDku
LmNkMDE4ZmJmMzRhNTk3NjYwMmI0NGRhOTk3NDY4MTcyYzhiNjdiNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaApAQCAtMzU4LDYgKzM1OCw5IEBAIHByaXZhdGU6CiAgICAgLy8gVGhp
cyBmdW5jdGlvbiBmaXhlcyB1cCB0aGUgZGVmYXVsdCBmb250IHNpemUgaWYgaXQgZGV0ZWN0cyB0
aGF0IHRoZSBjdXJyZW50IGdlbmVyaWMgZm9udCBmYW1pbHkgaGFzIGNoYW5nZWQuIC1kd2gKICAg
ICB2b2lkIGNoZWNrRm9yR2VuZXJpY0ZhbWlseUNoYW5nZShSZW5kZXJTdHlsZSosIFJlbmRlclN0
eWxlKiBwYXJlbnRTdHlsZSk7CiAgICAgdm9pZCBjaGVja0Zvclpvb21DaGFuZ2UoUmVuZGVyU3R5
bGUqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOworI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRP
U0laSU5HKQorICAgIHZvaWQgY2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgpOworI2VuZGlmCiAKICAg
ICB2b2lkIGFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZVRvQWRqdXN0LCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUsIEVsZW1lbnQqKTsKICAgICB2b2lkIGFkanVzdEdyaWRJdGVt
UG9zaXRpb24oUmVuZGVyU3R5bGUqIHN0eWxlVG9BZGp1c3QpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggNDA2MjgyNWMyOThlNDM0YWM1MTUyMTk0MjliOWI5MWEwY2ZhZTg2MS4u
MzMzNTM1ZGQ2YTU1MWNjZGIxYTY0YjQ4ZTYzZjQ3MWNmY2RkZWQyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC0yMDcsNiArMjA3LDEwIEBACiAjaW5jbHVkZSAiU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5H
KQorI2luY2x1ZGUgIlRleHRBdXRvU2l6aW5nLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShURVhU
X0FVVE9TSVpJTkcpCiAjaW5jbHVkZSAiVGV4dEF1dG9zaXplci5oIgogI2VuZGlmCkBAIC0zODUs
NiArMzg5LDE4IEBAIHVpbnQ2NF90IERvY3VtZW50OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsK
IAogc3RhdGljIGNvbnN0IGRvdWJsZSB0aW1lQmVmb3JlVGhyb3dpbmdBd2F5U3R5bGVSZXNvbHZl
ckFmdGVyTGFzdFVzZUluU2Vjb25kcyA9IDMwOwogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9T
SVpJTkcpCit2b2lkIFRleHRBdXRvU2l6aW5nVHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUo
VGV4dEF1dG9TaXppbmdLZXkmIHNsb3QpCit7CisgICAgbmV3ICgmc2xvdCkgVGV4dEF1dG9TaXpp
bmdLZXkoVGV4dEF1dG9TaXppbmdLZXk6OmRlbGV0ZWRLZXlTdHlsZSgpLCBUZXh0QXV0b1Npemlu
Z0tleTo6ZGVsZXRlZEtleURvYygpKTsKK30KKworYm9vbCBUZXh0QXV0b1NpemluZ1RyYWl0czo6
aXNEZWxldGVkVmFsdWUoY29uc3QgVGV4dEF1dG9TaXppbmdLZXkmIHZhbHVlKQoreworICAgIHJl
dHVybiB2YWx1ZS5zdHlsZSgpID09IFRleHRBdXRvU2l6aW5nS2V5OjpkZWxldGVkS2V5U3R5bGUo
KSAmJiB2YWx1ZS5kb2MoKSA9PSBUZXh0QXV0b1NpemluZ0tleTo6ZGVsZXRlZEtleURvYygpOwor
fQorI2VuZGlmCisKIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwm
IHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgIDogQ29udGFpbmVyTm9kZSgwLCBD
cmVhdGVEb2N1bWVudCkKICAgICAsIFRyZWVTY29wZSh0aGlzKQpAQCAtMjExMiw2ICsyMTI4LDEy
IEBAIHZvaWQgRG9jdW1lbnQ6OmRldGFjaCgpCiAgICAgLy8gb3IgdGhpcyBzZXR0aW5nIG9mIHRo
ZSBmcmFtZSB0byAwIGNvdWxkIGJlIG1hZGUgZXhwbGljaXQgaW4gZWFjaCBvZiB0aGUKICAgICAv
LyBjYWxsZXJzIG9mIERvY3VtZW50OjpkZXRhY2goKS4KICAgICBtX2ZyYW1lID0gMDsKKworI2lm
IEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgIC8vIERvIHRoaXMgYmVmb3JlIHRoZSBh
cmVuYSBpcyBjbGVhcmVkLCB3aGljaCBpcyBuZWVkZWQgdG8gZGVyZWYgdGhlIFJlbmRlclN0eWxl
IG9uIFRleHRBdXRvU2l6aW5nS2V5LgorICAgIG1fdGV4dEF1dG9TaXplZE5vZGVzLmNsZWFyKCk7
CisjZW5kaWYKKwogICAgIG1fcmVuZGVyQXJlbmEuY2xlYXIoKTsKIAogICAgIGlmIChtX21lZGlh
UXVlcnlNYXRjaGVyKQpAQCAtNDcxNiw2ICs0NzM4LDU5IEBAIEhUTUxDYW52YXNFbGVtZW50KiBE
b2N1bWVudDo6Z2V0Q1NTQ2FudmFzRWxlbWVudChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0
dXJuIGVsZW1lbnQuZ2V0KCk7CiB9CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykK
K3ZvaWQgRG9jdW1lbnQ6OmFkZEF1dG9TaXppbmdOb2RlKE5vZGUqIG5vZGUsIGZsb2F0IGNhbmRp
ZGF0ZVNpemUpCit7CisgICAgVGV4dEF1dG9TaXppbmdLZXkga2V5KG5vZGUtPnJlbmRlcmVyKCkt
PnN0eWxlKCksICZkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8VGV4dEF1dG9TaXppbmdWYWx1ZT4g
dmFsdWU7CisKKyAgICAvLyBEbyB3ZSBhbHJlYWR5IGhhdmUgYSBjb2xsZWN0aW9uIG9mIG5vZGVz
IGFzc29jaWF0ZWQgd2l0aAorICAgIC8vIHRoaXMgc3R5bGU/IElmIG5vdCBjcmVhdGUgb25lLgor
ICAgIGlmIChtX3RleHRBdXRvU2l6ZWROb2Rlcy5jb250YWlucyhrZXkpKQorICAgICAgICB2YWx1
ZSA9IG1fdGV4dEF1dG9TaXplZE5vZGVzLmdldChrZXkpOworICAgIGVsc2UgeworICAgICAgICB2
YWx1ZSA9IFRleHRBdXRvU2l6aW5nVmFsdWU6OmNyZWF0ZSgpOworICAgICAgICBtX3RleHRBdXRv
U2l6ZWROb2Rlcy5zZXQoa2V5LCB2YWx1ZSk7CisgICAgfQorCisgICAgLy8gQWRkIHRoZSBub2Rl
IHRvIHRoZSBjb2xsZWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN0eWxlLgorICAgIHZhbHVl
LT5hZGROb2RlKG5vZGUsIGNhbmRpZGF0ZVNpemUpOworfQorCit2b2lkIERvY3VtZW50Ojp2YWxp
ZGF0ZUF1dG9TaXppbmdOb2RlcygpCit7CisgICAgVmVjdG9yPFRleHRBdXRvU2l6aW5nS2V5PiBu
b2Rlc0ZvclJlbW92YWw7CisgICAgVGV4dEF1dG9TaXppbmdNYXA6Oml0ZXJhdG9yIGVuZCA9IG1f
dGV4dEF1dG9TaXplZE5vZGVzLmVuZCgpOworICAgIGZvciAoVGV4dEF1dG9TaXppbmdNYXA6Oml0
ZXJhdG9yIGkgPSBtX3RleHRBdXRvU2l6ZWROb2Rlcy5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7
CisgICAgICAgIFRleHRBdXRvU2l6aW5nS2V5IGtleSA9IGktPmtleTsKKyAgICAgICAgUmVmUHRy
PFRleHRBdXRvU2l6aW5nVmFsdWU+IHZhbHVlID0gaS0+dmFsdWU7CisgICAgICAgIC8vIFVwZGF0
ZSBhbGwgdGhlIG5vZGVzIGluIHRoZSBjb2xsZWN0aW9uIHRvIHJlZmxlY3QgdGhlIG5ldworICAg
ICAgICAvLyBjYW5kaWRhdGUgc2l6ZS4KKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIHZhbHVlLT5hZGp1c3ROb2RlU2l6ZXMoKTsKKyAgICAgICAg
aWYgKCF2YWx1ZS0+bnVtTm9kZXMoKSkKKyAgICAgICAgICAgIG5vZGVzRm9yUmVtb3ZhbC5hcHBl
bmQoa2V5KTsKKyAgICB9CisgICAgdW5zaWduZWQgY291bnQgPSBub2Rlc0ZvclJlbW92YWwuc2l6
ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICBt
X3RleHRBdXRvU2l6ZWROb2Rlcy5yZW1vdmUobm9kZXNGb3JSZW1vdmFsW2ldKTsKK30KKyAgICAK
K3ZvaWQgRG9jdW1lbnQ6OnJlc2V0QXV0b1NpemluZ05vZGVzKCkKK3sKKyAgICBUZXh0QXV0b1Np
emluZ01hcDo6aXRlcmF0b3IgZW5kID0gbV90ZXh0QXV0b1NpemVkTm9kZXMuZW5kKCk7CisgICAg
Zm9yIChUZXh0QXV0b1NpemluZ01hcDo6aXRlcmF0b3IgaSA9IG1fdGV4dEF1dG9TaXplZE5vZGVz
LmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFRleHRBdXRvU2l6aW5n
VmFsdWU+IHZhbHVlID0gaS0+dmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAg
IHZhbHVlLT5yZXNldCgpOworICAgIH0KKyAgICBtX3RleHRBdXRvU2l6ZWROb2Rlcy5jbGVhcigp
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisKIHZvaWQgRG9j
dW1lbnQ6OmluaXRETlNQcmVmZXRjaCgpCiB7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gdGhp
cy0+c2V0dGluZ3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMmRlODkxMzU2NGJiMjUzYzI4
MWE3NDA2ZTVhNDcwZTQ3NTUwNDFmMy4uZDFiNmQzMjE0Y2M3MjQyODgwNzYzMmU1ZTgxYWM0ZjYz
N2I2NTE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE4OSw2ICsxODksMTggQEAgY2xhc3Mg
Rm9udExvYWRlcjsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAorI2lmIEVOQUJMRShJ
T1NfVEVYVF9BVVRPU0laSU5HKQorc3RydWN0IFRleHRBdXRvU2l6aW5nSGFzaDsKK2NsYXNzIFRl
eHRBdXRvU2l6aW5nS2V5OworY2xhc3MgVGV4dEF1dG9TaXppbmdWYWx1ZTsKKworc3RydWN0IFRl
eHRBdXRvU2l6aW5nVHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxUZXh0QXV0b1Npemlu
Z0tleT4geworICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwor
ICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUZXh0QXV0b1NpemluZ0tleSYg
c2xvdCk7CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgVGV4dEF1dG9TaXpp
bmdLZXkmIHZhbHVlKTsKK307CisjZW5kaWYKKwogZW51bSBQYWdlc2hvd0V2ZW50UGVyc2lzdGVu
Y2UgewogICAgIFBhZ2VzaG93RXZlbnROb3RQZXJzaXN0ZWQgPSAwLAogICAgIFBhZ2VzaG93RXZl
bnRQZXJzaXN0ZWQgPSAxCkBAIC0xNTAxLDYgKzE1MTMsMTcgQEAgcHJpdmF0ZToKICAgICBUaW1l
cjxEb2N1bWVudD4gbV9wZW5kaW5nVGFza3NUaW1lcjsKICAgICBWZWN0b3I8T3duUHRyPFRhc2s+
ID4gbV9wZW5kaW5nVGFza3M7CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKK3B1
YmxpYzoKKyAgICB2b2lkIGFkZEF1dG9TaXppbmdOb2RlKE5vZGUqLCBmbG9hdCBzaXplKTsKKyAg
ICB2b2lkIHZhbGlkYXRlQXV0b1NpemluZ05vZGVzKCk7CisgICAgdm9pZCByZXNldEF1dG9TaXpp
bmdOb2RlcygpOworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxUZXh0QXV0b1Npemlu
Z0tleSwgUmVmUHRyPFRleHRBdXRvU2l6aW5nVmFsdWU+LCBUZXh0QXV0b1NpemluZ0hhc2gsIFRl
eHRBdXRvU2l6aW5nVHJhaXRzPiBUZXh0QXV0b1NpemluZ01hcDsKKyAgICBUZXh0QXV0b1Npemlu
Z01hcCBtX3RleHRBdXRvU2l6ZWROb2RlczsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKICAgICBPd25QdHI8VGV4dEF1dG9zaXplcj4gbV90ZXh0QXV0b3NpemVyOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKaW5kZXggZmY5Y2Y2ZGUw
ZjdlZTQyMjVkODhkMzcwODA0Nzc3ZDg1NWI4Nzc2Ni4uMmUwNDg3YTNjYWYzNTkyZGIzODZmZDg1
ZDAwYTdhZjYwNmQwYWUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cApAQCAtNzYsNiArNzYsOSBAQCBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBlZGl0aW5nUHJv
cGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5V29yZFNwYWNpbmcsCiAgICAgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRGaWxsQ29sb3IsCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwKKyNlbmRpZgogICAgIENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZUNvbG9yLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKaW5kZXggM2UwZjNmYzZkZWM5MGFkYTVjN2FiN2NjOThkYzIzM2Q5YTgw
N2Q2Ni4uNDcyYjY3ZGJhOWVlMTU2YzNlZWQ5MGRiOWEwYWUzNzQ2YTIxNTQzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuaApAQCAtMTg0LDYgKzE4NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFN0cmluZyBzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJ
c0luQ2VsbEFib3ZlKTsKICAgICAgICAgU3RyaW5nIG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgRWxlbWVudCopOwogCisjaWYgRU5BQkxFKElP
U19URVhUX0FVVE9TSVpJTkcpCisgICAgICAgIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdXaWR0aChm
bG9hdCk7CisgICAgICAgIGZsb2F0IHRleHRBdXRvc2l6aW5nV2lkdGgoKSBjb25zdDsKKyNlbmRp
ZgorCiAgICAgICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7
CiAgICAgICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAg
ICAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCA+
IDA7IH0KQEAgLTIxNSw2ICsyMjAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBj
b25zdCBPd25QdHI8RXZlbnRIYW5kbGVyPiBtX2V2ZW50SGFuZGxlcjsKICAgICAgICAgY29uc3Qg
T3duUHRyPEFuaW1hdGlvbkNvbnRyb2xsZXI+IG1fYW5pbWF0aW9uQ29udHJvbGxlcjsKIAorI2lm
IEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICAgICBmbG9hdCBtX3RleHRBdXRvc2l6
aW5nV2lkdGg7CisjZW5kaWYKKwogICAgICAgICBmbG9hdCBtX3BhZ2Vab29tRmFjdG9yOwogICAg
ICAgICBmbG9hdCBtX3RleHRab29tRmFjdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
aW5kZXggODZkODFiM2RkYjRhZWM2ODc3MzgyNzE4N2MyNGU4MWQzYWMzZjQxMy4uN2VkNTFlZGQy
NjA3ZGY4YTVjMjdjN2M2MzFiZmY5NjkxMGNhYTMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcApAQCAtMTI3Niw2ICsxMjc2LDE2IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBh
bGxvd1N1YnRyZWUpCiAgICAgICAgICAgICBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsKICAgICAg
ICAgICAgIGZvcmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKCk7CiAgICAgICAgICAgICByb290
LT5sYXlvdXQoKTsKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICAgICAgICAg
IGZsb2F0IG1pblpvb21Gb250U2l6ZSA9IGZyYW1lKCkuc2V0dGluZ3MoKS5taW5pbXVtWm9vbUZv
bnRTaXplKCk7CisgICAgICAgICAgICBmbG9hdCB2aXNXaWR0aCA9IGZyYW1lKCkucGFnZSgpLT5t
YWluRnJhbWUoKS50ZXh0QXV0b3NpemluZ1dpZHRoKCk7CisgICAgICAgICAgICBpZiAobWluWm9v
bUZvbnRTaXplICYmIHZpc1dpZHRoICYmICFyb290LT52aWV3KCkucHJpbnRpbmcoKSkgeworICAg
ICAgICAgICAgICAgIHJvb3QtPmFkanVzdENvbXB1dGVkRm9udFNpemVzT25CbG9ja3MobWluWm9v
bUZvbnRTaXplLCB2aXNXaWR0aCk7ICAgIAorICAgICAgICAgICAgICAgIGJvb2wgbmVlZHNMYXlv
dXQgPSByb290LT5uZWVkc0xheW91dCgpOworICAgICAgICAgICAgICAgIGlmIChuZWVkc0xheW91
dCkKKyAgICAgICAgICAgICAgICAgICAgcm9vdC0+bGF5b3V0KCk7CisgICAgICAgICAgICB9Cisj
ZW5kaWYKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgICAgICAgICAgYm9vbCBhdXRv
c2l6ZWQgPSBkb2N1bWVudC0+dGV4dEF1dG9zaXplcigpLT5wcm9jZXNzU3VidHJlZShyb290KTsK
ICAgICAgICAgICAgIGlmIChhdXRvc2l6ZWQgJiYgcm9vdC0+bmVlZHNMYXlvdXQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmluCmluZGV4IDk0OGU3YWJlYjExMWE5NjA3MjE1NjFiZTQ2NjE0MTU0YjVi
MWFhZDYuLmJhM2JiMjg1NGIyZDliM2ZiNGZlMzM4Y2QzYzUzMDVjNWY0ZDI1YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5pbgpAQCAtMjAwLDMgKzIwMCw1IEBAIHNlbGVjdFRyYWlsaW5nV2hpdGVz
cGFjZUVuYWJsZWQgaW5pdGlhbD1kZWZhdWx0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZAogCiBzZWxlY3Rpb25JbmNsdWRlc0FsdEltYWdlVGV4dCBpbml0aWFsPXRydWUKIHVzZUxlZ2Fj
eUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgaW5pdGlhbD1mYWxzZQorCittaW5pbXVt
Wm9vbUZvbnRTaXplIHR5cGU9ZmxvYXQsIGluaXRpYWw9MTUsIGNvbmRpdGlvbmFsPUlPU19URVhU
X0FVVE9TSVpJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCAy
OGQ0OWI2NmE0MThiYWViZmVjNjNmZDljMDRjZmZmMmUwYThmZDgzLi45ODA0MWYwNTQzZjhmNTRm
ZmM4MzdkYjYyZTlmODE1OTAzZWM0ODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCkBAIC0yMTQsNiArMjE0LDE1IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OwogCiBwdWJsaWM6CisjaWYgRU5BQkxFKElPU19U
RVhUX0FVVE9TSVpJTkcpCisgICAgYm9vbCBlcXVhbEZvclRleHRBdXRvU2l6aW5nKGNvbnN0IEZv
bnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9u
LmVxdWFsRm9yVGV4dEF1dG9TaXppbmcob3RoZXIubV9mb250RGVzY3JpcHRpb24pCisgICAgICAg
ICAgICAmJiBtX2xldHRlclNwYWNpbmcgPT0gb3RoZXIubV9sZXR0ZXJTcGFjaW5nCisgICAgICAg
ICAgICAmJiBtX3dvcmRTcGFjaW5nID09IG90aGVyLm1fd29yZFNwYWNpbmc7CisgICAgfQorI2Vu
ZGlmCisKICAgICAvLyBVc2VmdWwgZm9yIGRlYnVnZ2luZyB0aGUgZGlmZmVyZW50IGZvbnQgcmVu
ZGVyaW5nIGNvZGUgcGF0aHMuCiAgICAgc3RhdGljIHZvaWQgc2V0Q29kZVBhdGgoQ29kZVBhdGgp
OwogICAgIHN0YXRpYyBDb2RlUGF0aCBjb2RlUGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAKaW5kZXggMzQ4N2ZmMDRh
ZTI5NGVhNTNhZmNlYTVmMzEzNmMxZWYwMmM3ZmI2MS4uNDRiZjM5ZWNjYjllY2JhYTE4YmFkZWVl
MWU0OWJkYjg5YmQ2M2EyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCkBAIC0xMTYsNCArMTE2LDIyIEBAIEZvbnREZXNj
cmlwdGlvbiBGb250RGVzY3JpcHRpb246Om1ha2VOb3JtYWxGZWF0dXJlU2V0dGluZ3MoKSBjb25z
dAogICAgIHJldHVybiBub3JtYWxEZXNjcmlwdGlvbjsKIH0KIAorI2lmIEVOQUJMRShJT1NfVEVY
VF9BVVRPU0laSU5HKQorYm9vbCBGb250RGVzY3JpcHRpb246OmZhbWlsaWVzRXF1YWxGb3JUZXh0
QXV0b1NpemluZyhjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdAoreworICAgIHVu
c2lnbmVkIHRoaXNGYW1pbHlDb3VudCA9IGZhbWlseUNvdW50KCk7CisgICAgdW5zaWduZWQgb3Ro
ZXJGYW1pbHlDb3VudCA9IG90aGVyLmZhbWlseUNvdW50KCk7CisKKyAgICBpZiAodGhpc0ZhbWls
eUNvdW50ICE9IG90aGVyRmFtaWx5Q291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0aGlzRmFtaWx5Q291bnQ7ICsraSkgeworICAgICAg
ICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGZhbWlseUF0KGkpLCBvdGhlci5mYW1pbHlBdChpKSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisjZW5kaWYgLy8gRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERl
c2NyaXB0aW9uLmgKaW5kZXggYjFhYmFlZTc3YTE5ZmI2ODZiMmZlOGJkNTE5MGE5YjM2M2E4Nzc0
Zi4uNjg3ODI3NjBlYjQwYzgwZWY4OGRiYjZlMzlhZWZlMzQ0YzUxZjQ2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTE2
OCw2ICsxNjgsMjAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2NyaXB0KFVTY3JpcHRDb2RlIHMp
IHsgbV9zY3JpcHQgPSBzOyB9CiAgICAgdm9pZCBzZXRGZWF0dXJlU2V0dGluZ3MoUGFzc1JlZlB0
cjxGb250RmVhdHVyZVNldHRpbmdzPiBzZXR0aW5ncykgeyBtX2ZlYXR1cmVTZXR0aW5ncyA9IHNl
dHRpbmdzOyB9CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBib29sIGZh
bWlsaWVzRXF1YWxGb3JUZXh0QXV0b1NpemluZyhjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVy
KSBjb25zdDsKKworICAgIGJvb2wgZXF1YWxGb3JUZXh0QXV0b1NpemluZyhjb25zdCBGb250RGVz
Y3JpcHRpb24mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbWlsaWVzRXF1
YWxGb3JUZXh0QXV0b1NpemluZyhvdGhlcikKKyAgICAgICAgICAgICYmIG1fc3BlY2lmaWVkU2l6
ZSA9PSBvdGhlci5tX3NwZWNpZmllZFNpemUKKyAgICAgICAgICAgICYmIG1fc21hbGxDYXBzID09
IG90aGVyLm1fc21hbGxDYXBzCisgICAgICAgICAgICAmJiBtX2lzQWJzb2x1dGVTaXplID09IG90
aGVyLm1faXNBYnNvbHV0ZVNpemUKKyAgICAgICAgICAgICYmIG1fZ2VuZXJpY0ZhbWlseSA9PSBv
dGhlci5tX2dlbmVyaWNGYW1pbHkKKyAgICAgICAgICAgICYmIG1fdXNlUHJpbnRlckZvbnQgPT0g
b3RoZXIubV91c2VQcmludGVyRm9udDsKKyAgICB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBW
ZWN0b3I8QXRvbWljU3RyaW5nLCAxPiBtX2ZhbWlsaWVzOwogICAgIFJlZlB0cjxGb250RmVhdHVy
ZVNldHRpbmdzPiBtX2ZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IDE2YmY3Y2VlZDA5NjlhZDA0MDY0ODlhNWY1NTUyOGYzNmU4OThm
OGQuLjk2MmQyMmNkMmEzNTIzYzViOGYwNDVmNDUwYTlmMmQyYzQxOTNiYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNzAsNiArNzAsMTAgQEAKICNpbmNs
dWRlICJTaGFwZU91dHNpZGVJbmZvLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9B
VVRPU0laSU5HKQorI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29k
ZTsKQEAgLTIwMSw2ICsyMDUsMTAgQEAgUmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgLCBtX2JlaW5nRGVzdHJveWVkKGZhbHNlKQogICAgICwgbV9oYXNNYXJr
dXBUcnVuY2F0aW9uKGZhbHNlKQogICAgICwgbV9oYXNCb3JkZXJPclBhZGRpbmdMb2dpY2FsV2lk
dGhDaGFuZ2VkKGZhbHNlKQorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICwg
bV93aWR0aEZvclRleHRBdXRvc2l6aW5nKC0xKQorICAgICwgbV9saW5lQ291bnRGb3JUZXh0QXV0
b3NpemluZyhOT1RfU0VUKQorI2VuZGlmCiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7
CiAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRlckJsb2NrOjpGbG9hdGluZ09iamVjdCkg
PT0gc2l6ZW9mKFNhbWVTaXplQXNGbG9hdGluZ09iamVjdCksIEZsb2F0aW5nT2JqZWN0X3Nob3Vs
ZF9zdGF5X3NtYWxsKTsKQEAgLTgxNDQsNCArODE1MiwxMjcgQEAgU3RyaW5nIFZhbHVlVG9TdHJp
bmc8UmVuZGVyQmxvY2s6OkZsb2F0aW5nT2JqZWN0Kj46OnN0cmluZyhjb25zdCBSZW5kZXJCbG9j
azo6RmwKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKworI2Rl
ZmluZSBQYXJhZ3JhcGhNaW5Xb3JkQ291bnQgNgorI2RlZmluZSBQYXJhZ3JhcGhNaW5MaW5lQ291
bnQgMgorI2RlZmluZSBQYXJhZ3JhcGhNYXhXaWR0aCAgICAgMC45CisKK2lubGluZSBzdGF0aWMg
Ym9vbCBpc1Zpc2libGVSZW5kZXJUZXh0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAg
aWYgKCFyZW5kZXJlci0+aXNUZXh0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBSZW5k
ZXJUZXh0KiByZW5kZXJUZXh0ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKTsKKyAgICByZXR1cm4g
IXJlbmRlclRleHQtPmxpbmVzQm91bmRpbmdCb3goKS5pc0VtcHR5KCkgJiYgIXJlbmRlclRleHQt
PnRleHQoKS0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOworfQorCitpbmxpbmUgc3RhdGljIGJv
b2wgcmVzaXplVGV4dFBlcm1pdHRlZChSZW5kZXJPYmplY3QqIHJlbmRlcikKK3sKKyAgICAvLyBX
ZSBkaXNhbGxvdyByZXNpemluZyBmb3IgdGV4dCBpbnB1dCBmaWVsZHMgYW5kIHRleHRhcmVhIHRv
IGFkZHJlc3MgPHJkYXI6Ly9wcm9ibGVtLzU3OTI5ODc+IGFuZCA8cmRhcjovL3Byb2JsZW0vODAy
MTEyMz4KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcmVuZGVyLT5wYXJlbnQoKTsKKyAg
ICB3aGlsZSAocmVuZGVyZXIpIHsKKyAgICAgICAgLy8gR2V0IHRoZSBmaXJzdCBub24tc2hhZG93
IEhUTUxFbGVtZW50IGFuZCBzZWUgaWYgaXQncyBhbiBpbnB1dC4KKyAgICAgICAgaWYgKHJlbmRl
cmVyLT5ub2RlKCkgJiYgcmVuZGVyZXItPm5vZGUoKS0+aXNIVE1MRWxlbWVudCgpICYmICFyZW5k
ZXJlci0+bm9kZSgpLT5pc0luU2hhZG93VHJlZSgpKSB7CisgICAgICAgICAgICBIVE1MRWxlbWVu
dCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQocmVuZGVyZXItPm5vZGUoKSk7CisgICAgICAgICAg
ICByZXR1cm4gIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpICYmICFlbGVtZW50LT5oYXNU
YWdOYW1lKHRleHRhcmVhVGFnKTsKKyAgICAgICAgfQorICAgICAgICByZW5kZXJlciA9IHJlbmRl
cmVyLT5wYXJlbnQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2ludCBSZW5kZXJC
bG9jazo6aW1tZWRpYXRlTGluZUNvdW50KCkKK3sKKyAgICAvLyBDb3BpZWQgYW5kIG1vZGlmaWVk
IGZyb20gUmVuZGVyQmxvY2s6OmxpbmVDb3VudC4KKyAgICAvLyBPbmx5IGRlc2NlbmQgaW50byBs
aXN0IGl0ZW1zLgorICAgIGludCBjb3VudCA9IDA7CisgICAgaWYgKHN0eWxlKCktPnZpc2liaWxp
dHkoKSA9PSBWSVNJQkxFKSB7CisgICAgICAgIGlmIChjaGlsZHJlbklubGluZSgpKSB7CisgICAg
ICAgICAgICBmb3IgKFJvb3RJbmxpbmVCb3gqIGJveCA9IGZpcnN0Um9vdEJveCgpOyBib3g7IGJv
eCA9IGJveC0+bmV4dFJvb3RCb3goKSkKKyAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIG9iaiA9IGZpcnN0Q2hp
bGQoKTsgb2JqOyBvYmogPSBvYmotPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAob2JqLT5pc0xpc3RJdGVtKCkpCisgICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IHRvUmVu
ZGVyQmxvY2sob2JqKS0+bGluZUNvdW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgYm9vbCBpc05vbkJsb2Nrc09yTm9u
Rml4ZWRIZWlnaHRMaXN0SXRlbXMoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXIpCit7CisgICAg
aWYgKCFyZW5kZXItPmlzUmVuZGVyQmxvY2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKHJlbmRlci0+aXNMaXN0SXRlbSgpKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9
IHJlbmRlci0+c3R5bGUoKTsKKyAgICAgICAgcmV0dXJuIHN0eWxlICYmIHN0eWxlLT5oZWlnaHQo
KS50eXBlKCkgIT0gRml4ZWQ7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gIEZv
ciBub3csIHdlIGF1dG8gc2l6ZSBzaW5nbGUgbGluZXMgb2YgdGV4dCB0aGUgc2FtZSBhcyBtdWx0
aXBsZSBsaW5lcy4KKy8vICBXZSd2ZSBiZWVuIGV4cGVyaW1lbnRpbmcgd2l0aCBsb3cgdmFsdWVz
IGZvciBzaW5nbGUgbGluZXMgb2YgdGV4dC4KK3N0YXRpYyBpbmxpbmUgZmxvYXQgb25lTGluZVRl
eHRNdWx0aXBsaWVyKGZsb2F0IHNwZWNpZmllZFNpemUpCit7CisgICAgcmV0dXJuIG1heCgoMS4w
ZiAvIGxvZzEwZihzcGVjaWZpZWRTaXplKSAqIDEuN2YpLCAxLjBmKTsKK30KKworc3RhdGljIGlu
bGluZSBmbG9hdCB0ZXh0TXVsdGlwbGllcihmbG9hdCBzcGVjaWZpZWRTaXplKQoreworICAgIHJl
dHVybiBtYXgoKDEuMGYgLyBsb2cxMGYoc3BlY2lmaWVkU2l6ZSkgKiAxLjk1ZiksIDEuMGYpOwor
fQorCit2b2lkIFJlbmRlckJsb2NrOjphZGp1c3RDb21wdXRlZEZvbnRTaXplcyhmbG9hdCBzaXpl
LCBmbG9hdCB2aXNpYmxlV2lkdGgpCit7CisgICAgLy8gRG9uJ3QgZG8gYW55IHdvcmsgaWYgdGhl
IGJsb2NrIGlzIHNtYWxsZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLgorICAgIGlmICh2aXNpYmxl
V2lkdGggPj0gd2lkdGgoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgbGluZUNv
dW50OworICAgIGlmIChtX2xpbmVDb3VudEZvclRleHRBdXRvc2l6aW5nID09IE5PVF9TRVQpIHsK
KyAgICAgICAgaW50IGNvdW50ID0gaW1tZWRpYXRlTGluZUNvdW50KCk7CisgICAgICAgIGlmICgh
Y291bnQpCisgICAgICAgICAgICBsaW5lQ291bnQgPSBOT19MSU5FOworICAgICAgICBlbHNlIGlm
IChjb3VudCA9PSAxKQorICAgICAgICAgICAgbGluZUNvdW50ID0gT05FX0xJTkU7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGxpbmVDb3VudCA9IE1VTFRJX0xJTkU7CisgICAgfSBlbHNlCisg
ICAgICAgIGxpbmVDb3VudCA9IG1fbGluZUNvdW50Rm9yVGV4dEF1dG9zaXppbmc7CisKKyAgICBB
U1NFUlQobGluZUNvdW50ICE9IE5PVF9TRVQpOworICAgIGlmIChsaW5lQ291bnQgPT0gTk9fTElO
RSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgYWN0dWFsV2lkdGggPSBtX3dpZHRoRm9y
VGV4dEF1dG9zaXppbmcgIT0gLTEgPyBzdGF0aWNfY2FzdDxmbG9hdD4obV93aWR0aEZvclRleHRB
dXRvc2l6aW5nKSA6IHN0YXRpY19jYXN0PGZsb2F0Pih3aWR0aCgpKTsKKyAgICBmbG9hdCBzY2Fs
ZSA9IHZpc2libGVXaWR0aCAvIGFjdHVhbFdpZHRoOworICAgIGZsb2F0IG1pbkZvbnRTaXplID0g
cm91bmRmKHNpemUgLyBzY2FsZSk7ICAgCisKKyAgICBmb3IgKFJlbmRlck9iamVjdCogZGVzY2Vu
ZGVudCA9IHRyYXZlcnNlTmV4dCh0aGlzLCBpc05vbkJsb2Nrc09yTm9uRml4ZWRIZWlnaHRMaXN0
SXRlbXMpOyBkZXNjZW5kZW50OyBkZXNjZW5kZW50ID0gZGVzY2VuZGVudC0+dHJhdmVyc2VOZXh0
KHRoaXMsIGlzTm9uQmxvY2tzT3JOb25GaXhlZEhlaWdodExpc3RJdGVtcykpIHsKKyAgICAgICAg
aWYgKGlzVmlzaWJsZVJlbmRlclRleHQoZGVzY2VuZGVudCkgJiYgcmVzaXplVGV4dFBlcm1pdHRl
ZChkZXNjZW5kZW50KSkgeworICAgICAgICAgICAgUmVuZGVyVGV4dCogdGV4dCA9IHRvUmVuZGVy
VGV4dChkZXNjZW5kZW50KTsKKyAgICAgICAgICAgIFJlbmRlclN0eWxlKiBvbGRTdHlsZSA9IHRl
eHQtPnN0eWxlKCk7CisgICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9u
ID0gb2xkU3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICAgICAgZmxvYXQgc3BlY2lm
aWVkU2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCk7CisgICAgICAgICAgICBm
bG9hdCBzY2FsZWRTaXplID0gcm91bmRmKHNwZWNpZmllZFNpemUgKiBzY2FsZSk7CisgICAgICAg
ICAgICBpZiAoc2NhbGVkU2l6ZSA+IDAgJiYgc2NhbGVkU2l6ZSA8IG1pbkZvbnRTaXplKSB7Cisg
ICAgICAgICAgICAgICAgLy8gUmVjb3JkIHRoZSB3aWR0aCBvZiB0aGUgYmxvY2sgYW5kIHRoZSBs
aW5lIGNvdW50IHRoZSBmaXJzdCB0aW1lIHdlIHJlc2l6ZSB0ZXh0IGFuZCB1c2UgaXQgZnJvbSB0
aGVuIG9uIGZvciB0ZXh0IHJlc2l6aW5nLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgbWFrZXMg
dGV4dCByZXNpemluZyBjb25zaXN0ZW50IGV2ZW4gaWYgdGhlIGJsb2NrJ3Mgd2lkdGggb3IgbGlu
ZSBjb3VudCBjaGFuZ2VzICh3aGljaCBjYW4gYmUgY2F1c2VkIGJ5IHRleHQgcmVzaXppbmcgaXRz
ZWxmIDUxNTk5MTUpLgorICAgICAgICAgICAgICAgIGlmIChtX2xpbmVDb3VudEZvclRleHRBdXRv
c2l6aW5nID09IE5PVF9TRVQpCisgICAgICAgICAgICAgICAgICAgIG1fbGluZUNvdW50Rm9yVGV4
dEF1dG9zaXppbmcgPSBsaW5lQ291bnQ7CisgICAgICAgICAgICAgICAgaWYgKG1fd2lkdGhGb3JU
ZXh0QXV0b3NpemluZyA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgbV93aWR0aEZvclRleHRB
dXRvc2l6aW5nID0gYWN0dWFsV2lkdGg7CisKKyAgICAgICAgICAgICAgICBmbG9hdCBjYW5kaWRh
dGVOZXdTaXplID0gMDsKKyAgICAgICAgICAgICAgICBmbG9hdCBsaW5lVGV4dE11bHRpcGxpZXIg
PSBsaW5lQ291bnQgPT0gT05FX0xJTkUgPyBvbmVMaW5lVGV4dE11bHRpcGxpZXIoc3BlY2lmaWVk
U2l6ZSkgOiB0ZXh0TXVsdGlwbGllcihzcGVjaWZpZWRTaXplKTsKKyAgICAgICAgICAgICAgICBj
YW5kaWRhdGVOZXdTaXplID0gcm91bmRmKG1pbihtaW5Gb250U2l6ZSwgc3BlY2lmaWVkU2l6ZSAq
IGxpbmVUZXh0TXVsdGlwbGllcikpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGVOZXdT
aXplID4gc3BlY2lmaWVkU2l6ZSAmJiBjYW5kaWRhdGVOZXdTaXplICE9IGZvbnREZXNjcmlwdGlv
bi5jb21wdXRlZFNpemUoKSAmJiB0ZXh0LT5ub2RlKCkgJiYgKCFvbGRTdHlsZSB8fCBvbGRTdHls
ZS0+dGV4dFNpemVBZGp1c3QoKS5pc0F1dG8oKSkpCisgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50KCkuYWRkQXV0b1NpemluZ05vZGUodGV4dC0+bm9kZSgpLCBjYW5kaWRhdGVOZXdTaXplKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKyNlbmRpZiAvLyBFTkFCTEUoSU9T
X1RFWFRfQVVUT1NJWklORykKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBjM2EwOTNmMGVjMjcyZTdkOGQwZGExZmE3Yjgw
OWI1MWMyMzVkYTg4Li4zZTViZGVlOWU1MTJlNWMzYmZlZTFkMjY3ZDZiZjdmYmRkYjczMzA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNzMsNiArNzMsMTIgQEAg
dHlwZWRlZiBWZWN0b3I8V29yZE1lYXN1cmVtZW50LCA2ND4gV29yZE1lYXN1cmVtZW50czsKIGVu
dW0gQ2FyZXRUeXBlIHsgQ3Vyc29yQ2FyZXQsIERyYWdDYXJldCB9OwogZW51bSBDb250YWluaW5n
QmxvY2tTdGF0ZSB7IE5ld0NvbnRhaW5pbmdCbG9jaywgU2FtZUNvbnRhaW5pbmdCbG9jayB9Owog
CisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCitlbnVtIExpbmVDb3VudCB7CisgICAg
Tk9UX1NFVCA9IDAsIE5PX0xJTkUgPSAxLCBPTkVfTElORSA9IDIsIE1VTFRJX0xJTkUgPSAzCit9
OworI2VuZGlmCisKIGVudW0gVGV4dFJ1bkZsYWcgewogICAgIERlZmF1bHRUZXh0UnVuRmxhZ3Mg
PSAwLAogICAgIFJlc3BlY3REaXJlY3Rpb24gPSAxIDw8IDAsCkBAIC00NTEsNiArNDU3LDE2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNob3dMaW5lVHJlZUFuZE1hcmsoY29uc3QgSW5saW5lQm94KiA9
IDAsIGNvbnN0IGNoYXIqID0gMCwgY29uc3QgSW5saW5lQm94KiA9IDAsIGNvbnN0IGNoYXIqID0g
MCwgY29uc3QgUmVuZGVyT2JqZWN0KiA9IDApIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
SU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBpbnQgaW1tZWRpYXRlTGluZUNvdW50KCk7CisgICAg
dm9pZCBhZGp1c3RDb21wdXRlZEZvbnRTaXplcyhmbG9hdCBzaXplLCBmbG9hdCB2aXNpYmxlV2lk
dGgpOworICAgIHZvaWQgcmVzZXRDb21wdXRlZEZvbnRTaXplKCkKKyAgICB7CisgICAgICAgIG1f
d2lkdGhGb3JUZXh0QXV0b3NpemluZyA9IC0xOworICAgICAgICBtX2xpbmVDb3VudEZvclRleHRB
dXRvc2l6aW5nID0gTk9UX1NFVDsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShDU1NfU0hB
UEVTKQogICAgIFNoYXBlSW5zaWRlSW5mbyogZW5zdXJlU2hhcGVJbnNpZGVJbmZvKCkKICAgICB7
CkBAIC0xMzQyLDYgKzEzNTgsMTEgQEAgcHJvdGVjdGVkOgogICAgIHVuc2lnbmVkIG1faGFzTWFy
a3VwVHJ1bmNhdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNCb3JkZXJPclBhZGRpbmdMb2dp
Y2FsV2lkdGhDaGFuZ2VkIDogMTsKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQor
ICAgIGludCBtX3dpZHRoRm9yVGV4dEF1dG9zaXppbmc7CisgICAgdW5zaWduZWQgbV9saW5lQ291
bnRGb3JUZXh0QXV0b3NpemluZyA6IDI7CisjZW5kaWYKKyAgICAKICAgICAvLyBSZW5kZXJSdWJ5
QmFzZSBvYmplY3RzIG5lZWQgdG8gYmUgYWJsZSB0byBzcGxpdCBhbmQgbWVyZ2UsIG1vdmluZyB0
aGVpciBjaGlsZHJlbiBhcm91bmQKICAgICAvLyAoY2FsbGluZyBtb3ZlQ2hpbGRUbywgbW92ZUFs
bENoaWxkcmVuVG8sIGFuZCBtYWtlQ2hpbGRyZW5Ob25JbmxpbmUpLgogICAgIGZyaWVuZCBjbGFz
cyBSZW5kZXJSdWJ5QmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKaW5kZXggNTI1NmUxNzZmYWVkOTE3ZWFiZWU1MGZmZDYwMWRhYTAzNDRlNGZmZS4uMmQ3NWY5
Y2Q3NzlhZjFkNWI1OGU2NTc1ODI3ZTcwMjZjNTFiZTMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQ3OSw2ICs0NzksMTkyIEBAIFJlbmRlck9iamVj
dCogUmVuZGVyT2JqZWN0OjpsYXN0TGVhZkNoaWxkKCkgY29uc3QKICAgICByZXR1cm4gcjsKIH0K
IAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorLy8gSW5zcGlyZWQgYnkgTm9kZTo6
dHJhdmVyc2VOZXh0Tm9kZS4KK1JlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5l
eHQoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluKSBjb25zdAoreworICAgIGlmIChmaXJz
dENoaWxkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IGZpcnN0Q2hpbGQoKS0+
aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOworICAgICAgICByZXR1cm4gZmlyc3RDaGlsZCgp
OworICAgIH0KKyAgICBpZiAodGhpcyA9PSBzdGF5V2l0aGluKQorICAgICAgICByZXR1cm4gMDsK
KyAgICBpZiAobmV4dFNpYmxpbmcoKSkgeworICAgICAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwg
bmV4dFNpYmxpbmcoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOworICAgICAgICByZXR1
cm4gbmV4dFNpYmxpbmcoKTsKKyAgICB9CisgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBuID0gdGhp
czsKKyAgICB3aGlsZSAobiAmJiAhbi0+bmV4dFNpYmxpbmcoKSAmJiAoIXN0YXlXaXRoaW4gfHwg
bi0+cGFyZW50KCkgIT0gc3RheVdpdGhpbikpCisgICAgICAgIG4gPSBuLT5wYXJlbnQoKTsKKyAg
ICBpZiAobikgeworICAgICAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgIW4tPm5leHRTaWJsaW5n
KCkgfHwgbi0+bmV4dFNpYmxpbmcoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOworICAg
ICAgICByZXR1cm4gbi0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK
Ky8vIE5vbi1yZWN1cnNpdmUgdmVyc2lvbiBvZiB0aGUgREZTIHNlYXJjaC4KK1JlbmRlck9iamVj
dCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0
aGluLCBIZWlnaHRUeXBlVHJhdmVyc2VOZXh0SW5jbHVzaW9uRnVuY3Rpb24gaW5jbHVzaW9uRnVu
Y3Rpb24sIGludCYgY3VycmVudERlcHRoLCBpbnQmIG5ld0ZpeGVkRGVwdGgpIGNvbnN0Cit7Cisg
ICAgQmxvY2tDb250ZW50SGVpZ2h0VHlwZSBvdmVyZmxvd1R5cGU7CisKKyAgICAvLyBDaGVjayBm
b3Igc3VpdGFibGUgY2hpbGRyZW4uCisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAg
ICBvdmVyZmxvd1R5cGUgPSBpbmNsdXNpb25GdW5jdGlvbihjaGlsZCk7CisgICAgICAgIGlmIChv
dmVyZmxvd1R5cGUgIT0gRml4ZWRIZWlnaHQpIHsKKyAgICAgICAgICAgIGN1cnJlbnREZXB0aCsr
OworICAgICAgICAgICAgaWYgKG92ZXJmbG93VHlwZSA9PSBPdmVyZmxvd0hlaWdodCkKKyAgICAg
ICAgICAgICAgICBuZXdGaXhlZERlcHRoID0gY3VycmVudERlcHRoOworICAgICAgICAgICAgQVNT
RVJUKCFzdGF5V2l0aGluIHx8IGNoaWxkLT5pc0Rlc2NlbmRhbnRPZihzdGF5V2l0aGluKSk7Cisg
ICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodGhp
cyA9PSBzdGF5V2l0aGluKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIE5vdyB3ZSB0cmF2
ZXJzZSBvdGhlciBub2RlcyBpZiB0aGV5IGV4aXN0LCBvdGhlcndpc2UKKyAgICAvLyB3ZSBnbyB0
byB0aGUgcGFyZW50IG5vZGUgYW5kIHRyeSBkb2luZyB0aGUgc2FtZS4KKyAgICBjb25zdCBSZW5k
ZXJPYmplY3QqIG4gPSB0aGlzOworICAgIHdoaWxlIChuKSB7CisgICAgICAgIHdoaWxlIChuICYm
ICFuLT5uZXh0U2libGluZygpICYmICghc3RheVdpdGhpbiB8fCBuLT5wYXJlbnQoKSAhPSBzdGF5
V2l0aGluKSkgeworICAgICAgICAgICAgbiA9IG4tPnBhcmVudCgpOworICAgICAgICAgICAgY3Vy
cmVudERlcHRoLS07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFuKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBzaWJsaW5nID0gbi0+bmV4dFNpYmxp
bmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRTaWJsaW5nKCkpIHsKKyAgICAg
ICAgICAgIG92ZXJmbG93VHlwZSA9IGluY2x1c2lvbkZ1bmN0aW9uKHNpYmxpbmcpOworICAgICAg
ICAgICAgaWYgKG92ZXJmbG93VHlwZSAhPSBGaXhlZEhlaWdodCkgeworICAgICAgICAgICAgICAg
IGlmIChvdmVyZmxvd1R5cGUgPT0gT3ZlcmZsb3dIZWlnaHQpCisgICAgICAgICAgICAgICAgICAg
IG5ld0ZpeGVkRGVwdGggPSBjdXJyZW50RGVwdGg7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFz
dGF5V2l0aGluIHx8ICFuLT5uZXh0U2libGluZygpIHx8IG4tPm5leHRTaWJsaW5nKCktPmlzRGVz
Y2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2libGluZzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXN0YXlXaXRoaW4gfHwgbi0+
cGFyZW50KCkgIT0gc3RheVdpdGhpbikgeworICAgICAgICAgICAgbiA9IG4tPnBhcmVudCgpOwor
ICAgICAgICAgICAgY3VycmVudERlcHRoLS07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitSZW5kZXJPYmplY3QqIFJlbmRl
ck9iamVjdDo6dHJhdmVyc2VOZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbiwgVHJh
dmVyc2VOZXh0SW5jbHVzaW9uRnVuY3Rpb24gaW5jbHVzaW9uRnVuY3Rpb24pIGNvbnN0Cit7Cisg
ICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoaW5jbHVzaW9uRnVuY3Rpb24o
Y2hpbGQpKSB7CisgICAgICAgICAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgY2hpbGQtPmlzRGVz
Y2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmICh0aGlzID09IHN0YXlXaXRoaW4pCisgICAgICAgIHJldHVy
biAwOworCisgICAgZm9yIChSZW5kZXJPYmplY3QqIHNpYmxpbmcgPSBuZXh0U2libGluZygpOyBz
aWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAo
aW5jbHVzaW9uRnVuY3Rpb24oc2libGluZykpIHsKKyAgICAgICAgICAgIEFTU0VSVCghc3RheVdp
dGhpbiB8fCBzaWJsaW5nLT5pc0Rlc2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CisgICAgICAgICAg
ICByZXR1cm4gc2libGluZzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IFJlbmRlck9i
amVjdCogbiA9IHRoaXM7CisgICAgd2hpbGUgKG4pIHsKKyAgICAgICAgd2hpbGUgKG4gJiYgIW4t
Pm5leHRTaWJsaW5nKCkgJiYgKCFzdGF5V2l0aGluIHx8IG4tPnBhcmVudCgpICE9IHN0YXlXaXRo
aW4pKQorICAgICAgICAgICAgbiA9IG4tPnBhcmVudCgpOworICAgICAgICBpZiAobikgeworICAg
ICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIHNpYmxpbmcgPSBuLT5uZXh0U2libGluZygpOyBz
aWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAg
ICAgIGlmIChpbmNsdXNpb25GdW5jdGlvbihzaWJsaW5nKSkgeworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgIW4tPm5leHRTaWJsaW5nKCkgfHwgbi0+bmV4dFNpYmxp
bmcoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2libGluZzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoKCFzdGF5V2l0aGluIHx8IG4tPnBhcmVudCgpICE9IHN0YXlXaXRoaW4pKQorICAg
ICAgICAgICAgICAgIG4gPSBuLT5wYXJlbnQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
c3RhdGljIFJlbmRlck9iamVjdDo6QmxvY2tDb250ZW50SGVpZ2h0VHlwZSBpbmNsdWRlTm9uRml4
ZWRIZWlnaHQoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXIpCit7CisgICAgUmVuZGVyU3R5bGUq
IHN0eWxlID0gcmVuZGVyLT5zdHlsZSgpOworICAgIGlmIChzdHlsZSkgeworICAgICAgICBpZiAo
c3R5bGUtPmhlaWdodCgpLnR5cGUoKSA9PSBGaXhlZCkgeworICAgICAgICAgICAgaWYgKHJlbmRl
ci0+aXNSZW5kZXJCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyQmxvY2sq
IGJsb2NrID0gdG9SZW5kZXJCbG9jayhyZW5kZXIpOworICAgICAgICAgICAgICAgIC8vIEZvciBm
aXhlZCBoZWlnaHQgc3R5bGVzLCBpZiB0aGUgb3ZlcmZsb3cgc2l6ZSBvZiB0aGUgZWxlbWVudCBz
cGlsbHMgb3V0IG9mIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAvLyBoZWlnaHQsIGFz
c3VtZSB3ZSBjYW4gYXBwbHkgdGV4dCBhdXRvLXNpemluZy4KKyAgICAgICAgICAgICAgICBpZiAo
c3R5bGUtPm92ZXJmbG93WSgpID09IE9WSVNJQkxFICYmIHN0eWxlLT5oZWlnaHQoKS52YWx1ZSgp
IDwgYmxvY2stPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFkoKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFJlbmRlck9iamVjdDo6T3ZlcmZsb3dIZWlnaHQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpGaXhlZEhlaWdodDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpGbGV4aWJsZUhlaWdodDsKK30KKworCit2
b2lkIFJlbmRlck9iamVjdDo6YWRqdXN0Q29tcHV0ZWRGb250U2l6ZXNPbkJsb2NrcyhmbG9hdCBz
aXplLCBmbG9hdCB2aXNpYmxlV2lkdGgpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdmll
dygpLmZyYW1lVmlldygpLmZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8aW50PiBkZXB0aFN0YWNrOworICAgIGludCBj
dXJyZW50RGVwdGggPSAwOworICAgIGludCBuZXdGaXhlZERlcHRoID0gMDsKKworICAgIC8vIFdl
IGRvbid0IGFwcGx5IGF1dG9zaXppbmcgdG8gbm9kZXMgd2l0aCBmaXhlZCBoZWlnaHQgbm9ybWFs
bHkuCisgICAgLy8gQnV0IHdlIGFwcGx5IGl0IHRvIG5vZGVzIHdoaWNoIGFyZSBsb2NhdGVkIGRl
ZXAgZW5vdWdoCisgICAgLy8gKG5lc3RpbmcgZGVwdGggaXMgZ3JlYXRlciB0aGFuIHNvbWUgY29u
c3QpIGluc2lkZSBvZiBhIHBhcmVudCBibG9jaworICAgIC8vIHdoaWNoIGhhcyBmaXhlZCBoZWln
aHQgYnV0IGl0cyBjb250ZW50IG92ZXJmbG93cyBpbnRlbnRpb25hbGx5LgorICAgIGZvciAoUmVu
ZGVyT2JqZWN0KiBkZXNjZW5kZW50ID0gdHJhdmVyc2VOZXh0KHRoaXMsIGluY2x1ZGVOb25GaXhl
ZEhlaWdodCwgY3VycmVudERlcHRoLCBuZXdGaXhlZERlcHRoKTsgZGVzY2VuZGVudDsgZGVzY2Vu
ZGVudCA9IGRlc2NlbmRlbnQtPnRyYXZlcnNlTmV4dCh0aGlzLCBpbmNsdWRlTm9uRml4ZWRIZWln
aHQsIGN1cnJlbnREZXB0aCwgbmV3Rml4ZWREZXB0aCkpIHsKKyAgICAgICAgd2hpbGUgKGRlcHRo
U3RhY2suc2l6ZSgpID4gMCAmJiBjdXJyZW50RGVwdGggPD0gZGVwdGhTdGFja1tkZXB0aFN0YWNr
LnNpemUoKSAtIDFdKQorICAgICAgICAgICAgZGVwdGhTdGFjay5yZW1vdmUoZGVwdGhTdGFjay5z
aXplKCkgLSAxKTsKKyAgICAgICAgaWYgKG5ld0ZpeGVkRGVwdGgpCisgICAgICAgICAgICBkZXB0
aFN0YWNrLmFwcGVuZChuZXdGaXhlZERlcHRoKTsKKworICAgICAgICBpbnQgc3RhY2tTaXplID0g
ZGVwdGhTdGFjay5zaXplKCk7CisgICAgICAgIGlmIChkZXNjZW5kZW50LT5pc1JlbmRlckJsb2Nr
KCkgJiYgIWRlc2NlbmRlbnQtPmlzTGlzdEl0ZW0oKSAmJiAoIXN0YWNrU2l6ZSB8fCBjdXJyZW50
RGVwdGggLSBkZXB0aFN0YWNrW3N0YWNrU2l6ZSAtIDFdID4gVGV4dEF1dG9TaXppbmdGaXhlZEhl
aWdodERlcHRoKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlckJsb2NrKj4oZGVzY2Vu
ZGVudCktPmFkanVzdENvbXB1dGVkRm9udFNpemVzKHNpemUsIHZpc2libGVXaWR0aCk7CisgICAg
ICAgIG5ld0ZpeGVkRGVwdGggPSAwOworICAgIH0KKworICAgIC8vIFJlbW92ZSBzdHlsZSBmcm9t
IGF1dG8tc2l6aW5nIHRhYmxlIHRoYXQgYXJlIG5vIGxvbmdlciB2YWxpZC4KKyAgICBkb2N1bWVu
dC0+dmFsaWRhdGVBdXRvU2l6aW5nTm9kZXMoKTsKK30KKwordm9pZCBSZW5kZXJPYmplY3Q6OnJl
c2V0VGV4dEF1dG9zaXppbmcoKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHZpZXcoKS5m
cmFtZVZpZXcoKS5mcmFtZSgpLmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZG9jdW1lbnQtPnJlc2V0QXV0b1NpemluZ05vZGVzKCk7CisKKyAg
ICBWZWN0b3I8aW50PiBkZXB0aFN0YWNrOworICAgIGludCBjdXJyZW50RGVwdGggPSAwOworICAg
IGludCBuZXdGaXhlZERlcHRoID0gMDsKKworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBkZXNjZW5k
ZW50ID0gdHJhdmVyc2VOZXh0KHRoaXMsIGluY2x1ZGVOb25GaXhlZEhlaWdodCwgY3VycmVudERl
cHRoLCBuZXdGaXhlZERlcHRoKTsgZGVzY2VuZGVudDsgZGVzY2VuZGVudCA9IGRlc2NlbmRlbnQt
PnRyYXZlcnNlTmV4dCh0aGlzLCBpbmNsdWRlTm9uRml4ZWRIZWlnaHQsIGN1cnJlbnREZXB0aCwg
bmV3Rml4ZWREZXB0aCkpIHsKKyAgICAgICAgd2hpbGUgKGRlcHRoU3RhY2suc2l6ZSgpID4gMCAm
JiBjdXJyZW50RGVwdGggPD0gZGVwdGhTdGFja1tkZXB0aFN0YWNrLnNpemUoKSAtIDFdKQorICAg
ICAgICAgICAgZGVwdGhTdGFjay5yZW1vdmUoZGVwdGhTdGFjay5zaXplKCkgLSAxKTsKKyAgICAg
ICAgaWYgKG5ld0ZpeGVkRGVwdGgpCisgICAgICAgICAgICBkZXB0aFN0YWNrLmFwcGVuZChuZXdG
aXhlZERlcHRoKTsKKworICAgICAgICBpbnQgc3RhY2tTaXplID0gZGVwdGhTdGFjay5zaXplKCk7
CisgICAgICAgIGlmIChkZXNjZW5kZW50LT5pc1JlbmRlckJsb2NrKCkgJiYgIWRlc2NlbmRlbnQt
PmlzTGlzdEl0ZW0oKSAmJiAoIXN0YWNrU2l6ZSB8fCBjdXJyZW50RGVwdGggLSBkZXB0aFN0YWNr
W3N0YWNrU2l6ZSAtIDFdID4gVGV4dEF1dG9TaXppbmdGaXhlZEhlaWdodERlcHRoKSkKKyAgICAg
ICAgICAgIHRvUmVuZGVyQmxvY2soZGVzY2VuZGVudCktPnJlc2V0Q29tcHV0ZWRGb250U2l6ZSgp
OworICAgICAgICBuZXdGaXhlZERlcHRoID0gMDsKKyAgICB9Cit9CisjZW5kaWYgLy8gRU5BQkxF
KElPU19URVhUX0FVVE9TSVpJTkcpCisKIHN0YXRpYyB2b2lkIGFkZExheWVycyhSZW5kZXJPYmpl
Y3QqIG9iaiwgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyLCBSZW5kZXJPYmplY3QqJiBuZXdPYmpl
Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqJiBiZWZvcmVDaGlsZCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA4ZjU0NDNlNmYyNjAx
MzA2MDljMTc2NjI0YmI0MzIwMDZlYzE4M2JlLi5jZDg4NGU0ODNlZDJkYTMwMWViMzA2YmQ3OGE4
MDU3MmEwOTVkMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBA
IC0xOTUsNiArMTk1LDI5IEBAIHB1YmxpYzoKICAgICBSZW5kZXJPYmplY3QqIGZpcnN0TGVhZkNo
aWxkKCkgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0TGVhZkNoaWxkKCkgY29uc3Q7CiAK
KyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICAvLyBNaW5pbWFsIGRpc3RhbmNl
IGJldHdlZW4gdGhlIGJsb2NrIHdpdGggZml4ZWQgaGVpZ2h0IGFuZCBvdmVyZmxvd2luZyBjb250
ZW50IGFuZCB0aGUgdGV4dCBibG9jayB0byBhcHBseSB0ZXh0IGF1dG9zaXppbmcuCisgICAgLy8g
VGhlIGdyZWF0ZXIgdGhpcyBjb25zdGFudCBpcyB0aGUgbW9yZSBwb3RlbnRpYWwgcGxhY2VzIHdl
IGhhdmUgd2hlcmUgYXV0b3NpemluZyBpcyB0dXJuZWQgb2ZmLgorICAgIC8vIFNvIGl0IHNob3Vs
ZCBiZSBhcyBsb3cgYXMgcG9zc2libGUuIFRoZXJlIGFyZSBzaXRlcyB0aGF0IGJyZWFrIGF0IDIu
CisgICAgc3RhdGljIGNvbnN0IGludCBUZXh0QXV0b1NpemluZ0ZpeGVkSGVpZ2h0RGVwdGggPSAz
OworCisgICAgZW51bSBCbG9ja0NvbnRlbnRIZWlnaHRUeXBlIHsKKyAgICAgICAgRml4ZWRIZWln
aHQsCisgICAgICAgIEZsZXhpYmxlSGVpZ2h0LAorICAgICAgICBPdmVyZmxvd0hlaWdodAorICAg
IH07CisKKyAgICBSZW5kZXJPYmplY3QqIHRyYXZlcnNlTmV4dChjb25zdCBSZW5kZXJPYmplY3Qq
IHN0YXlXaXRoaW4pIGNvbnN0OworICAgIHR5cGVkZWYgYm9vbCAoKlRyYXZlcnNlTmV4dEluY2x1
c2lvbkZ1bmN0aW9uKShjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICB0eXBlZGVmIEJsb2NrQ29u
dGVudEhlaWdodFR5cGUgKCpIZWlnaHRUeXBlVHJhdmVyc2VOZXh0SW5jbHVzaW9uRnVuY3Rpb24p
KGNvbnN0IFJlbmRlck9iamVjdCopOworCisgICAgUmVuZGVyT2JqZWN0KiB0cmF2ZXJzZU5leHQo
Y29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluLCBUcmF2ZXJzZU5leHRJbmNsdXNpb25GdW5j
dGlvbikgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiB0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVy
T2JqZWN0KiBzdGF5V2l0aGluLCBIZWlnaHRUeXBlVHJhdmVyc2VOZXh0SW5jbHVzaW9uRnVuY3Rp
b24sIGludCYgY3VycmVudERlcHRoLCAgaW50JiBuZXdGaXhlZERlcHRoKSBjb25zdDsKKworICAg
IHZvaWQgYWRqdXN0Q29tcHV0ZWRGb250U2l6ZXNPbkJsb2NrcyhmbG9hdCBzaXplLCBmbG9hdCB2
aXNpYmxlV2lkdGgpOworICAgIHZvaWQgcmVzZXRUZXh0QXV0b3NpemluZygpOworI2VuZGlmCisK
ICAgICAvLyBUaGUgZm9sbG93aW5nIHNpeCBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiB0aGUgcmVu
ZGVyIHRyZWUgaGllcmFyY2h5IGNoYW5nZXMgdG8gbWFrZSBzdXJlIGxheWVycyBnZXQKICAgICAv
LyBwcm9wZXJseSBhZGRlZCBhbmQgcmVtb3ZlZC4gIFNpbmNlIGNvbnRhaW5lcnNoaXAgY2FuIGJl
IGltcGxlbWVudGVkIGJ5IGFueSBzdWJjbGFzcywgYW5kIHNpbmNlIGEgaGllcmFyY2h5CiAgICAg
Ly8gY2FuIGNvbnRhaW4gYSBtaXh0dXJlIG9mIGJveGVzIGFuZCBvdGhlciBvYmplY3QgdHlwZXMs
IHRoZXNlIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIGluIHRoZSBiYXNlIGNsYXNzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDQ2MzY1NDBlNmFlMzA2MzRjY2RjY2Y1
YWJlMDQ2ZDRjNDgwMmQ0NmIuLmQ4YzFlMWNlNzM4NTI1NWY2YzI4ZTlkNGQ2Y2YwYmExMWRhNDhl
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTU2LDYgKzU2
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclRleHQg
OiBwdWJsaWMgUmVuZGVyT2JqZWN0IHsKICAgICB1aW50MzJfdCBiaXRmaWVsZHMgOiAxNjsKKyNp
ZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBmbG9hdCBjYW5kaWRhdGVUZXh0U2l6
ZTsKKyNlbmRpZgogICAgIGZsb2F0IHdpZHRoc1s0XTsKICAgICBTdHJpbmcgdGV4dDsKICAgICB2
b2lkKiBwb2ludGVyc1syXTsKQEAgLTE0Miw2ICsxNDUsOSBAQCBSZW5kZXJUZXh0OjpSZW5kZXJU
ZXh0KE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyKQogICAgICwgbV9jb250
YWluc1JldmVyc2VkVGV4dChmYWxzZSkKICAgICAsIG1fa25vd25Ub0hhdmVOb092ZXJmbG93QW5k
Tm9GYWxsYmFja0ZvbnRzKGZhbHNlKQogICAgICwgbV9uZWVkc1RyYW5zY29kaW5nKGZhbHNlKQor
I2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICwgbV9jYW5kaWRhdGVDb21wdXRl
ZFRleHRTaXplKDApCisjZW5kaWYKICAgICAsIG1fbWluV2lkdGgoLTEpCiAgICAgLCBtX21heFdp
ZHRoKC0xKQogICAgICwgbV9iZWdpbk1pbldpZHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuaAppbmRleCAzNWVlMTliYTVhNWNkYTQwYTY2MTBlYmJjMGU5YzNhNTAyYzZmMmI0
Li43NjJlOTlmMDQ2MGVhNTMzYTRiNDM4Y2Q3OTc0Y2M2MDIzZDFhNmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTEzNiw2ICsxMzYsMTEgQEAgcHVibGljOgogCiAg
ICAgdm9pZCByZW1vdmVBbmREZXN0cm95VGV4dEJveGVzKCk7CiAKKyNpZiBFTkFCTEUoSU9TX1RF
WFRfQVVUT1NJWklORykKKyAgICBmbG9hdCBjYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplOyB9CisgICAgdm9pZCBzZXRD
YW5kaWRhdGVDb21wdXRlZFRleHRTaXplKGZsb2F0IHMpIHsgbV9jYW5kaWRhdGVDb21wdXRlZFRl
eHRTaXplID0gczsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoKTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CkBAIC0xODYsNiArMTkxLDEwIEBAIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSBib29sIG1fa25vd25Ub0hhdmVOb092ZXJmbG93QW5kTm9GYWxsYmFja0ZvbnRz
IDogMTsKICAgICBib29sIG1fbmVlZHNUcmFuc2NvZGluZyA6IDE7CiAgICAgCisjaWYgRU5BQkxF
KElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IGJlIHBhcnQgb2YgdGhlIHRleHQgc2l6aW5nIHN0cnVjdHVyZXMgaW4gRG9jdW1lbnQgaW5zdGVh
ZC4gVGhhdCB3b3VsZCBzYXZlIHNvbWUgbWVtb3J5LgorICAgIGZsb2F0IG1fY2FuZGlkYXRlQ29t
cHV0ZWRUZXh0U2l6ZTsKKyNlbmRpZgogICAgIGZsb2F0IG1fbWluV2lkdGg7CiAgICAgZmxvYXQg
bV9tYXhXaWR0aDsKICAgICBmbG9hdCBtX2JlZ2luTWluV2lkdGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAzZjMxZmY0ZDRkZTAyOGZm
ZDQ4ODY1M2YwZGZkMGQ1ZDRiY2U2N2I1Li45MTNlN2VmODlhNTAwMzQyZWY2ZjZlMjYwODUzYzJh
YTdhODQ5Y2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5jcHAKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5H
KQorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNlbmRpZgorCiAjaWYgRU5BQkxF
KFRFWFRfQVVUT1NJWklORykKICNpbmNsdWRlICJUZXh0QXV0b3NpemVyLmgiCiAjZW5kaWYKQEAg
LTMzMCw2ICszMzQsNjQgQEAgYm9vbCBSZW5kZXJTdHlsZTo6aW5oZXJpdGVkTm90RXF1YWwoY29u
c3QgUmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAogICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVk
RGF0YSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGE7CiB9CiAKKyNpZiBFTkFCTEUoSU9TX1RF
WFRfQVVUT1NJWklORykKK2lubGluZSB1bnNpZ25lZCBjb21wdXRlRm9udEhhc2goY29uc3QgRm9u
dCYgZm9udCkKK3sKKyAgICB1bnNpZ25lZCBoYXNoQ29kZXNbMl0gPSB7CisgICAgICAgIENhc2VG
b2xkaW5nSGFzaDo6aGFzaChmb250LmZvbnREZXNjcmlwdGlvbigpLmZpcnN0RmFtaWx5KCkuaW1w
bCgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZvbnQuZm9udERlc2NyaXB0aW9u
KCkuc3BlY2lmaWVkU2l6ZSgpKQorICAgIH07CisgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6Y29t
cHV0ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGhhc2hDb2RlcyksIDIgKiBzaXplb2Yo
dW5zaWduZWQpIC8gc2l6ZW9mKFVDaGFyKSk7Cit9CisKK3VpbnQzMl90IFJlbmRlclN0eWxlOjpo
YXNoRm9yVGV4dEF1dG9zaXppbmcoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBOb3QgYSB2ZXJ5
IHNtYXJ0IGhhc2guIENvdWxkIGJlIGltcHJvdmVkIHVwb24uCisgICAgdWludDMyX3QgaGFzaCA9
IDA7CisgICAgCisgICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNl
OworICAgIGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNl
OworICAgIGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkFmdGVyQ29sbGFwc2U7
CisgICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wLnZhbHVlKCk7Cisg
ICAgaGFzaCBePSByYXJlSW5oZXJpdGVkRGF0YS0+b3ZlcmZsb3dXcmFwOworICAgIGhhc2ggXj0g
cmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlOworICAgIGhhc2ggXj0gcmFyZUluaGVyaXRlZERh
dGEtPmxpbmVCcmVhazsKKyAgICBoYXNoIF49IFdURjo6RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChp
bmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQudmFsdWUoKSk7CisgICAgaGFzaCBePSBjb21w
dXRlRm9udEhhc2goaW5oZXJpdGVkLT5mb250KTsKKyAgICBoYXNoIF49IGluaGVyaXRlZC0+aG9y
aXpvbnRhbF9ib3JkZXJfc3BhY2luZzsKKyAgICBoYXNoIF49IGluaGVyaXRlZC0+dmVydGljYWxf
Ym9yZGVyX3NwYWNpbmc7CisgICAgaGFzaCBePSBpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rp
b247CisgICAgaGFzaCBePSBpbmhlcml0ZWRfZmxhZ3MubV9ydGxPcmRlcmluZzsKKyAgICBoYXNo
IF49IG5vbmluaGVyaXRlZF9mbGFncy5fcG9zaXRpb247CisgICAgaGFzaCBePSBub25pbmhlcml0
ZWRfZmxhZ3MuX2Zsb2F0aW5nOworICAgIGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERhdGEtPnRl
eHRPdmVyZmxvdzsKKyAgICBoYXNoIF49IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHk7
CisgICAgcmV0dXJuIGhhc2g7Cit9CisKK2Jvb2wgUmVuZGVyU3R5bGU6OmVxdWFsRm9yVGV4dEF1
dG9zaXppbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlID09IG90aGVyLT5yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9hcHBlYXJhbmNlCisgICAgICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
YXJnaW5CZWZvcmVDb2xsYXBzZSA9PSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1hcmdp
bkJlZm9yZUNvbGxhcHNlCisgICAgICAgICYmIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5B
ZnRlckNvbGxhcHNlID09IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJD
b2xsYXBzZQorICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wID09IG90
aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wCisgICAgICAgICYmIHJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdCA9PSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPnRl
eHRTaXplQWRqdXN0CisgICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAg
PT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5vdmVyZmxvd1dyYXAKKyAgICAgICAgJiYgcmFy
ZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlID09IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bmJz
cE1vZGUKKyAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhayA9PSBvdGhlci0+
cmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhaworICAgICAgICAmJiByYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFNlY3VyaXR5ID09IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5
CisgICAgICAgICYmIGluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodCA9PSBvdGhlci0+aW5o
ZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0CisgICAgICAgICYmIGluaGVyaXRlZC0+Zm9udC5l
cXVhbEZvclRleHRBdXRvU2l6aW5nKG90aGVyLT5pbmhlcml0ZWQtPmZvbnQpCisgICAgICAgICYm
IGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyA9PSBvdGhlci0+aW5oZXJpdGVk
LT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nCisgICAgICAgICYmIGluaGVyaXRlZC0+dmVydGlj
YWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXItPmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3Nw
YWNpbmcKKyAgICAgICAgJiYgaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uID09IG90aGVy
LT5pbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24KKyAgICAgICAgJiYgaW5oZXJpdGVkX2Zs
YWdzLm1fcnRsT3JkZXJpbmcgPT0gb3RoZXItPmluaGVyaXRlZF9mbGFncy5tX3J0bE9yZGVyaW5n
CisgICAgICAgICYmIG5vbmluaGVyaXRlZF9mbGFncy5fcG9zaXRpb24gPT0gb3RoZXItPm5vbmlu
aGVyaXRlZF9mbGFncy5fcG9zaXRpb24KKyAgICAgICAgJiYgbm9uaW5oZXJpdGVkX2ZsYWdzLl9m
bG9hdGluZyA9PSBvdGhlci0+bm9uaW5oZXJpdGVkX2ZsYWdzLl9mbG9hdGluZworICAgICAgICAm
JiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93ID09IG90aGVyLT5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93OworfQorI2VuZGlmIC8vIEVOQUJMRShJT1NfVEVYVF9B
VVRPU0laSU5HKQorCiBib29sIFJlbmRlclN0eWxlOjppbmhlcml0ZWREYXRhU2hhcmVkKGNvbnN0
IFJlbmRlclN0eWxlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBUaGlzIGlzIGEgZmFzdCBjaGVj
ayB0aGF0IG9ubHkgbG9va3MgaWYgdGhlIGRhdGEgc3RydWN0dXJlcyBhcmUgc2hhcmVkLgpAQCAt
NDgwLDYgKzU0Miw5IEBAIGJvb2wgUmVuZGVyU3R5bGU6OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNv
bnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nCiAgICAgICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50TGluZSAhPSBvdGhlci0+cmFyZUluaGVyaXRl
ZERhdGEtPm1fdGV4dEluZGVudExpbmUKICNlbmRpZgogICAgICAgICAgICAgfHwgcmFyZUluaGVy
aXRlZERhdGEtPm1fZWZmZWN0aXZlWm9vbSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1f
ZWZmZWN0aXZlWm9vbQorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICAgICAg
ICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0ICE9IG90aGVyLT5yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QKKyNlbmRpZgogICAgICAgICAgICAgfHwgcmFyZUlu
aGVyaXRlZERhdGEtPndvcmRCcmVhayAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPndvcmRC
cmVhawogICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcCAhPSBv
dGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93V3JhcAogICAgICAgICAgICAgfHwgcmFy
ZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+bmJz
cE1vZGUKQEAgLTUyNCw2ICs1ODksOSBAQCBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJl
c0xheW91dChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZwogI2VuZGlm
CiAKICAgICBpZiAoaW5oZXJpdGVkLT5saW5lX2hlaWdodCAhPSBvdGhlci0+aW5oZXJpdGVkLT5s
aW5lX2hlaWdodAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICAgICB8fCBp
bmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQgIT0gb3RoZXItPmluaGVyaXRlZC0+c3BlY2lm
aWVkTGluZUhlaWdodAorI2VuZGlmCiAgICAgICAgIHx8IGluaGVyaXRlZC0+Zm9udCAhPSBvdGhl
ci0+aW5oZXJpdGVkLT5mb250CiAgICAgICAgIHx8IGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3Jk
ZXJfc3BhY2luZyAhPSBvdGhlci0+aW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5n
CiAgICAgICAgIHx8IGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcgIT0gb3RoZXIt
PmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcKQEAgLTEzNTQsNyArMTQyMiwxMyBA
QCBib29sIFJlbmRlclN0eWxlOjpzZXRGb250RGVzY3JpcHRpb24oY29uc3QgRm9udERlc2NyaXB0
aW9uJiB2KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRP
U0laSU5HKQorTGVuZ3RoIFJlbmRlclN0eWxlOjpzcGVjaWZpZWRMaW5lSGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gaW5oZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0OyB9Cit2b2lkIFJlbmRlclN0
eWxlOjpzZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVk
LCBzcGVjaWZpZWRMaW5lSGVpZ2h0LCB2KTsgfQorI2Vsc2UKIExlbmd0aCBSZW5kZXJTdHlsZTo6
c3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+bGluZV9oZWln
aHQ7IH0KKyNlbmRpZgorCiBMZW5ndGggUmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQoKSBjb25zdAog
ewogICAgIGNvbnN0IExlbmd0aCYgbGggPSBpbmhlcml0ZWQtPmxpbmVfaGVpZ2h0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBiMjZmMWZlMTg4
YTEzM2NhMjRiOWUxMjkxOGEyYmE0ZDM2N2E5NWUxLi45YTJhYjNiZDQ1MGI4ZmZlNWQxNmI1NmRi
N2Y5Y2EzOGQzNWMzMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaApAQCAtODIsNiArODIsMTAgQEAKICNpbmNsdWRlICJTdHlsZURhc2hib2FyZFJl
Z2lvbi5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyNpbmNs
dWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNWRykKICNp
bmNsdWRlICJTVkdQYWludC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCkBAIC05MzMs
NiArOTM3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JP
TExJTkcpCiAgICAgYm9vbCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1
cm4gcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmc7IH0KICNlbmRp
ZgorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgIFRleHRTaXplQWRqdXN0bWVu
dCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0
U2l6ZUFkanVzdDsgfQorI2VuZGlmCiAgICAgRVRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFNlY3VyaXR5PihyYXJlSW5oZXJpdGVkRGF0
YS0+dGV4dFNlY3VyaXR5KTsgfQogCiAgICAgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxXcml0aW5nTW9kZT4oaW5oZXJpdGVkX2ZsYWdzLm1fd3Jp
dGluZ01vZGUpOyB9CkBAIC0xMTUzLDYgKzExNjAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRU
ZXh0VW5kZXJsaW5lUG9zaXRpb24oVGV4dFVuZGVybGluZVBvc2l0aW9uIHYpIHsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHYpOyB9CiAjZW5kaWYg
Ly8gQ1NTM19URVhUCiAgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2KSB7IGlu
aGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uID0gdjsgfQorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRP
U0laSU5HKQorICAgIHZvaWQgc2V0U3BlY2lmaWVkTGluZUhlaWdodChMZW5ndGggdik7CisjZW5k
aWYKICAgICB2b2lkIHNldExpbmVIZWlnaHQoTGVuZ3RoIHNwZWNpZmllZExpbmVIZWlnaHQpOwog
ICAgIGJvb2wgc2V0Wm9vbShmbG9hdCk7CiAgICAgdm9pZCBzZXRab29tV2l0aG91dFJldHVyblZh
bHVlKGZsb2F0IGYpIHsgc2V0Wm9vbShmKTsgfQpAQCAtMTQzNCw2ICsxNDQ0LDkgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgdm9pZCBz
ZXRVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKGJvb2wgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nLCB2KTsgfQogI2VuZGlmCisjaWYgRU5B
QkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgdm9pZCBzZXRUZXh0U2l6ZUFkanVzdChUZXh0
U2l6ZUFkanVzdG1lbnQgYW5BZGp1c3RtZW50KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHRleHRTaXplQWRqdXN0LCBhbkFkanVzdG1lbnQpOyB9CisjZW5kaWYKICAgICB2b2lkIHNldFRl
eHRTZWN1cml0eShFVGV4dFNlY3VyaXR5IGFUZXh0U2VjdXJpdHkpIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgdGV4dFNlY3VyaXR5LCBhVGV4dFNlY3VyaXR5KTsgfQogCiAjaWYgRU5BQkxF
KFNWRykKQEAgLTE1NDIsNiArMTU1NSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbmhlcml0ZWRO
b3RFcXVhbChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogICAgIGJvb2wgaW5oZXJpdGVkRGF0
YVNoYXJlZChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwogCisjaWYgRU5BQkxFKElPU19URVhU
X0FVVE9TSVpJTkcpCisgICAgdWludDMyX3QgaGFzaEZvclRleHRBdXRvc2l6aW5nKCkgY29uc3Q7
CisgICAgYm9vbCBlcXVhbEZvclRleHRBdXRvc2l6aW5nKGNvbnN0IFJlbmRlclN0eWxlICpvdGhl
cikgY29uc3Q7CisjZW5kaWYKKwogICAgIFN0eWxlRGlmZmVyZW5jZSBkaWZmKGNvbnN0IFJlbmRl
clN0eWxlKiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0U2Vuc2l0aXZlUHJvcGVydGllcykgY29u
c3Q7CiAgICAgYm9vbCBkaWZmUmVxdWlyZXNSZXBhaW50KGNvbnN0IFJlbmRlclN0eWxlKikgY29u
c3Q7CiAKQEAgLTE2MzcsNiArMTY1NSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2hvcnQgaW5p
dGlhbFdpZG93cygpIHsgcmV0dXJuIDI7IH0KICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbE9ycGhh
bnMoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsTGluZUhlaWdodCgp
IHsgcmV0dXJuIExlbmd0aCgtMTAwLjAsIFBlcmNlbnQpOyB9CisjaWYgRU5BQkxFKElPU19URVhU
X0FVVE9TSVpJTkcpCisgICAgc3RhdGljIExlbmd0aCBpbml0aWFsU3BlY2lmaWVkTGluZUhlaWdo
dCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLCBQZXJjZW50KTsgfQorI2VuZGlmCiAgICAgc3RhdGlj
IEVUZXh0QWxpZ24gaW5pdGlhbFRleHRBbGlnbigpIHsgcmV0dXJuIFRBU1RBUlQ7IH0KICAgICBz
dGF0aWMgVGV4dERlY29yYXRpb24gaW5pdGlhbFRleHREZWNvcmF0aW9uKCkgeyByZXR1cm4gVGV4
dERlY29yYXRpb25Ob25lOyB9CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKQEAgLTE3NTcsNiArMTc3
OCw5IEBAIHB1YmxpYzoKICAgICAvLyBLZWVwIHRoZXNlIGF0IHRoZSBlbmQuCiAgICAgc3RhdGlj
IExpbmVDbGFtcFZhbHVlIGluaXRpYWxMaW5lQ2xhbXAoKSB7IHJldHVybiBMaW5lQ2xhbXBWYWx1
ZSgpOyB9CiAgICAgc3RhdGljIEVUZXh0U2VjdXJpdHkgaW5pdGlhbFRleHRTZWN1cml0eSgpIHsg
cmV0dXJuIFRTTk9ORTsgfQorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgIHN0
YXRpYyBUZXh0U2l6ZUFkanVzdG1lbnQgaW5pdGlhbFRleHRTaXplQWRqdXN0KCkgeyByZXR1cm4g
VGV4dFNpemVBZGp1c3RtZW50KCk7IH0KKyNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERh
dGEuY3BwCmluZGV4IGI3MjM5NTYzMTJjYmY1NDliNmQ5YmQwN2YzM2QxMjEzYzYzMmQ0MDQuLmI4
NzI2MGZhNDgxNDRkOTBhNDE1ZjhkZWM5MDQ5ZWRlZWNjNDYwNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCkBAIC0z
MCw2ICszMCw5IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKICAg
ICA6IGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9u
dGFsQm9yZGVyU3BhY2luZygpKQogICAgICwgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVy
U3R5bGU6OmluaXRpYWxWZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSkKICAgICAsIGxpbmVfaGVpZ2h0
KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKQorI2lmIEVOQUJMRShJT1NfVEVYVF9B
VVRPU0laSU5HKQorICAgICwgc3BlY2lmaWVkTGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVIZWlnaHQoKSkKKyNlbmRpZgogICAgICwgY29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxD
b2xvcigpKQogICAgICwgdmlzaXRlZExpbmtDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9y
KCkpCiB7CkBAIC00NCw2ICs0Nyw5IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0
ZWREYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykKICAgICAsIGhvcml6b250YWxfYm9y
ZGVyX3NwYWNpbmcoby5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nKQogICAgICwgdmVydGljYWxf
Ym9yZGVyX3NwYWNpbmcoby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZykKICAgICAsIGxpbmVfaGVp
Z2h0KG8ubGluZV9oZWlnaHQpCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAg
LCBzcGVjaWZpZWRMaW5lSGVpZ2h0KG8uc3BlY2lmaWVkTGluZUhlaWdodCkKKyNlbmRpZgogICAg
ICwgZm9udChvLmZvbnQpCiAgICAgLCBjb2xvcihvLmNvbG9yKQogICAgICwgdmlzaXRlZExpbmtD
b2xvcihvLnZpc2l0ZWRMaW5rQ29sb3IpCkBAIC01Myw2ICs1OSw5IEBAIFN0eWxlSW5oZXJpdGVk
RGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykKIGJv
b2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0
YSYgbykgY29uc3QKIHsKICAgICByZXR1cm4gbGluZV9oZWlnaHQgPT0gby5saW5lX2hlaWdodAor
I2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICAgICAmJiBzcGVjaWZpZWRMaW5l
SGVpZ2h0ID09IG8uc3BlY2lmaWVkTGluZUhlaWdodAorI2VuZGlmCiAgICAgICAgICYmIGZvbnQg
PT0gby5mb250CiAgICAgICAgICYmIGNvbG9yID09IG8uY29sb3IKICAgICAgICAgJiYgdmlzaXRl
ZExpbmtDb2xvciA9PSBvLnZpc2l0ZWRMaW5rQ29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaAppbmRleCAwNmE3OTI3M2VkMmVk
ZjIwYTE0YWEyZTUyMjY3ZmJlODQzNDNlNTAzLi5lYmFiZmJjNmNhN2Y1OGUyNDI3ZGUyZDcyZGVi
ODQ5NjA4MjNjYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlSW5oZXJpdGVkRGF0YS5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICAvLyBj
b3VsZCBiZSBwYWNrZWQgaW4gYSBzaG9ydCBidXQgZG9lc24ndAogICAgIC8vIG1ha2UgYSBkaWZm
ZXJlbmNlIGN1cnJlbnRseSBiZWNhdXNlIG9mIHBhZGRpbmcKICAgICBMZW5ndGggbGluZV9oZWln
aHQ7CisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgTGVuZ3RoIHNwZWNpZmll
ZExpbmVIZWlnaHQ7CisjZW5kaWYKIAogICAgIEZvbnQgZm9udDsKICAgICBDb2xvciBjb2xvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcAppbmRleCAyZTFkOWQwYTZhMzk1MmQ2OTk1YjBhNWJkZjNhNWJmNDA2
MmZhZmMxLi41NmRiM2U4MjM5ZGVkNjdiNWYxMzY0ODE1MjU4MThlNGI3MzI0NjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVy
aXRlZERhdGEuY3BwCkBAIC00Niw2ICs0NiwxMCBAQCBzdHJ1Y3QgU2FtZVNpemVBc1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTYW1lU2l6ZUFzU3R5bGVSYXJlSQog
ICAgIHVuc2lnbmVkIHVuc2lnbmVkc1sxXTsKICAgICBzaG9ydCBoeXBoZW5hdGlvblNob3J0c1sz
XTsKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgIFRleHRTaXplQWRqdXN0
bWVudCB0ZXh0U2l6ZUFkanVzdDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19JTUFHRV9SRVNP
TFVUSU9OKQogICAgIGZsb2F0IGltYWdlUmVzb2x1dGlvbkZsb2F0czsKICNlbmRpZgpAQCAtMTE0
LDYgKzExOCw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERh
dGEoKQogICAgICwgaHlwaGVuYXRpb25MaW1pdExpbmVzKC0xKQogICAgICwgbV9saW5lR3JpZChS
ZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVHcmlkKCkpCiAgICAgLCBtX3RhYlNpemUoUmVuZGVyU3R5
bGU6OmluaXRpYWxUYWJTaXplKCkpCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisg
ICAgLCB0ZXh0U2l6ZUFkanVzdChSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRTaXplQWRqdXN0KCkp
CisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCiAgICAgLCBtX2ltYWdl
UmVzb2x1dGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvbigpKQogI2VuZGlm
CkBAIC0xOTIsNiArMTk5LDkgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJiBvKQogICAgICwgdGV4dEVt
cGhhc2lzQ3VzdG9tTWFyayhvLnRleHRFbXBoYXNpc0N1c3RvbU1hcmspCiAgICAgLCBtX2xpbmVH
cmlkKG8ubV9saW5lR3JpZCkKICAgICAsIG1fdGFiU2l6ZShvLm1fdGFiU2l6ZSkKKyNpZiBFTkFC
TEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICAsIHRleHRTaXplQWRqdXN0KG8udGV4dFNpemVB
ZGp1c3QpCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCiAgICAgLCBt
X2ltYWdlUmVzb2x1dGlvbihvLm1faW1hZ2VSZXNvbHV0aW9uKQogI2VuZGlmCkBAIC0yNTYsNiAr
MjY2LDkgQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0
eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09W
RVJGTE9XX1NDUk9MTElORykKICAgICAgICAgJiYgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyA9
PSBvLnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcKICNlbmRpZgorI2lmIEVOQUJMRShJT1NfVEVY
VF9BVVRPU0laSU5HKQorICAgICAgICAmJiB0ZXh0U2l6ZUFkanVzdCA9PSBvLnRleHRTaXplQWRq
dXN0CisjZW5kaWYKICAgICAgICAgJiYgcmVzaXplID09IG8ucmVzaXplCiAgICAgICAgICYmIHVz
ZXJTZWxlY3QgPT0gby51c2VyU2VsZWN0CiAgICAgICAgICYmIGNvbG9yU3BhY2UgPT0gby5jb2xv
clNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZUluaGVyaXRlZERhdGEuaAppbmRleCAzNGI4MGVhNTI1YjQ3YzUzOTIyNjk5ZTI3MDQwNWMw
NTRlODVlOTA2Li41MDEwNTUzY2Q1MTQ3M2MxOWFlMGUyOGI0OGYyZDc0ZWM5YjU3M2ZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmgKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSAiU3R5bGVWYXJpYWJsZURh
dGEuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisjaW5jbHVk
ZSAiVGV4dFNpemVBZGp1c3RtZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDdXJzb3JMaXN0OwpAQCAtMTM3LDYgKzE0MSwxMCBAQCBwdWJsaWM6CiAgICAgQXRv
bWljU3RyaW5nIG1fbGluZUdyaWQ7CiAgICAgdW5zaWduZWQgbV90YWJTaXplOwogCisjaWYgRU5B
QkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgVGV4dFNpemVBZGp1c3RtZW50IHRleHRTaXpl
QWRqdXN0OworI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JFU09MVVRJT04pCiAgICAg
ZmxvYXQgbV9pbWFnZVJlc29sdXRpb247CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjEyNzkx
ZTk1YmU5YzZkYjZkYThhZTczZTc5YjZlMTRjY2FkNWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRTaXplQWRqdXN0bWVudC5oCkBAIC0wLDAg
KzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKwor
I2lmbmRlZiBUZXh0U2l6ZUFkanVzdG1lbnRfaAorI2RlZmluZSBUZXh0U2l6ZUFkanVzdG1lbnRf
aAorCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisKK2VudW0gVGV4dFNpemVBZGp1
c3RtZW50VHlwZSB7IEF1dG9UZXh0U2l6ZUFkanVzdG1lbnQgPSAtMSwgTm9UZXh0U2l6ZUFkanVz
dG1lbnQgPSAtMiB9OworCitjbGFzcyBUZXh0U2l6ZUFkanVzdG1lbnQgeworcHVibGljOgorICAg
IFRleHRTaXplQWRqdXN0bWVudCgpIDogbV92YWx1ZShBdXRvVGV4dFNpemVBZGp1c3RtZW50KSB7
IH0KKyAgICBUZXh0U2l6ZUFkanVzdG1lbnQoZmxvYXQgdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkg
eyB9CisKKyAgICBmbG9hdCBwZXJjZW50YWdlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIGZs
b2F0IG11bHRpcGxpZXIoKSB7IHJldHVybiBtX3ZhbHVlIC8gMTAwOyB9CisKKyAgICBib29sIGlz
QXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gQXV0b1RleHRTaXplQWRqdXN0bWVudDsg
fQorICAgIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBOb1RleHRTaXpl
QWRqdXN0bWVudDsgfQorICAgIGJvb2wgaXNQZXJjZW50YWdlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZSA+PSAwOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFNpemVBZGp1c3Rt
ZW50JiBhbkFkanVzdG1lbnQpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gYW5BZGp1c3RtZW50
Lm1fdmFsdWU7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dFNpemVBZGp1c3RtZW50
JiBhbkFkanVzdG1lbnQpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgIT0gYW5BZGp1c3RtZW50Lm1f
dmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBmbG9hdCBtX3ZhbHVlOworfTsKKworI2VuZGlmIC8v
IEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorCisjZW5kaWYgLy8gVGV4dFNpemVBZGp1c3Rt
ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDY2MGY2OTIzYWFl
YzE0YmJjODE3N2IzZWViMTczZGYyM2ZkNWZlZjkuLjkwNjRlYmI5OTFlZjIxMWJjYWE3ODc2ZTdj
MTkxZTBjZGY5MmI0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAt
OTMyLDYgKzkzMiwzNCBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2Uo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKElPU19URVhU
X0FVVE9TSVpJTkcpCistICh2b2lkKXJlc2V0VGV4dEF1dG9zaXppbmdCZWZvcmVMYXlvdXQKK3sK
KyAgICBpZCBkb2N1bWVudFZpZXcgPSBbX3ByaXZhdGUtPndlYkZyYW1lVmlldyBkb2N1bWVudFZp
ZXddOyAgICAKKyAgICBpZiAoIVtkb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZp
ZXcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKHNlbGYpOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gY29yZUZyYW1lOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoY29yZUZyYW1lKSkgeworICAgICAg
ICBEb2N1bWVudCAqZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIGlmICghZG9jIHx8
ICFkb2MtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZG9jLT5y
ZW5kZXJlcigpLT5yZXNldFRleHRBdXRvc2l6aW5nKCk7CisgICAgfQorfQorCistICh2b2lkKV9z
ZXRWaXNpYmxlU2l6ZTooQ0dTaXplKXNpemUKK3sKKyAgICBbc2VsZiBfc2V0VGV4dEF1dG9zaXpp
bmdXaWR0aDpzaXplLndpZHRoXTsKK30KKworLSAodm9pZClfc2V0VGV4dEF1dG9zaXppbmdXaWR0
aDooQ0dGbG9hdCl3aWR0aAoreworICAgIFdlYkNvcmU6OkZyYW1lICpmcmFtZSA9IGNvcmUoc2Vs
Zik7CisgICAgZnJhbWUtPnNldFRleHRBdXRvc2l6aW5nV2lkdGgod2lkdGgpOworfQorI2VuZGlm
IC8vIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorCiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0
aW9uV2l0aEZyYWdtZW50OihET01Eb2N1bWVudEZyYWdtZW50ICopZnJhZ21lbnQgc2VsZWN0UmVw
bGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0
UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5bGUKIHsKICAgICBpZiAoX3ByaXZhdGUt
PmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuaXNOb25lKCkgfHwgIWZyYWdtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmgKaW5kZXggYzhiZGZmNzMwZTYxOTcx
MTNjZTNhZjliYmJkN2MzMjk5NmZlMjc5ZC4uZDVlYmZhODQ4YzYyNzk4MzE5OWVjZDIwNTVlOTI3
OTA5YzQzN2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0
ZS5oCkBAIC05OSw2ICs5OSwxMiBAQCB0eXBlZGVmIGVudW0gewogLSAoSlNDb250ZXh0ICopX2ph
dmFTY3JpcHRDb250ZXh0Rm9yU2NyaXB0V29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybGQ7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorLSAodm9pZClyZXNldFRl
eHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0OworLSAodm9pZClfc2V0VmlzaWJsZVNpemU6KENHU2l6
ZSlzaXplOworLSAodm9pZClfc2V0VGV4dEF1dG9zaXppbmdXaWR0aDooQ0dGbG9hdCl3aWR0aDsK
KyNlbmRpZgorCiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OihET01Eb2N1
bWVudEZyYWdtZW50ICopZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVw
bGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09M
KW1hdGNoU3R5bGU7CiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQ6KE5TU3RyaW5n
ICopdGV4dCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJl
cGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlOwogLSAodm9pZClfcmVwbGFjZVNlbGVjdGlvbldpdGhN
YXJrdXBTdHJpbmc6KE5TU3RyaW5nICopbWFya3VwU3RyaW5nIGJhc2VVUkxTdHJpbmc6KE5TU3Ry
aW5nICopYmFzZVVSTFN0cmluZyBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNl
bWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggMjU0YmIz
ZmU3YTIyMTkwNzRlY2E2OWMxZTA1NTdhZGI1OWI4N2Q3ZC4uNzEwMjcyMWM0M2FlOWQ5OWZmNWE3
YjJlZjM4N2JlZDJmMWUzN2ExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0xNTgsMyArMTU4LDcgQEAKICNkZWZp
bmUgV2ViS2l0UGFnZUNhY2hlU2l6ZVByZWZlcmVuY2VLZXkgQCJXZWJLaXRQYWdlQ2FjaGVTaXpl
UHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0T2JqZWN0Q2FjaGVTaXplUHJlZmVyZW5jZUtl
eSBAIldlYktpdE9iamVjdENhY2hlU2l6ZVByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdERl
YnVnRnVsbFBhZ2Vab29tUHJlZmVyZW5jZUtleSBAIldlYktpdERlYnVnRnVsbFBhZ2Vab29tUHJl
ZmVyZW5jZUtleSIKKworI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorI2RlZmluZSBX
ZWJLaXRNaW5pbXVtWm9vbUZvbnRTaXplUHJlZmVyZW5jZUtleSBAIldlYktpdE1pbmltdW1ab29t
Rm9udFNpemVQcmVmZXJlbmNlS2V5IgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCBkNzdkZjIzNDk0NzBkMDU0YmE4MGM4MWQ1NTM5ZWYw
ZTAwNGFmZmVmLi5hOGI2NDcwNWQxNDhkYTliNWIxYTAzMGY5ZTQ2ODRmZjM1ZmE4ZWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAgLTQxMiw3ICs0
MTIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0U2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJsZWRLZXksCiAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoSW50OldlYkFsbG93QWxsU3RvcmFnZV0sIFdlYktpdFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJL
aXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKLQorI2lmIEVOQUJMRShJ
T1NfVEVYVF9BVVRPU0laSU5HKQorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OldL
R2V0TWluaW11bVpvb21Gb250U2l6ZSgpXSwgV2ViS2l0TWluaW11bVpvb21Gb250U2l6ZVByZWZl
cmVuY2VLZXksCisjZW5kaWYKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9uZzpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBwbGljYXRpb25DYWNo
ZVRvdGFsUXVvdGEsCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9uZ0xvbmc6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVEZWZh
dWx0T3JpZ2luUXVvdGEsCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAg
V2ViS2l0UVRLaXRFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTEwODAsNiArMTA4MiwxOCBAQCBw
dWJsaWM6CiAgICAgcmV0dXJuIChOU1RpbWVJbnRlcnZhbClbc2VsZiBfZmxvYXRWYWx1ZUZvcktl
eTpXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsS2V5XTsKIH0KIAorI2lm
IEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorLSAodm9pZClfc2V0TWluaW11bVpvb21Gb250
U2l6ZTooZmxvYXQpc2l6ZQoreworICAgIFtzZWxmIF9zZXRGbG9hdFZhbHVlOnNpemUgZm9yS2V5
OldlYktpdE1pbmltdW1ab29tRm9udFNpemVQcmVmZXJlbmNlS2V5XTsKK30KKworLSAoZmxvYXQp
X21pbmltdW1ab29tRm9udFNpemUKK3sKKyAgICByZXR1cm4gW3NlbGYgX2Zsb2F0VmFsdWVGb3JL
ZXk6V2ViS2l0TWluaW11bVpvb21Gb250U2l6ZVByZWZlcmVuY2VLZXldOworfQorI2VuZGlmCisK
IC0gKGZsb2F0KVBERlNjYWxlRmFjdG9yCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9mbG9hdFZhbHVl
Rm9yS2V5OldlYktpdFBERlNjYWxlRmFjdG9yUHJlZmVyZW5jZUtleV07CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDg1M2U1YmYyMTVlNzNjZjky
NzcwM2E0ZDVkZWRiZjVlM2Y0MTM2MS4uNWU5Zjg1MDczY2RkNjFiZjFlOWUxMTEzYWI0NDBkMDRi
ODY2NmEyNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA5LTEwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVcHN0cmVhbSB0ZXh0IGF1dG9zaXppbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTExMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBpbmZy
YXN0cnVjdHVyZSB0byB0ZXN0IHRoZSBpT1MgdGV4dCBhdXRvc2l6aW5nIGNvZGUuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKHNldFRleHRBdXRv
c2l6aW5nRW5hYmxlZENhbGxiYWNrKTogQWRkZWQuCisgICAgICAgIChUZXN0UnVubmVyOjpzdGF0
aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChy
ZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFRleHRBdXRv
c2l6aW5nRW5hYmxlZCk6IEFkZGVkLgorCiAyMDEzLTA5LTA5ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbd2Via2l0cHldIFJlbW92ZSB0aGUgRGVwcmVj
YXRlZFBvcnQgY2xhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZmRiM2Fh
YWYxMjNmMWVmZDQxNGQ1MDFlYWUzMDViY2FiZmE1M2U5NC4uMjZhNTQyYWE1N2U3MGI5ZDE0NGMx
MzFkNjZmY2YzNThkMmIxMzdlMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKQEAg
LTEzMjUsNiArMTMyNSwxOSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRUYWJLZXlDeWNsZXNUaHJv
dWdoRWxlbWVudHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSgogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorI2lmIEVOQUJMRShJT1NfVEVYVF9B
VVRPU0laSU5HKQorc3RhdGljIEpTVmFsdWVSZWYgc2V0VGV4dEF1dG9zaXppbmdFbmFibGVkQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENv
dW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwor
ICAgIAorICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRU
ZXh0QXV0b3NpemluZ0VuYWJsZWQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNb
MF0pKTsKKyAgICAKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9
CisjZW5kaWYKKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0
eU1vZGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFz
IG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAtMjE0OSw2ICsyMTYyLDkgQEAgSlNTdGF0aWNGdW5jdGlv
biogVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0U3BhdGlhbE5h
dmlnYXRpb25FbmFibGVkIiwgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0U3RvcFByb3Zpc2lvbmFsRnJhbWVMb2FkcyIsIHNldFN0b3BQ
cm92aXNpb25hbEZyYW1lTG9hZHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRUYWJL
ZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMiLCBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICAg
ICB7ICJzZXRUZXh0QXV0b3NpemluZ0VuYWJsZWQiLCBzZXRUZXh0QXV0b3NpemluZ0VuYWJsZWRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorI2VuZGlmCiAgICAgICAgIHsgInNldFVzZURhc2hib2FyZENvbXBh
dGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCBzZXRVc2VyU3R5
bGVTaGVldEVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVT
aGVldExvY2F0aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKaW5kZXggZjUxMzM5MjJiNDNiNDQ5NjlkMzRlNjdk
N2UwZjg5Mzc2ZDVjNjNiZi4uOGNkYWNkOWE1ZWRlODljMzMwNzM0YWQ2ZjVhYzAzYTlmMWE2NzIw
NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaApAQCAtMTI2LDcgKzEyNiwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKICAgICBzaXplX3Qgd2ViSGlz
dG9yeUl0ZW1Db3VudCgpOwogICAgIGludCB3aW5kb3dDb3VudCgpOwotICAgIAorCisjaWYgRU5B
QkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgdm9pZCBzZXRUZXh0QXV0b3NpemluZ0VuYWJs
ZWQoYm9vbCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEVGTCkKICAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gcGxhdGZvcm1OYW1lKCkgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA3YWE2MTY4YTYwN2Q2YTU5Y2U2MGJkYzhkMDMz
ZTA2MDAxZDEyOGIzLi4yNWUzZjVkOTVmMjQ5YWFhNjI4NTU5NTA0ZDFkMWVhNGIyOTRjZTQzIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC02OTYsNiAr
Njk2LDExIEBAIHN0YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMoKQog
ICAgIH0gZWxzZQogICAgICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVk
Ok5PXTsKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgIC8vIERpc2FibGUg
dGV4dCBhdXRvc2l6aW5nIGJ5IGRlZmF1bHQuCisgICAgW3ByZWZlcmVuY2VzIF9zZXRNaW5pbXVt
Wm9vbUZvbnRTaXplOjBdOworI2VuZGlmCisKICAgICAvLyBUaGUgYmFjay9mb3J3YXJkIGNhY2hl
IGlzIGNhdXNpbmcgcHJvYmxlbXMgZHVlIHRvIGxheW91dHMgZHVyaW5nIHRyYW5zaXRpb24gZnJv
bSBvbmUgcGFnZSB0byBhbm90aGVyLgogICAgIC8vIFNvLCB0dXJuIGl0IG9mZiBmb3Igbm93LCBi
dXQgd2UgbWlnaHQgd2FudCB0byB0dXJuIGl0IGJhY2sgb24gc29tZSBkYXkuCiAgICAgW3ByZWZl
cmVuY2VzIHNldFVzZXNQYWdlQ2FjaGU6Tk9dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQppbmRleCBjOGY2YTg1OTgwYWE0N2IyZTUxOTQ3MjA4NjNlMzk4YjM3OWY3
OTdiLi5lNzAwOTNjMjI4MWQ0M2Q2MzE1ZDc2MDFlMjAwNzE3MTRkMDc3MTViIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNTY3LDYgKzU2NywxNCBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIGN5Y2xl
cykKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVu
dHM6Y3ljbGVzXTsKIH0KIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQordm9pZCBU
ZXN0UnVubmVyOjpzZXRUZXh0QXV0b3NpemluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAg
IGNvbnN0IGZsb2F0IHBob25lTWluaW11bVpvb21Gb250U2l6ZSA9IDE1OworICAgIFtbW21haW5G
cmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldE1pbmltdW1ab29tRm9udFNpemU6KGVuYWJs
ZWQgPyBwaG9uZU1pbmltdW1ab29tRm9udFNpemUgOiAwKV07Cit9CisjZW5kaWYKKwogdm9pZCBU
ZXN0UnVubmVyOjpzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZShib29sIGZsYWcpCiB7
CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NldERhc2hib2FyZEJlaGF2aW9yOldlYkRhc2hi
b2FyZEJlaGF2aW9yVXNlQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSB0bzpmbGFnXTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA3YmM4ZTE3MTYwMzAwYjVjNTljMDE4Yjk3NmQ0MmQyMzZkYTg5NGVlLi43ZWU3YjYxODZmMjRi
ZTk1ZWU2Njk5NzlhY2FlMTYxOGRhOTU0OWFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTMt
MDktMTAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1Nd
IFVwc3RyZWFtIHRleHQgYXV0b3NpemluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVuc3VyZSB3ZSBkb24ndCByZWdyZXNzIGlP
UyB0ZXh0IGF1dG9zaXppbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9y
L3RleHQtYXV0b3NpemluZy9hbm9ueW1vdXMtYmxvY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9hbm9ueW1v
dXMtYmxvY2suaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVsYXRv
ci90ZXh0LWF1dG9zaXppbmcvY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvY29udGVu
dGVkaXRhYmxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0
b3IvdGV4dC1hdXRvc2l6aW5nL2ZpcnN0LWxldHRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2ZpcnN0LWxl
dHRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3Rl
eHQtYXV0b3NpemluZy9mb250LWZhbWlseS1jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXpp
bmcvZm9udC1mYW1pbHktY2FzZS1pbnNlbnNpdGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9saXN0cy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRv
c2l6aW5nL2xpc3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11
bGF0b3IvdGV4dC1hdXRvc2l6aW5nL292ZXJmbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvb3ZlcmZsb3cu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1
dG9zaXppbmcvcGVyY2VudC1hZGp1c3QtbGVuZ3RoLWxpbmUtaGVpZ2h0LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXpp
bmcvcGVyY2VudC1hZGp1c3QtbGVuZ3RoLWxpbmUtaGVpZ2h0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRq
dXN0LW51bWJlci1saW5lLWhlaWdodC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LW51
bWJlci1saW5lLWhlaWdodC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pcGhvbmUt
c2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9wZXJjZW50LWFkanVzdC1wZXJjZW50LWxpbmUtaGVp
Z2h0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVs
YXRvci90ZXh0LWF1dG9zaXppbmcvcGVyY2VudC1hZGp1c3QtcGVyY2VudC1saW5lLWhlaWdodC5o
dG1sOiBBZGRlZC4KKwogMjAxMy0wOS0wNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBJbnRlcm5hbHMgc2hvdWxkIGFsd2F5cyBjYXVzZSBhIGxheW91dCBiZWZv
cmUgY2FsbGluZyBpbnRvIFRleHRJdGVyYXRvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvYW5vbnltb3VzLWJsb2NrLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1h
dXRvc2l6aW5nL2Fub255bW91cy1ibG9jay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRlODhl
N2RhNzIwZTQ3NTM5ZTJhODVkYzVkNjdjMjFlN2YxMTg4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2Fub255
bW91cy1ibG9jay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
ODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDQwCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc1MXgzOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDYxOTogIlRoaXMgdGVzdHMgdGhhdCBsaW5lLWhlaWdodCBhZGp1c3RtZW50cyBm
b3IgdGV4dCBhdXRvc2l6aW5nIGFyZSBwcmVzZXJ2ZWQgd2hlbiBhbm9ueW1vdXMgYmxvY2tzICIK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjE4LDApIHdpZHRoIDEzMzogImFyZSBkZXN0cm95ZWQg
ZHVyaW5nIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIwKSB3aWR0aCAxMjQ6ICJpbmNyZW1l
bnRhbCBsYXlvdXQuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTYpIHNpemUgNjAw
eDIyNAorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDYwMHg5
NgorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxKSBzaXplIDU4NXg5NAorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMSkgd2lkdGggNTgwOiAiTG9yZW0gaXBzdW0gZG9sb3Ig
c2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4iCisgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwzMykgd2lkdGggNTg1OiAiTWFlY2VuYXMgZXUgbmlzbCBsZW8sIHZlbCBjb21t
b2RvIG5pYmguIEZ1c2NlIHN1c2NpcGl0IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjUp
IHdpZHRoIDUzNTogImFyY3UgZXUgZWxpdCB2dWxwdXRhdGUgbm9uIGhlbmRyZXJpdCB2ZWxpdCBj
b25zZXF1YXQuIgorICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw5Nikgc2l6ZSA2MDB4
MAorICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw5Nikgc2l6ZSA2MDB4MTI4
CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDEpIHNpemUgNTc4eDEyNgorICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMSkgd2lkdGggNTc4OiAiRXRpYW0gdmVuZW5hdGlzIHBv
c3VlcmUgbmlzbCBpZCBzYWdpdHRpcy4gRnVzY2UgdGluY2lkdW50IgorICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMzMpIHdpZHRoIDU0NTogInZlbGl0IGF0IHNhcGllbiBwb3J0YSBvcm5hcmUu
IE1vcmJpIGVnZXN0YXMsIGRpYW0gbmVjIgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjUp
IHdpZHRoIDU3NDogInVsdHJpY2llcyBtb2xlc3RpZSwgZXN0IHZlbGl0IHVsdHJpY2llcyBsZW8s
IGFsaXF1ZXQgcGxhY2VyYXQiCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw5Nykgd2lkdGgg
MjAzOiAianVzdG8gbGliZXJvIGlkIGFyY3UuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvYW5vbnltb3VzLWJsb2NrLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3Npemlu
Zy9hbm9ueW1vdXMtYmxvY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWIxMDExYzMzY2JhMmVkMGRhNGVi
M2ZjOTk0Nzg1ZDFkOGRhYzAzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvYW5vbnltb3VzLWJsb2NrLmh0bWwK
QEAgLTAsMCArMSwxOCBAQAorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZCh0cnVlKTsK
Kzwvc2NyaXB0PgorPHA+CisgICAgVGhpcyB0ZXN0cyB0aGF0IGxpbmUtaGVpZ2h0IGFkanVzdG1l
bnRzIGZvciB0ZXh0IGF1dG9zaXppbmcgYXJlIHByZXNlcnZlZCB3aGVuIGFub255bW91cyBibG9j
a3MKKyAgICBhcmUgZGVzdHJveWVkIGR1cmluZyBpbmNyZW1lbnRhbCBsYXlvdXQuCis8L3A+Cis8
ZGl2IHN0eWxlPSJ3aWR0aDogNjAwcHg7IGxpbmUtaGVpZ2h0OiAyMHB4OyI+CisgICAgTG9yZW0g
aXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTWFlY2Vu
YXMgZXUgbmlzbCBsZW8sIHZlbCBjb21tb2RvIG5pYmguIEZ1c2NlIHN1c2NpcGl0IGFyY3UgZXUg
ZWxpdCB2dWxwdXRhdGUgbm9uIGhlbmRyZXJpdCB2ZWxpdCBjb25zZXF1YXQuCisgICAgPGRpdiBp
ZD0idGFyZ2V0Ij48L2Rpdj4KKyAgICBFdGlhbSB2ZW5lbmF0aXMgcG9zdWVyZSBuaXNsIGlkIHNh
Z2l0dGlzLiBGdXNjZSB0aW5jaWR1bnQgdmVsaXQgYXQgc2FwaWVuIHBvcnRhIG9ybmFyZS4gTW9y
YmkgZWdlc3RhcywgZGlhbSBuZWMgdWx0cmljaWVzIG1vbGVzdGllLCBlc3QgdmVsaXQgdWx0cmlj
aWVzIGxlbywgYWxpcXVldCBwbGFjZXJhdCBqdXN0byBsaWJlcm8gaWQgYXJjdS4KKzwvZGl2Pgor
PHNjcmlwdD4KKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICB2YXIgcHJlID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvcigiZGl2I3RhcmdldCIpOworICAgIHByZS5wYXJlbnROb2RlLnJl
cGxhY2VDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwgcHJlKTsKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0
LWF1dG9zaXppbmcvY29udGVudGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2NvbnRlbnRlZGl0YWJsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZjOTdkMDc3YTgyNGY3ZjcwNjg0M2RmNTI5M2ZmZDJk
ZjY3ZWFmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1z
aW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2NvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzOSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JP
RFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDAp
IHNpemUgNzg0eDIwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUx
NHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ0MDogIlRoaXMgdGVzdHMg
dGhhdCB0ZXh0IGF1dG9zaXppbmcgaXMgbm90IGFwcGxpZWQgdG8gZWRpdGFibGUgZWxlbWVudHMg
YW5kICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDM5LDApIHdpZHRoIDc1OiAiZG9jdW1lbnRz
LiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM2KSBzaXplIDYwMHg4MAorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1OTV4MzkKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA1OTE6ICJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29u
c2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBNYWVjZW5hcyBldSBuaXNsIGxlbywgdmVsIGNvbW1v
ZG8iCisgICAgICAgICAgdGV4dCBydW4gYXQgKDU5MCwwKSB3aWR0aCA1OiAiICIKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwyMCkgd2lkdGggNDY0OiAibmliaC4gRnVzY2Ugc3VzY2lwaXQgYXJj
dSBldSBlbGl0IHZ1bHB1dGF0ZSBub24gaGVuZHJlcml0IHZlbGl0IGNvbnNlcXVhdC4gIgorICAg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCw0MCkgc2l6ZSA2MDB4MzkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0
MCkgd2lkdGggNTc5OiAiRXRpYW0gdmVuZW5hdGlzIHBvc3VlcmUgbmlzbCBpZCBzYWdpdHRpcy4g
RnVzY2UgdGluY2lkdW50IHZlbGl0IGF0IHNhcGllbiBwb3J0YSBvcm5hcmUuIE1vcmJpIgorICAg
ICAgICAgIHRleHQgcnVuIGF0ICg1NzgsNDApIHdpZHRoIDU6ICIgIgorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDYwKSB3aWR0aCA1OTk6ICJlZ2VzdGFzLCBkaWFtIG5lYyB1bHRyaWNpZXMgbW9s
ZXN0aWUsIGVzdCB2ZWxpdCB1bHRyaWNpZXMgbGVvLCBhbGlxdWV0IHBsYWNlcmF0IGp1c3RvIGxp
YmVybyBpZCBhcmN1LiIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTk4LDYwKSB3aWR0aCAyOiAi
ICIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDExNikgc2l6ZSA3ODR4MTU0
CisgICAgICAgIFJlbmRlclBhcnRPYmplY3Qge0lGUkFNRX0gYXQgKDAsMCkgc2l6ZSAzMDR4MTU0
IFtib3JkZXI6ICgycHggaW5zZXQgIzAwMDAwMCldCisgICAgICAgICAgbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA2MDh4MTUwCisgICAgICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgMzAweDE1
MAorICAgICAgICAgIGxheWVyIGF0ICgwLDApIHNpemUgMzAweDE1MAorICAgICAgICAgICAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgMzAweDE1MAorICAgICAgICAgICAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDI4NHgxMzQKKyAgICAgICAgICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDYwMHg4MAorICAgICAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNTk1eDM5CisgICAgICAgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU5MTogIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0
LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIE1hZWNlbmFzIGV1IG5pc2wgbGVvLCB2ZWwg
Y29tbW9kbyIKKyAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDU5MCwwKSB3aWR0aCA1
OiAiICIKKyAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDQ2NDog
Im5pYmguIEZ1c2NlIHN1c2NpcGl0IGFyY3UgZXUgZWxpdCB2dWxwdXRhdGUgbm9uIGhlbmRyZXJp
dCB2ZWxpdCBjb25zZXF1YXQuICIKKyAgICAgICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQg
KDAsMCkgc2l6ZSAweDAKKyAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCw0MCkgc2l6ZSA2MDB4MzkKKyAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDAp
IHdpZHRoIDU3OTogIkV0aWFtIHZlbmVuYXRpcyBwb3N1ZXJlIG5pc2wgaWQgc2FnaXR0aXMuIEZ1
c2NlIHRpbmNpZHVudCB2ZWxpdCBhdCBzYXBpZW4gcG9ydGEgb3JuYXJlLiBNb3JiaSIKKyAgICAg
ICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDU3OCw0MCkgd2lkdGggNTogIiAiCisgICAgICAg
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDYwKSB3aWR0aCA1OTk6ICJlZ2VzdGFzLCBkaWFt
IG5lYyB1bHRyaWNpZXMgbW9sZXN0aWUsIGVzdCB2ZWxpdCB1bHRyaWNpZXMgbGVvLCBhbGlxdWV0
IHBsYWNlcmF0IGp1c3RvIGxpYmVybyBpZCBhcmN1LiIKKyAgICAgICAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDU5OCw2MCkgd2lkdGggMjogIiAgICAiCisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDB4MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvY29udGVudGVkaXRhYmxlLmh0bWwgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9jb250
ZW50ZWRpdGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjg2NTZiMTgzMjRlN2Y4MDY1N2IzMWE4YTE4
YmZlMWJiMTk2OGExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBo
b25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvY29udGVudGVkaXRhYmxlLmh0bWwKQEAgLTAs
MCArMSwyNCBAQAorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZCh0cnVlKTsKKzwvc2Ny
aXB0PgorPHA+CisgICAgVGhpcyB0ZXN0cyB0aGF0IHRleHQgYXV0b3NpemluZyBpcyBub3QgYXBw
bGllZCB0byBlZGl0YWJsZSBlbGVtZW50cyBhbmQKKyAgICBkb2N1bWVudHMuCis8L3A+Cis8ZGl2
IGNvbnRlbnRlZGl0YWJsZSBzdHlsZT0id2lkdGg6IDYwMHB4OyI+CisgICAgTG9yZW0gaXBzdW0g
ZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTWFlY2VuYXMgZXUg
bmlzbCBsZW8sIHZlbCBjb21tb2RvIG5pYmguIEZ1c2NlIHN1c2NpcGl0IGFyY3UgZXUgZWxpdCB2
dWxwdXRhdGUgbm9uIGhlbmRyZXJpdCB2ZWxpdCBjb25zZXF1YXQuCisgICAgPGJyPgorICAgIEV0
aWFtIHZlbmVuYXRpcyBwb3N1ZXJlIG5pc2wgaWQgc2FnaXR0aXMuIEZ1c2NlIHRpbmNpZHVudCB2
ZWxpdCBhdCBzYXBpZW4gcG9ydGEgb3JuYXJlLiBNb3JiaSBlZ2VzdGFzLCBkaWFtIG5lYyB1bHRy
aWNpZXMgbW9sZXN0aWUsIGVzdCB2ZWxpdCB1bHRyaWNpZXMgbGVvLCBhbGlxdWV0IHBsYWNlcmF0
IGp1c3RvIGxpYmVybyBpZCBhcmN1LgorPC9kaXY+Cis8aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0
bWwsCisgICAgPHNjcmlwdD4KKyAgICAgICAgZG9jdW1lbnQuZGVzaWduTW9kZSA9ICJvbiI7Cisg
ICAgPC9zY3JpcHQ+CisgICAgPGRpdiBjb250ZW50ZWRpdGFibGUgc3R5bGU9IndpZHRoOiA2MDBw
eDsiPgorICAgICAgICBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRp
cGlzY2luZyBlbGl0LiBNYWVjZW5hcyBldSBuaXNsIGxlbywgdmVsIGNvbW1vZG8gbmliaC4gRnVz
Y2Ugc3VzY2lwaXQgYXJjdSBldSBlbGl0IHZ1bHB1dGF0ZSBub24gaGVuZHJlcml0IHZlbGl0IGNv
bnNlcXVhdC4KKyAgICAgICAgPGJyPgorICAgICAgICBFdGlhbSB2ZW5lbmF0aXMgcG9zdWVyZSBu
aXNsIGlkIHNhZ2l0dGlzLiBGdXNjZSB0aW5jaWR1bnQgdmVsaXQgYXQgc2FwaWVuIHBvcnRhIG9y
bmFyZS4gTW9yYmkgZWdlc3RhcywgZGlhbSBuZWMgdWx0cmljaWVzIG1vbGVzdGllLCBlc3QgdmVs
aXQgdWx0cmljaWVzIGxlbywgYWxpcXVldCBwbGFjZXJhdCBqdXN0byBsaWJlcm8gaWQgYXJjdS4K
KyAgICA8L2Rpdj4KKyc+Cis8L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2ZpcnN0LWxldHRlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3Np
emluZy9maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYWE5ZmZmMGU1YzRh
NGZjOGE5ZmI2MTg3ZGIzODFiM2UxODRlNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9maXJzdC1sZXR0ZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgyNworICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAzNjZ4MjYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAz
NjY6ICJUaGUgZm9sbG93aW5nIGxpbmVzIHNob3VsZCBiZSBpZGVudGljYWwuIgorICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDQzKSBzaXplIDc4NHgyNworICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMTd4MjYgW2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTd4MjYKKyAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDE3OiAiQSIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgx
NiwwKSBzaXplIDIzeDI2CisgICAgICAgICAgdGV4dCBydW4gYXQgKDE2LDApIHdpZHRoIDIzOiAi
LVoiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsODYpIHNpemUgNzg0eDI3CisgICAgICAg
IFJlbmRlcklubGluZSAoZ2VuZXJhdGVkKSBhdCAoMCwwKSBzaXplIDE3eDI2IFtjb2xvcj0jMDA4
MDAwXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE3eDI2Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzogIkEiCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMTYsMCkgc2l6ZSAyM3gyNgorICAgICAgICAgIHRleHQgcnVuIGF0
ICgxNiwwKSB3aWR0aCAyMzogIi1aIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDEyOSkg
c2l6ZSA3ODR4MjcKKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSBhdCAoMCwwKSBzaXpl
IDE3eDI3IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDE3eDI2CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzog
IkEiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTcsMCkgc2l6ZSAyMngyNgorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgxNywwKSB3aWR0aCAyMjogIi1aIgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvZmlyc3Qt
bGV0dGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQt
YXV0b3NpemluZy9maXJzdC1sZXR0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzUxNzljODUxOTdhNDc3
Y2M1Y2IzZmMzYTNmYTgwNzFlOTI0MWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvZmlyc3QtbGV0dGVyLmh0
bWwKQEAgLTAsMCArMSwyMiBAQAorPGh0bWw+Cis8aGVhZD4KKwk8c3R5bGU+CisgICAgICAgIHAu
Zmlyc3RMZXR0ZXI6Zmlyc3QtbGV0dGVyIHsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICAgICAgfQorICAgICAgICBwLmZsb2F0OmZpcnN0LWxldHRlciB7CisgICAgICAgICAgICBmbG9h
dDogbGVmdDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRv
c2l6aW5nRW5hYmxlZCh0cnVlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAg
IDxwPlRoZSBmb2xsb3dpbmcgbGluZXMgc2hvdWxkIGJlIGlkZW50aWNhbC48L3A+CisgICAgPHA+
PHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuIj5BPC9zcGFuPi1aPC9wPgorICAgIDxwIGNsYXNzPSJm
aXJzdExldHRlciI+QS1aPC9wPgorICAgIDxwIGNsYXNzPSJmaXJzdExldHRlciBmbG9hdCI+QS1a
PC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvZm9udC1mYW1pbHktY2FzZS1pbnNlbnNp
dGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9y
L3RleHQtYXV0b3NpemluZy9mb250LWZhbWlseS1jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MjFhZDk1MTdiZDAyOGM0MWMwNTFmNjcxYzM4YjQ4MzRjYTY1MjVlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90
ZXh0LWF1dG9zaXppbmcvZm9udC1mYW1pbHktY2FzZS1pbnNlbnNpdGl2ZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMSBAQAorRWFjaCByb3cgb2YgdGhlIHRhYmxlIHNob3VsZCBoYXZlIHRleHQg
dGhhdCBpcyB0aGUgc2FtZSBzaXplLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyA8Zm9udD4gcm93cyB3ZXJlIGFsbCB0aGUgc2FtZSBzaXplCitQQVNTIDxzcGFuPiByb3dz
IHdlcmUgYWxsIHRoZSBzYW1lIHNpemUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhv
bmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9mb250LWZhbWlseS1jYXNlLWluc2Vuc2l0aXZl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3Np
emluZy9mb250LWZhbWlseS1jYXNlLWluc2Vuc2l0aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUxM2Ez
OGM5OWExODAyNmNhOTBkMWIwYzkyNTE5NjlmNzk5NzczMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2ZvbnQt
ZmFtaWx5LWNhc2UtaW5zZW5zaXRpdmUuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q2FzZS1JbnNlbnNpdGl2ZSBGb250IEZhbWls
eSBOYW1lIENvbXBhcmlzb25zPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRvc2l6aW5nRW5h
YmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2IGlkPSJjb250ZW50Ij4K
KworICAgIDwhLS0gSFRNTCA8Zm9udD4gU3R5bGluZyAtLT4KKyAgICA8dGFibGUgd2lkdGg9IjYw
MCI+CisgICAgICAgIDx0cj48dGQ+PGZvbnQgZmFjZT0iVkVSREFOQSI+VGVzdDwvZm9udD48L3Rk
PjwvdHI+CisgICAgICAgIDx0cj48dGQ+PGZvbnQgZmFjZT0iVkVSREFOQSI+VGVzdDwvZm9udD48
L3RkPjwvdHI+CisgICAgICAgIDx0cj48dGQ+PGZvbnQgZmFjZT0iVmVyZGFuYSI+VGVzdDwvZm9u
dD48L3RkPjwvdHI+CisgICAgICAgIDx0cj48dGQ+PGZvbnQgZmFjZT0iVkVSREFOQSI+VGVzdDwv
Zm9udD48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKworICAgIDwhLS0gQ1NTIGZvbnQtZmFtaWx5
IFN0eWxpbmcgLS0+CisgICAgPHRhYmxlIHdpZHRoPSI2MDAiPgorICAgICAgICA8dHI+PHRkPjxz
cGFuIGNsYXNzPSJ0ZXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6VkVSREFOQSI+VGVzdDwvc3Bhbj48
L3RkPjwvdHI+CisgICAgICAgIDx0cj48dGQ+PHNwYW4gY2xhc3M9InRlc3QiIHN0eWxlPSJmb250
LWZhbWlseTpWRVJEQU5BIj5UZXN0PC9zcGFuPjwvdGQ+PC90cj4KKyAgICAgICAgPHRyPjx0ZD48
c3BhbiBjbGFzcz0idGVzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OlZlcmRhbmEiPlRlc3Q8L3NwYW4+
PC90ZD48L3RyPgorICAgICAgICA8dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXN0IiBzdHlsZT0iZm9u
dC1mYW1pbHk6VkVSREFOQSI+VGVzdDwvc3Bhbj48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKwor
PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignRWFjaCByb3cgb2YgdGhlIHRhYmxlIHNo
b3VsZCBoYXZlIHRleHQgdGhhdCBpcyB0aGUgc2FtZSBzaXplLicpOworCitmdW5jdGlvbiB2ZXJp
ZnlFcXVhbFNpemVzKGxpc3QsIGRlc2NyaXB0aW9uKSB7CisgICAgdmFyIGhhZEZhaWx1cmUgPSBm
YWxzZTsKKyAgICB2YXIgZmlyc3RSb3dSZWN0ID0gbGlzdFswXS5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKTsKKyAgICBmb3IgKHZhciBpPTA7IGk8bGlzdC5sZW5ndGg7ICsraSkgeworICAgICAgICB2
YXIgcm93ID0gbGlzdFtpXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgaWYgKHJv
dy53aWR0aCAhPT0gZmlyc3RSb3dSZWN0LndpZHRoIHx8IHJvdy5oZWlnaHQgIT09IGZpcnN0Um93
UmVjdC5oZWlnaHQpIHsKKyAgICAgICAgICAgIGhhZEZhaWx1cmUgPSB0cnVlOworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgnUm93ICcgKyBpICsgJzogd2FzICcgKyByb3cud2lkdGggKyAneCcgKyBy
b3cuaGVpZ2h0ICsKKyAgICAgICAgICAgICAgJyBidXQgc2hvdWxkIGhhdmUgYmVlbiAnICsgZmly
c3RSb3dSZWN0LndpZHRoICsgJ3gnICsgZmlyc3RSb3dSZWN0LmhlaWdodCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoIWhhZEZhaWx1cmUpCisgICAgICAgIHRlc3RQYXNzZWQoZGVzY3Jp
cHRpb24gKyAnIHJvd3Mgd2VyZSBhbGwgdGhlIHNhbWUgc2l6ZScpOworfQorCit3aW5kb3cub25s
b2FkID0gZnVuY3Rpb24oKSB7CisgICAgdmVyaWZ5RXF1YWxTaXplcyhkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCdmb250JyksICc8Zm9udD4nKTsKKyAgICB2ZXJpZnlFcXVhbFNpemVzKGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3NwYW4udGVzdCcpLCAnPHNwYW4+Jyk7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRlbnQnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11
bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2xpc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2xpc3RzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42MDc2MzE4NTQ1NzkzODRiZjFiYzhhNmQ1Mzg0YjQ5MDZiNzgwZGY1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90
ZXh0LWF1dG9zaXppbmcvbGlzdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYw
MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4
NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDI3
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMyM3gyNgorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMyMzogIicxJyBtYXJrZXJzIHNob3VsZCBiZSB0
aGUgc2FtZSBzaXplIgorICAgICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCw0Mykgc2l6ZSA3ODR4
NTQKKyAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3NDR4NTQKKyAg
ICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc0NHgyNworICAg
ICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoLTI5LDApIHNpemUgMjJ4MjY6ICIxIgorICAg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzh4MjYKKyAgICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzg6ICJmaXJzdCIKKyAgICAgICAgICBSZW5k
ZXJCbG9jayB7T0x9IGF0ICgwLDI3KSBzaXplIDc0NHgyNworICAgICAgICAgICAgUmVuZGVyTGlz
dEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3MDR4MjcKKyAgICAgICAgICAgICAgUmVuZGVyTGlz
dE1hcmtlciBhdCAoLTI5LDApIHNpemUgMjJ4MjY6ICIxIgorICAgICAgICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2NHgyNgorICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDY0OiAic2Vjb25kIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvbGlzdHMuaHRtbCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2xpc3RzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDI2MzY3YjFiYTk4OWYwZjY1NTVhODlhMDVhNGEwMzU0ZmNhNDNkOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3Iv
dGV4dC1hdXRvc2l6aW5nL2xpc3RzLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgd2lu
ZG93LnRlc3RSdW5uZXIuc2V0VGV4dEF1dG9zaXppbmdFbmFibGVkKHRydWUpOworICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgJzEnIG1hcmtlcnMgc2hvdWxkIGJlIHRoZSBzYW1l
IHNpemUKKyAgICA8b2w+CisgICAgICAgIDxsaT5maXJzdAorICAgICAgICA8b2w+PGxpPnNlY29u
ZDwvbGk+PC9vbD4KKyAgICAgICAgPC9saT4KKyAgICA8L29sPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1
dG9zaXppbmcvb3ZlcmZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBo
b25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvb3ZlcmZsb3ctZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI5YzM4Yjk3YmRhOGFhYzM5ZjAwNjJlMmYwNTk5ZjFmZGJhMGJjNzkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0
b3NpemluZy9vdmVyZmxvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5MSBAQAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4MTU3MgorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCwxMCkgc2l6ZSA3ODR4
NTgwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMTAsMCkgc2l6ZSA3NjR4MTI0IFtib3Jk
ZXI6ICgycHggc29saWQgIzAwMDAwMCldCisgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMTIs
MjgpIHNpemUgNzQweDgwCisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXpl
IDcxNXgzOQorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzE1
eDM5CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcxNTogIlRoaXMgdGV4
dCBzaG91bGRuJ3QgYXV0b3NpemUuIFVzdWFsbHkgdGhpcyBhcHBlYXJzIHRvIGJlIGEgZGVzaWdu
ZXIncyBmYXVsdCwgd2hlbiB0aGUgbmV3IHRleHQgaXMgYWRkZWQsIGJ1dCIKKyAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDU4NTogImJsb2NrIGhlaWdodCBpcyBub3QgY2hh
bmdlZC4gT3IgYW4gb3ZlcmZsb3cgd2FzIG1hZGUgaW50ZW50aW9uYWxseSBmb3Igc29tZSBwdXJw
b3NlLiIKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDU4NCwyMCkgc2l6ZSA3Mzl4
NTkKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICg1ODQsMjApIHdpZHRoIDE0ODogIiBMb3JlbSBp
cHN1bSBkb2xvciBzaXQiCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0MCkgd2lkdGggNzM5
OiAiYW1ldCwgY29uc2VjdGV0dWVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRpYW0gbm9udW1teSBu
aWJoIGV1aXNtb2QgdGluY2lkdW50IHV0IGxhb3JlZXQgZG9sb3JlIG1hZ25hIGFsaXF1YW0gZXJh
dCIKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDYwKSB3aWR0aCA1NzogInZvbHV0cGF0LiIK
KyAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgxMiwxMjQpIHNpemUgNzQweDgwCisgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzM4eDc5CisgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2ODY6ICJVdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFt
LCBxdWlzIG5vc3RydWQgZXhlcmNpIHRhdGlvbiB1bGxhbWNvcnBlciBzdXNjaXBpdCBsb2JvcnRp
cyBuaXNsIHV0IGFsaXF1aXAgZXggZWEiCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMCkg
d2lkdGggNzIwOiAiY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUg
ZG9sb3IgaW4gaGVuZHJlcml0IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNl
cXVhdCwgdmVsIgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDApIHdpZHRoIDczODogImls
bHVtIGRvbG9yZSBldSBmZXVnaWF0IG51bGxhIGZhY2lsaXNpcyBhdCB2ZXJvIGVyb3MgZXQgYWNj
dW1zYW4gZXQgaXVzdG8gb2RpbyBkaWduaXNzaW0gcXVpIGJsYW5kaXQgcHJhZXNlbnQgbHVwdGF0
dW0iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2MCkgd2lkdGggMzQ2OiAienpyaWwgZGVs
ZW5pdCBhdWd1ZSBkdWlzIGRvbG9yZSB0ZSBmZXVnYWl0IG51bGxhIGZhY2lsaXNpLiIKKyAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIyLDIyMCkgc2l6ZSA3MjB4MTM0MiBbYm9yZGVyOiAo
MnB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0
ICgxMiwxMikgc2l6ZSA2OTZ4NDAKKyAgICAgICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAs
MCkgc2l6ZSAxMDh4MTkKKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMTA4eDE5CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTA4
OiAiU3RpbGwgc2hvdWxkIG5vdC4iCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDEwNywwKSBzaXplIDY5NngzOQorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTA3LDApIHdp
ZHRoIDU4OTogIiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dWVyIGFkaXBp
c2NpbmcgZWxpdCwgc2VkIGRpYW0gbm9udW1teSBuaWJoIGV1aXNtb2QiCisgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDIwKSB3aWR0aCAzNTc6ICJ0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xv
cmUgbWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0LiIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDEyLDY4KSBzaXplIDY5Nng4MAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgNjg2eDc5CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDY4NjogIlV0IHdpc2kgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVy
Y2kgdGF0aW9uIHVsbGFtY29ycGVyIHN1c2NpcGl0IGxvYm9ydGlzIG5pc2wgdXQgYWxpcXVpcCBl
eCBlYSIKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDYyNTogImNvbW1v
ZG8gY29uc2VxdWF0LiBEdWlzIGF1dGVtIHZlbCBldW0gaXJpdXJlIGRvbG9yIGluIGhlbmRyZXJp
dCBpbiB2dWxwdXRhdGUgdmVsaXQgZXNzZSBtb2xlc3RpZSIKKyAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsNDApIHdpZHRoIDY2NzogImNvbnNlcXVhdCwgdmVsIGlsbHVtIGRvbG9yZSBldSBm
ZXVnaWF0IG51bGxhIGZhY2lsaXNpcyBhdCB2ZXJvIGVyb3MgZXQgYWNjdW1zYW4gZXQgaXVzdG8g
b2RpbyBkaWduaXNzaW0gcXVpIgorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2MCkgd2lk
dGggNTEyOiAiYmxhbmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3VlIGR1
aXMgZG9sb3JlIHRlIGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuIgorICAgICAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgyMiwxNjQpIHNpemUgNjc2eDExNTYgW2JvcmRlcjogKDJweCBzb2xpZCAj
MDAwMDAwKV0KKyAgICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgxMiwxMikg
c2l6ZSA2NTJ4NDAKKyAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXpl
IDEwOHgxOQorICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDEwOHgxOQorICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTA4OiAi
U3RpbGwgc2hvdWxkIG5vdC4iCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MTA3LDApIHNpemUgNjM4eDM5CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEwNywwKSB3
aWR0aCA1MzE6ICIgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlw
aXNjaW5nIGVsaXQsIHNlZCBkaWFtIG5vbnVtbXkgbmliaCIKKyAgICAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwyMCkgd2lkdGggNDE1OiAiZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBk
b2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0LiIKKyAgICAgICAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMTIsNjgpIHNpemUgNjUyeDgwCisgICAgICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDY0OHg3OQorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDY0ODogIlV0IHdpc2kgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9z
dHJ1ZCBleGVyY2kgdGF0aW9uIHVsbGFtY29ycGVyIHN1c2NpcGl0IGxvYm9ydGlzIG5pc2wgdXQg
YWxpcXVpcCIKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMCkgd2lkdGggNjA0OiAi
ZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9sb3Ig
aW4gaGVuZHJlcml0IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIgorICAgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDQwKSB3aWR0aCA2MzU6ICJtb2xlc3RpZSBjb25zZXF1YXQsIHZlbCBpbGx1
bSBkb2xvcmUgZXUgZmV1Z2lhdCBudWxsYSBmYWNpbGlzaXMgYXQgdmVybyBlcm9zIGV0IGFjY3Vt
c2FuIGV0IGl1c3RvIG9kaW8iCisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjApIHdp
ZHRoIDYwMzogImRpZ25pc3NpbSBxdWkgYmxhbmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBk
ZWxlbml0IGF1Z3VlIGR1aXMgZG9sb3JlIHRlIGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuIgorICAg
ICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIyLDE2NCkgc2l6ZSA2MzJ4OTcwIFtib3Jk
ZXI6ICgycHggc29saWQgIzAwMDAwMCldCisgICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMTIsMjgpIHNpemUgNjA4eDE5MgorICAgICAgICAgICAgICAgIFJlbmRlcklubGluZSB7Qn0g
YXQgKDAsMCkgc2l6ZSA1NDJ4OTQKKyAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwxKSBzaXplIDU0Mng5NAorICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwxKSB3aWR0aCA1NDI6ICJUaGlzIHRleHQgc2hvdWxkIGF1dG9yZXNpemUuIFNvbWV0aW1lcyBj
b250ZW50IGlzIgorICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzMykgd2lkdGgg
NTQyOiAiYmVpbmcgcHV0IGluIGZpeGVkLWhlaWdodCAoYnkgYSBtaXN0YWtlKSBibG9ja3MgdG8i
CisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDY1KSB3aWR0aCAxOTk6ICJhcHBs
eSBzb21lIHN0eWxlcy4iCisgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgx
OTgsNjUpIHNpemUgNTc2eDEyNgorICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE5OCw2
NSkgd2lkdGggMzAzOiAiIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCIKKyAgICAgICAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDk3KSB3aWR0aCA1NTQ6ICJjb25zZWN0ZXR1ZXIgYWRpcGlz
Y2luZyBlbGl0LCBzZWQgZGlhbSBub251bW15IG5pYmgiCisgICAgICAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwxMjkpIHdpZHRoIDU3NjogImV1aXNtb2QgdGluY2lkdW50IHV0IGxhb3JlZXQg
ZG9sb3JlIG1hZ25hIGFsaXF1YW0gZXJhdCIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDE2MSkgd2lkdGggOTI6ICJ2b2x1dHBhdC4iCisgICAgICAgICAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMTIsMjM2KSBzaXplIDYwOHgyNTYKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMSkgc2l6ZSA2MDB4MjU0CisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxKSB3aWR0aCA2MDA6ICJVdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlz
IG5vc3RydWQgZXhlcmNpIHRhdGlvbiIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDMzKSB3aWR0aCA1MDg6ICJ1bGxhbWNvcnBlciBzdXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFs
aXF1aXAgZXggZWEiCisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2NSkgd2lkdGgg
NTg4OiAiY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9sb3Ig
aW4iCisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw5Nykgd2lkdGggNTc3OiAiaGVu
ZHJlcml0IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNlcXVhdCwgdmVsIgor
ICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTI5KSB3aWR0aCA1Mzc6ICJpbGx1bSBk
b2xvcmUgZXUgZmV1Z2lhdCBudWxsYSBmYWNpbGlzaXMgYXQgdmVybyBlcm9zIGV0IgorICAgICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTYxKSB3aWR0aCA1NTc6ICJhY2N1bXNhbiBldCBp
dXN0byBvZGlvIGRpZ25pc3NpbSBxdWkgYmxhbmRpdCBwcmFlc2VudCIKKyAgICAgICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDE5Mykgd2lkdGggNTc3OiAibHVwdGF0dW0genpyaWwgZGVsZW5p
dCBhdWd1ZSBkdWlzIGRvbG9yZSB0ZSBmZXVnYWl0IG51bGxhIgorICAgICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMjI1KSB3aWR0aCA3ODogImZhY2lsaXNpLiIKKyAgICAgICAgICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDIyLDUwOCkgc2l6ZSA1ODh4NDQwIFtib3JkZXI6ICgycHgg
c29saWQgIzAwMDAwMCldCisgICAgICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDEyLDEyKSBzaXplIDU2NHgxMjgKKyAgICAgICAgICAgICAgICAgIFJlbmRlcklubGluZSB7
Qn0gYXQgKDAsMCkgc2l6ZSAxNjZ4MzAKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDEpIHNpemUgMTY2eDMwCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMSkgd2lkdGggMTY2OiAiU2hvdWxkIGFzIHdlbGwuIgorICAgICAgICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNjUsMSkgc2l6ZSA1NTR4MTI2CisgICAgICAgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgxNjUsMSkgd2lkdGggMzAzOiAiIExvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCIKKyAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzMpIHdp
ZHRoIDU1NDogImNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkaWFtIG5vbnVtbXkg
bmliaCIKKyAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjUpIHdpZHRoIDUzMDog
ImV1aXNtb2QgdGluY2lkdW50IHV0IGxhb3JlZXQgZG9sb3JlIG1hZ25hIGFsaXF1YW0iCisgICAg
ICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDk3KSB3aWR0aCAxMzg6ICJlcmF0IHZvbHV0
cGF0LiIKKyAgICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDEyLDE1Nikgc2l6ZSA1
NjR4MjU2CisgICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMSkgc2l6
ZSA1NjR4MjU0CisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEpIHdpZHRoIDUz
NDogIlV0IHdpc2kgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2kiCisg
ICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDMzKSB3aWR0aCA1NDQ6ICJ0YXRpb24g
dWxsYW1jb3JwZXIgc3VzY2lwaXQgbG9ib3J0aXMgbmlzbCB1dCBhbGlxdWlwIGV4IgorICAgICAg
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2NSkgd2lkdGggNTI5OiAiZWEgY29tbW9kbyBj
b25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUiCisgICAgICAgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDk3KSB3aWR0aCA1MTA6ICJkb2xvciBpbiBoZW5kcmVyaXQgaW4gdnVs
cHV0YXRlIHZlbGl0IGVzc2UgbW9sZXN0aWUiCisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDEyOSkgd2lkdGggNTY0OiAiY29uc2VxdWF0LCB2ZWwgaWxsdW0gZG9sb3JlIGV1IGZl
dWdpYXQgbnVsbGEgZmFjaWxpc2lzIGF0IgorICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwxNjEpIHdpZHRoIDUxMzogInZlcm8gZXJvcyBldCBhY2N1bXNhbiBldCBpdXN0byBvZGlv
IGRpZ25pc3NpbSBxdWkiCisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5Mykg
d2lkdGggNTEzOiAiYmxhbmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3Vl
IGR1aXMiCisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIyNSkgd2lkdGggMzEz
OiAiZG9sb3JlIHRlIGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvb3ZlcmZsb3cu
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6
aW5nL292ZXJmbG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ1YTg5NDgyY2UxYTA2NzRiMGIzMzExYmJj
OGFkYWNjNDczNzU4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lw
aG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL292ZXJmbG93Lmh0bWwKQEAgLTAsMCArMSwz
NCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGRp
diB7CisgICAgICAgIGJvcmRlci1zdHlsZTpzb2xpZDsKKyAgICAgICAgYm9yZGVyLXdpZHRoOjJw
eDsKKyAgICAgICAgcGFkZGluZzogMTBweDsKKyAgICAgICAgbWFyZ2luOiAxMHB4OworICAgIH07
CisgICAgPC9zdHlsZT4KKworICAgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5zZXRUZXh0QXV0b3NpemluZ0VuYWJsZWQodHJ1
ZSk7CisgICAgPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgc3R5bGU9Imhl
aWdodDoxMDBweCI+CisgICAgICAgIDxwPjxiPlRoaXMgdGV4dCBzaG91bGRuJ3QgYXV0b3NpemUu
IFVzdWFsbHkgdGhpcyBhcHBlYXJzIHRvIGJlIGEgZGVzaWduZXIncyBmYXVsdCwgd2hlbiB0aGUg
bmV3IHRleHQgaXMgYWRkZWQsIGJ1dCBibG9jayBoZWlnaHQgaXMgbm90IGNoYW5nZWQuIE9yIGFu
IG92ZXJmbG93IHdhcyBtYWRlIGludGVudGlvbmFsbHkgZm9yIHNvbWUgcHVycG9zZS48L2I+IExv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCBz
ZWQgZGlhbSBub251bW15IG5pYmggZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUg
bWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0LiA8cD5VdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVu
aWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpIHRhdGlvbiB1bGxhbWNvcnBlciBzdXNjaXBpdCBsb2Jv
cnRpcyBuaXNsIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZW0g
dmVsIGV1bSBpcml1cmUgZG9sb3IgaW4gaGVuZHJlcml0IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3Nl
IG1vbGVzdGllIGNvbnNlcXVhdCwgdmVsIGlsbHVtIGRvbG9yZSBldSBmZXVnaWF0IG51bGxhIGZh
Y2lsaXNpcyBhdCB2ZXJvIGVyb3MgZXQgYWNjdW1zYW4gZXQgaXVzdG8gb2RpbyBkaWduaXNzaW0g
cXVpIGJsYW5kaXQgcHJhZXNlbnQgbHVwdGF0dW0genpyaWwgZGVsZW5pdCBhdWd1ZSBkdWlzIGRv
bG9yZSB0ZSBmZXVnYWl0IG51bGxhIGZhY2lsaXNpLgorICAgICAgICA8ZGl2PgorICAgICAgICAg
ICAgPGI+U3RpbGwgc2hvdWxkIG5vdC48L2I+IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBj
b25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZGlhbSBub251bW15IG5pYmggZXVpc21v
ZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0
LiA8cD5VdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpIHRh
dGlvbiB1bGxhbWNvcnBlciBzdXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9sb3IgaW4gaGVu
ZHJlcml0IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNlcXVhdCwgdmVsIGls
bHVtIGRvbG9yZSBldSBmZXVnaWF0IG51bGxhIGZhY2lsaXNpcyBhdCB2ZXJvIGVyb3MgZXQgYWNj
dW1zYW4gZXQgaXVzdG8gb2RpbyBkaWduaXNzaW0gcXVpIGJsYW5kaXQgcHJhZXNlbnQgbHVwdGF0
dW0genpyaWwgZGVsZW5pdCBhdWd1ZSBkdWlzIGRvbG9yZSB0ZSBmZXVnYWl0IG51bGxhIGZhY2ls
aXNpLgorICAgICAgICAgICAgPGRpdj4KKyAgICAgICAgICAgICAgICA8Yj5TdGlsbCBzaG91bGQg
bm90LjwvYj4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNj
aW5nIGVsaXQsIHNlZCBkaWFtIG5vbnVtbXkgbmliaCBldWlzbW9kIHRpbmNpZHVudCB1dCBsYW9y
ZWV0IGRvbG9yZSBtYWduYSBhbGlxdWFtIGVyYXQgdm9sdXRwYXQuIDxwPlV0IHdpc2kgZW5pbSBh
ZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2kgdGF0aW9uIHVsbGFtY29ycGVyIHN1
c2NpcGl0IGxvYm9ydGlzIG5pc2wgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4g
RHVpcyBhdXRlbSB2ZWwgZXVtIGlyaXVyZSBkb2xvciBpbiBoZW5kcmVyaXQgaW4gdnVscHV0YXRl
IHZlbGl0IGVzc2UgbW9sZXN0aWUgY29uc2VxdWF0LCB2ZWwgaWxsdW0gZG9sb3JlIGV1IGZldWdp
YXQgbnVsbGEgZmFjaWxpc2lzIGF0IHZlcm8gZXJvcyBldCBhY2N1bXNhbiBldCBpdXN0byBvZGlv
IGRpZ25pc3NpbSBxdWkgYmxhbmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1
Z3VlIGR1aXMgZG9sb3JlIHRlIGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuCisgICAgICAgICAgICAg
ICAgPGRpdj4KKyAgICAgICAgICAgICAgICAgICAgPHA+PGI+VGhpcyB0ZXh0IHNob3VsZCBhdXRv
cmVzaXplLiBTb21ldGltZXMgY29udGVudCBpcyBiZWluZyBwdXQgaW4gZml4ZWQtaGVpZ2h0IChi
eSBhIG1pc3Rha2UpIGJsb2NrcyB0byBhcHBseSBzb21lIHN0eWxlcy48L2I+IExvcmVtIGlwc3Vt
IGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZGlhbSBu
b251bW15IG5pYmggZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxp
cXVhbSBlcmF0IHZvbHV0cGF0LiA8cD5VdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlz
IG5vc3RydWQgZXhlcmNpIHRhdGlvbiB1bGxhbWNvcnBlciBzdXNjaXBpdCBsb2JvcnRpcyBuaXNs
IHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBp
cml1cmUgZG9sb3IgaW4gaGVuZHJlcml0IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIG1vbGVzdGll
IGNvbnNlcXVhdCwgdmVsIGlsbHVtIGRvbG9yZSBldSBmZXVnaWF0IG51bGxhIGZhY2lsaXNpcyBh
dCB2ZXJvIGVyb3MgZXQgYWNjdW1zYW4gZXQgaXVzdG8gb2RpbyBkaWduaXNzaW0gcXVpIGJsYW5k
aXQgcHJhZXNlbnQgbHVwdGF0dW0genpyaWwgZGVsZW5pdCBhdWd1ZSBkdWlzIGRvbG9yZSB0ZSBm
ZXVnYWl0IG51bGxhIGZhY2lsaXNpLgorICAgICAgICAgICAgICAgICAgICA8ZGl2PgorICAgICAg
ICAgICAgICAgICAgICA8Yj5TaG91bGQgYXMgd2VsbC48L2I+IExvcmVtIGlwc3VtIGRvbG9yIHNp
dCBhbWV0LCBjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZGlhbSBub251bW15IG5p
YmggZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0
IHZvbHV0cGF0LiA8cD5VdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQg
ZXhlcmNpIHRhdGlvbiB1bGxhbWNvcnBlciBzdXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFsaXF1
aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9s
b3IgaW4gaGVuZHJlcml0IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNlcXVh
dCwgdmVsIGlsbHVtIGRvbG9yZSBldSBmZXVnaWF0IG51bGxhIGZhY2lsaXNpcyBhdCB2ZXJvIGVy
b3MgZXQgYWNjdW1zYW4gZXQgaXVzdG8gb2RpbyBkaWduaXNzaW0gcXVpIGJsYW5kaXQgcHJhZXNl
bnQgbHVwdGF0dW0genpyaWwgZGVsZW5pdCBhdWd1ZSBkdWlzIGRvbG9yZSB0ZSBmZXVnYWl0IG51
bGxhIGZhY2lsaXNpLgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcv
cGVyY2VudC1hZGp1c3QtbGVuZ3RoLWxpbmUtaGVpZ2h0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRq
dXN0LWxlbmd0aC1saW5lLWhlaWdodC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY4ZWFlYWEx
YjM2YzBkZThmZjFkMWYzZjkwNDUwOWJjMWU2MDBhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQt
YWRqdXN0LWxlbmd0aC1saW5lLWhlaWdodC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAor
VGVzdHMgbGVuZ3RoIGxpbmUtaGVpZ2h0IGFkanVzdG1lbnQgZm9yIHBlcmNlbnRhZ2UgLXdlYmtp
dC10ZXh0LXNpemUtYWRqdXN0IHZhbHVlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgY29tcHV0ZWRMaW5lSGVpZ2h0IGlzICcyNHB4JworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0
LWxlbmd0aC1saW5lLWhlaWdodC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNp
bXVsYXRvci90ZXh0LWF1dG9zaXppbmcvcGVyY2VudC1hZGp1c3QtbGVuZ3RoLWxpbmUtaGVpZ2h0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzlmNDZiZWQyZmEzNGU1NTI3NTg0NDNjZjg0YmJhYjY1Y2UzZGY3
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0
b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LWxlbmd0aC1saW5lLWhlaWdodC5odG1s
CkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3Bv
cnQiIGNvbnRlbnQ9InVzZXItc2NhbGFibGU9bm8sIHdpZHRoPTMyMCI+CisgICAgPHRpdGxlPiZs
dDtyZGFyOi8vcHJvYmxlbS82NjQ2NjI4Jmd0OyBUZXh0IEF1dG9zaXppbmc6IE92ZXJsYXBwaW5n
IHRleHQgaW4gbWVzc2FnZTwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgIGJvZHkgeworICAgICAg
ICBmb250LXNpemU6IDE0cHg7CisgICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4OworICAgIH0KKyAg
ICBodG1sIHsKKyAgICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxNTAlOworICAgIH0K
KyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRvc2l6aW5n
RW5hYmxlZCh0cnVlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwIGlk
PSJsb3JlbSI+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIGEgZGVjZW50IHNwYWNpbmcgYmV0d2VlbiB0
aGUgbGluZXMuIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNj
aW5nIGVsaXQuIENyYXMgYW50ZSBvcmNpLCBwb3N1ZXJlIGF0IGFsaXF1YW0gZWdldCwgb3JuYXJl
IHV0IHNhcGllbi4gUHJhZXNlbnQgY29tbW9kbyB2b2x1dHBhdCBhdWN0b3IuIENsYXNzIGFwdGVu
dCB0YWNpdGkgc29jaW9zcXUgYWQgbGl0b3JhIHRvcnF1ZW50IHBlciBjb251YmlhIG5vc3RyYSwg
cGVyIGluY2VwdG9zIGhpbWVuYWVvcy4gVml2YW11cyBpbnRlcmR1bSB0aW5jaWR1bnQgcHVsdmlu
YXIuIERvbmVjIG5lYyBsaWJlcm8gZXJvcy4gTW9yYmkgZmFjaWxpc2lzIGxhY3VzIHF1aXMgbWkg
bWF0dGlzIHF1aXMgcHJldGl1bSB2ZWxpdCBmcmluZ2lsbGEuIEludGVnZXIgaXBzdW0gbWV0dXMs
IHByZXRpdW0gZXQgdGluY2lkdW50IGVnZXQsIGNvbW1vZG8gdmVsIG5pYmguIENyYXMgZmV1Z2lh
dCBsb3JlbSBldCB2ZWxpdCBpbnRlcmR1bSBldSBsdWN0dXMgZHVpIGdyYXZpZGEuIE51bGxhbSBu
ZWMgZ3JhdmlkYSBvcmNpLiBWZXN0aWJ1bHVtIHF1aXMgaW1wZXJkaWV0IG5pYmguIFZpdmFtdXMg
dGluY2lkdW50IGVyYXQgYWMgcmlzdXMgZWdlc3RhcyBtYXR0aXMuPC9wPgorICAgIDxzY3JpcHQ+
CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIGxlbmd0aCBsaW5lLWhlaWdodCBhZGp1c3RtZW50IGZv
ciBwZXJjZW50YWdlIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdCB2YWx1ZXMuIik7CisgICAgdmFy
IHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9yZW0iKTsKKyAgICBjb21wdXRlZExpbmVI
ZWlnaHQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShwKVsnbGluZS1oZWlnaHQnXTsKKyAgICBz
aG91bGRCZSgiY29tcHV0ZWRMaW5lSGVpZ2h0IiwgIicyNHB4JyIpOworICAgIHAucmVtb3ZlKCk7
CisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LW51bWJlci1s
aW5lLWhlaWdodC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2lt
dWxhdG9yL3RleHQtYXV0b3NpemluZy9wZXJjZW50LWFkanVzdC1udW1iZXItbGluZS1oZWlnaHQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5YmEzMWRlMDZiMmYxNTQ5Y2Q0OGNhMDgzZjdlZTYw
OTlhMjllYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUt
c2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9wZXJjZW50LWFkanVzdC1udW1iZXItbGluZS1oZWln
aHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIG51bWJlciBsaW5lLWhlaWdo
dCBpcyBhZGp1c3RlZCB3aXRoIHBlcmNlbnRhZ2UgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0IHZh
bHVlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdGVkTGluZUhl
aWdodCBpcyBleHBlY3RlZExpbmVIZWlnaHQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
cGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9wZXJjZW50LWFkanVzdC1udW1iZXItbGlu
ZS1oZWlnaHQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4
dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LW51bWJlci1saW5lLWhlaWdodC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU1N2NmNjBiZjQxMGU1OGJjMzA3YjBlN2M2YmFjYmU4MDM1ZWRkZTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0
b3NpemluZy9wZXJjZW50LWFkanVzdC1udW1iZXItbGluZS1oZWlnaHQuaHRtbApAQCAtMCwwICsx
LDM5IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ1c2VyLXNjYWxhYmxlPW5vLCB3aWR0aD0zMjAiPgorICAgIDx0aXRsZT4mbHQ7cmRhcjovL3By
b2JsZW0vNjY0NjYyOCZndDsgVGV4dCBBdXRvc2l6aW5nOiBPdmVybGFwcGluZyB0ZXh0IGluIG1l
c3NhZ2U8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAjZXhwZWN0ZWQgeworICAgICAgICBmb250
LXNpemU6IDEwcHg7CisgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CisgICAgICAgIC13ZWJraXQt
dGV4dC1zaXplLWFkanVzdDogMTAwJTsKKyAgICB9CisgICAgI3Rlc3RlZCB7CisgICAgICAgIGZv
bnQtc2l6ZTogMjBweDsKKyAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKKyAgICAgICAgLXdlYmtp
dC10ZXh0LXNpemUtYWRqdXN0OiA1MCU7CisgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgd2lu
ZG93LnRlc3RSdW5uZXIuc2V0VGV4dEF1dG9zaXppbmdFbmFibGVkKHRydWUpOworICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHAgaWQ9ImV4cGVjdGVkIj5UaGlzIHRleHQgc2hv
dWxkIGhhdmUgYSBkZWNlbnQgc3BhY2luZyBiZXR3ZWVuIHRoZSBsaW5lcy4gTG9yZW0gaXBzdW0g
ZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBhbnRlIG9y
Y2ksIHBvc3VlcmUgYXQgYWxpcXVhbSBlZ2V0LCBvcm5hcmUgdXQgc2FwaWVuLiBQcmFlc2VudCBj
b21tb2RvIHZvbHV0cGF0IGF1Y3Rvci4gQ2xhc3MgYXB0ZW50IHRhY2l0aSBzb2Npb3NxdSBhZCBs
aXRvcmEgdG9ycXVlbnQgcGVyIGNvbnViaWEgbm9zdHJhLCBwZXIgaW5jZXB0b3MgaGltZW5hZW9z
LiBWaXZhbXVzIGludGVyZHVtIHRpbmNpZHVudCBwdWx2aW5hci4gRG9uZWMgbmVjIGxpYmVybyBl
cm9zLiBNb3JiaSBmYWNpbGlzaXMgbGFjdXMgcXVpcyBtaSBtYXR0aXMgcXVpcyBwcmV0aXVtIHZl
bGl0IGZyaW5naWxsYS4gSW50ZWdlciBpcHN1bSBtZXR1cywgcHJldGl1bSBldCB0aW5jaWR1bnQg
ZWdldCwgY29tbW9kbyB2ZWwgbmliaC4gQ3JhcyBmZXVnaWF0IGxvcmVtIGV0IHZlbGl0IGludGVy
ZHVtIGV1IGx1Y3R1cyBkdWkgZ3JhdmlkYS4gTnVsbGFtIG5lYyBncmF2aWRhIG9yY2kuIFZlc3Rp
YnVsdW0gcXVpcyBpbXBlcmRpZXQgbmliaC4gVml2YW11cyB0aW5jaWR1bnQgZXJhdCBhYyByaXN1
cyBlZ2VzdGFzIG1hdHRpcy48L3A+CisgICAgPHAgaWQ9InRlc3RlZCI+VGhpcyB0ZXh0IHNob3Vs
ZCBoYXZlIGEgZGVjZW50IHNwYWNpbmcgYmV0d2VlbiB0aGUgbGluZXMuIExvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIENyYXMgYW50ZSBvcmNp
LCBwb3N1ZXJlIGF0IGFsaXF1YW0gZWdldCwgb3JuYXJlIHV0IHNhcGllbi4gUHJhZXNlbnQgY29t
bW9kbyB2b2x1dHBhdCBhdWN0b3IuIENsYXNzIGFwdGVudCB0YWNpdGkgc29jaW9zcXUgYWQgbGl0
b3JhIHRvcnF1ZW50IHBlciBjb251YmlhIG5vc3RyYSwgcGVyIGluY2VwdG9zIGhpbWVuYWVvcy4g
Vml2YW11cyBpbnRlcmR1bSB0aW5jaWR1bnQgcHVsdmluYXIuIERvbmVjIG5lYyBsaWJlcm8gZXJv
cy4gTW9yYmkgZmFjaWxpc2lzIGxhY3VzIHF1aXMgbWkgbWF0dGlzIHF1aXMgcHJldGl1bSB2ZWxp
dCBmcmluZ2lsbGEuIEludGVnZXIgaXBzdW0gbWV0dXMsIHByZXRpdW0gZXQgdGluY2lkdW50IGVn
ZXQsIGNvbW1vZG8gdmVsIG5pYmguIENyYXMgZmV1Z2lhdCBsb3JlbSBldCB2ZWxpdCBpbnRlcmR1
bSBldSBsdWN0dXMgZHVpIGdyYXZpZGEuIE51bGxhbSBuZWMgZ3JhdmlkYSBvcmNpLiBWZXN0aWJ1
bHVtIHF1aXMgaW1wZXJkaWV0IG5pYmguIFZpdmFtdXMgdGluY2lkdW50IGVyYXQgYWMgcmlzdXMg
ZWdlc3RhcyBtYXR0aXMuPC9wPgorICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3Rz
IG51bWJlciBsaW5lLWhlaWdodCBpcyBhZGp1c3RlZCB3aXRoIHBlcmNlbnRhZ2UgLXdlYmtpdC10
ZXh0LXNpemUtYWRqdXN0IHZhbHVlcy4iKTsKKyAgICB2YXIgZXhwZWN0ZWQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZXhwZWN0ZWQiKTsKKyAgICB2YXIgdGVzdGVkID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3RlZCIpOworICAgIGV4cGVjdGVkTGluZUhlaWdodCA9IHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGV4cGVjdGVkKVsnbGluZS1oZWlnaHQnXTsKKyAgICB0ZXN0ZWRMaW5l
SGVpZ2h0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdGVkKVsnbGluZS1oZWlnaHQnXTsK
KyAgICBzaG91bGRCZSgidGVzdGVkTGluZUhlaWdodCIsICJleHBlY3RlZExpbmVIZWlnaHQiKTsK
KyAgICBleHBlY3RlZC5yZW1vdmUoKTsKKyAgICB0ZXN0ZWQucmVtb3ZlKCk7CisgICAgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11
bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LXBlcmNlbnQtbGluZS1oZWlnaHQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0
LWF1dG9zaXppbmcvcGVyY2VudC1hZGp1c3QtcGVyY2VudC1saW5lLWhlaWdodC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDkyNzc5ZTRjZmExZjVhZWZjZmQ4YjE4NzUwMjIyODg2OTk3NDk4MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3Iv
dGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LXBlcmNlbnQtbGluZS1oZWlnaHQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHBlcmNlbnRhZ2UgbGluZS1oZWlnaHQgaXMg
bm90IGFkanVzdGVkIHdpdGggcGVyY2VudGFnZSAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3QgdmFs
dWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0ZWRMaW5lSGVp
Z2h0IGlzIGV4cGVjdGVkTGluZUhlaWdodAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lw
aG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LXBlcmNlbnQtbGlu
ZS1oZWlnaHQuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4
dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LXBlcmNlbnQtbGluZS1oZWlnaHQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YzE2MmIyYWM2NjkyMWVjNDA0NzZkYjE3Y2Y3OGUyYzAyMmI5NzAwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1
dG9zaXppbmcvcGVyY2VudC1hZGp1c3QtcGVyY2VudC1saW5lLWhlaWdodC5odG1sCkBAIC0wLDAg
KzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9InVzZXItc2NhbGFibGU9bm8sIHdpZHRoPTMyMCI+CisgICAgPHRpdGxlPiZsdDtyZGFyOi8v
cHJvYmxlbS8xMjYwNzg5OCZndDsgaW5jb3JyZWN0IGJlaGF2aW9yIG9mIC13ZWJraXQtdGV4dC1z
aXplLWFkanVzdCBpbiBVSVdlYlZpZXcgb24gaU9TNjwvdGl0bGU+CisgICAgPHN0eWxlPgorICAg
ICNleHBlY3RlZCB7CisgICAgICAgIGZvbnQtc2l6ZTogMTBweDsKKyAgICAgICAgbGluZS1oZWln
aHQ6IDE1MCU7CisgICAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKKyAgICB9
CisgICAgI3Rlc3RlZCB7CisgICAgICAgIGZvbnQtc2l6ZTogMjBweDsKKyAgICAgICAgbGluZS1o
ZWlnaHQ6IDE1MCU7CisgICAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogNTAlOworICAg
IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRvc2l6
aW5nRW5hYmxlZCh0cnVlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxw
IGlkPSJleHBlY3RlZCI+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIGEgZGVjZW50IHNwYWNpbmcgYmV0
d2VlbiB0aGUgbGluZXMuIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBh
ZGlwaXNjaW5nIGVsaXQuIENyYXMgYW50ZSBvcmNpLCBwb3N1ZXJlIGF0IGFsaXF1YW0gZWdldCwg
b3JuYXJlIHV0IHNhcGllbi4gUHJhZXNlbnQgY29tbW9kbyB2b2x1dHBhdCBhdWN0b3IuIENsYXNz
IGFwdGVudCB0YWNpdGkgc29jaW9zcXUgYWQgbGl0b3JhIHRvcnF1ZW50IHBlciBjb251YmlhIG5v
c3RyYSwgcGVyIGluY2VwdG9zIGhpbWVuYWVvcy4gVml2YW11cyBpbnRlcmR1bSB0aW5jaWR1bnQg
cHVsdmluYXIuIERvbmVjIG5lYyBsaWJlcm8gZXJvcy4gTW9yYmkgZmFjaWxpc2lzIGxhY3VzIHF1
aXMgbWkgbWF0dGlzIHF1aXMgcHJldGl1bSB2ZWxpdCBmcmluZ2lsbGEuIEludGVnZXIgaXBzdW0g
bWV0dXMsIHByZXRpdW0gZXQgdGluY2lkdW50IGVnZXQsIGNvbW1vZG8gdmVsIG5pYmguIENyYXMg
ZmV1Z2lhdCBsb3JlbSBldCB2ZWxpdCBpbnRlcmR1bSBldSBsdWN0dXMgZHVpIGdyYXZpZGEuIE51
bGxhbSBuZWMgZ3JhdmlkYSBvcmNpLiBWZXN0aWJ1bHVtIHF1aXMgaW1wZXJkaWV0IG5pYmguIFZp
dmFtdXMgdGluY2lkdW50IGVyYXQgYWMgcmlzdXMgZWdlc3RhcyBtYXR0aXMuPC9wPgorICAgIDxw
IGlkPSJ0ZXN0ZWQiPlRoaXMgdGV4dCBzaG91bGQgaGF2ZSBhIGRlY2VudCBzcGFjaW5nIGJldHdl
ZW4gdGhlIGxpbmVzLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRp
cGlzY2luZyBlbGl0LiBDcmFzIGFudGUgb3JjaSwgcG9zdWVyZSBhdCBhbGlxdWFtIGVnZXQsIG9y
bmFyZSB1dCBzYXBpZW4uIFByYWVzZW50IGNvbW1vZG8gdm9sdXRwYXQgYXVjdG9yLiBDbGFzcyBh
cHRlbnQgdGFjaXRpIHNvY2lvc3F1IGFkIGxpdG9yYSB0b3JxdWVudCBwZXIgY29udWJpYSBub3N0
cmEsIHBlciBpbmNlcHRvcyBoaW1lbmFlb3MuIFZpdmFtdXMgaW50ZXJkdW0gdGluY2lkdW50IHB1
bHZpbmFyLiBEb25lYyBuZWMgbGliZXJvIGVyb3MuIE1vcmJpIGZhY2lsaXNpcyBsYWN1cyBxdWlz
IG1pIG1hdHRpcyBxdWlzIHByZXRpdW0gdmVsaXQgZnJpbmdpbGxhLiBJbnRlZ2VyIGlwc3VtIG1l
dHVzLCBwcmV0aXVtIGV0IHRpbmNpZHVudCBlZ2V0LCBjb21tb2RvIHZlbCBuaWJoLiBDcmFzIGZl
dWdpYXQgbG9yZW0gZXQgdmVsaXQgaW50ZXJkdW0gZXUgbHVjdHVzIGR1aSBncmF2aWRhLiBOdWxs
YW0gbmVjIGdyYXZpZGEgb3JjaS4gVmVzdGlidWx1bSBxdWlzIGltcGVyZGlldCBuaWJoLiBWaXZh
bXVzIHRpbmNpZHVudCBlcmF0IGFjIHJpc3VzIGVnZXN0YXMgbWF0dGlzLjwvcD4KKyAgICA8c2Ny
aXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBwZXJjZW50YWdlIGxpbmUtaGVpZ2h0IGlzIG5v
dCBhZGp1c3RlZCB3aXRoIHBlcmNlbnRhZ2UgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0IHZhbHVl
cy4iKTsKKyAgICB2YXIgZXhwZWN0ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhwZWN0
ZWQiKTsKKyAgICB2YXIgdGVzdGVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RlZCIp
OworICAgIGV4cGVjdGVkTGluZUhlaWdodCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGV4cGVj
dGVkKVsnbGluZS1oZWlnaHQnXTsKKyAgICB0ZXN0ZWRMaW5lSGVpZ2h0ID0gd2luZG93LmdldENv
bXB1dGVkU3R5bGUodGVzdGVkKVsnbGluZS1oZWlnaHQnXTsKKyAgICBzaG91bGRCZSgidGVzdGVk
TGluZUhlaWdodCIsICJleHBlY3RlZExpbmVIZWlnaHQiKTsKKyAgICBleHBlY3RlZC5yZW1vdmUo
KTsKKyAgICB0ZXN0ZWQucmVtb3ZlKCk7CisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
KyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211239</attachid>
            <date>2013-09-10 14:03:37 -0700</date>
            <delta_ts>2013-09-10 16:27:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121111-20130910140336.patch</filename>
            <type>text/plain</type>
            <size>125316</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY1NWVmMGY0ZWUxY2ZkNTNiMTAxYjQ3
ZGUxODdmYWRmMWY3MGM0YzQuLjYyM2Y3MDQwMDE1M2U0ZjYxNzFkYjg5ZDMzNmQ0ZjViNDk1ZDZl
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDktMTAgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFVwc3RyZWFtIHRleHQgYXV0b3NpemluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMTExCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVmaW5lIGlP
UyB0ZXh0IGF1dG9zaXppbmcgdG8gYmUgZW5hYmxlZCBvbiBpT1MgdW5sZXNzIG90aGVyd2lzZSBk
ZWZpbmVkLgorCisgICAgICAgICogd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTMtMDktMTAg
IEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1
cCB3dGYvTm9uY29weWFibGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJjMjhkNGFkNDRlODZlNTJiYmZmYWE2
ZmVmYTEyZThiYWQ3MGNlMTAuLjIyOGFmYjMwNTFjZDljOWNmNDliMTcyMTVlMDc4OTUwNDdjOWI2
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTcgQEAKKzIwMTMtMDktMTAgIERhbmllbCBCYXRl
cyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFVwc3RyZWFtIHRleHQgYXV0
b3NpemluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIxMTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdHM6IHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2Fub255bW91
cy1ibG9jay5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3Rl
eHQtYXV0b3NpemluZy9jb250ZW50ZWRpdGFibGUuaHRtbAorICAgICAgICAgICAgICAgcGxhdGZv
cm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvZmlyc3QtbGV0dGVyLmh0bWwKKyAg
ICAgICAgICAgICAgIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2Zv
bnQtZmFtaWx5LWNhc2UtaW5zZW5zaXRpdmUuaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0v
aXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvbGlzdHMuaHRtbAorICAgICAgICAgICAg
ICAgcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvb3ZlcmZsb3cuaHRt
bAorICAgICAgICAgICAgICAgcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXpp
bmcvcGVyY2VudC1hZGp1c3QtbGVuZ3RoLWxpbmUtaGVpZ2h0Lmh0bWwKKyAgICAgICAgICAgICAg
IHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0
LW51bWJlci1saW5lLWhlaWdodC5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9pcGhvbmUt
c2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9wZXJjZW50LWFkanVzdC1wZXJjZW50LWxpbmUtaGVp
Z2h0Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5
KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjogQWRkIHByb3BlcnR5IC13ZWJr
aXQtdGV4dC1zaXplLWFkanVzdC4KKyAgICAgICAgKiBjc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TGluZUhlaWdodEZvcklPU1Rl
eHRBdXRvc2l6aW5nOjphcHBseVZhbHVlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVByb3BlcnR5TGluZUhlaWdodEZvcklPU1RleHRBdXRvc2l6aW5nOjphcHBseUluaXRpYWxWYWx1
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUxpbmVIZWlnaHRGb3JJ
T1NUZXh0QXV0b3NpemluZzo6YXBwbHlJbmhlcml0VmFsdWUpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0Rm9ySU9TVGV4dEF1dG9zaXppbmc6OmNyZWF0
ZUhhbmRsZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRTdHlsZUJ1aWxk
ZXI6OkRlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnVwZGF0ZUZvbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0aWVzKTogQWRkIENPTVBJ
TEVfQVNTRVJUIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIGFsbCBwcm9wZXJ0aWVzIHRoYXQgYWZm
ZWN0IGZvbnQgc2l6ZSwgaW5jbHVkaW5nIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdCwgYXJlCisg
ICAgICAgIHJlc29sdmVkIGJlZm9yZSBwcm9wZXJ0aWVzIHRoYXQgZGVwZW5kIG9uIHRoZW07IG1h
a2UgIFNlZSA8cmRhcjovL3Byb2JsZW0vMTM1MjI4MzU+LgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpjaGVja0ZvclRleHRTaXplQWRqdXN0KTogQWRkZWQuCisgICAgICAgICogY3NzL1N0eWxl
UmVzb2x2ZXIuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEF1dG9TaXppbmdUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEF1dG9TaXppbmdUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjphZGRBdXRvU2l6aW5nTm9kZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnZhbGlkYXRlQXV0b1NpemluZ05vZGVzKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6cmVzZXRBdXRvU2l6aW5nTm9kZXMpOiBBZGRlZC4KKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6
CisgICAgICAgICogcGFnZS9GcmFtZS5oOiBBZGQgZGVjbGFyYXRpb25zIGZvciBzZXRUZXh0QXV0
b3NpemluZ1dpZHRoKCksIHRleHRBdXRvc2l6aW5nV2lkdGgoKS4KKyAgICAgICAgKiBwYWdlL0Zy
YW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6CisgICAg
ICAgICogcGFnZS9TZXR0aW5ncy5pbjogR2VuZXJhdGUgc2V0dGVyIGFuZCBnZXR0ZXIgZm9yIHNl
dHRpbmcgbWluaW11bVpvb21Gb250U2l6ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb250OjplcXVhbEZvclRleHRBdXRvU2l6aW5nKTog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbjo6ZmFtaWxpZXNFcXVhbEZvclRleHRB
dXRvU2l6aW5nKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2Ny
aXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmVxdWFsRm9yVGV4
dEF1dG9TaXppbmcpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OmlzVmlzaWJsZVJlbmRlclRleHQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnJlc2l6ZVRleHRQZXJtaXR0ZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjppbW1lZGlhdGVMaW5lQ291bnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzTm9u
QmxvY2tzT3JOb25GaXhlZEhlaWdodExpc3RJdGVtcyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6b25lTGluZVRleHRNdWx0aXBsaWVyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0ZXh0
TXVsdGlwbGllcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkanVz
dENvbXB1dGVkRm9udFNpemVzKTogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVzZXRDb21wdXRlZEZvbnRT
aXplKTogQWRkZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnRyYXZlcnNlTmV4dCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6aW5jbHVkZU5vbkZpeGVkSGVpZ2h0KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdENvbXB1dGVkRm9udFNpemVzT25CbG9ja3MpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVzZXRUZXh0QXV0b3NpemluZyk6
IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpS
ZW5kZXJUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dDo6Y2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6c2V0Q2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6
ZSk6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlRm9udEhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6Omhhc2hGb3JUZXh0QXV0b3NpemluZyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OmVxdWFsRm9yVGV4dEF1dG9zaXppbmcpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c3BlY2lmaWVkTGluZUhlaWdodCk6IEFkZGVkOyBpT1Mtc3Bl
Y2lmaWMgdmFyaWFudC4KKyAgICAgICAgV2Ugc2hvdWxkIHJlY29uY2lsZSB0aGlzIGdldHRlciB3
aXRoIHRoZSBnZXR0ZXIgb2YgdGhlIHNhbWUgbmFtZSB0aGF0IGlzCisgICAgICAgIGNvbXBpbGVk
IHdoZW4gYnVpbGRpbmcgd2l0aCBJT1NfVEVYVF9BVVRPU0laSU5HIGRpc2FibGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFNwZWNpZmllZExpbmVIZWlnaHQpOiBBZGRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjppbml0aWFsU3BlY2lmaWVkTGluZUhlaWdodCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0U2l6ZUFkanVzdCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRleHRTaXplQWRqdXN0KTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6dGV4dFNpemVBZGp1c3QpOiBBZGRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvVGV4dFNpemVBZGp1c3RtZW50Lmg6IEFkZGVkLgorICAgICAgICAo
VGV4dFNpemVBZGp1c3RtZW50OjpUZXh0U2l6ZUFkanVzdG1lbnQpOgorICAgICAgICAoVGV4dFNp
emVBZGp1c3RtZW50OjpwZXJjZW50YWdlKToKKyAgICAgICAgKFRleHRTaXplQWRqdXN0bWVudDo6
bXVsdGlwbGllcik6CisgICAgICAgIChUZXh0U2l6ZUFkanVzdG1lbnQ6OmlzQXV0byk6CisgICAg
ICAgIChUZXh0U2l6ZUFkanVzdG1lbnQ6OmlzTm9uZSk6CisgICAgICAgIChUZXh0U2l6ZUFkanVz
dG1lbnQ6OmlzUGVyY2VudGFnZSk6CisgICAgICAgIChUZXh0U2l6ZUFkanVzdG1lbnQ6Om9wZXJh
dG9yID09ICk6CisgICAgICAgIChUZXh0U2l6ZUFkanVzdG1lbnQ6Om9wZXJhdG9yICE9ICk6CisK
IDIwMTMtMDktMTAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW21hY10gUERGRG9jdW1lbnRJbWFnZSBzaG91bGQgdXNlIFBERktpdCB0byBkcmF3CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggNGViNGUwNjkyYjZkMTdiZjczNGI1ZWQzM2NlN2VmN2RjN2JkYmVl
Mi4uNTJhNTgyNTY2OTJmOGE0OWYzYzk4MDMwNTRhMDJlZjRkMzAwYTIwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA5LTEwICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVcHN0cmVhbSB0ZXh0IGF1dG9zaXppbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTExMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgcmVzZXRUZXh0QXV0b3NpemluZ0JlZm9y
ZUxheW91dF0pOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViRnJhbWUgX3NldFZpc2libGVTaXplOl0p
OiBBZGRlZC4KKyAgICAgICAgKC1bV2ViRnJhbWUgX3NldFRleHRBdXRvc2l6aW5nV2lkdGg6XSk6
IEFkZGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVQcml2YXRlLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6
CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRNaW5pbXVtWm9vbUZvbnRTaXplOl0pOiBB
ZGRlZC4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX21pbmltdW1ab29tRm9udFNpemVdKTog
QWRkZWQuCisKIDIwMTMtMDktMDkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJHTF0gQWxsb3cgbXVsdGl0aHJlYWRlZCBPcGVuR0wgY29udGV4dHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9G
ZWF0dXJlRGVmaW5lcy5oCmluZGV4IDU4YzliZmQ5NDU5YzI1NmExNTg5ZDBjYWMyYTJiNjc2ZGEw
Y2JjOGYuLmNiOTE1ZGJlNzMxMDZkYzJlMjkwODVjNDQ0MjY3YWZjZjM2MjE2YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKKysrIGIvU291cmNlL1dURi93dGYv
RmVhdHVyZURlZmluZXMuaApAQCAtOTIsNiArOTIsMTAgQEAKICNkZWZpbmUgRU5BQkxFX0xFVFRF
UlBSRVNTIDEKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJ
TkcpCisjZGVmaW5lIEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HIDEKKyNlbmRpZgorCiAjaWYg
IWRlZmluZWQoRU5BQkxFX01FVEVSX0VMRU1FTlQpCiAjZGVmaW5lIEVOQUJMRV9NRVRFUl9FTEVN
RU5UIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkYjU4ODUyMGMxMThkODc1Y2Y3
YzlmNjNkYmRmYWZhZTY0ZWE5MTAzLi41ZjU3NDNkZDc3OTJiZjExMDY4NjEwOGVjZDNkNGNhZmU5
N2ZlYzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjY5OCw2ICsyNjk4LDExIEBAIF9fWk43
V2ViQ29yZThEb2N1bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQx
OWFjY2Vzc1NWR0V4dGVuc2lvbnNFdgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVU
T1NJWklORykKK19fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTlyZXNldFRleHRBdXRvc2l6aW5n
RXYKK19fWk43V2ViQ29yZTVGcmFtZTIyc2V0VGV4dEF1dG9zaXppbmdXaWR0aEVmCisjZW5kaWYK
KwogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCiBfX1pON1dlYkNvcmUxM1Njcm9sbGlu
Z1RyZWUzN3NldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJD
b3JlMTNTY3JvbGxpbmdUcmVlMjF0cnlUb0hhbmRsZVdoZWVsRXZlbnRFUktOU18xOFBsYXRmb3Jt
V2hlZWxFdmVudEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA1Y2M0MjliMjM5Njg2MmZjZTEzZjlhODBkMmEzZDBkYjkxMDU1NzM2
Li45YTYyOWUzYzJhZTRkZGMwYmY0NzU2ODdmYzRlNGQ0NWU5MmIzODBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI1LDYg
KzEzMjUsNyBAQAogCQk0NDhBMjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0OEEyOUJEMEE0NkQ5Q0IwMDMwNzU5RiAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oICov
OyB9OwogCQk0NDhBMjlDMDBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4
QTI5QkUwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCAqLzsg
fTsKIAkJNDQ4QUQyN0MwQTQ4MTM3QTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0OEFEMjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3Rv
bS5jcHAgKi87IH07CisJCTQ0OEIxQjdBMEYzQTJGOUIwMDQ3QTlFMiAvKiBUZXh0U2l6ZUFkanVz
dG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
OEIxQjc4MEYzQTJGOUIwMDQ3QTlFMiAvKiBUZXh0U2l6ZUFkanVzdG1lbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NDk2RTM5RDEzOTgxMzZD
MDAzRUUzMkEgLyogSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDk2RTM5QjEzOTgxMzZDMDAzRUUzMkEg
LyogSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgKi87IH07CiAJCTQ0OTZFMzlFMTM5ODEz
NkMwMDNFRTMyQSAvKiBKU1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDk2RTM5QzEzOTgxMzZDMDAzRUUzMkEg
LyogSlNTVkdBbmltYXRlTW90aW9uRWxlbWVudC5oICovOyB9OwogCQk0NDk2RTNBMDEzOTgxM0E1
MDAzRUUzMkEgLyogSlNTVkdNUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OTZFMzlGMTM5ODEzQTUwMDNFRTMyQSAvKiBKU1NWR01Q
YXRoRWxlbWVudC5oICovOyB9OwpAQCAtNzgyMyw2ICs3ODI0LDcgQEAKIAkJNDQ4QTI5QkQwQTQ2
RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NDhBMjlCRTBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0
aW9uc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDQ4QUQyN0EwQTQ4MTM3OTAwMjNEMTc5IC8qIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDQ4
QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0U2l6ZUFkanVzdG1lbnQuaDsgcGF0aCA9IHN0eWxl
L1RleHRTaXplQWRqdXN0bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDkw
OThCMTBGOEY4MjUyMDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OTZFMzlCMTM5ODEzNkMwMDNFRTMyQSAvKiBKU1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDk2RTM5QzEzOTgxMzZDMDAzRUUzMkEgLyogSlNTVkdBbmltYXRlTW90aW9uRWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0FuaW1hdGVNb3Rp
b25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTQ1MCw2ICsxOTQ1
Miw3IEBACiAJCQkJQkMyMjc0NzUwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlLmgg
Ki8sCiAJCQkJQkMyMjc0NzYwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlRGVmcy5j
cHAgKi8sCiAJCQkJQkMyMjc0NzcwRTgzNjZFMjAwRTdGOTc1IC8qIFNWR1JlbmRlclN0eWxlRGVm
cy5oICovLAorCQkJCTQ0OEIxQjc4MEYzQTJGOUIwMDQ3QTlFMiAvKiBUZXh0U2l6ZUFkanVzdG1l
bnQuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gc3R5bGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMjQyNzIsNiArMjQyNzUsNyBAQAogCQkJCTkzMEZDNjhBMTA3MkI5MjgwMDQ1Mjkz
RSAvKiBUZXh0UmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk4RjYwODI0
NUU1OTAwMUU5QUJDIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE4MjRCNDY1MEUyRUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0NDhCMUI3QTBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkMzREE0QjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc1OUU5NDAxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc1OUU5NDMxNEVGMUNGODAwMjZBMkREIC8qIFRleHRUcmFj
a0N1ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGNlNzBlNTdjNTUwNWU1MzAxNDU0NDMzODI0
MTk1MmI0ZDc4ZGQyZTEuLmVjOTk5NDI0ZjcwOTU0MjA0MzhmNmQwODc0MGQ0ZmI3M2FjZWFiYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCkBAIC0zNTQsNiArMzU0LDkgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgY29t
cHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9y
LAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dE9yaWVudGF0aW9uLAogICAgIENTU1Byb3BlcnR5
V2Via2l0VGV4dFNlY3VyaXR5LAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAg
IENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsCisjZW5kaWYKICAgICBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRTdHJva2VDb2xvciwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VX
aWR0aCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwKQEAgLTIzODYsNiArMjM4OSwx
NCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUNsaXApOwogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5OgogICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT50ZXh0U2VjdXJpdHkoKSk7CisjaWYgRU5BQkxF
KElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
U2l6ZUFkanVzdDoKKyAgICAgICAgICAgIGlmIChzdHlsZS0+dGV4dFNpemVBZGp1c3QoKS5pc0F1
dG8oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CisgICAgICAgICAgICBpZiAoc3R5bGUtPnRleHRTaXpl
QWRqdXN0KCkuaXNOb25lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOworICAgICAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRleHRTaXplQWRqdXN0KCkucGVyY2Vu
dGFnZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOworI2VuZGlmCiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6CiAgICAgICAgICAgICBy
ZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+dGV4dFN0
cm9rZUNvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdp
ZHRoOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA2ZDI0NjU5MjUzYjFmZDRmZTljZDAx
ODliMzBhMzY3NjFlOThiYTI4Li5hZGNkY2I1NGNiZTE0YzNkM2ViNmNhZTY1ODI1ZTBmMDE5M2Rk
Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTAxMSw2ICsxMDExLDEyIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlkLCBpbnQKICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVEaXNj
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDaXJjbGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNxdWFy
ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6CisgICAgICAgIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1TdHlsZToKICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVGbGF0
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yNzcxLDYgKzI3NzcsMTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAvLyBXaGVuIHNwZWNp
ZnlpbmcgZWl0aGVyIHR5cGUgb2YgdW5pdCwgcmVxdWlyZSBub24tbmVnYXRpdmUgaW50ZWdlcnMK
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgfHwgdmFsdWUtPmZWYWx1ZSkgJiYgdmFsaWRVbml0
KHZhbHVlLCBGSW50ZWdlciB8IEZQZXJjZW50IHwgRk5vbk5lZywgQ1NTUXVpcmtzTW9kZSkpOwog
ICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3Q6CisgICAgICAgIC8vIFdlIGFjdHVhbGx5
IHdhbnQgdG8gbWVyZ2UgdGhlIGZvbGxvd2luZyBpbnRvIFRPVAorICAgICAgICAvLyA8cGVyY2Vu
dGFnZT4gfCBub25lIHwgYXV0byB8IGluaGVyaXQKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0byB8fCBpZCA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBtdWx0
aWxlbmd0aCBjYXNlIHdoZXJlIHdlIGFsbG93IHJlbGF0aXZlIHVuaXRzLgorICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRlBlcmNlbnQgfCBGTm9u
TmVnLCBDU1NTdHJpY3RNb2RlKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
IAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhOiAgICAgICAgICAgLy8g
PGxlbmd0aD4KICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB2YWxpZFVuaXQodmFsdWUsIEZMZW5n
dGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKaW5kZXggMjAzM2IxOTM1NzkxYjllZjcw
YTljNWJkYWExODliMDIyNjJiZDRjYS4uYzQ0NjM3MDUxYWI2YjgzZjAyZjg1N2FjMWY5OWNhYjY3
ZTAzMDRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC0zNTAsNiArMzUwLDkg
QEAgYm9vbCBDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3I6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRPcmllbnRhdGlvbjoKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFNlY3VyaXR5OgorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdDoKKyNlbmRpZgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlQ29sb3I6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VX
aWR0aDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmlu
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KaW5kZXggN2Q4NzgwMmE2
YzlkN2YxMTgxODBmYzJmY2EwNTRlZDk0M2RlNThhOS4uMjgwNjMwMDZmNDExOTVmOTdhMzdlOTcx
Y2I1Yzk4OGQ1M2NmMTdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4K
QEAgLTI4LDYgKzI4LDkgQEAgdGV4dC1yZW5kZXJpbmcKIC13ZWJraXQtbG9jYWxlCiAtd2Via2l0
LXRleHQtb3JpZW50YXRpb24KIC1lcHViLXRleHQtb3JpZW50YXRpb24gPSAtd2Via2l0LXRleHQt
b3JpZW50YXRpb24KKyNpZiBkZWZpbmVkKEVOQUJMRV9JT1NfVEVYVF9BVVRPU0laSU5HKSAmJiBF
TkFCTEVfSU9TX1RFWFRfQVVUT1NJWklORworLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0CisjZW5k
aWYKIC13ZWJraXQtd3JpdGluZy1tb2RlCiAtZXB1Yi13cml0aW5nLW1vZGUgPSAtd2Via2l0LXdy
aXRpbmctbW9kZQogem9vbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0
ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1
aWxkZXIuY3BwCmluZGV4IGIyNTI0ZmU0OTMzYTMzZmM3NDdkNjdjMmQzYTQ5YjcyYTg2YWJkNmIu
LmYwNDU1Yzc3Njk1ZDAzZGM0MDYwODNmOTEwNjI5ZGU5MmZhOGViYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTE0MTMsNiArMTQxMyw2
NSBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5H
KQorLy8gRklYTUU6IFNoYXJlIG1vcmUgY29kZSB3aXRoIGNsYXNzIEFwcGx5UHJvcGVydHlMaW5l
SGVpZ2h0LgorY2xhc3MgQXBwbHlQcm9wZXJ0eUxpbmVIZWlnaHRGb3JJT1NUZXh0QXV0b3Npemlu
ZyB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgeworICAg
ICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0
OworCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5v
cm1hbCkKKyAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVI
ZWlnaHQoKTsKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpIHsK
KyAgICAgICAgICAgIGRvdWJsZSBtdWx0aXBsaWVyID0gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+
ZWZmZWN0aXZlWm9vbSgpOworICAgICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkt
PnRleHRTaXplQWRqdXN0KCkuaXNOb25lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAg
ICAgICAgICBtdWx0aXBsaWVyICo9IGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbGluZUhlaWdodCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVu
Z3RoPExlbmd0aD4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVs
ZW1lbnRTdHlsZSgpLCBtdWx0aXBsaWVyKTsKKyAgICAgICAgICAgIGlmIChzdHlsZVJlc29sdmVy
LT5zdHlsZSgpLT50ZXh0U2l6ZUFkanVzdCgpLmlzUGVyY2VudGFnZSgpKQorICAgICAgICAgICAg
ICAgIGxpbmVIZWlnaHQgPSBMZW5ndGgobGluZUhlaWdodC52YWx1ZSgpICogc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKS0+dGV4dFNpemVBZGp1c3QoKS5tdWx0aXBsaWVyKCksIEZpeGVkKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBwZXJjZW50YWdlIHNob3VsZCBub3QgYmUgcmVzdHJpY3RlZCB0byBhbiBp
bnRlZ2VyIGhlcmUuCisgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKChzdHlsZVJlc29s
dmVyLT5zdHlsZSgpLT5mb250U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCkp
IC8gMTAwLCBGaXhlZCk7CisgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVt
YmVyKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBudW1iZXIgYW5kIHBlcmNlbnRhZ2UgdmFs
dWVzIHNob3VsZCBwcm9kdWNlIHRoZSBzYW1lIHR5cGUgb2YgTGVuZ3RoIChpZS4gRml4ZWQgb3Ig
UGVyY2VudCkuCisgICAgICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+dGV4dFNp
emVBZGp1c3QoKS5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0ID0g
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpICogc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+dGV4dFNpemVBZGp1c3QoKS5tdWx0aXBsaWVyKCkgKiAxMDAuMCwgUGVyY2VudCk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0aChw
cmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSAqIDEwMC4wLCBQZXJjZW50KTsKKyAgICAg
ICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgo
KSkKKyAgICAgICAgICAgIGxpbmVIZWlnaHQgPSBwcmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJj
ZW50YWdlTGVuZ3RoKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0TGluZUhlaWdodChsaW5lSGVpZ2h0KTsKKyAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0U3BlY2lmaWVkTGluZUhlaWdodChsaW5l
SGVpZ2h0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NQ
cm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQorICAgIHsKKyAgICAgICAg
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlh
bExpbmVIZWlnaHQoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFNwZWNp
ZmllZExpbmVIZWlnaHQoUmVuZGVyU3R5bGU6OmluaXRpYWxTcGVjaWZpZWRMaW5lSGVpZ2h0KCkp
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1Byb3BlcnR5
SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCisgICAgeworICAgICAgICBzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxl
KCktPmxpbmVIZWlnaHQoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFNw
ZWNpZmllZExpbmVIZWlnaHQoc3R5bGVSZXNvbHZlci0+cGFyZW50U3R5bGUoKS0+c3BlY2lmaWVk
TGluZUhlaWdodCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0
ZUhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJ
bmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOworICAgIH0KK307
CisjZW5kaWYKKwogY2xhc3MgQXBwbHlQcm9wZXJ0eVBhZ2VTaXplIHsKIHByaXZhdGU6CiAgICAg
c3RhdGljIExlbmd0aCBtbUxlbmd0aChkb3VibGUgbW0pIHsgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUobW0sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU0pLT5jb21wdXRlTGVuZ3Ro
PExlbmd0aD4oMCwgMCk7IH0KQEAgLTIxNTUsNyArMjIxNCwxMSBAQCBEZXByZWNhdGVkU3R5bGVC
dWlsZGVyOjpEZXByZWNhdGVkU3R5bGVCdWlsZGVyKCkKICNlbmRpZgogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUxlZnQsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxl
OjpsZWZ0LCAmUmVuZGVyU3R5bGU6OnNldExlZnQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE9mZnNl
dCwgQXV0b0VuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPGlu
dCwgJlJlbmRlclN0eWxlOjpsZXR0ZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OnNldExldHRlclNw
YWNpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbExldHRlcldvcmRTcGFjaW5nLCBOb3JtYWxFbmFi
bGVkLCBUaGlja25lc3NEaXNhYmxlZCwgU1ZHWm9vbUVuYWJsZWQ+OjpjcmVhdGVIYW5kbGVyKCkp
OworI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIEFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0Rm9ySU9TVGV4
dEF1dG9zaXppbmc6OmNyZWF0ZUhhbmRsZXIoKSk7CisjZWxzZQogICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIEFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0OjpjcmVh
dGVIYW5kbGVyKCkpOworI2VuZGlmCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
TGlzdFN0eWxlSW1hZ2UsIEFwcGx5UHJvcGVydHlTdHlsZUltYWdlPCZSZW5kZXJTdHlsZTo6bGlz
dFN0eWxlSW1hZ2UsICZSZW5kZXJTdHlsZTo6c2V0TGlzdFN0eWxlSW1hZ2UsICZSZW5kZXJTdHls
ZTo6aW5pdGlhbExpc3RTdHlsZUltYWdlLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlMaXN0U3R5
bGVQb3NpdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUxpc3RTdHlsZVBvc2l0aW9uLCAmUmVu
ZGVyU3R5bGU6Omxpc3RTdHlsZVBvc2l0aW9uLCBFTGlzdFN0eWxlUG9zaXRpb24sICZSZW5kZXJT
dHlsZTo6c2V0TGlzdFN0eWxlUG9zaXRpb24sIEVMaXN0U3R5bGVQb3NpdGlvbiwgJlJlbmRlclN0
eWxlOjppbml0aWFsTGlzdFN0eWxlUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIEFwcGx5UHJvcGVydHlE
ZWZhdWx0PEVMaXN0U3R5bGVUeXBlLCAmUmVuZGVyU3R5bGU6Omxpc3RTdHlsZVR5cGUsIEVMaXN0
U3R5bGVUeXBlLCAmUmVuZGVyU3R5bGU6OnNldExpc3RTdHlsZVR5cGUsIEVMaXN0U3R5bGVUeXBl
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVUeXBlPjo6Y3JlYXRlSGFuZGxlcigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwODYxNTkxYTg4Nzc2NGZkZWVh
OWMwMThlOGViMTYxNDU5NzU3Yjk0Li5mOTBmNjkyMGMxOWZiMzdjNWNiZDNjNjJiMmVlMGNkNTBi
YTJmMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNDUxLDYgKzE0
NTEsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnVwZGF0ZUZvbnQoKQogICAgIGlmICghbV9zdGF0
ZS5mb250RGlydHkoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxFKElPU19URVhUX0FV
VE9TSVpJTkcpCisgICAgY2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgpOworI2VuZGlmCiAgICAgUmVu
ZGVyU3R5bGUqIHN0eWxlID0gbV9zdGF0ZS5zdHlsZSgpOwogICAgIGNoZWNrRm9yR2VuZXJpY0Zh
bWlseUNoYW5nZShzdHlsZSwgbV9zdGF0ZS5wYXJlbnRTdHlsZSgpKTsKICAgICBjaGVja0Zvclpv
b21DaGFuZ2Uoc3R5bGUsIG1fc3RhdGUucGFyZW50U3R5bGUoKSk7CkBAIC0xNTQ1LDcgKzE1NDgs
MTEgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWwKICNlbmRpZgogICAgICAgICBjYXNlIEhpZ2hQ
cmlvcml0eVByb3BlcnRpZXM6CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChmaXJzdENTU1By
b3BlcnR5ID09IENTU1Byb3BlcnR5Q29sb3IsIENTU19jb2xvcl9pc19maXJzdF9wcm9wZXJ0eSk7
CisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgICAgICAgICBDT01QSUxFX0FT
U0VSVChDU1NQcm9wZXJ0eVpvb20gPT0gQ1NTUHJvcGVydHlDb2xvciArIDE4LCBDU1Nfem9vbV9p
c19lbmRfb2ZfZmlyc3RfcHJvcF9yYW5nZSk7CisjZWxzZQogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoQ1NTUHJvcGVydHlab29tID09IENTU1Byb3BlcnR5Q29sb3IgKyAxNywgQ1NTX3pvb21f
aXNfZW5kX29mX2ZpcnN0X3Byb3BfcmFuZ2UpOworI2VuZGlmCiAgICAgICAgICAgICBDT01QSUxF
X0FTU0VSVChDU1NQcm9wZXJ0eUxpbmVIZWlnaHQgPT0gQ1NTUHJvcGVydHlab29tICsgMSwgQ1NT
X2xpbmVfaGVpZ2h0X2lzX2FmdGVyX3pvb20pOwogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQog
ICAgICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VmFyaWFibGUpCkBAIC0yNDMz
LDYgKzI0NDAsMjMgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgc2V0Rm9udERlc2NyaXB0aW9uKGZv
bnREZXNjcmlwdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisjaWYgRU5BQkxFKElPU19U
RVhUX0FVVE9TSVpJTkcpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0
OiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRleHRTaXplQWRqdXN0LCBU
ZXh0U2l6ZUFkanVzdCkKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUF1dG8pCisgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRUZXh0U2l6ZUFkanVz
dChUZXh0U2l6ZUFkanVzdG1lbnQoQXV0b1RleHRTaXplQWRqdXN0bWVudCkpOworICAgICAgICBl
bHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAg
ICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0
bWVudChOb1RleHRTaXplQWRqdXN0bWVudCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBz
dGF0ZS5zdHlsZSgpLT5zZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQocHJpbWl0
aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSkpOworCisgICAgICAgIHN0YXRlLnNldEZvbnREaXJ0
eSh0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RGFzaGJvYXJkUmVnaW9u
OgogICAgIHsKQEAgLTMxMDYsNiArMzEzMCwyMyBAQCBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IFN0
eWxlUmVzb2x2ZXI6OmN1cnNvck9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHBybwog
ICAgIHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CiB9CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVU
T1NJWklORykKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6Y2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgpCit7
CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gbV9zdGF0ZS5zdHlsZSgpOworCisgICAgaWYgKHN0
eWxlLT50ZXh0U2l6ZUFkanVzdCgpLmlzQXV0bygpKQorICAgICAgICByZXR1cm47CisKKyAgICBG
b250RGVzY3JpcHRpb24gbmV3Rm9udERlc2NyaXB0aW9uKHN0eWxlLT5mb250RGVzY3JpcHRpb24o
KSk7CisgICAgaWYgKCFzdHlsZS0+dGV4dFNpemVBZGp1c3QoKS5pc05vbmUoKSkKKyAgICAgICAg
bmV3Rm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShuZXdGb250RGVzY3JpcHRpb24uc3Bl
Y2lmaWVkU2l6ZSgpICogc3R5bGUtPnRleHRTaXplQWRqdXN0KCkubXVsdGlwbGllcigpKTsKKyAg
ICBlbHNlCisgICAgICAgIG5ld0ZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUobmV3Rm9u
dERlc2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKSk7CisgICAgc3R5bGUtPnNldEZvbnREZXNjcmlw
dGlvbihuZXdGb250RGVzY3JpcHRpb24pOworfQorI2VuZGlmCisKIHZvaWQgU3R5bGVSZXNvbHZl
cjo6Y2hlY2tGb3Jab29tQ2hhbmdlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKQogewogICAgIGlmIChzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpID09IHBhcmVudFN0
eWxlLT5lZmZlY3RpdmVab29tKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA0
OTM0ZDdkZmNjN2ViNmEzMGIzODgzN2JhZmIyOTQ5ODE1ZGNjOGQ5Li5jZDAxOGZiZjM0YTU5NzY2
MDJiNDRkYTk5NzQ2ODE3MmM4YjY3YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgK
QEAgLTM1OCw2ICszNTgsOSBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gZml4ZXMg
dXAgdGhlIGRlZmF1bHQgZm9udCBzaXplIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgY3VycmVudCBn
ZW5lcmljIGZvbnQgZmFtaWx5IGhhcyBjaGFuZ2VkLiAtZHdoCiAgICAgdm9pZCBjaGVja0Zvckdl
bmVyaWNGYW1pbHlDaGFuZ2UoUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUp
OwogICAgIHZvaWQgY2hlY2tGb3Jab29tQ2hhbmdlKFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlKTsKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICB2b2lk
IGNoZWNrRm9yVGV4dFNpemVBZGp1c3QoKTsKKyNlbmRpZgogCiAgICAgdm9pZCBhZGp1c3RSZW5k
ZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGVUb0FkanVzdCwgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlLCBFbGVtZW50Kik7CiAgICAgdm9pZCBhZGp1c3RHcmlkSXRlbVBvc2l0aW9uKFJlbmRlclN0
eWxlKiBzdHlsZVRvQWRqdXN0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGEw
ZWY1OTM0ZTdlZDA5YzQ5NjM4YzY4ZTlhZDQ4ODkxOGVkYjQ2NjIuLjdhYjExZDFhMGIyOWFiNGRi
MTNjNGFkZWU1OWZiOGE2NDA5MTZiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjA3
LDYgKzIwNywxMCBAQAogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyNpbmNsdWRlICJUZXh0
QXV0b1NpemluZy5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogI2lu
Y2x1ZGUgIlRleHRBdXRvc2l6ZXIuaCIKICNlbmRpZgpAQCAtMzg1LDYgKzM4OSwxOCBAQCB1aW50
NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKIHN0YXRpYyBjb25zdCBk
b3VibGUgdGltZUJlZm9yZVRocm93aW5nQXdheVN0eWxlUmVzb2x2ZXJBZnRlckxhc3RVc2VJblNl
Y29uZHMgPSAzMDsKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQordm9pZCBUZXh0
QXV0b1NpemluZ1RyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKFRleHRBdXRvU2l6aW5nS2V5
JiBzbG90KQoreworICAgIG5ldyAoJnNsb3QpIFRleHRBdXRvU2l6aW5nS2V5KFRleHRBdXRvU2l6
aW5nS2V5OjpkZWxldGVkS2V5U3R5bGUoKSwgVGV4dEF1dG9TaXppbmdLZXk6OmRlbGV0ZWRLZXlE
b2MoKSk7Cit9CisKK2Jvb2wgVGV4dEF1dG9TaXppbmdUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKGNv
bnN0IFRleHRBdXRvU2l6aW5nS2V5JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuc3R5bGUo
KSA9PSBUZXh0QXV0b1NpemluZ0tleTo6ZGVsZXRlZEtleVN0eWxlKCkgJiYgdmFsdWUuZG9jKCkg
PT0gVGV4dEF1dG9TaXppbmdLZXk6OmRlbGV0ZWRLZXlEb2MoKTsKK30KKyNlbmRpZgorCiBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIHVuc2lnbmVkIGRv
Y3VtZW50Q2xhc3NlcykKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9jdW1lbnQpCiAg
ICAgLCBUcmVlU2NvcGUodGhpcykKQEAgLTIxMTIsNiArMjEyOCwxMiBAQCB2b2lkIERvY3VtZW50
OjpkZXRhY2goKQogICAgIC8vIG9yIHRoaXMgc2V0dGluZyBvZiB0aGUgZnJhbWUgdG8gMCBjb3Vs
ZCBiZSBtYWRlIGV4cGxpY2l0IGluIGVhY2ggb2YgdGhlCiAgICAgLy8gY2FsbGVycyBvZiBEb2N1
bWVudDo6ZGV0YWNoKCkuCiAgICAgbV9mcmFtZSA9IDA7CisKKyNpZiBFTkFCTEUoSU9TX1RFWFRf
QVVUT1NJWklORykKKyAgICAvLyBEbyB0aGlzIGJlZm9yZSB0aGUgYXJlbmEgaXMgY2xlYXJlZCwg
d2hpY2ggaXMgbmVlZGVkIHRvIGRlcmVmIHRoZSBSZW5kZXJTdHlsZSBvbiBUZXh0QXV0b1Npemlu
Z0tleS4KKyAgICBtX3RleHRBdXRvU2l6ZWROb2Rlcy5jbGVhcigpOworI2VuZGlmCisKICAgICBt
X3JlbmRlckFyZW5hLmNsZWFyKCk7CiAKICAgICBpZiAobV9tZWRpYVF1ZXJ5TWF0Y2hlcikKQEAg
LTQ3MTYsNiArNDczOCw1OSBAQCBIVE1MQ2FudmFzRWxlbWVudCogRG9jdW1lbnQ6OmdldENTU0Nh
bnZhc0VsZW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBlbGVtZW50LmdldCgp
OwogfQogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCit2b2lkIERvY3VtZW50Ojph
ZGRBdXRvU2l6aW5nTm9kZShOb2RlKiBub2RlLCBmbG9hdCBjYW5kaWRhdGVTaXplKQoreworICAg
IFRleHRBdXRvU2l6aW5nS2V5IGtleShub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLCAmZG9jdW1l
bnQoKSk7CisgICAgUmVmUHRyPFRleHRBdXRvU2l6aW5nVmFsdWU+IHZhbHVlOworCisgICAgLy8g
RG8gd2UgYWxyZWFkeSBoYXZlIGEgY29sbGVjdGlvbiBvZiBub2RlcyBhc3NvY2lhdGVkIHdpdGgK
KyAgICAvLyB0aGlzIHN0eWxlPyBJZiBub3QgY3JlYXRlIG9uZS4KKyAgICBpZiAobV90ZXh0QXV0
b1NpemVkTm9kZXMuY29udGFpbnMoa2V5KSkKKyAgICAgICAgdmFsdWUgPSBtX3RleHRBdXRvU2l6
ZWROb2Rlcy5nZXQoa2V5KTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWUgPSBUZXh0QXV0b1Np
emluZ1ZhbHVlOjpjcmVhdGUoKTsKKyAgICAgICAgbV90ZXh0QXV0b1NpemVkTm9kZXMuc2V0KGtl
eSwgdmFsdWUpOworICAgIH0KKworICAgIC8vIEFkZCB0aGUgbm9kZSB0byB0aGUgY29sbGVjdGlv
biBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdHlsZS4KKyAgICB2YWx1ZS0+YWRkTm9kZShub2RlLCBj
YW5kaWRhdGVTaXplKTsKK30KKwordm9pZCBEb2N1bWVudDo6dmFsaWRhdGVBdXRvU2l6aW5nTm9k
ZXMoKQoreworICAgIFZlY3RvcjxUZXh0QXV0b1NpemluZ0tleT4gbm9kZXNGb3JSZW1vdmFsOwor
ICAgIFRleHRBdXRvU2l6aW5nTWFwOjppdGVyYXRvciBlbmQgPSBtX3RleHRBdXRvU2l6ZWROb2Rl
cy5lbmQoKTsKKyAgICBmb3IgKFRleHRBdXRvU2l6aW5nTWFwOjppdGVyYXRvciBpID0gbV90ZXh0
QXV0b1NpemVkTm9kZXMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgeworICAgICAgICBUZXh0QXV0
b1NpemluZ0tleSBrZXkgPSBpLT5rZXk7CisgICAgICAgIFJlZlB0cjxUZXh0QXV0b1NpemluZ1Zh
bHVlPiB2YWx1ZSA9IGktPnZhbHVlOworICAgICAgICAvLyBVcGRhdGUgYWxsIHRoZSBub2RlcyBp
biB0aGUgY29sbGVjdGlvbiB0byByZWZsZWN0IHRoZSBuZXcKKyAgICAgICAgLy8gY2FuZGlkYXRl
IHNpemUuCisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICB2YWx1ZS0+YWRqdXN0Tm9kZVNpemVzKCk7CisgICAgICAgIGlmICghdmFsdWUtPm51bU5v
ZGVzKCkpCisgICAgICAgICAgICBub2Rlc0ZvclJlbW92YWwuYXBwZW5kKGtleSk7CisgICAgfQor
ICAgIHVuc2lnbmVkIGNvdW50ID0gbm9kZXNGb3JSZW1vdmFsLnNpemUoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgbV90ZXh0QXV0b1NpemVkTm9k
ZXMucmVtb3ZlKG5vZGVzRm9yUmVtb3ZhbFtpXSk7Cit9CisgICAgCit2b2lkIERvY3VtZW50Ojpy
ZXNldEF1dG9TaXppbmdOb2RlcygpCit7CisgICAgVGV4dEF1dG9TaXppbmdNYXA6Oml0ZXJhdG9y
IGVuZCA9IG1fdGV4dEF1dG9TaXplZE5vZGVzLmVuZCgpOworICAgIGZvciAoVGV4dEF1dG9TaXpp
bmdNYXA6Oml0ZXJhdG9yIGkgPSBtX3RleHRBdXRvU2l6ZWROb2Rlcy5iZWdpbigpOyBpICE9IGVu
ZDsgKytpKSB7CisgICAgICAgIFJlZlB0cjxUZXh0QXV0b1NpemluZ1ZhbHVlPiB2YWx1ZSA9IGkt
PnZhbHVlOworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICB2YWx1ZS0+cmVzZXQoKTsK
KyAgICB9CisgICAgbV90ZXh0QXV0b1NpemVkTm9kZXMuY2xlYXIoKTsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorCiB2b2lkIERvY3VtZW50Ojppbml0RE5TUHJl
ZmV0Y2goKQogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IHRoaXMtPnNldHRpbmdzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDJkZTg5MTM1NjRiYjI1M2MyODFhNzQwNmU1YTQ3MGU0NzU1
MDQxZjMuLmQxYjZkMzIxNGNjNzI0Mjg4MDc2MzJlNWU4MWFjNGY2MzdiNjUxNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xODksNiArMTg5LDE4IEBAIGNsYXNzIEZvbnRMb2FkZXI7CiAKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklO
RykKK3N0cnVjdCBUZXh0QXV0b1NpemluZ0hhc2g7CitjbGFzcyBUZXh0QXV0b1NpemluZ0tleTsK
K2NsYXNzIFRleHRBdXRvU2l6aW5nVmFsdWU7CisKK3N0cnVjdCBUZXh0QXV0b1NpemluZ1RyYWl0
cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8VGV4dEF1dG9TaXppbmdLZXk+IHsKKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICBzdGF0aWMgdm9pZCBj
b25zdHJ1Y3REZWxldGVkVmFsdWUoVGV4dEF1dG9TaXppbmdLZXkmIHNsb3QpOworICAgIHN0YXRp
YyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFRleHRBdXRvU2l6aW5nS2V5JiB2YWx1ZSk7Cit9
OworI2VuZGlmCisKIGVudW0gUGFnZXNob3dFdmVudFBlcnNpc3RlbmNlIHsKICAgICBQYWdlc2hv
d0V2ZW50Tm90UGVyc2lzdGVkID0gMCwKICAgICBQYWdlc2hvd0V2ZW50UGVyc2lzdGVkID0gMQpA
QCAtMTUwMSw2ICsxNTEzLDE3IEBAIHByaXZhdGU6CiAgICAgVGltZXI8RG9jdW1lbnQ+IG1fcGVu
ZGluZ1Rhc2tzVGltZXI7CiAgICAgVmVjdG9yPE93blB0cjxUYXNrPiA+IG1fcGVuZGluZ1Rhc2tz
OwogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCitwdWJsaWM6CisgICAgdm9pZCBh
ZGRBdXRvU2l6aW5nTm9kZShOb2RlKiwgZmxvYXQgc2l6ZSk7CisgICAgdm9pZCB2YWxpZGF0ZUF1
dG9TaXppbmdOb2RlcygpOworICAgIHZvaWQgcmVzZXRBdXRvU2l6aW5nTm9kZXMoKTsKKworcHJp
dmF0ZToKKyAgICB0eXBlZGVmIEhhc2hNYXA8VGV4dEF1dG9TaXppbmdLZXksIFJlZlB0cjxUZXh0
QXV0b1NpemluZ1ZhbHVlPiwgVGV4dEF1dG9TaXppbmdIYXNoLCBUZXh0QXV0b1NpemluZ1RyYWl0
cz4gVGV4dEF1dG9TaXppbmdNYXA7CisgICAgVGV4dEF1dG9TaXppbmdNYXAgbV90ZXh0QXV0b1Np
emVkTm9kZXM7CisjZW5kaWYKKwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgT3du
UHRyPFRleHRBdXRvc2l6ZXI+IG1fdGV4dEF1dG9zaXplcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IGZmOWNmNmRlMGY3ZWU0MjI1ZDg4ZDM3MDgw
NDc3N2Q4NTViODc3NjYuLjJlMDQ4N2EzY2FmMzU5MmRiMzg2ZmQ4NWQwMGE3YWY2MDZkMGFlMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTc2LDYgKzc2LDkg
QEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgZWRpdGluZ1Byb3BlcnRpZXNbXSA9IHsKICAg
ICBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29y
YXRpb25zSW5FZmZlY3QsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLAorI2lm
IEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFNp
emVBZGp1c3QsCisjZW5kaWYKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwK
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmlu
ZGV4IDNlMGYzZmM2ZGVjOTBhZGE1YzdhYjdjYzk4ZGMyMzNkOWE4MDdkNjYuLjQ3MmI2N2RiYTll
ZTE1NmMzZWVkOTBkYjlhMGFlMzc0NmEyMTU0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE4NCw2
ICsxODQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgc2VhcmNoRm9y
TGFiZWxzQmVmb3JlRWxlbWVudChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50
Kiwgc2l6ZV90KiByZXN1bHREaXN0YW5jZSwgYm9vbCogcmVzdWx0SXNJbkNlbGxBYm92ZSk7CiAg
ICAgICAgIFN0cmluZyBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBsYWJlbHMsIEVsZW1lbnQqKTsKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5H
KQorICAgICAgICB2b2lkIHNldFRleHRBdXRvc2l6aW5nV2lkdGgoZmxvYXQpOworICAgICAgICBm
bG9hdCB0ZXh0QXV0b3NpemluZ1dpZHRoKCkgY29uc3Q7CisjZW5kaWYKKwogICAgICAgICB2b2lk
IHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgICAgICB2b2lkIHJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgICAgIGJvb2wgYWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9CkBAIC0yMTUsNiAr
MjIwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgT3duUHRyPEV2ZW50
SGFuZGxlcj4gbV9ldmVudEhhbmRsZXI7CiAgICAgICAgIGNvbnN0IE93blB0cjxBbmltYXRpb25D
b250cm9sbGVyPiBtX2FuaW1hdGlvbkNvbnRyb2xsZXI7CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRf
QVVUT1NJWklORykKKyAgICAgICAgZmxvYXQgbV90ZXh0QXV0b3NpemluZ1dpZHRoOworI2VuZGlm
CisKICAgICAgICAgZmxvYXQgbV9wYWdlWm9vbUZhY3RvcjsKICAgICAgICAgZmxvYXQgbV90ZXh0
Wm9vbUZhY3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGU3YjMxMzQzM2I4
YzFlMjdhZmI0MDExNDkxYmNhZjViMTQ5ZGVjODguLjQ0OWE2YTE1NmY3ZmU5ZjU1Y2VlZTcwNWVm
MzEwNjllZmRhYWI0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEyNzUsNiAr
MTI3NSwxNiBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAg
ICAgICBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsKICAgICAgICAgZm9yY2VMYXlvdXRQYXJlbnRW
aWV3SWZOZWVkZWQoKTsKICAgICAgICAgcm9vdC0+bGF5b3V0KCk7CisjaWYgRU5BQkxFKElPU19U
RVhUX0FVVE9TSVpJTkcpCisgICAgICAgIGZsb2F0IG1pblpvb21Gb250U2l6ZSA9IGZyYW1lKCku
c2V0dGluZ3MoKS5taW5pbXVtWm9vbUZvbnRTaXplKCk7CisgICAgICAgIGZsb2F0IHZpc1dpZHRo
ID0gZnJhbWUoKS5wYWdlKCktPm1haW5GcmFtZSgpLnRleHRBdXRvc2l6aW5nV2lkdGgoKTsKKyAg
ICAgICAgaWYgKG1pblpvb21Gb250U2l6ZSAmJiB2aXNXaWR0aCAmJiAhcm9vdC0+dmlldygpLnBy
aW50aW5nKCkpIHsKKyAgICAgICAgICAgIHJvb3QtPmFkanVzdENvbXB1dGVkRm9udFNpemVzT25C
bG9ja3MobWluWm9vbUZvbnRTaXplLCB2aXNXaWR0aCk7ICAgIAorICAgICAgICAgICAgYm9vbCBu
ZWVkc0xheW91dCA9IHJvb3QtPm5lZWRzTGF5b3V0KCk7CisgICAgICAgICAgICBpZiAobmVlZHNM
YXlvdXQpCisgICAgICAgICAgICAgICAgcm9vdC0+bGF5b3V0KCk7CisgICAgICAgIH0KKyNlbmRp
ZgogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAgICAgICAgIGlmIChkb2N1bWVudC50ZXh0
QXV0b3NpemVyKCktPnByb2Nlc3NTdWJ0cmVlKHJvb3QpICYmIHJvb3QtPm5lZWRzTGF5b3V0KCkp
CiAgICAgICAgICAgICByb290LT5sYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCmluZGV4
IGY2MjA0YjM0MjM3YjYyM2UzMmQxMjBkZDhjYjNkMTkyNDBiNDZmMjkuLjI4ZjhkMDVkMDc5Njgw
Nzg0NTY5MmMxMDU4Mzc2NGU3Y2Q4ODYzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgpAQCAt
MjAxLDMgKzIwMSw1IEBAIHNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQgaW5pdGlhbD1k
ZWZhdWx0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZAogCiBzZWxlY3Rpb25JbmNsdWRl
c0FsdEltYWdlVGV4dCBpbml0aWFsPXRydWUKIHVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRo
YW5kQmVoYXZpb3IgaW5pdGlhbD1mYWxzZQorCittaW5pbXVtWm9vbUZvbnRTaXplIHR5cGU9Zmxv
YXQsIGluaXRpYWw9MTUsIGNvbmRpdGlvbmFsPUlPU19URVhUX0FVVE9TSVpJTkcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCAyOGQ0OWI2NmE0MThiYWViZmVjNjNm
ZDljMDRjZmZmMmUwYThmZDgzLi45ODA0MWYwNTQzZjhmNTRmZmM4MzdkYjYyZTlmODE1OTAzZWM0
ODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0yMTQsNiAr
MjE0LDE1IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR1RleHRSdW5SZW5kZXJpbmdD
b250ZXh0OwogCiBwdWJsaWM6CisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAg
Ym9vbCBlcXVhbEZvclRleHRBdXRvU2l6aW5nKGNvbnN0IEZvbnQmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLmVxdWFsRm9yVGV4dEF1dG9TaXpp
bmcob3RoZXIubV9mb250RGVzY3JpcHRpb24pCisgICAgICAgICAgICAmJiBtX2xldHRlclNwYWNp
bmcgPT0gb3RoZXIubV9sZXR0ZXJTcGFjaW5nCisgICAgICAgICAgICAmJiBtX3dvcmRTcGFjaW5n
ID09IG90aGVyLm1fd29yZFNwYWNpbmc7CisgICAgfQorI2VuZGlmCisKICAgICAvLyBVc2VmdWwg
Zm9yIGRlYnVnZ2luZyB0aGUgZGlmZmVyZW50IGZvbnQgcmVuZGVyaW5nIGNvZGUgcGF0aHMuCiAg
ICAgc3RhdGljIHZvaWQgc2V0Q29kZVBhdGgoQ29kZVBhdGgpOwogICAgIHN0YXRpYyBDb2RlUGF0
aCBjb2RlUGF0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERlc2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnREZXNjcmlwdGlvbi5jcHAKaW5kZXggMzQ4N2ZmMDRhZTI5NGVhNTNhZmNlYTVmMzEzNmMx
ZWYwMmM3ZmI2MS4uNDRiZjM5ZWNjYjllY2JhYTE4YmFkZWVlMWU0OWJkYjg5YmQ2M2EyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRp
b24uY3BwCkBAIC0xMTYsNCArMTE2LDIyIEBAIEZvbnREZXNjcmlwdGlvbiBGb250RGVzY3JpcHRp
b246Om1ha2VOb3JtYWxGZWF0dXJlU2V0dGluZ3MoKSBjb25zdAogICAgIHJldHVybiBub3JtYWxE
ZXNjcmlwdGlvbjsKIH0KIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorYm9vbCBG
b250RGVzY3JpcHRpb246OmZhbWlsaWVzRXF1YWxGb3JUZXh0QXV0b1NpemluZyhjb25zdCBGb250
RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdAoreworICAgIHVuc2lnbmVkIHRoaXNGYW1pbHlDb3Vu
dCA9IGZhbWlseUNvdW50KCk7CisgICAgdW5zaWduZWQgb3RoZXJGYW1pbHlDb3VudCA9IG90aGVy
LmZhbWlseUNvdW50KCk7CisKKyAgICBpZiAodGhpc0ZhbWlseUNvdW50ICE9IG90aGVyRmFtaWx5
Q291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0aGlzRmFtaWx5Q291bnQ7ICsraSkgeworICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdD
YXNlKGZhbWlseUF0KGkpLCBvdGhlci5mYW1pbHlBdChpKSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYgLy8gRU5BQkxFKElP
U19URVhUX0FVVE9TSVpJTkcpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXggYjFh
YmFlZTc3YTE5ZmI2ODZiMmZlOGJkNTE5MGE5YjM2M2E4Nzc0Zi4uNjg3ODI3NjBlYjQwYzgwZWY4
OGRiYjZlMzlhZWZlMzQ0YzUxZjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTE2OCw2ICsxNjgsMjAgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U2NyaXB0KFVTY3JpcHRDb2RlIHMpIHsgbV9zY3JpcHQgPSBzOyB9CiAg
ICAgdm9pZCBzZXRGZWF0dXJlU2V0dGluZ3MoUGFzc1JlZlB0cjxGb250RmVhdHVyZVNldHRpbmdz
PiBzZXR0aW5ncykgeyBtX2ZlYXR1cmVTZXR0aW5ncyA9IHNldHRpbmdzOyB9CiAKKyNpZiBFTkFC
TEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBib29sIGZhbWlsaWVzRXF1YWxGb3JUZXh0QXV0
b1NpemluZyhjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdDsKKworICAgIGJvb2wg
ZXF1YWxGb3JUZXh0QXV0b1NpemluZyhjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbWlsaWVzRXF1YWxGb3JUZXh0QXV0b1NpemluZyhv
dGhlcikKKyAgICAgICAgICAgICYmIG1fc3BlY2lmaWVkU2l6ZSA9PSBvdGhlci5tX3NwZWNpZmll
ZFNpemUKKyAgICAgICAgICAgICYmIG1fc21hbGxDYXBzID09IG90aGVyLm1fc21hbGxDYXBzCisg
ICAgICAgICAgICAmJiBtX2lzQWJzb2x1dGVTaXplID09IG90aGVyLm1faXNBYnNvbHV0ZVNpemUK
KyAgICAgICAgICAgICYmIG1fZ2VuZXJpY0ZhbWlseSA9PSBvdGhlci5tX2dlbmVyaWNGYW1pbHkK
KyAgICAgICAgICAgICYmIG1fdXNlUHJpbnRlckZvbnQgPT0gb3RoZXIubV91c2VQcmludGVyRm9u
dDsKKyAgICB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBWZWN0b3I8QXRvbWljU3RyaW5nLCAx
PiBtX2ZhbWlsaWVzOwogICAgIFJlZlB0cjxGb250RmVhdHVyZVNldHRpbmdzPiBtX2ZlYXR1cmVT
ZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDlk
YzM2OGFkMDliYzM2MjBjMDlmNzE2YjhiNzdlM2E3Y2M1NjRkNjMuLjVmODRkZTRkMjkwOTQ2ZTU5
NmU1MTljY2Y3NjdjMGRhN2E4MjgxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcApAQCAtNzAsNiArNzAsMTAgQEAKICNpbmNsdWRlICJTaGFwZU91dHNpZGVJbmZv
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5h
bWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKQEAgLTE5NCw2ICsxOTgsMTAg
QEAgUmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgLCBtX2Jl
aW5nRGVzdHJveWVkKGZhbHNlKQogICAgICwgbV9oYXNNYXJrdXBUcnVuY2F0aW9uKGZhbHNlKQog
ICAgICwgbV9oYXNCb3JkZXJPclBhZGRpbmdMb2dpY2FsV2lkdGhDaGFuZ2VkKGZhbHNlKQorI2lm
IEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICwgbV93aWR0aEZvclRleHRBdXRvc2l6
aW5nKC0xKQorICAgICwgbV9saW5lQ291bnRGb3JUZXh0QXV0b3NpemluZyhOT1RfU0VUKQorI2Vu
ZGlmCiB7CiAgICAgc2V0Q2hpbGRyZW5JbmxpbmUodHJ1ZSk7CiAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFJlbmRlckJsb2NrOjpNYXJnaW5JbmZvKSA9PSBzaXplb2YoU2FtZVNpemVBc01hcmdp
bkluZm8pLCBNYXJnaW5JbmZvX3Nob3VsZF9zdGF5X3NtYWxsKTsKQEAgLTc4ODksNCArNzg5Nywx
MjcgQEAgdm9pZCBSZW5kZXJCbG9jazo6c2hvd0xpbmVUcmVlQW5kTWFyayhjb25zdCBJbmxpbmVC
b3gqIG1hcmtlZEJveDEsIGNvbnN0IGNoYXIqIG0KIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9T
X1RFWFRfQVVUT1NJWklORykKKworI2RlZmluZSBQYXJhZ3JhcGhNaW5Xb3JkQ291bnQgNgorI2Rl
ZmluZSBQYXJhZ3JhcGhNaW5MaW5lQ291bnQgMgorI2RlZmluZSBQYXJhZ3JhcGhNYXhXaWR0aCAg
ICAgMC45CisKK2lubGluZSBzdGF0aWMgYm9vbCBpc1Zpc2libGVSZW5kZXJUZXh0KFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCit7CisgICAgaWYgKCFyZW5kZXJlci0+aXNUZXh0KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBSZW5kZXJUZXh0KiByZW5kZXJUZXh0ID0gdG9SZW5kZXJUZXh0
KHJlbmRlcmVyKTsKKyAgICByZXR1cm4gIXJlbmRlclRleHQtPmxpbmVzQm91bmRpbmdCb3goKS5p
c0VtcHR5KCkgJiYgIXJlbmRlclRleHQtPnRleHQoKS0+Y29udGFpbnNPbmx5V2hpdGVzcGFjZSgp
OworfQorCitpbmxpbmUgc3RhdGljIGJvb2wgcmVzaXplVGV4dFBlcm1pdHRlZChSZW5kZXJPYmpl
Y3QqIHJlbmRlcikKK3sKKyAgICAvLyBXZSBkaXNhbGxvdyByZXNpemluZyBmb3IgdGV4dCBpbnB1
dCBmaWVsZHMgYW5kIHRleHRhcmVhIHRvIGFkZHJlc3MgPHJkYXI6Ly9wcm9ibGVtLzU3OTI5ODc+
IGFuZCA8cmRhcjovL3Byb2JsZW0vODAyMTEyMz4KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gcmVuZGVyLT5wYXJlbnQoKTsKKyAgICB3aGlsZSAocmVuZGVyZXIpIHsKKyAgICAgICAgLy8g
R2V0IHRoZSBmaXJzdCBub24tc2hhZG93IEhUTUxFbGVtZW50IGFuZCBzZWUgaWYgaXQncyBhbiBp
bnB1dC4KKyAgICAgICAgaWYgKHJlbmRlcmVyLT5ub2RlKCkgJiYgcmVuZGVyZXItPm5vZGUoKS0+
aXNIVE1MRWxlbWVudCgpICYmICFyZW5kZXJlci0+bm9kZSgpLT5pc0luU2hhZG93VHJlZSgpKSB7
CisgICAgICAgICAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQocmVuZGVy
ZXItPm5vZGUoKSk7CisgICAgICAgICAgICByZXR1cm4gIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5w
dXRUYWcpICYmICFlbGVtZW50LT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKTsKKyAgICAgICAgfQor
ICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2ludCBSZW5kZXJCbG9jazo6aW1tZWRpYXRlTGluZUNvdW50KCkKK3sKKyAg
ICAvLyBDb3BpZWQgYW5kIG1vZGlmaWVkIGZyb20gUmVuZGVyQmxvY2s6OmxpbmVDb3VudC4KKyAg
ICAvLyBPbmx5IGRlc2NlbmQgaW50byBsaXN0IGl0ZW1zLgorICAgIGludCBjb3VudCA9IDA7Cisg
ICAgaWYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFKSB7CisgICAgICAgIGlmIChj
aGlsZHJlbklubGluZSgpKSB7CisgICAgICAgICAgICBmb3IgKFJvb3RJbmxpbmVCb3gqIGJveCA9
IGZpcnN0Um9vdEJveCgpOyBib3g7IGJveCA9IGJveC0+bmV4dFJvb3RCb3goKSkKKyAgICAgICAg
ICAgICAgICBjb3VudCsrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChSZW5k
ZXJPYmplY3QqIG9iaiA9IGZpcnN0Q2hpbGQoKTsgb2JqOyBvYmogPSBvYmotPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAob2JqLT5pc0xpc3RJdGVtKCkpCisgICAgICAgICAg
ICAgICAgICAgIGNvdW50ICs9IHRvUmVuZGVyQmxvY2sob2JqKS0+bGluZUNvdW50KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCitzdGF0
aWMgYm9vbCBpc05vbkJsb2Nrc09yTm9uRml4ZWRIZWlnaHRMaXN0SXRlbXMoY29uc3QgUmVuZGVy
T2JqZWN0KiByZW5kZXIpCit7CisgICAgaWYgKCFyZW5kZXItPmlzUmVuZGVyQmxvY2soKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHJlbmRlci0+aXNMaXN0SXRlbSgpKSB7CisgICAg
ICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlci0+c3R5bGUoKTsKKyAgICAgICAgcmV0dXJu
IHN0eWxlICYmIHN0eWxlLT5oZWlnaHQoKS50eXBlKCkgIT0gRml4ZWQ7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworLy8gIEZvciBub3csIHdlIGF1dG8gc2l6ZSBzaW5nbGUgbGluZXMg
b2YgdGV4dCB0aGUgc2FtZSBhcyBtdWx0aXBsZSBsaW5lcy4KKy8vICBXZSd2ZSBiZWVuIGV4cGVy
aW1lbnRpbmcgd2l0aCBsb3cgdmFsdWVzIGZvciBzaW5nbGUgbGluZXMgb2YgdGV4dC4KK3N0YXRp
YyBpbmxpbmUgZmxvYXQgb25lTGluZVRleHRNdWx0aXBsaWVyKGZsb2F0IHNwZWNpZmllZFNpemUp
Cit7CisgICAgcmV0dXJuIG1heCgoMS4wZiAvIGxvZzEwZihzcGVjaWZpZWRTaXplKSAqIDEuN2Yp
LCAxLjBmKTsKK30KKworc3RhdGljIGlubGluZSBmbG9hdCB0ZXh0TXVsdGlwbGllcihmbG9hdCBz
cGVjaWZpZWRTaXplKQoreworICAgIHJldHVybiBtYXgoKDEuMGYgLyBsb2cxMGYoc3BlY2lmaWVk
U2l6ZSkgKiAxLjk1ZiksIDEuMGYpOworfQorCit2b2lkIFJlbmRlckJsb2NrOjphZGp1c3RDb21w
dXRlZEZvbnRTaXplcyhmbG9hdCBzaXplLCBmbG9hdCB2aXNpYmxlV2lkdGgpCit7CisgICAgLy8g
RG9uJ3QgZG8gYW55IHdvcmsgaWYgdGhlIGJsb2NrIGlzIHNtYWxsZXIgdGhhbiB0aGUgdmlzaWJs
ZSBhcmVhLgorICAgIGlmICh2aXNpYmxlV2lkdGggPj0gd2lkdGgoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdW5zaWduZWQgbGluZUNvdW50OworICAgIGlmIChtX2xpbmVDb3VudEZvclRleHRB
dXRvc2l6aW5nID09IE5PVF9TRVQpIHsKKyAgICAgICAgaW50IGNvdW50ID0gaW1tZWRpYXRlTGlu
ZUNvdW50KCk7CisgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAgICBsaW5lQ291bnQgPSBO
T19MSU5FOworICAgICAgICBlbHNlIGlmIChjb3VudCA9PSAxKQorICAgICAgICAgICAgbGluZUNv
dW50ID0gT05FX0xJTkU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxpbmVDb3VudCA9IE1V
TFRJX0xJTkU7CisgICAgfSBlbHNlCisgICAgICAgIGxpbmVDb3VudCA9IG1fbGluZUNvdW50Rm9y
VGV4dEF1dG9zaXppbmc7CisKKyAgICBBU1NFUlQobGluZUNvdW50ICE9IE5PVF9TRVQpOworICAg
IGlmIChsaW5lQ291bnQgPT0gTk9fTElORSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQg
YWN0dWFsV2lkdGggPSBtX3dpZHRoRm9yVGV4dEF1dG9zaXppbmcgIT0gLTEgPyBzdGF0aWNfY2Fz
dDxmbG9hdD4obV93aWR0aEZvclRleHRBdXRvc2l6aW5nKSA6IHN0YXRpY19jYXN0PGZsb2F0Pih3
aWR0aCgpKTsKKyAgICBmbG9hdCBzY2FsZSA9IHZpc2libGVXaWR0aCAvIGFjdHVhbFdpZHRoOwor
ICAgIGZsb2F0IG1pbkZvbnRTaXplID0gcm91bmRmKHNpemUgLyBzY2FsZSk7ICAgCisKKyAgICBm
b3IgKFJlbmRlck9iamVjdCogZGVzY2VuZGVudCA9IHRyYXZlcnNlTmV4dCh0aGlzLCBpc05vbkJs
b2Nrc09yTm9uRml4ZWRIZWlnaHRMaXN0SXRlbXMpOyBkZXNjZW5kZW50OyBkZXNjZW5kZW50ID0g
ZGVzY2VuZGVudC0+dHJhdmVyc2VOZXh0KHRoaXMsIGlzTm9uQmxvY2tzT3JOb25GaXhlZEhlaWdo
dExpc3RJdGVtcykpIHsKKyAgICAgICAgaWYgKGlzVmlzaWJsZVJlbmRlclRleHQoZGVzY2VuZGVu
dCkgJiYgcmVzaXplVGV4dFBlcm1pdHRlZChkZXNjZW5kZW50KSkgeworICAgICAgICAgICAgUmVu
ZGVyVGV4dCogdGV4dCA9IHRvUmVuZGVyVGV4dChkZXNjZW5kZW50KTsKKyAgICAgICAgICAgIFJl
bmRlclN0eWxlKiBvbGRTdHlsZSA9IHRleHQtPnN0eWxlKCk7CisgICAgICAgICAgICBGb250RGVz
Y3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gb2xkU3R5bGUtPmZvbnREZXNjcmlwdGlvbigpOwor
ICAgICAgICAgICAgZmxvYXQgc3BlY2lmaWVkU2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5zcGVjaWZp
ZWRTaXplKCk7CisgICAgICAgICAgICBmbG9hdCBzY2FsZWRTaXplID0gcm91bmRmKHNwZWNpZmll
ZFNpemUgKiBzY2FsZSk7CisgICAgICAgICAgICBpZiAoc2NhbGVkU2l6ZSA+IDAgJiYgc2NhbGVk
U2l6ZSA8IG1pbkZvbnRTaXplKSB7CisgICAgICAgICAgICAgICAgLy8gUmVjb3JkIHRoZSB3aWR0
aCBvZiB0aGUgYmxvY2sgYW5kIHRoZSBsaW5lIGNvdW50IHRoZSBmaXJzdCB0aW1lIHdlIHJlc2l6
ZSB0ZXh0IGFuZCB1c2UgaXQgZnJvbSB0aGVuIG9uIGZvciB0ZXh0IHJlc2l6aW5nLgorICAgICAg
ICAgICAgICAgIC8vIFRoaXMgbWFrZXMgdGV4dCByZXNpemluZyBjb25zaXN0ZW50IGV2ZW4gaWYg
dGhlIGJsb2NrJ3Mgd2lkdGggb3IgbGluZSBjb3VudCBjaGFuZ2VzICh3aGljaCBjYW4gYmUgY2F1
c2VkIGJ5IHRleHQgcmVzaXppbmcgaXRzZWxmIDUxNTk5MTUpLgorICAgICAgICAgICAgICAgIGlm
IChtX2xpbmVDb3VudEZvclRleHRBdXRvc2l6aW5nID09IE5PVF9TRVQpCisgICAgICAgICAgICAg
ICAgICAgIG1fbGluZUNvdW50Rm9yVGV4dEF1dG9zaXppbmcgPSBsaW5lQ291bnQ7CisgICAgICAg
ICAgICAgICAgaWYgKG1fd2lkdGhGb3JUZXh0QXV0b3NpemluZyA9PSAtMSkKKyAgICAgICAgICAg
ICAgICAgICAgbV93aWR0aEZvclRleHRBdXRvc2l6aW5nID0gYWN0dWFsV2lkdGg7CisKKyAgICAg
ICAgICAgICAgICBmbG9hdCBjYW5kaWRhdGVOZXdTaXplID0gMDsKKyAgICAgICAgICAgICAgICBm
bG9hdCBsaW5lVGV4dE11bHRpcGxpZXIgPSBsaW5lQ291bnQgPT0gT05FX0xJTkUgPyBvbmVMaW5l
VGV4dE11bHRpcGxpZXIoc3BlY2lmaWVkU2l6ZSkgOiB0ZXh0TXVsdGlwbGllcihzcGVjaWZpZWRT
aXplKTsKKyAgICAgICAgICAgICAgICBjYW5kaWRhdGVOZXdTaXplID0gcm91bmRmKG1pbihtaW5G
b250U2l6ZSwgc3BlY2lmaWVkU2l6ZSAqIGxpbmVUZXh0TXVsdGlwbGllcikpOworICAgICAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGVOZXdTaXplID4gc3BlY2lmaWVkU2l6ZSAmJiBjYW5kaWRhdGVO
ZXdTaXplICE9IGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSAmJiB0ZXh0LT5ub2RlKCkg
JiYgKCFvbGRTdHlsZSB8fCBvbGRTdHlsZS0+dGV4dFNpemVBZGp1c3QoKS5pc0F1dG8oKSkpCisg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkQXV0b1NpemluZ05vZGUodGV4dC0+bm9k
ZSgpLCBjYW5kaWRhdGVOZXdTaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKyNlbmRpZiAvLyBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBiY2Zi
M2NkMmY2MDQ5OTlhYjQyNGIwMWE5YTBlZTg5ZjdkM2M4MTI3Li45YjgxODMyZjA1MmE5N2Q5NTk0
MjYxMWJmMTgzM2UzYzM5ZjJkNjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaApAQCAtNzQsNiArNzQsMTIgQEAgdHlwZWRlZiBWZWN0b3I8V29yZE1lYXN1cmVtZW50LCA2
ND4gV29yZE1lYXN1cmVtZW50czsKIGVudW0gQ2FyZXRUeXBlIHsgQ3Vyc29yQ2FyZXQsIERyYWdD
YXJldCB9OwogZW51bSBDb250YWluaW5nQmxvY2tTdGF0ZSB7IE5ld0NvbnRhaW5pbmdCbG9jaywg
U2FtZUNvbnRhaW5pbmdCbG9jayB9OwogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcp
CitlbnVtIExpbmVDb3VudCB7CisgICAgTk9UX1NFVCA9IDAsIE5PX0xJTkUgPSAxLCBPTkVfTElO
RSA9IDIsIE1VTFRJX0xJTkUgPSAzCit9OworI2VuZGlmCisKIGVudW0gVGV4dFJ1bkZsYWcgewog
ICAgIERlZmF1bHRUZXh0UnVuRmxhZ3MgPSAwLAogICAgIFJlc3BlY3REaXJlY3Rpb24gPSAxIDw8
IDAsCkBAIC00NTIsNiArNDU4LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dMaW5lVHJlZUFu
ZE1hcmsoY29uc3QgSW5saW5lQm94KiA9IDAsIGNvbnN0IGNoYXIqID0gMCwgY29uc3QgSW5saW5l
Qm94KiA9IDAsIGNvbnN0IGNoYXIqID0gMCwgY29uc3QgUmVuZGVyT2JqZWN0KiA9IDApIGNvbnN0
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBpbnQgaW1t
ZWRpYXRlTGluZUNvdW50KCk7CisgICAgdm9pZCBhZGp1c3RDb21wdXRlZEZvbnRTaXplcyhmbG9h
dCBzaXplLCBmbG9hdCB2aXNpYmxlV2lkdGgpOworICAgIHZvaWQgcmVzZXRDb21wdXRlZEZvbnRT
aXplKCkKKyAgICB7CisgICAgICAgIG1fd2lkdGhGb3JUZXh0QXV0b3NpemluZyA9IC0xOworICAg
ICAgICBtX2xpbmVDb3VudEZvclRleHRBdXRvc2l6aW5nID0gTk9UX1NFVDsKKyAgICB9CisjZW5k
aWYKKwogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIFNoYXBlSW5zaWRlSW5mbyogZW5zdXJl
U2hhcGVJbnNpZGVJbmZvKCkKICAgICB7CkBAIC0xMTAxLDYgKzExMTcsMTEgQEAgcHJvdGVjdGVk
OgogICAgIHVuc2lnbmVkIG1faGFzTWFya3VwVHJ1bmNhdGlvbiA6IDE7CiAgICAgdW5zaWduZWQg
bV9oYXNCb3JkZXJPclBhZGRpbmdMb2dpY2FsV2lkdGhDaGFuZ2VkIDogMTsKIAorI2lmIEVOQUJM
RShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgIGludCBtX3dpZHRoRm9yVGV4dEF1dG9zaXppbmc7
CisgICAgdW5zaWduZWQgbV9saW5lQ291bnRGb3JUZXh0QXV0b3NpemluZyA6IDI7CisjZW5kaWYK
KyAgICAKICAgICAvLyBSZW5kZXJSdWJ5QmFzZSBvYmplY3RzIG5lZWQgdG8gYmUgYWJsZSB0byBz
cGxpdCBhbmQgbWVyZ2UsIG1vdmluZyB0aGVpciBjaGlsZHJlbiBhcm91bmQKICAgICAvLyAoY2Fs
bGluZyBtb3ZlQ2hpbGRUbywgbW92ZUFsbENoaWxkcmVuVG8sIGFuZCBtYWtlQ2hpbGRyZW5Ob25J
bmxpbmUpLgogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJSdWJ5QmFzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNTI1NmUxNzZmYWVkOTE3ZWFiZWU1MGZm
ZDYwMWRhYTAzNDRlNGZmZS4uMmQ3NWY5Y2Q3NzlhZjFkNWI1OGU2NTc1ODI3ZTcwMjZjNTFiZTMy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQ3OSw2
ICs0NzksMTkyIEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpsYXN0TGVhZkNoaWxkKCkg
Y29uc3QKICAgICByZXR1cm4gcjsKIH0KIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5H
KQorLy8gSW5zcGlyZWQgYnkgTm9kZTo6dHJhdmVyc2VOZXh0Tm9kZS4KK1JlbmRlck9iamVjdCog
UmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGlu
KSBjb25zdAoreworICAgIGlmIChmaXJzdENoaWxkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFzdGF5
V2l0aGluIHx8IGZpcnN0Q2hpbGQoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOworICAg
ICAgICByZXR1cm4gZmlyc3RDaGlsZCgpOworICAgIH0KKyAgICBpZiAodGhpcyA9PSBzdGF5V2l0
aGluKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobmV4dFNpYmxpbmcoKSkgeworICAgICAg
ICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgbmV4dFNpYmxpbmcoKS0+aXNEZXNjZW5kYW50T2Yoc3Rh
eVdpdGhpbikpOworICAgICAgICByZXR1cm4gbmV4dFNpYmxpbmcoKTsKKyAgICB9CisgICAgY29u
c3QgUmVuZGVyT2JqZWN0KiBuID0gdGhpczsKKyAgICB3aGlsZSAobiAmJiAhbi0+bmV4dFNpYmxp
bmcoKSAmJiAoIXN0YXlXaXRoaW4gfHwgbi0+cGFyZW50KCkgIT0gc3RheVdpdGhpbikpCisgICAg
ICAgIG4gPSBuLT5wYXJlbnQoKTsKKyAgICBpZiAobikgeworICAgICAgICBBU1NFUlQoIXN0YXlX
aXRoaW4gfHwgIW4tPm5leHRTaWJsaW5nKCkgfHwgbi0+bmV4dFNpYmxpbmcoKS0+aXNEZXNjZW5k
YW50T2Yoc3RheVdpdGhpbikpOworICAgICAgICByZXR1cm4gbi0+bmV4dFNpYmxpbmcoKTsKKyAg
ICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIE5vbi1yZWN1cnNpdmUgdmVyc2lvbiBvZiB0aGUg
REZTIHNlYXJjaC4KK1JlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29u
c3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluLCBIZWlnaHRUeXBlVHJhdmVyc2VOZXh0SW5jbHVz
aW9uRnVuY3Rpb24gaW5jbHVzaW9uRnVuY3Rpb24sIGludCYgY3VycmVudERlcHRoLCBpbnQmIG5l
d0ZpeGVkRGVwdGgpIGNvbnN0Cit7CisgICAgQmxvY2tDb250ZW50SGVpZ2h0VHlwZSBvdmVyZmxv
d1R5cGU7CisKKyAgICAvLyBDaGVjayBmb3Igc3VpdGFibGUgY2hpbGRyZW4uCisgICAgZm9yIChS
ZW5kZXJPYmplY3QqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBvdmVyZmxvd1R5cGUgPSBpbmNsdXNpb25GdW5jdGlv
bihjaGlsZCk7CisgICAgICAgIGlmIChvdmVyZmxvd1R5cGUgIT0gRml4ZWRIZWlnaHQpIHsKKyAg
ICAgICAgICAgIGN1cnJlbnREZXB0aCsrOworICAgICAgICAgICAgaWYgKG92ZXJmbG93VHlwZSA9
PSBPdmVyZmxvd0hlaWdodCkKKyAgICAgICAgICAgICAgICBuZXdGaXhlZERlcHRoID0gY3VycmVu
dERlcHRoOworICAgICAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IGNoaWxkLT5pc0Rlc2Nl
bmRhbnRPZihzdGF5V2l0aGluKSk7CisgICAgICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAodGhpcyA9PSBzdGF5V2l0aGluKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIE5vdyB3ZSB0cmF2ZXJzZSBvdGhlciBub2RlcyBpZiB0aGV5IGV4aXN0LCBv
dGhlcndpc2UKKyAgICAvLyB3ZSBnbyB0byB0aGUgcGFyZW50IG5vZGUgYW5kIHRyeSBkb2luZyB0
aGUgc2FtZS4KKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIG4gPSB0aGlzOworICAgIHdoaWxlIChu
KSB7CisgICAgICAgIHdoaWxlIChuICYmICFuLT5uZXh0U2libGluZygpICYmICghc3RheVdpdGhp
biB8fCBuLT5wYXJlbnQoKSAhPSBzdGF5V2l0aGluKSkgeworICAgICAgICAgICAgbiA9IG4tPnBh
cmVudCgpOworICAgICAgICAgICAgY3VycmVudERlcHRoLS07CisgICAgICAgIH0KKyAgICAgICAg
aWYgKCFuKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBzaWJsaW5nID0gbi0+bmV4dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmct
Pm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIG92ZXJmbG93VHlwZSA9IGluY2x1c2lvbkZ1
bmN0aW9uKHNpYmxpbmcpOworICAgICAgICAgICAgaWYgKG92ZXJmbG93VHlwZSAhPSBGaXhlZEhl
aWdodCkgeworICAgICAgICAgICAgICAgIGlmIChvdmVyZmxvd1R5cGUgPT0gT3ZlcmZsb3dIZWln
aHQpCisgICAgICAgICAgICAgICAgICAgIG5ld0ZpeGVkRGVwdGggPSBjdXJyZW50RGVwdGg7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8ICFuLT5uZXh0U2libGluZygpIHx8
IG4tPm5leHRTaWJsaW5nKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2libGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBpZiAoIXN0YXlXaXRoaW4gfHwgbi0+cGFyZW50KCkgIT0gc3RheVdpdGhpbikgeworICAgICAg
ICAgICAgbiA9IG4tPnBhcmVudCgpOworICAgICAgICAgICAgY3VycmVudERlcHRoLS07CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCitSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6dHJhdmVyc2VOZXh0KGNvbnN0IFJlbmRl
ck9iamVjdCogc3RheVdpdGhpbiwgVHJhdmVyc2VOZXh0SW5jbHVzaW9uRnVuY3Rpb24gaW5jbHVz
aW9uRnVuY3Rpb24pIGNvbnN0Cit7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAg
ICBpZiAoaW5jbHVzaW9uRnVuY3Rpb24oY2hpbGQpKSB7CisgICAgICAgICAgICBBU1NFUlQoIXN0
YXlXaXRoaW4gfHwgY2hpbGQtPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICAgICAg
ICAgIHJldHVybiBjaGlsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0aGlzID09IHN0
YXlXaXRoaW4pCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9yIChSZW5kZXJPYmplY3QqIHNp
YmxpbmcgPSBuZXh0U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoaW5jbHVzaW9uRnVuY3Rpb24oc2libGluZykpIHsKKyAg
ICAgICAgICAgIEFTU0VSVCghc3RheVdpdGhpbiB8fCBzaWJsaW5nLT5pc0Rlc2NlbmRhbnRPZihz
dGF5V2l0aGluKSk7CisgICAgICAgICAgICByZXR1cm4gc2libGluZzsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGNvbnN0IFJlbmRlck9iamVjdCogbiA9IHRoaXM7CisgICAgd2hpbGUgKG4pIHsK
KyAgICAgICAgd2hpbGUgKG4gJiYgIW4tPm5leHRTaWJsaW5nKCkgJiYgKCFzdGF5V2l0aGluIHx8
IG4tPnBhcmVudCgpICE9IHN0YXlXaXRoaW4pKQorICAgICAgICAgICAgbiA9IG4tPnBhcmVudCgp
OworICAgICAgICBpZiAobikgeworICAgICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIHNpYmxp
bmcgPSBuLT5uZXh0U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dFNp
YmxpbmcoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbmNsdXNpb25GdW5jdGlvbihzaWJsaW5n
KSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgIW4tPm5leHRT
aWJsaW5nKCkgfHwgbi0+bmV4dFNpYmxpbmcoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2libGluZzsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKCFzdGF5V2l0aGluIHx8IG4tPnBhcmVu
dCgpICE9IHN0YXlXaXRoaW4pKQorICAgICAgICAgICAgICAgIG4gPSBuLT5wYXJlbnQoKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFJlbmRlck9iamVjdDo6QmxvY2tDb250ZW50
SGVpZ2h0VHlwZSBpbmNsdWRlTm9uRml4ZWRIZWlnaHQoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXIpCit7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyLT5zdHlsZSgpOworICAgIGlm
IChzdHlsZSkgeworICAgICAgICBpZiAoc3R5bGUtPmhlaWdodCgpLnR5cGUoKSA9PSBGaXhlZCkg
eworICAgICAgICAgICAgaWYgKHJlbmRlci0+aXNSZW5kZXJCbG9jaygpKSB7CisgICAgICAgICAg
ICAgICAgY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrID0gdG9SZW5kZXJCbG9jayhyZW5kZXIpOwor
ICAgICAgICAgICAgICAgIC8vIEZvciBmaXhlZCBoZWlnaHQgc3R5bGVzLCBpZiB0aGUgb3ZlcmZs
b3cgc2l6ZSBvZiB0aGUgZWxlbWVudCBzcGlsbHMgb3V0IG9mIHRoZSBzcGVjaWZpZWQKKyAgICAg
ICAgICAgICAgICAvLyBoZWlnaHQsIGFzc3VtZSB3ZSBjYW4gYXBwbHkgdGV4dCBhdXRvLXNpemlu
Zy4KKyAgICAgICAgICAgICAgICBpZiAoc3R5bGUtPm92ZXJmbG93WSgpID09IE9WSVNJQkxFICYm
IHN0eWxlLT5oZWlnaHQoKS52YWx1ZSgpIDwgYmxvY2stPmxheW91dE92ZXJmbG93UmVjdCgpLm1h
eFkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6T3ZlcmZsb3dI
ZWlnaHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpG
aXhlZEhlaWdodDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpG
bGV4aWJsZUhlaWdodDsKK30KKworCit2b2lkIFJlbmRlck9iamVjdDo6YWRqdXN0Q29tcHV0ZWRG
b250U2l6ZXNPbkJsb2NrcyhmbG9hdCBzaXplLCBmbG9hdCB2aXNpYmxlV2lkdGgpCit7CisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gdmlldygpLmZyYW1lVmlldygpLmZyYW1lKCkuZG9jdW1lbnQo
KTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8aW50
PiBkZXB0aFN0YWNrOworICAgIGludCBjdXJyZW50RGVwdGggPSAwOworICAgIGludCBuZXdGaXhl
ZERlcHRoID0gMDsKKworICAgIC8vIFdlIGRvbid0IGFwcGx5IGF1dG9zaXppbmcgdG8gbm9kZXMg
d2l0aCBmaXhlZCBoZWlnaHQgbm9ybWFsbHkuCisgICAgLy8gQnV0IHdlIGFwcGx5IGl0IHRvIG5v
ZGVzIHdoaWNoIGFyZSBsb2NhdGVkIGRlZXAgZW5vdWdoCisgICAgLy8gKG5lc3RpbmcgZGVwdGgg
aXMgZ3JlYXRlciB0aGFuIHNvbWUgY29uc3QpIGluc2lkZSBvZiBhIHBhcmVudCBibG9jaworICAg
IC8vIHdoaWNoIGhhcyBmaXhlZCBoZWlnaHQgYnV0IGl0cyBjb250ZW50IG92ZXJmbG93cyBpbnRl
bnRpb25hbGx5LgorICAgIGZvciAoUmVuZGVyT2JqZWN0KiBkZXNjZW5kZW50ID0gdHJhdmVyc2VO
ZXh0KHRoaXMsIGluY2x1ZGVOb25GaXhlZEhlaWdodCwgY3VycmVudERlcHRoLCBuZXdGaXhlZERl
cHRoKTsgZGVzY2VuZGVudDsgZGVzY2VuZGVudCA9IGRlc2NlbmRlbnQtPnRyYXZlcnNlTmV4dCh0
aGlzLCBpbmNsdWRlTm9uRml4ZWRIZWlnaHQsIGN1cnJlbnREZXB0aCwgbmV3Rml4ZWREZXB0aCkp
IHsKKyAgICAgICAgd2hpbGUgKGRlcHRoU3RhY2suc2l6ZSgpID4gMCAmJiBjdXJyZW50RGVwdGgg
PD0gZGVwdGhTdGFja1tkZXB0aFN0YWNrLnNpemUoKSAtIDFdKQorICAgICAgICAgICAgZGVwdGhT
dGFjay5yZW1vdmUoZGVwdGhTdGFjay5zaXplKCkgLSAxKTsKKyAgICAgICAgaWYgKG5ld0ZpeGVk
RGVwdGgpCisgICAgICAgICAgICBkZXB0aFN0YWNrLmFwcGVuZChuZXdGaXhlZERlcHRoKTsKKwor
ICAgICAgICBpbnQgc3RhY2tTaXplID0gZGVwdGhTdGFjay5zaXplKCk7CisgICAgICAgIGlmIChk
ZXNjZW5kZW50LT5pc1JlbmRlckJsb2NrKCkgJiYgIWRlc2NlbmRlbnQtPmlzTGlzdEl0ZW0oKSAm
JiAoIXN0YWNrU2l6ZSB8fCBjdXJyZW50RGVwdGggLSBkZXB0aFN0YWNrW3N0YWNrU2l6ZSAtIDFd
ID4gVGV4dEF1dG9TaXppbmdGaXhlZEhlaWdodERlcHRoKSkKKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PFJlbmRlckJsb2NrKj4oZGVzY2VuZGVudCktPmFkanVzdENvbXB1dGVkRm9udFNpemVzKHNp
emUsIHZpc2libGVXaWR0aCk7CisgICAgICAgIG5ld0ZpeGVkRGVwdGggPSAwOworICAgIH0KKwor
ICAgIC8vIFJlbW92ZSBzdHlsZSBmcm9tIGF1dG8tc2l6aW5nIHRhYmxlIHRoYXQgYXJlIG5vIGxv
bmdlciB2YWxpZC4KKyAgICBkb2N1bWVudC0+dmFsaWRhdGVBdXRvU2l6aW5nTm9kZXMoKTsKK30K
Kwordm9pZCBSZW5kZXJPYmplY3Q6OnJlc2V0VGV4dEF1dG9zaXppbmcoKQoreworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IHZpZXcoKS5mcmFtZVZpZXcoKS5mcmFtZSgpLmRvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG9jdW1lbnQtPnJlc2V0
QXV0b1NpemluZ05vZGVzKCk7CisKKyAgICBWZWN0b3I8aW50PiBkZXB0aFN0YWNrOworICAgIGlu
dCBjdXJyZW50RGVwdGggPSAwOworICAgIGludCBuZXdGaXhlZERlcHRoID0gMDsKKworICAgIGZv
ciAoUmVuZGVyT2JqZWN0KiBkZXNjZW5kZW50ID0gdHJhdmVyc2VOZXh0KHRoaXMsIGluY2x1ZGVO
b25GaXhlZEhlaWdodCwgY3VycmVudERlcHRoLCBuZXdGaXhlZERlcHRoKTsgZGVzY2VuZGVudDsg
ZGVzY2VuZGVudCA9IGRlc2NlbmRlbnQtPnRyYXZlcnNlTmV4dCh0aGlzLCBpbmNsdWRlTm9uRml4
ZWRIZWlnaHQsIGN1cnJlbnREZXB0aCwgbmV3Rml4ZWREZXB0aCkpIHsKKyAgICAgICAgd2hpbGUg
KGRlcHRoU3RhY2suc2l6ZSgpID4gMCAmJiBjdXJyZW50RGVwdGggPD0gZGVwdGhTdGFja1tkZXB0
aFN0YWNrLnNpemUoKSAtIDFdKQorICAgICAgICAgICAgZGVwdGhTdGFjay5yZW1vdmUoZGVwdGhT
dGFjay5zaXplKCkgLSAxKTsKKyAgICAgICAgaWYgKG5ld0ZpeGVkRGVwdGgpCisgICAgICAgICAg
ICBkZXB0aFN0YWNrLmFwcGVuZChuZXdGaXhlZERlcHRoKTsKKworICAgICAgICBpbnQgc3RhY2tT
aXplID0gZGVwdGhTdGFjay5zaXplKCk7CisgICAgICAgIGlmIChkZXNjZW5kZW50LT5pc1JlbmRl
ckJsb2NrKCkgJiYgIWRlc2NlbmRlbnQtPmlzTGlzdEl0ZW0oKSAmJiAoIXN0YWNrU2l6ZSB8fCBj
dXJyZW50RGVwdGggLSBkZXB0aFN0YWNrW3N0YWNrU2l6ZSAtIDFdID4gVGV4dEF1dG9TaXppbmdG
aXhlZEhlaWdodERlcHRoKSkKKyAgICAgICAgICAgIHRvUmVuZGVyQmxvY2soZGVzY2VuZGVudCkt
PnJlc2V0Q29tcHV0ZWRGb250U2l6ZSgpOworICAgICAgICBuZXdGaXhlZERlcHRoID0gMDsKKyAg
ICB9Cit9CisjZW5kaWYgLy8gRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisKIHN0YXRpYyB2
b2lkIGFkZExheWVycyhSZW5kZXJPYmplY3QqIG9iaiwgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVy
LCBSZW5kZXJPYmplY3QqJiBuZXdPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
TGF5ZXIqJiBiZWZvcmVDaGlsZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAppbmRleCA4ZjU0NDNlNmYyNjAxMzA2MDljMTc2NjI0YmI0MzIwMDZlYzE4M2JlLi5jZDg4
NGU0ODNlZDJkYTMwMWViMzA2YmQ3OGE4MDU3MmEwOTVkMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xOTUsNiArMTk1LDI5IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJPYmplY3QqIGZpcnN0TGVhZkNoaWxkKCkgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiBs
YXN0TGVhZkNoaWxkKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykK
KyAgICAvLyBNaW5pbWFsIGRpc3RhbmNlIGJldHdlZW4gdGhlIGJsb2NrIHdpdGggZml4ZWQgaGVp
Z2h0IGFuZCBvdmVyZmxvd2luZyBjb250ZW50IGFuZCB0aGUgdGV4dCBibG9jayB0byBhcHBseSB0
ZXh0IGF1dG9zaXppbmcuCisgICAgLy8gVGhlIGdyZWF0ZXIgdGhpcyBjb25zdGFudCBpcyB0aGUg
bW9yZSBwb3RlbnRpYWwgcGxhY2VzIHdlIGhhdmUgd2hlcmUgYXV0b3NpemluZyBpcyB0dXJuZWQg
b2ZmLgorICAgIC8vIFNvIGl0IHNob3VsZCBiZSBhcyBsb3cgYXMgcG9zc2libGUuIFRoZXJlIGFy
ZSBzaXRlcyB0aGF0IGJyZWFrIGF0IDIuCisgICAgc3RhdGljIGNvbnN0IGludCBUZXh0QXV0b1Np
emluZ0ZpeGVkSGVpZ2h0RGVwdGggPSAzOworCisgICAgZW51bSBCbG9ja0NvbnRlbnRIZWlnaHRU
eXBlIHsKKyAgICAgICAgRml4ZWRIZWlnaHQsCisgICAgICAgIEZsZXhpYmxlSGVpZ2h0LAorICAg
ICAgICBPdmVyZmxvd0hlaWdodAorICAgIH07CisKKyAgICBSZW5kZXJPYmplY3QqIHRyYXZlcnNl
TmV4dChjb25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4pIGNvbnN0OworICAgIHR5cGVkZWYg
Ym9vbCAoKlRyYXZlcnNlTmV4dEluY2x1c2lvbkZ1bmN0aW9uKShjb25zdCBSZW5kZXJPYmplY3Qq
KTsKKyAgICB0eXBlZGVmIEJsb2NrQ29udGVudEhlaWdodFR5cGUgKCpIZWlnaHRUeXBlVHJhdmVy
c2VOZXh0SW5jbHVzaW9uRnVuY3Rpb24pKGNvbnN0IFJlbmRlck9iamVjdCopOworCisgICAgUmVu
ZGVyT2JqZWN0KiB0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluLCBU
cmF2ZXJzZU5leHRJbmNsdXNpb25GdW5jdGlvbikgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiB0
cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluLCBIZWlnaHRUeXBlVHJh
dmVyc2VOZXh0SW5jbHVzaW9uRnVuY3Rpb24sIGludCYgY3VycmVudERlcHRoLCAgaW50JiBuZXdG
aXhlZERlcHRoKSBjb25zdDsKKworICAgIHZvaWQgYWRqdXN0Q29tcHV0ZWRGb250U2l6ZXNPbkJs
b2NrcyhmbG9hdCBzaXplLCBmbG9hdCB2aXNpYmxlV2lkdGgpOworICAgIHZvaWQgcmVzZXRUZXh0
QXV0b3NpemluZygpOworI2VuZGlmCisKICAgICAvLyBUaGUgZm9sbG93aW5nIHNpeCBmdW5jdGlv
bnMgYXJlIHVzZWQgd2hlbiB0aGUgcmVuZGVyIHRyZWUgaGllcmFyY2h5IGNoYW5nZXMgdG8gbWFr
ZSBzdXJlIGxheWVycyBnZXQKICAgICAvLyBwcm9wZXJseSBhZGRlZCBhbmQgcmVtb3ZlZC4gIFNp
bmNlIGNvbnRhaW5lcnNoaXAgY2FuIGJlIGltcGxlbWVudGVkIGJ5IGFueSBzdWJjbGFzcywgYW5k
IHNpbmNlIGEgaGllcmFyY2h5CiAgICAgLy8gY2FuIGNvbnRhaW4gYSBtaXh0dXJlIG9mIGJveGVz
IGFuZCBvdGhlciBvYmplY3QgdHlwZXMsIHRoZXNlIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIGluIHRo
ZSBiYXNlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4
IDQ2MzY1NDBlNmFlMzA2MzRjY2RjY2Y1YWJlMDQ2ZDRjNDgwMmQ0NmIuLmQ4YzFlMWNlNzM4NTI1
NWY2YzI4ZTlkNGQ2Y2YwYmExMWRhNDhlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAKQEAgLTU2LDYgKzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgU2FtZVNpemVBc1JlbmRlclRleHQgOiBwdWJsaWMgUmVuZGVyT2JqZWN0IHsKICAgICB1aW50
MzJfdCBiaXRmaWVsZHMgOiAxNjsKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAg
ICBmbG9hdCBjYW5kaWRhdGVUZXh0U2l6ZTsKKyNlbmRpZgogICAgIGZsb2F0IHdpZHRoc1s0XTsK
ICAgICBTdHJpbmcgdGV4dDsKICAgICB2b2lkKiBwb2ludGVyc1syXTsKQEAgLTE0Miw2ICsxNDUs
OSBAQCBSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gc3RyKQogICAgICwgbV9jb250YWluc1JldmVyc2VkVGV4dChmYWxzZSkKICAgICAsIG1f
a25vd25Ub0hhdmVOb092ZXJmbG93QW5kTm9GYWxsYmFja0ZvbnRzKGZhbHNlKQogICAgICwgbV9u
ZWVkc1RyYW5zY29kaW5nKGZhbHNlKQorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQor
ICAgICwgbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKDApCisjZW5kaWYKICAgICAsIG1fbWlu
V2lkdGgoLTEpCiAgICAgLCBtX21heFdpZHRoKC0xKQogICAgICwgbV9iZWdpbk1pbldpZHRoKDAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCAzNWVlMTliYTVhNWNkYTQw
YTY2MTBlYmJjMGU5YzNhNTAyYzZmMmI0Li43NjJlOTlmMDQ2MGVhNTMzYTRiNDM4Y2Q3OTc0Y2M2
MDIzZDFhNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTEzNiw2
ICsxMzYsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVBbmREZXN0cm95VGV4dEJveGVz
KCk7CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICBmbG9hdCBjYW5kaWRh
dGVDb21wdXRlZFRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYW5kaWRhdGVDb21wdXRlZFRl
eHRTaXplOyB9CisgICAgdm9pZCBzZXRDYW5kaWRhdGVDb21wdXRlZFRleHRTaXplKGZsb2F0IHMp
IHsgbV9jYW5kaWRhdGVDb21wdXRlZFRleHRTaXplID0gczsgfQorI2VuZGlmCisKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQg
bGVhZFdpZHRoKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CkBAIC0xODYs
NiArMTkxLDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBib29sIG1fa25vd25Ub0hhdmVOb092
ZXJmbG93QW5kTm9GYWxsYmFja0ZvbnRzIDogMTsKICAgICBib29sIG1fbmVlZHNUcmFuc2NvZGlu
ZyA6IDE7CiAgICAgCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHBhcnQgb2YgdGhlIHRleHQgc2l6aW5nIHN0cnVj
dHVyZXMgaW4gRG9jdW1lbnQgaW5zdGVhZC4gVGhhdCB3b3VsZCBzYXZlIHNvbWUgbWVtb3J5Lgor
ICAgIGZsb2F0IG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZTsKKyNlbmRpZgogICAgIGZsb2F0
IG1fbWluV2lkdGg7CiAgICAgZmxvYXQgbV9tYXhXaWR0aDsKICAgICBmbG9hdCBtX2JlZ2luTWlu
V2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAppbmRleCAzZjMxZmY0ZDRkZTAyOGZmZDQ4ODY1M2YwZGZkMGQ1ZDRiY2U2N2I1Li45MTNlN2Vm
ODlhNTAwMzQyZWY2ZjZlMjYwODUzYzJhYTdhODQ5Y2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2lmIEVO
QUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICNpbmNsdWRlICJUZXh0
QXV0b3NpemVyLmgiCiAjZW5kaWYKQEAgLTMzMCw2ICszMzQsNjQgQEAgYm9vbCBSZW5kZXJTdHls
ZTo6aW5oZXJpdGVkTm90RXF1YWwoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAogICAg
ICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGE7
CiB9CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKK2lubGluZSB1bnNpZ25lZCBj
b21wdXRlRm9udEhhc2goY29uc3QgRm9udCYgZm9udCkKK3sKKyAgICB1bnNpZ25lZCBoYXNoQ29k
ZXNbMl0gPSB7CisgICAgICAgIENhc2VGb2xkaW5nSGFzaDo6aGFzaChmb250LmZvbnREZXNjcmlw
dGlvbigpLmZpcnN0RmFtaWx5KCkuaW1wbCgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGZvbnQuZm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKQorICAgIH07CisgICAg
cmV0dXJuIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+
KGhhc2hDb2RlcyksIDIgKiBzaXplb2YodW5zaWduZWQpIC8gc2l6ZW9mKFVDaGFyKSk7Cit9CisK
K3VpbnQzMl90IFJlbmRlclN0eWxlOjpoYXNoRm9yVGV4dEF1dG9zaXppbmcoKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBOb3QgYSB2ZXJ5IHNtYXJ0IGhhc2guIENvdWxkIGJlIGltcHJvdmVkIHVw
b24uCisgICAgdWludDMyX3QgaGFzaCA9IDA7CisgICAgCisgICAgaGFzaCBePSByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlOworICAgIGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlOworICAgIGhhc2ggXj0gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1hcmdpbkFmdGVyQ29sbGFwc2U7CisgICAgaGFzaCBePSByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bGluZUNsYW1wLnZhbHVlKCk7CisgICAgaGFzaCBePSByYXJlSW5oZXJpdGVkRGF0YS0+b3Zl
cmZsb3dXcmFwOworICAgIGhhc2ggXj0gcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlOworICAg
IGhhc2ggXj0gcmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhazsKKyAgICBoYXNoIF49IFdURjo6
RmxvYXRIYXNoPGZsb2F0Pjo6aGFzaChpbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQudmFs
dWUoKSk7CisgICAgaGFzaCBePSBjb21wdXRlRm9udEhhc2goaW5oZXJpdGVkLT5mb250KTsKKyAg
ICBoYXNoIF49IGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZzsKKyAgICBoYXNo
IF49IGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmc7CisgICAgaGFzaCBePSBpbmhl
cml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb247CisgICAgaGFzaCBePSBpbmhlcml0ZWRfZmxhZ3Mu
bV9ydGxPcmRlcmluZzsKKyAgICBoYXNoIF49IG5vbmluaGVyaXRlZF9mbGFncy5fcG9zaXRpb247
CisgICAgaGFzaCBePSBub25pbmhlcml0ZWRfZmxhZ3MuX2Zsb2F0aW5nOworICAgIGhhc2ggXj0g
cmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdzsKKyAgICBoYXNoIF49IHJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U2VjdXJpdHk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKK2Jvb2wgUmVu
ZGVyU3R5bGU6OmVxdWFsRm9yVGV4dEF1dG9zaXppbmcoY29uc3QgUmVuZGVyU3R5bGUqIG90aGVy
KSBjb25zdAoreworICAgIHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNl
ID09IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlCisgICAgICAgICYm
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJnaW5CZWZvcmVDb2xsYXBzZSA9PSBvdGhlci0+cmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1hcmdpbkJlZm9yZUNvbGxhcHNlCisgICAgICAgICYmIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tYXJnaW5BZnRlckNvbGxhcHNlID09IG90aGVyLT5yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bWFyZ2luQWZ0ZXJDb2xsYXBzZQorICAgICAgICAmJiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bGluZUNsYW1wID09IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNs
YW1wCisgICAgICAgICYmIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdCA9PSBvdGhl
ci0+cmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0CisgICAgICAgICYmIHJhcmVJbmhl
cml0ZWREYXRhLT5vdmVyZmxvd1dyYXAgPT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5vdmVy
Zmxvd1dyYXAKKyAgICAgICAgJiYgcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlID09IG90aGVy
LT5yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUKKyAgICAgICAgJiYgcmFyZUluaGVyaXRlZERh
dGEtPmxpbmVCcmVhayA9PSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPmxpbmVCcmVhaworICAg
ICAgICAmJiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5ID09IG90aGVyLT5yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5CisgICAgICAgICYmIGluaGVyaXRlZC0+c3BlY2lmaWVk
TGluZUhlaWdodCA9PSBvdGhlci0+aW5oZXJpdGVkLT5zcGVjaWZpZWRMaW5lSGVpZ2h0CisgICAg
ICAgICYmIGluaGVyaXRlZC0+Zm9udC5lcXVhbEZvclRleHRBdXRvU2l6aW5nKG90aGVyLT5pbmhl
cml0ZWQtPmZvbnQpCisgICAgICAgICYmIGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3Bh
Y2luZyA9PSBvdGhlci0+aW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nCisgICAg
ICAgICYmIGluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcgPT0gb3RoZXItPmluaGVy
aXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmcKKyAgICAgICAgJiYgaW5oZXJpdGVkX2ZsYWdz
Ll9ib3hfZGlyZWN0aW9uID09IG90aGVyLT5pbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24K
KyAgICAgICAgJiYgaW5oZXJpdGVkX2ZsYWdzLm1fcnRsT3JkZXJpbmcgPT0gb3RoZXItPmluaGVy
aXRlZF9mbGFncy5tX3J0bE9yZGVyaW5nCisgICAgICAgICYmIG5vbmluaGVyaXRlZF9mbGFncy5f
cG9zaXRpb24gPT0gb3RoZXItPm5vbmluaGVyaXRlZF9mbGFncy5fcG9zaXRpb24KKyAgICAgICAg
JiYgbm9uaW5oZXJpdGVkX2ZsYWdzLl9mbG9hdGluZyA9PSBvdGhlci0+bm9uaW5oZXJpdGVkX2Zs
YWdzLl9mbG9hdGluZworICAgICAgICAmJiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJm
bG93ID09IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93OworfQorI2Vu
ZGlmIC8vIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorCiBib29sIFJlbmRlclN0eWxlOjpp
bmhlcml0ZWREYXRhU2hhcmVkKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlcikgY29uc3QKIHsKICAg
ICAvLyBUaGlzIGlzIGEgZmFzdCBjaGVjayB0aGF0IG9ubHkgbG9va3MgaWYgdGhlIGRhdGEgc3Ry
dWN0dXJlcyBhcmUgc2hhcmVkLgpAQCAtNDgwLDYgKzU0Miw5IEBAIGJvb2wgUmVuZGVyU3R5bGU6
OmNoYW5nZVJlcXVpcmVzTGF5b3V0KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQm
IGNoYW5nCiAgICAgICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV90ZXh0SW5kZW50TGlu
ZSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1fdGV4dEluZGVudExpbmUKICNlbmRpZgog
ICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9vbSAhPSBvdGhl
ci0+cmFyZUluaGVyaXRlZERhdGEtPm1fZWZmZWN0aXZlWm9vbQorI2lmIEVOQUJMRShJT1NfVEVY
VF9BVVRPU0laSU5HKQorICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXpl
QWRqdXN0ICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3QKKyNlbmRp
ZgogICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVhayAhPSBvdGhlci0+
cmFyZUluaGVyaXRlZERhdGEtPndvcmRCcmVhawogICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRl
ZERhdGEtPm92ZXJmbG93V3JhcCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm92ZXJmbG93
V3JhcAogICAgICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm5ic3BNb2RlICE9IG90aGVy
LT5yYXJlSW5oZXJpdGVkRGF0YS0+bmJzcE1vZGUKQEAgLTUyNCw2ICs1ODksOSBAQCBib29sIFJl
bmRlclN0eWxlOjpjaGFuZ2VSZXF1aXJlc0xheW91dChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIs
IHVuc2lnbmVkJiBjaGFuZwogI2VuZGlmCiAKICAgICBpZiAoaW5oZXJpdGVkLT5saW5lX2hlaWdo
dCAhPSBvdGhlci0+aW5oZXJpdGVkLT5saW5lX2hlaWdodAorI2lmIEVOQUJMRShJT1NfVEVYVF9B
VVRPU0laSU5HKQorICAgICAgICB8fCBpbmhlcml0ZWQtPnNwZWNpZmllZExpbmVIZWlnaHQgIT0g
b3RoZXItPmluaGVyaXRlZC0+c3BlY2lmaWVkTGluZUhlaWdodAorI2VuZGlmCiAgICAgICAgIHx8
IGluaGVyaXRlZC0+Zm9udCAhPSBvdGhlci0+aW5oZXJpdGVkLT5mb250CiAgICAgICAgIHx8IGlu
aGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZyAhPSBvdGhlci0+aW5oZXJpdGVkLT5o
b3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nCiAgICAgICAgIHx8IGluaGVyaXRlZC0+dmVydGljYWxf
Ym9yZGVyX3NwYWNpbmcgIT0gb3RoZXItPmluaGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNp
bmcKQEAgLTEzNTQsNyArMTQyMiwxMyBAQCBib29sIFJlbmRlclN0eWxlOjpzZXRGb250RGVzY3Jp
cHRpb24oY29uc3QgRm9udERlc2NyaXB0aW9uJiB2KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
I2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorTGVuZ3RoIFJlbmRlclN0eWxlOjpzcGVj
aWZpZWRMaW5lSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5zcGVjaWZpZWRMaW5l
SGVpZ2h0OyB9Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRTcGVjaWZpZWRMaW5lSGVpZ2h0KExlbmd0
aCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBzcGVjaWZpZWRMaW5lSGVpZ2h0LCB2KTsgfQorI2Vs
c2UKIExlbmd0aCBSZW5kZXJTdHlsZTo6c3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIGluaGVyaXRlZC0+bGluZV9oZWlnaHQ7IH0KKyNlbmRpZgorCiBMZW5ndGggUmVuZGVyU3R5
bGU6OmxpbmVIZWlnaHQoKSBjb25zdAogewogICAgIGNvbnN0IExlbmd0aCYgbGggPSBpbmhlcml0
ZWQtPmxpbmVfaGVpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAppbmRleCBiMjZmMWZlMTg4YTEzM2NhMjRiOWUxMjkxOGEyYmE0ZDM2N2E5NWUxLi45
YTJhYjNiZDQ1MGI4ZmZlNWQxNmI1NmRiN2Y5Y2EzOGQzNWMzMjBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtODIsNiArODIsMTAgQEAKICNp
bmNsdWRlICJTdHlsZURhc2hib2FyZFJlZ2lvbi5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoSU9T
X1RFWFRfQVVUT1NJWklORykKKyNpbmNsdWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYWludC5oIgogI2luY2x1ZGUgIlNW
R1JlbmRlclN0eWxlLmgiCkBAIC05MzMsNiArOTM3LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShB
Q0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgYm9vbCB1c2VUb3VjaE92ZXJmbG93
U2Nyb2xsaW5nKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnVzZVRvdWNoT3Zl
cmZsb3dTY3JvbGxpbmc7IH0KICNlbmRpZgorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5H
KQorICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdDsgfQorI2VuZGlmCiAgICAgRVRleHRT
ZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFNl
Y3VyaXR5PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQogCiAgICAgV3JpdGlu
Z01vZGUgd3JpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxXcml0aW5nTW9k
ZT4oaW5oZXJpdGVkX2ZsYWdzLm1fd3JpdGluZ01vZGUpOyB9CkBAIC0xMTUzLDYgKzExNjAsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0VW5kZXJsaW5lUG9zaXRpb24oVGV4dFVuZGVybGlu
ZVBvc2l0aW9uIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0VW5kZXJsaW5l
UG9zaXRpb24sIHYpOyB9CiAjZW5kaWYgLy8gQ1NTM19URVhUCiAgICAgdm9pZCBzZXREaXJlY3Rp
b24oVGV4dERpcmVjdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uID0gdjsgfQor
I2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgIHZvaWQgc2V0U3BlY2lmaWVkTGlu
ZUhlaWdodChMZW5ndGggdik7CisjZW5kaWYKICAgICB2b2lkIHNldExpbmVIZWlnaHQoTGVuZ3Ro
IHNwZWNpZmllZExpbmVIZWlnaHQpOwogICAgIGJvb2wgc2V0Wm9vbShmbG9hdCk7CiAgICAgdm9p
ZCBzZXRab29tV2l0aG91dFJldHVyblZhbHVlKGZsb2F0IGYpIHsgc2V0Wm9vbShmKTsgfQpAQCAt
MTQzNCw2ICsxNDQ0LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxP
V19TQ1JPTExJTkcpCiAgICAgdm9pZCBzZXRVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKGJvb2wg
dikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5n
LCB2KTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgdm9p
ZCBzZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQgYW5BZGp1c3RtZW50KSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRTaXplQWRqdXN0LCBhbkFkanVzdG1lbnQpOyB9
CisjZW5kaWYKICAgICB2b2lkIHNldFRleHRTZWN1cml0eShFVGV4dFNlY3VyaXR5IGFUZXh0U2Vj
dXJpdHkpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNlY3VyaXR5LCBhVGV4dFNl
Y3VyaXR5KTsgfQogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTE1NDIsNiArMTU1NSwxMSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpbmhlcml0ZWROb3RFcXVhbChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0
OwogICAgIGJvb2wgaW5oZXJpdGVkRGF0YVNoYXJlZChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0
OwogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgdWludDMyX3QgaGFzaEZv
clRleHRBdXRvc2l6aW5nKCkgY29uc3Q7CisgICAgYm9vbCBlcXVhbEZvclRleHRBdXRvc2l6aW5n
KGNvbnN0IFJlbmRlclN0eWxlICpvdGhlcikgY29uc3Q7CisjZW5kaWYKKwogICAgIFN0eWxlRGlm
ZmVyZW5jZSBkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiwgdW5zaWduZWQmIGNoYW5nZWRDb250ZXh0
U2Vuc2l0aXZlUHJvcGVydGllcykgY29uc3Q7CiAgICAgYm9vbCBkaWZmUmVxdWlyZXNSZXBhaW50
KGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7CiAKQEAgLTE2MzcsNiArMTY1NSw5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgc2hvcnQgaW5pdGlhbFdpZG93cygpIHsgcmV0dXJuIDI7IH0KICAgICBz
dGF0aWMgc2hvcnQgaW5pdGlhbE9ycGhhbnMoKSB7IHJldHVybiAyOyB9CiAgICAgc3RhdGljIExl
bmd0aCBpbml0aWFsTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLjAsIFBlcmNlbnQp
OyB9CisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgc3RhdGljIExlbmd0aCBp
bml0aWFsU3BlY2lmaWVkTGluZUhlaWdodCgpIHsgcmV0dXJuIExlbmd0aCgtMTAwLCBQZXJjZW50
KTsgfQorI2VuZGlmCiAgICAgc3RhdGljIEVUZXh0QWxpZ24gaW5pdGlhbFRleHRBbGlnbigpIHsg
cmV0dXJuIFRBU1RBUlQ7IH0KICAgICBzdGF0aWMgVGV4dERlY29yYXRpb24gaW5pdGlhbFRleHRE
ZWNvcmF0aW9uKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25Ob25lOyB9CiAjaWYgRU5BQkxFKENT
UzNfVEVYVCkKQEAgLTE3NTcsNiArMTc3OCw5IEBAIHB1YmxpYzoKICAgICAvLyBLZWVwIHRoZXNl
IGF0IHRoZSBlbmQuCiAgICAgc3RhdGljIExpbmVDbGFtcFZhbHVlIGluaXRpYWxMaW5lQ2xhbXAo
KSB7IHJldHVybiBMaW5lQ2xhbXBWYWx1ZSgpOyB9CiAgICAgc3RhdGljIEVUZXh0U2VjdXJpdHkg
aW5pdGlhbFRleHRTZWN1cml0eSgpIHsgcmV0dXJuIFRTTk9ORTsgfQorI2lmIEVOQUJMRShJT1Nf
VEVYVF9BVVRPU0laSU5HKQorICAgIHN0YXRpYyBUZXh0U2l6ZUFkanVzdG1lbnQgaW5pdGlhbFRl
eHRTaXplQWRqdXN0KCkgeyByZXR1cm4gVGV4dFNpemVBZGp1c3RtZW50KCk7IH0KKyNlbmRpZgog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgc3RhdGljIENvbG9yIGluaXRpYWxUYXBIaWdo
bGlnaHRDb2xvcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IGI3MjM5NTYzMTJjYmY1NDliNmQ5
YmQwN2YzM2QxMjEzYzYzMmQ0MDQuLmI4NzI2MGZhNDgxNDRkOTBhNDE1ZjhkZWM5MDQ5ZWRlZWNj
NDYwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUlu
aGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUluaGVyaXRlZERhdGEuY3BwCkBAIC0zMCw2ICszMCw5IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6
U3R5bGVJbmhlcml0ZWREYXRhKCkKICAgICA6IGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoUmVu
ZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9yZGVyU3BhY2luZygpKQogICAgICwgdmVydGlj
YWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxWZXJ0aWNhbEJvcmRlclNwYWNp
bmcoKSkKICAgICAsIGxpbmVfaGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgp
KQorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICwgc3BlY2lmaWVkTGluZUhl
aWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkKKyNlbmRpZgogICAgICwgY29s
b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xvcigpKQogICAgICwgdmlzaXRlZExpbmtDb2xvcihS
ZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yKCkpCiB7CkBAIC00NCw2ICs0Nyw5IEBAIFN0eWxlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYg
bykKICAgICAsIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcoby5ob3Jpem9udGFsX2JvcmRlcl9z
cGFjaW5nKQogICAgICwgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcoby52ZXJ0aWNhbF9ib3JkZXJf
c3BhY2luZykKICAgICAsIGxpbmVfaGVpZ2h0KG8ubGluZV9oZWlnaHQpCisjaWYgRU5BQkxFKElP
U19URVhUX0FVVE9TSVpJTkcpCisgICAgLCBzcGVjaWZpZWRMaW5lSGVpZ2h0KG8uc3BlY2lmaWVk
TGluZUhlaWdodCkKKyNlbmRpZgogICAgICwgZm9udChvLmZvbnQpCiAgICAgLCBjb2xvcihvLmNv
bG9yKQogICAgICwgdmlzaXRlZExpbmtDb2xvcihvLnZpc2l0ZWRMaW5rQ29sb3IpCkBAIC01Myw2
ICs1OSw5IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKGNvbnN0IFN0
eWxlSW5oZXJpdGVkRGF0YSYgbykKIGJvb2wgU3R5bGVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09
KGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QKIHsKICAgICByZXR1cm4gbGluZV9o
ZWlnaHQgPT0gby5saW5lX2hlaWdodAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQor
ICAgICAgICAmJiBzcGVjaWZpZWRMaW5lSGVpZ2h0ID09IG8uc3BlY2lmaWVkTGluZUhlaWdodAor
I2VuZGlmCiAgICAgICAgICYmIGZvbnQgPT0gby5mb250CiAgICAgICAgICYmIGNvbG9yID09IG8u
Y29sb3IKICAgICAgICAgJiYgdmlzaXRlZExpbmtDb2xvciA9PSBvLnZpc2l0ZWRMaW5rQ29sb3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRl
ZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERh
dGEuaAppbmRleCAwNmE3OTI3M2VkMmVkZjIwYTE0YWEyZTUyMjY3ZmJlODQzNDNlNTAzLi5lYmFi
ZmJjNmNhN2Y1OGUyNDI3ZGUyZDcyZGViODQ5NjA4MjNjYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCkBAIC01Miw2ICs1
Miw5IEBAIHB1YmxpYzoKICAgICAvLyBjb3VsZCBiZSBwYWNrZWQgaW4gYSBzaG9ydCBidXQgZG9l
c24ndAogICAgIC8vIG1ha2UgYSBkaWZmZXJlbmNlIGN1cnJlbnRseSBiZWNhdXNlIG9mIHBhZGRp
bmcKICAgICBMZW5ndGggbGluZV9oZWlnaHQ7CisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJ
TkcpCisgICAgTGVuZ3RoIHNwZWNpZmllZExpbmVIZWlnaHQ7CisjZW5kaWYKIAogICAgIEZvbnQg
Zm9udDsKICAgICBDb2xvciBjb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRleCAyZTFkOWQwYTZh
Mzk1MmQ2OTk1YjBhNWJkZjNhNWJmNDA2MmZhZmMxLi41NmRiM2U4MjM5ZGVkNjdiNWYxMzY0ODE1
MjU4MThlNGI3MzI0NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCkBAIC00Niw2ICs0NiwxMCBAQCBz
dHJ1Y3QgU2FtZVNpemVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTYW1lU2l6ZUFzU3R5bGVSYXJlSQogICAgIHVuc2lnbmVkIHVuc2lnbmVkc1sxXTsKICAgICBz
aG9ydCBoeXBoZW5hdGlvblNob3J0c1szXTsKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0la
SU5HKQorICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdDsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKENTU19JTUFHRV9SRVNPTFVUSU9OKQogICAgIGZsb2F0IGltYWdlUmVzb2x1dGlv
bkZsb2F0czsKICNlbmRpZgpAQCAtMTE0LDYgKzExOCw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgaHlwaGVuYXRpb25MaW1pdExpbmVz
KC0xKQogICAgICwgbV9saW5lR3JpZChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVHcmlkKCkpCiAg
ICAgLCBtX3RhYlNpemUoUmVuZGVyU3R5bGU6OmluaXRpYWxUYWJTaXplKCkpCisjaWYgRU5BQkxF
KElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgLCB0ZXh0U2l6ZUFkanVzdChSZW5kZXJTdHlsZTo6
aW5pdGlhbFRleHRTaXplQWRqdXN0KCkpCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX1JF
U09MVVRJT04pCiAgICAgLCBtX2ltYWdlUmVzb2x1dGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbElt
YWdlUmVzb2x1dGlvbigpKQogI2VuZGlmCkBAIC0xOTIsNiArMTk5LDkgQEAgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0
ZWREYXRhJiBvKQogICAgICwgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhvLnRleHRFbXBoYXNpc0N1
c3RvbU1hcmspCiAgICAgLCBtX2xpbmVHcmlkKG8ubV9saW5lR3JpZCkKICAgICAsIG1fdGFiU2l6
ZShvLm1fdGFiU2l6ZSkKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICAsIHRl
eHRTaXplQWRqdXN0KG8udGV4dFNpemVBZGp1c3QpCisjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lN
QUdFX1JFU09MVVRJT04pCiAgICAgLCBtX2ltYWdlUmVzb2x1dGlvbihvLm1faW1hZ2VSZXNvbHV0
aW9uKQogI2VuZGlmCkBAIC0yNTYsNiArMjY2LDkgQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWRE
YXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAj
aWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICAgICAgJiYgdXNl
VG91Y2hPdmVyZmxvd1Njcm9sbGluZyA9PSBvLnVzZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcKICNl
bmRpZgorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICAgICAmJiB0ZXh0U2l6
ZUFkanVzdCA9PSBvLnRleHRTaXplQWRqdXN0CisjZW5kaWYKICAgICAgICAgJiYgcmVzaXplID09
IG8ucmVzaXplCiAgICAgICAgICYmIHVzZXJTZWxlY3QgPT0gby51c2VyU2VsZWN0CiAgICAgICAg
ICYmIGNvbG9yU3BhY2UgPT0gby5jb2xvclNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRleCAzNGI4MGVh
NTI1YjQ3YzUzOTIyNjk5ZTI3MDQwNWMwNTRlODVlOTA2Li41MDEwNTUzY2Q1MTQ3M2MxOWFlMGUy
OGI0OGYyZDc0ZWM5YjU3M2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTM2LDYgKzM2LDEwIEBACiAj
aW5jbHVkZSAiU3R5bGVWYXJpYWJsZURhdGEuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElPU19U
RVhUX0FVVE9TSVpJTkcpCisjaW5jbHVkZSAiVGV4dFNpemVBZGp1c3RtZW50LmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3JMaXN0OwpAQCAtMTM3LDYgKzE0
MSwxMCBAQCBwdWJsaWM6CiAgICAgQXRvbWljU3RyaW5nIG1fbGluZUdyaWQ7CiAgICAgdW5zaWdu
ZWQgbV90YWJTaXplOwogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCisgICAgVGV4
dFNpemVBZGp1c3RtZW50IHRleHRTaXplQWRqdXN0OworI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NT
X0lNQUdFX1JFU09MVVRJT04pCiAgICAgZmxvYXQgbV9pbWFnZVJlc29sdXRpb247CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFkanVz
dG1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFkanVzdG1l
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZjEyNzkxZTk1YmU5YzZkYjZkYThhZTczZTc5YjZlMTRjY2FkNWUw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRT
aXplQWRqdXN0bWVudC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBUZXh0U2l6ZUFkanVzdG1lbnRfaAorI2Rl
ZmluZSBUZXh0U2l6ZUFkanVzdG1lbnRfaAorCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJ
TkcpCisKK2VudW0gVGV4dFNpemVBZGp1c3RtZW50VHlwZSB7IEF1dG9UZXh0U2l6ZUFkanVzdG1l
bnQgPSAtMSwgTm9UZXh0U2l6ZUFkanVzdG1lbnQgPSAtMiB9OworCitjbGFzcyBUZXh0U2l6ZUFk
anVzdG1lbnQgeworcHVibGljOgorICAgIFRleHRTaXplQWRqdXN0bWVudCgpIDogbV92YWx1ZShB
dXRvVGV4dFNpemVBZGp1c3RtZW50KSB7IH0KKyAgICBUZXh0U2l6ZUFkanVzdG1lbnQoZmxvYXQg
dmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9CisKKyAgICBmbG9hdCBwZXJjZW50YWdlKCkgeyBy
ZXR1cm4gbV92YWx1ZTsgfQorICAgIGZsb2F0IG11bHRpcGxpZXIoKSB7IHJldHVybiBtX3ZhbHVl
IC8gMTAwOyB9CisKKyAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0g
QXV0b1RleHRTaXplQWRqdXN0bWVudDsgfQorICAgIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZSA9PSBOb1RleHRTaXplQWRqdXN0bWVudDsgfQorICAgIGJvb2wgaXNQZXJjZW50
YWdlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA+PSAwOyB9CisKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgVGV4dFNpemVBZGp1c3RtZW50JiBhbkFkanVzdG1lbnQpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWUgPT0gYW5BZGp1c3RtZW50Lm1fdmFsdWU7IH0KKyAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVGV4dFNpemVBZGp1c3RtZW50JiBhbkFkanVzdG1lbnQpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWUgIT0gYW5BZGp1c3RtZW50Lm1fdmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBmbG9hdCBt
X3ZhbHVlOworfTsKKworI2VuZGlmIC8vIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorCisj
ZW5kaWYgLy8gVGV4dFNpemVBZGp1c3RtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCmluZGV4IDY2MGY2OTIzYWFlYzE0YmJjODE3N2IzZWViMTczZGYyM2ZkNWZlZjkuLjkw
NjRlYmI5OTFlZjIxMWJjYWE3ODc2ZTdjMTkxZTBjZGY5MmI0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTMyLDYgKzkzMiwzNCBAQCBzdGF0aWMgaW5saW5lIFdl
YkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCistICh2b2lkKXJlc2V0VGV4dEF1
dG9zaXppbmdCZWZvcmVMYXlvdXQKK3sKKyAgICBpZCBkb2N1bWVudFZpZXcgPSBbX3ByaXZhdGUt
PndlYkZyYW1lVmlldyBkb2N1bWVudFZpZXddOyAgICAKKyAgICBpZiAoIVtkb2N1bWVudFZpZXcg
aXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHNlbGYpOworICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gY29yZUZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5l
eHQoY29yZUZyYW1lKSkgeworICAgICAgICBEb2N1bWVudCAqZG9jID0gZnJhbWUtPmRvY3VtZW50
KCk7CisgICAgICAgIGlmICghZG9jIHx8ICFkb2MtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgZG9jLT5yZW5kZXJlcigpLT5yZXNldFRleHRBdXRvc2l6aW5nKCk7
CisgICAgfQorfQorCistICh2b2lkKV9zZXRWaXNpYmxlU2l6ZTooQ0dTaXplKXNpemUKK3sKKyAg
ICBbc2VsZiBfc2V0VGV4dEF1dG9zaXppbmdXaWR0aDpzaXplLndpZHRoXTsKK30KKworLSAodm9p
ZClfc2V0VGV4dEF1dG9zaXppbmdXaWR0aDooQ0dGbG9hdCl3aWR0aAoreworICAgIFdlYkNvcmU6
OkZyYW1lICpmcmFtZSA9IGNvcmUoc2VsZik7CisgICAgZnJhbWUtPnNldFRleHRBdXRvc2l6aW5n
V2lkdGgod2lkdGgpOworfQorI2VuZGlmIC8vIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQor
CiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OihET01Eb2N1bWVudEZyYWdt
ZW50ICopZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQg
c21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5
bGUKIHsKICAgICBpZiAoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuaXNOb25lKCkg
fHwgIWZyYWdtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVQcml2YXRl
LmgKaW5kZXggYzhiZGZmNzMwZTYxOTcxMTNjZTNhZjliYmJkN2MzMjk5NmZlMjc5ZC4uZDVlYmZh
ODQ4YzYyNzk4MzE5OWVjZDIwNTVlOTI3OTA5YzQzN2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lUHJpdmF0ZS5oCkBAIC05OSw2ICs5OSwxMiBAQCB0eXBlZGVmIGVu
dW0gewogLSAoSlNDb250ZXh0ICopX2phdmFTY3JpcHRDb250ZXh0Rm9yU2NyaXB0V29ybGQ6KFdl
YlNjcmlwdFdvcmxkICopd29ybGQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRP
U0laSU5HKQorLSAodm9pZClyZXNldFRleHRBdXRvc2l6aW5nQmVmb3JlTGF5b3V0OworLSAodm9p
ZClfc2V0VmlzaWJsZVNpemU6KENHU2l6ZSlzaXplOworLSAodm9pZClfc2V0VGV4dEF1dG9zaXpp
bmdXaWR0aDooQ0dGbG9hdCl3aWR0aDsKKyNlbmRpZgorCiAtICh2b2lkKV9yZXBsYWNlU2VsZWN0
aW9uV2l0aEZyYWdtZW50OihET01Eb2N1bWVudEZyYWdtZW50ICopZnJhZ21lbnQgc2VsZWN0UmVw
bGFjZW1lbnQ6KEJPT0wpc2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0
UmVwbGFjZSBtYXRjaFN0eWxlOihCT09MKW1hdGNoU3R5bGU7CiAtICh2b2lkKV9yZXBsYWNlU2Vs
ZWN0aW9uV2l0aFRleHQ6KE5TU3RyaW5nICopdGV4dCBzZWxlY3RSZXBsYWNlbWVudDooQk9PTClz
ZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBsYWNlOwogLSAodm9p
ZClfcmVwbGFjZVNlbGVjdGlvbldpdGhNYXJrdXBTdHJpbmc6KE5TU3RyaW5nICopbWFya3VwU3Ry
aW5nIGJhc2VVUkxTdHJpbmc6KE5TU3RyaW5nICopYmFzZVVSTFN0cmluZyBzZWxlY3RSZXBsYWNl
bWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRSZXBs
YWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmgKaW5kZXggYWNkNzY5OTBiZTBlOGMyMjU2OTI1YjkzOTk3YWM0NGMyYmU4OTcz
Yy4uZDlkYThlYWI5MmNlNTJhYWE2ZGQ5MTBjZjE5ZjYzMDBmYzEyZTQwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBA
IC0xNTksMyArMTU5LDcgQEAKICNkZWZpbmUgV2ViS2l0UGFnZUNhY2hlU2l6ZVByZWZlcmVuY2VL
ZXkgQCJXZWJLaXRQYWdlQ2FjaGVTaXplUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0T2Jq
ZWN0Q2FjaGVTaXplUHJlZmVyZW5jZUtleSBAIldlYktpdE9iamVjdENhY2hlU2l6ZVByZWZlcmVu
Y2VLZXkiCiAjZGVmaW5lIFdlYktpdERlYnVnRnVsbFBhZ2Vab29tUHJlZmVyZW5jZUtleSBAIldl
YktpdERlYnVnRnVsbFBhZ2Vab29tUHJlZmVyZW5jZUtleSIKKworI2lmIEVOQUJMRShJT1NfVEVY
VF9BVVRPU0laSU5HKQorI2RlZmluZSBXZWJLaXRNaW5pbXVtWm9vbUZvbnRTaXplUHJlZmVyZW5j
ZUtleSBAIldlYktpdE1pbmltdW1ab29tRm9udFNpemVQcmVmZXJlbmNlS2V5IgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCAxYmFhNDFl
ZTYxYmRlNmVjODkwYjNjYTM2MzQ5MTM2N2JmMjg1OWQwLi4zMWZiNmVjZWZlYjU1NTYxMTUwMGMz
ODRkNjcyYjJmNzE1OTFmMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXMubW0KQEAgLTQxMyw3ICs0MTMsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0U2NyZWVuRm9udFN1YnN0aXR1dGlvbkVuYWJs
ZWRLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OldlYkFsbG93QWxsU3RvcmFn
ZV0sIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSwKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVy
ZW5jZUtleSwKLQorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEZsb2F0OldLR2V0TWluaW11bVpvb21Gb250U2l6ZSgpXSwgV2ViS2l0
TWluaW11bVpvb21Gb250U2l6ZVByZWZlcmVuY2VLZXksCisjZW5kaWYKICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhMb25nTG9uZzpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgp
XSwgV2ViS2l0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoTG9uZ0xvbmc6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdl
YktpdEFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGEsCiAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0UVRLaXRFbmFibGVkUHJlZmVyZW5jZUtleSwK
QEAgLTEwODEsNiArMTA4MywxOCBAQCBwdWJsaWM6CiAgICAgcmV0dXJuIChOU1RpbWVJbnRlcnZh
bClbc2VsZiBfZmxvYXRWYWx1ZUZvcktleTpXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlv
bkludGVydmFsS2V5XTsKIH0KIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorLSAo
dm9pZClfc2V0TWluaW11bVpvb21Gb250U2l6ZTooZmxvYXQpc2l6ZQoreworICAgIFtzZWxmIF9z
ZXRGbG9hdFZhbHVlOnNpemUgZm9yS2V5OldlYktpdE1pbmltdW1ab29tRm9udFNpemVQcmVmZXJl
bmNlS2V5XTsKK30KKworLSAoZmxvYXQpX21pbmltdW1ab29tRm9udFNpemUKK3sKKyAgICByZXR1
cm4gW3NlbGYgX2Zsb2F0VmFsdWVGb3JLZXk6V2ViS2l0TWluaW11bVpvb21Gb250U2l6ZVByZWZl
cmVuY2VLZXldOworfQorI2VuZGlmCisKIC0gKGZsb2F0KVBERlNjYWxlRmFjdG9yCiB7CiAgICAg
cmV0dXJuIFtzZWxmIF9mbG9hdFZhbHVlRm9yS2V5OldlYktpdFBERlNjYWxlRmFjdG9yUHJlZmVy
ZW5jZUtleV07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYTI3NDE1MDVhY2ZmNzgyNTk3ZGJmNWUxYTc5NDQ1OTUxYmNiYzBkMi4uNTc5MjczMTRl
Y2UwN2MwYWFlMDJjZmViMzk4MGM3YzhmZjI5ZjAzZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTA5LTEwICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVcHN0cmVh
bSB0ZXh0IGF1dG9zaXppbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMTExMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCBpbmZyYXN0cnVjdHVyZSB0byB0ZXN0IHRoZSBpT1MgdGV4dCBh
dXRvc2l6aW5nIGNvZGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKHNldFRleHRBdXRvc2l6aW5nRW5hYmxlZENhbGxiYWNrKTogQWRkZWQuCisg
ICAgICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW06CisgICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZCk6IEFkZGVkLgorCiAyMDEzLTA5
LTEwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBFbmFi
bGUgSlNDIHN0cmVzcyB0ZXN0cyBmb3IgdGhlIHJlc3Qgb2Ygbm9uLVdpbmRvd3MgcGxhdGZvcm1z
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGZkYjNhYWFmMTIzZjFlZmQ0MTRk
NTAxZWFlMzA1YmNhYmZhNTNlOTQuLjI2YTU0MmFhNTdlNzBiOWQxNDRjMTMxZDY2ZmNmMzU4ZDJi
MTM3ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xMzI1LDYgKzEzMjUs
MTkgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEoKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CiB9CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKK3N0
YXRpYyBKU1ZhbHVlUmVmIHNldFRleHRBdXRvc2l6aW5nRW5hYmxlZENhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICAKKyAgICBUZXN0
UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0VGV4dEF1dG9zaXppbmdF
bmFibGVkKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7CisgICAgCisg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorI2VuZGlmCisKIHN0
YXRpYyBKU1ZhbHVlUmVmIHNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50
YXRpb24KQEAgLTIxNDksNiArMjE2Miw5IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6
OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZCIsIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHMiLCBzZXRTdG9wUHJvdmlzaW9uYWxGcmFt
ZUxvYWRzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0VGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzIiwgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICAgICAgeyAic2V0VGV4dEF1
dG9zaXppbmdFbmFibGVkIiwgc2V0VGV4dEF1dG9zaXppbmdFbmFibGVkQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyNlbmRpZgogICAgICAgICB7ICJzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSIs
IHNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0VXNlclN0eWxlU2hlZXRFbmFibGVkIiwgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVk
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbiIs
IHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdFJ1bm5lci5oCmluZGV4IGY1MTMzOTIyYjQzYjQ0OTY5ZDM0ZTY3ZDdlMGY4OTM3NmQ1YzYz
YmYuLjhjZGFjZDlhNWVkZTg5YzMzMDczNGFkNmY1YWMwM2E5ZjFhNjcyMDYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0UnVubmVyLmgKQEAgLTEyNiw3ICsxMjYsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
d2FpdEZvclBvbGljeURlbGVnYXRlKCk7CiAgICAgc2l6ZV90IHdlYkhpc3RvcnlJdGVtQ291bnQo
KTsKICAgICBpbnQgd2luZG93Q291bnQoKTsKLSAgICAKKworI2lmIEVOQUJMRShJT1NfVEVYVF9B
VVRPU0laSU5HKQorICAgIHZvaWQgc2V0VGV4dEF1dG9zaXppbmdFbmFibGVkKGJvb2wpOworI2Vu
ZGlmCisKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lO
KSB8fCBQTEFURk9STShFRkwpCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBsYXRmb3Jt
TmFtZSgpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KaW5kZXggN2FhNjE2OGE2MDdkNmE1OWNlNjBiZGM4ZDAzM2UwNjAwMWQxMjhiMy4u
MjVlM2Y1ZDk1ZjI0OWFhYTYyODU1OTUwNGQxZDFlYTRiMjk0Y2U0MyAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtNjk2LDYgKzY5NiwxMSBAQCBzdGF0
aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICB9IGVsc2UKICAg
ICAgICAgW3ByZWZlcmVuY2VzIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpOT107CiAKKyNpZiBF
TkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKKyAgICAvLyBEaXNhYmxlIHRleHQgYXV0b3Npemlu
ZyBieSBkZWZhdWx0LgorICAgIFtwcmVmZXJlbmNlcyBfc2V0TWluaW11bVpvb21Gb250U2l6ZTow
XTsKKyNlbmRpZgorCiAgICAgLy8gVGhlIGJhY2svZm9yd2FyZCBjYWNoZSBpcyBjYXVzaW5nIHBy
b2JsZW1zIGR1ZSB0byBsYXlvdXRzIGR1cmluZyB0cmFuc2l0aW9uIGZyb20gb25lIHBhZ2UgdG8g
YW5vdGhlci4KICAgICAvLyBTbywgdHVybiBpdCBvZmYgZm9yIG5vdywgYnV0IHdlIG1pZ2h0IHdh
bnQgdG8gdHVybiBpdCBiYWNrIG9uIHNvbWUgZGF5LgogICAgIFtwcmVmZXJlbmNlcyBzZXRVc2Vz
UGFnZUNhY2hlOk5PXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0K
aW5kZXggYzhmNmE4NTk4MGFhNDdiMmU1MTk0NzIwODYzZTM5OGIzNzlmNzk3Yi4uZTcwMDkzYzIy
ODFkNDNkNjMxNWQ3NjAxZTIwMDcxNzE0ZDA3NzE1YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTU2Nyw2ICs1NjcsMTQgQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCBjeWNsZXMpCiAgICAgW1ttYWlu
RnJhbWUgd2ViVmlld10gc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzOmN5Y2xlc107CiB9
CiAKKyNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0
VGV4dEF1dG9zaXppbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBjb25zdCBmbG9hdCBw
aG9uZU1pbmltdW1ab29tRm9udFNpemUgPSAxNTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10g
cHJlZmVyZW5jZXNdIF9zZXRNaW5pbXVtWm9vbUZvbnRTaXplOihlbmFibGVkID8gcGhvbmVNaW5p
bXVtWm9vbUZvbnRTaXplIDogMCldOworfQorI2VuZGlmCisKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUoYm9vbCBmbGFnKQogewogICAgIFtbbWFpbkZy
YW1lIHdlYlZpZXddIF9zZXREYXNoYm9hcmRCZWhhdmlvcjpXZWJEYXNoYm9hcmRCZWhhdmlvclVz
ZUJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgdG86ZmxhZ107CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTgxZWJlOWM4YWRm
YjYyM2FmNmFlN2VjNmI2NTk4MjY4MTlkMDU2NC4uMGFiZGFjNjJjOGMyMzhjYTAyNjNiM2RhYThk
YjhiNmQ0MmQ1OGRlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTA5LTEwICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBVcHN0cmVhbSB0ZXh0
IGF1dG9zaXppbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMTExMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCB0ZXN0cyB0byBlbnN1cmUgd2UgZG9uJ3QgcmVncmVzcyBpT1MgdGV4dCBhdXRvc2l6
aW5nLgorCisgICAgICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXpp
bmcvYW5vbnltb3VzLWJsb2NrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvYW5vbnltb3VzLWJsb2NrLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6
aW5nL2NvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2NvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3Np
emluZy9maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9maXJzdC1sZXR0ZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcv
Zm9udC1mYW1pbHktY2FzZS1pbnNlbnNpdGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2ZvbnQtZmFtaWx5
LWNhc2UtaW5zZW5zaXRpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaXBob25l
LXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvbGlzdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9saXN0cy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0
b3NpemluZy9vdmVyZmxvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL292ZXJmbG93Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNl
bnQtYWRqdXN0LWxlbmd0aC1saW5lLWhlaWdodC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRq
dXN0LWxlbmd0aC1saW5lLWhlaWdodC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9p
cGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9wZXJjZW50LWFkanVzdC1udW1iZXItbGlu
ZS1oZWlnaHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pcGhvbmUt
c2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9wZXJjZW50LWFkanVzdC1udW1iZXItbGluZS1oZWln
aHQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0
LWF1dG9zaXppbmcvcGVyY2VudC1hZGp1c3QtcGVyY2VudC1saW5lLWhlaWdodC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRv
c2l6aW5nL3BlcmNlbnQtYWRqdXN0LXBlcmNlbnQtbGluZS1oZWlnaHQuaHRtbDogQWRkZWQuCisK
IDIwMTMtMDktMTAgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgbmVlZHNGb2N1cyBpcyBhbHdheXMgdW5kZWZpbmVkIGluIGdyYW1tYXIt
cGFzdGUuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVs
YXRvci90ZXh0LWF1dG9zaXppbmcvYW5vbnltb3VzLWJsb2NrLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2Fub255bW91
cy1ibG9jay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjRlODhlN2RhNzIwZTQ3NTM5ZTJhODVk
YzVkNjdjMjFlN2YxMTg4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2Fub255bW91cy1ibG9jay1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMyBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDApIHNpemUgNzg0eDQwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDc1MXgzOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDYxOTogIlRo
aXMgdGVzdHMgdGhhdCBsaW5lLWhlaWdodCBhZGp1c3RtZW50cyBmb3IgdGV4dCBhdXRvc2l6aW5n
IGFyZSBwcmVzZXJ2ZWQgd2hlbiBhbm9ueW1vdXMgYmxvY2tzICIKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoNjE4LDApIHdpZHRoIDEzMzogImFyZSBkZXN0cm95ZWQgZHVyaW5nIgorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDIwKSB3aWR0aCAxMjQ6ICJpbmNyZW1lbnRhbCBsYXlvdXQuIgorICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTYpIHNpemUgNjAweDIyNAorICAgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDYwMHg5NgorICAgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwxKSBzaXplIDU4NXg5NAorICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMSkgd2lkdGggNTgwOiAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3Rl
dHVyIGFkaXBpc2NpbmcgZWxpdC4iCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzMykgd2lk
dGggNTg1OiAiTWFlY2VuYXMgZXUgbmlzbCBsZW8sIHZlbCBjb21tb2RvIG5pYmguIEZ1c2NlIHN1
c2NpcGl0IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjUpIHdpZHRoIDUzNTogImFyY3Ug
ZXUgZWxpdCB2dWxwdXRhdGUgbm9uIGhlbmRyZXJpdCB2ZWxpdCBjb25zZXF1YXQuIgorICAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw5Nikgc2l6ZSA2MDB4MAorICAgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCw5Nikgc2l6ZSA2MDB4MTI4CisgICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDEpIHNpemUgNTc4eDEyNgorICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMSkgd2lkdGggNTc4OiAiRXRpYW0gdmVuZW5hdGlzIHBvc3VlcmUgbmlzbCBpZCBzYWdp
dHRpcy4gRnVzY2UgdGluY2lkdW50IgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzMpIHdp
ZHRoIDU0NTogInZlbGl0IGF0IHNhcGllbiBwb3J0YSBvcm5hcmUuIE1vcmJpIGVnZXN0YXMsIGRp
YW0gbmVjIgorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjUpIHdpZHRoIDU3NDogInVsdHJp
Y2llcyBtb2xlc3RpZSwgZXN0IHZlbGl0IHVsdHJpY2llcyBsZW8sIGFsaXF1ZXQgcGxhY2VyYXQi
CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw5Nykgd2lkdGggMjAzOiAianVzdG8gbGliZXJv
IGlkIGFyY3UuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVs
YXRvci90ZXh0LWF1dG9zaXppbmcvYW5vbnltb3VzLWJsb2NrLmh0bWwgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9hbm9ueW1vdXMtYmxvY2su
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44NWIxMDExYzMzY2JhMmVkMGRhNGViM2ZjOTk0Nzg1ZDFkOGRhYzAz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRv
ci90ZXh0LWF1dG9zaXppbmcvYW5vbnltb3VzLWJsb2NrLmh0bWwKQEAgLTAsMCArMSwxOCBAQAor
PHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0
UnVubmVyLnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHA+Cisg
ICAgVGhpcyB0ZXN0cyB0aGF0IGxpbmUtaGVpZ2h0IGFkanVzdG1lbnRzIGZvciB0ZXh0IGF1dG9z
aXppbmcgYXJlIHByZXNlcnZlZCB3aGVuIGFub255bW91cyBibG9ja3MKKyAgICBhcmUgZGVzdHJv
eWVkIGR1cmluZyBpbmNyZW1lbnRhbCBsYXlvdXQuCis8L3A+Cis8ZGl2IHN0eWxlPSJ3aWR0aDog
NjAwcHg7IGxpbmUtaGVpZ2h0OiAyMHB4OyI+CisgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFt
ZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTWFlY2VuYXMgZXUgbmlzbCBsZW8sIHZl
bCBjb21tb2RvIG5pYmguIEZ1c2NlIHN1c2NpcGl0IGFyY3UgZXUgZWxpdCB2dWxwdXRhdGUgbm9u
IGhlbmRyZXJpdCB2ZWxpdCBjb25zZXF1YXQuCisgICAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4K
KyAgICBFdGlhbSB2ZW5lbmF0aXMgcG9zdWVyZSBuaXNsIGlkIHNhZ2l0dGlzLiBGdXNjZSB0aW5j
aWR1bnQgdmVsaXQgYXQgc2FwaWVuIHBvcnRhIG9ybmFyZS4gTW9yYmkgZWdlc3RhcywgZGlhbSBu
ZWMgdWx0cmljaWVzIG1vbGVzdGllLCBlc3QgdmVsaXQgdWx0cmljaWVzIGxlbywgYWxpcXVldCBw
bGFjZXJhdCBqdXN0byBsaWJlcm8gaWQgYXJjdS4KKzwvZGl2PgorPHNjcmlwdD4KKyAgICBkb2N1
bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICB2YXIgcHJlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiZGl2I3RhcmdldCIpOworICAgIHByZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSwgcHJlKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvY29udGVu
dGVkaXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11
bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2NvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGZjOTdkMDc3YTgyNGY3ZjcwNjg0M2RmNTI5M2ZmZDJkZjY3ZWFmOAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRv
c2l6aW5nL2NvbnRlbnRlZGl0YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOSBAQAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDIwCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUxNHgxOQorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ0MDogIlRoaXMgdGVzdHMgdGhhdCB0ZXh0IGF1dG9zaXpp
bmcgaXMgbm90IGFwcGxpZWQgdG8gZWRpdGFibGUgZWxlbWVudHMgYW5kICIKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoNDM5LDApIHdpZHRoIDc1OiAiZG9jdW1lbnRzLiIKKyAgICAgIFJlbmRlckJs
b2NrIHtESVZ9IGF0ICgwLDM2KSBzaXplIDYwMHg4MAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSA1OTV4MzkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA1OTE6ICJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2lu
ZyBlbGl0LiBNYWVjZW5hcyBldSBuaXNsIGxlbywgdmVsIGNvbW1vZG8iCisgICAgICAgICAgdGV4
dCBydW4gYXQgKDU5MCwwKSB3aWR0aCA1OiAiICIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
MCkgd2lkdGggNDY0OiAibmliaC4gRnVzY2Ugc3VzY2lwaXQgYXJjdSBldSBlbGl0IHZ1bHB1dGF0
ZSBub24gaGVuZHJlcml0IHZlbGl0IGNvbnNlcXVhdC4gIgorICAgICAgICBSZW5kZXJCUiB7QlJ9
IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCw0MCkg
c2l6ZSA2MDB4MzkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0MCkgd2lkdGggNTc5OiAiRXRp
YW0gdmVuZW5hdGlzIHBvc3VlcmUgbmlzbCBpZCBzYWdpdHRpcy4gRnVzY2UgdGluY2lkdW50IHZl
bGl0IGF0IHNhcGllbiBwb3J0YSBvcm5hcmUuIE1vcmJpIgorICAgICAgICAgIHRleHQgcnVuIGF0
ICg1NzgsNDApIHdpZHRoIDU6ICIgIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDYwKSB3aWR0
aCA1OTk6ICJlZ2VzdGFzLCBkaWFtIG5lYyB1bHRyaWNpZXMgbW9sZXN0aWUsIGVzdCB2ZWxpdCB1
bHRyaWNpZXMgbGVvLCBhbGlxdWV0IHBsYWNlcmF0IGp1c3RvIGxpYmVybyBpZCBhcmN1LiIKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoNTk4LDYwKSB3aWR0aCAyOiAiICIKKyAgICAgIFJlbmRlckJs
b2NrIChhbm9ueW1vdXMpIGF0ICgwLDExNikgc2l6ZSA3ODR4MTU0CisgICAgICAgIFJlbmRlclBh
cnRPYmplY3Qge0lGUkFNRX0gYXQgKDAsMCkgc2l6ZSAzMDR4MTU0IFtib3JkZXI6ICgycHggaW5z
ZXQgIzAwMDAwMCldCisgICAgICAgICAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA2MDh4MTUwCisgICAg
ICAgICAgICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgMzAweDE1MAorICAgICAgICAgIGxheWVy
IGF0ICgwLDApIHNpemUgMzAweDE1MAorICAgICAgICAgICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgMzAweDE1MAorICAgICAgICAgICAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDI4NHgxMzQKKyAgICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCwwKSBzaXplIDYwMHg4MAorICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgNTk1eDM5CisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDU5MTogIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlw
aXNjaW5nIGVsaXQuIE1hZWNlbmFzIGV1IG5pc2wgbGVvLCB2ZWwgY29tbW9kbyIKKyAgICAgICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDU5MCwwKSB3aWR0aCA1OiAiICIKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDQ2NDogIm5pYmguIEZ1c2NlIHN1c2Np
cGl0IGFyY3UgZXUgZWxpdCB2dWxwdXRhdGUgbm9uIGhlbmRyZXJpdCB2ZWxpdCBjb25zZXF1YXQu
ICIKKyAgICAgICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAg
ICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCw0MCkgc2l6ZSA2MDB4MzkK
KyAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDApIHdpZHRoIDU3OTogIkV0aWFt
IHZlbmVuYXRpcyBwb3N1ZXJlIG5pc2wgaWQgc2FnaXR0aXMuIEZ1c2NlIHRpbmNpZHVudCB2ZWxp
dCBhdCBzYXBpZW4gcG9ydGEgb3JuYXJlLiBNb3JiaSIKKyAgICAgICAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDU3OCw0MCkgd2lkdGggNTogIiAiCisgICAgICAgICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDYwKSB3aWR0aCA1OTk6ICJlZ2VzdGFzLCBkaWFtIG5lYyB1bHRyaWNpZXMgbW9s
ZXN0aWUsIGVzdCB2ZWxpdCB1bHRyaWNpZXMgbGVvLCBhbGlxdWV0IHBsYWNlcmF0IGp1c3RvIGxp
YmVybyBpZCBhcmN1LiIKKyAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDU5OCw2MCkg
d2lkdGggMjogIiAgICAiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDB4MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90
ZXh0LWF1dG9zaXppbmcvY29udGVudGVkaXRhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9jb250ZW50ZWRpdGFibGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNjg2NTZiMTgzMjRlN2Y4MDY1N2IzMWE4YTE4YmZlMWJiMTk2OGExCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0
LWF1dG9zaXppbmcvY29udGVudGVkaXRhYmxlLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPHNjcmlw
dD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVy
LnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHA+CisgICAgVGhp
cyB0ZXN0cyB0aGF0IHRleHQgYXV0b3NpemluZyBpcyBub3QgYXBwbGllZCB0byBlZGl0YWJsZSBl
bGVtZW50cyBhbmQKKyAgICBkb2N1bWVudHMuCis8L3A+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZSBz
dHlsZT0id2lkdGg6IDYwMHB4OyI+CisgICAgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNv
bnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gTWFlY2VuYXMgZXUgbmlzbCBsZW8sIHZlbCBjb21t
b2RvIG5pYmguIEZ1c2NlIHN1c2NpcGl0IGFyY3UgZXUgZWxpdCB2dWxwdXRhdGUgbm9uIGhlbmRy
ZXJpdCB2ZWxpdCBjb25zZXF1YXQuCisgICAgPGJyPgorICAgIEV0aWFtIHZlbmVuYXRpcyBwb3N1
ZXJlIG5pc2wgaWQgc2FnaXR0aXMuIEZ1c2NlIHRpbmNpZHVudCB2ZWxpdCBhdCBzYXBpZW4gcG9y
dGEgb3JuYXJlLiBNb3JiaSBlZ2VzdGFzLCBkaWFtIG5lYyB1bHRyaWNpZXMgbW9sZXN0aWUsIGVz
dCB2ZWxpdCB1bHRyaWNpZXMgbGVvLCBhbGlxdWV0IHBsYWNlcmF0IGp1c3RvIGxpYmVybyBpZCBh
cmN1LgorPC9kaXY+Cis8aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0bWwsCisgICAgPHNjcmlwdD4K
KyAgICAgICAgZG9jdW1lbnQuZGVzaWduTW9kZSA9ICJvbiI7CisgICAgPC9zY3JpcHQ+CisgICAg
PGRpdiBjb250ZW50ZWRpdGFibGUgc3R5bGU9IndpZHRoOiA2MDBweDsiPgorICAgICAgICBMb3Jl
bSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBNYWVj
ZW5hcyBldSBuaXNsIGxlbywgdmVsIGNvbW1vZG8gbmliaC4gRnVzY2Ugc3VzY2lwaXQgYXJjdSBl
dSBlbGl0IHZ1bHB1dGF0ZSBub24gaGVuZHJlcml0IHZlbGl0IGNvbnNlcXVhdC4KKyAgICAgICAg
PGJyPgorICAgICAgICBFdGlhbSB2ZW5lbmF0aXMgcG9zdWVyZSBuaXNsIGlkIHNhZ2l0dGlzLiBG
dXNjZSB0aW5jaWR1bnQgdmVsaXQgYXQgc2FwaWVuIHBvcnRhIG9ybmFyZS4gTW9yYmkgZWdlc3Rh
cywgZGlhbSBuZWMgdWx0cmljaWVzIG1vbGVzdGllLCBlc3QgdmVsaXQgdWx0cmljaWVzIGxlbywg
YWxpcXVldCBwbGFjZXJhdCBqdXN0byBsaWJlcm8gaWQgYXJjdS4KKyAgICA8L2Rpdj4KKyc+Cis8
L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0
b3IvdGV4dC1hdXRvc2l6aW5nL2ZpcnN0LWxldHRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9maXJzdC1sZXR0ZXIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYWE5ZmZmMGU1YzRhNGZjOGE5ZmI2MTg3ZGIzODFi
M2UxODRlNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUt
c2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9maXJzdC1sZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjYgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBz
aXplIDc4NHgyNworICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNjZ4
MjYKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNjY6ICJUaGUgZm9sbG93aW5n
IGxpbmVzIHNob3VsZCBiZSBpZGVudGljYWwuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDQzKSBzaXplIDc4NHgyNworICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNp
emUgMTd4MjYgW2NvbG9yPSMwMDgwMDBdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMTd4MjYKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE3
OiAiQSIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNiwwKSBzaXplIDIzeDI2Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDE2LDApIHdpZHRoIDIzOiAiLVoiCisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsODYpIHNpemUgNzg0eDI3CisgICAgICAgIFJlbmRlcklubGluZSAoZ2Vu
ZXJhdGVkKSBhdCAoMCwwKSBzaXplIDE3eDI2IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE3eDI2CisgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNzogIkEiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MTYsMCkgc2l6ZSAyM3gyNgorICAgICAgICAgIHRleHQgcnVuIGF0ICgxNiwwKSB3aWR0aCAyMzog
Ii1aIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDEyOSkgc2l6ZSA3ODR4MjcKKyAgICAg
ICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSBhdCAoMCwwKSBzaXplIDE3eDI3IFtjb2xvcj0jMDA4
MDAwXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE3eDI2Cisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzogIkEiCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMTcsMCkgc2l6ZSAyMngyNgorICAgICAgICAgIHRleHQgcnVuIGF0
ICgxNywwKSB3aWR0aCAyMjogIi1aIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvZmlyc3QtbGV0dGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9maXJzdC1s
ZXR0ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzUxNzljODUxOTdhNDc3Y2M1Y2IzZmMzYTNmYTgwNzFl
OTI0MWY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNp
bXVsYXRvci90ZXh0LWF1dG9zaXppbmcvZmlyc3QtbGV0dGVyLmh0bWwKQEAgLTAsMCArMSwyMiBA
QAorPGh0bWw+Cis8aGVhZD4KKwk8c3R5bGU+CisgICAgICAgIHAuZmlyc3RMZXR0ZXI6Zmlyc3Qt
bGV0dGVyIHsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQorICAgICAgICBw
LmZsb2F0OmZpcnN0LWxldHRlciB7CisgICAgICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAg
fQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZCh0cnVl
KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwPlRoZSBmb2xsb3dpbmcg
bGluZXMgc2hvdWxkIGJlIGlkZW50aWNhbC48L3A+CisgICAgPHA+PHNwYW4gc3R5bGU9ImNvbG9y
OmdyZWVuIj5BPC9zcGFuPi1aPC9wPgorICAgIDxwIGNsYXNzPSJmaXJzdExldHRlciI+QS1aPC9w
PgorICAgIDxwIGNsYXNzPSJmaXJzdExldHRlciBmbG9hdCI+QS1aPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90
ZXh0LWF1dG9zaXppbmcvZm9udC1mYW1pbHktY2FzZS1pbnNlbnNpdGl2ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9m
b250LWZhbWlseS1jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjFh
ZDk1MTdiZDAyOGM0MWMwNTFmNjcxYzM4YjQ4MzRjYTY1MjVlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvZm9u
dC1mYW1pbHktY2FzZS1pbnNlbnNpdGl2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAor
RWFjaCByb3cgb2YgdGhlIHRhYmxlIHNob3VsZCBoYXZlIHRleHQgdGhhdCBpcyB0aGUgc2FtZSBz
aXplLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyA8Zm9udD4gcm93cyB3
ZXJlIGFsbCB0aGUgc2FtZSBzaXplCitQQVNTIDxzcGFuPiByb3dzIHdlcmUgYWxsIHRoZSBzYW1l
IHNpemUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQt
YXV0b3NpemluZy9mb250LWZhbWlseS1jYXNlLWluc2Vuc2l0aXZlLmh0bWwgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9mb250LWZhbWlseS1j
YXNlLWluc2Vuc2l0aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDUxM2EzOGM5OWExODAyNmNhOTBkMWIw
YzkyNTE5NjlmNzk5NzczMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2ZvbnQtZmFtaWx5LWNhc2UtaW5zZW5z
aXRpdmUuaHRtbApAQCAtMCwwICsxLDY3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+Q2FzZS1JbnNlbnNpdGl2ZSBGb250IEZhbWlseSBOYW1lIENvbXBhcmlzb25z
PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZCh0cnVlKTsKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8ZGl2IGlkPSJjb250ZW50Ij4KKworICAgIDwhLS0gSFRNTCA8
Zm9udD4gU3R5bGluZyAtLT4KKyAgICA8dGFibGUgd2lkdGg9IjYwMCI+CisgICAgICAgIDx0cj48
dGQ+PGZvbnQgZmFjZT0iVkVSREFOQSI+VGVzdDwvZm9udD48L3RkPjwvdHI+CisgICAgICAgIDx0
cj48dGQ+PGZvbnQgZmFjZT0iVkVSREFOQSI+VGVzdDwvZm9udD48L3RkPjwvdHI+CisgICAgICAg
IDx0cj48dGQ+PGZvbnQgZmFjZT0iVmVyZGFuYSI+VGVzdDwvZm9udD48L3RkPjwvdHI+CisgICAg
ICAgIDx0cj48dGQ+PGZvbnQgZmFjZT0iVkVSREFOQSI+VGVzdDwvZm9udD48L3RkPjwvdHI+Cisg
ICAgPC90YWJsZT4KKworICAgIDwhLS0gQ1NTIGZvbnQtZmFtaWx5IFN0eWxpbmcgLS0+CisgICAg
PHRhYmxlIHdpZHRoPSI2MDAiPgorICAgICAgICA8dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXN0IiBz
dHlsZT0iZm9udC1mYW1pbHk6VkVSREFOQSI+VGVzdDwvc3Bhbj48L3RkPjwvdHI+CisgICAgICAg
IDx0cj48dGQ+PHNwYW4gY2xhc3M9InRlc3QiIHN0eWxlPSJmb250LWZhbWlseTpWRVJEQU5BIj5U
ZXN0PC9zcGFuPjwvdGQ+PC90cj4KKyAgICAgICAgPHRyPjx0ZD48c3BhbiBjbGFzcz0idGVzdCIg
c3R5bGU9ImZvbnQtZmFtaWx5OlZlcmRhbmEiPlRlc3Q8L3NwYW4+PC90ZD48L3RyPgorICAgICAg
ICA8dHI+PHRkPjxzcGFuIGNsYXNzPSJ0ZXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6VkVSREFOQSI+
VGVzdDwvc3Bhbj48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKworPC9kaXY+CisKKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignRWFjaCByb3cgb2YgdGhlIHRhYmxlIHNob3VsZCBoYXZlIHRleHQgdGhh
dCBpcyB0aGUgc2FtZSBzaXplLicpOworCitmdW5jdGlvbiB2ZXJpZnlFcXVhbFNpemVzKGxpc3Qs
IGRlc2NyaXB0aW9uKSB7CisgICAgdmFyIGhhZEZhaWx1cmUgPSBmYWxzZTsKKyAgICB2YXIgZmly
c3RSb3dSZWN0ID0gbGlzdFswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICBmb3IgKHZh
ciBpPTA7IGk8bGlzdC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcm93ID0gbGlzdFtpXS5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgaWYgKHJvdy53aWR0aCAhPT0gZmlyc3RS
b3dSZWN0LndpZHRoIHx8IHJvdy5oZWlnaHQgIT09IGZpcnN0Um93UmVjdC5oZWlnaHQpIHsKKyAg
ICAgICAgICAgIGhhZEZhaWx1cmUgPSB0cnVlOworICAgICAgICAgICAgdGVzdEZhaWxlZCgnUm93
ICcgKyBpICsgJzogd2FzICcgKyByb3cud2lkdGggKyAneCcgKyByb3cuaGVpZ2h0ICsKKyAgICAg
ICAgICAgICAgJyBidXQgc2hvdWxkIGhhdmUgYmVlbiAnICsgZmlyc3RSb3dSZWN0LndpZHRoICsg
J3gnICsgZmlyc3RSb3dSZWN0LmhlaWdodCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
IWhhZEZhaWx1cmUpCisgICAgICAgIHRlc3RQYXNzZWQoZGVzY3JpcHRpb24gKyAnIHJvd3Mgd2Vy
ZSBhbGwgdGhlIHNhbWUgc2l6ZScpOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7
CisgICAgdmVyaWZ5RXF1YWxTaXplcyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdmb250Jyks
ICc8Zm9udD4nKTsKKyAgICB2ZXJpZnlFcXVhbFNpemVzKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoJ3NwYW4udGVzdCcpLCAnPHNwYW4+Jyk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnRlbnQnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6
aW5nL2xpc3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11
bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2xpc3RzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDc2
MzE4NTQ1NzkzODRiZjFiYzhhNmQ1Mzg0YjQ5MDZiNzgwZGY1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvbGlz
dHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDI3CisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMyM3gyNgorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDMyMzogIicxJyBtYXJrZXJzIHNob3VsZCBiZSB0aGUgc2FtZSBzaXplIgorICAg
ICAgUmVuZGVyQmxvY2sge09MfSBhdCAoMCw0Mykgc2l6ZSA3ODR4NTQKKyAgICAgICAgUmVuZGVy
TGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6ZSA3NDR4NTQKKyAgICAgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc0NHgyNworICAgICAgICAgICAgUmVuZGVyTGlz
dE1hcmtlciBhdCAoLTI5LDApIHNpemUgMjJ4MjY6ICIxIgorICAgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzh4MjYKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMzg6ICJmaXJzdCIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7T0x9IGF0ICgw
LDI3KSBzaXplIDc0NHgyNworICAgICAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAs
MCkgc2l6ZSA3MDR4MjcKKyAgICAgICAgICAgICAgUmVuZGVyTGlzdE1hcmtlciBhdCAoLTI5LDAp
IHNpemUgMjJ4MjY6ICIxIgorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA2NHgyNgorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDY0
OiAic2Vjb25kIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVs
YXRvci90ZXh0LWF1dG9zaXppbmcvbGlzdHMuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lw
aG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2xpc3RzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI2
MzY3YjFiYTk4OWYwZjY1NTVhODlhMDVhNGEwMzU0ZmNhNDNkOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL2xp
c3RzLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuc2V0
VGV4dEF1dG9zaXppbmdFbmFibGVkKHRydWUpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgICAgJzEnIG1hcmtlcnMgc2hvdWxkIGJlIHRoZSBzYW1lIHNpemUKKyAgICA8b2w+Cisg
ICAgICAgIDxsaT5maXJzdAorICAgICAgICA8b2w+PGxpPnNlY29uZDwvbGk+PC9vbD4KKyAgICAg
ICAgPC9saT4KKyAgICA8L29sPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvb3ZlcmZsb3ct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0
LWF1dG9zaXppbmcvb3ZlcmZsb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5YzM4Yjk3YmRh
OGFhYzM5ZjAwNjJlMmYwNTk5ZjFmZGJhMGJjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9vdmVyZmxvdy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw5MSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTU3
MgorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCwxMCkgc2l6ZSA3ODR4NTgwCisgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMTAsMCkgc2l6ZSA3NjR4MTI0IFtib3JkZXI6ICgycHggc29saWQgIzAw
MDAwMCldCisgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMTIsMjgpIHNpemUgNzQweDgwCisg
ICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDcxNXgzOQorICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzE1eDM5CisgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcxNTogIlRoaXMgdGV4dCBzaG91bGRuJ3QgYXV0b3Np
emUuIFVzdWFsbHkgdGhpcyBhcHBlYXJzIHRvIGJlIGEgZGVzaWduZXIncyBmYXVsdCwgd2hlbiB0
aGUgbmV3IHRleHQgaXMgYWRkZWQsIGJ1dCIKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MjApIHdpZHRoIDU4NTogImJsb2NrIGhlaWdodCBpcyBub3QgY2hhbmdlZC4gT3IgYW4gb3ZlcmZs
b3cgd2FzIG1hZGUgaW50ZW50aW9uYWxseSBmb3Igc29tZSBwdXJwb3NlLiIKKyAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDU4NCwyMCkgc2l6ZSA3Mzl4NTkKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICg1ODQsMjApIHdpZHRoIDE0ODogIiBMb3JlbSBpcHN1bSBkb2xvciBzaXQiCisg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0MCkgd2lkdGggNzM5OiAiYW1ldCwgY29uc2VjdGV0
dWVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRpYW0gbm9udW1teSBuaWJoIGV1aXNtb2QgdGluY2lk
dW50IHV0IGxhb3JlZXQgZG9sb3JlIG1hZ25hIGFsaXF1YW0gZXJhdCIKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDYwKSB3aWR0aCA1NzogInZvbHV0cGF0LiIKKyAgICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgxMiwxMjQpIHNpemUgNzQweDgwCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgNzM4eDc5CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCA2ODY6ICJVdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhl
cmNpIHRhdGlvbiB1bGxhbWNvcnBlciBzdXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFsaXF1aXAg
ZXggZWEiCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMCkgd2lkdGggNzIwOiAiY29tbW9k
byBjb25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9sb3IgaW4gaGVuZHJlcml0
IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNlcXVhdCwgdmVsIgorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsNDApIHdpZHRoIDczODogImlsbHVtIGRvbG9yZSBldSBmZXVn
aWF0IG51bGxhIGZhY2lsaXNpcyBhdCB2ZXJvIGVyb3MgZXQgYWNjdW1zYW4gZXQgaXVzdG8gb2Rp
byBkaWduaXNzaW0gcXVpIGJsYW5kaXQgcHJhZXNlbnQgbHVwdGF0dW0iCisgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCw2MCkgd2lkdGggMzQ2OiAienpyaWwgZGVsZW5pdCBhdWd1ZSBkdWlzIGRv
bG9yZSB0ZSBmZXVnYWl0IG51bGxhIGZhY2lsaXNpLiIKKyAgICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDIyLDIyMCkgc2l6ZSA3MjB4MTM0MiBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAwMDAp
XQorICAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgxMiwxMikgc2l6ZSA2OTZ4
NDAKKyAgICAgICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAxMDh4MTkKKyAg
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTA4eDE5CisgICAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTA4OiAiU3RpbGwgc2hvdWxkIG5v
dC4iCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEwNywwKSBzaXplIDY5Nngz
OQorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTA3LDApIHdpZHRoIDU4OTogIiBMb3JlbSBp
cHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dWVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRp
YW0gbm9udW1teSBuaWJoIGV1aXNtb2QiCisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIw
KSB3aWR0aCAzNTc6ICJ0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxpcXVhbSBl
cmF0IHZvbHV0cGF0LiIKKyAgICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDEyLDY4KSBzaXpl
IDY5Nng4MAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjg2
eDc5CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDY4NjogIlV0IHdpc2kg
ZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2kgdGF0aW9uIHVsbGFtY29y
cGVyIHN1c2NpcGl0IGxvYm9ydGlzIG5pc2wgdXQgYWxpcXVpcCBleCBlYSIKKyAgICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMjApIHdpZHRoIDYyNTogImNvbW1vZG8gY29uc2VxdWF0LiBEdWlz
IGF1dGVtIHZlbCBldW0gaXJpdXJlIGRvbG9yIGluIGhlbmRyZXJpdCBpbiB2dWxwdXRhdGUgdmVs
aXQgZXNzZSBtb2xlc3RpZSIKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDApIHdpZHRo
IDY2NzogImNvbnNlcXVhdCwgdmVsIGlsbHVtIGRvbG9yZSBldSBmZXVnaWF0IG51bGxhIGZhY2ls
aXNpcyBhdCB2ZXJvIGVyb3MgZXQgYWNjdW1zYW4gZXQgaXVzdG8gb2RpbyBkaWduaXNzaW0gcXVp
IgorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2MCkgd2lkdGggNTEyOiAiYmxhbmRpdCBw
cmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3VlIGR1aXMgZG9sb3JlIHRlIGZldWdh
aXQgbnVsbGEgZmFjaWxpc2kuIgorICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyMiwx
NjQpIHNpemUgNjc2eDExNTYgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAg
ICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgxMiwxMikgc2l6ZSA2NTJ4NDAKKyAgICAg
ICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDEwOHgxOQorICAgICAgICAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEwOHgxOQorICAgICAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTA4OiAiU3RpbGwgc2hvdWxkIG5vdC4i
CisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTA3LDApIHNpemUgNjM4eDM5
CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEwNywwKSB3aWR0aCA1MzE6ICIgTG9yZW0g
aXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBk
aWFtIG5vbnVtbXkgbmliaCIKKyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMCkgd2lk
dGggNDE1OiAiZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxpcXVh
bSBlcmF0IHZvbHV0cGF0LiIKKyAgICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMTIsNjgp
IHNpemUgNjUyeDgwCisgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDY0OHg3OQorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDY0ODog
IlV0IHdpc2kgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2kgdGF0aW9u
IHVsbGFtY29ycGVyIHN1c2NpcGl0IGxvYm9ydGlzIG5pc2wgdXQgYWxpcXVpcCIKKyAgICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMCkgd2lkdGggNjA0OiAiZXggZWEgY29tbW9kbyBjb25z
ZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9sb3IgaW4gaGVuZHJlcml0IGluIHZ1
bHB1dGF0ZSB2ZWxpdCBlc3NlIgorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQwKSB3
aWR0aCA2MzU6ICJtb2xlc3RpZSBjb25zZXF1YXQsIHZlbCBpbGx1bSBkb2xvcmUgZXUgZmV1Z2lh
dCBudWxsYSBmYWNpbGlzaXMgYXQgdmVybyBlcm9zIGV0IGFjY3Vtc2FuIGV0IGl1c3RvIG9kaW8i
CisgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjApIHdpZHRoIDYwMzogImRpZ25pc3Np
bSBxdWkgYmxhbmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3VlIGR1aXMg
ZG9sb3JlIHRlIGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuIgorICAgICAgICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDIyLDE2NCkgc2l6ZSA2MzJ4OTcwIFtib3JkZXI6ICgycHggc29saWQgIzAw
MDAwMCldCisgICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMTIsMjgpIHNpemUgNjA4
eDE5MgorICAgICAgICAgICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSA1NDJ4
OTQKKyAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwxKSBzaXplIDU0
Mng5NAorICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxKSB3aWR0aCA1NDI6ICJU
aGlzIHRleHQgc2hvdWxkIGF1dG9yZXNpemUuIFNvbWV0aW1lcyBjb250ZW50IGlzIgorICAgICAg
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzMykgd2lkdGggNTQyOiAiYmVpbmcgcHV0IGlu
IGZpeGVkLWhlaWdodCAoYnkgYSBtaXN0YWtlKSBibG9ja3MgdG8iCisgICAgICAgICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDY1KSB3aWR0aCAxOTk6ICJhcHBseSBzb21lIHN0eWxlcy4iCisg
ICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxOTgsNjUpIHNpemUgNTc2eDEy
NgorICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE5OCw2NSkgd2lkdGggMzAzOiAiIExv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDk3KSB3aWR0aCA1NTQ6ICJjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZGlh
bSBub251bW15IG5pYmgiCisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMjkpIHdp
ZHRoIDU3NjogImV1aXNtb2QgdGluY2lkdW50IHV0IGxhb3JlZXQgZG9sb3JlIG1hZ25hIGFsaXF1
YW0gZXJhdCIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE2MSkgd2lkdGggOTI6
ICJ2b2x1dHBhdC4iCisgICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMTIsMjM2KSBz
aXplIDYwOHgyNTYKKyAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMSkg
c2l6ZSA2MDB4MjU0CisgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxKSB3aWR0aCA2
MDA6ICJVdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpIHRh
dGlvbiIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDMzKSB3aWR0aCA1MDg6ICJ1
bGxhbWNvcnBlciBzdXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFsaXF1aXAgZXggZWEiCisgICAg
ICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2NSkgd2lkdGggNTg4OiAiY29tbW9kbyBjb25z
ZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9sb3IgaW4iCisgICAgICAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCw5Nykgd2lkdGggNTc3OiAiaGVuZHJlcml0IGluIHZ1bHB1dGF0
ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNlcXVhdCwgdmVsIgorICAgICAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMTI5KSB3aWR0aCA1Mzc6ICJpbGx1bSBkb2xvcmUgZXUgZmV1Z2lhdCBu
dWxsYSBmYWNpbGlzaXMgYXQgdmVybyBlcm9zIGV0IgorICAgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTYxKSB3aWR0aCA1NTc6ICJhY2N1bXNhbiBldCBpdXN0byBvZGlvIGRpZ25pc3Np
bSBxdWkgYmxhbmRpdCBwcmFlc2VudCIKKyAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDE5Mykgd2lkdGggNTc3OiAibHVwdGF0dW0genpyaWwgZGVsZW5pdCBhdWd1ZSBkdWlzIGRvbG9y
ZSB0ZSBmZXVnYWl0IG51bGxhIgorICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjI1
KSB3aWR0aCA3ODogImZhY2lsaXNpLiIKKyAgICAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDIyLDUwOCkgc2l6ZSA1ODh4NDQwIFtib3JkZXI6ICgycHggc29saWQgIzAwMDAwMCldCisg
ICAgICAgICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDEyLDEyKSBzaXplIDU2
NHgxMjgKKyAgICAgICAgICAgICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAx
NjZ4MzAKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDEpIHNp
emUgMTY2eDMwCisgICAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMSkgd2lkdGgg
MTY2OiAiU2hvdWxkIGFzIHdlbGwuIgorICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgxNjUsMSkgc2l6ZSA1NTR4MTI2CisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgxNjUsMSkgd2lkdGggMzAzOiAiIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCIKKyAg
ICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzMpIHdpZHRoIDU1NDogImNvbnNlY3Rl
dHVlciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkaWFtIG5vbnVtbXkgbmliaCIKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjUpIHdpZHRoIDUzMDogImV1aXNtb2QgdGluY2lkdW50
IHV0IGxhb3JlZXQgZG9sb3JlIG1hZ25hIGFsaXF1YW0iCisgICAgICAgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDk3KSB3aWR0aCAxMzg6ICJlcmF0IHZvbHV0cGF0LiIKKyAgICAgICAgICAg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDEyLDE1Nikgc2l6ZSA1NjR4MjU2CisgICAgICAgICAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMSkgc2l6ZSA1NjR4MjU0CisgICAgICAg
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEpIHdpZHRoIDUzNDogIlV0IHdpc2kgZW5pbSBh
ZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2kiCisgICAgICAgICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDMzKSB3aWR0aCA1NDQ6ICJ0YXRpb24gdWxsYW1jb3JwZXIgc3VzY2lw
aXQgbG9ib3J0aXMgbmlzbCB1dCBhbGlxdWlwIGV4IgorICAgICAgICAgICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCw2NSkgd2lkdGggNTI5OiAiZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0
ZW0gdmVsIGV1bSBpcml1cmUiCisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDk3
KSB3aWR0aCA1MTA6ICJkb2xvciBpbiBoZW5kcmVyaXQgaW4gdnVscHV0YXRlIHZlbGl0IGVzc2Ug
bW9sZXN0aWUiCisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDEyOSkgd2lkdGgg
NTY0OiAiY29uc2VxdWF0LCB2ZWwgaWxsdW0gZG9sb3JlIGV1IGZldWdpYXQgbnVsbGEgZmFjaWxp
c2lzIGF0IgorICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNjEpIHdpZHRoIDUx
MzogInZlcm8gZXJvcyBldCBhY2N1bXNhbiBldCBpdXN0byBvZGlvIGRpZ25pc3NpbSBxdWkiCisg
ICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5Mykgd2lkdGggNTEzOiAiYmxhbmRp
dCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3VlIGR1aXMiCisgICAgICAgICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIyNSkgd2lkdGggMzEzOiAiZG9sb3JlIHRlIGZldWdh
aXQgbnVsbGEgZmFjaWxpc2kuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBo
b25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL292ZXJmbG93Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmQ1YTg5NDgyY2UxYTA2NzRiMGIzMzExYmJjOGFkYWNjNDczNzU4ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4
dC1hdXRvc2l6aW5nL292ZXJmbG93Lmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGRpdiB7CisgICAgICAgIGJvcmRl
ci1zdHlsZTpzb2xpZDsKKyAgICAgICAgYm9yZGVyLXdpZHRoOjJweDsKKyAgICAgICAgcGFkZGlu
ZzogMTBweDsKKyAgICAgICAgbWFyZ2luOiAxMHB4OworICAgIH07CisgICAgPC9zdHlsZT4KKwor
ICAgIDxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB3aW5kb3cu
dGVzdFJ1bm5lci5zZXRUZXh0QXV0b3NpemluZ0VuYWJsZWQodHJ1ZSk7CisgICAgPC9zY3JpcHQ+
CisKKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgc3R5bGU9ImhlaWdodDoxMDBweCI+CisgICAg
ICAgIDxwPjxiPlRoaXMgdGV4dCBzaG91bGRuJ3QgYXV0b3NpemUuIFVzdWFsbHkgdGhpcyBhcHBl
YXJzIHRvIGJlIGEgZGVzaWduZXIncyBmYXVsdCwgd2hlbiB0aGUgbmV3IHRleHQgaXMgYWRkZWQs
IGJ1dCBibG9jayBoZWlnaHQgaXMgbm90IGNoYW5nZWQuIE9yIGFuIG92ZXJmbG93IHdhcyBtYWRl
IGludGVudGlvbmFsbHkgZm9yIHNvbWUgcHVycG9zZS48L2I+IExvcmVtIGlwc3VtIGRvbG9yIHNp
dCBhbWV0LCBjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZGlhbSBub251bW15IG5p
YmggZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0
IHZvbHV0cGF0LiA8cD5VdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQg
ZXhlcmNpIHRhdGlvbiB1bGxhbWNvcnBlciBzdXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFsaXF1
aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9s
b3IgaW4gaGVuZHJlcml0IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNlcXVh
dCwgdmVsIGlsbHVtIGRvbG9yZSBldSBmZXVnaWF0IG51bGxhIGZhY2lsaXNpcyBhdCB2ZXJvIGVy
b3MgZXQgYWNjdW1zYW4gZXQgaXVzdG8gb2RpbyBkaWduaXNzaW0gcXVpIGJsYW5kaXQgcHJhZXNl
bnQgbHVwdGF0dW0genpyaWwgZGVsZW5pdCBhdWd1ZSBkdWlzIGRvbG9yZSB0ZSBmZXVnYWl0IG51
bGxhIGZhY2lsaXNpLgorICAgICAgICA8ZGl2PgorICAgICAgICAgICAgPGI+U3RpbGwgc2hvdWxk
IG5vdC48L2I+IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ZXIgYWRpcGlz
Y2luZyBlbGl0LCBzZWQgZGlhbSBub251bW15IG5pYmggZXVpc21vZCB0aW5jaWR1bnQgdXQgbGFv
cmVldCBkb2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0LiA8cD5VdCB3aXNpIGVuaW0g
YWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpIHRhdGlvbiB1bGxhbWNvcnBlciBz
dXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQu
IER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9sb3IgaW4gaGVuZHJlcml0IGluIHZ1bHB1dGF0
ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNlcXVhdCwgdmVsIGlsbHVtIGRvbG9yZSBldSBmZXVn
aWF0IG51bGxhIGZhY2lsaXNpcyBhdCB2ZXJvIGVyb3MgZXQgYWNjdW1zYW4gZXQgaXVzdG8gb2Rp
byBkaWduaXNzaW0gcXVpIGJsYW5kaXQgcHJhZXNlbnQgbHVwdGF0dW0genpyaWwgZGVsZW5pdCBh
dWd1ZSBkdWlzIGRvbG9yZSB0ZSBmZXVnYWl0IG51bGxhIGZhY2lsaXNpLgorICAgICAgICAgICAg
PGRpdj4KKyAgICAgICAgICAgICAgICA8Yj5TdGlsbCBzaG91bGQgbm90LjwvYj4gTG9yZW0gaXBz
dW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkaWFt
IG5vbnVtbXkgbmliaCBldWlzbW9kIHRpbmNpZHVudCB1dCBsYW9yZWV0IGRvbG9yZSBtYWduYSBh
bGlxdWFtIGVyYXQgdm9sdXRwYXQuIDxwPlV0IHdpc2kgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1
aXMgbm9zdHJ1ZCBleGVyY2kgdGF0aW9uIHVsbGFtY29ycGVyIHN1c2NpcGl0IGxvYm9ydGlzIG5p
c2wgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlbSB2ZWwgZXVt
IGlyaXVyZSBkb2xvciBpbiBoZW5kcmVyaXQgaW4gdnVscHV0YXRlIHZlbGl0IGVzc2UgbW9sZXN0
aWUgY29uc2VxdWF0LCB2ZWwgaWxsdW0gZG9sb3JlIGV1IGZldWdpYXQgbnVsbGEgZmFjaWxpc2lz
IGF0IHZlcm8gZXJvcyBldCBhY2N1bXNhbiBldCBpdXN0byBvZGlvIGRpZ25pc3NpbSBxdWkgYmxh
bmRpdCBwcmFlc2VudCBsdXB0YXR1bSB6enJpbCBkZWxlbml0IGF1Z3VlIGR1aXMgZG9sb3JlIHRl
IGZldWdhaXQgbnVsbGEgZmFjaWxpc2kuCisgICAgICAgICAgICAgICAgPGRpdj4KKyAgICAgICAg
ICAgICAgICAgICAgPHA+PGI+VGhpcyB0ZXh0IHNob3VsZCBhdXRvcmVzaXplLiBTb21ldGltZXMg
Y29udGVudCBpcyBiZWluZyBwdXQgaW4gZml4ZWQtaGVpZ2h0IChieSBhIG1pc3Rha2UpIGJsb2Nr
cyB0byBhcHBseSBzb21lIHN0eWxlcy48L2I+IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBj
b25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZGlhbSBub251bW15IG5pYmggZXVpc21v
ZCB0aW5jaWR1bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0
LiA8cD5VdCB3aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpIHRh
dGlvbiB1bGxhbWNvcnBlciBzdXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9sb3IgaW4gaGVu
ZHJlcml0IGluIHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNlcXVhdCwgdmVsIGls
bHVtIGRvbG9yZSBldSBmZXVnaWF0IG51bGxhIGZhY2lsaXNpcyBhdCB2ZXJvIGVyb3MgZXQgYWNj
dW1zYW4gZXQgaXVzdG8gb2RpbyBkaWduaXNzaW0gcXVpIGJsYW5kaXQgcHJhZXNlbnQgbHVwdGF0
dW0genpyaWwgZGVsZW5pdCBhdWd1ZSBkdWlzIGRvbG9yZSB0ZSBmZXVnYWl0IG51bGxhIGZhY2ls
aXNpLgorICAgICAgICAgICAgICAgICAgICA8ZGl2PgorICAgICAgICAgICAgICAgICAgICA8Yj5T
aG91bGQgYXMgd2VsbC48L2I+IExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1
ZXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZGlhbSBub251bW15IG5pYmggZXVpc21vZCB0aW5jaWR1
bnQgdXQgbGFvcmVldCBkb2xvcmUgbWFnbmEgYWxpcXVhbSBlcmF0IHZvbHV0cGF0LiA8cD5VdCB3
aXNpIGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpIHRhdGlvbiB1bGxh
bWNvcnBlciBzdXNjaXBpdCBsb2JvcnRpcyBuaXNsIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBj
b25zZXF1YXQuIER1aXMgYXV0ZW0gdmVsIGV1bSBpcml1cmUgZG9sb3IgaW4gaGVuZHJlcml0IGlu
IHZ1bHB1dGF0ZSB2ZWxpdCBlc3NlIG1vbGVzdGllIGNvbnNlcXVhdCwgdmVsIGlsbHVtIGRvbG9y
ZSBldSBmZXVnaWF0IG51bGxhIGZhY2lsaXNpcyBhdCB2ZXJvIGVyb3MgZXQgYWNjdW1zYW4gZXQg
aXVzdG8gb2RpbyBkaWduaXNzaW0gcXVpIGJsYW5kaXQgcHJhZXNlbnQgbHVwdGF0dW0genpyaWwg
ZGVsZW5pdCBhdWd1ZSBkdWlzIGRvbG9yZSB0ZSBmZXVnYWl0IG51bGxhIGZhY2lsaXNpLgorICAg
ICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvcGVyY2VudC1hZGp1c3QtbGVu
Z3RoLWxpbmUtaGVpZ2h0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9u
ZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LWxlbmd0aC1saW5lLWhl
aWdodC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY4ZWFlYWExYjM2YzBkZThmZjFkMWYzZjkw
NDUwOWJjMWU2MDBhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lw
aG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LWxlbmd0aC1saW5l
LWhlaWdodC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgbGVuZ3RoIGxpbmUt
aGVpZ2h0IGFkanVzdG1lbnQgZm9yIHBlcmNlbnRhZ2UgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0
IHZhbHVlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29tcHV0ZWRM
aW5lSGVpZ2h0IGlzICcyNHB4JworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1z
aW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LWxlbmd0aC1saW5lLWhlaWdo
dC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9z
aXppbmcvcGVyY2VudC1hZGp1c3QtbGVuZ3RoLWxpbmUtaGVpZ2h0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzlmNDZiZWQyZmEzNGU1NTI3NTg0NDNjZjg0YmJhYjY1Y2UzZGY3YQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5n
L3BlcmNlbnQtYWRqdXN0LWxlbmd0aC1saW5lLWhlaWdodC5odG1sCkBAIC0wLDAgKzEsMzIgQEAK
KzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9InVzZXIt
c2NhbGFibGU9bm8sIHdpZHRoPTMyMCI+CisgICAgPHRpdGxlPiZsdDtyZGFyOi8vcHJvYmxlbS82
NjQ2NjI4Jmd0OyBUZXh0IEF1dG9zaXppbmc6IE92ZXJsYXBwaW5nIHRleHQgaW4gbWVzc2FnZTwv
dGl0bGU+CisgICAgPHN0eWxlPgorICAgIGJvZHkgeworICAgICAgICBmb250LXNpemU6IDE0cHg7
CisgICAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4OworICAgIH0KKyAgICBodG1sIHsKKyAgICAgICAg
LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxNTAlOworICAgIH0KKyAgICA8L3N0eWxlPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZCh0cnVlKTsKKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwIGlkPSJsb3JlbSI+VGhpcyB0ZXh0
IHNob3VsZCBoYXZlIGEgZGVjZW50IHNwYWNpbmcgYmV0d2VlbiB0aGUgbGluZXMuIExvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIENyYXMgYW50
ZSBvcmNpLCBwb3N1ZXJlIGF0IGFsaXF1YW0gZWdldCwgb3JuYXJlIHV0IHNhcGllbi4gUHJhZXNl
bnQgY29tbW9kbyB2b2x1dHBhdCBhdWN0b3IuIENsYXNzIGFwdGVudCB0YWNpdGkgc29jaW9zcXUg
YWQgbGl0b3JhIHRvcnF1ZW50IHBlciBjb251YmlhIG5vc3RyYSwgcGVyIGluY2VwdG9zIGhpbWVu
YWVvcy4gVml2YW11cyBpbnRlcmR1bSB0aW5jaWR1bnQgcHVsdmluYXIuIERvbmVjIG5lYyBsaWJl
cm8gZXJvcy4gTW9yYmkgZmFjaWxpc2lzIGxhY3VzIHF1aXMgbWkgbWF0dGlzIHF1aXMgcHJldGl1
bSB2ZWxpdCBmcmluZ2lsbGEuIEludGVnZXIgaXBzdW0gbWV0dXMsIHByZXRpdW0gZXQgdGluY2lk
dW50IGVnZXQsIGNvbW1vZG8gdmVsIG5pYmguIENyYXMgZmV1Z2lhdCBsb3JlbSBldCB2ZWxpdCBp
bnRlcmR1bSBldSBsdWN0dXMgZHVpIGdyYXZpZGEuIE51bGxhbSBuZWMgZ3JhdmlkYSBvcmNpLiBW
ZXN0aWJ1bHVtIHF1aXMgaW1wZXJkaWV0IG5pYmguIFZpdmFtdXMgdGluY2lkdW50IGVyYXQgYWMg
cmlzdXMgZWdlc3RhcyBtYXR0aXMuPC9wPgorICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24o
IlRlc3RzIGxlbmd0aCBsaW5lLWhlaWdodCBhZGp1c3RtZW50IGZvciBwZXJjZW50YWdlIC13ZWJr
aXQtdGV4dC1zaXplLWFkanVzdCB2YWx1ZXMuIik7CisgICAgdmFyIHAgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9yZW0iKTsKKyAgICBjb21wdXRlZExpbmVIZWlnaHQgPSB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShwKVsnbGluZS1oZWlnaHQnXTsKKyAgICBzaG91bGRCZSgiY29tcHV0ZWRM
aW5lSGVpZ2h0IiwgIicyNHB4JyIpOworICAgIHAucmVtb3ZlKCk7CisgICAgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3Iv
dGV4dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LW51bWJlci1saW5lLWhlaWdodC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3Np
emluZy9wZXJjZW50LWFkanVzdC1udW1iZXItbGluZS1oZWlnaHQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE5YmEzMWRlMDZiMmYxNTQ5Y2Q0OGNhMDgzZjdlZTYwOTlhMjllYTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0
b3NpemluZy9wZXJjZW50LWFkanVzdC1udW1iZXItbGluZS1oZWlnaHQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTAgQEAKK1Rlc3RzIG51bWJlciBsaW5lLWhlaWdodCBpcyBhZGp1c3RlZCB3aXRo
IHBlcmNlbnRhZ2UgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0IHZhbHVlcy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdGVkTGluZUhlaWdodCBpcyBleHBlY3RlZExp
bmVIZWlnaHQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3Rl
eHQtYXV0b3NpemluZy9wZXJjZW50LWFkanVzdC1udW1iZXItbGluZS1oZWlnaHQuaHRtbCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNl
bnQtYWRqdXN0LW51bWJlci1saW5lLWhlaWdodC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1N2NmNjBiZjQx
MGU1OGJjMzA3YjBlN2M2YmFjYmU4MDM1ZWRkZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pcGhvbmUtc2ltdWxhdG9yL3RleHQtYXV0b3NpemluZy9wZXJjZW50LWFk
anVzdC1udW1iZXItbGluZS1oZWlnaHQuaHRtbApAQCAtMCwwICsxLDM5IEBACis8aHRtbD4KKzxo
ZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ1c2VyLXNjYWxhYmxlPW5v
LCB3aWR0aD0zMjAiPgorICAgIDx0aXRsZT4mbHQ7cmRhcjovL3Byb2JsZW0vNjY0NjYyOCZndDsg
VGV4dCBBdXRvc2l6aW5nOiBPdmVybGFwcGluZyB0ZXh0IGluIG1lc3NhZ2U8L3RpdGxlPgorICAg
IDxzdHlsZT4KKyAgICAjZXhwZWN0ZWQgeworICAgICAgICBmb250LXNpemU6IDEwcHg7CisgICAg
ICAgIGxpbmUtaGVpZ2h0OiAxLjU7CisgICAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDog
MTAwJTsKKyAgICB9CisgICAgI3Rlc3RlZCB7CisgICAgICAgIGZvbnQtc2l6ZTogMjBweDsKKyAg
ICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKKyAgICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0
OiA1MCU7CisgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0Pgor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIuc2V0
VGV4dEF1dG9zaXppbmdFbmFibGVkKHRydWUpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPHAgaWQ9ImV4cGVjdGVkIj5UaGlzIHRleHQgc2hvdWxkIGhhdmUgYSBkZWNlbnQg
c3BhY2luZyBiZXR3ZWVuIHRoZSBsaW5lcy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNv
bnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gQ3JhcyBhbnRlIG9yY2ksIHBvc3VlcmUgYXQgYWxp
cXVhbSBlZ2V0LCBvcm5hcmUgdXQgc2FwaWVuLiBQcmFlc2VudCBjb21tb2RvIHZvbHV0cGF0IGF1
Y3Rvci4gQ2xhc3MgYXB0ZW50IHRhY2l0aSBzb2Npb3NxdSBhZCBsaXRvcmEgdG9ycXVlbnQgcGVy
IGNvbnViaWEgbm9zdHJhLCBwZXIgaW5jZXB0b3MgaGltZW5hZW9zLiBWaXZhbXVzIGludGVyZHVt
IHRpbmNpZHVudCBwdWx2aW5hci4gRG9uZWMgbmVjIGxpYmVybyBlcm9zLiBNb3JiaSBmYWNpbGlz
aXMgbGFjdXMgcXVpcyBtaSBtYXR0aXMgcXVpcyBwcmV0aXVtIHZlbGl0IGZyaW5naWxsYS4gSW50
ZWdlciBpcHN1bSBtZXR1cywgcHJldGl1bSBldCB0aW5jaWR1bnQgZWdldCwgY29tbW9kbyB2ZWwg
bmliaC4gQ3JhcyBmZXVnaWF0IGxvcmVtIGV0IHZlbGl0IGludGVyZHVtIGV1IGx1Y3R1cyBkdWkg
Z3JhdmlkYS4gTnVsbGFtIG5lYyBncmF2aWRhIG9yY2kuIFZlc3RpYnVsdW0gcXVpcyBpbXBlcmRp
ZXQgbmliaC4gVml2YW11cyB0aW5jaWR1bnQgZXJhdCBhYyByaXN1cyBlZ2VzdGFzIG1hdHRpcy48
L3A+CisgICAgPHAgaWQ9InRlc3RlZCI+VGhpcyB0ZXh0IHNob3VsZCBoYXZlIGEgZGVjZW50IHNw
YWNpbmcgYmV0d2VlbiB0aGUgbGluZXMuIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25z
ZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIENyYXMgYW50ZSBvcmNpLCBwb3N1ZXJlIGF0IGFsaXF1
YW0gZWdldCwgb3JuYXJlIHV0IHNhcGllbi4gUHJhZXNlbnQgY29tbW9kbyB2b2x1dHBhdCBhdWN0
b3IuIENsYXNzIGFwdGVudCB0YWNpdGkgc29jaW9zcXUgYWQgbGl0b3JhIHRvcnF1ZW50IHBlciBj
b251YmlhIG5vc3RyYSwgcGVyIGluY2VwdG9zIGhpbWVuYWVvcy4gVml2YW11cyBpbnRlcmR1bSB0
aW5jaWR1bnQgcHVsdmluYXIuIERvbmVjIG5lYyBsaWJlcm8gZXJvcy4gTW9yYmkgZmFjaWxpc2lz
IGxhY3VzIHF1aXMgbWkgbWF0dGlzIHF1aXMgcHJldGl1bSB2ZWxpdCBmcmluZ2lsbGEuIEludGVn
ZXIgaXBzdW0gbWV0dXMsIHByZXRpdW0gZXQgdGluY2lkdW50IGVnZXQsIGNvbW1vZG8gdmVsIG5p
YmguIENyYXMgZmV1Z2lhdCBsb3JlbSBldCB2ZWxpdCBpbnRlcmR1bSBldSBsdWN0dXMgZHVpIGdy
YXZpZGEuIE51bGxhbSBuZWMgZ3JhdmlkYSBvcmNpLiBWZXN0aWJ1bHVtIHF1aXMgaW1wZXJkaWV0
IG5pYmguIFZpdmFtdXMgdGluY2lkdW50IGVyYXQgYWMgcmlzdXMgZWdlc3RhcyBtYXR0aXMuPC9w
PgorICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRlc3RzIG51bWJlciBsaW5lLWhlaWdo
dCBpcyBhZGp1c3RlZCB3aXRoIHBlcmNlbnRhZ2UgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0IHZh
bHVlcy4iKTsKKyAgICB2YXIgZXhwZWN0ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhw
ZWN0ZWQiKTsKKyAgICB2YXIgdGVzdGVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Rl
ZCIpOworICAgIGV4cGVjdGVkTGluZUhlaWdodCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGV4
cGVjdGVkKVsnbGluZS1oZWlnaHQnXTsKKyAgICB0ZXN0ZWRMaW5lSGVpZ2h0ID0gd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUodGVzdGVkKVsnbGluZS1oZWlnaHQnXTsKKyAgICBzaG91bGRCZSgidGVz
dGVkTGluZUhlaWdodCIsICJleHBlY3RlZExpbmVIZWlnaHQiKTsKKyAgICBleHBlY3RlZC5yZW1v
dmUoKTsKKyAgICB0ZXN0ZWQucmVtb3ZlKCk7CisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6
aW5nL3BlcmNlbnQtYWRqdXN0LXBlcmNlbnQtbGluZS1oZWlnaHQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvcGVyY2Vu
dC1hZGp1c3QtcGVyY2VudC1saW5lLWhlaWdodC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDky
Nzc5ZTRjZmExZjVhZWZjZmQ4YjE4NzUwMjIyODg2OTk3NDk4MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3Bl
cmNlbnQtYWRqdXN0LXBlcmNlbnQtbGluZS1oZWlnaHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3RzIHBlcmNlbnRhZ2UgbGluZS1oZWlnaHQgaXMgbm90IGFkanVzdGVkIHdpdGgg
cGVyY2VudGFnZSAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3QgdmFsdWVzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0ZWRMaW5lSGVpZ2h0IGlzIGV4cGVjdGVkTGlu
ZUhlaWdodAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4
dC1hdXRvc2l6aW5nL3BlcmNlbnQtYWRqdXN0LXBlcmNlbnQtbGluZS1oZWlnaHQuaHRtbCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lwaG9uZS1zaW11bGF0b3IvdGV4dC1hdXRvc2l6aW5nL3BlcmNl
bnQtYWRqdXN0LXBlcmNlbnQtbGluZS1oZWlnaHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzE2MmIyYWM2
NjkyMWVjNDA0NzZkYjE3Y2Y3OGUyYzAyMmI5NzAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaXBob25lLXNpbXVsYXRvci90ZXh0LWF1dG9zaXppbmcvcGVyY2VudC1h
ZGp1c3QtcGVyY2VudC1saW5lLWhlaWdodC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgor
PGhlYWQ+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9InVzZXItc2NhbGFibGU9
bm8sIHdpZHRoPTMyMCI+CisgICAgPHRpdGxlPiZsdDtyZGFyOi8vcHJvYmxlbS8xMjYwNzg5OCZn
dDsgaW5jb3JyZWN0IGJlaGF2aW9yIG9mIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdCBpbiBVSVdl
YlZpZXcgb24gaU9TNjwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICNleHBlY3RlZCB7CisgICAg
ICAgIGZvbnQtc2l6ZTogMTBweDsKKyAgICAgICAgbGluZS1oZWlnaHQ6IDE1MCU7CisgICAgICAg
IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKKyAgICB9CisgICAgI3Rlc3RlZCB7Cisg
ICAgICAgIGZvbnQtc2l6ZTogMjBweDsKKyAgICAgICAgbGluZS1oZWlnaHQ6IDE1MCU7CisgICAg
ICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogNTAlOworICAgIH0KKyAgICA8L3N0eWxlPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLnNldFRleHRBdXRvc2l6aW5nRW5hYmxlZCh0cnVlKTsK
KyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxwIGlkPSJleHBlY3RlZCI+VGhp
cyB0ZXh0IHNob3VsZCBoYXZlIGEgZGVjZW50IHNwYWNpbmcgYmV0d2VlbiB0aGUgbGluZXMuIExv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIENy
YXMgYW50ZSBvcmNpLCBwb3N1ZXJlIGF0IGFsaXF1YW0gZWdldCwgb3JuYXJlIHV0IHNhcGllbi4g
UHJhZXNlbnQgY29tbW9kbyB2b2x1dHBhdCBhdWN0b3IuIENsYXNzIGFwdGVudCB0YWNpdGkgc29j
aW9zcXUgYWQgbGl0b3JhIHRvcnF1ZW50IHBlciBjb251YmlhIG5vc3RyYSwgcGVyIGluY2VwdG9z
IGhpbWVuYWVvcy4gVml2YW11cyBpbnRlcmR1bSB0aW5jaWR1bnQgcHVsdmluYXIuIERvbmVjIG5l
YyBsaWJlcm8gZXJvcy4gTW9yYmkgZmFjaWxpc2lzIGxhY3VzIHF1aXMgbWkgbWF0dGlzIHF1aXMg
cHJldGl1bSB2ZWxpdCBmcmluZ2lsbGEuIEludGVnZXIgaXBzdW0gbWV0dXMsIHByZXRpdW0gZXQg
dGluY2lkdW50IGVnZXQsIGNvbW1vZG8gdmVsIG5pYmguIENyYXMgZmV1Z2lhdCBsb3JlbSBldCB2
ZWxpdCBpbnRlcmR1bSBldSBsdWN0dXMgZHVpIGdyYXZpZGEuIE51bGxhbSBuZWMgZ3JhdmlkYSBv
cmNpLiBWZXN0aWJ1bHVtIHF1aXMgaW1wZXJkaWV0IG5pYmguIFZpdmFtdXMgdGluY2lkdW50IGVy
YXQgYWMgcmlzdXMgZWdlc3RhcyBtYXR0aXMuPC9wPgorICAgIDxwIGlkPSJ0ZXN0ZWQiPlRoaXMg
dGV4dCBzaG91bGQgaGF2ZSBhIGRlY2VudCBzcGFjaW5nIGJldHdlZW4gdGhlIGxpbmVzLiBMb3Jl
bSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBDcmFz
IGFudGUgb3JjaSwgcG9zdWVyZSBhdCBhbGlxdWFtIGVnZXQsIG9ybmFyZSB1dCBzYXBpZW4uIFBy
YWVzZW50IGNvbW1vZG8gdm9sdXRwYXQgYXVjdG9yLiBDbGFzcyBhcHRlbnQgdGFjaXRpIHNvY2lv
c3F1IGFkIGxpdG9yYSB0b3JxdWVudCBwZXIgY29udWJpYSBub3N0cmEsIHBlciBpbmNlcHRvcyBo
aW1lbmFlb3MuIFZpdmFtdXMgaW50ZXJkdW0gdGluY2lkdW50IHB1bHZpbmFyLiBEb25lYyBuZWMg
bGliZXJvIGVyb3MuIE1vcmJpIGZhY2lsaXNpcyBsYWN1cyBxdWlzIG1pIG1hdHRpcyBxdWlzIHBy
ZXRpdW0gdmVsaXQgZnJpbmdpbGxhLiBJbnRlZ2VyIGlwc3VtIG1ldHVzLCBwcmV0aXVtIGV0IHRp
bmNpZHVudCBlZ2V0LCBjb21tb2RvIHZlbCBuaWJoLiBDcmFzIGZldWdpYXQgbG9yZW0gZXQgdmVs
aXQgaW50ZXJkdW0gZXUgbHVjdHVzIGR1aSBncmF2aWRhLiBOdWxsYW0gbmVjIGdyYXZpZGEgb3Jj
aS4gVmVzdGlidWx1bSBxdWlzIGltcGVyZGlldCBuaWJoLiBWaXZhbXVzIHRpbmNpZHVudCBlcmF0
IGFjIHJpc3VzIGVnZXN0YXMgbWF0dGlzLjwvcD4KKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0
aW9uKCJUZXN0cyBwZXJjZW50YWdlIGxpbmUtaGVpZ2h0IGlzIG5vdCBhZGp1c3RlZCB3aXRoIHBl
cmNlbnRhZ2UgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0IHZhbHVlcy4iKTsKKyAgICB2YXIgZXhw
ZWN0ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhwZWN0ZWQiKTsKKyAgICB2YXIgdGVz
dGVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RlZCIpOworICAgIGV4cGVjdGVkTGlu
ZUhlaWdodCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGV4cGVjdGVkKVsnbGluZS1oZWlnaHQn
XTsKKyAgICB0ZXN0ZWRMaW5lSGVpZ2h0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdGVk
KVsnbGluZS1oZWlnaHQnXTsKKyAgICBzaG91bGRCZSgidGVzdGVkTGluZUhlaWdodCIsICJleHBl
Y3RlZExpbmVIZWlnaHQiKTsKKyAgICBleHBlY3RlZC5yZW1vdmUoKTsKKyAgICB0ZXN0ZWQucmVt
b3ZlKCk7CisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICA8L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="233295"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="233306"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>