<?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>78381</bug_id>
          
          <creation_ts>2012-02-10 13:21:26 -0800</creation_ts>
          <short_desc>Attribute styles should be created lazily.</short_desc>
          <delta_ts>2012-02-11 11:35:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554340</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-10 13:21:26 -0800</bug_when>
    <thetext>In order to make the matched declaration cache work for elements with presentation attributes again, we need the attributeStyle() to be immutable. Lazy initialization is one way to achieve this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554342</commentid>
    <comment_count>1</comment_count>
      <attachid>126571</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-10 13:23:36 -0800</bug_when>
    <thetext>Created attachment 126571
WIP for EWS and the overly curious</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554343</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-10 13:26:24 -0800</bug_when>
    <thetext>Attachment 126571 did not pass style-queue:

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

Last 3072 characters of output:
ace/operators] [4]
Source/WebCore/html/HTMLHRElement.cpp:101:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLElement.cpp:216:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLElement.cpp:217:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLElement.cpp:218:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLElement.cpp:219:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLParagraphElement.h:38:  The parameter name &quot;style&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/HTMLIFrameElement.h:39:  The parameter name &quot;style&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/HTMLBodyElement.cpp:89:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLBodyElement.cpp:90:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLBodyElement.cpp:91:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLBodyElement.cpp:92:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLBodyElement.cpp:93:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLBodyElement.cpp:94:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLBodyElement.cpp:95:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLTableElement.cpp:278:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Source/WebCore/html/HTMLIFrameElement.cpp:60:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 19 in 65 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554383</commentid>
    <comment_count>3</comment_count>
      <attachid>126571</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-10 14:20:02 -0800</bug_when>
    <thetext>Comment on attachment 126571
WIP for EWS and the overly curious

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

&gt; Source/WebCore/html/HTMLEmbedElement.cpp:85
&gt; +void HTMLEmbedElement::collectStyleForAttribute(Attribute* attr, StylePropertySet* style)
&gt; +{
&gt; +    if (attr-&gt;name() == hiddenAttr) {
&gt; +        if (equalIgnoringCase(attr-&gt;value(), &quot;yes&quot;) || equalIgnoringCase(attr-&gt;value(), &quot;true&quot;)) {
&gt; +            addCSSLengthToStyle(style, CSSPropertyWidth, &quot;0&quot;); // FIXME: Pass as integer.
&gt; +            addCSSLengthToStyle(style, CSSPropertyHeight, &quot;0&quot;); // FIXME: Pass as integer.
&gt; +        }
&gt; +    } else
&gt; +        HTMLPlugInImageElement::parseAttribute(attr);

This is calling collectStyleForAttribute-&gt; parseAttribute (as picked up by Darin watching over the shoulder while I was going through the patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554460</commentid>
    <comment_count>4</comment_count>
      <attachid>126571</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-10 15:49:40 -0800</bug_when>
    <thetext>Comment on attachment 126571
WIP for EWS and the overly curious

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

New failing tests:
plugins/mouse-click-plugin-clears-selection.html
plugins/netscape-plugin-setwindow-size.html
plugins/netscape-plugin-setwindow-size-2.html
svg/W3C-I18N/g-dirRTL-ubOverride.svg
http/tests/inspector/inspect-element.html
css2.1/20110323/abspos-containing-block-initial-004b.htm
plugins/application-plugin-plugins-disabled.html
fast/backgrounds/animated-svg-as-mask.html
plugins/object-embed-plugin-scripting.html
svg/W3C-SVG-1.1/animate-elem-02-t.svg
css2.1/20110323/abspos-containing-block-initial-004d.htm
svg/W3C-I18N/g-dirLTR-ubNone.svg
svg/W3C-SVG-1.1/animate-elem-03-t.svg
svg/W3C-SVG-1.1/animate-elem-04-t.svg
svg/W3C-SVG-1.1/animate-elem-07-t.svg
fast/text/whitespace/pre-wrap-overflow-selection.html
plugins/netscape-dom-access.html
svg/W3C-I18N/g-dirLTR-ubOverride.svg
accessibility/aria-describedby-on-input.html
svg/W3C-I18N/text-anchor-dirLTR-anchorEnd.svg
fast/text/lang-mapped-to-webkit-locale.xhtml
svg/W3C-SVG-1.1/animate-elem-05-t.svg
platform/chromium-linux/svg/text/text-with-geometric-precision.svg
svg/W3C-SVG-1.1/animate-elem-06-t.svg
svg/W3C-I18N/g-dirRTL-ubNone.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554607</commentid>
    <comment_count>5</comment_count>
      <attachid>126627</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-11 04:08:21 -0800</bug_when>
    <thetext>Created attachment 126627
Perplexed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554608</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-11 04:11:08 -0800</bug_when>
    <thetext>Attachment 126627 did not pass style-queue:

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

Source/WebCore/html/HTMLElement.cpp:215:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLElement.cpp:216:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLElement.cpp:217:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLElement.cpp:218:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLElement.cpp:219:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Source/WebCore/html/HTMLParagraphElement.h:38:  The parameter name &quot;style&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/HTMLIFrameElement.h:39:  The parameter name &quot;style&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/html/HTMLTableElement.cpp:278:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Source/WebCore/html/HTMLIFrameElement.cpp:60:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 9 in 66 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554609</commentid>
    <comment_count>7</comment_count>
      <attachid>126628</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-11 04:27:50 -0800</bug_when>
    <thetext>Created attachment 126628
Porpoise patch

Same patch with stylebot fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554642</commentid>
    <comment_count>8</comment_count>
      <attachid>126628</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-11 10:20:14 -0800</bug_when>
    <thetext>Comment on attachment 126628
Porpoise patch

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

r=me

Clearly there would be stuff to tweak here but it is good to get this in first.

&gt; Source/WebCore/dom/ElementAttributeData.cpp:56
&gt; +StylePropertySet* ElementAttributeData::ensureNewAttributeStyle(StyledElement* element)

&quot;ensureNew&quot; sounds bit strange though I don&apos;t have good suggestions.

&gt; Source/WebCore/dom/StyledElement.h:72
&gt; +    static void addCSSLengthToStyle(StylePropertySet*, int propertyID, const String&amp; value);
&gt; +    static void addCSSColorToStyle(StylePropertySet*, int propertyID, const String&amp; color);

Since these are HTML specific maybe they could move down to HTMLElement

&gt; Source/WebCore/html/HTMLTableColElement.cpp:71
&gt; +        setNeedsAttributeStyleUpdate();
&gt;          if (!attr-&gt;value().isEmpty()) {
&gt; -            addCSSLength(CSSPropertyWidth, attr-&gt;value());
&gt;              if (renderer() &amp;&amp; renderer()-&gt;isTableCol()) {
&gt;                  RenderTableCol* col = toRenderTableCol(renderer());
&gt;                  int newWidth = width().toInt();
&gt;                  if (newWidth != col-&gt;width())
&gt;                      col-&gt;setNeedsLayoutAndPrefWidthsRecalc();

I suppose width() still gets calculated here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554655</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-11 11:30:03 -0800</bug_when>
    <thetext>Committed r107484: &lt;http://trac.webkit.org/changeset/107484&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554657</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-11 11:35:44 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 126628 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126628&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ElementAttributeData.cpp:56
&gt; &gt; +StylePropertySet* ElementAttributeData::ensureNewAttributeStyle(StyledElement* element)
&gt; 
&gt; &quot;ensureNew&quot; sounds bit strange though I don&apos;t have good suggestions.

Used a setter instead as discussed.

&gt; 
&gt; &gt; Source/WebCore/dom/StyledElement.h:72
&gt; &gt; +    static void addCSSLengthToStyle(StylePropertySet*, int propertyID, const String&amp; value);
&gt; &gt; +    static void addCSSColorToStyle(StylePropertySet*, int propertyID, const String&amp; color);
&gt; 
&gt; Since these are HTML specific maybe they could move down to HTMLElement

Done.

&gt; &gt; Source/WebCore/html/HTMLTableColElement.cpp:71
&gt; &gt; +        setNeedsAttributeStyleUpdate();
&gt; &gt;          if (!attr-&gt;value().isEmpty()) {
&gt; &gt; -            addCSSLength(CSSPropertyWidth, attr-&gt;value());
&gt; &gt;              if (renderer() &amp;&amp; renderer()-&gt;isTableCol()) {
&gt; &gt;                  RenderTableCol* col = toRenderTableCol(renderer());
&gt; &gt;                  int newWidth = width().toInt();
&gt; &gt;                  if (newWidth != col-&gt;width())
&gt; &gt;                      col-&gt;setNeedsLayoutAndPrefWidthsRecalc();
&gt; 
&gt; I suppose width() still gets calculated here?

width() simply does getAttribute(widthAttr). We should use attr-&gt;value() instead for that here, but that&apos;s for another patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126571</attachid>
            <date>2012-02-10 13:23:36 -0800</date>
            <delta_ts>2012-02-11 04:08:21 -0800</delta_ts>
            <desc>WIP for EWS and the overly curious</desc>
            <filename>WIP-78381.diff</filename>
            <type>text/plain</type>
            <size>120071</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA1NTY4ODM1Li40Y2Yy
NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0xMDAyLDcg
KzEwMDIsNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMoTWF0Y2hSZXN1
bHQmIHJlc3VsdCkKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlcy5maXJzdEF1dGhv
clJ1bGUgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRo
b3JSdWxlID0gcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZTsKICAgICAgICAgICAgICAgICBh
ZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0cmlidXRlU3R5bGUpOwotICAgICAgICAgICAgICAgIHJl
c3VsdC5pc0NhY2hlYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCmluZGV4IGNlYTYyZjMu
LmFlNzZkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRl
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNw
cApAQCAtNjAsNCArNjAsOSBAQCBTdHlsZVByb3BlcnR5U2V0KiBFbGVtZW50QXR0cmlidXRlRGF0
YTo6ZW5zdXJlQXR0cmlidXRlU3R5bGUoU3R5bGVkRWxlbWVudCogZWxlbQogICAgIHJldHVybiBt
X2F0dHJpYnV0ZVN0eWxlLmdldCgpOwogfQogCit2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpk
ZXN0cm95QXR0cmlidXRlU3R5bGUoKQoreworICAgIG1fYXR0cmlidXRlU3R5bGUgPSAwOworfQor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCmluZGV4IDQwODA2
NTkuLjk5MWI3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmli
dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5o
CkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIFN0eWxlUHJvcGVydHlTZXQqIGF0dHJp
YnV0ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVTdHlsZS5nZXQoKTsgfQogICAg
IFN0eWxlUHJvcGVydHlTZXQqIGVuc3VyZUF0dHJpYnV0ZVN0eWxlKFN0eWxlZEVsZW1lbnQqKTsK
KyAgICB2b2lkIGRlc3Ryb3lBdHRyaWJ1dGVTdHlsZSgpOwogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBOYW1lZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBiMTk4MWQ3Li5lMWJiZWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTMwMCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHNoZWV0TG9hZGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdGFydExv
YWRpbmdEeW5hbWljU2hlZXQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICBib29s
IGF0dHJpYnV0ZVN0eWxlRGlydHkoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEF0dHJpYnV0ZVN0
eWxlRGlydHlGbGFnKTsgfQogICAgIGJvb2wgaGFzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSGFzTmFtZUZsYWcpOyB9CiAgICAgYm9vbCBoYXNJRCgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSGFzSURGbGFnKTsgfQogICAgIGJvb2wgaGFzQ2xhc3MoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKEhhc0NsYXNzRmxhZyk7IH0KQEAgLTMxNSw2ICszMTYsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKENoaWxkTmVl
ZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBn
ZXRGbGFnKElzTGlua0ZsYWcpOyB9CiAKKyAgICB2b2lkIHNldEF0dHJpYnV0ZVN0eWxlRGlydHko
KSB7IHNldEZsYWcoQXR0cmlidXRlU3R5bGVEaXJ0eUZsYWcpOyB9CisgICAgdm9pZCBjbGVhckF0
dHJpYnV0ZVN0eWxlRGlydHkoKSB7IGNsZWFyRmxhZyhBdHRyaWJ1dGVTdHlsZURpcnR5RmxhZyk7
IH0KKwogICAgIHZvaWQgc2V0SGFzTmFtZShib29sIGYpIHsgc2V0RmxhZyhmLCBIYXNOYW1lRmxh
Zyk7IH0KICAgICB2b2lkIHNldEhhc0lEKGJvb2wgZikgeyBzZXRGbGFnKGYsIEhhc0lERmxhZyk7
IH0KICAgICB2b2lkIHNldEhhc0NsYXNzKGJvb2wgZikgeyBzZXRGbGFnKGYsIEhhc0NsYXNzRmxh
Zyk7IH0KQEAgLTY3Niw2ICs2ODAsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIEhhc05hbWVGbGFn
ID0gMSA8PCAzMCwKIAorICAgICAgICBBdHRyaWJ1dGVTdHlsZURpcnR5RmxhZyA9IDEgPDwgMzEs
CisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5n
Q2hpbGRyZW5GaW5pc2hlZEZsYWcgfCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnIHwgQXJlU1ZH
QXR0cmlidXRlc1ZhbGlkRmxhZwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNw
cAppbmRleCA1MjYwNTI2Li5lZjkwZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwCkBAIC0xMDUsNTcgKzEwNSw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0KIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjpyZW1v
dmVDU1NQcm9wZXJ0aWVzKGludCBpZDEsIGludCBpZDIsIGludCBpZDMsIGludCBpZDQsIGludCBp
ZDUsIGludCBpZDYsIGludCBpZDcsIGludCBpZDgpCi17Ci0gICAgU3R5bGVQcm9wZXJ0eVNldCog
c3R5bGUgPSBhdHRyaWJ1dGVTdHlsZSgpOwotICAgIGlmICghc3R5bGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEFTU0VSVChpZDEgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKLSAgICBzdHlsZS0+
cmVtb3ZlUHJvcGVydHkoaWQxKTsKLQotICAgIGlmIChpZDIgPT0gQ1NTUHJvcGVydHlJbnZhbGlk
KQotICAgICAgICByZXR1cm47Ci0gICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KGlkMik7Ci0gICAg
aWYgKGlkMyA9PSBDU1NQcm9wZXJ0eUludmFsaWQpCi0gICAgICAgIHJldHVybjsKLSAgICBzdHls
ZS0+cmVtb3ZlUHJvcGVydHkoaWQzKTsKLSAgICBpZiAoaWQ0ID09IENTU1Byb3BlcnR5SW52YWxp
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShpZDQpOwotICAg
IGlmIChpZDUgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKQotICAgICAgICByZXR1cm47Ci0gICAgc3R5
bGUtPnJlbW92ZVByb3BlcnR5KGlkNSk7Ci0gICAgaWYgKGlkNiA9PSBDU1NQcm9wZXJ0eUludmFs
aWQpCi0gICAgICAgIHJldHVybjsKLSAgICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoaWQ2KTsKLSAg
ICBpZiAoaWQ3ID09IENTU1Byb3BlcnR5SW52YWxpZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHN0
eWxlLT5yZW1vdmVQcm9wZXJ0eShpZDcpOwotICAgIGlmIChpZDggPT0gQ1NTUHJvcGVydHlJbnZh
bGlkKQotICAgICAgICByZXR1cm47Ci0gICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KGlkOCk7Ci19
Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJp
bmcgJnZhbHVlKQotewotICAgIGlmICghZW5zdXJlQXR0cmlidXRlU3R5bGUoKS0+c2V0UHJvcGVy
dHkoaWQsIHZhbHVlKSkKLSAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoaWQpOwotfQotCi12b2lk
IFN0eWxlZEVsZW1lbnQ6OmFkZENTU1Byb3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRp
ZmllcikKLXsKLSAgICBlbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eShwcm9wZXJ0eUlELCBkb2N1bWVudCgpLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSWRlbnRp
ZmllclZhbHVlKGlkZW50aWZpZXIpKSk7Ci0gICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotfQot
Ci12b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0ltYWdlUHJvcGVydHkoaW50IGlkLCBjb25zdCBT
dHJpbmcmIHVybCkKLXsKLSAgICBlbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eShpZCwgQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKHVybCkpKTsKLSAgICBzZXROZWVk
c1N0eWxlUmVjYWxjKCk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTTGVuZ3RoKGlu
dCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTTGVu
Z3RoVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgaW50IHByb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyAmdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5v
dCBzcGluIHVwIHRoZSBDU1MgcGFyc2VyLCBidXQgc2hvdWxkIGluc3RlYWQganVzdCBmaWd1cmUg
b3V0IHRoZSBjb3JyZWN0CiAgICAgLy8gbGVuZ3RoIHVuaXQgYW5kIG1ha2UgdGhlIGFwcHJvcHJp
YXRlIHBhcnNlZCB2YWx1ZS4KQEAgLTE4MSwxMiArMTMxLDEyIEBAIHZvaWQgU3R5bGVkRWxlbWVu
dDo6YWRkQ1NTTGVuZ3RoKGludCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChsICE9IHYtPmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShpZCwgdi0+c3Vic3RyaW5nKDAsIGwpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShwcm9wZXJ0eUlELCB2LT5zdWJzdHJpbmcoMCwgbCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgYWRkQ1NTUHJvcGVydHkoaWQsIHZhbHVlKTsKKyAg
ICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUpOwogfQogCiBzdGF0aWMgU3Ry
aW5nIHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb25zdCBTdHJpbmcmIGNv
bG9yU3RyaW5nKQpAQCAtMjQyLDMwICsxOTIsMjYgQEAgc3RhdGljIFN0cmluZyBwYXJzZUNvbG9y
U3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykKIH0K
IAogLy8gQ29sb3IgcGFyc2luZyB0aGF0IG1hdGNoZXMgSFRNTCdzICJydWxlcyBmb3IgcGFyc2lu
ZyBhIGxlZ2FjeSBjb2xvciB2YWx1ZSIKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTQ29sb3Io
aW50IGlkLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQordm9pZCBTdHlsZWRFbGVtZW50
OjphZGRDU1NDb2xvclRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIGludCBwcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQogewogICAgIC8vIEFuIGVtcHR5IHN0
cmluZyBkb2Vzbid0IGFwcGx5IGEgY29sb3IuIChPbmUgY29udGFpbmluZyBvbmx5IHdoaXRlc3Bh
Y2UgZG9lcywgd2hpY2ggaXMgd2h5IHRoaXMgY2hlY2sgb2NjdXJzIGJlZm9yZSBzdHJpcHBpbmcu
KQotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVtb3ZlQ1NT
UHJvcGVydHkoaWQpOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICB9CiAKICAgICBTdHJpbmcgY29sb3JTdHJpbmcgPSBhdHRyaWJ1dGVWYWx1
ZS5zdHJpcFdoaXRlU3BhY2UoKTsKIAogICAgIC8vICJ0cmFuc3BhcmVudCIgZG9lc24ndCBhcHBs
eSBhIGNvbG9yIGVpdGhlci4KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29sb3JTdHJpbmcs
ICJ0cmFuc3BhcmVudCIpKSB7Ci0gICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KGlkKTsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29sb3JTdHJpbmcsICJ0cmFuc3BhcmVudCIpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG5hbWVkIENTUyBj
b2xvciBvciBhIDMvNi1kaWdpdCBoZXggY29sb3IsIHVzZSB0aGF0LgogICAgIENvbG9yIHBhcnNl
ZENvbG9yKGNvbG9yU3RyaW5nKTsKICAgICBpZiAocGFyc2VkQ29sb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGFkZENTU1Byb3BlcnR5KGlkLCBjb2xvclN0cmluZyk7CisgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjb2xvclN0cmluZyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhZGRDU1NQcm9wZXJ0eShpZCwgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxl
Z2FjeVJ1bGVzKGNvbG9yU3RyaW5nKSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5
SUQsIHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb2xvclN0cmluZykpOwog
fQogCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKGNvbnN0
IEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCkBAIC0yOTMsNCArMjM5LDE2IEBAIHZvaWQgU3R5bGVk
RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1
cmxzKSBjb25zdAogICAgICAgICBpbmxpbmVTdHlsZS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMo
dXJscyk7CiB9CiAKK3ZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQor
eworICAgIEFTU0VSVChhdHRyaWJ1dGVNYXAoKSk7CisgICAgYXR0cmlidXRlRGF0YSgpLT5kZXN0
cm95QXR0cmlidXRlU3R5bGUoKTsKKyAgICBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSA9IGVuc3Vy
ZUF0dHJpYnV0ZURhdGFXaXRob3V0VXBkYXRlKCktPmVuc3VyZUF0dHJpYnV0ZVN0eWxlKHRoaXMp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudCgpOyArK2kpIHsK
KyAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVtKGkpOworICAgICAg
ICBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0cmlidXRlLCBzdHlsZSk7CisgICAgfQorICAg
IGNsZWFyQXR0cmlidXRlU3R5bGVEaXJ0eSgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuaAppbmRleCAyYTZkMzkyLi5hZTY4Yzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVt
ZW50LmgKQEAgLTM2LDE0ICszNiw2IEBAIGNsYXNzIFN0eWxlZEVsZW1lbnQgOiBwdWJsaWMgRWxl
bWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3R5bGVkRWxlbWVudCgpOwogCi0gICAgdm9p
ZCBhZGRDU1NMZW5ndGgoaW50IGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIGFk
ZENTU1Byb3BlcnR5KGludCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCBhZGRD
U1NQcm9wZXJ0eShpbnQgaWQsIGludCB2YWx1ZSk7Ci0gICAgdm9pZCBhZGRDU1NJbWFnZVByb3Bl
cnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBhZGRDU1ND
b2xvcihpbnQgaWQsIGNvbnN0IFN0cmluZyYgY29sb3IpOwotICAgIHZvaWQgcmVtb3ZlQ1NTUHJv
cGVydGllcyhpbnQgaWQxLCBpbnQgaWQyID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQzID0g
Q1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ0ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ1
ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ2ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQg
aWQ3ID0gQ1NTUHJvcGVydHlJbnZhbGlkLCBpbnQgaWQ4ID0gQ1NTUHJvcGVydHlJbnZhbGlkKTsK
LSAgICB2b2lkIHJlbW92ZUNTU1Byb3BlcnR5KGludCBpZCkgeyByZW1vdmVDU1NQcm9wZXJ0aWVz
KGlkKTsgfQotCiAgICAgdmlydHVhbCBTdHlsZVByb3BlcnR5U2V0KiBhZGRpdGlvbmFsQXR0cmli
dXRlU3R5bGUoKSB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVBdHRyaWJ1
dGUoKTsKIApAQCAtNTEsOCArNDMsNyBAQCBwdWJsaWM6CiAgICAgU3R5bGVQcm9wZXJ0eVNldCog
ZW5zdXJlSW5saW5lU3R5bGVEZWNsKCkgeyByZXR1cm4gZW5zdXJlQXR0cmlidXRlRGF0YVdpdGhv
dXRVcGRhdGUoKS0+ZW5zdXJlSW5saW5lU3R5bGVEZWNsKHRoaXMpOyB9CiAgICAgdmlydHVhbCBD
U1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIE9WRVJSSURFIHsgcmV0dXJuIGVuc3VyZUlubGlu
ZVN0eWxlRGVjbCgpLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7IH0KIAotICAgIFN0eWxl
UHJvcGVydHlTZXQqIGF0dHJpYnV0ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gYXR0cmlidXRlRGF0
YSgpID8gYXR0cmlidXRlRGF0YSgpLT5hdHRyaWJ1dGVTdHlsZSgpIDogMDsgfQotICAgIFN0eWxl
UHJvcGVydHlTZXQqIGVuc3VyZUF0dHJpYnV0ZVN0eWxlKCkgeyByZXR1cm4gZW5zdXJlQXR0cmli
dXRlRGF0YVdpdGhvdXRVcGRhdGUoKS0+ZW5zdXJlQXR0cmlidXRlU3R5bGUodGhpcyk7IH0KKyAg
ICBTdHlsZVByb3BlcnR5U2V0KiBhdHRyaWJ1dGVTdHlsZSgpOwogCiAgICAgY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgY2xhc3NOYW1lcygpIGNvbnN0OwogCkBAIC02MiwxMCArNTMsMTQgQEAgcHJv
dGVjdGVkOgogICAgIHsKICAgICB9CiAKKyAgICB2b2lkIHNldE5lZWRzQXR0cmlidXRlU3R5bGVV
cGRhdGUoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3QgRWxlbWVu
dCopOwogCisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1
dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKICAgICAvLyBj
bGFzc0F0dHJpYnV0ZUNoYW5nZWQoKSBleGlzdHMgdG8gc2hhcmUgY29kZSBiZXR3ZWVuCkBAIC03
Myw5ICs2OCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gc3ZnQXR0cmlidXRlQ2hhbmdlZCAoY2Fs
bGVkIHdoZW4gZWxlbWVudC5jbGFzc05hbWUuYmFzZVZhbHVlIGlzIHNldCkKICAgICB2b2lkIGNs
YXNzQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKTsK
IAorICAgIHN0YXRpYyB2b2lkIGFkZENTU0xlbmd0aFRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCos
IGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBh
ZGRDU1NDb2xvclRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIGNvbG9yKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5
bGVBdHRyaWJ1dGUoKSBjb25zdDsKIAorICAgIHZvaWQgdXBkYXRlQXR0cmlidXRlU3R5bGUoKTsK
KwogICAgIHZvaWQgZGVzdHJveUlubGluZVN0eWxlRGVjbCgpCiAgICAgewogICAgICAgICBpZiAo
YXR0cmlidXRlRGF0YSgpKQpAQCAtOTUsNiArOTUsMTkgQEAgaW5saW5lIHZvaWQgU3R5bGVkRWxl
bWVudDo6aW52YWxpZGF0ZVN0eWxlQXR0cmlidXRlKCkKICAgICBjbGVhcklzU3R5bGVBdHRyaWJ1
dGVWYWxpZCgpOwogfQogCitpbmxpbmUgU3R5bGVQcm9wZXJ0eVNldCogU3R5bGVkRWxlbWVudDo6
YXR0cmlidXRlU3R5bGUoKQoreworICAgIGlmIChhdHRyaWJ1dGVTdHlsZURpcnR5KCkpCisgICAg
ICAgIHVwZGF0ZUF0dHJpYnV0ZVN0eWxlKCk7CisgICAgcmV0dXJuIGF0dHJpYnV0ZURhdGEoKSA/
IGF0dHJpYnV0ZURhdGEoKS0+YXR0cmlidXRlU3R5bGUoKSA6IDA7Cit9CisKK2lubGluZSB2b2lk
IFN0eWxlZEVsZW1lbnQ6OnNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKQoreworICAgIHNl
dEF0dHJpYnV0ZVN0eWxlRGlydHkoKTsKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Cit9CisK
IH0gLy9uYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCUkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNw
cAppbmRleCA1ZWZlNjM3Li44NGVhMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVu
dC5jcHAKQEAgLTQ4LDIwICs0OCwyNiBAQCBQYXNzUmVmUHRyPEhUTUxCUkVsZW1lbnQ+IEhUTUxC
UkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEbwogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEJSRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQog
Ci12b2lkIEhUTUxCUkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3Zv
aWQgSFRNTEJSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBj
bGVhckF0dHIpIHsKLSAgICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBlbXB0eSwgdGhlbiBkb24n
dCBhZGQgdGhlIGNsZWFyIHByb3BlcnR5LiAKKyAgICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBl
bXB0eSwgdGhlbiBkb24ndCBhZGQgdGhlIGNsZWFyIHByb3BlcnR5LgogICAgICAgICAvLyA8YnIg
Y2xlYXI+IGFuZCA8YnIgY2xlYXI9IiI+IGFyZSBqdXN0IHRyZWF0ZWQgbGlrZSA8YnI+IGJ5IEdl
Y2tvLCBNYWMgSUUsIGV0Yy4gLWR3aAotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwo
KSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q2xlYXIpOwotICAg
ICAgICBlbHNlIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFh
dHRyLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRy
LT52YWx1ZSgpLCAiYWxsIikpCi0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlDbGVhciwgImJvdGgiKTsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlDbGVhciwgImJvdGgiKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNsZWFyLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlDbGVhciwgYXR0ci0+
dmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNv
bGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7Cit9CisKK3ZvaWQgSFRNTEJSRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gY2xlYXJBdHRyKQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRl
KCk7CisgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgKaW5kZXggMTBhNjQzMi4uY2I4YzI5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDggQEAgcHJp
dmF0ZToKICAgICBIVE1MQlJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURF
OwotICAgIAorICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmli
dXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOworCiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAppbmRleCBhNzY5YTJjLi5kNTkw
NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0yNSw2ICsy
NSw3IEBACiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1
dGUuaCIKKyNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
QEAgLTYwLDQzICs2MSw0MSBAQCBIVE1MQm9keUVsZW1lbnQ6On5IVE1MQm9keUVsZW1lbnQoKQog
ewogfQogCi12b2lkIEhUTUxCb2R5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyKQordm9pZCBIVE1MQm9keUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gYmFja2dyb3VuZEF0dHIpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgaWYgKCF1
cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJhY2tncm91bmRJbWFnZSwgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5
QmFja2dyb3VuZEltYWdlKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkpKSk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gbWFyZ2lud2lkdGhBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBsZWZ0bWFy
Z2luQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAg
ICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NTUHJvcGVy
dHlNYXJnaW5MZWZ0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgo
Q1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBhZGRD
U1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAg
fQorICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblJp
Z2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBtYXJnaW5oZWlnaHRBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSB0b3BtYXJn
aW5BdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAg
ICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVy
dHlNYXJnaW5Ub3ApOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChD
U1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBhZGRD
U1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICB9
CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luQm90
dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGJnY29sb3JBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlz
TnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0NvbG9y
VG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkp
OwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHRleHRBdHRyKSB7Ci0gICAgICAgIGlm
IChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlDb2xvcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU0NvbG9y
KENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NDb2xvclRv
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IGJncHJvcGVydGllc0F0dHIpIHsKICAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJmaXhlZCIpKQotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQ1NTVmFsdWVGaXhl
ZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5QmFja2dyb3VuZEF0dGFjaG1lbnQpOworICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQ1NTVmFsdWVGaXhlZCk7CisgICAgfSBl
bHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwg
c3R5bGUpOworfQorCit2b2lkIEhUTUxCb2R5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQoreworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gYmFja2dyb3VuZEF0dHIgfHwK
KyAgICAgICAgYXR0ci0+bmFtZSgpID09IG1hcmdpbndpZHRoQXR0ciB8fAorICAgICAgICBhdHRy
LT5uYW1lKCkgPT0gbGVmdG1hcmdpbkF0dHIgfHwKKyAgICAgICAgYXR0ci0+bmFtZSgpID09IG1h
cmdpbmhlaWdodEF0dHIgfHwKKyAgICAgICAgYXR0ci0+bmFtZSgpID09IHRvcG1hcmdpbkF0dHIg
fHwKKyAgICAgICAgYXR0ci0+bmFtZSgpID09IGJnY29sb3JBdHRyIHx8CisgICAgICAgIGF0dHIt
Pm5hbWUoKSA9PSB0ZXh0QXR0ciB8fAorICAgICAgICBhdHRyLT5uYW1lKCkgPT0gYmdwcm9wZXJ0
aWVzQXR0cikgeworCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2bGlua0F0dHIgfHwKICAgICAgICAgICAgICAg
IGF0dHItPm5hbWUoKSA9PSBhbGlua0F0dHIgfHwKICAgICAgICAgICAgICAgIGF0dHItPm5hbWUo
KSA9PSBsaW5rQXR0cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9k
eUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKaW5kZXgg
ODAwNGIxMC4uMzJjYmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9k
eUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCkBA
IC03MSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgSFRNTEJvZHlFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JB
dHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERpdkVsZW1lbnQuY3BwCmluZGV4IGRhMjc4NWMuLjBhYzRjNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuY3BwCkBAIC00OCwyMCArNDgsMjYgQEAgUGFzc1JlZlB0
cjxIVE1MRGl2RWxlbWVudD4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERpdkVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBIVE1MRGl2RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQordm9pZCBIVE1MRGl2RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZh
bHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRleHRBbGlnbik7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgp
LCAibWlkZGxlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImNlbnRlciIp
KQotICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFs
dWVXZWJraXRDZW50ZXIpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdENlbnRlcik7CiAgICAgICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJsZWZ0IikpCi0gICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRMZWZ0KTsKKyAg
ICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFs
dWVXZWJraXRMZWZ0KTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+
dmFsdWUoKSwgInJpZ2h0IikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRSaWdodCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0UmlnaHQpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGln
biwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZQorICAgICAgICBIVE1M
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKK30KKwordm9p
ZCBIVE1MRGl2RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0
ZVN0eWxlVXBkYXRlKCk7CisgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoYXR0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERp
dkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAppbmRleCBj
ZDkwZDg3Li42MTU3NzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oCkBAIC0z
Nyw2ICszNyw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJ
REU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCmluZGV4IGEwMThmZTIuLmEwYjlhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNp
bmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJDaGlsZExpc3RNdXRhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBA
IC0xNDAsNTAgKzE0MSw4NSBAQCBzdGF0aWMgdW5zaWduZWQgcGFyc2VCb3JkZXJXaWR0aEF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgcmV0dXJuIGJvcmRlcldpZHRoOwogfQogCi12b2lk
IEhUTUxFbGVtZW50OjphcHBseUJvcmRlckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit2b2lk
IEhUTUxFbGVtZW50OjphcHBseUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUoQXR0cmlidXRlKiBhdHRy
LCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKLSAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aCwgU3RyaW5nOjpudW1iZXIocGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0ZShh
dHRyKSkpOwotICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENT
U1ZhbHVlU29saWQpOwotICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRT
dHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBTdHJpbmc6Om51bWJlcihwYXJzZUJvcmRlcldp
ZHRoQXR0cmlidXRlKGF0dHIpKSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsK
KyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Zh
bHVlU29saWQpOwogfQogCi12b2lkIEhUTUxFbGVtZW50OjptYXBMYW5ndWFnZUF0dHJpYnV0ZVRv
TG9jYWxlKEF0dHJpYnV0ZSogYXR0cmlidXRlKQordm9pZCBIVE1MRWxlbWVudDo6bWFwTGFuZ3Vh
Z2VBdHRyaWJ1dGVUb0xvY2FsZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSwgU3R5bGVQcm9wZXJ0eVNl
dCogc3R5bGUpCiB7CiAgICAgQVNTRVJUKGF0dHJpYnV0ZSAmJiAoYXR0cmlidXRlLT5uYW1lKCkg
PT0gbGFuZ0F0dHIgfHwgYXR0cmlidXRlLT5uYW1lKCkubWF0Y2hlcyhYTUxOYW1lczo6bGFuZ0F0
dHIpKSk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZS0+dmFsdWUo
KTsKLSAgICBpZiAodmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0TG9jYWxlKTsKLSAgICBlbHNlIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7
CisgICAgaWYgKCFhdHRyaWJ1dGUtPmlzRW1wdHkoKSkgewogICAgICAgICAvLyBIYXZlIHRvIHF1
b3RlIHNvIHRoZSBsb2NhbGUgaWQgaXMgdHJlYXRlZCBhcyBhIHN0cmluZyBpbnN0ZWFkIG9mIGFz
IGEgQ1NTIGtleXdvcmQuCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TG9jYWxlLCBxdW90ZUNTU1N0cmluZyh2YWx1ZSkpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRMb2NhbGUsIHF1b3RlQ1NTU3RyaW5nKGF0dHJpYnV0ZS0+dmFs
dWUoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZSBlbXB0eSBzdHJpbmcgbWVhbnMg
dGhlIGxhbmd1YWdlIGlzIGV4cGxpY2l0bHkgdW5rbm93bi4KLSAgICAgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXRMb2NhbGUsIENTU1ZhbHVlQXV0byk7CisgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgQ1NTVmFsdWVBdXRvKTsKICAg
ICB9Ci0gICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIEhUTUxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit2b2lkIEhUTUxFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHls
ZSkKIHsKLSAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKSB8fCBhdHRyLT5u
YW1lKCkgPT0gY2xhc3NBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBzdHlsZUF0dHIpCi0gICAgICAg
IHJldHVybiBTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKLQogICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkK
LSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduKTsKLSAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIp
KQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sICJjZW50
ZXIiKTsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJtaWRk
bGUiKSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGln
biwgImNlbnRlciIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNvbnRlbnRlZGl0YWJsZUF0dHIpIHsKLSAgICAgICAg
c2V0Q29udGVudEVkaXRhYmxlKGF0dHIpOworICAgICAgICBpZiAoYXR0ci0+aXNFbXB0eSgpIHx8
IGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJ0cnVlIikpIHsKKyAgICAgICAgICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVl
UmVhZFdyaXRlKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdv
cmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTVmFsdWVTcGFjZSk7CisgICAgICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIENTU1ZhbHVl
QWZ0ZXJXaGl0ZVNwYWNlKTsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
dHRyLT52YWx1ZSgpLCAicGxhaW50ZXh0LW9ubHkiKSkgeworICAgICAgICAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVSZWFkV3JpdGVQ
bGFpbnRleHRPbmx5KTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTVmFsdWVTcGFjZSk7CisgICAgICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWssIENTU1Zh
bHVlQWZ0ZXJXaGl0ZVNwYWNlKTsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShhdHRyLT52YWx1ZSgpLCAiZmFsc2UiKSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZE9ubHkpOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhpZGRlbkF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHIt
PmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlEaXNw
bGF5KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZU5vbmUpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGRyYWdnYWJsZUF0dHIpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0
dHItPnZhbHVlKCksICJ0cnVlIikpIHsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZUVsZW1lbnQpOworICAgICAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVO
b25lKTsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgp
LCAiZmFsc2UiKSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGRpckF0dHIpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVl
KCksICJhdXRvIikpCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlV
bmljb2RlQmlkaSwgdW5pY29kZUJpZGlBdHRyaWJ1dGVGb3JEaXJBdXRvKHRoaXMpKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKCFoYXNUYWdOYW1lKGJkaVRh
ZykgJiYgIWhhc1RhZ05hbWUoYmRvVGFnKSAmJiAhaGFzVGFnTmFtZShvdXRwdXRUYWcpKQorICAg
ICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBD
U1NWYWx1ZUVtYmVkKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpLm1h
dGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRyKSkgeworICAgICAgICBtYXBMYW5ndWFnZUF0dHJpYnV0
ZVRvTG9jYWxlKGF0dHIsIHN0eWxlKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBs
YW5nQXR0cikgeworICAgICAgICAvLyB4bWw6bGFuZyBoYXMgYSBoaWdoZXIgcHJpb3JpdHkgdGhh
biBsYW5nLgorICAgICAgICBpZiAoIWZhc3RIYXNBdHRyaWJ1dGUoWE1MTmFtZXM6OmxhbmdBdHRy
KSkKKyAgICAgICAgICAgIG1hcExhbmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUoYXR0ciwgc3R5bGUp
OworICAgIH0gZWxzZQorICAgICAgICBTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRy
aWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCit2b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHItPm5h
bWUoKSkgfHwgYXR0ci0+bmFtZSgpID09IGNsYXNzQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gc3R5
bGVBdHRyKQorICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0
cik7CisKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0ciB8fAorICAgICAgICBhdHRy
LT5uYW1lKCkgPT0gY29udGVudGVkaXRhYmxlQXR0ciB8fAorICAgICAgICBhdHRyLT5uYW1lKCkg
PT0gaGlkZGVuQXR0ciB8fAorICAgICAgICBhdHRyLT5uYW1lKCkgPT0gbGFuZ0F0dHIgfHwgLy8g
Q292ZXJzIGJvdGggSFRNTE5hbWVzOjpsYW5nQXR0ciBhbmQgWE1MTmFtZXM6OmxhbmdBdHRyLgor
ICAgICAgICBhdHRyLT5uYW1lKCkgPT0gZHJhZ2dhYmxlQXR0cikgeworCisgICAgICAgIHNldE5l
ZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSB0YWJpbmRleEF0dHIpIHsKICAgICAgICAgaW50IHRhYmluZGV4ID0gMDsKICAgICAgICAgaWYg
KGF0dHItPmlzRW1wdHkoKSkKQEAgLTE5Miw0MCArMjI4LDkgQEAgdm9pZCBIVE1MRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAgLy8gQ2xhbXAgdGFi
aW5kZXggdG8gdGhlIHJhbmdlIG9mICdzaG9ydCcgdG8gbWF0Y2ggRmlyZWZveCdzIGJlaGF2aW9y
LgogICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KG1heChzdGF0aWNfY2FzdDxpbnQ+
KHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptaW4oKSksIG1pbih0YWJpbmRleCwgc3RhdGlj
X2Nhc3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWF4KCkpKSkpOwogICAgICAg
ICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkubWF0Y2hlcyhYTUxOYW1lczo6bGFuZ0F0
dHIpKSB7Ci0gICAgICAgIG1hcExhbmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUoYXR0cik7Ci0gICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbGFuZ0F0dHIpIHsKLSAgICAgICAgLy8geG1sOmxh
bmcgaGFzIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4gbGFuZy4KLSAgICAgICAgaWYgKCFmYXN0SGFz
QXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cikpCi0gICAgICAgICAgICBtYXBMYW5ndWFnZUF0
dHJpYnV0ZVRvTG9jYWxlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRp
ckF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3Zl
Q1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eURpcmVjdGlvbiwgQ1NTUHJvcGVydHlVbmljb2RlQmlk
aSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYm9vbCBkaXJJc0F1dG8gPSBlcXVhbEln
bm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIpOwotICAgICAgICAgICAgaWYgKCFkaXJJ
c0F1dG8pCi0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGF0dHItPnZhbHVlKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJl
bW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKLQotICAgICAgICAgICAgZGly
QXR0cmlidXRlQ2hhbmdlZChhdHRyKTsKLSAgICAgICAgICAgIGlmIChkaXJJc0F1dG8pCi0gICAg
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgdW5pY29k
ZUJpZGlBdHRyaWJ1dGVGb3JEaXJBdXRvKHRoaXMpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFo
YXNUYWdOYW1lKGJkaVRhZykgJiYgIWhhc1RhZ05hbWUoYmRvVGFnKSAmJiAhaGFzVGFnTmFtZShv
dXRwdXRUYWcpKQotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VW5p
Y29kZUJpZGksIENTU1ZhbHVlRW1iZWQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOwotICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZHJhZ2dhYmxlQXR0cikgewotICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAidHJ1ZSIpKSB7Ci0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZUVsZW1lbnQpOwotICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LCBDU1NW
YWx1ZU5vbmUpOwotICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAi
ZmFsc2UiKSkgewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRV
c2VyRHJhZywgQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJTZWxlY3QpOworICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRl
KCk7CisgICAgICAgIGRpckF0dHJpYnV0ZUNoYW5nZWQoYXR0cik7CiAjaWYgRU5BQkxFKE1JQ1JP
REFUQSkKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBpdGVtcHJvcEF0dHIpIHsKICAg
ICAgICAgc2V0SXRlbVByb3AoYXR0ci0+dmFsdWUoKSk7CkBAIC02NzgsMTcgKzY4Myw3IEBAIHZv
aWQgSFRNTEVsZW1lbnQ6Omluc2VydEFkamFjZW50VGV4dChjb25zdCBTdHJpbmcmIHdoZXJlLCBj
b25zdCBTdHJpbmcmIHRleHQsIEV4CiAgICAgaW5zZXJ0QWRqYWNlbnQod2hlcmUsIHRleHROb2Rl
LmdldCgpLCBlYyk7CiB9CiAKLXZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxBbGlnbm1lbnQoQXR0
cmlidXRlKiBhdHRyKQotewotICAgIGFkZEhUTUxBbGlnbm1lbnRUb1N0eWxlZEVsZW1lbnQodGhp
cywgYXR0cik7Ci19Ci0KLXZvaWQgSFRNTEVsZW1lbnQ6OnJlbW92ZUhUTUxBbGlnbm1lbnQoKQot
ewotICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlGbG9hdCwgQ1NTUHJvcGVydHlW
ZXJ0aWNhbEFsaWduKTsKLX0KLQotdm9pZCBIVE1MRWxlbWVudDo6YWRkSFRNTEFsaWdubWVudFRv
U3R5bGVkRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBBdHRyaWJ1dGUqIGF0dHIpCit2
b2lkIEhUTUxFbGVtZW50OjphcHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5bGUoQXR0cmlidXRl
KiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICAvLyBWZXJ0aWNhbCBhbGln
bm1lbnQgd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJhc2VsaW5lIG9mIHRoZSB0ZXh0CiAg
ICAgLy8gcmlnaHQgb3IgbGVmdCBtZWFucyBmbG9hdGluZyBpbWFnZXMuCkBAIC03MTgsMTQgKzcx
MywxMCBAQCB2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MQWxpZ25tZW50VG9TdHlsZWRFbGVtZW50
KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIEF0dHJpYgogICAgICAgICB2ZXJ0aWNhbEFsaWduVmFs
dWUgPSBDU1NWYWx1ZVRleHRUb3A7CiAKICAgICBpZiAoZmxvYXRWYWx1ZSAhPSBDU1NWYWx1ZUlu
dmFsaWQpCi0gICAgICAgIGVsZW1lbnQtPmFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQs
IGZsb2F0VmFsdWUpOwotICAgIGVsc2UKLSAgICAgICAgZWxlbWVudC0+cmVtb3ZlQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlGbG9hdCk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUZsb2F0LCBmbG9hdFZhbHVlKTsKIAogICAgIGlmICh2ZXJ0aWNhbEFsaWduVmFsdWUgIT0g
Q1NTVmFsdWVJbnZhbGlkKQotICAgICAgICBlbGVtZW50LT5hZGRDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVZlcnRpY2FsQWxpZ24sIHZlcnRpY2FsQWxpZ25WYWx1ZSk7Ci0gICAgZWxzZQotICAgICAg
ICBlbGVtZW50LT5yZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pOwor
ICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCB2ZXJ0
aWNhbEFsaWduVmFsdWUpOwogfQogCiBib29sIEhUTUxFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkg
Y29uc3QKQEAgLTc0OSwyNyArNzQwLDYgQEAgU3RyaW5nIEhUTUxFbGVtZW50Ojpjb250ZW50RWRp
dGFibGUoKSBjb25zdAogICAgIHJldHVybiAiaW5oZXJpdCI7CiB9CiAKLXZvaWQgSFRNTEVsZW1l
bnQ6OnNldENvbnRlbnRFZGl0YWJsZShBdHRyaWJ1dGUqIGF0dHIpIAotewotICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZW5hYmxlZCA9IGF0dHItPnZhbHVlKCk7Ci0gICAgaWYgKGVuYWJsZWQuaXNO
dWxsKCkpCi0gICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlXZWJraXRVc2Vy
TW9kaWZ5LCBDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBD
U1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhayk7Ci0gICAgZWxzZSBpZiAoZW5hYmxlZC5pc0VtcHR5
KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInRydWUiKSkgewotICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZFdyaXRl
KTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVC
cmVha1dvcmQpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE5ic3BN
b2RlLCBDU1NWYWx1ZVNwYWNlKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlX
ZWJraXRMaW5lQnJlYWssIENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNlKTsKLSAgICB9IGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGVuYWJsZWQsICJmYWxzZSIpKSB7Ci0gICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVSZWFkT25seSk7Ci0g
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTUHJvcGVy
dHlXZWJraXROYnNwTW9kZSwgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWspOwotICAgIH0gZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInBsYWludGV4dC1vbmx5IikpIHsKLSAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1
ZVJlYWRXcml0ZVBsYWludGV4dE9ubHkpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwotICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgQ1NTVmFsdWVBZnRlcldoaXRl
U3BhY2UpOwotICAgIH0KLX0KLQogdm9pZCBIVE1MRWxlbWVudDo6c2V0Q29udGVudEVkaXRhYmxl
KGNvbnN0IFN0cmluZyYgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGVuYWJsZWQsICJ0cnVlIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmgKaW5kZXggNDcxOTcyNi4uM2QzZTc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApA
QCAtNzksOCArNzksNiBAQCBwdWJsaWM6CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0oKSBj
b25zdCB7IHJldHVybiB2aXJ0dWFsRm9ybSgpOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBhZGRIVE1M
QWxpZ25tZW50VG9TdHlsZWRFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBBdHRyaWJ1dGUqKTsKLQog
ICAgIEhUTUxGb3JtRWxlbWVudCogZmluZEZvcm1BbmNlc3RvcigpIGNvbnN0OwogCiAgICAgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShib29sJiBpc0F1
dG8pIGNvbnN0OwpAQCAtOTMsMTEgKzkxLDExIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBI
VE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCopOwogCi0g
ICAgdm9pZCBhZGRIVE1MQWxpZ25tZW50KEF0dHJpYnV0ZSopOwotICAgIHZvaWQgcmVtb3ZlSFRN
TEFsaWdubWVudCgpOworICAgIHZvaWQgYXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVUb1N0eWxlKEF0
dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKTsKKyAgICB2b2lkIGFwcGx5Qm9yZGVyQXR0cmli
dXRlVG9TdHlsZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0Kik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7Ci0gICAgdm9pZCBhcHBs
eUJvcmRlckF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0
eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsK
IAogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIg
PSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBp
bnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAgICAgdm9pZCBjYWxjdWxhdGVBbmRBZGp1c3REaXJl
Y3Rpb25hbGl0eSgpOwpAQCAtMTA3LDkgKzEwNSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKIAotICAgIHZvaWQgbWFwTGFuZ3Vh
Z2VBdHRyaWJ1dGVUb0xvY2FsZShBdHRyaWJ1dGUqKTsKLQotICAgIHZvaWQgc2V0Q29udGVudEVk
aXRhYmxlKEF0dHJpYnV0ZSopOworICAgIHZvaWQgbWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2Fs
ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0Kik7CiAKICAgICB2aXJ0dWFsIEhUTUxGb3Jt
RWxlbWVudCogdmlydHVhbEZvcm0oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAKaW5kZXggMWQ2NGVjYS4uOWQ3MDI2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC03NCw2ICs3NCwxNyBAQCBSZW5kZXJXaWRnZXQq
IEhUTUxFbWJlZEVsZW1lbnQ6OnJlbmRlcldpZGdldEZvckpTQmluZGluZ3MoKQogICAgIHJldHVy
biBmaW5kV2lkZ2V0UmVuZGVyZXIodGhpcyk7CiB9CiAKK3ZvaWQgSFRNTEVtYmVkRWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNl
dCogc3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBoaWRkZW5BdHRyKSB7CisgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAieWVzIikgfHwgZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgInRydWUiKSkgeworICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgIjAiKTsgLy8gRklYTUU6IFBh
c3MgYXMgaW50ZWdlci4KKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENT
U1Byb3BlcnR5SGVpZ2h0LCAiMCIpOyAvLyBGSVhNRTogUGFzcyBhcyBpbnRlZ2VyLgorICAgICAg
ICB9CisgICAgfSBlbHNlCisgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGF0dHIpOworfQorCiB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0
ci0+dmFsdWUoKTsKQEAgLTk0LDE1ICsxMDUsOSBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgICAgICBtX2ltYWdlTG9h
ZGVyID0gYWRvcHRQdHIobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7CiAgICAgICAgICAgICBt
X2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwog
ICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGlkZGVuQXR0cikgewot
ICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuc3RyaW5nKCksICJ5ZXMiKSB8fCBl
cXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5zdHJpbmcoKSwgInRydWUiKSkgewotICAgICAgICAgICAg
Ly8gRklYTUU6IE5vdCBkeW5hbWljLCBzaW5jZSB3ZSBhZGQgdGhpcyBidXQgZG9uJ3QgcmVtb3Zl
IGl0LCBidXQgaXQgbWF5IGJlIE9LIGZvciBub3cKLSAgICAgICAgICAgIC8vIHRoYXQgdGhpcyBy
YXJlbHktdXNlZCBhdHRyaWJ1dGUgd29uJ3Qgd29yayBwcm9wZXJseSBpZiB5b3UgcmVtb3ZlIGl0
LgotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsICIwIik7Ci0gICAg
ICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsICIwIik7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdpZHRoLCBD
U1NQcm9wZXJ0eUhlaWdodCk7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gaGlkZGVuQXR0cikKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgp
OworICAgIGVsc2UKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoYXR0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgKaW5kZXgg
ZjM3NzYwMy4uYThiNjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgK
QEAgLTM1LDYgKzM1LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MRW1iZWRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVy
dHlTZXQqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b0RvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKaW5kZXgg
ODZmNTI5OC4uZGI0NDdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9u
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNw
cApAQCAtMTU4LDI1ICsxNTgsMjUgQEAgYm9vbCBIVE1MRm9udEVsZW1lbnQ6OmNzc1ZhbHVlRnJv
bUZvbnRTaXplTnVtYmVyKGNvbnN0IFN0cmluZyYgcywgaW50JiBzaXplKQogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEhUTUxGb250RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQordm9pZCBIVE1MRm9udEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gc2l6ZUF0dHIpIHsKICAgICAgICAgaW50IHNpemUgPSAwOwogICAgICAgICBp
ZiAoY3NzVmFsdWVGcm9tRm9udFNpemVOdW1iZXIoYXR0ci0+dmFsdWUoKSwgc2l6ZSkpCi0gICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6
ZSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sb3JBdHRyKSB7Ci0gICAgICAg
IGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlDb2xvcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU0Nv
bG9yKENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOwotICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGZhY2VBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVs
bCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlG
b250RmFtaWx5LCBhdHRyLT52YWx1ZSgpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKKyAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBjb2xvckF0dHIpCisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGZhY2VBdHRyKQorICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlGb250RmFtaWx5LCBhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIEhUTUxF
bGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCit2b2lk
IEhUTUxGb250RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGNvbG9yQXR0
ciB8fCBhdHRyLT5uYW1lKCkgPT0gZmFjZUF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRl
U3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShhdHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9u
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmgKaW5kZXgg
ZWVhOGI0NC4uNWZlOWFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9u
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oCkBA
IC0zOCw2ICszOCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTEZvbnRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JB
dHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwCmluZGV4IDRhZjYzNDIuLjE0ZWFjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVTZXRFbGVtZW50LmNwcApAQCAtNjQsNiArNjQsMTQgQEAgUGFzc1JlZlB0cjxIVE1MRnJh
bWVTZXRFbGVtZW50PiBIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGcmFtZVNldEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAordm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkK
K3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlcmNvbG9yQXR0cikKKyAgICAgICAgYWRk
Q1NTQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBhdHRyLT52YWx1
ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRy
aWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCiB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHJv
d3NBdHRyKSB7CkBAIC0xMDAsMTAgKzEwOCw3IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAgbV9ib3JkZXJTZXQg
PSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJjb2xvckF0dHIp
IHsKICAgICAgICAgbV9ib3JkZXJDb2xvclNldCA9ICFhdHRyLT5pc0VtcHR5KCk7Ci0gICAgICAg
IGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXJDb2xvcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFk
ZENTU0NvbG9yKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gb25sb2FkQXR0cikKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gb25iZWZvcmV1bmxvYWRBdHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaAppbmRleCAxODc5MDIzLi5mOGJhZjcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaApAQCAtNjgsNiArNjgsNyBAQCBwcml2YXRl
OgogICAgIEhUTUxGcmFtZVNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUq
LCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmlu
Z0NvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCmluZGV4IDU1MzRi
OTIuLjZlMGU5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcApAQCAtNDgs
NjggKzQ4LDYwIEBAIFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MSFJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTEhS
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQordm9pZCBIVE1MSFJFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3Bl
cnR5U2V0KiBzdHlsZSkKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewot
ICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkgewotICAgICAgICAgICAgcmVtb3Zl
Q1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1Byb3BlcnR5TWFyZ2luUmln
aHQpOwotICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCks
ICJsZWZ0IikpIHsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCwgIjAiKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsIENTU1ZhbHVlQXV0byk7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRy
LT52YWx1ZSgpLCAibGVmdCIpKSB7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlNYXJnaW5MZWZ0LCAiMCIpOyAvLyBGSVhNRTogUGFzcyBhcyBpbnRlZ2VyLgorICAg
ICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1Zh
bHVlQXV0byk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFs
dWUoKSwgInJpZ2h0IikpIHsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5
TWFyZ2luTGVmdCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5TWFyZ2luUmlnaHQsICIwIik7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NWYWx1ZUF1dG8pOworICAgICAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsICIwIik7IC8vIEZJWE1FOiBQ
YXNzIGFzIGludGVnZXIuCiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NWYWx1ZUF1dG8pOworICAg
ICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgQ1NTVmFs
dWVBdXRvKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdp
blJpZ2h0LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgp
KQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgICAgIGludCB2ID0gYXR0
ci0+dmFsdWUoKS50b0ludCgmb2spOwotICAgICAgICAgICAgaWYgKG9rICYmICF2KQotICAgICAg
ICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCAiMSIpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCBh
dHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9rOworICAgICAgICBpbnQg
diA9IGF0dHItPnZhbHVlKCkudG9JbnQoJm9rKTsKKyAgICAgICAgaWYgKG9rICYmICF2KQorICAg
ICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgIjEi
KTsgLy8gRklYTUU6IFBhc3MgYXMgaW50ZWdlci4KKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUo
KSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sb3JBdHRyKSB7Ci0gICAgICAg
IGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dGllcyhDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVT
b2xpZCk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRT
dHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0
eUJvcmRlckNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0NvbG9yKENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQorICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFs
dWVTb2xpZCk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7
CisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xv
ciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG5vc2hhZGVBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgp
LmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eUJv
cmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NT
VmFsdWVTb2xpZCk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVTb2xp
ZCk7Ci0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBTdHJp
bmcoImdyZXkiKSk7Ci0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvciwgU3RyaW5nKCJncmV5IikpOwotICAgICAgICB9CisgICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFs
dWVTb2xpZCk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgYWRkQ1NT
Q29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBTdHJpbmcoImdyZXki
KSk7IC8vIEZJWE1FOiBQYXNzIGFzIHJnYigpIHZhbHVlLgorICAgICAgICBhZGRDU1NDb2xvclRv
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBTdHJpbmcoImdyZXkiKSk7
IC8vIEZJWE1FOiBQYXNzIGFzIHJnYigpIHZhbHVlLgogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IHNpemVBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQot
ICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NQcm9wZXJ0eUhlaWdodCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgU3Ry
aW5nSW1wbCogc2kgPSBhdHRyLT52YWx1ZSgpLmltcGwoKTsKLSAgICAgICAgICAgIGludCBzaXpl
ID0gc2ktPnRvSW50KCk7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA8PSAxKSB7Ci0gICAgICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgU3RyaW5n
KCIwIikpOwotICAgICAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVp
Z2h0KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYWRkQ1NTTGVuZ3Ro
KENTU1Byb3BlcnR5SGVpZ2h0LCBTdHJpbmc6Om51bWJlcihzaXplLTIpKTsKLSAgICAgICAgICAg
ICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBTdHJpbmdJbXBsKiBzaSA9IGF0dHItPnZh
bHVlKCkuaW1wbCgpOworICAgICAgICBpbnQgc2l6ZSA9IHNpLT50b0ludCgpOworICAgICAgICBp
ZiAoc2l6ZSA8PSAxKQorICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tV2lkdGgsIFN0cmluZygiMCIpKTsgLy8gRklYTUU6IFBhc3MgYXMgaW50ZWdl
ci4KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlIZWlnaHQsIFN0cmluZzo6bnVtYmVyKHNpemUgLSAyKSk7IC8vIEZJWE1FOiBQ
YXNzIGFzIGludGVnZXIuCisgICAgfSBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCit2b2lkIEhUTUxIUkVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IGFsaWduQXR0ciB8fAorICAgICAgICBhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyIHx8Cisg
ICAgICAgIGF0dHItPm5hbWUoKSA9PSBjb2xvckF0dHIgfHwKKyAgICAgICAgYXR0ci0+bmFtZSgp
ID09IG5vc2hhZGVBdHRyIHx8CisgICAgICAgIGF0dHItPm5hbWUoKSA9PSBzaXplQXR0cikgewor
CisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICB9IGVsc2UKICAg
ICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxIUkVsZW1lbnQuaAppbmRleCBmMDUwODViLi5jOWEwOGQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxIUkVsZW1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBwcml2YXRlOgogICAgIEhUTUxIUkVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0Kikg
T1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCmluZGV4IDVjYmE4ODguLjRjN2E2MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCkBAIC00OCwxNCArNDgsMjkgQEAg
UGFzc1JlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4gSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWcKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxJRnJh
bWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTElGcmFtZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3ZvaWQgSFRNTElGcmFtZUVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVy
dHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKQotICAg
ICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZh
bHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKQotICAgICAg
ICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFs
dWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikKLSAgICAgICAg
YWRkSFRNTEFsaWdubWVudChhdHRyKTsKKyAgICAgICAgYXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVU
b1N0eWxlKGF0dHIsIHN0eWxlKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZnJhbWVi
b3JkZXJBdHRyKSB7CisgICAgICAgIC8vIEZyYW1lIGJvcmRlciBkb2Vzbid0IHJlYWxseSBtYXRj
aCB0aGUgSFRNTDQgc3BlYyBkZWZpbml0aW9uIGZvciBpZnJhbWVzLiAgSXQgc2ltcGx5IGFkZHMK
KyAgICAgICAgLy8gYSBwcmVzZW50YXRpb25hbCBoaW50IHRoYXQgdGhlIGJvcmRlciBzaG91bGQg
YmUgb2ZmIGlmIHNldCB0byB6ZXJvLgorICAgICAgICBpZiAoIWF0dHItPmlzTnVsbCgpICYmICFh
dHRyLT52YWx1ZSgpLnRvSW50KCkpIHsKKyAgICAgICAgICAgIC8vIEFkZCBhIHJ1bGUgdGhhdCBu
dWxscyBvdXQgb3VyIGJvcmRlciB3aWR0aC4KKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsICIwIik7IC8vIEZJWE1FOiBQYXNzIGFz
IGludGVnZXIuCisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7Cit9CisKK3ZvaWQg
SFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0
QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBmcmFt
ZWJvcmRlckF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdOYW1lID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgaWYgKGluRG9jdW1l
bnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7CkBAIC02NCwxNCArNzksNiBA
QCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIp
CiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkRXh0cmFOYW1lZEl0ZW0obmV3TmFtZSk7CiAgICAg
ICAgIH0KICAgICAgICAgbV9uYW1lID0gbmV3TmFtZTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBmcmFtZWJvcmRlckF0dHIpIHsKLSAgICAgICAgLy8gRnJhbWUgYm9yZGVyIGRvZXNu
J3QgcmVhbGx5IG1hdGNoIHRoZSBIVE1MNCBzcGVjIGRlZmluaXRpb24gZm9yIGlmcmFtZXMuICBJ
dCBzaW1wbHkgYWRkcwotICAgICAgICAvLyBhIHByZXNlbnRhdGlvbmFsIGhpbnQgdGhhdCB0aGUg
Ym9yZGVyIHNob3VsZCBiZSBvZmYgaWYgc2V0IHRvIHplcm8uCi0gICAgICAgIGlmICghYXR0ci0+
aXNOdWxsKCkgJiYgIWF0dHItPnZhbHVlKCkudG9JbnQoKSkgewotICAgICAgICAgICAgLy8gQWRk
IGEgcnVsZSB0aGF0IG51bGxzIG91dCBvdXIgYm9yZGVyIHdpZHRoLgotICAgICAgICAgICAgYWRk
Q1NTTGVuZ3RoKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsICIwIik7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCk7CiAg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2FuZGJveEF0dHIpCiAgICAgICAgIHNldFNh
bmRib3hGbGFncyhhdHRyLT5pc051bGwoKSA/IFNhbmRib3hOb25lIDogU2VjdXJpdHlDb250ZXh0
OjpwYXJzZVNhbmRib3hQb2xpY3koYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAppbmRleCBiY2JhMmEyLi5hMGU3ZTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIHBy
aXZhdGU6CiAgICAgSFRNTElGcmFtZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1
dGUqLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21E
b2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXgg
NmMyMmVkYy4uODcxYTBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCkBAIC03OCw2ICs3OCwyOCBAQCBQYXNzUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IEhUTUxJ
bWFnZUVsZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoRG9jdW1lbnQqCiAgICAgcmV0dXJu
IGltYWdlLnJlbGVhc2UoKTsKIH0KIAordm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkK
K3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikKKyAgICAgICAgYWRkQ1NTTGVu
Z3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpCisgICAgICAgIGFkZENTU0xlbmd0
aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyQXR0cikKKyAgICAgICAgYXBwbHlCb3JkZXJB
dHRyaWJ1dGVUb1N0eWxlKGF0dHIsIHN0eWxlKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gdnNwYWNlQXR0cikgeworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aFRv
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoc3BhY2VBdHRyKSB7CisgICAgICAgIGFkZENT
U0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFs
aWduQXR0cikKKyAgICAgICAgYXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVUb1N0eWxlKGF0dHIsIHN0
eWxlKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFsaWduQXR0cikKKyAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUo
KSk7CisgICAgZWxzZQorICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmli
dXRlKGF0dHIsIHN0eWxlKTsKK30KKwogdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUgPSBhdHRyLT5uYW1lKCk7CkBAIC04Niw0MCArMTA4LDggQEAgdm9pZCBIVE1MSW1hZ2VFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgICAgICB0b1JlbmRl
ckltYWdlKHJlbmRlcmVyKCkpLT51cGRhdGVBbHRUZXh0KCk7CiAgICAgfSBlbHNlIGlmIChhdHRy
TmFtZSA9PSBzcmNBdHRyKQogICAgICAgICBtX2ltYWdlTG9hZGVyLnVwZGF0ZUZyb21FbGVtZW50
SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gd2lkdGhB
dHRyKQotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJl
bW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gaGVpZ2h0QXR0cikKLSAgICAgICAgaWYgKGF0dHItPnZhbHVl
KCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhl
aWdodCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYm9yZGVy
QXR0cikgewotICAgICAgICAvLyBib3JkZXI9Im5vYm9yZGVyIiAtPiBib3JkZXI9IjAiCi0gICAg
ICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlKGF0dHIpOwotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUg
PT0gdnNwYWNlQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAg
ICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1By
b3BlcnR5TWFyZ2luQm90dG9tKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhZGRDU1NM
ZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gaHNwYWNlQXR0cikgewotICAgICAg
ICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAo
YXR0ck5hbWUgPT0gYWxpZ25BdHRyKQotICAgICAgICBhZGRIVE1MQWxpZ25tZW50KGF0dHIpOwot
ICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IHZhbGlnbkF0dHIpCi0gICAgICAgIGlmIChhdHRyLT52
YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlWZXJ0aWNhbEFsaWduKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSB3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gaGVpZ2h0QXR0ciB8fCBhdHRy
TmFtZSA9PSBib3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IHZzcGFjZUF0dHIgfHwgYXR0ck5hbWUg
PT0gaHNwYWNlQXR0ciB8fCBhdHRyTmFtZSA9PSBhbGlnbkF0dHIgfHwgYXR0ck5hbWUgPT0gdmFs
aWduQXR0cikKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IHVzZW1hcEF0dHIpCiAgICAgICAgIHNldElzTGluayghYXR0ci0+
aXNOdWxsKCkpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9uYWJvcnRBdHRyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCBiMjRkMzQ4Li5hOGJiYTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtODQsNiArODQsNyBAQCBwcm90
ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJp
YnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1
dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAppbmRleCA5NjAwNDBmLi45ZmEyNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTY1OCw5ICs2NTgsNDEgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjphY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpCiAgICAgbV9p
bnB1dFR5cGUtPmFjY2Vzc0tleUFjdGlvbihzZW5kTW91c2VFdmVudHMpOwogfQogCitzdGF0aWMg
aW5saW5lIGJvb2wgaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCwgQXR0cmlidXRlKiBhdHRyKQoreworICAgIHJldHVybiBhdHRyLT5uYW1l
KCkgPT0gdnNwYWNlQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gYWxpZ25BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIgfHwgYXR0ci0+
bmFtZSgpID09IGhlaWdodEF0dHIgfHwgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJBdHRyICYmIGVs
ZW1lbnQtPmlzSW1hZ2VCdXR0b24oKSk7Cit9CisKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6Y29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCog
c3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB2c3BhY2VBdHRyKSB7CisgICAgICAg
IGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlN
YXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGhzcGFjZUF0dHIpIHsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3Ro
VG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7Cisg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7CisgICAgICAgIGlmICht
X2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdEFsaWduQXR0cmlidXRlKCkpCisgICAgICAgICAgICBh
cHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5bGUoYXR0ciwgc3R5bGUpOworICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikgeworICAgICAgICBpZiAobV9pbnB1dFR5cGUt
PnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKSkKKyAgICAgICAgICAgIGFk
ZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkp
OworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpIHsKKyAgICAgICAg
aWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkp
CisgICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdo
dCwgYXR0ci0+dmFsdWUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVy
QXR0ciAmJiBpc0ltYWdlQnV0dG9uKCkpCisgICAgICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9T
dHlsZShhdHRyLCBzdHlsZSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCghaXNSZXNwZWN0
ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoYXR0cikpOworICAgICAgICByZXR1cm4gSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7
CisgICAgfQorfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7CisgICAg
aWYgKGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKHRoaXMsIGF0dHIpKQorICAgICAg
ICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IG5hbWVBdHRyKSB7CiAgICAgICAgIGNoZWNrZWRSYWRpb0J1dHRvbnMoKS5yZW1vdmVC
dXR0b24odGhpcyk7CiAgICAgICAgIG1fbmFtZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgICAgIGNo
ZWNrZWRSYWRpb0J1dHRvbnMoKS5hZGRCdXR0b24odGhpcyk7CkBAIC03MTMsMjkgKzc0NSw2IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ICAgICAgICBtX2lucHV0VHlwZS0+c3JjQXR0cmlidXRlQ2hhbmdlZCgpOwogICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSB1c2VtYXBBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBhY2Nlc3NrZXlB
dHRyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBpZ25vcmUgZm9yIHRoZSBtb21lbnQKLSAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2c3BhY2VBdHRyKSB7Ci0gICAgICAgIGFkZENTU0xlbmd0
aChDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGFkZENTU0xl
bmd0aChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgo
Q1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgYWRkQ1NTTGVu
Z3RoKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOwotICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewotICAgICAgICBpZiAobV9pbnB1dFR5cGUt
PnNob3VsZFJlc3BlY3RBbGlnbkF0dHJpYnV0ZSgpKQotICAgICAgICAgICAgYWRkSFRNTEFsaWdu
bWVudChhdHRyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlSFRNTEFsaWdubWVu
dCgpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikgewotICAgICAg
ICBpZiAobV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMo
KSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1
ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlXaWR0aCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0cikg
ewotICAgICAgICBpZiAobV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0
dHJpYnV0ZXMoKSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdodCwg
YXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5SGVpZ2h0KTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBi
b3JkZXJBdHRyICYmIGlzSW1hZ2VCdXR0b24oKSkgewotICAgICAgICBhcHBseUJvcmRlckF0dHJp
YnV0ZShhdHRyKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnNlYXJjaEF0dHIp
IHsKICAgICAgICAgLy8gU2VhcmNoIGZpZWxkIGFuZCBzbGlkZXIgYXR0cmlidXRlcyBhbGwganVz
dCBjYXVzZSB1cGRhdGVGcm9tRWxlbWVudCB0byBiZSBjYWxsZWQgdGhyb3VnaCBzdHlsZSByZWNh
bGNpbmcuCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNl
YXJjaEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggYjZmYTBmNi4uYTUxMjMxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTI3Niw2ICsyNzYsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91
c2VFdmVudHMpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0
cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0cmli
dXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExJRWxlbWVudC5jcHAKaW5kZXggZjc4OWQzMi4uNWZjNmIyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMSUVsZW1lbnQuY3BwCkBAIC00OSwyNyArNDksMzMgQEAgUGFzc1JlZlB0cjxIVE1MTElF
bGVtZW50PiBIVE1MTElFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG8KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxMSUVsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAotdm9pZCBIVE1MTElFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIpCit2b2lkIEhUTUxMSUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewotICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gdmFsdWVBdHRyKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPmlzTGlzdEl0ZW0oKSkKLSAgICAgICAgICAgIHBhcnNlVmFsdWUoYXR0ci0+dmFsdWUo
KSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpIHsKLSAgICAgICAg
aWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpOwotICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1
ZSgpID09ICJhIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0
eWxlVHlwZSwgQ1NTVmFsdWVMb3dlckFscGhhKTsKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHR5
cGVBdHRyKSB7CisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpID09ICJhIikKKyAgICAgICAgICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93
ZXJBbHBoYSk7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIkEiKQotICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZVVw
cGVyQWxwaGEpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlckFscGhhKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+
dmFsdWUoKSA9PSAiaSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxp
c3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJSb21hbik7CisgICAgICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyUm9tYW4pOwog
ICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJJIikKLSAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlclJvbWFuKTsK
KyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlVXBwZXJSb21hbik7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0g
IjEiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
LCBDU1NWYWx1ZURlY2ltYWwpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVEZWNpbWFsKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RT
dHlsZVR5cGUsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZQorICAgICAgICBIVE1MRWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKK30KKwordm9pZCBIVE1M
TElFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSB2YWx1ZUF0dHIpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVu
ZGVyZXIoKS0+aXNMaXN0SXRlbSgpKQorICAgICAgICAgICAgcGFyc2VWYWx1ZShhdHRyLT52YWx1
ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB0eXBlQXR0cikKKyAgICAgICAg
c2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UKICAgICAgICAgSFRNTEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxl
bWVudC5oCmluZGV4IDc3YTkwZTguLjAzZjE2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExJRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxl
bWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIHByaXZhdGU6CiAgICAgSFRNTExJRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0
dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0
eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsK
IAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWFycXVlZUVsZW1lbnQuY3BwCmluZGV4IGM3N2M5ODUuLjJhOTdkZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKQEAgLTUzLDY0ICs1Myw2MiBAQCBQYXNz
UmVmUHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gSFRNTE1hcnF1ZWVFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdAogICAgIHJldHVybiBtYXJxdWVlRWxlbWVudC5yZWxlYXNlKCk7
CiB9CiAKLXZvaWQgSFRNTE1hcnF1ZWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHIpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIHJldHVybiBhdHRyLT5uYW1lKCkgPT0gd2lkdGhB
dHRyIHx8IGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBiZ2Nv
bG9yQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0g
aHNwYWNlQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gc2Nyb2xsYW1vdW50QXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gc2Nyb2xsZGVsYXlBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBsb29wQXR0ciB8fCBh
dHRyLT5uYW1lKCkgPT0gYmVoYXZpb3JBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBkaXJlY3Rpb25B
dHRyOworfQorCit2b2lkIEhUTUxNYXJxdWVlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpIHsKLSAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgp
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCBh
dHRyLT52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlXaWR0aCk7CisgICAgICAgIGlmICghYXR0ci0+aXNFbXB0eSgpKQorICAg
ICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0
ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0cikg
ewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRk
Q1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOworICAg
ICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0
dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJnY29sb3JBdHRy
KSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBh
ZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKKyAgICAgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IHZzcGFjZUF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgp
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2lu
VG9wLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eU1hcmdpblRvcCwgQ1NTUHJvcGVydHlN
YXJnaW5Cb3R0b20pOworICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTTGVu
Z3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkp
OworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0cikg
ewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgp
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1By
b3BlcnR5TWFyZ2luTGVmdCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7CisgICAgICAgICAgICBh
ZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZh
bHVlKCkpOworICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBzY3JvbGxhbW91bnRBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+
dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlSW5jcmVtZW50LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVt
ZW50KTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZUluY3JlbWVudCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gc2Nyb2xsZGVsYXlBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFs
dWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3BlZWQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZCk7CisgICAg
ICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVTcGVlZCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
bG9vcEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0gIi0xIiB8fCBlcXVhbElnbm9yaW5nQ2FzZShh
dHRyLT52YWx1ZSgpLCAiaW5maW5pdGUiKSkKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLCBDU1NWYWx1ZUluZmluaXRlKTsK
KyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlUmVwZXRpdGlvbiwgQ1NTVmFsdWVJbmZpbml0ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRp
b24sIGF0dHItPnZhbHVlKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNT
U1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24pOworICAgICAgICAg
ICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZVJlcGV0aXRpb24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gYmVoYXZpb3JBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUo
KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTdHlsZSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlKTsKKyAgICAg
ICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwg
YXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZGlyZWN0aW9u
QXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLCBhdHRy
LT52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uKTsKLSAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSB0cnVlc3BlZWRBdHRyKQorICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgYXR0ci0+dmFsdWUoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCFpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0
ZShhdHRyKSk7CisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
YXR0ciwgc3R5bGUpOworICAgIH0KK30KKwordm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAoaXNSZXNwZWN0ZWRQcmVzZW50
YXRpb25BdHRyaWJ1dGUoYXR0cikpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRh
dGUoKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHJ1ZXNwZWVkQXR0cikKICAgICAg
ICAgbV9taW5pbXVtRGVsYXkgPSAhYXR0ci0+aXNFbXB0eSgpID8gMCA6IGRlZmF1bHRNaW5pbXVt
RGVsYXk7CiAgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCBkMWUzMDcw
Li4wOWFlZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKQEAg
LTU0LDYgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MTWFycXVlZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZv
ckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKICAg
ICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKaW5kZXggMmJmYTJmZi4u
YmEyZTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCkBAIC01
NCwyMiArNTQsMjggQEAgUGFzc1JlZlB0cjxIVE1MT0xpc3RFbGVtZW50PiBIVE1MT0xpc3RFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxPTGlzdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBI
VE1MT0xpc3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit2b2lkIEhU
TUxPTGlzdEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIs
IFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlw
ZUF0dHIpIHsKICAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0gImEiKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyQWxw
aGEpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxl
VHlwZSwgQ1NTVmFsdWVMb3dlckFscGhhKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUo
KSA9PSAiQSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHls
ZVR5cGUsIENTU1ZhbHVlVXBwZXJBbHBoYSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZVVwcGVyQWxwaGEpOwogICAgICAg
ICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJpIikKLSAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlclJvbWFuKTsKKyAgICAg
ICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1Zh
bHVlTG93ZXJSb21hbik7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIkkiKQot
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NW
YWx1ZVVwcGVyUm9tYW4pOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlclJvbWFuKTsKICAgICAgICAgZWxzZSBpZiAo
YXR0ci0+dmFsdWUoKSA9PSAiMSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlRGVjaW1hbCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSk7Ci0gICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc3RhcnRBdHRyKSB7CisgICAgICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwp
OworICAgIH0gZWxzZQorICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmli
dXRlKGF0dHIsIHN0eWxlKTsKK30KKwordm9pZCBIVE1MT0xpc3RFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0eXBlQXR0
cikKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBzdGFydEF0dHIpIHsKICAgICAgICAgaW50IG9sZFN0YXJ0ID0gc3Rh
cnQoKTsKICAgICAgICAgYm9vbCBjYW5QYXJzZTsKICAgICAgICAgaW50IHBhcnNlZFN0YXJ0ID0g
YXR0ci0+dmFsdWUoKS50b0ludCgmY2FuUGFyc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlz
dEVsZW1lbnQuaAppbmRleCAwNzMxZmIwLi4wZWZlYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPTGlzdEVsZW1lbnQuaApAQCAtNTQsNiArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVj
YWxjdWxhdGVJdGVtQ291bnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShB
dHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0
cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIAogICAgIGlu
dCBtX3N0YXJ0OwogICAgIHVuc2lnbmVkIG1faXRlbUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcAppbmRleCBlMmJlZjAxLi43OTQyOTlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtNzcsNiArNzcsMTQgQEAgUmVu
ZGVyV2lkZ2V0KiBIVE1MT2JqZWN0RWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygp
CiAgICAgcmV0dXJuIHJlbmRlclBhcnQoKTsgLy8gVGhpcyB3aWxsIHJldHVybiAwIGlmIHRoZSBy
ZW5kZXJlciBpcyBub3QgYSBSZW5kZXJQYXJ0LgogfQogCit2b2lkIEhUTUxPYmplY3RFbGVtZW50
Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5
U2V0KiBzdHlsZSkKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCisgICAg
ICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZShhdHRyLCBzdHlsZSk7CisgICAgZWxzZQor
ICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
YXR0ciwgc3R5bGUpOworfQorCiB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBmb3JtQXR0cikK
QEAgLTEwOSw3ICsxMTcsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3Jl
bG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRy
KSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCi0gICAgICAgIGFw
cGx5Qm9yZGVyQXR0cmlidXRlKGF0dHIpOworICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxl
VXBkYXRlKCk7CiAgICAgZWxzZQogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aAppbmRleCA4NWJmMTZmLi5lZWZlZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5oCkBAIC02Nyw2ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgSFRNTE9iamVjdEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50KiwgYm9v
bCBjcmVhdGVkQnlQYXJzZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0
dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRy
aWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOworCiAgICAgdmly
dHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGFyYWdyYXBoRWxlbWVudC5jcHAKaW5kZXggNmNjOWY1MS4uOGNmMWM0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5jcHAKQEAgLTQ0LDIwICs0NCwyNiBA
QCBQYXNzUmVmUHRyPEhUTUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFBh
cmFncmFwaEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBIVE1MUGFyYWdy
YXBoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQordm9pZCBIVE1MUGFy
YWdyYXBoRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwg
U3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGln
bkF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAg
ICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbik7Ci0gICAgICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJtaWRkbGUiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiY2VudGVyIikpCi0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOworICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJjZW50ZXIiKSkKKyAgICAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50
ZXIpOwogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAi
bGVmdCIpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24s
IENTU1ZhbHVlV2Via2l0TGVmdCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0TGVmdCk7CiAgICAgICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJyaWdodCIpKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0UmlnaHQp
OworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBD
U1NWYWx1ZVdlYmtpdFJpZ2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsK
ICAgICB9IGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0
ZShhdHRyLCBzdHlsZSk7Cit9CisKK3ZvaWQgSFRNTFBhcmFncmFwaEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWdu
QXR0cikKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UK
ICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKaW5kZXggMGM4YzI5MC4uNThkZDYy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaApAQCAtMzUs
NiArMzUsNyBAQCBwcml2YXRlOgogICAgIEhUTUxQYXJhZ3JhcGhFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JB
dHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpIE9WRVJSSURFOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmNwcAppbmRleCA2NmQ2MDkyLi5iN2MyOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtMTQwLDM0ICsxNDAsMzUgQEAgV2lkZ2V0KiBI
VE1MUGx1Z0luRWxlbWVudDo6cGx1Z2luV2lkZ2V0KCkKICAgICByZXR1cm4gcmVuZGVyV2lkZ2V0
LT53aWRnZXQoKTsKIH0KIAotdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQorc3RhdGljIGlubGluZSBib29sIGlzUmVzcGVjdGVkUHJlc2VudGF0
aW9uQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICByZXR1cm4gYXR0ci0+bmFtZSgp
ID09IHdpZHRoQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0ciB8fCBhdHRyLT5uYW1l
KCkgPT0gdnNwYWNlQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gYWxpZ25BdHRyOworfQorCit2b2lkIEhUTUxQbHVnSW5FbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHls
ZSkKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikKLSAgICAgICAgaWYgKGF0
dHItPmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlX
aWR0aCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHls
ZSwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGhlaWdodEF0dHIpCi0gICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKLSAgICAg
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0KTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1
ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWln
aHQsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2c3BhY2VB
dHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNT
U1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9t
KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlN
YXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1By
b3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBh
ZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFy
Z2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBoc3BhY2VBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKLSAgICAgICAgICAg
IHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1h
cmdpblJpZ2h0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NT
UHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xl
bmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQor
ICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQs
IGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBhbGlnbkF0dHIpCi0gICAgICAgIGFkZEhUTUxBbGlnbm1lbnQoYXR0cik7Cisg
ICAgICAgIGFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShhdHRyLCBzdHlsZSk7CisgICAg
ZWxzZSB7CisgICAgICAgIEFTU0VSVCghaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUo
YXR0cikpOworICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0
dHJpYnV0ZShhdHRyLCBzdHlsZSk7CisgICAgfQorfQorCit2b2lkIEhUTUxQbHVnSW5FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGlzUmVzcGVjdGVk
UHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHIpKQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0
eWxlVXBkYXRlKCk7CiAgICAgZWxzZQogICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5oCmluZGV4IDhjMjIxNDEuLjI3MDE3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmgKQEAgLTU5LDYgKzU5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJv
cGVydHlTZXQqKSBPVkVSUklERTsKIAogICAgIGJvb2wgbV9pbkJlZm9yZUxvYWRFdmVudEhhbmRs
ZXI7CiAgICAgLy8gU3ViY2xhc3NlcyBzaG91bGQgdXNlIGd1YXJkZWREaXNwYXRjaEJlZm9yZUxv
YWRFdmVudCBpbnN0ZWFkIG9mIGNhbGxpbmcgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgZGlyZWN0
bHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCmluZGV4IDdlZDg1ZmMuLjE3
MTZlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuY3BwCkBAIC00Miw2ICs0
MiwxNCBAQCBQYXNzUmVmUHRyPEhUTUxQcmVFbGVtZW50PiBIVE1MUHJlRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MUHJlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCit2b2lkIEhUTUxQcmVFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3Bl
cnR5U2V0KiBzdHlsZSkKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdyYXBBdHRyKQorICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVdy
YXApOworICAgIGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJp
YnV0ZShhdHRyLCBzdHlsZSk7Cit9CisKIHZvaWQgSFRNTFByZUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0
cikgewpAQCAtNDksMTIgKzU3LDkgQEAgdm9pZCBIVE1MUHJlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAvLyB3ZSBzaG91bGQgc2l6ZSB0aGUgcHJlIHRv
LiAgV2UgYmFzaWNhbGx5IG5lZWQgdG8gdGFrZSB0aGUgd2lkdGggb2YgYSBzcGFjZSwKICAgICAg
ICAgLy8gbXVsdGlwbHkgYnkgdGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUgYW5kIHRoZW4gc2V0
IHRoYXQgYXMgdGhlIHdpZHRoIENTUwogICAgICAgICAvLyBwcm9wZXJ0eS4KLSAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSB3cmFwQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+dmFsdWUo
KS5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2hp
dGVTcGFjZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVQcmVXcmFwKTsKLSAgICB9IGVsc2UKKyAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSB3cmFwQXR0cikKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1
dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UKICAgICAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5o
CmluZGV4IDNhZDMxNTIuLjg2MmRjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50
LmgKQEAgLTM1LDYgKzM1LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MUHJlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxl
Rm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5jcHAKaW5kZXggODg0NTBkNC4uZWM1MzE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAKQEAgLTQ0LDE1
ICs0NCwyMSBAQCBQYXNzUmVmUHRyPEhUTUxUYWJsZUNhcHRpb25FbGVtZW50PiBIVE1MVGFibGVD
YXB0aW9uRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZgogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9p
ZCBIVE1MVGFibGVDYXB0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQordm9pZCBIVE1MVGFibGVDYXB0aW9uRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q2FwdGlvblNp
ZGUsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUNhcHRpb25TaWRlKTsKKyAgICAgICAgaWYgKCFhdHRyLT5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlDYXB0aW9u
U2lkZSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIEhUTUxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShhdHRyKTsKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZv
ckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7IC8vIE5vdGUgdGhhdCB3ZSBhcmUgYnlwYXNzaW5nIEhU
TUxUYWJsZVBhcnRFbGVtZW50IGhlcmUuCit9CisKK3ZvaWQgSFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAoYXR0ci0+bmFt
ZSgpID09IGFsaWduQXR0cikKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgp
OworICAgIGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOyAv
LyBOb3RlIHRoYXQgd2UgYXJlIGJ5cGFzc2luZyBIVE1MVGFibGVQYXJ0RWxlbWVudCBoZXJlLgog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgK
aW5kZXggZGE0MGU4Mi4uODI3Y2MwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDYXB0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBwcml2YXRlOgogICAgIEhUTUxU
YWJsZUNhcHRpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQ
cm9wZXJ0eVNldCopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXggODRhMWM5Ni4uOTg3ZmVj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAg
LTc1LDM0ICs3NSw0MyBAQCBpbnQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNlbGxJbmRleCgpIGNv
bnN0CiAgICAgcmV0dXJuIGluZGV4OwogfQogCi12b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNSZXNw
ZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewotICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gcm93c3BhbkF0dHIpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYg
cmVuZGVyZXIoKS0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyVGFibGVDZWxs
KHJlbmRlcmVyKCkpLT5jb2xTcGFuT3JSb3dTcGFuQ2hhbmdlZCgpOwotICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IGNvbHNwYW5BdHRyKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpICYm
IHJlbmRlcmVyKCktPmlzVGFibGVDZWxsKCkpCi0gICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2Vs
bChyZW5kZXJlcigpKS0+Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQoKTsKLSAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBub3dyYXBBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT5pc051bGwo
KSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2hp
dGVTcGFjZSwgQ1NTVmFsdWVXZWJraXROb3dyYXApOworICAgIHJldHVybiBhdHRyLT5uYW1lKCkg
PT0gbm93cmFwQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyIHx8IGF0dHItPm5hbWUo
KSA9PSBoZWlnaHRBdHRyOworfQogCit2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHls
ZSkKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IG5vd3JhcEF0dHIpIHsKKyAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVXZWJraXROb3dy
YXApOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikgewogICAgICAg
ICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpbnQgd2lkdGhJ
bnQgPSBhdHRyLT52YWx1ZSgpLnRvSW50KCk7CiAgICAgICAgICAgICBpZiAod2lkdGhJbnQgPiAw
KSAvLyB3aWR0aD0iMCIgaXMgaWdub3JlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgot
ICAgICAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1
ZSgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdpZHRoKTsKKyAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxl
LCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52
YWx1ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaW50IGhlaWdodEludCA9IGF0dHItPnZh
bHVlKCkudG9JbnQoKTsKICAgICAgICAgICAgIGlmIChoZWlnaHRJbnQgPiAwKSAvLyBoZWlnaHQ9
IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KLSAgICAgICAgICAg
ICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVp
Z2h0KTsKKyAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICBBU1NFUlQoIWlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHIpKTsKKyAg
ICAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRy
LCBzdHlsZSk7CisgICAgfQorfQorCit2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGlzUmVzcGVjdGVkUHJlc2VudGF0
aW9uQXR0cmlidXRlKGF0dHIpKQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRl
KCk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHJvd3NwYW5BdHRyKSB7CisgICAgICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzVGFibGVDZWxsKCkpCisgICAgICAgICAg
ICB0b1JlbmRlclRhYmxlQ2VsbChyZW5kZXJlcigpKS0+Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQo
KTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb2xzcGFuQXR0cikgeworICAgICAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxlQ2VsbCgpKQorICAgICAgICAg
ICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFuZ2Vk
KCk7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxUYWJsZVBhcnRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aAppbmRleCA1YzMyZDZhLi5mY2RmMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5oCkBAIC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTFRhYmxl
Q2VsbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5
U2V0KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFN0eWxlUHJvcGVydHlTZXQqIGFkZGl0aW9u
YWxBdHRyaWJ1dGVTdHlsZSgpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDb2xFbGVtZW50LmNwcAppbmRleCAwYzgzZTc4Li43YjU0ZGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKQEAgLTQ3LDYgKzQ3LDE0IEBAIFBh
c3NSZWZQdHI8SFRNTFRhYmxlQ29sRWxlbWVudD4gSFRNTFRhYmxlQ29sRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVD
b2xFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK3ZvaWQgSFRNTFRhYmxlQ29sRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9w
ZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpCisg
ICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHIt
PnZhbHVlKCkpOworICAgIGVsc2UKKyAgICAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7Cit9CisKIHZvaWQgSFRNTFRhYmxlQ29s
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gc3BhbkF0dHIpIHsKQEAgLTU0LDE2ICs2MiwxNSBAQCB2b2lkIEhUTUxUYWJs
ZUNvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgaWYg
KHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJsZUNvbCgpKQogICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSB3aWR0aEF0dHIpIHsKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgp
OwogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgICAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxlQ29sKCkpIHsKICAgICAgICAg
ICAgICAgICBSZW5kZXJUYWJsZUNvbCogY29sID0gdG9SZW5kZXJUYWJsZUNvbChyZW5kZXJlcigp
KTsKICAgICAgICAgICAgICAgICBpbnQgbmV3V2lkdGggPSB3aWR0aCgpLnRvSW50KCk7CiAgICAg
ICAgICAgICAgICAgaWYgKG5ld1dpZHRoICE9IGNvbC0+d2lkdGgoKSkKICAgICAgICAgICAgICAg
ICAgICAgY29sLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdpZHRoKTsKKyAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBIVE1MVGFibGVQ
YXJ0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlQ29sRWxlbWVudC5oCmluZGV4IDAxY2VhOGUuLjE3ZjBiNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oCkBAIC00Myw2ICs0Myw3IEBAIHByaXZh
dGU6CiAgICAgSFRNTFRhYmxlQ29sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0
ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
QXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3R5
bGVQcm9wZXJ0eVNldCogYWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlKCkgT1ZFUlJJREU7CiAKICAg
ICBpbnQgbV9zcGFuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5k
ZXggYmUzYWFhMi4uMjIzN2M4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgog
CiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgpAQCAtMjY2LDEwMiArMjY3LDEyMSBAQCBzdGF0
aWMgYm9vbCBzZXRUYWJsZUNlbGxzQ2hhbmdlZChOb2RlKiBuKQogICAgIHJldHVybiBjZWxsQ2hh
bmdlZDsKIH0KIAorc3RhdGljIGJvb2wgZ2V0Qm9yZGVyc0Zyb21GcmFtZUF0dHJpYnV0ZVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIGJvb2wmIGJvcmRlclRvcCwgYm9vbCYgYm9yZGVy
UmlnaHQsIGJvb2wmIGJvcmRlckJvdHRvbSwgYm9vbCYgYm9yZGVyTGVmdCkKK3sKKyAgICBib3Jk
ZXJUb3AgPSBmYWxzZTsKKyAgICBib3JkZXJSaWdodCA9IGZhbHNlOworICAgIGJvcmRlckJvdHRv
bSA9IGZhbHNlOworICAgIGJvcmRlckxlZnQgPSBmYWxzZTsKKworICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZSwgInZvaWQiKSkKKyAgICAgICAgOworICAgIGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHZhbHVlLCAiYWJvdmUiKSkKKyAgICAgICAgYm9yZGVyVG9wID0gdHJ1ZTsKKyAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImJlbG93IikpCisgICAgICAgIGJv
cmRlckJvdHRvbSA9IHRydWU7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUs
ICJoc2lkZXMiKSkKKyAgICAgICAgYm9yZGVyVG9wID0gYm9yZGVyQm90dG9tID0gdHJ1ZTsKKyAg
ICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInZzaWRlcyIpKQorICAgICAgICBi
b3JkZXJMZWZ0ID0gYm9yZGVyUmlnaHQgPSB0cnVlOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKHZhbHVlLCAibGhzIikpCisgICAgICAgIGJvcmRlckxlZnQgPSB0cnVlOworICAgIGVs
c2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAicmhzIikpCisgICAgICAgIGJvcmRlclJp
Z2h0ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImJveCIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiYm9yZGVyIikpCisgICAgICAgIGJvcmRlclRv
cCA9IGJvcmRlckJvdHRvbSA9IGJvcmRlckxlZnQgPSBib3JkZXJSaWdodCA9IHRydWU7CisgICAg
ZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
SFRNTFRhYmxlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3
aWR0aEF0dHIpCisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWln
aHRBdHRyKQorICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhl
aWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRl
ckF0dHIpIHsKKyAgICAgICAgaW50IGJvcmRlciA9IGF0dHItPmlzRW1wdHkoKSA/IDEgOiBhdHRy
LT52YWx1ZSgpLnRvSW50KCk7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFN0cmluZzo6bnVtYmVyKGJvcmRlcikpOyAvLyBGSVhNRTog
UGFzcyBhcyBpbnRlZ2VyLgorICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlcmNv
bG9yQXR0cikgeworICAgICAgICBpZiAoIWF0dHItPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFk
ZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFs
dWUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIpCisgICAg
ICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Is
IGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5k
QXR0cikgeworICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKGF0dHItPnZhbHVlKCkpOworICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kSW1hZ2UsIENTU0ltYWdlVmFsdWU6OmNyZWF0ZShkb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1
cmwpLnN0cmluZygpKSkpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZhbGlnbkF0
dHIpIHsKKyAgICAgICAgaWYgKCFhdHRyLT5pc0VtcHR5KCkpCisgICAgICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjZWxsc3BhY2luZ0F0dHIpIHsKKyAgICAgICAg
aWYgKCFhdHRyLT5pc0VtcHR5KCkpCisgICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsIGF0dHItPnZhbHVlKCkpOworICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0dHIpIHsKKyAgICAgICAgYWRkQ1NTTGVuZ3Ro
VG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOworICAg
ICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwg
YXR0ci0+dmFsdWUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0
cikgeworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdp
bkxlZnQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxl
LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKKyAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgp
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZh
bHVlKCksICJjZW50ZXIiKSkgeworICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0LCBDU1NWYWx1ZUF1dG8pOworICAgICAgICAgICAg
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkVuZCwgQ1NTVmFs
dWVBdXRvKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHJ1bGVzQXR0cikgeworICAgICAgICAvLyBUaGUg
cHJlc2VuY2Ugb2YgYSB2YWxpZCBydWxlcyBhdHRyaWJ1dGUgY2F1c2VzIGJvcmRlciBjb2xsYXBz
aW5nIHRvIGJlIGVuYWJsZWQuCisgICAgICAgIGlmIChtX3J1bGVzQXR0ciAhPSBVbnNldFJ1bGVz
KQorICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFw
c2UsIENTU1ZhbHVlQ29sbGFwc2UpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZy
YW1lQXR0cikgeworICAgICAgICBib29sIGJvcmRlclRvcDsKKyAgICAgICAgYm9vbCBib3JkZXJS
aWdodDsKKyAgICAgICAgYm9vbCBib3JkZXJCb3R0b207CisgICAgICAgIGJvb2wgYm9yZGVyTGVm
dDsKKyAgICAgICAgaWYgKGdldEJvcmRlcnNGcm9tRnJhbWVBdHRyaWJ1dGVWYWx1ZShhdHRyLT52
YWx1ZSgpLCBib3JkZXJUb3AsIGJvcmRlclJpZ2h0LCBib3JkZXJCb3R0b20sIGJvcmRlckxlZnQp
KSB7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BX
aWR0aCwgQ1NTVmFsdWVUaGluKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NWYWx1ZVRoaW4p
OworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRX
aWR0aCwgQ1NTVmFsdWVUaGluKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBib3JkZXJUb3AgPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFs
dWVIaWRkZW4pOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tU3R5bGUsIGJvcmRlckJvdHRvbSA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1ZUhp
ZGRlbik7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0U3R5bGUsIGJvcmRlckxlZnQgPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOwor
ICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHls
ZSwgYm9yZGVyUmlnaHQgPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOworICAgICAg
ICB9CisgICAgfSBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRy
aWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCiB2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBDZWxsQm9yZGVycyBib3JkZXJzQmVmb3Jl
ID0gY2VsbEJvcmRlcnMoKTsKICAgICB1bnNpZ25lZCBzaG9ydCBvbGRQYWRkaW5nID0gbV9wYWRk
aW5nOwogCi0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIGlmIChh
dHRyLT5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5
V2lkdGgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVy
dHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhl
aWdodEF0dHIpCi0gICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0
ciB8fCBhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGJhY2tn
cm91bmRBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSB2YWxpZ25BdHRyIHx8IGF0dHItPm5hbWUoKSA9
PSB2c3BhY2VBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBoc3BhY2VBdHRyIHx8IGF0dHItPm5hbWUo
KSA9PSBhbGlnbkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGNlbGxzcGFjaW5nQXR0cikKKyAgICAg
ICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBib3JkZXJBdHRyKSAgeworICAgICAgICAvLyBGSVhNRTogVGhpcyBhdHRyaWJ1dGUg
aXMgYSBtZXNzLgogICAgICAgICBtX2JvcmRlckF0dHIgPSB0cnVlOwotCi0gICAgICAgIGlmIChh
dHRyLT5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5
Qm9yZGVyV2lkdGgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGludCBib3JkZXIgPSAw
OwotICAgICAgICAgICAgaWYgKGF0dHItPmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBib3Jk
ZXIgPSAxOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJvcmRlciA9IGF0dHIt
PnZhbHVlKCkudG9JbnQoKTsKKyAgICAgICAgaWYgKCFhdHRyLT5pc051bGwoKSkgeworICAgICAg
ICAgICAgaW50IGJvcmRlciA9IGF0dHItPmlzRW1wdHkoKSA/IDEgOiBhdHRyLT52YWx1ZSgpLnRv
SW50KCk7CiAgICAgICAgICAgICBtX2JvcmRlckF0dHIgPSBib3JkZXI7Ci0gICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgU3RyaW5nOjpudW1iZXIoYm9yZGVy
KSk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0
cikKLSAgICAgICAgaWYgKGF0dHItPmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlcmNvbG9yQXR0cikgeworICAg
ICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CisgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gYm9yZGVyY29sb3JBdHRyKSB7CiAgICAgICAgIG1fYm9yZGVyQ29sb3JBdHRy
ID0gIWF0dHItPmlzRW1wdHkoKTsKLSAgICAgICAgaWYgKCFhdHRyLT5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBhdHRyLT52YWx1ZSgp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJDb2xvcik7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmFja2dyb3Vu
ZEF0dHIpIHsKLSAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRN
TFNwYWNlcyhhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwg
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlKTsK
KyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IGZyYW1lQXR0cikgewotICAgICAgICAvLyBDYWNoZSB0aGUgdmFsdWUg
b2YgImZyYW1lIiBzbyB0aGF0IHRoZSB0YWJsZSBjYW4gZXhhbWluZSBpdCBsYXRlci4KLSAgICAg
ICAgbV9mcmFtZUF0dHIgPSBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIC8vIFdoZXRoZXIgb3Ig
bm90IHRvIGhpZGUgdGhlIHRvcC9yaWdodC9ib3R0b20vbGVmdCBib3JkZXJzLgotICAgICAgICBj
b25zdCBpbnQgY1RvcCA9IDA7Ci0gICAgICAgIGNvbnN0IGludCBjUmlnaHQgPSAxOwotICAgICAg
ICBjb25zdCBpbnQgY0JvdHRvbSA9IDI7Ci0gICAgICAgIGNvbnN0IGludCBjTGVmdCA9IDM7Ci0g
ICAgICAgIGJvb2wgYm9yZGVyc1s0XSA9IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgfTsK
LSAgICAgICAgCi0gICAgICAgIC8vIHZvaWQsIGFib3ZlLCBiZWxvdywgaHNpZGVzLCB2c2lkZXMs
IGxocywgcmhzLCBib3gsIGJvcmRlcgotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0
ci0+dmFsdWUoKSwgInZvaWQiKSkKLSAgICAgICAgICAgIG1fZnJhbWVBdHRyID0gdHJ1ZTsKLSAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImFib3ZlIikp
IHsKLSAgICAgICAgICAgIG1fZnJhbWVBdHRyID0gdHJ1ZTsKLSAgICAgICAgICAgIGJvcmRlcnNb
Y1RvcF0gPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHIt
PnZhbHVlKCksICJiZWxvdyIpKSB7Ci0gICAgICAgICAgICBtX2ZyYW1lQXR0ciA9IHRydWU7Ci0g
ICAgICAgICAgICBib3JkZXJzW2NCb3R0b21dID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiaHNpZGVzIikpIHsKLSAgICAgICAgICAg
IG1fZnJhbWVBdHRyID0gdHJ1ZTsKLSAgICAgICAgICAgIGJvcmRlcnNbY1RvcF0gPSBib3JkZXJz
W2NCb3R0b21dID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
dHRyLT52YWx1ZSgpLCAidnNpZGVzIikpIHsKLSAgICAgICAgICAgIG1fZnJhbWVBdHRyID0gdHJ1
ZTsKLSAgICAgICAgICAgIGJvcmRlcnNbY0xlZnRdID0gYm9yZGVyc1tjUmlnaHRdID0gdHJ1ZTsK
LSAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibGhz
IikpIHsKLSAgICAgICAgICAgIG1fZnJhbWVBdHRyID0gdHJ1ZTsKLSAgICAgICAgICAgIGJvcmRl
cnNbY0xlZnRdID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
dHRyLT52YWx1ZSgpLCAicmhzIikpIHsKLSAgICAgICAgICAgIG1fZnJhbWVBdHRyID0gdHJ1ZTsK
LSAgICAgICAgICAgIGJvcmRlcnNbY1JpZ2h0XSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImJveCIpIHx8Ci0gICAgICAgICAgICAg
ICAgICAgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImJvcmRlciIpKSB7Ci0gICAg
ICAgICAgICBtX2ZyYW1lQXR0ciA9IHRydWU7Ci0gICAgICAgICAgICBib3JkZXJzW2NUb3BdID0g
Ym9yZGVyc1tjQm90dG9tXSA9IGJvcmRlcnNbY0xlZnRdID0gYm9yZGVyc1tjUmlnaHRdID0gdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gTm93IG1hcCBpbiB0aGUgYm9yZGVy
IHN0eWxlcyBvZiBzb2xpZCBhbmQgaGlkZGVuIHJlc3BlY3RpdmVseS4KLSAgICAgICAgaWYgKG1f
ZnJhbWVBdHRyKSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoLCBDU1NWYWx1ZVRoaW4pOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTVmFsdWVUaGluKTsKLSAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NWYWx1ZVRoaW4pOwot
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBD
U1NWYWx1ZVRoaW4pOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZSwgYm9yZGVyc1tjVG9wXSA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1ZUhpZGRl
bik7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlLCBib3JkZXJzW2NCb3R0b21dID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsK
LSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBi
b3JkZXJzW2NMZWZ0XSA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1ZUhpZGRlbik7Ci0gICAgICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIGJvcmRlcnNb
Y1JpZ2h0XSA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1ZUhpZGRlbik7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eUJvcmRlclRvcFdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRT
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlKTsKKyAgICAgICAgLy8gRklYTUU6IFRo
aXMgYXR0cmlidXRlIGlzIGEgbWVzcy4KKyAgICAgICAgYm9vbCBib3JkZXJUb3A7CisgICAgICAg
IGJvb2wgYm9yZGVyUmlnaHQ7CisgICAgICAgIGJvb2wgYm9yZGVyQm90dG9tOworICAgICAgICBi
b29sIGJvcmRlckxlZnQ7CisgICAgICAgIG1fZnJhbWVBdHRyID0gZ2V0Qm9yZGVyc0Zyb21GcmFt
ZUF0dHJpYnV0ZVZhbHVlKGF0dHItPnZhbHVlKCksIGJvcmRlclRvcCwgYm9yZGVyUmlnaHQsIGJv
cmRlckJvdHRvbSwgYm9yZGVyTGVmdCk7CisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVV
cGRhdGUoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBydWxlc0F0dHIpIHsKICAg
ICAgICAgbV9ydWxlc0F0dHIgPSBVbnNldFJ1bGVzOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm5vbmUiKSkKQEAgLTM3NCwxNyArMzk0LDggQEAgdm9pZCBI
VE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAg
ICAgICBtX3J1bGVzQXR0ciA9IENvbHNSdWxlczsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGF0dHItPnZhbHVlKCksICJhbGwiKSkKICAgICAgICAgICAgIG1fcnVsZXNBdHRyID0gQWxs
UnVsZXM7Ci0gICAgICAgIAotICAgICAgICAvLyBUaGUgcHJlc2VuY2Ugb2YgYSB2YWxpZCBydWxl
cyBhdHRyaWJ1dGUgY2F1c2VzIGJvcmRlciBjb2xsYXBzaW5nIHRvIGJlIGVuYWJsZWQuCi0gICAg
ICAgIGlmIChtX3J1bGVzQXR0ciAhPSBVbnNldFJ1bGVzKQotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZSwgQ1NTVmFsdWVDb2xsYXBzZSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVy
Q29sbGFwc2UpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNlbGxzcGFjaW5nQXR0
cikgewotICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgYXR0ci0+dmFsdWUoKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9y
ZGVyU3BhY2luZyk7CisKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNlbGxwYWRkaW5nQXR0cikgewogICAgICAg
ICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9wYWRkaW5nID0g
bWF4KDAsIGF0dHItPnZhbHVlKCkudG9JbnQoKSk7CkBAIC0zOTIsMzQgKzQwMyw2IEBAIHZvaWQg
SFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAg
ICAgICAgbV9wYWRkaW5nID0gMTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb2xz
QXR0cikgewogICAgICAgICAvLyAjIyMKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2
c3BhY2VBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKLSAgICAgICAgICAgIHJl
bW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2lu
Qm90dG9tKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJv
cGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3Ro
KENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQotICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhzcGFjZUF0dHIpIHsKLSAgICAgICAgaWYgKGF0
dHItPmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0
eU1hcmdpbkxlZnQsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZhbHVl
KCkpOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0
dHItPnZhbHVlKCkpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
YWxpZ25BdHRyKSB7Ci0gICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiY2VudGVyIikp
IHsKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
blN0YXJ0LCBDU1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kLCBDU1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCwgYXR0
ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dGllcyhDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkVuZCwgQ1NTUHJvcGVydHlGbG9hdCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
dmFsaWduQXR0cikgewotICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52
YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlWZXJ0aWNhbEFsaWduKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oCmluZGV4IGVmOGNjZGUuLmVlMDgxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5oCkBAIC03Myw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgSFRNTFRhYmxlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7
CiAKICAgICAvLyBVc2VkIHRvIG9idGFpbiBlaXRoZXIgYSBzb2xpZCBvciBvdXRzZXQgYm9yZGVy
IGRlY2wgYW5kIHRvIGRlYWwgd2l0aCB0aGUgZnJhbWUgYW5kIHJ1bGVzIGF0dHJpYnV0ZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCmluZGV4IDhmZDc0
N2IuLjg4NmIzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFy
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1l
bnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlUGFydEVsZW1lbnQu
aCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC0zNiw1MyArMzcsNTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi12b2lkIEhUTUxUYWJs
ZVBhcnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCitzdGF0aWMgaW5s
aW5lIGJvb2wgaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQoreworICAgIHJldHVybiBhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIgfHwgYXR0ci0+bmFt
ZSgpID09IGJhY2tncm91bmRBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBib3JkZXJjb2xvckF0dHIg
fHwgYXR0ci0+bmFtZSgpID09IHZhbGlnbkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGFsaWduQXR0
ciB8fCBhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0cjsKK30KKwordm9pZCBIVE1MVGFibGVQYXJ0
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQ
cm9wZXJ0eVNldCogc3R5bGUpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0
cikKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGJhY2tncm91bmRBdHRyKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICghdXJs
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0ltYWdlUHJvcGVydHkoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kSW1hZ2UsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRJbWFnZSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIENTU0ltYWdlVmFsdWU6OmNyZWF0ZShkb2N1
bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKSkpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGJvcmRlcmNvbG9yQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVl
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRl
ckNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NT
VmFsdWVTb2xpZCk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgQ1NTUHJvcGVydHlC
b3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSk7CisgICAgICAgICAg
ICBhZGRDU1NDb2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGF0dHIt
PnZhbHVlKCkpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAg
ICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NW
YWx1ZVNvbGlkKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gdmFsaWduQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVl
KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0
aWNhbEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVt
b3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKTsKKyAgICAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGF0dHItPnZhbHVlKCkp
OwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewotICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHYgPSBhdHRyLT52YWx1ZSgpOwotICAgICAgICBpZiAodi5pc051
bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWdu
KTsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodiwgIm1pZGRsZSIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKHYsICJjZW50ZXIiKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdENlbnRlcik7Ci0gICAgICAgIGVs
c2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHYsICJhYnNtaWRkbGUiKSkKLSAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZUNlbnRlcik7Ci0gICAg
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHYsICJsZWZ0IikpCi0gICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRMZWZ0KTsK
LSAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodiwgInJpZ2h0IikpCi0gICAgICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRS
aWdodCk7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibWlk
ZGxlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImNlbnRlciIpKQorICAg
ICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1
ZVdlYmtpdENlbnRlcik7CisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHIt
PnZhbHVlKCksICJhYnNtaWRkbGUiKSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVDZW50ZXIpOworICAgICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibGVmdCIpKQorICAgICAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQp
OworICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAicmln
aHQiKSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGln
biwgQ1NTVmFsdWVXZWJraXRSaWdodCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCB2KTsKKyAgICAgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0cikgewogICAgICAgICBpZiAoIWF0dHIt
PnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5
SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3Zl
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOwotICAgIH0gZWxzZQorICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVl
KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVCghaXNSZXNwZWN0ZWRQcmVzZW50YXRp
b25BdHRyaWJ1dGUoYXR0cikpOworICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
QXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTFRhYmxlUGFydEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAoaXNSZXNw
ZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoYXR0cikpCisgICAgICAgIHNldE5lZWRzQXR0cmli
dXRlU3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShhdHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVQYXJ0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxl
bWVudC5oCmluZGV4IGMxMzliYmUuLjJlYjcwZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVBhcnRFbGVtZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgcHJvdGVjdGVkOgogICAgIH0K
IAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0
eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGJmZjc1NzQuLjA5MWY2
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAt
MTE3LDcgKzExNywyMSBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbgogICAgIHNldElubmVyVGV4
dFZhbHVlKHZhbHVlKCkpOwogICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdl
ZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwog
fQotICAgIAorCit2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQoreworICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gd3JhcEF0dHIpIHsKKyAgICAgICAgaWYgKHNob3VsZFdyYXBUZXh0
KCkpIHsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2UsIENTU1ZhbHVlUHJlV3JhcCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dvcmQpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NT
VmFsdWVQcmUpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V29y
ZFdyYXAsIENTU1ZhbHVlTm9ybWFsKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIs
IHN0eWxlKTsKK30KKwogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSByb3dzQXR0cikgewpA
QCAtMTUwLDE0ICsxNjQsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgIHdyYXAgPSBTb2Z0V3JhcDsKICAgICAg
ICAgaWYgKHdyYXAgIT0gbV93cmFwKSB7CiAgICAgICAgICAgICBtX3dyYXAgPSB3cmFwOwotCi0g
ICAgICAgICAgICBpZiAoc2hvdWxkV3JhcFRleHQoKSkgewotICAgICAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVQcmVXcmFwKTsKLSAgICAg
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJy
ZWFrV29yZCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVQcmUpOwotICAgICAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlTm9ybWFsKTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUo
KTsKIAogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVy
ZXIoKS0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGMyYmJjNzEuLjlkNzM0OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC05NCw2ICs5NCw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVj
dFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0
YUxpc3QmLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCmluZGV4IGNjM2MwNjkuLjEwOTk0OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcApAQCAtNDcsMTMgKzQ3LDE4IEBAIFBh
c3NSZWZQdHI8SFRNTFVMaXN0RWxlbWVudD4gSFRNTFVMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVUxpc3RF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK3ZvaWQgSFRNTFVMaXN0RWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNl
dCogc3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0eXBlQXR0cikKKyAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgYXR0ci0+dmFsdWUo
KSk7CisgICAgZWxzZQorICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmli
dXRlKGF0dHIsIHN0eWxlKTsKK30KKwogdm9pZCBIVE1MVUxpc3RFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0eXBlQXR0
cikKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIGF0dHIt
PnZhbHVlKCkpOworICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAg
ZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCmluZGV4IGM3ODY3NDYuLmFiYjIxOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIHBy
aXZhdGU6CiAgICAgSFRNTFVMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0
ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDZiM2ZjNWIuLjU1NTg0
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtOTUsNiAr
OTUsMTYgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkZXRhY2goKQogICAgICAgICBtX2ltYWdl
TG9hZGVyLmNsZWFyKCk7CiB9CiAKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7
CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpCisgICAgICAgIGFkZENTU0xlbmd0
aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKQorICAgICAgICBhZGRDU1NMZW5ndGhU
b1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxz
ZQorICAgICAgICBIVE1MTWVkaWFFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0
ciwgc3R5bGUpOworfQorCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IGF0
dHItPm5hbWUoKTsKQEAgLTExNSwxNiArMTI1LDggQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgICAgICAgICAgdG9SZW5kZXJJ
bWFnZShyZW5kZXJlcigpKS0+aW1hZ2VSZXNvdXJjZSgpLT5zZXRDYWNoZWRJbWFnZSgwKTsgCiAg
ICAgICAgIH0KICNlbmRpZgotICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gd2lkdGhBdHRyKQot
ICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNT
U1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgZWxzZSBp
ZiAoYXR0ck5hbWUgPT0gaGVpZ2h0QXR0cikKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNO
dWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdo
dCwgYXR0ci0+dmFsdWUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIg
fHwgYXR0ck5hbWUgPT0gaGVpZ2h0QXR0cikKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHls
ZVVwZGF0ZSgpOwogICAgIGVsc2UKICAgICAgICAgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4
IGU4ZjYzMzEuLmZlODhhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CkBAIC03Niw2ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZv
ckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzVmlkZW8oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIGhhc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gcGxheWVyKCkgJiYgcGxheWVyKCktPmhh
c1ZpZGVvKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggODMwYWQ0NS4uMDM1
YTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtNDgsMjkg
KzQ4LDQ0IEBAIFBhc3NSZWZQdHI8TWF0aE1MRWxlbWVudD4gTWF0aE1MRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNYXRoTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgTWF0aE1MRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQorc3RhdGljIGlubGluZSBib29s
IGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAg
ICByZXR1cm4gYXR0ci0+bmFtZSgpID09IG1hdGhiYWNrZ3JvdW5kQXR0ciB8fCBhdHRyLT5uYW1l
KCkgPT0gbWF0aHNpemVBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBtYXRoY29sb3JBdHRyIHx8IGF0
dHItPm5hbWUoKSA9PSBmb250c2l6ZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGJhY2tncm91bmRB
dHRyIHx8IGF0dHItPm5hbWUoKSA9PSBjb2xvckF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGZvbnRz
dHlsZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGZvbnR3ZWlnaHRBdHRyIHx8IGF0dHItPm5hbWUo
KSA9PSBmb250ZmFtaWx5QXR0cjsKK30KKwordm9pZCBNYXRoTUxFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkK
IHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IG1hdGhiYWNrZ3JvdW5kQXR0cikKLSAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkp
OworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Is
IGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtYXRoc2l6ZUF0
dHIpIHsKICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0aHJlZSB2YWx1ZXMgb2YgbWF0aHNpemUg
YXJlIGhhbmRsZWQgaW4gV2ViQ29yZS9jc3MvbWF0aG1sLmNzcwogICAgICAgICBpZiAoYXR0ci0+
dmFsdWUoKSAhPSAibm9ybWFsIiAmJiBhdHRyLT52YWx1ZSgpICE9ICJzbWFsbCIgJiYgYXR0ci0+
dmFsdWUoKSAhPSAiYmlnIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFNpemUsIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udFNpemUsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG1hdGhjb2xvckF0dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgLy8gRklYTUU6IGRlcHJlY2F0
ZWQgYXR0cmlidXRlcyB0aGF0IHNob3VsZCBsb29zZSBpbiBhIGNvbmZsaWN0IHdpdGggYSBub24g
ZGVwcmVjYXRlZCBhdHRyaWJ1dGUKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZm9udHNp
emVBdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBhdHRy
LT52YWx1ZSgpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNp
emUsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiYWNrZ3Jv
dW5kQXR0cikKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBjb2xvckF0dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q29s
b3IsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZv
bnRzdHlsZUF0dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFN0eWxl
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFN0eWxlLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
Zm9udHdlaWdodEF0dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdl
aWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUZvbnRXZWlnaHQsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBmb250ZmFtaWx5QXR0cikKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlG
b250RmFtaWx5LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5Rm9udEZhbWlseSwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSB7CisgICAgICAg
IEFTU0VSVCghaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoYXR0cikpOworICAgICAg
ICBTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOwor
ICAgIH0KK30KKwordm9pZCBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHIpCit7CisgICAgaWYgKGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHIp
KQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAgZWxzZQogICAg
ICAgICBTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IDIwMWYwODMuLmJjNGE5NjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtNDMsNiArNDMsNyBAQCBwcm90ZWN0ZWQ6CiBw
cml2YXRlOiAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0
dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIH07CiAgICAgCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGJmMTBhMWUuLjFiMzAwYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC05MSw2ICs5MSwxNCBAQCBi
b29sIFNWR0ltYWdlRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8
UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0K
IAordm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQoreworICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKK30KKwogdm9pZCBTVkdJbWFnZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBTVkdQYXJzaW5nRXJy
b3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CkBAIC0xMDUsMTAgKzExMywxMCBAQCB2b2lkIFNWR0lt
YWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvOjpwYXJzZVByZXNlcnZlQXNwZWN0UmF0aW8odGhpcywgYXR0ci0+
dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0aEF0
dHIpIHsKICAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxl
bmd0aHMpKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewogICAgICAg
ICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdo
dCwgYXR0ci0+dmFsdWUoKSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7Ci0g
ICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgIH0gZWxzZSBpZiAo
U1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGF0dHIpCiAgICAgICAgICAgICAgfHwgU1ZHTGFuZ1Nw
YWNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyKQogICAgICAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKaW5kZXggMWZiYmIwZi4uNGVkZDAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuaApAQCAtNTAsNiArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBj
b2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA1MThiNWIzLi42MmZhZDU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0yOTIsMTIgKzI5MiwxOSBAQCBib29s
IFNWR1N0eWxlZEVsZW1lbnQ6OmlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpLmNvbnRh
aW5zKGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKK3sK
KyAgICBpbnQgcHJvcGVydHlJRCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JT
VkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CisgICAgaWYgKHByb3BlcnR5SUQgPiAwKQor
ICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0ci0+dmFsdWUoKSk7Cisg
ICAgZWxzZQorICAgICAgICBTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
YXR0ciwgc3R5bGUpOworfQorCiB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBpbnQgcHJvcElkID0gU1ZHU3R5bGVkRWxlbWVudDo6
Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKTsKLSAgICBpZiAo
cHJvcElkID4gMCkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShwcm9wSWQsIGF0dHItPnZhbHVl
KCkpOwotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgaWYgKFNWR1N0eWxlZEVs
ZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkgPiAw
KSB7CisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCmluZGV4
IDNkZjRjOTMuLjA4NDk4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaApA
QCAtNjYsNiArNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IGM4ZGZkYzUuLjk5NzA3MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCkBAIC0yMjgs
NiArMjI4LDE4IEBAIGJvb2wgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVk
QXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNs
YXRvcj4oYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6Y29sbGVj
dFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIp
KSB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBwcmVz
ZXJ2ZVN0cmluZywgKCJwcmVzZXJ2ZSIpKTsKKworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9
PSBwcmVzZXJ2ZVN0cmluZykKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVOb3dyYXAp
OworICAgIH0KK30KKwogdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5v
RXJyb3I7CkBAIC0yNDMsMTQgKzI1NSw4IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgfSBlbHNlIGlmIChTVkdUZXN0czo6
cGFyc2VBdHRyaWJ1dGUoYXR0cikKICAgICAgICAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpKSB7CiAgICAgfSBlbHNlIGlmIChTVkdM
YW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHIpKSB7Ci0gICAgICAgIGlmIChhdHRyLT5uYW1l
KCkubWF0Y2hlcyhYTUxOYW1lczo6c3BhY2VBdHRyKSkgewotICAgICAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHByZXNlcnZlU3RyaW5nLCAoInByZXNlcnZl
IikpOwotCi0gICAgICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSBwcmVzZXJ2ZVN0cmluZykK
LSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENT
U1ZhbHVlUHJlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlTm93cmFwKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoYXR0ci0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OnNwYWNlQXR0cikpCisg
ICAgICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmgKaW5kZXggZDQ1YmVhNi4uNzZkMjgyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaApAQCAtMTA0LDYgKzEwNCw3IEBAIHByb3Rl
Y3RlZDoKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSos
IFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0Owo=
</data>
<flag name="commit-queue"
          id="128450"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126627</attachid>
            <date>2012-02-11 04:08:21 -0800</date>
            <delta_ts>2012-02-11 04:27:50 -0800</delta_ts>
            <desc>Perplexed patch</desc>
            <filename>bug-78381.diff</filename>
            <type>text/plain</type>
            <size>131013</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MzQ2ZWExLi4xYjM4YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjA1
IEBACisyMDEyLTAyLTExICBBbmRyZWFzIEtsaW5nICA8YXdlc29tZWtsaW5nQGFwcGxlLmNvbT4K
KworICAgICAgICBBdHRyaWJ1dGUgc3R5bGVzIHNob3VsZCBiZSBjcmVhdGVkIGxhemlseS4KKyAg
ICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzgzODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVEw7RFIgc3VtbWFyeTogTGF6aWx5IGNvbnN0cnVj
dCB0aGUgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlU3R5bGUoKSBpbnN0ZWFkIG9mCisgICAgICAg
IG1vdmluZyBwcm9wZXJ0aWVzIGluL291dCBvZiBpdCBpbiBwYXJzZUF0dHJpYnV0ZSgpLiBUaGlz
IGFsbG93cyB1cyB0byBlbmFibGUKKyAgICAgICAgdGhlIG1hdGNoZWQgZGVjbGFyYXRpb24gY2Fj
aGUgZm9yIGVsZW1lbnRzIHdpdGggcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMuCisKKyAgICAgICAg
VGhlIG1hdGNoZWQgZGVjbGFyYXRpb24gY2FjaGUgaGFzIGJlZW4gZGlzYWJsZWQgZm9yIGVsZW1l
bnRzIHdpdGggcHJlc2VudGF0aW9uCisgICAgICAgIGF0dHJpYnV0ZXMgYmVjYXVzZSBhdHRyaWJ1
dGVTdHlsZSgpIHdhcyBtdXRhYmxlLCBhbmQgKHNpbXBseSBwdXQpIHRoZSBjYWNoZSBtYXBzCisg
ICAgICAgIGEgc2V0IG9mIFN0eWxlUHJvcGVydHlTZXQgcG9pbnRlcnMgdG8gYSByZXN1bHRpbmcg
UmVuZGVyU3R5bGUuIFRoaXMgcmVxdWlyZXMKKyAgICAgICAgdGhhdCB0aGUgU3R5bGVQcm9wZXJ0
eVNldHMgYXJlIGltbXV0YWJsZS4KKworICAgICAgICBUbyBtYWtlIHRoZW0gaW1tdXRhYmxlLCB3
ZSBub3cgY29uc3RydWN0IHRoZSBhdHRyaWJ1dGUgc3R5bGUgbGF6aWx5IGJ5IGFkZGluZworICAg
ICAgICBhIGZsYWcgKHRvIE5vZGUpIHRoYXQgZ2V0cyBzZXQgaW4gcGFyc2VBdHRyaWJ1dGUoKSB3
aGVuIGEgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZQorICAgICAgICByZXNwZWN0ZWQgYnkgdGhlIGVs
ZW1lbnQgY2hhbmdlcy4gQSBzdWJzZXF1ZW50IGNhbGwgdG8gYXR0cmlidXRlU3R5bGUoKSBjaGVj
a3MKKyAgICAgICAgdGhlIGZsYWcgYW5kIHJlYnVpbGRzIHRoZSBzdHlsZSBieSBsb29waW5nIG92
ZXIgdGhlIGF0dHJpYnV0ZXMgYW5kIGNhbGxpbmcgdGhlCisgICAgICAgIG5ldyB2aXJ0dWFsIFN0
eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSgpIG9uIGVhY2ggb25lLiBBbnkg
ZGFuZ2xpbmcKKyAgICAgICAgcmVmZXJlbmNlcyB0byB0aGUgcHJldmlvdXMgYXR0cmlidXRlIHN0
eWxlIHdpbGwgYmUgZ2FyYmFnZSBjb2xsZWN0ZWQgYnkgdGhlCisgICAgICAgIGNhY2hlIGluIENT
U1N0eWxlU2VsZWN0b3I6OnN3ZWVwTWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGUoKS4KKworICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorCisgICAgICAgICAgICBFbmFibGUgbWF0Y2hlZCBk
ZWNsYXJhdGlvbiBjYWNoZSBmb3IgZWxlbWVudHMgd2l0aCBhdHRyaWJ1dGUgc3R5bGUuCisKKyAg
ICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YXR0cmlidXRlU3R5
bGVEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRBdHRyaWJ1dGVTdHlsZURpcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNsZWFyQXR0cmlidXRlU3R5bGVEaXJ0eSk6CisK
KyAgICAgICAgICAgIEFkZCBhIE5vZGUgZmxhZyB0byBzaWduaWZ5IHRoYXQgYSBwcmVzZW50YXRp
b24gYXR0cmlidXRlIGhhcyBjaGFuZ2VkIGFuZAorICAgICAgICAgICAgdGhlIGF0dHJpYnV0ZSBz
dHlsZSBuZWVkcyB0byBiZSByZWJ1aWx0LgorCisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1
dGVEYXRhLmg6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVOZXdBdHRyaWJ1dGVTdHls
ZSk6CisKKyAgICAgICAgICAgIE5ldyBoZWxwZXIgdGhhdCBhbHdheXMgY29uc3RydWN0cyBhIG5l
dyBhdHRyaWJ1dGUgc3R5bGUuCisKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjphZGRDU1NMZW5ndGhUb1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZENTU0NvbG9yVG9TdHlsZSk6CisKKyAg
ICAgICAgICAgIFRoZSBvbmx5IHJlbWFpbmluZyBvZiB0aGUgYWRkQ1NTKiBoZWxwZXJzIGluIFN0
eWxlZEVsZW1lbnQuIAorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojp1cGRhdGVB
dHRyaWJ1dGVTdHlsZSk6CisKKyAgICAgICAgICAgIENhbGxlZCBieSBhdHRyaWJ1dGVTdHlsZSgp
IGluIGNhc2UgdGhlICJhdHRyaWJ1dGUgc3R5bGUgZGlydHkiIGZsYWcgaXMKKyAgICAgICAgICAg
IHNldC4gUmVidWlsZHMgdGhlIGF0dHJpYnV0ZSBzdHlsZSBmcm9tIHNjcmF0Y2ggYnkgbG9vcGlu
ZyBvdmVyIHRoZQorICAgICAgICAgICAgYXR0cmlidXRlIG1hcCBhbmQgY2FsbGluZyBjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUoKSBvbiBlYWNoIGF0dHJpYnV0ZS4KKworICAgICAgICAqIGRvbS9T
dHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YXR0
cmlidXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6c2V0TmVlZHNB
dHRyaWJ1dGVTdHlsZVVwZGF0ZSk6CisKKyAgICAgICAgICAgIEhlbHBlciwgc2V0cyB0aGUgYXR0
cmlidXRlIHN0eWxlIGRpcnR5IGZsYWcgYW5kIG1hcmtzIHRoZSBlbGVtZW50IGZvcgorICAgICAg
ICAgICAgZnVsbCBzdHlsZSByZWNhbGMuIFRoaXMgaXMgd2hhdCBwYXJzZUF0dHJpYnV0ZSgpIGNh
bGxzIGluIHN1YmNsYXNzZXMKKyAgICAgICAgICAgIHdoZW4gdGhleSBlbmNvdW50ZXIgYSBwcmVz
ZW50YXRpb24gYXR0cmlidXRlLgorCisgICAgICAgICogaHRtbC9IVE1MQlJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxCUkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQlJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MQlJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxEaXZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEaXZFbGVtZW50
Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERpdkVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxEaXZFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6YXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbGVtZW50OjptYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbGVtZW50OjphcHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb250RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9udEVsZW1lbnQ6
OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9udEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb250RWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEhS
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhSRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZy
YW1lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMSUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWFycXVlZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT0xpc3RFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVj
dEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcmFncmFwaEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jl
c3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQbHVnSW5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFByZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFByZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFByZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNh
cHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNhcHRpb25FbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVDb2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJzRnJvbUZyYW1lQXR0cmli
dXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
UmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRhYmxlUGFydEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxVTGlzdEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MVUxpc3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZv
ckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
bWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZXNwZWN0ZWRQ
cmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0lt
YWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRD
b250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuaDoKKworICAgICAgICAgICAgU3BsaXQgaGFuZGxpbmcgb2YgcHJlc2VudGF0
aW9uIGF0dHJpYnV0ZXMgYmV0d2VlbiBwYXJzZUF0dHJpYnV0ZSgpIGFuZAorICAgICAgICAgICAg
Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKCkgYXMgYXBwcm9wcmlhdGUuIFNvbWUgbWlub3IgcmVm
YWN0b3JpbmdzIGhlcmUgYW5kCisgICAgICAgICAgICB0aGVyZSAobW9zdGx5IGluIEhUTUxUYWJs
ZUVsZW1lbnQpIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBjb2RlIGR1cGxpY2F0aW9uLgorICAgICAgICAg
ICAgQWxzbyBzcHJpbmtsZWQgRklYTUVzIGFib3V0IGluZWZmaWNpZW5jaWVzIHdlIHNob3VsZCBj
bGVhbiB1cC4KKwogMjAxMi0wMi0xMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBDU1NPTSB3cmFwcGVyIHBvaW50ZXIgb3V0IG9mIFN0eWxlUHJvcGVy
dHlTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA1NTY4ODM1
Li40Y2YyNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0x
MDAyLDcgKzEwMDIsNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMoTWF0
Y2hSZXN1bHQmIHJlc3VsdCkKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlcy5maXJz
dEF1dGhvclJ1bGUgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yYW5nZXMuZmly
c3RBdXRob3JSdWxlID0gcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZTsKICAgICAgICAgICAg
ICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0cmlidXRlU3R5bGUpOwotICAgICAgICAgICAg
ICAgIHJlc3VsdC5pc0NhY2hlYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCmluZGV4IGNl
YTYyZjMuLjgyZDc4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0
cmlidXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVE
YXRhLmNwcApAQCAtNTMsMTAgKzUzLDkgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZGVz
dHJveUlubGluZVN0eWxlRGVjbCgpCiAgICAgbV9pbmxpbmVTdHlsZURlY2wgPSAwOwogfQogCi1T
dHlsZVByb3BlcnR5U2V0KiBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlQXR0cmlidXRlU3R5
bGUoU3R5bGVkRWxlbWVudCogZWxlbWVudCkKK1N0eWxlUHJvcGVydHlTZXQqIEVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjplbnN1cmVOZXdBdHRyaWJ1dGVTdHlsZShTdHlsZWRFbGVtZW50KiBlbGVtZW50
KQogewotICAgIGlmICghbV9hdHRyaWJ1dGVTdHlsZSkKLSAgICAgICAgbV9hdHRyaWJ1dGVTdHls
ZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZUF0dHJpYnV0ZVN0eWxlKGVsZW1lbnQpOworICAg
IG1fYXR0cmlidXRlU3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGVBdHRyaWJ1dGVTdHls
ZShlbGVtZW50KTsKICAgICByZXR1cm4gbV9hdHRyaWJ1dGVTdHlsZS5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCA0MDgwNjU5Li4xZWNh
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95SW5saW5lU3R5bGVEZWNsKCk7CiAK
ICAgICBTdHlsZVByb3BlcnR5U2V0KiBhdHRyaWJ1dGVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlU3R5bGUuZ2V0KCk7IH0KLSAgICBTdHlsZVByb3BlcnR5U2V0KiBlbnN1cmVBdHRy
aWJ1dGVTdHlsZShTdHlsZWRFbGVtZW50Kik7CisgICAgU3R5bGVQcm9wZXJ0eVNldCogZW5zdXJl
TmV3QXR0cmlidXRlU3R5bGUoU3R5bGVkRWxlbWVudCopOwogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBOYW1lZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBiMTk4MWQ3Li5lMWJiZWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTMwMCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHNoZWV0TG9hZGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdGFydExv
YWRpbmdEeW5hbWljU2hlZXQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICBib29s
IGF0dHJpYnV0ZVN0eWxlRGlydHkoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEF0dHJpYnV0ZVN0
eWxlRGlydHlGbGFnKTsgfQogICAgIGJvb2wgaGFzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSGFzTmFtZUZsYWcpOyB9CiAgICAgYm9vbCBoYXNJRCgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSGFzSURGbGFnKTsgfQogICAgIGJvb2wgaGFzQ2xhc3MoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKEhhc0NsYXNzRmxhZyk7IH0KQEAgLTMxNSw2ICszMTYsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKENoaWxkTmVl
ZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBn
ZXRGbGFnKElzTGlua0ZsYWcpOyB9CiAKKyAgICB2b2lkIHNldEF0dHJpYnV0ZVN0eWxlRGlydHko
KSB7IHNldEZsYWcoQXR0cmlidXRlU3R5bGVEaXJ0eUZsYWcpOyB9CisgICAgdm9pZCBjbGVhckF0
dHJpYnV0ZVN0eWxlRGlydHkoKSB7IGNsZWFyRmxhZyhBdHRyaWJ1dGVTdHlsZURpcnR5RmxhZyk7
IH0KKwogICAgIHZvaWQgc2V0SGFzTmFtZShib29sIGYpIHsgc2V0RmxhZyhmLCBIYXNOYW1lRmxh
Zyk7IH0KICAgICB2b2lkIHNldEhhc0lEKGJvb2wgZikgeyBzZXRGbGFnKGYsIEhhc0lERmxhZyk7
IH0KICAgICB2b2lkIHNldEhhc0NsYXNzKGJvb2wgZikgeyBzZXRGbGFnKGYsIEhhc0NsYXNzRmxh
Zyk7IH0KQEAgLTY3Niw2ICs2ODAsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIEhhc05hbWVGbGFn
ID0gMSA8PCAzMCwKIAorICAgICAgICBBdHRyaWJ1dGVTdHlsZURpcnR5RmxhZyA9IDEgPDwgMzEs
CisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5n
Q2hpbGRyZW5GaW5pc2hlZEZsYWcgfCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnIHwgQXJlU1ZH
QXR0cmlidXRlc1ZhbGlkRmxhZwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNw
cAppbmRleCA1MjYwNTI2Li5lOThiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwCkBAIC0xMDUsNTcgKzEwNSw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0KIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjpyZW1v
dmVDU1NQcm9wZXJ0aWVzKGludCBpZDEsIGludCBpZDIsIGludCBpZDMsIGludCBpZDQsIGludCBp
ZDUsIGludCBpZDYsIGludCBpZDcsIGludCBpZDgpCi17Ci0gICAgU3R5bGVQcm9wZXJ0eVNldCog
c3R5bGUgPSBhdHRyaWJ1dGVTdHlsZSgpOwotICAgIGlmICghc3R5bGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEFTU0VSVChpZDEgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKLSAgICBzdHlsZS0+
cmVtb3ZlUHJvcGVydHkoaWQxKTsKLQotICAgIGlmIChpZDIgPT0gQ1NTUHJvcGVydHlJbnZhbGlk
KQotICAgICAgICByZXR1cm47Ci0gICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KGlkMik7Ci0gICAg
aWYgKGlkMyA9PSBDU1NQcm9wZXJ0eUludmFsaWQpCi0gICAgICAgIHJldHVybjsKLSAgICBzdHls
ZS0+cmVtb3ZlUHJvcGVydHkoaWQzKTsKLSAgICBpZiAoaWQ0ID09IENTU1Byb3BlcnR5SW52YWxp
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShpZDQpOwotICAg
IGlmIChpZDUgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKQotICAgICAgICByZXR1cm47Ci0gICAgc3R5
bGUtPnJlbW92ZVByb3BlcnR5KGlkNSk7Ci0gICAgaWYgKGlkNiA9PSBDU1NQcm9wZXJ0eUludmFs
aWQpCi0gICAgICAgIHJldHVybjsKLSAgICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoaWQ2KTsKLSAg
ICBpZiAoaWQ3ID09IENTU1Byb3BlcnR5SW52YWxpZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHN0
eWxlLT5yZW1vdmVQcm9wZXJ0eShpZDcpOwotICAgIGlmIChpZDggPT0gQ1NTUHJvcGVydHlJbnZh
bGlkKQotICAgICAgICByZXR1cm47Ci0gICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KGlkOCk7Ci19
Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJp
bmcgJnZhbHVlKQotewotICAgIGlmICghZW5zdXJlQXR0cmlidXRlU3R5bGUoKS0+c2V0UHJvcGVy
dHkoaWQsIHZhbHVlKSkKLSAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoaWQpOwotfQotCi12b2lk
IFN0eWxlZEVsZW1lbnQ6OmFkZENTU1Byb3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRp
ZmllcikKLXsKLSAgICBlbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eShwcm9wZXJ0eUlELCBkb2N1bWVudCgpLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSWRlbnRp
ZmllclZhbHVlKGlkZW50aWZpZXIpKSk7Ci0gICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotfQot
Ci12b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0ltYWdlUHJvcGVydHkoaW50IGlkLCBjb25zdCBT
dHJpbmcmIHVybCkKLXsKLSAgICBlbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eShpZCwgQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKHVybCkpKTsKLSAgICBzZXROZWVk
c1N0eWxlUmVjYWxjKCk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTTGVuZ3RoKGlu
dCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTTGVu
Z3RoVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgaW50IHByb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyAmdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5v
dCBzcGluIHVwIHRoZSBDU1MgcGFyc2VyLCBidXQgc2hvdWxkIGluc3RlYWQganVzdCBmaWd1cmUg
b3V0IHRoZSBjb3JyZWN0CiAgICAgLy8gbGVuZ3RoIHVuaXQgYW5kIG1ha2UgdGhlIGFwcHJvcHJp
YXRlIHBhcnNlZCB2YWx1ZS4KQEAgLTE4MSwxMiArMTMxLDEyIEBAIHZvaWQgU3R5bGVkRWxlbWVu
dDo6YWRkQ1NTTGVuZ3RoKGludCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChsICE9IHYtPmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShpZCwgdi0+c3Vic3RyaW5nKDAsIGwpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShwcm9wZXJ0eUlELCB2LT5zdWJzdHJpbmcoMCwgbCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgYWRkQ1NTUHJvcGVydHkoaWQsIHZhbHVlKTsKKyAg
ICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUpOwogfQogCiBzdGF0aWMgU3Ry
aW5nIHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb25zdCBTdHJpbmcmIGNv
bG9yU3RyaW5nKQpAQCAtMjQyLDMwICsxOTIsMjYgQEAgc3RhdGljIFN0cmluZyBwYXJzZUNvbG9y
U3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykKIH0K
IAogLy8gQ29sb3IgcGFyc2luZyB0aGF0IG1hdGNoZXMgSFRNTCdzICJydWxlcyBmb3IgcGFyc2lu
ZyBhIGxlZ2FjeSBjb2xvciB2YWx1ZSIKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTQ29sb3Io
aW50IGlkLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQordm9pZCBTdHlsZWRFbGVtZW50
OjphZGRDU1NDb2xvclRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIGludCBwcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQogewogICAgIC8vIEFuIGVtcHR5IHN0
cmluZyBkb2Vzbid0IGFwcGx5IGEgY29sb3IuIChPbmUgY29udGFpbmluZyBvbmx5IHdoaXRlc3Bh
Y2UgZG9lcywgd2hpY2ggaXMgd2h5IHRoaXMgY2hlY2sgb2NjdXJzIGJlZm9yZSBzdHJpcHBpbmcu
KQotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVtb3ZlQ1NT
UHJvcGVydHkoaWQpOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICB9CiAKICAgICBTdHJpbmcgY29sb3JTdHJpbmcgPSBhdHRyaWJ1dGVWYWx1
ZS5zdHJpcFdoaXRlU3BhY2UoKTsKIAogICAgIC8vICJ0cmFuc3BhcmVudCIgZG9lc24ndCBhcHBs
eSBhIGNvbG9yIGVpdGhlci4KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29sb3JTdHJpbmcs
ICJ0cmFuc3BhcmVudCIpKSB7Ci0gICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KGlkKTsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29sb3JTdHJpbmcsICJ0cmFuc3BhcmVudCIpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG5hbWVkIENTUyBj
b2xvciBvciBhIDMvNi1kaWdpdCBoZXggY29sb3IsIHVzZSB0aGF0LgogICAgIENvbG9yIHBhcnNl
ZENvbG9yKGNvbG9yU3RyaW5nKTsKICAgICBpZiAocGFyc2VkQ29sb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGFkZENTU1Byb3BlcnR5KGlkLCBjb2xvclN0cmluZyk7CisgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjb2xvclN0cmluZyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhZGRDU1NQcm9wZXJ0eShpZCwgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxl
Z2FjeVJ1bGVzKGNvbG9yU3RyaW5nKSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5
SUQsIHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb2xvclN0cmluZykpOwog
fQogCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKGNvbnN0
IEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCkBAIC0yOTMsNCArMjM5LDE1IEBAIHZvaWQgU3R5bGVk
RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1
cmxzKSBjb25zdAogICAgICAgICBpbmxpbmVTdHlsZS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMo
dXJscyk7CiB9CiAKK3ZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQor
eworICAgIEFTU0VSVChhdHRyaWJ1dGVEYXRhKCkpOworICAgIFN0eWxlUHJvcGVydHlTZXQqIHN0
eWxlID0gZW5zdXJlQXR0cmlidXRlRGF0YVdpdGhvdXRVcGRhdGUoKS0+ZW5zdXJlTmV3QXR0cmli
dXRlU3R5bGUodGhpcyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNv
dW50KCk7ICsraSkgeworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0
ZW0oaSk7CisgICAgICAgIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGUsIHN0eWxl
KTsKKyAgICB9CisgICAgY2xlYXJBdHRyaWJ1dGVTdHlsZURpcnR5KCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDJhNmQzOTIuLmFlNjhjODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtMzYsMTQgKzM2LDYgQEAgY2xhc3MgU3R5bGVkRWxlbWVu
dCA6IHB1YmxpYyBFbGVtZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdHlsZWRFbGVtZW50
KCk7CiAKLSAgICB2b2lkIGFkZENTU0xlbmd0aChpbnQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUp
OwotICAgIHZvaWQgYWRkQ1NTUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
LSAgICB2b2lkIGFkZENTU1Byb3BlcnR5KGludCBpZCwgaW50IHZhbHVlKTsKLSAgICB2b2lkIGFk
ZENTU0ltYWdlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAg
ICB2b2lkIGFkZENTU0NvbG9yKGludCBpZCwgY29uc3QgU3RyaW5nJiBjb2xvcik7Ci0gICAgdm9p
ZCByZW1vdmVDU1NQcm9wZXJ0aWVzKGludCBpZDEsIGludCBpZDIgPSBDU1NQcm9wZXJ0eUludmFs
aWQsIGludCBpZDMgPSBDU1NQcm9wZXJ0eUludmFsaWQsIGludCBpZDQgPSBDU1NQcm9wZXJ0eUlu
dmFsaWQsIGludCBpZDUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIGludCBpZDYgPSBDU1NQcm9wZXJ0
eUludmFsaWQsIGludCBpZDcgPSBDU1NQcm9wZXJ0eUludmFsaWQsIGludCBpZDggPSBDU1NQcm9w
ZXJ0eUludmFsaWQpOwotICAgIHZvaWQgcmVtb3ZlQ1NTUHJvcGVydHkoaW50IGlkKSB7IHJlbW92
ZUNTU1Byb3BlcnRpZXMoaWQpOyB9Ci0KICAgICB2aXJ0dWFsIFN0eWxlUHJvcGVydHlTZXQqIGFk
ZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIGludmFsaWRh
dGVTdHlsZUF0dHJpYnV0ZSgpOwogCkBAIC01MSw4ICs0Myw3IEBAIHB1YmxpYzoKICAgICBTdHls
ZVByb3BlcnR5U2V0KiBlbnN1cmVJbmxpbmVTdHlsZURlY2woKSB7IHJldHVybiBlbnN1cmVBdHRy
aWJ1dGVEYXRhV2l0aG91dFVwZGF0ZSgpLT5lbnN1cmVJbmxpbmVTdHlsZURlY2wodGhpcyk7IH0K
ICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgT1ZFUlJJREUgeyByZXR1
cm4gZW5zdXJlSW5saW5lU3R5bGVEZWNsKCktPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsg
fQogCi0gICAgU3R5bGVQcm9wZXJ0eVNldCogYXR0cmlidXRlU3R5bGUoKSBjb25zdCB7IHJldHVy
biBhdHRyaWJ1dGVEYXRhKCkgPyBhdHRyaWJ1dGVEYXRhKCktPmF0dHJpYnV0ZVN0eWxlKCkgOiAw
OyB9Ci0gICAgU3R5bGVQcm9wZXJ0eVNldCogZW5zdXJlQXR0cmlidXRlU3R5bGUoKSB7IHJldHVy
biBlbnN1cmVBdHRyaWJ1dGVEYXRhV2l0aG91dFVwZGF0ZSgpLT5lbnN1cmVBdHRyaWJ1dGVTdHls
ZSh0aGlzKTsgfQorICAgIFN0eWxlUHJvcGVydHlTZXQqIGF0dHJpYnV0ZVN0eWxlKCk7CiAKICAg
ICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKCkgY29uc3Q7CiAKQEAgLTYyLDEw
ICs1MywxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAorICAgIHZvaWQgc2V0TmVlZHNB
dHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworCiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5n
ZWQoQXR0cmlidXRlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGll
cyhjb25zdCBFbGVtZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0
cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSB7IH0KKwogICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25z
dDsKIAogICAgIC8vIGNsYXNzQXR0cmlidXRlQ2hhbmdlZCgpIGV4aXN0cyB0byBzaGFyZSBjb2Rl
IGJldHdlZW4KQEAgLTczLDkgKzY4LDE0IEBAIHByb3RlY3RlZDoKICAgICAvLyBzdmdBdHRyaWJ1
dGVDaGFuZ2VkIChjYWxsZWQgd2hlbiBlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsdWUgaXMgc2V0
KQogICAgIHZvaWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
Q2xhc3NTdHJpbmcpOwogCisgICAgc3RhdGljIHZvaWQgYWRkQ1NTTGVuZ3RoVG9TdHlsZShTdHls
ZVByb3BlcnR5U2V0KiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAg
IHN0YXRpYyB2b2lkIGFkZENTU0NvbG9yVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHBy
b3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgY29sb3IpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCisgICAgdm9pZCB1cGRhdGVBdHRy
aWJ1dGVTdHlsZSgpOworCiAgICAgdm9pZCBkZXN0cm95SW5saW5lU3R5bGVEZWNsKCkKICAgICB7
CiAgICAgICAgIGlmIChhdHRyaWJ1dGVEYXRhKCkpCkBAIC05NSw2ICs5NSwxOSBAQCBpbmxpbmUg
dm9pZCBTdHlsZWRFbGVtZW50OjppbnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUoKQogICAgIGNsZWFy
SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCk7CiB9CiAKK2lubGluZSBTdHlsZVByb3BlcnR5U2V0KiBT
dHlsZWRFbGVtZW50OjphdHRyaWJ1dGVTdHlsZSgpCit7CisgICAgaWYgKGF0dHJpYnV0ZVN0eWxl
RGlydHkoKSkKKyAgICAgICAgdXBkYXRlQXR0cmlidXRlU3R5bGUoKTsKKyAgICByZXR1cm4gYXR0
cmlidXRlRGF0YSgpID8gYXR0cmlidXRlRGF0YSgpLT5hdHRyaWJ1dGVTdHlsZSgpIDogMDsKK30K
KworaW5saW5lIHZvaWQgU3R5bGVkRWxlbWVudDo6c2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0
ZSgpCit7CisgICAgc2V0QXR0cmlidXRlU3R5bGVEaXJ0eSgpOworICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKK30KKwogfSAvL25hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCUkVsZW1lbnQuY3BwCmluZGV4IDVlZmU2MzcuLjg0ZWExMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQlJFbGVtZW50LmNwcApAQCAtNDgsMjAgKzQ4LDI2IEBAIFBhc3NSZWZQdHI8SFRNTEJS
RWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQlJFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTEJSRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQordm9pZCBIVE1MQlJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IGNsZWFyQXR0cikgewotICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGVt
cHR5LCB0aGVuIGRvbid0IGFkZCB0aGUgY2xlYXIgcHJvcGVydHkuIAorICAgICAgICAvLyBJZiB0
aGUgc3RyaW5nIGlzIGVtcHR5LCB0aGVuIGRvbid0IGFkZCB0aGUgY2xlYXIgcHJvcGVydHkuCiAg
ICAgICAgIC8vIDxiciBjbGVhcj4gYW5kIDxiciBjbGVhcj0iIj4gYXJlIGp1c3QgdHJlYXRlZCBs
aWtlIDxicj4gYnkgR2Vja28sIE1hYyBJRSwgZXRjLiAtZHdoCi0gICAgICAgIGlmIChhdHRyLT52
YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlDbGVhcik7Ci0gICAgICAgIGVsc2UgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIWF0dHItPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJhbGwiKSkKLSAgICAgICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUNsZWFyLCAiYm90aCIpOworICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNsZWFyLCAiYm90aCIpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q2xlYXIsIGF0dHIt
PnZhbHVlKCkpOworICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUNsZWFyLCBhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZQorICAgICAgICBI
VE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKK30KKwor
dm9pZCBIVE1MQlJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7Cisg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBjbGVhckF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmli
dXRlU3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShhdHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QlJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAppbmRleCAx
MGE2NDMyLi5jYjhjMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaApAQCAtMzks
NyArMzksOCBAQCBwcml2YXRlOgogICAgIEhUTUxCUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmli
dXRlKikgT1ZFUlJJREU7Ci0gICAgCisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0
dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CisKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCmluZGV4
IGE3NjlhMmMuLjQyZDUyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJv
ZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5j
cHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKIAogI2lu
Y2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgpAQCAtNjAsNDYgKzYxLDQyIEBAIEhUTUxCb2R5RWxlbWVudDo6fkhUTUxC
b2R5RWxlbWVudCgpCiB7CiB9CiAKLXZvaWQgSFRNTEJvZHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNSZXNwZWN0ZWRQcmVzZW50
YXRpb25BdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIHJldHVybiBhdHRyLT5uYW1l
KCkgPT0gYmFja2dyb3VuZEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IG1hcmdpbndpZHRoQXR0ciB8
fCBhdHRyLT5uYW1lKCkgPT0gbGVmdG1hcmdpbkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IG1hcmdp
bmhlaWdodEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHRvcG1hcmdpbkF0dHIgfHwgYXR0ci0+bmFt
ZSgpID09IGJnY29sb3JBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSB0ZXh0QXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gYmdwcm9wZXJ0aWVzQXR0cjsKKworfQorCit2b2lkIEhUTUxCb2R5RWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNl
dCogc3R5bGUpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5kQXR0cikgewog
ICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0
dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBh
ZGRDU1NJbWFnZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBkb2N1bWVudCgp
LT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UpOworICAgICAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlLCBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5z
dHJpbmcoKSkpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtYXJnaW53aWR0aEF0
dHIgfHwgYXR0ci0+bmFtZSgpID09IGxlZnRtYXJnaW5BdHRyKSB7Ci0gICAgICAgIGlmIChhdHRy
LT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRy
LT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkxl
ZnQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICB9CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHIt
PnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1hcmdpbmhlaWdodEF0
dHIgfHwgYXR0ci0+bmFtZSgpID09IHRvcG1hcmdpbkF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHIt
PnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1By
b3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpblRvcCk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRy
LT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblRv
cCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+
dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIpIHsK
LSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gdGV4dEF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0g
ICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlDb2xvciwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlDb2xv
ciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmdwcm9w
ZXJ0aWVzQXR0cikgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUo
KSwgImZpeGVkIikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRBdHRhY2htZW50LCBDU1NWYWx1ZUZpeGVkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCk7Ci0g
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmxpbmtBdHRyIHx8Ci0gICAgICAgICAgICAg
ICBhdHRyLT5uYW1lKCkgPT0gYWxpbmtBdHRyIHx8Ci0gICAgICAgICAgICAgICBhdHRyLT5uYW1l
KCkgPT0gbGlua0F0dHIpIHsKKyAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIENTU1ZhbHVlRml4ZWQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEFTU0VSVCghaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoYXR0cikpOwor
ICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxl
KTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTEJvZHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRl
KGF0dHIpKQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CisgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IHZsaW5rQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gYWxpbmtB
dHRyIHx8IGF0dHItPm5hbWUoKSA9PSBsaW5rQXR0cikgewogICAgICAgICBpZiAoYXR0ci0+aXNO
dWxsKCkpIHsKICAgICAgICAgICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gbGlua0F0dHIpCiAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVzZXRMaW5rQ29sb3IoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCb2R5RWxlbWVudC5oCmluZGV4IDgwMDRiMTAuLjMyY2JhOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQm9keUVsZW1lbnQuaApAQCAtNzEsNiArNzEsNyBAQCBwcml2YXRlOgogICAgIEhU
TUxCb2R5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVy
dHlTZXQqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVu
dCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAppbmRleCBkYTI3
ODVjLi4wYWM0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcApAQCAt
NDgsMjAgKzQ4LDI2IEBAIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxEaXZFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRN
TERpdkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3ZvaWQgSFRNTERp
dkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxl
UHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRy
KSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVt
b3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24pOwogICAgICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGF0dHItPnZhbHVlKCksICJjZW50ZXIiKSkKLSAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKKyAgICAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50
ZXIpOwogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAi
bGVmdCIpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24s
IENTU1ZhbHVlV2Via2l0TGVmdCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0TGVmdCk7CiAgICAgICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJyaWdodCIpKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0UmlnaHQp
OworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBD
U1NWYWx1ZVdlYmtpdFJpZ2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsK
ICAgICB9IGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0
ZShhdHRyLCBzdHlsZSk7Cit9CisKK3ZvaWQgSFRNTERpdkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikK
KyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UKICAgICAg
ICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEaXZFbGVtZW50LmgKaW5kZXggY2Q5MGQ4Ny4uNjE1Nzc0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERpdkVsZW1lbnQuaApAQCAtMzcsNiArMzcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwg
U3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBhMDE4ZmUyLi5kMjMzMWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTQwLDUwICsxNDAsODYgQEAgc3Rh
dGljIHVuc2lnbmVkIHBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ICAgIHJldHVybiBib3JkZXJXaWR0aDsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6YXBwbHlCb3Jk
ZXJBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQordm9pZCBIVE1MRWxlbWVudDo6YXBwbHlCb3Jk
ZXJBdHRyaWJ1dGVUb1N0eWxlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUpCiB7Ci0gICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFN0cmluZzo6
bnVtYmVyKHBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoYXR0cikpKTsKLSAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwot
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVl
U29saWQpOwotICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBD
U1NWYWx1ZVNvbGlkKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgU3RyaW5nOjpudW1iZXIocGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0ZShhdHRyKSkpOwor
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1
ZVNvbGlkKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0
eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKIH0KIAotdm9pZCBI
VE1MRWxlbWVudDo6bWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZShBdHRyaWJ1dGUqIGF0dHJp
YnV0ZSkKK3ZvaWQgSFRNTEVsZW1lbnQ6Om1hcExhbmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUoQXR0
cmlidXRlKiBhdHRyaWJ1dGUsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIEFTU0VS
VChhdHRyaWJ1dGUgJiYgKGF0dHJpYnV0ZS0+bmFtZSgpID09IGxhbmdBdHRyIHx8IGF0dHJpYnV0
ZS0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRyKSkpOwotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgaWYgKHZhbHVlLmlzTnVs
bCgpKQotICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSk7
Ci0gICAgZWxzZSBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgIGlmICghYXR0cmlidXRlLT5p
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gSGF2ZSB0byBxdW90ZSBzbyB0aGUgbG9jYWxlIGlkIGlz
IHRyZWF0ZWQgYXMgYSBzdHJpbmcgaW5zdGVhZCBvZiBhcyBhIENTUyBrZXl3b3JkLgotICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgcXVvdGVDU1NTdHJpbmco
dmFsdWUpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TG9j
YWxlLCBxdW90ZUNTU1N0cmluZyhhdHRyaWJ1dGUtPnZhbHVlKCkpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBUaGUgZW1wdHkgc3RyaW5nIG1lYW5zIHRoZSBsYW5ndWFnZSBpcyBleHBsaWNp
dGx5IHVua25vd24uCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TG9j
YWxlLCBDU1NWYWx1ZUF1dG8pOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRMb2NhbGUsIENTU1ZhbHVlQXV0byk7CiAgICAgfQotICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQordm9pZCBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7Ci0gICAgaWYgKGlzSWRBdHRy
aWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkgfHwgYXR0ci0+bmFtZSgpID09IGNsYXNzQXR0ciB8fCBh
dHRyLT5uYW1lKCkgPT0gc3R5bGVBdHRyKQotICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoYXR0cik7Ci0KICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0
cikgewotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbik7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJtaWRkbGUiKSkKLSAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCAiY2VudGVyIik7CisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibWlkZGxlIikpCisgICAgICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sICJjZW50ZXIiKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0
dHItPnZhbHVlKCkpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBjb250ZW50ZWRpdGFibGVBdHRyKSB7Ci0gICAgICAgIHNldENvbnRlbnRFZGl0YWJsZShhdHRy
KTsKKyAgICAgICAgaWYgKGF0dHItPmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRy
LT52YWx1ZSgpLCAidHJ1ZSIpKSB7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZSk7CisgICAgICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dv
cmQpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TmJz
cE1vZGUsIENTU1ZhbHVlU3BhY2UpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7CisgICAg
ICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgInBsYWludGV4
dC1vbmx5IikpIHsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seSk7CisgICAgICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVh
a1dvcmQpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImZhbHNl
IikpCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2Vy
TW9kaWZ5LCBDU1NWYWx1ZVJlYWRPbmx5KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBoaWRkZW5BdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKLSAgICAgICAgICAg
IHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVOb25l
KTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFs
dWVOb25lKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkcmFnZ2FibGVBdHRyKSB7
CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAidHJ1ZSIpKSB7
CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJh
ZywgQ1NTVmFsdWVFbGVtZW50KTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QsIENTU1ZhbHVlTm9uZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImZhbHNlIikpCisgICAgICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQ1NTVmFsdWVO
b25lKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXJBdHRyKSB7CisgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIpKQorICAgICAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHVuaWNvZGVCaWRp
QXR0cmlidXRlRm9yRGlyQXV0byh0aGlzKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgICAgIGlmICghaGFzVGFnTmFtZShiZGlUYWcpICYmICFoYXNUYWdOYW1lKGJkb1Rh
ZykgJiYgIWhhc1RhZ05hbWUob3V0cHV0VGFnKSkKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpsYW5nQXR0
cikpIHsKKyAgICAgICAgbWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZShhdHRyLCBzdHlsZSk7
CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbGFuZ0F0dHIpIHsKKyAgICAgICAgLy8g
eG1sOmxhbmcgaGFzIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4gbGFuZy4KKyAgICAgICAgaWYgKCFm
YXN0SGFzQXR0cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cikpCisgICAgICAgICAgICBtYXBMYW5n
dWFnZUF0dHJpYnV0ZVRvTG9jYWxlKGF0dHIsIHN0eWxlKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
U3R5bGVkRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKK30K
Kwordm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQorewor
ICAgIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpIHx8IGF0dHItPm5hbWUoKSA9
PSBjbGFzc0F0dHIgfHwgYXR0ci0+bmFtZSgpID09IHN0eWxlQXR0cikKKyAgICAgICAgcmV0dXJu
IFN0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOworCisgICAgaWYgKGF0dHItPm5h
bWUoKSA9PSBhbGlnbkF0dHIgfHwKKyAgICAgICAgYXR0ci0+bmFtZSgpID09IGNvbnRlbnRlZGl0
YWJsZUF0dHIgfHwKKyAgICAgICAgYXR0ci0+bmFtZSgpID09IGhpZGRlbkF0dHIgfHwKKyAgICAg
ICAgYXR0ci0+bmFtZSgpID09IGxhbmdBdHRyIHx8CisgICAgICAgIGF0dHItPm5hbWUoKS5tYXRj
aGVzKFhNTE5hbWVzOjpsYW5nQXR0cikgfHwKKyAgICAgICAgYXR0ci0+bmFtZSgpID09IGRyYWdn
YWJsZUF0dHIpIHsKKworICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlu
dCB0YWJpbmRleCA9IDA7CiAgICAgICAgIGlmIChhdHRyLT5pc0VtcHR5KCkpCkBAIC0xOTIsNDAg
KzIyOCw5IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKICAgICAgICAgICAgIC8vIENsYW1wIHRhYmluZGV4IHRvIHRoZSByYW5nZSBvZiAnc2hvcnQn
IHRvIG1hdGNoIEZpcmVmb3gncyBiZWhhdmlvci4KICAgICAgICAgICAgIHNldFRhYkluZGV4RXhw
bGljaXRseShtYXgoc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6
bWluKCkpLCBtaW4odGFiaW5kZXgsIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0
czxzaG9ydD46Om1heCgpKSkpKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRyKSkgewotICAgICAgICBtYXBMYW5ndWFnZUF0
dHJpYnV0ZVRvTG9jYWxlKGF0dHIpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxh
bmdBdHRyKSB7Ci0gICAgICAgIC8vIHhtbDpsYW5nIGhhcyBhIGhpZ2hlciBwcmlvcml0eSB0aGFu
IGxhbmcuCi0gICAgICAgIGlmICghZmFzdEhhc0F0dHJpYnV0ZShYTUxOYW1lczo6bGFuZ0F0dHIp
KQotICAgICAgICAgICAgbWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZShhdHRyKTsKICAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXJBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT5p
c051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlEaXJl
Y3Rpb24sIENTU1Byb3BlcnR5VW5pY29kZUJpZGkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGJvb2wgZGlySXNBdXRvID0gZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImF1
dG8iKTsKLSAgICAgICAgICAgIGlmICghZGlySXNBdXRvKQotICAgICAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eURp
cmVjdGlvbik7Ci0KLSAgICAgICAgICAgIGRpckF0dHJpYnV0ZUNoYW5nZWQoYXR0cik7Ci0gICAg
ICAgICAgICBpZiAoZGlySXNBdXRvKQotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5VW5pY29kZUJpZGksIHVuaWNvZGVCaWRpQXR0cmlidXRlRm9yRGlyQXV0byh0aGlz
KSk7Ci0gICAgICAgICAgICBlbHNlIGlmICghaGFzVGFnTmFtZShiZGlUYWcpICYmICFoYXNUYWdO
YW1lKGJkb1RhZykgJiYgIWhhc1RhZ05hbWUob3V0cHV0VGFnKSkKLSAgICAgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBDU1NWYWx1ZUVtYmVkKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVVuaWNvZGVCaWRpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGRyYWdnYWJsZUF0dHIpIHsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9
IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInRy
dWUiKSkgewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2Vy
RHJhZywgQ1NTVmFsdWVFbGVtZW50KTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgfSBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImZhbHNlIikpIHsKLSAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENTU1ZhbHVlTm9uZSk7Ci0gICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3QpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVy
dHlXZWJraXRVc2VyRHJhZywgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0KTsKKyAgICAgICAg
c2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgICAgICBkaXJBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHIpOwogI2lmIEVOQUJMRShNSUNST0RBVEEpCiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gaXRlbXByb3BBdHRyKSB7CiAgICAgICAgIHNldEl0ZW1Qcm9wKGF0dHItPnZhbHVl
KCkpOwpAQCAtNjc4LDE3ICs2ODMsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjppbnNlcnRBZGphY2Vu
dFRleHQoY29uc3QgU3RyaW5nJiB3aGVyZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeAogICAgIGlu
c2VydEFkamFjZW50KHdoZXJlLCB0ZXh0Tm9kZS5nZXQoKSwgZWMpOwogfQogCi12b2lkIEhUTUxF
bGVtZW50OjphZGRIVE1MQWxpZ25tZW50KEF0dHJpYnV0ZSogYXR0cikKLXsKLSAgICBhZGRIVE1M
QWxpZ25tZW50VG9TdHlsZWRFbGVtZW50KHRoaXMsIGF0dHIpOwotfQotCi12b2lkIEhUTUxFbGVt
ZW50OjpyZW1vdmVIVE1MQWxpZ25tZW50KCkKLXsKLSAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENT
U1Byb3BlcnR5RmxvYXQsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbik7Ci19Ci0KLXZvaWQgSFRN
TEVsZW1lbnQ6OmFkZEhUTUxBbGlnbm1lbnRUb1N0eWxlZEVsZW1lbnQoU3R5bGVkRWxlbWVudCog
ZWxlbWVudCwgQXR0cmlidXRlKiBhdHRyKQordm9pZCBIVE1MRWxlbWVudDo6YXBwbHlBbGlnbm1l
bnRBdHRyaWJ1dGVUb1N0eWxlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUpCiB7CiAgICAgLy8gVmVydGljYWwgYWxpZ25tZW50IHdpdGggcmVzcGVjdCB0byB0aGUgY3Vy
cmVudCBiYXNlbGluZSBvZiB0aGUgdGV4dAogICAgIC8vIHJpZ2h0IG9yIGxlZnQgbWVhbnMgZmxv
YXRpbmcgaW1hZ2VzLgpAQCAtNzE4LDE0ICs3MTMsMTAgQEAgdm9pZCBIVE1MRWxlbWVudDo6YWRk
SFRNTEFsaWdubWVudFRvU3R5bGVkRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBBdHRy
aWIKICAgICAgICAgdmVydGljYWxBbGlnblZhbHVlID0gQ1NTVmFsdWVUZXh0VG9wOwogCiAgICAg
aWYgKGZsb2F0VmFsdWUgIT0gQ1NTVmFsdWVJbnZhbGlkKQotICAgICAgICBlbGVtZW50LT5hZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBmbG9hdFZhbHVlKTsKLSAgICBlbHNlCi0gICAg
ICAgIGVsZW1lbnQtPnJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQpOworICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCwgZmxvYXRWYWx1ZSk7CiAKICAg
ICBpZiAodmVydGljYWxBbGlnblZhbHVlICE9IENTU1ZhbHVlSW52YWxpZCkKLSAgICAgICAgZWxl
bWVudC0+YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCB2ZXJ0aWNhbEFs
aWduVmFsdWUpOwotICAgIGVsc2UKLSAgICAgICAgZWxlbWVudC0+cmVtb3ZlQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnblZhbHVlKTsKIH0KIAogYm9vbCBI
VE1MRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CkBAIC03NDksMjcgKzc0MCw2IEBAIFN0
cmluZyBIVE1MRWxlbWVudDo6Y29udGVudEVkaXRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gImlu
aGVyaXQiOwogfQogCi12b2lkIEhUTUxFbGVtZW50OjpzZXRDb250ZW50RWRpdGFibGUoQXR0cmli
dXRlKiBhdHRyKSAKLXsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGVuYWJsZWQgPSBhdHRyLT52
YWx1ZSgpOwotICAgIGlmIChlbmFibGVkLmlzTnVsbCgpKQotICAgICAgICByZW1vdmVDU1NQcm9w
ZXJ0aWVzKENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTUHJvcGVydHlXb3JkV3JhcCwg
Q1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTUHJvcGVydHlXZWJraXRMaW5lQnJlYWspOwot
ICAgIGVsc2UgaWYgKGVuYWJsZWQuaXNFbXB0eSgpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGVuYWJs
ZWQsICJ0cnVlIikpIHsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRV
c2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZSk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsKLSAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTVmFsdWVTcGFjZSk7Ci0gICAgICAg
IGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVy
V2hpdGVTcGFjZSk7Ci0gICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAi
ZmFsc2UiKSkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJN
b2RpZnksIENTU1ZhbHVlUmVhZE9ubHkpOwotICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENT
U1Byb3BlcnR5V29yZFdyYXAsIENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsIENTU1Byb3BlcnR5
V2Via2l0TGluZUJyZWFrKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGVuYWJs
ZWQsICJwbGFpbnRleHQtb25seSIpKSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVSZWFkV3JpdGVQbGFpbnRleHRPbmx5KTsKLSAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dv
cmQpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBD
U1NWYWx1ZVNwYWNlKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRM
aW5lQnJlYWssIENTU1ZhbHVlQWZ0ZXJXaGl0ZVNwYWNlKTsKLSAgICB9Ci19Ci0KIHZvaWQgSFRN
TEVsZW1lbnQ6OnNldENvbnRlbnRFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVuYWJsZWQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAidHJ1
ZSIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDQ3MTk3MjYuLjNkM2U3NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTc5LDggKzc5LDYgQEAgcHVibGljOgogCiAg
ICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbEZvcm0oKTsg
fQogCi0gICAgc3RhdGljIHZvaWQgYWRkSFRNTEFsaWdubWVudFRvU3R5bGVkRWxlbWVudChTdHls
ZWRFbGVtZW50KiwgQXR0cmlidXRlKik7Ci0KICAgICBIVE1MRm9ybUVsZW1lbnQqIGZpbmRGb3Jt
QW5jZXN0b3IoKSBjb25zdDsKIAogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uYWxpdHlJZmhh
c0RpckF1dG9BdHRyaWJ1dGUoYm9vbCYgaXNBdXRvKSBjb25zdDsKQEAgLTkzLDExICs5MSwxMSBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAotICAgIHZvaWQgYWRkSFRNTEFsaWdubWVudChBdHRy
aWJ1dGUqKTsKLSAgICB2b2lkIHJlbW92ZUhUTUxBbGlnbm1lbnQoKTsKKyAgICB2b2lkIGFwcGx5
QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0Kik7
CisgICAgdm9pZCBhcHBseUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUoQXR0cmlidXRlKiwgU3R5bGVQ
cm9wZXJ0eVNldCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0
ZSopIE9WRVJSSURFOwotICAgIHZvaWQgYXBwbHlCb3JkZXJBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBT
dHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9
IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogICAg
IHZvaWQgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKTsKQEAgLTEwNyw5ICsxMDUs
NyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIG1hcExhbmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUoQXR0cmlidXRl
Kik7Ci0KLSAgICB2b2lkIHNldENvbnRlbnRFZGl0YWJsZShBdHRyaWJ1dGUqKTsKKyAgICB2b2lk
IG1hcExhbmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNl
dCopOwogCiAgICAgdmlydHVhbCBIVE1MRm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCmluZGV4IDFkNjRlY2Eu
LjcwM2ZjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcApAQCAt
NzQsNiArNzQsMTcgQEAgUmVuZGVyV2lkZ2V0KiBIVE1MRW1iZWRFbGVtZW50OjpyZW5kZXJXaWRn
ZXRGb3JKU0JpbmRpbmdzKCkKICAgICByZXR1cm4gZmluZFdpZGdldFJlbmRlcmVyKHRoaXMpOwog
fQogCit2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQoreworICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gaGlkZGVuQXR0cikgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0
ci0+dmFsdWUoKSwgInllcyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJ0
cnVlIikpIHsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3Bl
cnR5V2lkdGgsICIwIik7IC8vIEZJWE1FOiBQYXNzIGFzIGludGVnZXIuCisgICAgICAgICAgICBh
ZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgIjAiKTsgLy8gRklY
TUU6IFBhc3MgYXMgaW50ZWdlci4KKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUp
OworfQorCiB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsK
QEAgLTk0LDE1ICsxMDUsOSBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyID0gYWRvcHRQ
dHIobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVy
LT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwogICAgICAgICB9Ci0g
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGlkZGVuQXR0cikgewotICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuc3RyaW5nKCksICJ5ZXMiKSB8fCBlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZS5zdHJpbmcoKSwgInRydWUiKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IE5v
dCBkeW5hbWljLCBzaW5jZSB3ZSBhZGQgdGhpcyBidXQgZG9uJ3QgcmVtb3ZlIGl0LCBidXQgaXQg
bWF5IGJlIE9LIGZvciBub3cKLSAgICAgICAgICAgIC8vIHRoYXQgdGhpcyByYXJlbHktdXNlZCBh
dHRyaWJ1dGUgd29uJ3Qgd29yayBwcm9wZXJseSBpZiB5b3UgcmVtb3ZlIGl0LgotICAgICAgICAg
ICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsICIwIik7Ci0gICAgICAgICAgICBhZGRD
U1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsICIwIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdpZHRoLCBDU1NQcm9wZXJ0eUhl
aWdodCk7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGlkZGVu
QXR0cikKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UK
ICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgKaW5kZXggZjM3NzYwMy4uYThi
NjgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgKQEAgLTM1LDYgKzM1
LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MRW1iZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5k
ZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKaW5kZXggODZmNTI5OC4uZGI0
NDdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcApAQCAtMTU4LDI1
ICsxNTgsMjUgQEAgYm9vbCBIVE1MRm9udEVsZW1lbnQ6OmNzc1ZhbHVlRnJvbUZvbnRTaXplTnVt
YmVyKGNvbnN0IFN0cmluZyYgcywgaW50JiBzaXplKQogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIEhUTUxGb250RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQordm9p
ZCBIVE1MRm9udEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0
dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0g
c2l6ZUF0dHIpIHsKICAgICAgICAgaW50IHNpemUgPSAwOwogICAgICAgICBpZiAoY3NzVmFsdWVG
cm9tRm9udFNpemVOdW1iZXIoYXR0ci0+dmFsdWUoKSwgc2l6ZSkpCi0gICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSk7Ci0gICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sb3JBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52
YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlDb2xvcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3Bl
cnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGZhY2VBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBh
dHRyLT52YWx1ZSgpKTsKLSAgICB9IGVsc2UKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBjb2xvckF0dHIpCisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJv
cGVydHlDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGZhY2VBdHRyKQorICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFt
aWx5LCBhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xs
ZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCit2b2lkIEhUTUxGb250RWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gc2l6ZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGNvbG9yQXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gZmFjZUF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUo
KTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmgKaW5kZXggZWVhOGI0NC4uNWZl
OWFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oCkBAIC0zOCw2ICszOCw3
IEBAIHByaXZhdGU6CiAgICAgSFRNTEZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0
cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCmluZGV4IDRh
ZjYzNDIuLjE0ZWFjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmNwcApAQCAtNjQsNiArNjQsMTQgQEAgUGFzc1JlZlB0cjxIVE1MRnJhbWVTZXRFbGVtZW50
PiBIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxGcmFtZVNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQp
KTsKIH0KIAordm9pZCBIVE1MRnJhbWVTZXRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKK3sKKyAgICBpZiAo
YXR0ci0+bmFtZSgpID09IGJvcmRlcmNvbG9yQXR0cikKKyAgICAgICAgYWRkQ1NTQ29sb3JUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICBl
bHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwg
c3R5bGUpOworfQorCiB2b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHJvd3NBdHRyKSB7CkBA
IC0xMDAsMTAgKzEwOCw3IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAgbV9ib3JkZXJTZXQgPSBmYWxzZTsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJjb2xvckF0dHIpIHsKICAgICAgICAg
bV9ib3JkZXJDb2xvclNldCA9ICFhdHRyLT5pc0VtcHR5KCk7Ci0gICAgICAgIGlmIChhdHRyLT52
YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJDb2xvcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU0NvbG9yKENT
U1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBzZXROZWVkc0F0
dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25s
b2FkQXR0cikKICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gb25iZWZvcmV1bmxvYWRBdHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaAppbmRleCAxODc5MDIzLi5mOGJhZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZVNldEVsZW1lbnQuaApAQCAtNjgsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIEhUTUxG
cmFtZVNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3Bl
cnR5U2V0KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCmluZGV4IDU1MzRiOTIuLjk3ZmM2ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmNwcApAQCAtNDgsNjkgKzQ4LDYzIEBA
IFBhc3NSZWZQdHI8SFRNTEhSRWxlbWVudD4gSFRNTEhSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSFJF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTEhSRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQorc3RhdGljIGlubGluZSBib29sIGlzUmVzcGVj
dGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICByZXR1cm4g
YXR0ci0+bmFtZSgpID09IGFsaWduQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyIHx8
IGF0dHItPm5hbWUoKSA9PSBjb2xvckF0dHIgfHwgYXR0ci0+bmFtZSgpID09IG5vc2hhZGVBdHRy
IHx8IGF0dHItPm5hbWUoKSA9PSBzaXplQXR0cjsKK30KKwordm9pZCBIVE1MSFJFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0
KiBzdHlsZSkKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgewotICAgICAg
ICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkgewotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJv
cGVydGllcyhDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQpOwot
ICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJsZWZ0
IikpIHsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwg
IjAiKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQs
IENTU1ZhbHVlQXV0byk7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1
ZSgpLCAibGVmdCIpKSB7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlNYXJnaW5MZWZ0LCAiMCIpOyAvLyBGSVhNRTogUGFzcyBhcyBpbnRlZ2VyLgorICAgICAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIENTU1ZhbHVlQXV0
byk7CiAgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwg
InJpZ2h0IikpIHsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5TWFyZ2luUmlnaHQsICIwIik7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlNYXJnaW5MZWZ0LCBDU1NWYWx1ZUF1dG8pOworICAgICAgICAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsICIwIik7IC8vIEZJWE1FOiBQYXNzIGFz
IGludGVnZXIuCiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NWYWx1ZUF1dG8pOworICAgICAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgQ1NTVmFsdWVBdXRv
KTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0
LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAg
ICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgICAgIGludCB2ID0gYXR0ci0+dmFs
dWUoKS50b0ludCgmb2spOwotICAgICAgICAgICAgaWYgKG9rICYmICF2KQotICAgICAgICAgICAg
ICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCAiMSIpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52
YWx1ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9rOworICAgICAgICBpbnQgdiA9IGF0
dHItPnZhbHVlKCkudG9JbnQoJm9rKTsKKyAgICAgICAgaWYgKG9rICYmICF2KQorICAgICAgICAg
ICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgIjEiKTsgLy8g
RklYTUU6IFBhc3MgYXMgaW50ZWdlci4KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CiAg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sb3JBdHRyKSB7Ci0gICAgICAgIGlmIChh
dHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhD
U1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJU
b3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7
Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwg
Q1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRl
ckNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xp
ZCk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5
bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAg
ICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0
ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IG5vc2hhZGVBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVs
bCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNv
bG9yLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVT
b2xpZCk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgICAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0g
ICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBTdHJpbmcoImdy
ZXkiKSk7Ci0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgU3RyaW5nKCJncmV5IikpOwotICAgICAgICB9CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xp
ZCk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgYWRkQ1NTQ29sb3JU
b1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBTdHJpbmcoImdyZXkiKSk7IC8v
IEZJWE1FOiBQYXNzIGFzIHJnYigpIHZhbHVlLgorICAgICAgICBhZGRDU1NDb2xvclRvU3R5bGUo
c3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBTdHJpbmcoImdyZXkiKSk7IC8vIEZJ
WE1FOiBQYXNzIGFzIHJnYigpIHZhbHVlLgogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IHNpemVBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBD
U1NQcm9wZXJ0eUhlaWdodCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgU3RyaW5nSW1w
bCogc2kgPSBhdHRyLT52YWx1ZSgpLmltcGwoKTsKLSAgICAgICAgICAgIGludCBzaXplID0gc2kt
PnRvSW50KCk7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA8PSAxKSB7Ci0gICAgICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgU3RyaW5nKCIwIikp
OwotICAgICAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0KTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1By
b3BlcnR5SGVpZ2h0LCBTdHJpbmc6Om51bWJlcihzaXplLTIpKTsKLSAgICAgICAgICAgICAgICBy
ZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgICAgICBTdHJpbmdJbXBsKiBzaSA9IGF0
dHItPnZhbHVlKCkuaW1wbCgpOworICAgICAgICBpbnQgc2l6ZSA9IHNpLT50b0ludCgpOworICAg
ICAgICBpZiAoc2l6ZSA8PSAxKQorICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIFN0cmluZygiMCIpKTsgLy8gRklYTUU6IFBhc3MgYXMg
aW50ZWdlci4KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIFN0cmluZzo6bnVtYmVyKHNpemUgLSAyKSk7IC8vIEZJ
WE1FOiBQYXNzIGFzIGludGVnZXIuCisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCFpc1Jl
c3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRyKSk7CisgICAgICAgIEhUTUxFbGVtZW50
Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworICAgIH0KK30KKwordm9p
ZCBIVE1MSFJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAg
aWYgKGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHIpKQorICAgICAgICBzZXRO
ZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CisgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEhSRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50
LmgKaW5kZXggZjA1MDg1Yi4uYzlhMDhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSFJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50
LmgKQEAgLTM4LDYgKzM4LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MSFJFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmNwcAppbmRleCA1Y2JhODg4Li40YzdhNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmNwcApAQCAtNDgsMTQgKzQ4LDI5IEBAIFBhc3NSZWZQdHI8SFRN
TElGcmFtZUVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSUZyYW1lRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit2b2lkIEhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkK
IHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikKLSAgICAgICAgYWRkQ1NTTGVu
Z3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5n
dGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0cikKLSAgICAgICAgYWRkQ1NTTGVuZ3Ro
KENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3Ro
VG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOwogICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpCi0gICAgICAgIGFkZEhUTUxBbGlnbm1l
bnQoYXR0cik7CisgICAgICAgIGFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShhdHRyLCBz
dHlsZSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZyYW1lYm9yZGVyQXR0cikgewor
ICAgICAgICAvLyBGcmFtZSBib3JkZXIgZG9lc24ndCByZWFsbHkgbWF0Y2ggdGhlIEhUTUw0IHNw
ZWMgZGVmaW5pdGlvbiBmb3IgaWZyYW1lcy4gIEl0IHNpbXBseSBhZGRzCisgICAgICAgIC8vIGEg
cHJlc2VudGF0aW9uYWwgaGludCB0aGF0IHRoZSBib3JkZXIgc2hvdWxkIGJlIG9mZiBpZiBzZXQg
dG8gemVyby4KKyAgICAgICAgaWYgKCFhdHRyLT5pc051bGwoKSAmJiAhYXR0ci0+dmFsdWUoKS50
b0ludCgpKSB7CisgICAgICAgICAgICAvLyBBZGQgYSBydWxlIHRoYXQgbnVsbHMgb3V0IG91ciBi
b3JkZXIgd2lkdGguCisgICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlcldpZHRoLCAiMCIpOyAvLyBGSVhNRTogUGFzcyBhcyBpbnRlZ2VyLgorICAg
ICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCit2b2lkIEhUTUxJRnJhbWVFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGF0dHItPm5h
bWUoKSA9PSB3aWR0aEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIgfHwgYXR0ci0+
bmFtZSgpID09IGFsaWduQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gZnJhbWVib3JkZXJBdHRyKQor
ICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
TmFtZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1l
bnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewpAQCAtNjQsMTQgKzc5LDYgQEAgdm9pZCBIVE1MSUZy
YW1lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAg
ZG9jdW1lbnQtPmFkZEV4dHJhTmFtZWRJdGVtKG5ld05hbWUpOwogICAgICAgICB9CiAgICAgICAg
IG1fbmFtZSA9IG5ld05hbWU7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZnJhbWVi
b3JkZXJBdHRyKSB7Ci0gICAgICAgIC8vIEZyYW1lIGJvcmRlciBkb2Vzbid0IHJlYWxseSBtYXRj
aCB0aGUgSFRNTDQgc3BlYyBkZWZpbml0aW9uIGZvciBpZnJhbWVzLiAgSXQgc2ltcGx5IGFkZHMK
LSAgICAgICAgLy8gYSBwcmVzZW50YXRpb25hbCBoaW50IHRoYXQgdGhlIGJvcmRlciBzaG91bGQg
YmUgb2ZmIGlmIHNldCB0byB6ZXJvLgotICAgICAgICBpZiAoIWF0dHItPmlzTnVsbCgpICYmICFh
dHRyLT52YWx1ZSgpLnRvSW50KCkpIHsKLSAgICAgICAgICAgIC8vIEFkZCBhIHJ1bGUgdGhhdCBu
dWxscyBvdXQgb3VyIGJvcmRlciB3aWR0aC4KLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQ
cm9wZXJ0eUJvcmRlcldpZHRoLCAiMCIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJl
bW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgpOwogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IHNhbmRib3hBdHRyKQogICAgICAgICBzZXRTYW5kYm94RmxhZ3MoYXR0
ci0+aXNOdWxsKCkgPyBTYW5kYm94Tm9uZSA6IFNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94
UG9saWN5KGF0dHItPnZhbHVlKCkpKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmgKaW5kZXggYmNiYTJhMi4uYTBlN2UwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaApAQCAtMzYsNiArMzYsNyBAQCBwcml2YXRlOgogICAgIEhU
TUxJRnJhbWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9w
ZXJ0eVNldCogc3R5bGUpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDZjMjJlZGMuLjg3MWEw
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNzgsNiAr
NzgsMjggQEAgUGFzc1JlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50Ojpj
cmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50KgogICAgIHJldHVybiBpbWFnZS5yZWxlYXNl
KCk7CiB9CiAKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpCisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBoZWlnaHRBdHRyKQorICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxl
LCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGJvcmRlckF0dHIpCisgICAgICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHls
ZShhdHRyLCBzdHlsZSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0dHIp
IHsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5U
b3AsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBD
U1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7CisgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0cikgeworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxl
KHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBh
ZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52
YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpCisgICAg
ICAgIGFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShhdHRyLCBzdHlsZSk7CisgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IHZhbGlnbkF0dHIpCisgICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UK
KyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHls
ZSk7Cit9CisKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogewogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+bmFt
ZSgpOwpAQCAtODYsNDAgKzEwOCw4IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJl
cigpKS0+dXBkYXRlQWx0VGV4dCgpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0
cikKICAgICAgICAgbV9pbWFnZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlv
dXNFcnJvcigpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IHdpZHRoQXR0cikKLSAgICAgICAg
aWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdpZHRoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTTGVu
Z3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwotICAgIGVsc2UgaWYgKGF0dHJO
YW1lID09IGhlaWdodEF0dHIpCi0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQot
ICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHIt
PnZhbHVlKCkpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGJvcmRlckF0dHIpIHsKLSAgICAg
ICAgLy8gYm9yZGVyPSJub2JvcmRlciIgLT4gYm9yZGVyPSIwIgotICAgICAgICBhcHBseUJvcmRl
ckF0dHJpYnV0ZShhdHRyKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHZzcGFjZUF0dHIp
IHsKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpbkJv
dHRvbSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3Bl
cnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChD
U1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgaWYgKGF0dHJOYW1lID09IGhzcGFjZUF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZh
bHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3Bl
cnR5TWFyZ2luTGVmdCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFs
dWUoKSk7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwg
YXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFs
aWduQXR0cikKLSAgICAgICAgYWRkSFRNTEFsaWdubWVudChhdHRyKTsKLSAgICBlbHNlIGlmIChh
dHRyTmFtZSA9PSB2YWxpZ25BdHRyKQotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwo
KSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGln
bik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5
VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IGhlaWdodEF0dHIgfHwgYXR0ck5hbWUgPT0gYm9yZGVy
QXR0ciB8fCBhdHRyTmFtZSA9PSB2c3BhY2VBdHRyIHx8IGF0dHJOYW1lID09IGhzcGFjZUF0dHIg
fHwgYXR0ck5hbWUgPT0gYWxpZ25BdHRyIHx8IGF0dHJOYW1lID09IHZhbGlnbkF0dHIpCisgICAg
ICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSB1c2VtYXBBdHRyKQogICAgICAgICBzZXRJc0xpbmsoIWF0dHItPmlzTnVsbCgpKTsKICAg
ICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFib3J0QXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmgKaW5kZXggYjI0ZDM0OC4uYThiYmEzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTg0LDYgKzg0LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSos
IFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2go
KTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
aW5kZXggOTYwMDQwZi4uM2JhMjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCkBAIC02NTgsOSArNjU4LDQxIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YWNj
ZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKQogICAgIG1faW5wdXRUeXBlLT5hY2Nl
c3NLZXlBY3Rpb24oc2VuZE1vdXNlRXZlbnRzKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlz
UmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQs
IEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICByZXR1cm4gYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0
dHIgfHwgYXR0ci0+bmFtZSgpID09IGhzcGFjZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGFsaWdu
QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBoZWln
aHRBdHRyIHx8IChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyQXR0ciAmJiBlbGVtZW50LT5pc0ltYWdl
QnV0dG9uKCkpOworfQorCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQoreworICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikgeworICAgICAgICBhZGRDU1NMZW5ndGhU
b1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBh
dHRyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoc3BhY2VBdHRy
KSB7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgeworICAgICAgICBpZiAobV9pbnB1dFR5cGUtPnNo
b3VsZFJlc3BlY3RBbGlnbkF0dHJpYnV0ZSgpKQorICAgICAgICAgICAgYXBwbHlBbGlnbm1lbnRB
dHRyaWJ1dGVUb1N0eWxlKGF0dHIsIHN0eWxlKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSB3aWR0aEF0dHIpIHsKKyAgICAgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0
SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCisgICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKSB7CisgICAgICAgIGlmIChtX2lucHV0VHlw
ZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cmlidXRlcygpKQorICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVl
KCkpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIgJiYgaXNJbWFn
ZUJ1dHRvbigpKQorICAgICAgICBhcHBseUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUoYXR0ciwgc3R5
bGUpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoIWlzUmVzcGVjdGVkUHJlc2VudGF0aW9u
QXR0cmlidXRlKHRoaXMsIGF0dHIpKTsKKyAgICAgICAgcmV0dXJuIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworICAgIH0K
K30KKwogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0
dHIpCiB7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBuYW1lQXR0cikgeworICAgIGlmIChpc1Jl
c3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZSh0aGlzLCBhdHRyKSkKKyAgICAgICAgc2V0TmVl
ZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBu
YW1lQXR0cikgewogICAgICAgICBjaGVja2VkUmFkaW9CdXR0b25zKCkucmVtb3ZlQnV0dG9uKHRo
aXMpOwogICAgICAgICBtX25hbWUgPSBhdHRyLT52YWx1ZSgpOwogICAgICAgICBjaGVja2VkUmFk
aW9CdXR0b25zKCkuYWRkQnV0dG9uKHRoaXMpOwpAQCAtNzEzLDI5ICs3NDUsNiBAQCB2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAg
bV9pbnB1dFR5cGUtPnNyY0F0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gdXNlbWFwQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gYWNjZXNza2V5QXR0cikgewog
ICAgICAgICAvLyBGSVhNRTogaWdub3JlIGZvciB0aGUgbW9tZW50Ci0gICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikgewotICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJv
cGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBhZGRDU1NMZW5ndGgoQ1NT
UHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOwotICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGhzcGFjZUF0dHIpIHsKLSAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3Bl
cnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGFkZENTU0xlbmd0aChDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRS
ZXNwZWN0QWxpZ25BdHRyaWJ1dGUoKSkKLSAgICAgICAgICAgIGFkZEhUTUxBbGlnbm1lbnQoYXR0
cik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUhUTUxBbGlnbm1lbnQoKTsKLSAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpIHsKLSAgICAgICAgaWYgKG1f
aW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCi0gICAg
ICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lk
dGgpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpIHsKLSAgICAg
ICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVz
KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZh
bHVlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUhlaWdodCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyQXR0
ciAmJiBpc0ltYWdlQnV0dG9uKCkpIHsKLSAgICAgICAgYXBwbHlCb3JkZXJBdHRyaWJ1dGUoYXR0
cik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25zZWFyY2hBdHRyKSB7CiAgICAg
ICAgIC8vIFNlYXJjaCBmaWVsZCBhbmQgc2xpZGVyIGF0dHJpYnV0ZXMgYWxsIGp1c3QgY2F1c2Ug
dXBkYXRlRnJvbUVsZW1lbnQgdG8gYmUgY2FsbGVkIHRocm91Z2ggc3R5bGUgcmVjYWxjaW5nLgog
ICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zZWFyY2hFdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGI2ZmEwZjYuLmE1MTIzMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0yNzYsNiArMjc2LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRz
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSos
IFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFy
c2luZ0NoaWxkcmVuKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3Bl
cnRpZXMoY29uc3QgRWxlbWVudCogc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExJRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1l
bnQuY3BwCmluZGV4IGY3ODlkMzIuLjVmYzZiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTExJRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElF
bGVtZW50LmNwcApAQCAtNDksMjcgKzQ5LDMzIEBAIFBhc3NSZWZQdHI8SFRNTExJRWxlbWVudD4g
SFRNTExJRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MTElFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKLXZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQordm9pZCBIVE1MTElFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IHZhbHVlQXR0cikgewotICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5p
c0xpc3RJdGVtKCkpCi0gICAgICAgICAgICBwYXJzZVZhbHVlKGF0dHItPnZhbHVlKCkpOwotICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRy
LT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlMaXN0U3R5bGVUeXBlKTsKLSAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAi
YSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlTG93ZXJBbHBoYSk7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0eXBlQXR0cikg
eworICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiYSIpCisgICAgICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyQWxwaGEp
OwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJBIikKLSAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlckFscGhh
KTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5
cGUsIENTU1ZhbHVlVXBwZXJBbHBoYSk7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkg
PT0gImkiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVU
eXBlLCBDU1NWYWx1ZUxvd2VyUm9tYW4pOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlclJvbWFuKTsKICAgICAgICAg
ZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiSSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJSb21hbik7CisgICAgICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1
ZVVwcGVyUm9tYW4pOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICIxIikKLSAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFs
dWVEZWNpbWFsKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxp
c3RTdHlsZVR5cGUsIENTU1ZhbHVlRGVjaW1hbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBl
LCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7Cit9CisKK3ZvaWQgSFRNTExJRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gdmFsdWVBdHRyKSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCkt
PmlzTGlzdEl0ZW0oKSkKKyAgICAgICAgICAgIHBhcnNlVmFsdWUoYXR0ci0+dmFsdWUoKSk7Cisg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpCisgICAgICAgIHNldE5lZWRz
QXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTElFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaApp
bmRleCA3N2E5MGU4Li4wM2YxNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMSUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaApA
QCAtMzYsNiArMzYsNyBAQCBwcml2YXRlOgogICAgIEhUTUxMSUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
QXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0
dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVF
bGVtZW50LmNwcAppbmRleCBjNzdjOTg1Li4yYTk3ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBAIC01Myw2NCArNTMsNjIgQEAgUGFzc1JlZlB0cjxI
VE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHQKICAgICByZXR1cm4gbWFycXVlZUVsZW1lbnQucmVsZWFzZSgpOwogfQogCi12
b2lkIEhUTUxNYXJxdWVlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQor
c3RhdGljIGlubGluZSBib29sIGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0cikKK3sKKyAgICByZXR1cm4gYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0ciB8fCBh
dHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIg
fHwgYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGhzcGFjZUF0
dHIgfHwgYXR0ci0+bmFtZSgpID09IHNjcm9sbGFtb3VudEF0dHIgfHwgYXR0ci0+bmFtZSgpID09
IHNjcm9sbGRlbGF5QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gbG9vcEF0dHIgfHwgYXR0ci0+bmFt
ZSgpID09IGJlaGF2aW9yQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gZGlyZWN0aW9uQXR0cjsKK30K
Kwordm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gd2lkdGhBdHRyKSB7Ci0gICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFs
dWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1By
b3BlcnR5V2lkdGgpOworICAgICAgICBpZiAoIWF0dHItPmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVl
KCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpIHsKICAgICAg
ICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0
aChDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0KTsKKyAgICAgICAgICAg
IGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1
ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0cikgewogICAg
ICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTQ29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcik7CisgICAgICAgICAgICBhZGRDU1NDb2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSB2c3BhY2VBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0
ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5C
b3R0b20sIGF0dHItPnZhbHVlKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luQm90
dG9tKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhzcGFjZUF0dHIpIHsKICAgICAg
ICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkQ1NTTGVu
Z3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQpOworICAgICAgICAgICAgYWRkQ1NTTGVu
Z3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gc2Nyb2xsYW1vdW50QXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCku
aXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZUluY3JlbWVudCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCk7Cisg
ICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVJbmNyZW1lbnQsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IHNjcm9sbGRlbGF5QXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZVNwZWVkLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3Zl
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQpOworICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQs
IGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxvb3BBdHRy
KSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IGlmIChhdHRyLT52YWx1ZSgpID09ICItMSIgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFs
dWUoKSwgImluZmluaXRlIikpCi0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwgQ1NTVmFsdWVJbmZpbml0ZSk7CisgICAgICAg
ICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0
aXRpb24sIENTU1ZhbHVlSW5maW5pdGUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLCBhdHRy
LT52YWx1ZSgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uKTsKKyAgICAgICAgICAgICAgICBh
ZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0
aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGJlaGF2aW9yQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0
eSgpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
U3R5bGUsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSk7CisgICAgICAgICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIGF0dHItPnZh
bHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpcmVjdGlvbkF0dHIpIHsK
ICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZURpcmVjdGlvbik7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gdHJ1ZXNwZWVkQXR0cikKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIGF0dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIEFTU0VSVCghaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoYXR0cikp
OworICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0
eWxlKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTE1hcnF1ZWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0
cmlidXRlKGF0dHIpKQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7Cisg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHRydWVzcGVlZEF0dHIpCiAgICAgICAgIG1fbWlu
aW11bURlbGF5ID0gIWF0dHItPmlzRW1wdHkoKSA/IDAgOiBkZWZhdWx0TWluaW11bURlbGF5Owog
ICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKaW5kZXggZDFlMzA3MC4uMDlhZWY1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCkBAIC01NCw2ICs1
NCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTE1hcnF1ZWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJp
YnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1
dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogCiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCmluZGV4IDJiZmEyZmYuLmJhMmUyNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcApAQCAtNTQsMjIgKzU0
LDI4IEBAIFBhc3NSZWZQdHI8SFRNTE9MaXN0RWxlbWVudD4gSFRNTE9MaXN0RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MT0xpc3RFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTE9MaXN0
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQordm9pZCBIVE1MT0xpc3RF
bGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVBy
b3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKSB7
CiAgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpID09ICJhIikKLSAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVMb3dlckFscGhhKTsKKyAg
ICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENT
U1ZhbHVlTG93ZXJBbHBoYSk7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIkEi
KQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBD
U1NWYWx1ZVVwcGVyQWxwaGEpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlckFscGhhKTsKICAgICAgICAgZWxzZSBp
ZiAoYXR0ci0+dmFsdWUoKSA9PSAiaSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJSb21hbik7CisgICAgICAgICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2Vy
Um9tYW4pOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZSgpID09ICJJIikKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBl
clJvbWFuKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RT
dHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJSb21hbik7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZh
bHVlKCkgPT0gIjEiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0
U3R5bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBy
ZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpOwotICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IHN0YXJ0QXR0cikgeworICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVEZWNpbWFsKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRy
LCBzdHlsZSk7Cit9CisKK3ZvaWQgSFRNTE9MaXN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0
cmlidXRlKiBhdHRyKQoreworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpCisgICAg
ICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gc3RhcnRBdHRyKSB7CiAgICAgICAgIGludCBvbGRTdGFydCA9IHN0YXJ0KCk7CiAg
ICAgICAgIGJvb2wgY2FuUGFyc2U7CiAgICAgICAgIGludCBwYXJzZWRTdGFydCA9IGF0dHItPnZh
bHVlKCkudG9JbnQoJmNhblBhcnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9MaXN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50
LmgKaW5kZXggMDczMWZiMC4uMGVmZWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT0xpc3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RF
bGVtZW50LmgKQEAgLTU0LDYgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlY2FsY3VsYXRl
SXRlbUNvdW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRl
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShB
dHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKICAgICBpbnQgbV9zdGFy
dDsKICAgICB1bnNpZ25lZCBtX2l0ZW1Db3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5jcHAKaW5kZXggZTJiZWYwMS4uNzk0Mjk5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKQEAgLTc3LDYgKzc3LDE0IEBAIFJlbmRlcldpZGdl
dCogSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRlcldpZGdldEZvckpTQmluZGluZ3MoKQogICAgIHJl
dHVybiByZW5kZXJQYXJ0KCk7IC8vIFRoaXMgd2lsbCByZXR1cm4gMCBpZiB0aGUgcmVuZGVyZXIg
aXMgbm90IGEgUmVuZGVyUGFydC4KIH0KIAordm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6Y29sbGVj
dFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJBdHRyKQorICAgICAgICBhcHBs
eUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUoYXR0ciwgc3R5bGUpOworICAgIGVsc2UKKyAgICAgICAg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0
eWxlKTsKK30KKwogdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gZm9ybUF0dHIpCkBAIC0xMDks
NyArMTE3LDcgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRy
KQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVs
b2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJBdHRyKQotICAgICAgICBhcHBseUJvcmRl
ckF0dHJpYnV0ZShhdHRyKTsKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgp
OwogICAgIGVsc2UKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXgg
ODViZjE2Zi4uZWVmZWQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aApAQCAtNjcsNiArNjcsOCBAQCBwcml2YXRlOgogICAgIEhUTUxPYmplY3RFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0
dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRG
cm9tVHJlZShib29sIGRlZXApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQYXJhZ3JhcGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFw
aEVsZW1lbnQuY3BwCmluZGV4IDZjYzlmNTEuLjhjZjFjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCkBAIC00NCwyMCArNDQsMjYgQEAgUGFzc1Jl
ZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4gSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW0KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhZ3JhcGhF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTFBhcmFncmFwaEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3ZvaWQgSFRNTFBhcmFncmFwaEVs
ZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJv
cGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7
Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3Zl
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24pOwotICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibWlkZGxlIikgfHwgZXF1YWxJZ25vcmluZ0Nh
c2UoYXR0ci0+dmFsdWUoKSwgImNlbnRlciIpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKKyAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJtaWRkbGUiKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiY2VudGVyIikpCisgICAgICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKICAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImxlZnQiKSkK
LSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1
ZVdlYmtpdExlZnQpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQpOwogICAgICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAicmlnaHQiKSkKLSAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsKKyAgICAg
ICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVX
ZWJraXRSaWdodCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBl
bHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwg
c3R5bGUpOworfQorCit2b2lkIEhUTUxQYXJhZ3JhcGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpCisg
ICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAg
IEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oCmluZGV4IDBjOGMyOTAuLjU4ZGQ2MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKQEAgLTM1LDYgKzM1LDcg
QEAgcHJpdmF0ZToKICAgICBIVE1MUGFyYWdyYXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1
dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRl
KEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKSBPVkVSUklERTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKaW5kZXggNjZkNjA5Mi4uYjdjMjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5jcHAKQEAgLTE0MCwzNCArMTQwLDM1IEBAIFdpZGdldCogSFRNTFBsdWdJ
bkVsZW1lbnQ6OnBsdWdpbldpZGdldCgpCiAgICAgcmV0dXJuIHJlbmRlcldpZGdldC0+d2lkZ2V0
KCk7CiB9CiAKLXZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0
ZSogYXR0cikKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgcmV0dXJuIGF0dHItPm5hbWUoKSA9PSB3aWR0
aEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHZz
cGFjZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGhzcGFjZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09
IGFsaWduQXR0cjsKK30KKwordm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIGlmIChhdHRyLT5pc051
bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwg
YXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBoZWlnaHRBdHRyKQotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICBy
ZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7Cisg
ICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRy
LT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikgewot
ICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0
aWVzKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luVG9w
LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1h
cmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgYWRkQ1NTTGVu
Z3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOwor
ICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRv
bSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaHNwYWNl
QXR0cikgewotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdo
dCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5
TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NT
UHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
YWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlN
YXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gYWxpZ25BdHRyKQotICAgICAgICBhZGRIVE1MQWxpZ25tZW50KGF0dHIpOworICAgICAgICBh
cHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5bGUoYXR0ciwgc3R5bGUpOworICAgIGVsc2Ugewor
ICAgICAgICBBU1NFUlQoIWlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHIpKTsK
KyAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
YXR0ciwgc3R5bGUpOworICAgIH0KK30KKwordm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChpc1Jlc3BlY3RlZFByZXNlbnRh
dGlvbkF0dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0
ZSgpOwogICAgIGVsc2UKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRl
eCA4YzIyMTQxLi4yNzAxNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5oCkBAIC01OSw2ICs1OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0
KikgT1ZFUlJJREU7CiAKICAgICBib29sIG1faW5CZWZvcmVMb2FkRXZlbnRIYW5kbGVyOwogICAg
IC8vIFN1YmNsYXNzZXMgc2hvdWxkIHVzZSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQg
aW5zdGVhZCBvZiBjYWxsaW5nIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IGRpcmVjdGx5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAppbmRleCA3ZWQ4NWZjLi41YTk3NzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcApAQCAtNDIsNiArNDIsMTQgQEAg
UGFzc1JlZlB0cjxIVE1MUHJlRWxlbWVudD4gSFRNTFByZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFByZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAordm9pZCBIVE1MUHJlRWxlbWVudDo6Y29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCog
c3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3cmFwQXR0cikKKyAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVQcmVXcmFwKTsK
KyAgICBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
YXR0ciwgc3R5bGUpOworfQorCiB2b2lkIEhUTUxQcmVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpIHsK
QEAgLTQ5LDEyICs1Nyw5IEBAIHZvaWQgSFRNTFByZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKICAgICAgICAgLy8gd2Ugc2hvdWxkIHNpemUgdGhlIHByZSB0by4gIFdl
IGJhc2ljYWxseSBuZWVkIHRvIHRha2UgdGhlIHdpZHRoIG9mIGEgc3BhY2UsCiAgICAgICAgIC8v
IG11bHRpcGx5IGJ5IHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGFuZCB0aGVuIHNldCB0aGF0
IGFzIHRoZSB3aWR0aCBDU1MKICAgICAgICAgLy8gcHJvcGVydHkuCi0gICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gd3JhcEF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNO
dWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlV3JhcCk7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gd3JhcEF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5
bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAgIHJldHVybiBIVE1MRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoYXR0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFByZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaAppbmRl
eCAzYWQzMTUyLi44NjJkYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cmVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJlRWxlbWVudC5oCkBA
IC0zNSw2ICszNSw3IEBAIHByaXZhdGU6CiAgICAgSFRNTFByZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
QXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0
dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQuY3BwCmluZGV4IDg4NDUwZDQuLmVjNTMxNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwCkBAIC00NCwxNSArNDQs
MjEgQEAgUGFzc1JlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4gSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxUYWJsZUNhcHRpb25FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRN
TFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3Zv
aWQgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNhcHRpb25TaWRlLCBh
dHRyLT52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSk7CisgICAgICAgIGlmICghYXR0ci0+aXNFbXB0eSgp
KQorICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q2FwdGlvblNpZGUs
IGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoYXR0cik7CisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRy
aWJ1dGUoYXR0ciwgc3R5bGUpOyAvLyBOb3RlIHRoYXQgd2UgYXJlIGJ5cGFzc2luZyBIVE1MVGFi
bGVQYXJ0RWxlbWVudCBoZXJlLgorfQorCit2b2lkIEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9
PSBhbGlnbkF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAg
ICBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsgLy8gTm90
ZSB0aGF0IHdlIGFyZSBieXBhc3NpbmcgSFRNTFRhYmxlUGFydEVsZW1lbnQgaGVyZS4KIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oCmluZGV4
IGRhNDBlODIuLjgyN2NjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNh
cHRpb25FbGVtZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MVGFibGVD
YXB0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVy
dHlTZXQqKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCmluZGV4IDg0YTFjOTYuLjk4N2ZlYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCkBAIC03NSwz
NCArNzUsNDMgQEAgaW50IEhUTUxUYWJsZUNlbGxFbGVtZW50OjpjZWxsSW5kZXgoKSBjb25zdAog
ICAgIHJldHVybiBpbmRleDsKIH0KIAotdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQorc3RhdGljIGlubGluZSBib29sIGlzUmVzcGVjdGVk
UHJlc2VudGF0aW9uQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKLSAgICBpZiAoYXR0ci0+
bmFtZSgpID09IHJvd3NwYW5BdHRyKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRl
cmVyKCktPmlzVGFibGVDZWxsKCkpCi0gICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2VsbChyZW5k
ZXJlcigpKS0+Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQoKTsKLSAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBjb2xzcGFuQXR0cikgewotICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5k
ZXJlcigpLT5pc1RhYmxlQ2VsbCgpKQotICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNlbGwocmVu
ZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFuZ2VkKCk7Ci0gICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gbm93cmFwQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0g
ICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3Bh
Y2UsIENTU1ZhbHVlV2Via2l0Tm93cmFwKTsKKyAgICByZXR1cm4gYXR0ci0+bmFtZSgpID09IG5v
d3JhcEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0g
aGVpZ2h0QXR0cjsKK30KIAordm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7
CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBub3dyYXBBdHRyKSB7CisgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlV2Via2l0Tm93cmFwKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpIHsKICAgICAgICAgaWYg
KCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaW50IHdpZHRoSW50ID0g
YXR0ci0+dmFsdWUoKS50b0ludCgpOwogICAgICAgICAgICAgaWYgKHdpZHRoSW50ID4gMCkgLy8g
d2lkdGg9IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KLSAgICAg
ICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlXaWR0aCk7CisgICAgICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUo
KS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGludCBoZWlnaHRJbnQgPSBhdHRyLT52YWx1ZSgp
LnRvSW50KCk7CiAgICAgICAgICAgICBpZiAoaGVpZ2h0SW50ID4gMCkgLy8gaGVpZ2h0PSIwIiBp
cyBpZ25vcmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCi0gICAgICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7
CisgICAgICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlI
ZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKCFpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRyKSk7CisgICAgICAg
IEhUTUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5
bGUpOworICAgIH0KK30KKwordm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0
dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwor
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSByb3dzcGFuQXR0cikgeworICAgICAgICBpZiAo
cmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxlQ2VsbCgpKQorICAgICAgICAgICAgdG9S
ZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFuZ2VkKCk7Cisg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sc3BhbkF0dHIpIHsKKyAgICAgICAgaWYg
KHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJsZUNlbGwoKSkKKyAgICAgICAgICAgIHRv
UmVuZGVyVGFibGVDZWxsKHJlbmRlcmVyKCkpLT5jb2xTcGFuT3JSb3dTcGFuQ2hhbmdlZCgpOwog
ICAgIH0gZWxzZQogICAgICAgICBIVE1MVGFibGVQYXJ0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
YXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKaW5k
ZXggNWMzMmQ2YS4uZmNkZjBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQuaApAQCAtNTQsNiArNTQsNyBAQCBwcml2YXRlOgogICAgIEhUTUxUYWJsZUNlbGxF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCop
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBTdHlsZVByb3BlcnR5U2V0KiBhZGRpdGlvbmFsQXR0
cmlidXRlU3R5bGUoKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q29sRWxlbWVudC5jcHAKaW5kZXggMGM4M2U3OC4uN2I1NGRmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCkBAIC00Nyw2ICs0NywxNCBAQCBQYXNzUmVm
UHRyPEhUTUxUYWJsZUNvbEVsZW1lbnQ+IEhUTUxUYWJsZUNvbEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRhYmxlQ29sRWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCit2b2lkIEhUTUxUYWJsZUNvbEVsZW1lbnQ6
OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlT
ZXQqIHN0eWxlKQoreworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKQorICAgICAg
ICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1
ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIEhUTUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCiB2b2lkIEhUTUxUYWJsZUNvbEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFt
ZSgpID09IHNwYW5BdHRyKSB7CkBAIC01NCwxNiArNjIsMTUgQEAgdm9pZCBIVE1MVGFibGVDb2xF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIGlmIChyZW5k
ZXJlcigpICYmIHJlbmRlcmVyKCktPmlzVGFibGVDb2woKSkKICAgICAgICAgICAgIHJlbmRlcmVy
KCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
d2lkdGhBdHRyKSB7CisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAg
ICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAgICAgICAgICAgaWYg
KHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJsZUNvbCgpKSB7CiAgICAgICAgICAgICAg
ICAgUmVuZGVyVGFibGVDb2wqIGNvbCA9IHRvUmVuZGVyVGFibGVDb2wocmVuZGVyZXIoKSk7CiAg
ICAgICAgICAgICAgICAgaW50IG5ld1dpZHRoID0gd2lkdGgoKS50b0ludCgpOwogICAgICAgICAg
ICAgICAgIGlmIChuZXdXaWR0aCAhPSBjb2wtPndpZHRoKCkpCiAgICAgICAgICAgICAgICAgICAg
IGNvbC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlXaWR0aCk7CisgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgSFRNTFRhYmxlUGFydEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUNvbEVsZW1lbnQuaAppbmRleCAwMWNlYThlLi4xN2YwYjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaApAQCAtNDMsNiArNDMsNyBAQCBwcml2YXRlOgog
ICAgIEhUTUxUYWJsZUNvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJp
YnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0eWxlUHJv
cGVydHlTZXQqIGFkZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZSgpIE9WRVJSSURFOwogCiAgICAgaW50
IG1fc3BhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGJl
M2FhYTIuLjIyMzdjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKIAogI2lu
Y2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1
ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKQEAgLTI2NiwxMDIgKzI2NywxMjEgQEAgc3RhdGljIGJv
b2wgc2V0VGFibGVDZWxsc0NoYW5nZWQoTm9kZSogbikKICAgICByZXR1cm4gY2VsbENoYW5nZWQ7
CiB9CiAKK3N0YXRpYyBib29sIGdldEJvcmRlcnNGcm9tRnJhbWVBdHRyaWJ1dGVWYWx1ZShjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sJiBib3JkZXJUb3AsIGJvb2wmIGJvcmRlclJpZ2h0
LCBib29sJiBib3JkZXJCb3R0b20sIGJvb2wmIGJvcmRlckxlZnQpCit7CisgICAgYm9yZGVyVG9w
ID0gZmFsc2U7CisgICAgYm9yZGVyUmlnaHQgPSBmYWxzZTsKKyAgICBib3JkZXJCb3R0b20gPSBm
YWxzZTsKKyAgICBib3JkZXJMZWZ0ID0gZmFsc2U7CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UodmFsdWUsICJ2b2lkIikpCisgICAgICAgIDsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZSwgImFib3ZlIikpCisgICAgICAgIGJvcmRlclRvcCA9IHRydWU7CisgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJiZWxvdyIpKQorICAgICAgICBib3JkZXJC
b3R0b20gPSB0cnVlOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiaHNp
ZGVzIikpCisgICAgICAgIGJvcmRlclRvcCA9IGJvcmRlckJvdHRvbSA9IHRydWU7CisgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJ2c2lkZXMiKSkKKyAgICAgICAgYm9yZGVy
TGVmdCA9IGJvcmRlclJpZ2h0ID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZSh2YWx1ZSwgImxocyIpKQorICAgICAgICBib3JkZXJMZWZ0ID0gdHJ1ZTsKKyAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInJocyIpKQorICAgICAgICBib3JkZXJSaWdodCA9
IHRydWU7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJib3giKSB8fCBl
cXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImJvcmRlciIpKQorICAgICAgICBib3JkZXJUb3AgPSBi
b3JkZXJCb3R0b20gPSBib3JkZXJMZWZ0ID0gYm9yZGVyUmlnaHQgPSB0cnVlOworICAgIGVsc2UK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEhUTUxU
YWJsZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0
eWxlUHJvcGVydHlTZXQqIHN0eWxlKQoreworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhB
dHRyKQorICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRo
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0
cikKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQs
IGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJBdHRy
KSB7CisgICAgICAgIGludCBib3JkZXIgPSBhdHRyLT5pc0VtcHR5KCkgPyAxIDogYXR0ci0+dmFs
dWUoKS50b0ludCgpOworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlcldpZHRoLCBTdHJpbmc6Om51bWJlcihib3JkZXIpKTsgLy8gRklYTUU6IFBhc3Mg
YXMgaW50ZWdlci4KKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJjb2xvckF0
dHIpIHsKKyAgICAgICAgaWYgKCFhdHRyLT5pc0VtcHR5KCkpCisgICAgICAgICAgICBhZGRDU1ND
b2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGF0dHItPnZhbHVlKCkp
OworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJnY29sb3JBdHRyKQorICAgICAgICBh
ZGRDU1NDb2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRy
LT52YWx1ZSgpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmFja2dyb3VuZEF0dHIp
IHsKKyAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyhhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlLCBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5z
dHJpbmcoKSkpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2YWxpZ25BdHRyKSB7
CisgICAgICAgIGlmICghYXR0ci0+aXNFbXB0eSgpKQorICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUoKSk7CisgICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY2VsbHNwYWNpbmdBdHRyKSB7CisgICAgICAgIGlmICgh
YXR0ci0+aXNFbXB0eSgpKQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBhdHRyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSB2c3BhY2VBdHRyKSB7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAg
YWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHIt
PnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhzcGFjZUF0dHIpIHsK
KyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7CisgICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgp
LCAiY2VudGVyIikpIHsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5TdGFydCwgQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgICAgICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQsIENTU1ZhbHVlQXV0
byk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlGbG9hdCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBydWxlc0F0dHIpIHsKKyAgICAgICAgLy8gVGhlIHByZXNl
bmNlIG9mIGEgdmFsaWQgcnVsZXMgYXR0cmlidXRlIGNhdXNlcyBib3JkZXIgY29sbGFwc2luZyB0
byBiZSBlbmFibGVkLgorICAgICAgICBpZiAobV9ydWxlc0F0dHIgIT0gVW5zZXRSdWxlcykKKyAg
ICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlLCBD
U1NWYWx1ZUNvbGxhcHNlKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmcmFtZUF0
dHIpIHsKKyAgICAgICAgYm9vbCBib3JkZXJUb3A7CisgICAgICAgIGJvb2wgYm9yZGVyUmlnaHQ7
CisgICAgICAgIGJvb2wgYm9yZGVyQm90dG9tOworICAgICAgICBib29sIGJvcmRlckxlZnQ7Cisg
ICAgICAgIGlmIChnZXRCb3JkZXJzRnJvbUZyYW1lQXR0cmlidXRlVmFsdWUoYXR0ci0+dmFsdWUo
KSwgYm9yZGVyVG9wLCBib3JkZXJSaWdodCwgYm9yZGVyQm90dG9tLCBib3JkZXJMZWZ0KSkgewor
ICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgs
IENTU1ZhbHVlVGhpbik7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTVmFsdWVUaGluKTsKKyAgICAgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTVmFsdWVUaGluKTsKKyAg
ICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgs
IENTU1ZhbHVlVGhpbik7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJUb3BTdHlsZSwgYm9yZGVyVG9wID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlk
ZGVuKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlLCBib3JkZXJCb3R0b20gPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4p
OworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlLCBib3JkZXJMZWZ0ID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsKKyAgICAg
ICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIGJv
cmRlclJpZ2h0ID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsKKyAgICAgICAgfQor
ICAgIH0gZWxzZQorICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRl
KGF0dHIsIHN0eWxlKTsKK30KKwogdm9pZCBIVE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgQ2VsbEJvcmRlcnMgYm9yZGVyc0JlZm9yZSA9IGNl
bGxCb3JkZXJzKCk7CiAgICAgdW5zaWduZWQgc2hvcnQgb2xkUGFkZGluZyA9IG1fcGFkZGluZzsK
IAotICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKQotICAgICAgICBpZiAoYXR0ci0+
aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRo
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lk
dGgsIGF0dHItPnZhbHVlKCkpOwotICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRB
dHRyKQotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIgfHwg
YXR0ci0+bmFtZSgpID09IGJnY29sb3JBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5k
QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gdmFsaWduQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gdnNw
YWNlQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0g
YWxpZ25BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBjZWxsc3BhY2luZ0F0dHIpCisgICAgICAgIHNl
dE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gYm9yZGVyQXR0cikgIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgYXR0cmlidXRlIGlzIGEg
bWVzcy4KICAgICAgICAgbV9ib3JkZXJBdHRyID0gdHJ1ZTsKLQotICAgICAgICBpZiAoYXR0ci0+
aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
cldpZHRoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpbnQgYm9yZGVyID0gMDsKLSAg
ICAgICAgICAgIGlmIChhdHRyLT5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgYm9yZGVyID0g
MTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBib3JkZXIgPSBhdHRyLT52YWx1
ZSgpLnRvSW50KCk7CisgICAgICAgIGlmICghYXR0ci0+aXNOdWxsKCkpIHsKKyAgICAgICAgICAg
IGludCBib3JkZXIgPSBhdHRyLT5pc0VtcHR5KCkgPyAxIDogYXR0ci0+dmFsdWUoKS50b0ludCgp
OwogICAgICAgICAgICAgbV9ib3JkZXJBdHRyID0gYm9yZGVyOwotICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFN0cmluZzo6bnVtYmVyKGJvcmRlcikpOwog
ICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIpCi0g
ICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
YWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOwot
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBib3JkZXJjb2xvckF0dHIpIHsKKyAgICAgICAg
c2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGJvcmRlcmNvbG9yQXR0cikgewogICAgICAgICBtX2JvcmRlckNvbG9yQXR0ciA9ICFh
dHRyLT5pc0VtcHR5KCk7Ci0gICAgICAgIGlmICghYXR0ci0+aXNFbXB0eSgpKQotICAgICAgICAg
ICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9y
ZGVyQ29sb3IpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJhY2tncm91bmRBdHRy
KSB7Ci0gICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMoYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIGFkZENTU0ltYWdlUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIGRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSk7CisgICAg
ICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBmcmFtZUF0dHIpIHsKLSAgICAgICAgLy8gQ2FjaGUgdGhlIHZhbHVlIG9mICJm
cmFtZSIgc28gdGhhdCB0aGUgdGFibGUgY2FuIGV4YW1pbmUgaXQgbGF0ZXIuCi0gICAgICAgIG1f
ZnJhbWVBdHRyID0gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICAvLyBXaGV0aGVyIG9yIG5vdCB0
byBoaWRlIHRoZSB0b3AvcmlnaHQvYm90dG9tL2xlZnQgYm9yZGVycy4KLSAgICAgICAgY29uc3Qg
aW50IGNUb3AgPSAwOwotICAgICAgICBjb25zdCBpbnQgY1JpZ2h0ID0gMTsKLSAgICAgICAgY29u
c3QgaW50IGNCb3R0b20gPSAyOwotICAgICAgICBjb25zdCBpbnQgY0xlZnQgPSAzOwotICAgICAg
ICBib29sIGJvcmRlcnNbNF0gPSB7IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIH07Ci0gICAg
ICAgIAotICAgICAgICAvLyB2b2lkLCBhYm92ZSwgYmVsb3csIGhzaWRlcywgdnNpZGVzLCBsaHMs
IHJocywgYm94LCBib3JkZXIKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZh
bHVlKCksICJ2b2lkIikpCi0gICAgICAgICAgICBtX2ZyYW1lQXR0ciA9IHRydWU7Ci0gICAgICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJhYm92ZSIpKSB7Ci0g
ICAgICAgICAgICBtX2ZyYW1lQXR0ciA9IHRydWU7Ci0gICAgICAgICAgICBib3JkZXJzW2NUb3Bd
ID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1
ZSgpLCAiYmVsb3ciKSkgewotICAgICAgICAgICAgbV9mcmFtZUF0dHIgPSB0cnVlOwotICAgICAg
ICAgICAgYm9yZGVyc1tjQm90dG9tXSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImhzaWRlcyIpKSB7Ci0gICAgICAgICAgICBtX2Zy
YW1lQXR0ciA9IHRydWU7Ci0gICAgICAgICAgICBib3JkZXJzW2NUb3BdID0gYm9yZGVyc1tjQm90
dG9tXSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+
dmFsdWUoKSwgInZzaWRlcyIpKSB7Ci0gICAgICAgICAgICBtX2ZyYW1lQXR0ciA9IHRydWU7Ci0g
ICAgICAgICAgICBib3JkZXJzW2NMZWZ0XSA9IGJvcmRlcnNbY1JpZ2h0XSA9IHRydWU7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImxocyIpKSB7
Ci0gICAgICAgICAgICBtX2ZyYW1lQXR0ciA9IHRydWU7Ci0gICAgICAgICAgICBib3JkZXJzW2NM
ZWZ0XSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+
dmFsdWUoKSwgInJocyIpKSB7Ci0gICAgICAgICAgICBtX2ZyYW1lQXR0ciA9IHRydWU7Ci0gICAg
ICAgICAgICBib3JkZXJzW2NSaWdodF0gPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJib3giKSB8fAotICAgICAgICAgICAgICAgICAg
IGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJib3JkZXIiKSkgewotICAgICAgICAg
ICAgbV9mcmFtZUF0dHIgPSB0cnVlOwotICAgICAgICAgICAgYm9yZGVyc1tjVG9wXSA9IGJvcmRl
cnNbY0JvdHRvbV0gPSBib3JkZXJzW2NMZWZ0XSA9IGJvcmRlcnNbY1JpZ2h0XSA9IHRydWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIE5vdyBtYXAgaW4gdGhlIGJvcmRlciBzdHls
ZXMgb2Ygc29saWQgYW5kIGhpZGRlbiByZXNwZWN0aXZlbHkuCi0gICAgICAgIGlmIChtX2ZyYW1l
QXR0cikgewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJUb3BX
aWR0aCwgQ1NTVmFsdWVUaGluKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1ZhbHVlVGhpbik7Ci0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTVmFsdWVUaGluKTsKLSAgICAg
ICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTVmFs
dWVUaGluKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9w
U3R5bGUsIGJvcmRlcnNbY1RvcF0gPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOwot
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwg
Ym9yZGVyc1tjQm90dG9tXSA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1ZUhpZGRlbik7Ci0gICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgYm9yZGVy
c1tjTGVmdF0gPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOwotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBib3JkZXJzW2NSaWdo
dF0gPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgs
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGF0
dHJpYnV0ZSBpcyBhIG1lc3MuCisgICAgICAgIGJvb2wgYm9yZGVyVG9wOworICAgICAgICBib29s
IGJvcmRlclJpZ2h0OworICAgICAgICBib29sIGJvcmRlckJvdHRvbTsKKyAgICAgICAgYm9vbCBi
b3JkZXJMZWZ0OworICAgICAgICBtX2ZyYW1lQXR0ciA9IGdldEJvcmRlcnNGcm9tRnJhbWVBdHRy
aWJ1dGVWYWx1ZShhdHRyLT52YWx1ZSgpLCBib3JkZXJUb3AsIGJvcmRlclJpZ2h0LCBib3JkZXJC
b3R0b20sIGJvcmRlckxlZnQpOworICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRl
KCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcnVsZXNBdHRyKSB7CiAgICAgICAg
IG1fcnVsZXNBdHRyID0gVW5zZXRSdWxlczsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGF0dHItPnZhbHVlKCksICJub25lIikpCkBAIC0zNzQsMTcgKzM5NCw4IEBAIHZvaWQgSFRNTFRh
YmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAg
bV9ydWxlc0F0dHIgPSBDb2xzUnVsZXM7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
dHRyLT52YWx1ZSgpLCAiYWxsIikpCiAgICAgICAgICAgICBtX3J1bGVzQXR0ciA9IEFsbFJ1bGVz
OwotICAgICAgICAKLSAgICAgICAgLy8gVGhlIHByZXNlbmNlIG9mIGEgdmFsaWQgcnVsZXMgYXR0
cmlidXRlIGNhdXNlcyBib3JkZXIgY29sbGFwc2luZyB0byBiZSBlbmFibGVkLgotICAgICAgICBp
ZiAobV9ydWxlc0F0dHIgIT0gVW5zZXRSdWxlcykKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsIENTU1ZhbHVlQ29sbGFwc2UpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckNvbGxh
cHNlKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjZWxsc3BhY2luZ0F0dHIpIHsK
LSAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENT
U0xlbmd0aChDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsIGF0dHItPnZhbHVlKCkpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclNw
YWNpbmcpOworCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjZWxscGFkZGluZ0F0dHIpIHsKICAgICAgICAgaWYg
KCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fcGFkZGluZyA9IG1heCgw
LCBhdHRyLT52YWx1ZSgpLnRvSW50KCkpOwpAQCAtMzkyLDM0ICs0MDMsNiBAQCB2b2lkIEhUTUxU
YWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAg
IG1fcGFkZGluZyA9IDE7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sc0F0dHIp
IHsKICAgICAgICAgLy8gIyMjCi0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNl
QXR0cikgewotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRv
bSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5
TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQ
cm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoc3BhY2VBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT5p
c051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsK
LSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52
YWx1ZSgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWdu
QXR0cikgewotICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImNlbnRlciIpKSB7Ci0g
ICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFy
dCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdE1hcmdpbkVuZCwgQ1NTVmFsdWVBdXRvKTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQsIGF0dHItPnZh
bHVlKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMo
Q1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydCwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQs
IENTU1Byb3BlcnR5RmxvYXQpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZhbGln
bkF0dHIpIHsKLSAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5VmVydGljYWxBbGlnbik7CiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShhdHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApp
bmRleCBlZjhjY2RlLi5lZTA4MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaApAQCAtNzMsNiArNzMsNyBAQCBwcml2YXRlOgogICAgIEhUTUxUYWJsZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RT
dHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogCiAg
ICAgLy8gVXNlZCB0byBvYnRhaW4gZWl0aGVyIGEgc29saWQgb3Igb3V0c2V0IGJvcmRlciBkZWNs
IGFuZCB0byBkZWFsIHdpdGggdGhlIGZyYW1lIGFuZCBydWxlcyBhdHRyaWJ1dGVzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAppbmRleCA4ZmQ3NDdiLi44
ODZiMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNw
cApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZVBhcnRFbGVtZW50LmgiCiAK
ICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMzYsNTMgKzM3LDU1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotdm9pZCBIVE1MVGFibGVQYXJ0
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQorc3RhdGljIGlubGluZSBi
b29sIGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sK
KyAgICByZXR1cm4gYXR0ci0+bmFtZSgpID09IGJnY29sb3JBdHRyIHx8IGF0dHItPm5hbWUoKSA9
PSBiYWNrZ3JvdW5kQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gYm9yZGVyY29sb3JBdHRyIHx8IGF0
dHItPm5hbWUoKSA9PSB2YWxpZ25BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIgfHwg
YXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHI7Cit9CisKK3ZvaWQgSFRNTFRhYmxlUGFydEVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVy
dHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIpCi0g
ICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBiYWNrZ3JvdW5kQXR0cikgewogICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKGF0dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAoIXVybC5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NJbWFnZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dy
b3VuZEltYWdlLCBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kSW1hZ2UpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKSkpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBib3JkZXJjb2xvckF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCb3JkZXJDb2xv
ciwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVl
U29saWQpOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdo
dFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVy
VG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUpOworICAgICAgICAgICAgYWRk
Q1NTQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBhdHRyLT52YWx1
ZSgpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTVmFsdWVT
b2xpZCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJS
aWdodFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IHZhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxB
bGlnbiwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNT
U1Byb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbik7CisgICAgICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiB2ID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgaWYgKHYuaXNOdWxsKCkp
Ci0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbik7Ci0g
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHYsICJtaWRkbGUiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZSh2LCAiY2VudGVyIikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50ZXIpOwotICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZSh2LCAiYWJzbWlkZGxlIikpCi0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVDZW50ZXIpOwotICAgICAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2LCAibGVmdCIpKQotICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0TGVmdCk7Ci0gICAg
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHYsICJyaWdodCIpKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0UmlnaHQp
OworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJjZW50ZXIiKSkKKyAgICAgICAg
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJr
aXRDZW50ZXIpOworICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1
ZSgpLCAiYWJzbWlkZGxlIikpCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlQ2VudGVyKTsKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImxlZnQiKSkKKyAgICAgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRMZWZ0KTsKKyAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgInJpZ2h0Iikp
CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENT
U1ZhbHVlV2Via2l0UmlnaHQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgdik7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1
ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdo
dCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1By
b3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0KTsKLSAgICB9IGVsc2UKKyAgICAgICAgICAgIGFkZENT
U0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoIWlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0
cmlidXRlKGF0dHIpKTsKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJp
YnV0ZShhdHRyLCBzdHlsZSk7CisgICAgfQorfQorCit2b2lkIEhUTUxUYWJsZVBhcnRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGlzUmVzcGVjdGVk
UHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHIpKQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0
eWxlVXBkYXRlKCk7CisgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoYXR0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
UGFydEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQu
aAppbmRleCBjMTM5YmJlLi4yZWI3MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVQYXJ0RWxlbWVudC5oCkBAIC0zOCw2ICszOCw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVBy
b3BlcnR5U2V0KikgT1ZFUlJJREU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBiZmY3NTc0Li4wOTFmNjFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTExNyw3
ICsxMTcsMjEgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW4KICAgICBzZXRJbm5lclRleHRWYWx1
ZSh2YWx1ZSgpKTsKICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBh
cnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKIH0KLSAg
ICAKKwordm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKK3sKKyAgICBpZiAoYXR0
ci0+bmFtZSgpID09IHdyYXBBdHRyKSB7CisgICAgICAgIGlmIChzaG91bGRXcmFwVGV4dCgpKSB7
CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBD
U1NWYWx1ZVByZVdyYXApOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVl
UHJlKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdvcmRXcmFw
LCBDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHls
ZSk7Cit9CisKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gcm93c0F0dHIpIHsKQEAgLTE1
MCwxNCArMTY0LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgICAgICB3cmFwID0gU29mdFdyYXA7CiAgICAgICAgIGlm
ICh3cmFwICE9IG1fd3JhcCkgewogICAgICAgICAgICAgbV93cmFwID0gd3JhcDsKLQotICAgICAg
ICAgICAgaWYgKHNob3VsZFdyYXBUZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlV3JhcCk7Ci0gICAgICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dv
cmQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlKTsKLSAgICAgICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZU5vcm1hbCk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAK
ICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICAgICAgICAgIHJlbmRlcmVyKCkt
PnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCBjMmJiYzcxLi45ZDczNDk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtOTQsNiArOTQsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9
IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHls
ZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0
JiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVUxpc3RFbGVtZW50LmNwcAppbmRleCBjYzNjMDY5Li4xMDk5NDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKQEAgLTQ3LDEzICs0NywxOCBAQCBQYXNzUmVm
UHRyPEhUTUxVTGlzdEVsZW1lbnQ+IEhUTUxVTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFVMaXN0RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCit2b2lkIEhUTUxVTGlzdEVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0
eWxlKQoreworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpCisgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIGF0dHItPnZhbHVlKCkpOwor
ICAgIGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShh
dHRyLCBzdHlsZSk7Cit9CisKIHZvaWQgSFRNTFVMaXN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpCi0g
ICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBhdHRyLT52YWx1
ZSgpKTsKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgIGVsc2UK
ICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaAppbmRleCBjNzg2NzQ2Li5hYmIyMTkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaApAQCAtMzYsNiArMzYsNyBAQCBwcml2YXRl
OgogICAgIEhUTUxVTGlzdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBT
dHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCA2YjNmYzViLi41NTU4NDFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTk1LDYgKzk1LDE2
IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6ZGV0YWNoKCkKICAgICAgICAgbV9pbWFnZUxvYWRl
ci5jbGVhcigpOwogfQogCit2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQoreworICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKQorICAgICAgICBhZGRDU1NMZW5ndGhUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0cikKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UKKyAg
ICAgICAgSFRNTE1lZGlhRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0
eWxlKTsKK30KKwogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRyLT5u
YW1lKCk7CkBAIC0xMTUsMTYgKzEyNSw4IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIoKSktPmltYWdlUmVzb3VyY2UoKS0+c2V0Q2FjaGVkSW1hZ2UoMCk7IAogICAgICAg
ICB9CiAjZW5kaWYKLSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHdpZHRoQXR0cikKLSAgICAg
ICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdpZHRoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwotICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IGhlaWdodEF0dHIpCi0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgp
KQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0
dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gd2lkdGhBdHRyIHx8IGF0
dHJOYW1lID09IGhlaWdodEF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRh
dGUoKTsKICAgICBlbHNlCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBlOGY2
MzMxLi5mZTg4YWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAt
NzYsNiArNzYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0
dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRy
aWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBpc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBoYXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXllcigpLT5oYXNWaWRl
bygpOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCmluZGV4IDgzMGFkNDUuLjAzNWExMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKQEAgLTQ4LDI5ICs0OCw0
NCBAQCBQYXNzUmVmUHRyPE1hdGhNTEVsZW1lbnQ+IE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEbwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWF0
aE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi12b2lkIE1hdGhNTEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Jl
c3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgcmV0
dXJuIGF0dHItPm5hbWUoKSA9PSBtYXRoYmFja2dyb3VuZEF0dHIgfHwgYXR0ci0+bmFtZSgpID09
IG1hdGhzaXplQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gbWF0aGNvbG9yQXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gZm9udHNpemVBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5kQXR0ciB8
fCBhdHRyLT5uYW1lKCkgPT0gY29sb3JBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBmb250c3R5bGVB
dHRyIHx8IGF0dHItPm5hbWUoKSA9PSBmb250d2VpZ2h0QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0g
Zm9udGZhbWlseUF0dHI7Cit9CisKK3ZvaWQgTWF0aE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
QXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBtYXRoYmFja2dyb3VuZEF0dHIpCi0gICAgICAgIGFkZENT
U1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAg
ICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRy
LT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbWF0aHNpemVBdHRyKSB7
CiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgdGhyZWUgdmFsdWVzIG9mIG1hdGhzaXplIGFyZSBo
YW5kbGVkIGluIFdlYkNvcmUvY3NzL21hdGhtbC5jc3MKICAgICAgICAgaWYgKGF0dHItPnZhbHVl
KCkgIT0gIm5vcm1hbCIgJiYgYXR0ci0+dmFsdWUoKSAhPSAic21hbGwiICYmIGF0dHItPnZhbHVl
KCkgIT0gImJpZyIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRT
aXplLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRTaXplLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBtYXRoY29sb3JBdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOwogICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkIGF0
dHJpYnV0ZXMgdGhhdCBzaG91bGQgbG9vc2UgaW4gYSBjb25mbGljdCB3aXRoIGEgbm9uIGRlcHJl
Y2F0ZWQgYXR0cmlidXRlCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZvbnRzaXplQXR0
cikKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBh
dHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmFja2dyb3VuZEF0
dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBh
dHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gY29sb3JBdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yLCBh
dHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Q29s
b3IsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmb250c3R5
bGVBdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgYXR0
ci0+dmFsdWUoKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRT
dHlsZSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZvbnR3
ZWlnaHRBdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQs
IGF0dHItPnZhbHVlKCkpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlG
b250V2VpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
Zm9udGZhbWlseUF0dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZh
bWlseSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHksIGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UgeworICAgICAgICBBU1NF
UlQoIWlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHIpKTsKKyAgICAgICAgU3R5
bGVkRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKKyAgICB9
Cit9CisKK3ZvaWQgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQoreworICAgIGlmIChpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRyKSkKKyAg
ICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgIGVsc2UKICAgICAgICAg
U3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTEVsZW1lbnQuaAppbmRleCAyMDFmMDgzLi5iYzRhOTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTQzLDYgKzQzLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0
ZTogICAgCiAgICAgdmlydHVhbCBib29sIGlzTWF0aE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1
dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiB9OwogICAgIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCBiZjEwYTFlLi5iOTM1ODBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtOTEsNiArOTEsMTYgQEAgYm9vbCBT
VkdJbWFnZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxp
ZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKK3Zv
aWQgU1ZHSW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKK3sKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHItPm5hbWUoKSkpCisgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQorICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQorICAgICAgICBzdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworfQorCiB2b2lkIFNW
R0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIFNW
R1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKQEAgLTEwNSwxMCArMTE1LDEwIEBA
IHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAg
ICAgICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnBhcnNlUHJlc2VydmVBc3BlY3RSYXRpbyh0
aGlzLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OndpZHRoQXR0cikgewogICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIGF0dHItPnZhbHVlKCksIHBhcnNlRXJyb3IsIEZvcmJp
ZE5lZ2F0aXZlTGVuZ3RocykpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdp
ZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0
ZSgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KSB7CiAgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5n
dGhNb2RlSGVpZ2h0LCBhdHRyLT52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxl
bmd0aHMpKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHIt
PnZhbHVlKCkpOworICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAg
fSBlbHNlIGlmIChTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUoYXR0cikKICAgICAgICAgICAgICB8
fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHIpCiAgICAgICAgICAgICAgfHwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCAxZmJiYjBmLi40ZWRkMDBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC01MCw2ICs1MCw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3Bl
cnR5U2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDUxOGI1YjMuLmVlNzk1ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKQEAgLTI5MiwxMiArMjky
LDE3IEBAIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6aXNBbmltYXRhYmxlQ1NTUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIGNzc1Byb3BlcnR5VG9UeXBl
TWFwKCkuY29udGFpbnMoYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmNv
bGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQq
IHN0eWxlKQoreworICAgIGludCBwcm9wZXJ0eUlEID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJv
cGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKTsKKyAgICBpZiAocHJvcGVy
dHlJRCA+IDApCisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52
YWx1ZSgpKTsKK30KKwogdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIpCiB7Ci0gICAgaW50IHByb3BJZCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1By
b3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7Ci0gICAgaWYgKHByb3BJ
ZCA+IDApIHsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkocHJvcElkLCBhdHRyLT52YWx1ZSgpKTsK
LSAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIGlmIChTVkdTdHlsZWRFbGVtZW50
Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpID4gMCkgewor
ICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAppbmRleCAzZGY0
YzkzLi4wODQ5OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKQEAgLTY2
LDYgKzY2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RT
dHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCBjOGRmZGM1Li42MWRmYzhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtMjI4LDYgKzIy
OCwyMCBAQCBib29sIFNWR1RleHRDb250ZW50RWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJp
YnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+
KGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQor
eworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ci0+bmFtZSgpKSkKKyAgICAgICAg
U1ZHU3R5bGVkRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsK
KyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkubWF0Y2hlcyhYTUxOYW1lczo6c3BhY2VBdHRyKSkg
eworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgcHJlc2Vy
dmVTdHJpbmcsICgicHJlc2VydmUiKSk7CisKKyAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0g
cHJlc2VydmVTdHJpbmcpCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlTm93cmFwKTsK
KyAgICB9Cit9CisKIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vy
cm9yOwpAQCAtMjQzLDE0ICsyNTcsOCBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0gZWxzZSBpZiAoU1ZHVGVzdHM6OnBh
cnNlQXR0cmlidXRlKGF0dHIpCiAgICAgICAgICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgewogICAgIH0gZWxzZSBpZiAoU1ZHTGFu
Z1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgewotICAgICAgICBpZiAoYXR0ci0+bmFtZSgp
Lm1hdGNoZXMoWE1MTmFtZXM6OnNwYWNlQXR0cikpIHsKLSAgICAgICAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBwcmVzZXJ2ZVN0cmluZywgKCJwcmVzZXJ2ZSIp
KTsKLQotICAgICAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkgPT0gcHJlc2VydmVTdHJpbmcpCi0g
ICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NW
YWx1ZVByZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZU5vd3JhcCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKGF0dHItPm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIpKQorICAg
ICAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgIH0gZWxzZQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5oCmluZGV4IGQ0NWJlYTYuLjc2ZDI4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBT
dHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126628</attachid>
            <date>2012-02-11 04:27:50 -0800</date>
            <delta_ts>2012-02-11 10:20:14 -0800</delta_ts>
            <desc>Porpoise patch</desc>
            <filename>bug-78381-style.diff</filename>
            <type>text/plain</type>
            <size>131017</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MzQ2ZWExLi4xYjM4YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjA1
IEBACisyMDEyLTAyLTExICBBbmRyZWFzIEtsaW5nICA8YXdlc29tZWtsaW5nQGFwcGxlLmNvbT4K
KworICAgICAgICBBdHRyaWJ1dGUgc3R5bGVzIHNob3VsZCBiZSBjcmVhdGVkIGxhemlseS4KKyAg
ICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzgzODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVEw7RFIgc3VtbWFyeTogTGF6aWx5IGNvbnN0cnVj
dCB0aGUgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlU3R5bGUoKSBpbnN0ZWFkIG9mCisgICAgICAg
IG1vdmluZyBwcm9wZXJ0aWVzIGluL291dCBvZiBpdCBpbiBwYXJzZUF0dHJpYnV0ZSgpLiBUaGlz
IGFsbG93cyB1cyB0byBlbmFibGUKKyAgICAgICAgdGhlIG1hdGNoZWQgZGVjbGFyYXRpb24gY2Fj
aGUgZm9yIGVsZW1lbnRzIHdpdGggcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMuCisKKyAgICAgICAg
VGhlIG1hdGNoZWQgZGVjbGFyYXRpb24gY2FjaGUgaGFzIGJlZW4gZGlzYWJsZWQgZm9yIGVsZW1l
bnRzIHdpdGggcHJlc2VudGF0aW9uCisgICAgICAgIGF0dHJpYnV0ZXMgYmVjYXVzZSBhdHRyaWJ1
dGVTdHlsZSgpIHdhcyBtdXRhYmxlLCBhbmQgKHNpbXBseSBwdXQpIHRoZSBjYWNoZSBtYXBzCisg
ICAgICAgIGEgc2V0IG9mIFN0eWxlUHJvcGVydHlTZXQgcG9pbnRlcnMgdG8gYSByZXN1bHRpbmcg
UmVuZGVyU3R5bGUuIFRoaXMgcmVxdWlyZXMKKyAgICAgICAgdGhhdCB0aGUgU3R5bGVQcm9wZXJ0
eVNldHMgYXJlIGltbXV0YWJsZS4KKworICAgICAgICBUbyBtYWtlIHRoZW0gaW1tdXRhYmxlLCB3
ZSBub3cgY29uc3RydWN0IHRoZSBhdHRyaWJ1dGUgc3R5bGUgbGF6aWx5IGJ5IGFkZGluZworICAg
ICAgICBhIGZsYWcgKHRvIE5vZGUpIHRoYXQgZ2V0cyBzZXQgaW4gcGFyc2VBdHRyaWJ1dGUoKSB3
aGVuIGEgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZQorICAgICAgICByZXNwZWN0ZWQgYnkgdGhlIGVs
ZW1lbnQgY2hhbmdlcy4gQSBzdWJzZXF1ZW50IGNhbGwgdG8gYXR0cmlidXRlU3R5bGUoKSBjaGVj
a3MKKyAgICAgICAgdGhlIGZsYWcgYW5kIHJlYnVpbGRzIHRoZSBzdHlsZSBieSBsb29waW5nIG92
ZXIgdGhlIGF0dHJpYnV0ZXMgYW5kIGNhbGxpbmcgdGhlCisgICAgICAgIG5ldyB2aXJ0dWFsIFN0
eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSgpIG9uIGVhY2ggb25lLiBBbnkg
ZGFuZ2xpbmcKKyAgICAgICAgcmVmZXJlbmNlcyB0byB0aGUgcHJldmlvdXMgYXR0cmlidXRlIHN0
eWxlIHdpbGwgYmUgZ2FyYmFnZSBjb2xsZWN0ZWQgYnkgdGhlCisgICAgICAgIGNhY2hlIGluIENT
U1N0eWxlU2VsZWN0b3I6OnN3ZWVwTWF0Y2hlZERlY2xhcmF0aW9uQ2FjaGUoKS4KKworICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorCisgICAgICAgICAgICBFbmFibGUgbWF0Y2hlZCBk
ZWNsYXJhdGlvbiBjYWNoZSBmb3IgZWxlbWVudHMgd2l0aCBhdHRyaWJ1dGUgc3R5bGUuCisKKyAg
ICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YXR0cmlidXRlU3R5
bGVEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRBdHRyaWJ1dGVTdHlsZURpcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNsZWFyQXR0cmlidXRlU3R5bGVEaXJ0eSk6CisK
KyAgICAgICAgICAgIEFkZCBhIE5vZGUgZmxhZyB0byBzaWduaWZ5IHRoYXQgYSBwcmVzZW50YXRp
b24gYXR0cmlidXRlIGhhcyBjaGFuZ2VkIGFuZAorICAgICAgICAgICAgdGhlIGF0dHJpYnV0ZSBz
dHlsZSBuZWVkcyB0byBiZSByZWJ1aWx0LgorCisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1
dGVEYXRhLmg6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjplbnN1cmVOZXdBdHRyaWJ1dGVTdHls
ZSk6CisKKyAgICAgICAgICAgIE5ldyBoZWxwZXIgdGhhdCBhbHdheXMgY29uc3RydWN0cyBhIG5l
dyBhdHRyaWJ1dGUgc3R5bGUuCisKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjphZGRDU1NMZW5ndGhUb1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmFkZENTU0NvbG9yVG9TdHlsZSk6CisKKyAg
ICAgICAgICAgIFRoZSBvbmx5IHJlbWFpbmluZyBvZiB0aGUgYWRkQ1NTKiBoZWxwZXJzIGluIFN0
eWxlZEVsZW1lbnQuIAorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojp1cGRhdGVB
dHRyaWJ1dGVTdHlsZSk6CisKKyAgICAgICAgICAgIENhbGxlZCBieSBhdHRyaWJ1dGVTdHlsZSgp
IGluIGNhc2UgdGhlICJhdHRyaWJ1dGUgc3R5bGUgZGlydHkiIGZsYWcgaXMKKyAgICAgICAgICAg
IHNldC4gUmVidWlsZHMgdGhlIGF0dHJpYnV0ZSBzdHlsZSBmcm9tIHNjcmF0Y2ggYnkgbG9vcGlu
ZyBvdmVyIHRoZQorICAgICAgICAgICAgYXR0cmlidXRlIG1hcCBhbmQgY2FsbGluZyBjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUoKSBvbiBlYWNoIGF0dHJpYnV0ZS4KKworICAgICAgICAqIGRvbS9T
dHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YXR0
cmlidXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6c2V0TmVlZHNB
dHRyaWJ1dGVTdHlsZVVwZGF0ZSk6CisKKyAgICAgICAgICAgIEhlbHBlciwgc2V0cyB0aGUgYXR0
cmlidXRlIHN0eWxlIGRpcnR5IGZsYWcgYW5kIG1hcmtzIHRoZSBlbGVtZW50IGZvcgorICAgICAg
ICAgICAgZnVsbCBzdHlsZSByZWNhbGMuIFRoaXMgaXMgd2hhdCBwYXJzZUF0dHJpYnV0ZSgpIGNh
bGxzIGluIHN1YmNsYXNzZXMKKyAgICAgICAgICAgIHdoZW4gdGhleSBlbmNvdW50ZXIgYSBwcmVz
ZW50YXRpb24gYXR0cmlidXRlLgorCisgICAgICAgICogaHRtbC9IVE1MQlJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxCUkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQlJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MQlJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxEaXZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEaXZFbGVtZW50
Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERpdkVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxEaXZFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6YXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbGVtZW50OjptYXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbGVtZW50OjphcHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5bGUpOgorICAgICAgICAq
IGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb250RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9udEVsZW1lbnQ6
OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9udEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGb250RWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEhS
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSFJFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEhSRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEhSRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTElGcmFtZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZy
YW1lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMSUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojppc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWFycXVlZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT0xpc3RFbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVj
dEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJhZ3JhcGhFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcmFncmFwaEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jl
c3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1
Z0luRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxQbHVnSW5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFByZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFByZUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFByZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNh
cHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNhcHRpb25FbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRh
YmxlQ2FwdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVDb2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJzRnJvbUZyYW1lQXR0cmli
dXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6Y29sbGVjdFN0
eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
UmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRhYmxlUGFydEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxVTGlzdEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVUxpc3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MVUxpc3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZv
ckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
bWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNSZXNwZWN0ZWRQ
cmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0lt
YWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRD
b250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuaDoKKworICAgICAgICAgICAgU3BsaXQgaGFuZGxpbmcgb2YgcHJlc2VudGF0
aW9uIGF0dHJpYnV0ZXMgYmV0d2VlbiBwYXJzZUF0dHJpYnV0ZSgpIGFuZAorICAgICAgICAgICAg
Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKCkgYXMgYXBwcm9wcmlhdGUuIFNvbWUgbWlub3IgcmVm
YWN0b3JpbmdzIGhlcmUgYW5kCisgICAgICAgICAgICB0aGVyZSAobW9zdGx5IGluIEhUTUxUYWJs
ZUVsZW1lbnQpIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBjb2RlIGR1cGxpY2F0aW9uLgorICAgICAgICAg
ICAgQWxzbyBzcHJpbmtsZWQgRklYTUVzIGFib3V0IGluZWZmaWNpZW5jaWVzIHdlIHNob3VsZCBj
bGVhbiB1cC4KKwogMjAxMi0wMi0xMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBDU1NPTSB3cmFwcGVyIHBvaW50ZXIgb3V0IG9mIFN0eWxlUHJvcGVy
dHlTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA1NTY4ODM1
Li40Y2YyNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0x
MDAyLDcgKzEwMDIsNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoQWxsUnVsZXMoTWF0
Y2hSZXN1bHQmIHJlc3VsdCkKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnJhbmdlcy5maXJz
dEF1dGhvclJ1bGUgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yYW5nZXMuZmly
c3RBdXRob3JSdWxlID0gcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZTsKICAgICAgICAgICAg
ICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0cmlidXRlU3R5bGUpOwotICAgICAgICAgICAg
ICAgIHJlc3VsdC5pc0NhY2hlYWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCmluZGV4IGNl
YTYyZjMuLjgyZDc4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0
cmlidXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVE
YXRhLmNwcApAQCAtNTMsMTAgKzUzLDkgQEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZGVz
dHJveUlubGluZVN0eWxlRGVjbCgpCiAgICAgbV9pbmxpbmVTdHlsZURlY2wgPSAwOwogfQogCi1T
dHlsZVByb3BlcnR5U2V0KiBFbGVtZW50QXR0cmlidXRlRGF0YTo6ZW5zdXJlQXR0cmlidXRlU3R5
bGUoU3R5bGVkRWxlbWVudCogZWxlbWVudCkKK1N0eWxlUHJvcGVydHlTZXQqIEVsZW1lbnRBdHRy
aWJ1dGVEYXRhOjplbnN1cmVOZXdBdHRyaWJ1dGVTdHlsZShTdHlsZWRFbGVtZW50KiBlbGVtZW50
KQogewotICAgIGlmICghbV9hdHRyaWJ1dGVTdHlsZSkKLSAgICAgICAgbV9hdHRyaWJ1dGVTdHls
ZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZUF0dHJpYnV0ZVN0eWxlKGVsZW1lbnQpOworICAg
IG1fYXR0cmlidXRlU3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGVBdHRyaWJ1dGVTdHls
ZShlbGVtZW50KTsKICAgICByZXR1cm4gbV9hdHRyaWJ1dGVTdHlsZS5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaAppbmRleCA0MDgwNjU5Li4xZWNh
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95SW5saW5lU3R5bGVEZWNsKCk7CiAK
ICAgICBTdHlsZVByb3BlcnR5U2V0KiBhdHRyaWJ1dGVTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlU3R5bGUuZ2V0KCk7IH0KLSAgICBTdHlsZVByb3BlcnR5U2V0KiBlbnN1cmVBdHRy
aWJ1dGVTdHlsZShTdHlsZWRFbGVtZW50Kik7CisgICAgU3R5bGVQcm9wZXJ0eVNldCogZW5zdXJl
TmV3QXR0cmlidXRlU3R5bGUoU3R5bGVkRWxlbWVudCopOwogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBOYW1lZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBiMTk4MWQ3Li5lMWJiZWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKQEAgLTMwMCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHNoZWV0TG9hZGVkKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdGFydExv
YWRpbmdEeW5hbWljU2hlZXQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICBib29s
IGF0dHJpYnV0ZVN0eWxlRGlydHkoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKEF0dHJpYnV0ZVN0
eWxlRGlydHlGbGFnKTsgfQogICAgIGJvb2wgaGFzTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSGFzTmFtZUZsYWcpOyB9CiAgICAgYm9vbCBoYXNJRCgpIGNvbnN0IHsgcmV0dXJuIGdldEZs
YWcoSGFzSURGbGFnKTsgfQogICAgIGJvb2wgaGFzQ2xhc3MoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKEhhc0NsYXNzRmxhZyk7IH0KQEAgLTMxNSw2ICszMTYsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKENoaWxkTmVl
ZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiBn
ZXRGbGFnKElzTGlua0ZsYWcpOyB9CiAKKyAgICB2b2lkIHNldEF0dHJpYnV0ZVN0eWxlRGlydHko
KSB7IHNldEZsYWcoQXR0cmlidXRlU3R5bGVEaXJ0eUZsYWcpOyB9CisgICAgdm9pZCBjbGVhckF0
dHJpYnV0ZVN0eWxlRGlydHkoKSB7IGNsZWFyRmxhZyhBdHRyaWJ1dGVTdHlsZURpcnR5RmxhZyk7
IH0KKwogICAgIHZvaWQgc2V0SGFzTmFtZShib29sIGYpIHsgc2V0RmxhZyhmLCBIYXNOYW1lRmxh
Zyk7IH0KICAgICB2b2lkIHNldEhhc0lEKGJvb2wgZikgeyBzZXRGbGFnKGYsIEhhc0lERmxhZyk7
IH0KICAgICB2b2lkIHNldEhhc0NsYXNzKGJvb2wgZikgeyBzZXRGbGFnKGYsIEhhc0NsYXNzRmxh
Zyk7IH0KQEAgLTY3Niw2ICs2ODAsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIEhhc05hbWVGbGFn
ID0gMSA8PCAzMCwKIAorICAgICAgICBBdHRyaWJ1dGVTdHlsZURpcnR5RmxhZyA9IDEgPDwgMzEs
CisKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5n
Q2hpbGRyZW5GaW5pc2hlZEZsYWcgfCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnIHwgQXJlU1ZH
QXR0cmlidXRlc1ZhbGlkRmxhZwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNw
cAppbmRleCA1MjYwNTI2Li5lOThiZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwCkBAIC0xMDUsNTcgKzEwNSw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIH0KIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjpyZW1v
dmVDU1NQcm9wZXJ0aWVzKGludCBpZDEsIGludCBpZDIsIGludCBpZDMsIGludCBpZDQsIGludCBp
ZDUsIGludCBpZDYsIGludCBpZDcsIGludCBpZDgpCi17Ci0gICAgU3R5bGVQcm9wZXJ0eVNldCog
c3R5bGUgPSBhdHRyaWJ1dGVTdHlsZSgpOwotICAgIGlmICghc3R5bGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEFTU0VSVChpZDEgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKLSAgICBzdHlsZS0+
cmVtb3ZlUHJvcGVydHkoaWQxKTsKLQotICAgIGlmIChpZDIgPT0gQ1NTUHJvcGVydHlJbnZhbGlk
KQotICAgICAgICByZXR1cm47Ci0gICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KGlkMik7Ci0gICAg
aWYgKGlkMyA9PSBDU1NQcm9wZXJ0eUludmFsaWQpCi0gICAgICAgIHJldHVybjsKLSAgICBzdHls
ZS0+cmVtb3ZlUHJvcGVydHkoaWQzKTsKLSAgICBpZiAoaWQ0ID09IENTU1Byb3BlcnR5SW52YWxp
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShpZDQpOwotICAg
IGlmIChpZDUgPT0gQ1NTUHJvcGVydHlJbnZhbGlkKQotICAgICAgICByZXR1cm47Ci0gICAgc3R5
bGUtPnJlbW92ZVByb3BlcnR5KGlkNSk7Ci0gICAgaWYgKGlkNiA9PSBDU1NQcm9wZXJ0eUludmFs
aWQpCi0gICAgICAgIHJldHVybjsKLSAgICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoaWQ2KTsKLSAg
ICBpZiAoaWQ3ID09IENTU1Byb3BlcnR5SW52YWxpZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHN0
eWxlLT5yZW1vdmVQcm9wZXJ0eShpZDcpOwotICAgIGlmIChpZDggPT0gQ1NTUHJvcGVydHlJbnZh
bGlkKQotICAgICAgICByZXR1cm47Ci0gICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KGlkOCk7Ci19
Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJp
bmcgJnZhbHVlKQotewotICAgIGlmICghZW5zdXJlQXR0cmlidXRlU3R5bGUoKS0+c2V0UHJvcGVy
dHkoaWQsIHZhbHVlKSkKLSAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoaWQpOwotfQotCi12b2lk
IFN0eWxlZEVsZW1lbnQ6OmFkZENTU1Byb3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRp
ZmllcikKLXsKLSAgICBlbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eShwcm9wZXJ0eUlELCBkb2N1bWVudCgpLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSWRlbnRp
ZmllclZhbHVlKGlkZW50aWZpZXIpKSk7Ci0gICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotfQot
Ci12b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0ltYWdlUHJvcGVydHkoaW50IGlkLCBjb25zdCBT
dHJpbmcmIHVybCkKLXsKLSAgICBlbnN1cmVBdHRyaWJ1dGVTdHlsZSgpLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eShpZCwgQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKHVybCkpKTsKLSAgICBzZXROZWVk
c1N0eWxlUmVjYWxjKCk7Ci19Ci0KLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTTGVuZ3RoKGlu
dCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKK3ZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTTGVu
Z3RoVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgaW50IHByb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyAmdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5v
dCBzcGluIHVwIHRoZSBDU1MgcGFyc2VyLCBidXQgc2hvdWxkIGluc3RlYWQganVzdCBmaWd1cmUg
b3V0IHRoZSBjb3JyZWN0CiAgICAgLy8gbGVuZ3RoIHVuaXQgYW5kIG1ha2UgdGhlIGFwcHJvcHJp
YXRlIHBhcnNlZCB2YWx1ZS4KQEAgLTE4MSwxMiArMTMxLDEyIEBAIHZvaWQgU3R5bGVkRWxlbWVu
dDo6YWRkQ1NTTGVuZ3RoKGludCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSkKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChsICE9IHYtPmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShpZCwgdi0+c3Vic3RyaW5nKDAsIGwpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShwcm9wZXJ0eUlELCB2LT5zdWJzdHJpbmcoMCwgbCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgYWRkQ1NTUHJvcGVydHkoaWQsIHZhbHVlKTsKKyAg
ICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUpOwogfQogCiBzdGF0aWMgU3Ry
aW5nIHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb25zdCBTdHJpbmcmIGNv
bG9yU3RyaW5nKQpAQCAtMjQyLDMwICsxOTIsMjYgQEAgc3RhdGljIFN0cmluZyBwYXJzZUNvbG9y
U3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykKIH0K
IAogLy8gQ29sb3IgcGFyc2luZyB0aGF0IG1hdGNoZXMgSFRNTCdzICJydWxlcyBmb3IgcGFyc2lu
ZyBhIGxlZ2FjeSBjb2xvciB2YWx1ZSIKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTQ29sb3Io
aW50IGlkLCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQordm9pZCBTdHlsZWRFbGVtZW50
OjphZGRDU1NDb2xvclRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIGludCBwcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQogewogICAgIC8vIEFuIGVtcHR5IHN0
cmluZyBkb2Vzbid0IGFwcGx5IGEgY29sb3IuIChPbmUgY29udGFpbmluZyBvbmx5IHdoaXRlc3Bh
Y2UgZG9lcywgd2hpY2ggaXMgd2h5IHRoaXMgY2hlY2sgb2NjdXJzIGJlZm9yZSBzdHJpcHBpbmcu
KQotICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmVtb3ZlQ1NT
UHJvcGVydHkoaWQpOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICB9CiAKICAgICBTdHJpbmcgY29sb3JTdHJpbmcgPSBhdHRyaWJ1dGVWYWx1
ZS5zdHJpcFdoaXRlU3BhY2UoKTsKIAogICAgIC8vICJ0cmFuc3BhcmVudCIgZG9lc24ndCBhcHBs
eSBhIGNvbG9yIGVpdGhlci4KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29sb3JTdHJpbmcs
ICJ0cmFuc3BhcmVudCIpKSB7Ci0gICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KGlkKTsKKyAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoY29sb3JTdHJpbmcsICJ0cmFuc3BhcmVudCIpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogCiAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIG5hbWVkIENTUyBj
b2xvciBvciBhIDMvNi1kaWdpdCBoZXggY29sb3IsIHVzZSB0aGF0LgogICAgIENvbG9yIHBhcnNl
ZENvbG9yKGNvbG9yU3RyaW5nKTsKICAgICBpZiAocGFyc2VkQ29sb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGFkZENTU1Byb3BlcnR5KGlkLCBjb2xvclN0cmluZyk7CisgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBjb2xvclN0cmluZyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhZGRDU1NQcm9wZXJ0eShpZCwgcGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxl
Z2FjeVJ1bGVzKGNvbG9yU3RyaW5nKSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5
SUQsIHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3JhenlMZWdhY3lSdWxlcyhjb2xvclN0cmluZykpOwog
fQogCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OmNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzKGNvbnN0
IEVsZW1lbnQqIHNvdXJjZUVsZW1lbnQpCkBAIC0yOTMsNCArMjM5LDE1IEBAIHZvaWQgU3R5bGVk
RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1
cmxzKSBjb25zdAogICAgICAgICBpbmxpbmVTdHlsZS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMo
dXJscyk7CiB9CiAKK3ZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQor
eworICAgIEFTU0VSVChhdHRyaWJ1dGVEYXRhKCkpOworICAgIFN0eWxlUHJvcGVydHlTZXQqIHN0
eWxlID0gZW5zdXJlQXR0cmlidXRlRGF0YVdpdGhvdXRVcGRhdGUoKS0+ZW5zdXJlTmV3QXR0cmli
dXRlU3R5bGUodGhpcyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNv
dW50KCk7ICsraSkgeworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0
ZW0oaSk7CisgICAgICAgIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyaWJ1dGUsIHN0eWxl
KTsKKyAgICB9CisgICAgY2xlYXJBdHRyaWJ1dGVTdHlsZURpcnR5KCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDJhNmQzOTIuLmFlNjhjODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtMzYsMTQgKzM2LDYgQEAgY2xhc3MgU3R5bGVkRWxlbWVu
dCA6IHB1YmxpYyBFbGVtZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdHlsZWRFbGVtZW50
KCk7CiAKLSAgICB2b2lkIGFkZENTU0xlbmd0aChpbnQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUp
OwotICAgIHZvaWQgYWRkQ1NTUHJvcGVydHkoaW50IGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
LSAgICB2b2lkIGFkZENTU1Byb3BlcnR5KGludCBpZCwgaW50IHZhbHVlKTsKLSAgICB2b2lkIGFk
ZENTU0ltYWdlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAg
ICB2b2lkIGFkZENTU0NvbG9yKGludCBpZCwgY29uc3QgU3RyaW5nJiBjb2xvcik7Ci0gICAgdm9p
ZCByZW1vdmVDU1NQcm9wZXJ0aWVzKGludCBpZDEsIGludCBpZDIgPSBDU1NQcm9wZXJ0eUludmFs
aWQsIGludCBpZDMgPSBDU1NQcm9wZXJ0eUludmFsaWQsIGludCBpZDQgPSBDU1NQcm9wZXJ0eUlu
dmFsaWQsIGludCBpZDUgPSBDU1NQcm9wZXJ0eUludmFsaWQsIGludCBpZDYgPSBDU1NQcm9wZXJ0
eUludmFsaWQsIGludCBpZDcgPSBDU1NQcm9wZXJ0eUludmFsaWQsIGludCBpZDggPSBDU1NQcm9w
ZXJ0eUludmFsaWQpOwotICAgIHZvaWQgcmVtb3ZlQ1NTUHJvcGVydHkoaW50IGlkKSB7IHJlbW92
ZUNTU1Byb3BlcnRpZXMoaWQpOyB9Ci0KICAgICB2aXJ0dWFsIFN0eWxlUHJvcGVydHlTZXQqIGFk
ZGl0aW9uYWxBdHRyaWJ1dGVTdHlsZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIGludmFsaWRh
dGVTdHlsZUF0dHJpYnV0ZSgpOwogCkBAIC01MSw4ICs0Myw3IEBAIHB1YmxpYzoKICAgICBTdHls
ZVByb3BlcnR5U2V0KiBlbnN1cmVJbmxpbmVTdHlsZURlY2woKSB7IHJldHVybiBlbnN1cmVBdHRy
aWJ1dGVEYXRhV2l0aG91dFVwZGF0ZSgpLT5lbnN1cmVJbmxpbmVTdHlsZURlY2wodGhpcyk7IH0K
ICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgT1ZFUlJJREUgeyByZXR1
cm4gZW5zdXJlSW5saW5lU3R5bGVEZWNsKCktPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsg
fQogCi0gICAgU3R5bGVQcm9wZXJ0eVNldCogYXR0cmlidXRlU3R5bGUoKSBjb25zdCB7IHJldHVy
biBhdHRyaWJ1dGVEYXRhKCkgPyBhdHRyaWJ1dGVEYXRhKCktPmF0dHJpYnV0ZVN0eWxlKCkgOiAw
OyB9Ci0gICAgU3R5bGVQcm9wZXJ0eVNldCogZW5zdXJlQXR0cmlidXRlU3R5bGUoKSB7IHJldHVy
biBlbnN1cmVBdHRyaWJ1dGVEYXRhV2l0aG91dFVwZGF0ZSgpLT5lbnN1cmVBdHRyaWJ1dGVTdHls
ZSh0aGlzKTsgfQorICAgIFN0eWxlUHJvcGVydHlTZXQqIGF0dHJpYnV0ZVN0eWxlKCk7CiAKICAg
ICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKCkgY29uc3Q7CiAKQEAgLTYyLDEw
ICs1MywxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAorICAgIHZvaWQgc2V0TmVlZHNB
dHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworCiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5n
ZWQoQXR0cmlidXRlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGll
cyhjb25zdCBFbGVtZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0
cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSB7IH0KKwogICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25z
dDsKIAogICAgIC8vIGNsYXNzQXR0cmlidXRlQ2hhbmdlZCgpIGV4aXN0cyB0byBzaGFyZSBjb2Rl
IGJldHdlZW4KQEAgLTczLDkgKzY4LDE0IEBAIHByb3RlY3RlZDoKICAgICAvLyBzdmdBdHRyaWJ1
dGVDaGFuZ2VkIChjYWxsZWQgd2hlbiBlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsdWUgaXMgc2V0
KQogICAgIHZvaWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3
Q2xhc3NTdHJpbmcpOwogCisgICAgc3RhdGljIHZvaWQgYWRkQ1NTTGVuZ3RoVG9TdHlsZShTdHls
ZVByb3BlcnR5U2V0KiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAg
IHN0YXRpYyB2b2lkIGFkZENTU0NvbG9yVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHBy
b3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgY29sb3IpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCisgICAgdm9pZCB1cGRhdGVBdHRy
aWJ1dGVTdHlsZSgpOworCiAgICAgdm9pZCBkZXN0cm95SW5saW5lU3R5bGVEZWNsKCkKICAgICB7
CiAgICAgICAgIGlmIChhdHRyaWJ1dGVEYXRhKCkpCkBAIC05NSw2ICs5NSwxOSBAQCBpbmxpbmUg
dm9pZCBTdHlsZWRFbGVtZW50OjppbnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUoKQogICAgIGNsZWFy
SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCk7CiB9CiAKK2lubGluZSBTdHlsZVByb3BlcnR5U2V0KiBT
dHlsZWRFbGVtZW50OjphdHRyaWJ1dGVTdHlsZSgpCit7CisgICAgaWYgKGF0dHJpYnV0ZVN0eWxl
RGlydHkoKSkKKyAgICAgICAgdXBkYXRlQXR0cmlidXRlU3R5bGUoKTsKKyAgICByZXR1cm4gYXR0
cmlidXRlRGF0YSgpID8gYXR0cmlidXRlRGF0YSgpLT5hdHRyaWJ1dGVTdHlsZSgpIDogMDsKK30K
KworaW5saW5lIHZvaWQgU3R5bGVkRWxlbWVudDo6c2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0
ZSgpCit7CisgICAgc2V0QXR0cmlidXRlU3R5bGVEaXJ0eSgpOworICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKK30KKwogfSAvL25hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCUkVsZW1lbnQuY3BwCmluZGV4IDVlZmU2MzcuLjg0ZWExMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQlJFbGVtZW50LmNwcApAQCAtNDgsMjAgKzQ4LDI2IEBAIFBhc3NSZWZQdHI8SFRNTEJS
RWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQlJFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTEJSRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyKQordm9pZCBIVE1MQlJFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IGNsZWFyQXR0cikgewotICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGVt
cHR5LCB0aGVuIGRvbid0IGFkZCB0aGUgY2xlYXIgcHJvcGVydHkuIAorICAgICAgICAvLyBJZiB0
aGUgc3RyaW5nIGlzIGVtcHR5LCB0aGVuIGRvbid0IGFkZCB0aGUgY2xlYXIgcHJvcGVydHkuCiAg
ICAgICAgIC8vIDxiciBjbGVhcj4gYW5kIDxiciBjbGVhcj0iIj4gYXJlIGp1c3QgdHJlYXRlZCBs
aWtlIDxicj4gYnkgR2Vja28sIE1hYyBJRSwgZXRjLiAtZHdoCi0gICAgICAgIGlmIChhdHRyLT52
YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlDbGVhcik7Ci0gICAgICAgIGVsc2UgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIWF0dHItPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJhbGwiKSkKLSAgICAgICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUNsZWFyLCAiYm90aCIpOworICAgICAgICAgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUNsZWFyLCAiYm90aCIpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q2xlYXIsIGF0dHIt
PnZhbHVlKCkpOworICAgICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUNsZWFyLCBhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZQorICAgICAgICBI
VE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKK30KKwor
dm9pZCBIVE1MQlJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7Cisg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBjbGVhckF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmli
dXRlU3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShhdHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QlJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaAppbmRleCAx
MGE2NDMyLi5jYjhjMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaApAQCAtMzks
NyArMzksOCBAQCBwcml2YXRlOgogICAgIEhUTUxCUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmli
dXRlKikgT1ZFUlJJREU7Ci0gICAgCisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0
dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CisKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCmluZGV4
IGE3NjlhMmMuLjQyZDUyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJv
ZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5j
cHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKIAogI2lu
Y2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgpAQCAtNjAsNDYgKzYxLDQyIEBAIEhUTUxCb2R5RWxlbWVudDo6fkhUTUxC
b2R5RWxlbWVudCgpCiB7CiB9CiAKLXZvaWQgSFRNTEJvZHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqIGF0dHIpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNSZXNwZWN0ZWRQcmVzZW50
YXRpb25BdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIHJldHVybiBhdHRyLT5uYW1l
KCkgPT0gYmFja2dyb3VuZEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IG1hcmdpbndpZHRoQXR0ciB8
fCBhdHRyLT5uYW1lKCkgPT0gbGVmdG1hcmdpbkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IG1hcmdp
bmhlaWdodEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHRvcG1hcmdpbkF0dHIgfHwgYXR0ci0+bmFt
ZSgpID09IGJnY29sb3JBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSB0ZXh0QXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gYmdwcm9wZXJ0aWVzQXR0cjsKKworfQorCit2b2lkIEhUTUxCb2R5RWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNl
dCogc3R5bGUpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5kQXR0cikgewog
ICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0
dHItPnZhbHVlKCkpOwogICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBh
ZGRDU1NJbWFnZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBkb2N1bWVudCgp
LT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UpOworICAgICAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZElt
YWdlLCBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5z
dHJpbmcoKSkpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtYXJnaW53aWR0aEF0
dHIgfHwgYXR0ci0+bmFtZSgpID09IGxlZnRtYXJnaW5BdHRyKSB7Ci0gICAgICAgIGlmIChhdHRy
LT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRy
LT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkxl
ZnQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICB9CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIGF0dHIt
PnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1hcmdpbmhlaWdodEF0
dHIgfHwgYXR0ci0+bmFtZSgpID09IHRvcG1hcmdpbkF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHIt
PnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1By
b3BlcnR5TWFyZ2luQm90dG9tLCBDU1NQcm9wZXJ0eU1hcmdpblRvcCk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRy
LT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblRv
cCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHls
ZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+
dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIpIHsK
LSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gdGV4dEF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0g
ICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlDb2xvciwgYXR0ci0+dmFs
dWUoKSk7CisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlDb2xv
ciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmdwcm9w
ZXJ0aWVzQXR0cikgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUo
KSwgImZpeGVkIikpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRBdHRhY2htZW50LCBDU1NWYWx1ZUZpeGVkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCk7Ci0g
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmxpbmtBdHRyIHx8Ci0gICAgICAgICAgICAg
ICBhdHRyLT5uYW1lKCkgPT0gYWxpbmtBdHRyIHx8Ci0gICAgICAgICAgICAgICBhdHRyLT5uYW1l
KCkgPT0gbGlua0F0dHIpIHsKKyAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIENTU1ZhbHVlRml4ZWQpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEFTU0VSVCghaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoYXR0cikpOwor
ICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxl
KTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTEJvZHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRl
KGF0dHIpKQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CisgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IHZsaW5rQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gYWxpbmtB
dHRyIHx8IGF0dHItPm5hbWUoKSA9PSBsaW5rQXR0cikgewogICAgICAgICBpZiAoYXR0ci0+aXNO
dWxsKCkpIHsKICAgICAgICAgICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gbGlua0F0dHIpCiAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVzZXRMaW5rQ29sb3IoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCb2R5RWxlbWVudC5oCmluZGV4IDgwMDRiMTAuLjMyY2JhOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQm9keUVsZW1lbnQuaApAQCAtNzEsNiArNzEsNyBAQCBwcml2YXRlOgogICAgIEhU
TUxCb2R5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVy
dHlTZXQqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVu
dCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcAppbmRleCBkYTI3
ODVjLi4wYWM0YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmNwcApAQCAt
NDgsMjAgKzQ4LDI2IEBAIFBhc3NSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxEaXZFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRN
TERpdkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3ZvaWQgSFRNTERp
dkVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxl
UHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRy
KSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVt
b3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24pOwogICAgICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm1pZGRsZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGF0dHItPnZhbHVlKCksICJjZW50ZXIiKSkKLSAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKKyAgICAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRDZW50
ZXIpOwogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAi
bGVmdCIpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24s
IENTU1ZhbHVlV2Via2l0TGVmdCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0TGVmdCk7CiAgICAgICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJyaWdodCIpKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0UmlnaHQp
OworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBD
U1NWYWx1ZVdlYmtpdFJpZ2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAgICAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsK
ICAgICB9IGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0
ZShhdHRyLCBzdHlsZSk7Cit9CisKK3ZvaWQgSFRNTERpdkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikK
KyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UKICAgICAg
ICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEaXZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEaXZFbGVtZW50LmgKaW5kZXggY2Q5MGQ4Ny4uNjE1Nzc0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERpdkVsZW1lbnQuaApAQCAtMzcsNiArMzcsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwg
U3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBhMDE4ZmUyLi45MzU0NTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTQwLDUxICsxNDAsODEgQEAgc3Rh
dGljIHVuc2lnbmVkIHBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ICAgIHJldHVybiBib3JkZXJXaWR0aDsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6YXBwbHlCb3Jk
ZXJBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQordm9pZCBIVE1MRWxlbWVudDo6YXBwbHlCb3Jk
ZXJBdHRyaWJ1dGVUb1N0eWxlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUpCiB7Ci0gICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIFN0cmluZzo6
bnVtYmVyKHBhcnNlQm9yZGVyV2lkdGhBdHRyaWJ1dGUoYXR0cikpKTsKLSAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICBhZGRD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOwot
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVl
U29saWQpOwotICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBD
U1NWYWx1ZVNvbGlkKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgU3RyaW5nOjpudW1iZXIocGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0ZShhdHRyKSkpOwor
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NWYWx1
ZVNvbGlkKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0
eWxlLCBDU1NWYWx1ZVNvbGlkKTsKKyAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKIH0KIAotdm9pZCBI
VE1MRWxlbWVudDo6bWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZShBdHRyaWJ1dGUqIGF0dHJp
YnV0ZSkKK3ZvaWQgSFRNTEVsZW1lbnQ6Om1hcExhbmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUoQXR0
cmlidXRlKiBhdHRyaWJ1dGUsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIEFTU0VS
VChhdHRyaWJ1dGUgJiYgKGF0dHJpYnV0ZS0+bmFtZSgpID09IGxhbmdBdHRyIHx8IGF0dHJpYnV0
ZS0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRyKSkpOwotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgaWYgKHZhbHVlLmlzTnVs
bCgpKQotICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSk7
Ci0gICAgZWxzZSBpZiAoIXZhbHVlLmlzRW1wdHkoKSkgeworICAgIGlmICghYXR0cmlidXRlLT5p
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gSGF2ZSB0byBxdW90ZSBzbyB0aGUgbG9jYWxlIGlkIGlz
IHRyZWF0ZWQgYXMgYSBzdHJpbmcgaW5zdGVhZCBvZiBhcyBhIENTUyBrZXl3b3JkLgotICAgICAg
ICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZSwgcXVvdGVDU1NTdHJpbmco
dmFsdWUpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TG9j
YWxlLCBxdW90ZUNTU1N0cmluZyhhdHRyaWJ1dGUtPnZhbHVlKCkpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBUaGUgZW1wdHkgc3RyaW5nIG1lYW5zIHRoZSBsYW5ndWFnZSBpcyBleHBsaWNp
dGx5IHVua25vd24uCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TG9j
YWxlLCBDU1NWYWx1ZUF1dG8pOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRMb2NhbGUsIENTU1ZhbHVlQXV0byk7CiAgICAgfQotICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQordm9pZCBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7Ci0gICAgaWYgKGlzSWRBdHRy
aWJ1dGVOYW1lKGF0dHItPm5hbWUoKSkgfHwgYXR0ci0+bmFtZSgpID09IGNsYXNzQXR0ciB8fCBh
dHRyLT5uYW1lKCkgPT0gc3R5bGVBdHRyKQotICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoYXR0cik7Ci0KICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0
cikgewotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbik7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJtaWRkbGUiKSkKLSAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCAiY2VudGVyIik7CisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibWlkZGxlIikpCisgICAgICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sICJjZW50ZXIiKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIGF0
dHItPnZhbHVlKCkpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBjb250ZW50ZWRpdGFibGVBdHRyKSB7Ci0gICAgICAgIHNldENvbnRlbnRFZGl0YWJsZShhdHRy
KTsKKyAgICAgICAgaWYgKGF0dHItPmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRy
LT52YWx1ZSgpLCAidHJ1ZSIpKSB7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRXcml0ZSk7CisgICAgICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVha1dv
cmQpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TmJz
cE1vZGUsIENTU1ZhbHVlU3BhY2UpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7CisgICAg
ICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgInBsYWludGV4
dC1vbmx5IikpIHsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJNb2RpZnksIENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seSk7CisgICAgICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVCcmVh
a1dvcmQpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFmdGVyV2hpdGVTcGFjZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImZhbHNl
IikpCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2Vy
TW9kaWZ5LCBDU1NWYWx1ZVJlYWRPbmx5KTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBoaWRkZW5BdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKLSAgICAgICAgICAg
IHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVOb25l
KTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB0YWJpbmRleEF0dHIpIHsKKyAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVOb25lKTsK
KyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkcmFnZ2FibGVBdHRyKSB7CisgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAidHJ1ZSIpKSB7CisgICAgICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQ1NTVmFs
dWVFbGVtZW50KTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJTZWxlY3QsIENTU1ZhbHVlTm9uZSk7CisgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImZhbHNlIikpCisgICAgICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZywgQ1NTVmFsdWVOb25lKTsKKyAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXJBdHRyKSB7CisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYXV0byIpKQorICAgICAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHVuaWNvZGVCaWRpQXR0cmlidXRl
Rm9yRGlyQXV0byh0aGlzKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAg
ICAgIGlmICghaGFzVGFnTmFtZShiZGlUYWcpICYmICFoYXNUYWdOYW1lKGJkb1RhZykgJiYgIWhh
c1RhZ05hbWUob3V0cHV0VGFnKSkKKyAgICAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7CisgICAgICAgIH0KKyAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpsYW5nQXR0cikpIHsKKyAg
ICAgICAgbWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZShhdHRyLCBzdHlsZSk7CisgICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbGFuZ0F0dHIpIHsKKyAgICAgICAgLy8geG1sOmxhbmcg
aGFzIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4gbGFuZy4KKyAgICAgICAgaWYgKCFmYXN0SGFzQXR0
cmlidXRlKFhNTE5hbWVzOjpsYW5nQXR0cikpCisgICAgICAgICAgICBtYXBMYW5ndWFnZUF0dHJp
YnV0ZVRvTG9jYWxlKGF0dHIsIHN0eWxlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgU3R5bGVkRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKK30KKwordm9pZCBI
VE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChp
c0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpIHx8IGF0dHItPm5hbWUoKSA9PSBjbGFzc0F0
dHIgfHwgYXR0ci0+bmFtZSgpID09IHN0eWxlQXR0cikKKyAgICAgICAgcmV0dXJuIFN0eWxlZEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOworCisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBh
bGlnbkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGNvbnRlbnRlZGl0YWJsZUF0dHIgfHwgYXR0ci0+
bmFtZSgpID09IGhpZGRlbkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGxhbmdBdHRyIHx8IGF0dHIt
Pm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpsYW5nQXR0cikgfHwgYXR0ci0+bmFtZSgpID09IGRy
YWdnYWJsZUF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGludCB0
YWJpbmRleCA9IDA7CiAgICAgICAgIGlmIChhdHRyLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
bGVhclRhYkluZGV4RXhwbGljaXRseSgpOwpAQCAtMTkyLDQwICsyMjIsOSBAQCB2b2lkIEhUTUxF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgICAgICAvLyBD
bGFtcCB0YWJpbmRleCB0byB0aGUgcmFuZ2Ugb2YgJ3Nob3J0JyB0byBtYXRjaCBGaXJlZm94J3Mg
YmVoYXZpb3IuCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkobWF4KHN0YXRpY19j
YXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46Om1pbigpKSwgbWluKHRhYmluZGV4
LCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8c2hvcnQ+OjptYXgoKSkpKSk7
CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKS5tYXRjaGVzKFhNTE5hbWVz
OjpsYW5nQXR0cikpIHsKLSAgICAgICAgbWFwTGFuZ3VhZ2VBdHRyaWJ1dGVUb0xvY2FsZShhdHRy
KTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBsYW5nQXR0cikgewotICAgICAgICAv
LyB4bWw6bGFuZyBoYXMgYSBoaWdoZXIgcHJpb3JpdHkgdGhhbiBsYW5nLgotICAgICAgICBpZiAo
IWZhc3RIYXNBdHRyaWJ1dGUoWE1MTmFtZXM6OmxhbmdBdHRyKSkKLSAgICAgICAgICAgIG1hcExh
bmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUoYXR0cik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gZGlyQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAg
ICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVVu
aWNvZGVCaWRpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBib29sIGRpcklzQXV0byA9
IGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJhdXRvIik7Ci0gICAgICAgICAgICBp
ZiAoIWRpcklzQXV0bykKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eURpcmVjdGlvbiwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24pOwotCi0gICAgICAg
ICAgICBkaXJBdHRyaWJ1dGVDaGFuZ2VkKGF0dHIpOwotICAgICAgICAgICAgaWYgKGRpcklzQXV0
bykKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
LCB1bmljb2RlQmlkaUF0dHJpYnV0ZUZvckRpckF1dG8odGhpcykpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoIWhhc1RhZ05hbWUoYmRpVGFnKSAmJiAhaGFzVGFnTmFtZShiZG9UYWcpICYmICFoYXNU
YWdOYW1lKG91dHB1dFRhZykpCi0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlVbmljb2RlQmlkaSwgQ1NTVmFsdWVFbWJlZCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkcmFnZ2FibGVBdHRyKSB7
Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwotICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJ0cnVlIikpIHsKLSAgICAgICAgICAg
IGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENTU1ZhbHVlRWxlbWVu
dCk7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxl
Y3QsIENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dmFsdWUsICJmYWxzZSIpKSB7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdFVzZXJEcmFnLCBDU1NWYWx1ZU5vbmUpOwotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0KTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsIENT
U1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCk7CisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5
bGVVcGRhdGUoKTsKKyAgICAgICAgZGlyQXR0cmlidXRlQ2hhbmdlZChhdHRyKTsKICNpZiBFTkFC
TEUoTUlDUk9EQVRBKQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGl0ZW1wcm9wQXR0
cikgewogICAgICAgICBzZXRJdGVtUHJvcChhdHRyLT52YWx1ZSgpKTsKQEAgLTY3OCwxNyArNjc3
LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0IFN0cmluZyYg
d2hlcmUsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXgKICAgICBpbnNlcnRBZGphY2VudCh3aGVyZSwg
dGV4dE5vZGUuZ2V0KCksIGVjKTsKIH0KIAotdm9pZCBIVE1MRWxlbWVudDo6YWRkSFRNTEFsaWdu
bWVudChBdHRyaWJ1dGUqIGF0dHIpCi17Ci0gICAgYWRkSFRNTEFsaWdubWVudFRvU3R5bGVkRWxl
bWVudCh0aGlzLCBhdHRyKTsKLX0KLQotdm9pZCBIVE1MRWxlbWVudDo6cmVtb3ZlSFRNTEFsaWdu
bWVudCgpCi17Ci0gICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eUZsb2F0LCBDU1NQ
cm9wZXJ0eVZlcnRpY2FsQWxpZ24pOwotfQotCi12b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MQWxp
Z25tZW50VG9TdHlsZWRFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIEF0dHJpYnV0ZSog
YXR0cikKK3ZvaWQgSFRNTEVsZW1lbnQ6OmFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShB
dHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIC8vIFZlcnRp
Y2FsIGFsaWdubWVudCB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmFzZWxpbmUgb2YgdGhl
IHRleHQKICAgICAvLyByaWdodCBvciBsZWZ0IG1lYW5zIGZsb2F0aW5nIGltYWdlcy4KQEAgLTcx
OCwxNCArNzA3LDEwIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxBbGlnbm1lbnRUb1N0eWxl
ZEVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCwgQXR0cmliCiAgICAgICAgIHZlcnRpY2Fs
QWxpZ25WYWx1ZSA9IENTU1ZhbHVlVGV4dFRvcDsKIAogICAgIGlmIChmbG9hdFZhbHVlICE9IENT
U1ZhbHVlSW52YWxpZCkKLSAgICAgICAgZWxlbWVudC0+YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlGbG9hdCwgZmxvYXRWYWx1ZSk7Ci0gICAgZWxzZQotICAgICAgICBlbGVtZW50LT5yZW1vdmVD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0KTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5RmxvYXQsIGZsb2F0VmFsdWUpOwogCiAgICAgaWYgKHZlcnRpY2FsQWxpZ25W
YWx1ZSAhPSBDU1NWYWx1ZUludmFsaWQpCi0gICAgICAgIGVsZW1lbnQtPmFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgdmVydGljYWxBbGlnblZhbHVlKTsKLSAgICBlbHNl
Ci0gICAgICAgIGVsZW1lbnQtPnJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxB
bGlnbik7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxp
Z24sIHZlcnRpY2FsQWxpZ25WYWx1ZSk7CiB9CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OnN1cHBvcnRz
Rm9jdXMoKSBjb25zdApAQCAtNzQ5LDI3ICs3MzQsNiBAQCBTdHJpbmcgSFRNTEVsZW1lbnQ6OmNv
bnRlbnRFZGl0YWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuICJpbmhlcml0IjsKIH0KIAotdm9pZCBI
VE1MRWxlbWVudDo6c2V0Q29udGVudEVkaXRhYmxlKEF0dHJpYnV0ZSogYXR0cikgCi17Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBlbmFibGVkID0gYXR0ci0+dmFsdWUoKTsKLSAgICBpZiAoZW5h
YmxlZC5pc051bGwoKSkKLSAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJNb2RpZnksIENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1Byb3BlcnR5V2Via2l0TmJz
cE1vZGUsIENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrKTsKLSAgICBlbHNlIGlmIChlbmFibGVk
LmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAidHJ1ZSIpKSB7Ci0gICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VXNlck1vZGlmeSwgQ1NTVmFsdWVS
ZWFkV3JpdGUpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdvcmRXcmFwLCBD
U1NWYWx1ZUJyZWFrV29yZCk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Vi
a2l0TmJzcE1vZGUsIENTU1ZhbHVlU3BhY2UpOwotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgQ1NTVmFsdWVBZnRlcldoaXRlU3BhY2UpOwotICAgIH0g
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgImZhbHNlIikpIHsKLSAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBDU1NWYWx1ZVJlYWRP
bmx5KTsKLSAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eVdvcmRXcmFwLCBD
U1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCBDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhayk7Ci0g
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbmFibGVkLCAicGxhaW50ZXh0LW9ubHki
KSkgewotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnks
IENTU1ZhbHVlUmVhZFdyaXRlUGxhaW50ZXh0T25seSk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlQnJlYWtXb3JkKTsKLSAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgQ1NTVmFsdWVTcGFjZSk7Ci0gICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCBDU1NWYWx1ZUFm
dGVyV2hpdGVTcGFjZSk7Ci0gICAgfQotfQotCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRDb250ZW50
RWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZW5hYmxlZCwgInRydWUiKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAppbmRleCA0NzE5NzI2Li4zZDNlNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCkBAIC03OSw4ICs3OSw2IEBAIHB1YmxpYzoKIAogICAgIEhUTUxGb3JtRWxlbWVudCog
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxGb3JtKCk7IH0KIAotICAgIHN0YXRpYyB2b2lk
IGFkZEhUTUxBbGlnbm1lbnRUb1N0eWxlZEVsZW1lbnQoU3R5bGVkRWxlbWVudCosIEF0dHJpYnV0
ZSopOwotCiAgICAgSFRNTEZvcm1FbGVtZW50KiBmaW5kRm9ybUFuY2VzdG9yKCkgY29uc3Q7CiAK
ICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRlKGJv
b2wmIGlzQXV0bykgY29uc3Q7CkBAIC05MywxMSArOTEsMTEgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIEhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
Kik7CiAKLSAgICB2b2lkIGFkZEhUTUxBbGlnbm1lbnQoQXR0cmlidXRlKik7Ci0gICAgdm9pZCBy
ZW1vdmVIVE1MQWxpZ25tZW50KCk7CisgICAgdm9pZCBhcHBseUFsaWdubWVudEF0dHJpYnV0ZVRv
U3R5bGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopOworICAgIHZvaWQgYXBwbHlCb3Jk
ZXJBdHRyaWJ1dGVUb1N0eWxlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKLSAgICB2
b2lkIGFwcGx5Qm9yZGVyQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBj
b2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5n
ZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKICAgICB2b2lkIGNhbGN1bGF0ZUFuZEFk
anVzdERpcmVjdGlvbmFsaXR5KCk7CkBAIC0xMDcsOSArMTA1LDcgQEAgcHJvdGVjdGVkOgogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogCi0gICAgdm9pZCBt
YXBMYW5ndWFnZUF0dHJpYnV0ZVRvTG9jYWxlKEF0dHJpYnV0ZSopOwotCi0gICAgdm9pZCBzZXRD
b250ZW50RWRpdGFibGUoQXR0cmlidXRlKik7CisgICAgdm9pZCBtYXBMYW5ndWFnZUF0dHJpYnV0
ZVRvTG9jYWxlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKTsKIAogICAgIHZpcnR1YWwg
SFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9ybSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAxZDY0ZWNhLi43MDNmY2M1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTc0LDYgKzc0LDE3IEBAIFJlbmRl
cldpZGdldCogSFRNTEVtYmVkRWxlbWVudDo6cmVuZGVyV2lkZ2V0Rm9ySlNCaW5kaW5ncygpCiAg
ICAgcmV0dXJuIGZpbmRXaWRnZXRSZW5kZXJlcih0aGlzKTsKIH0KIAordm9pZCBIVE1MRW1iZWRF
bGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVBy
b3BlcnR5U2V0KiBzdHlsZSkKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IGhpZGRlbkF0dHIp
IHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJ5ZXMiKSB8
fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAidHJ1ZSIpKSB7CisgICAgICAgICAg
ICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRoLCAiMCIpOyAvLyBG
SVhNRTogUGFzcyBhcyBpbnRlZ2VyLgorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsICIwIik7IC8vIEZJWE1FOiBQYXNzIGFzIGludGVnZXIu
CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKK30KKwogdm9pZCBIVE1MRW1i
ZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkBAIC05NCwxNSArMTA1LDkgQEAg
dm9pZCBIVE1MRW1iZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAg
ICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2Fk
ZXIodGhpcykpOwogICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJ
Z25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGhpZGRlbkF0dHIpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZh
bHVlLnN0cmluZygpLCAieWVzIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUuc3RyaW5nKCks
ICJ0cnVlIikpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBOb3QgZHluYW1pYywgc2luY2Ugd2Ug
YWRkIHRoaXMgYnV0IGRvbid0IHJlbW92ZSBpdCwgYnV0IGl0IG1heSBiZSBPSyBmb3Igbm93Ci0g
ICAgICAgICAgICAvLyB0aGF0IHRoaXMgcmFyZWx5LXVzZWQgYXR0cmlidXRlIHdvbid0IHdvcmsg
cHJvcGVybHkgaWYgeW91IHJlbW92ZSBpdC4KLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQ
cm9wZXJ0eVdpZHRoLCAiMCIpOwotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5
SGVpZ2h0LCAiMCIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnRpZXMoQ1NTUHJvcGVydHlXaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQpOwotICAgIH0gZWxzZQor
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhpZGRlbkF0dHIpCisgICAgICAgIHNldE5l
ZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5oCmluZGV4IGYzNzc2MDMuLmE4YjY4MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIHByaXZhdGU6CiAgICAg
SFRNTEVtYmVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIGNy
ZWF0ZWRCeVBhcnNlcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmli
dXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0
ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9udEVsZW1lbnQuY3BwCmluZGV4IDg2ZjUyOTguLmRiNDQ3Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKQEAgLTE1OCwyNSArMTU4LDI1IEBAIGJvb2wgSFRN
TEZvbnRFbGVtZW50Ojpjc3NWYWx1ZUZyb21Gb250U2l6ZU51bWJlcihjb25zdCBTdHJpbmcmIHMs
IGludCYgc2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBIVE1MRm9udEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3ZvaWQgSFRNTEZvbnRFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0
KiBzdHlsZSkKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNpemVBdHRyKSB7CiAgICAgICAg
IGludCBzaXplID0gMDsKICAgICAgICAgaWYgKGNzc1ZhbHVlRnJvbUZvbnRTaXplTnVtYmVyKGF0
dHItPnZhbHVlKCksIHNpemUpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlGb250U2l6ZSwgc2l6ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1By
b3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGNvbG9yQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAg
ICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUNvbG9yLCBhdHRyLT52YWx1
ZSgpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmYWNlQXR0cikgewotICAgICAg
ICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAg
fSBlbHNlCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6
ZSwgc2l6ZSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29sb3JBdHRyKQorICAg
ICAgICBhZGRDU1NDb2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZh
bHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmYWNlQXR0cikKKyAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udEZhbWlseSwgYXR0ci0+dmFsdWUoKSk7
CisgICAgZWxzZQorICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRl
KGF0dHIsIHN0eWxlKTsKK30KKwordm9pZCBIVE1MRm9udEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNpemVBdHRyIHx8
IGF0dHItPm5hbWUoKSA9PSBjb2xvckF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGZhY2VBdHRyKQor
ICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CisgICAgZWxzZQogICAgICAg
ICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb250RWxlbWVudC5oCmluZGV4IGVlYThiNDQuLjVmZTlhZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9udEVsZW1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBwcml2YXRlOgogICAgIEhU
TUxGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVy
dHlTZXQqKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAppbmRleCA0YWY2MzQyLi4xNGVhYzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKQEAgLTY0LDYgKzY0
LDE0IEBAIFBhc3NSZWZQdHI8SFRNTEZyYW1lU2V0RWxlbWVudD4gSFRNTEZyYW1lU2V0RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBI
VE1MRnJhbWVTZXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK3ZvaWQgSFRNTEZy
YW1lU2V0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwg
U3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBib3Jk
ZXJjb2xvckF0dHIpCisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZQorICAgICAgICBIVE1MRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKK30KKwogdm9pZCBI
VE1MRnJhbWVTZXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSByb3dzQXR0cikgewpAQCAtMTAwLDEwICsxMDgsNyBAQCB2
b2lkIEhUTUxGcmFtZVNldEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikK
ICAgICAgICAgICAgIG1fYm9yZGVyU2V0ID0gZmFsc2U7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gYm9yZGVyY29sb3JBdHRyKSB7CiAgICAgICAgIG1fYm9yZGVyQ29sb3JTZXQgPSAh
YXR0ci0+aXNFbXB0eSgpOwotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAg
ICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgp
OwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ubG9hZEF0dHIpCiAgICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxv
YWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgp
LCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3JldW5sb2FkQXR0
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKaW5kZXggMTg3OTAy
My4uZjhiYWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgK
QEAgLTY4LDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MRnJhbWVTZXRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5
bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SFJFbGVtZW50LmNwcAppbmRleCA1NTM0YjkyLi45N2ZjNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEhSRWxlbWVudC5jcHAKQEAgLTQ4LDY5ICs0OCw2MyBAQCBQYXNzUmVmUHRyPEhUTUxIUkVs
ZW1lbnQ+IEhUTUxIUkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEbwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEhSRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOwogfQogCi12b2lkIEhUTUxIUkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0
ZSogYXR0cikKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgcmV0dXJuIGF0dHItPm5hbWUoKSA9PSBhbGln
bkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gY29s
b3JBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBub3NoYWRlQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0g
c2l6ZUF0dHI7Cit9CisKK3ZvaWQgSFRNTEhSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCku
aXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlN
YXJnaW5MZWZ0LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KTsKLSAgICAgICAgfSBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAibGVmdCIpKSB7Ci0gICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsICIwIik7Ci0gICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NWYWx1ZUF1dG8pOworICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImxlZnQiKSkgeworICAg
ICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgIjAiKTsg
Ly8gRklYTUU6IFBhc3MgYXMgaW50ZWdlci4KKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBDU1NWYWx1ZUF1dG8pOwogICAgICAgICB9IGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJyaWdodCIpKSB7Ci0gICAgICAg
ICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVlQXV0byk7
Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCAiMCIp
OworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwg
Q1NTVmFsdWVBdXRvKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1hcmdpblJpZ2h0LCAiMCIpOyAvLyBGSVhNRTogUGFzcyBhcyBpbnRlZ2VyLgogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5MZWZ0
LCBDU1NWYWx1ZUF1dG8pOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlN
YXJnaW5SaWdodCwgQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1ZhbHVlQXV0byk7CisgICAgICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgQ1NTVmFsdWVBdXRvKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikgewotICAg
ICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1By
b3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGJv
b2wgb2s7Ci0gICAgICAgICAgICBpbnQgdiA9IGF0dHItPnZhbHVlKCkudG9JbnQoJm9rKTsKLSAg
ICAgICAgICAgIGlmIChvayAmJiAhdikKLSAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NT
UHJvcGVydHlXaWR0aCwgIjEiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0K
KyAgICAgICAgYm9vbCBvazsKKyAgICAgICAgaW50IHYgPSBhdHRyLT52YWx1ZSgpLnRvSW50KCZv
ayk7CisgICAgICAgIGlmIChvayAmJiAhdikKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsICIxIik7IC8vIEZJWE1FOiBQYXNzIGFzIGludGVn
ZXIuCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGNvbG9yQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwo
KSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlCb3JkZXJUb3BT
dHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xv
ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29s
aWQpOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0
eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAg
ICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgICAgICBhZGRDU1NDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwg
YXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsK
KyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUs
IENTU1ZhbHVlU29saWQpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICBhZGRDU1NDb2xvclRvU3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBhZGRDU1NDb2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBh
dHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBub3NoYWRlQXR0
cikgewotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJl
bW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NWYWx1ZVNvbGlk
KTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0U3R5bGUsIENTU1ZhbHVlU29saWQpOwotICAgICAgICAgICAgYWRkQ1NTQ29s
b3IoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgU3RyaW5nKCJncmV5IikpOwotICAgICAgICAgICAg
YWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIFN0cmluZygiZ3JleSIpKTsK
LSAgICAgICAgfQorICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJU
b3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1ZhbHVlU29saWQpOworICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7
CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwg
Q1NTVmFsdWVTb2xpZCk7CisgICAgICAgIGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJDb2xvciwgU3RyaW5nKCJncmV5IikpOyAvLyBGSVhNRTogUGFzcyBhcyByZ2Io
KSB2YWx1ZS4KKyAgICAgICAgYWRkQ1NTQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgU3RyaW5nKCJncmV5IikpOyAvLyBGSVhNRTogUGFzcyBhcyByZ2IoKSB2
YWx1ZS4KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzaXplQXR0cikgewotICAgICAg
ICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnRpZXMoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlIZWlnaHQpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGwqIHNpID0gYXR0ci0+dmFsdWUo
KS5pbXBsKCk7Ci0gICAgICAgICAgICBpbnQgc2l6ZSA9IHNpLT50b0ludCgpOwotICAgICAgICAg
ICAgaWYgKHNpemUgPD0gMSkgewotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIFN0cmluZygiMCIpKTsKLSAgICAgICAgICAgICAgICBy
ZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdodCwgU3RyaW5n
OjpudW1iZXIoc2l6ZS0yKSk7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UKKyAgICAgICAgU3RyaW5nSW1wbCogc2kgPSBhdHRyLT52YWx1ZSgpLmltcGwoKTsK
KyAgICAgICAgaW50IHNpemUgPSBzaS0+dG9JbnQoKTsKKyAgICAgICAgaWYgKHNpemUgPD0gMSkK
KyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBTdHJpbmcoIjAiKSk7IC8vIEZJWE1FOiBQYXNzIGFzIGludGVnZXIuCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVp
Z2h0LCBTdHJpbmc6Om51bWJlcihzaXplIC0gMikpOyAvLyBGSVhNRTogUGFzcyBhcyBpbnRlZ2Vy
LgorICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVCghaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25B
dHRyaWJ1dGUoYXR0cikpOworICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0
cmlidXRlKGF0dHIsIHN0eWxlKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTEhSRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChpc1Jlc3BlY3RlZFByZXNl
bnRhdGlvbkF0dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVw
ZGF0ZSgpOworICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0
dHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxIUkVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oCmluZGV4IGYwNTA4NWIuLmM5
YTA4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oCkBAIC0zOCw2ICszOCw3IEBA
IHByaXZhdGU6CiAgICAgSFRNTEhSRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0
ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggNWNi
YTg4OC4uNDI1ZjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHAKQEAgLTQ4LDE0ICs0OCwyOSBAQCBQYXNzUmVmUHRyPEhUTUxJRnJhbWVFbGVtZW50PiBIVE1M
SUZyYW1lRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZwogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTElGcmFtZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAotdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQordm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7CiAgICAgaWYgKGF0dHItPm5h
bWUoKSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRo
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGhlaWdodEF0dHIpCi0gICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdodCwg
YXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gYWxpZ25BdHRyKQotICAgICAgICBhZGRIVE1MQWxpZ25tZW50KGF0dHIpOworICAgICAgICBh
cHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5bGUoYXR0ciwgc3R5bGUpOworICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBmcmFtZWJvcmRlckF0dHIpIHsKKyAgICAgICAgLy8gRnJhbWUgYm9y
ZGVyIGRvZXNuJ3QgcmVhbGx5IG1hdGNoIHRoZSBIVE1MNCBzcGVjIGRlZmluaXRpb24gZm9yIGlm
cmFtZXMuIEl0IHNpbXBseSBhZGRzCisgICAgICAgIC8vIGEgcHJlc2VudGF0aW9uYWwgaGludCB0
aGF0IHRoZSBib3JkZXIgc2hvdWxkIGJlIG9mZiBpZiBzZXQgdG8gemVyby4KKyAgICAgICAgaWYg
KCFhdHRyLT5pc051bGwoKSAmJiAhYXR0ci0+dmFsdWUoKS50b0ludCgpKSB7CisgICAgICAgICAg
ICAvLyBBZGQgYSBydWxlIHRoYXQgbnVsbHMgb3V0IG91ciBib3JkZXIgd2lkdGguCisgICAgICAg
ICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCAi
MCIpOyAvLyBGSVhNRTogUGFzcyBhcyBpbnRlZ2VyLgorICAgICAgICB9CisgICAgfSBlbHNlCisg
ICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0
ciwgc3R5bGUpOworfQorCit2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIgfHwg
YXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGFsaWduQXR0ciB8
fCBhdHRyLT5uYW1lKCkgPT0gZnJhbWVib3JkZXJBdHRyKQorICAgICAgICBzZXROZWVkc0F0dHJp
YnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRy
KSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3TmFtZSA9IGF0dHItPnZhbHVlKCk7
CiAgICAgICAgIGlmIChpbkRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQo
KSkgewpAQCAtNjQsMTQgKzc5LDYgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZEV4dHJhTmFt
ZWRJdGVtKG5ld05hbWUpOwogICAgICAgICB9CiAgICAgICAgIG1fbmFtZSA9IG5ld05hbWU7Ci0g
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZnJhbWVib3JkZXJBdHRyKSB7Ci0gICAgICAg
IC8vIEZyYW1lIGJvcmRlciBkb2Vzbid0IHJlYWxseSBtYXRjaCB0aGUgSFRNTDQgc3BlYyBkZWZp
bml0aW9uIGZvciBpZnJhbWVzLiAgSXQgc2ltcGx5IGFkZHMKLSAgICAgICAgLy8gYSBwcmVzZW50
YXRpb25hbCBoaW50IHRoYXQgdGhlIGJvcmRlciBzaG91bGQgYmUgb2ZmIGlmIHNldCB0byB6ZXJv
LgotICAgICAgICBpZiAoIWF0dHItPmlzTnVsbCgpICYmICFhdHRyLT52YWx1ZSgpLnRvSW50KCkp
IHsKLSAgICAgICAgICAgIC8vIEFkZCBhIHJ1bGUgdGhhdCBudWxscyBvdXQgb3VyIGJvcmRlciB3
aWR0aC4KLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCAi
MCIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyV2lkdGgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNhbmRi
b3hBdHRyKQogICAgICAgICBzZXRTYW5kYm94RmxhZ3MoYXR0ci0+aXNOdWxsKCkgPyBTYW5kYm94
Tm9uZSA6IFNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KGF0dHItPnZhbHVlKCkp
KTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKaW5kZXgg
YmNiYTJhMi4uZDg5YjAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
aApAQCAtMzYsNiArMzYsNyBAQCBwcml2YXRlOgogICAgIEhUTUxJRnJhbWVFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5
bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IDZjMjJlZGMuLjg3MWEwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtNzgsNiArNzgsMjggQEAgUGFzc1JlZlB0cjxIVE1MSW1h
Z2VFbGVtZW50PiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3Vt
ZW50KgogICAgIHJldHVybiBpbWFnZS5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSFRNTEltYWdlRWxl
bWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9w
ZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpCisg
ICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHIt
PnZhbHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKQorICAg
ICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+
dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJvcmRlckF0dHIpCisgICAg
ICAgIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZShhdHRyLCBzdHlsZSk7CisgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0dHIpIHsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9T
dHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVlKCkpOworICAgICAg
ICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0
ci0+dmFsdWUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0cikg
eworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpbkxl
ZnQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBD
U1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpCisgICAgICAgIGFwcGx5QWxpZ25tZW50QXR0cmlidXRl
VG9TdHlsZShhdHRyLCBzdHlsZSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZhbGln
bkF0dHIpCisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxp
Z24sIGF0dHItPnZhbHVlKCkpOworICAgIGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7Cit9CisKIHZvaWQgSFRNTEltYWdlRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+bmFtZSgpOwpAQCAtODYsNDAgKzEwOCw4IEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAg
ICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJlcigpKS0+dXBkYXRlQWx0VGV4dCgpOwogICAg
IH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0cikKICAgICAgICAgbV9pbWFnZUxvYWRlci51
cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJldmlvdXNFcnJvcigpOwotICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IHdpZHRoQXR0cikKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkp
Ci0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHIt
PnZhbHVlKCkpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGhlaWdodEF0dHIpCi0gICAgICAg
IGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlIZWlnaHQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NM
ZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOwotICAgIGVsc2UgaWYgKGF0
dHJOYW1lID09IGJvcmRlckF0dHIpIHsKLSAgICAgICAgLy8gYm9yZGVyPSJub2JvcmRlciIgLT4g
Ym9yZGVyPSIwIgotICAgICAgICBhcHBseUJvcmRlckF0dHJpYnV0ZShhdHRyKTsKLSAgICB9IGVs
c2UgaWYgKGF0dHJOYW1lID09IHZzcGFjZUF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZhbHVl
KCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5
TWFyZ2luVG9wLCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSk7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgp
KTsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0
ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGhzcGFj
ZUF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAg
ICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgQ1NTUHJvcGVydHlN
YXJnaW5SaWdodCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENT
U1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBhZGRDU1NM
ZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFsaWduQXR0cikKLSAgICAgICAgYWRkSFRNTEFs
aWdubWVudChhdHRyKTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB2YWxpZ25BdHRyKQotICAg
ICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1By
b3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUo
KSk7CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gd2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IGhl
aWdodEF0dHIgfHwgYXR0ck5hbWUgPT0gYm9yZGVyQXR0ciB8fCBhdHRyTmFtZSA9PSB2c3BhY2VB
dHRyIHx8IGF0dHJOYW1lID09IGhzcGFjZUF0dHIgfHwgYXR0ck5hbWUgPT0gYWxpZ25BdHRyIHx8
IGF0dHJOYW1lID09IHZhbGlnbkF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVV
cGRhdGUoKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB1c2VtYXBBdHRyKQogICAgICAgICBz
ZXRJc0xpbmsoIWF0dHItPmlzTnVsbCgpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmFi
b3J0QXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggYjI0ZDM0
OC4uYThiYmEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTg0
LDYgKzg0LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVj
dFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOTYwMDQwZi4uM2JhMjZhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC02NTgsOSArNjU4LDQx
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNl
RXZlbnRzKQogICAgIG1faW5wdXRUeXBlLT5hY2Nlc3NLZXlBY3Rpb24oc2VuZE1vdXNlRXZlbnRz
KTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmli
dXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQsIEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICBy
ZXR1cm4gYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGhzcGFj
ZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGFsaWduQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gd2lk
dGhBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyIHx8IChhdHRyLT5uYW1lKCkgPT0g
Ym9yZGVyQXR0ciAmJiBlbGVtZW50LT5pc0ltYWdlQnV0dG9uKCkpOworfQorCit2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0
eWxlUHJvcGVydHlTZXQqIHN0eWxlKQoreworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNl
QXR0cikgeworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1h
cmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBoc3BhY2VBdHRyKSB7CisgICAgICAgIGFkZENTU0xlbmd0aFRv
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0
dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikg
eworICAgICAgICBpZiAobV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RBbGlnbkF0dHJpYnV0ZSgp
KQorICAgICAgICAgICAgYXBwbHlBbGlnbm1lbnRBdHRyaWJ1dGVUb1N0eWxlKGF0dHIsIHN0eWxl
KTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIpIHsKKyAgICAgICAg
aWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkp
CisgICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdpZHRo
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRB
dHRyKSB7CisgICAgICAgIGlmIChtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFuZFdp
ZHRoQXR0cmlidXRlcygpKQorICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGJvcmRlckF0dHIgJiYgaXNJbWFnZUJ1dHRvbigpKQorICAgICAgICBhcHBseUJv
cmRlckF0dHJpYnV0ZVRvU3R5bGUoYXR0ciwgc3R5bGUpOworICAgIGVsc2UgeworICAgICAgICBB
U1NFUlQoIWlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKHRoaXMsIGF0dHIpKTsKKyAg
ICAgICAgcmV0dXJuIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JB
dHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworICAgIH0KK30KKwogdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7Ci0gICAgaWYgKGF0dHItPm5hbWUo
KSA9PSBuYW1lQXR0cikgeworICAgIGlmIChpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0
ZSh0aGlzLCBhdHRyKSkKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwor
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBuYW1lQXR0cikgewogICAgICAgICBjaGVja2Vk
UmFkaW9CdXR0b25zKCkucmVtb3ZlQnV0dG9uKHRoaXMpOwogICAgICAgICBtX25hbWUgPSBhdHRy
LT52YWx1ZSgpOwogICAgICAgICBjaGVja2VkUmFkaW9CdXR0b25zKCkuYWRkQnV0dG9uKHRoaXMp
OwpAQCAtNzEzLDI5ICs3NDUsNiBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgbV9pbnB1dFR5cGUtPnNyY0F0dHJpYnV0ZUNo
YW5nZWQoKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdXNlbWFwQXR0ciB8fCBhdHRy
LT5uYW1lKCkgPT0gYWNjZXNza2V5QXR0cikgewogICAgICAgICAvLyBGSVhNRTogaWdub3JlIGZv
ciB0aGUgbW9tZW50Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikg
ewotICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIGF0dHItPnZhbHVl
KCkpOwotICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHIt
PnZhbHVlKCkpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhzcGFjZUF0dHIpIHsK
LSAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBhdHRyLT52
YWx1ZSgpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpIHsKLSAg
ICAgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0QWxpZ25BdHRyaWJ1dGUoKSkKLSAg
ICAgICAgICAgIGFkZEhUTUxBbGlnbm1lbnQoYXR0cik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJlbW92ZUhUTUxBbGlnbm1lbnQoKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSB3aWR0aEF0dHIpIHsKLSAgICAgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0SGVp
Z2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJv
cGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJl
bW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGhlaWdodEF0dHIpIHsKLSAgICAgICAgaWYgKG1faW5wdXRUeXBlLT5zaG91bGRS
ZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5n
dGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7Ci0gICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyQXR0ciAmJiBpc0ltYWdlQnV0dG9uKCkpIHsKLSAg
ICAgICAgYXBwbHlCb3JkZXJBdHRyaWJ1dGUoYXR0cik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gb25zZWFyY2hBdHRyKSB7CiAgICAgICAgIC8vIFNlYXJjaCBmaWVsZCBhbmQgc2xp
ZGVyIGF0dHJpYnV0ZXMgYWxsIGp1c3QgY2F1c2UgdXBkYXRlRnJvbUVsZW1lbnQgdG8gYmUgY2Fs
bGVkIHRocm91Z2ggc3R5bGUgcmVjYWxjaW5nLgogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5zZWFyY2hFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmlu
ZGV4IGI2ZmEwZjYuLmE1MTIzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5oCkBAIC0yNzYsNiArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNz
S2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVj
dFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3QgRWxlbWVudCogc291cmNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCmluZGV4IGY3ODlkMzIuLjVmYzZi
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcApAQCAtNDksMjcgKzQ5LDMz
IEBAIFBhc3NSZWZQdHI8SFRNTExJRWxlbWVudD4gSFRNTExJRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
TElFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTExJRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQordm9pZCBIVE1MTElFbGVtZW50Ojpjb2xs
ZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBz
dHlsZSkKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IHZhbHVlQXR0cikgewotICAgICAgICBp
ZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0xpc3RJdGVtKCkpCi0gICAgICAgICAgICBw
YXJzZVZhbHVlKGF0dHItPnZhbHVlKCkpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IHR5cGVBdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlKTsKLSAgICAg
ICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiYSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJBbHBoYSk7CisgICAg
aWYgKGF0dHItPm5hbWUoKSA9PSB0eXBlQXR0cikgeworICAgICAgICBpZiAoYXR0ci0+dmFsdWUo
KSA9PSAiYSIpCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0
U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyQWxwaGEpOwogICAgICAgICBlbHNlIGlmIChhdHRyLT52
YWx1ZSgpID09ICJBIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlckFscGhhKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJBbHBoYSk7CiAg
ICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gImkiKQotICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyUm9tYW4pOwor
ICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwg
Q1NTVmFsdWVMb3dlclJvbWFuKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAi
SSIpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUs
IENTU1ZhbHVlVXBwZXJSb21hbik7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZVVwcGVyUm9tYW4pOwogICAgICAgICBlbHNl
IGlmIChhdHRyLT52YWx1ZSgpID09ICIxIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVEZWNpbWFsKTsKKyAgICAgICAgICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlRGVjaW1h
bCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5
TGlzdFN0eWxlVHlwZSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVs
c2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBz
dHlsZSk7Cit9CisKK3ZvaWQgSFRNTExJRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQoreworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFsdWVBdHRyKSB7CisgICAgICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzTGlzdEl0ZW0oKSkKKyAgICAgICAgICAg
IHBhcnNlVmFsdWUoYXR0ci0+dmFsdWUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gdHlwZUF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAg
ICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaAppbmRleCA3N2E5MGU4Li4wM2YxNjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaApAQCAtMzYsNiArMzYsNyBAQCBwcml2YXRlOgog
ICAgIEhUTUxMSUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVBy
b3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAppbmRleCBjNzdjOTg1Li4y
YTk3ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBA
IC01Myw2NCArNTMsNjIgQEAgUGFzc1JlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJx
dWVlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHQKICAgICByZXR1cm4gbWFy
cXVlZUVsZW1lbnQucmVsZWFzZSgpOwogfQogCi12b2lkIEhUTUxNYXJxdWVlRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQorc3RhdGljIGlubGluZSBib29sIGlzUmVzcGVj
dGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKKyAgICByZXR1cm4g
YXR0ci0+bmFtZSgpID09IHdpZHRoQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0ciB8
fCBhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0
dHIgfHwgYXR0ci0+bmFtZSgpID09IGhzcGFjZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHNjcm9s
bGFtb3VudEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHNjcm9sbGRlbGF5QXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gbG9vcEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGJlaGF2aW9yQXR0ciB8fCBhdHRy
LT5uYW1lKCkgPT0gZGlyZWN0aW9uQXR0cjsKK30KKwordm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6
OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlT
ZXQqIHN0eWxlKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKSB7Ci0gICAg
ICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5n
dGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgpOworICAgICAgICBpZiAo
IWF0dHItPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGhlaWdodEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+
dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENT
U1Byb3BlcnR5SGVpZ2h0KTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBiZ2NvbG9yQXR0cikgewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgICAgICAgICBhZGRDU1ND
b2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1
ZSgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2c3BhY2VBdHRyKSB7CiAgICAg
ICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGFkZENTU0xl
bmd0aChDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnRpZXMoQ1NTUHJvcGVydHlN
YXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tKTsKKyAgICAgICAgICAgIGFkZENTU0xl
bmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsK
KyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2lu
Qm90dG9tLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGhzcGFjZUF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwg
YXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJn
aW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVt
b3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIENTU1Byb3BlcnR5TWFyZ2lu
UmlnaHQpOworICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVy
dHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRv
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2Nyb2xsYW1vdW50QXR0cikg
ewogICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRk
Q1NTTGVuZ3RoKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZUluY3JlbWVudCk7CisgICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0
eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsIGF0dHItPnZhbHVl
KCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNjcm9sbGRlbGF5QXR0cikgewog
ICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkLCBhdHRyLT52YWx1ZSgpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlU3BlZWQpOworICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwg
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IGxvb3BBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFs
dWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpID09ICItMSIg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImluZmluaXRlIikpCi0gICAgICAg
ICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlv
biwgQ1NTVmFsdWVJbmZpbml0ZSk7CisgICAgICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sIENTU1ZhbHVlSW5maW5pdGUpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVS
ZXBldGl0aW9uKTsKKyAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLCBhdHRyLT52YWx1ZSgpKTsKKyAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJlaGF2aW9yQXR0cikgewogICAg
ICAgICBpZiAoIWF0dHItPnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIGF0dHItPnZhbHVlKCkpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTdHlsZSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlU3R5bGUsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGRpcmVjdGlvbkF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgp
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZURpcmVjdGlvbiwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbik7
Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHJ1ZXNwZWVkQXR0cikKKyAgICAgICAg
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24s
IGF0dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVCghaXNSZXNwZWN0
ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoYXR0cikpOworICAgICAgICBIVE1MRWxlbWVudDo6Y29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKKyAgICB9Cit9CisKK3ZvaWQgSFRN
TE1hcnF1ZWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAg
aWYgKGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHIpKQorICAgICAgICBzZXRO
ZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IHRydWVzcGVlZEF0dHIpCiAgICAgICAgIG1fbWluaW11bURlbGF5ID0gIWF0dHItPmlzRW1wdHko
KSA/IDAgOiBkZWZhdWx0TWluaW11bURlbGF5OwogICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFycXVlZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVF
bGVtZW50LmgKaW5kZXggZDFlMzA3MC4uMDlhZWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNYXJxdWVlRWxlbWVudC5oCkBAIC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgSFRNTE1h
cnF1ZWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0
eVNldCopIE9WRVJSSURFOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgdmlydHVhbCBi
b29sIGNhblN1c3BlbmQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9MaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1l
bnQuY3BwCmluZGV4IDJiZmEyZmYuLmJhMmUyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T0xpc3RFbGVtZW50LmNwcApAQCAtNTQsMjIgKzU0LDI4IEBAIFBhc3NSZWZQdHI8SFRNTE9MaXN0
RWxlbWVudD4gSFRNTE9MaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MT0xpc3RFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTE9MaXN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0
cmlidXRlKiBhdHRyKQordm9pZCBIVE1MT0xpc3RFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRy
aWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKSB7CiAgICAgICAgIGlmIChhdHRyLT52YWx1ZSgp
ID09ICJhIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxl
VHlwZSwgQ1NTVmFsdWVMb3dlckFscGhhKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlTG93ZXJBbHBoYSk7CiAgICAgICAg
IGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIkEiKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZVVwcGVyQWxwaGEpOworICAgICAg
ICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFs
dWVVcHBlckFscGhhKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+dmFsdWUoKSA9PSAiaSIpCi0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1Zh
bHVlTG93ZXJSb21hbik7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZUxvd2VyUm9tYW4pOwogICAgICAgICBlbHNlIGlmIChh
dHRyLT52YWx1ZSgpID09ICJJIikKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3Bl
cnR5TGlzdFN0eWxlVHlwZSwgQ1NTVmFsdWVVcHBlclJvbWFuKTsKKyAgICAgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsIENTU1ZhbHVlVXBwZXJSb21h
bik7CiAgICAgICAgIGVsc2UgaWYgKGF0dHItPnZhbHVlKCkgPT0gIjEiKQotICAgICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBDU1NWYWx1ZURlY2ltYWwp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUxpc3RTdHlsZVR5cGUpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHN0YXJ0QXR0
cikgeworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxl
VHlwZSwgQ1NTVmFsdWVEZWNpbWFsKTsKKyAgICB9IGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6
OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7Cit9CisKK3ZvaWQgSFRNTE9M
aXN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVV
cGRhdGUoKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc3RhcnRBdHRyKSB7CiAgICAg
ICAgIGludCBvbGRTdGFydCA9IHN0YXJ0KCk7CiAgICAgICAgIGJvb2wgY2FuUGFyc2U7CiAgICAg
ICAgIGludCBwYXJzZWRTdGFydCA9IGF0dHItPnZhbHVlKCkudG9JbnQoJmNhblBhcnNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKaW5kZXggMDczMWZiMC4uMGVmZWJlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmgKQEAgLTU0LDYgKzU0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlY2FsY3VsYXRlSXRlbUNvdW50KCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0
KikgT1ZFUlJJREU7CiAKICAgICBpbnQgbV9zdGFydDsKICAgICB1bnNpZ25lZCBtX2l0ZW1Db3Vu
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZTJiZWYw
MS4uNzk0Mjk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAK
QEAgLTc3LDYgKzc3LDE0IEBAIFJlbmRlcldpZGdldCogSFRNTE9iamVjdEVsZW1lbnQ6OnJlbmRl
cldpZGdldEZvckpTQmluZGluZ3MoKQogICAgIHJldHVybiByZW5kZXJQYXJ0KCk7IC8vIFRoaXMg
d2lsbCByZXR1cm4gMCBpZiB0aGUgcmVuZGVyZXIgaXMgbm90IGEgUmVuZGVyUGFydC4KIH0KIAor
dm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0
ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUo
KSA9PSBib3JkZXJBdHRyKQorICAgICAgICBhcHBseUJvcmRlckF0dHJpYnV0ZVRvU3R5bGUoYXR0
ciwgc3R5bGUpOworICAgIGVsc2UKKyAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y29s
bGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKK30KKwogdm9pZCBIVE1MT2JqZWN0
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gZm9ybUF0dHIpCkBAIC0xMDksNyArMTE3LDcgQEAgdm9pZCBIVE1MT2JqZWN0
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBi
b3JkZXJBdHRyKQotICAgICAgICBhcHBseUJvcmRlckF0dHJpYnV0ZShhdHRyKTsKKyAgICAgICAg
c2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgIGVsc2UKICAgICAgICAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggODViZjE2Zi4uZWVmZWQyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNjcsNiArNjcsOCBAQCBwcml2YXRl
OgogICAgIEhUTUxPYmplY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCos
IEhUTUxGb3JtRWxlbWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQq
KSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJvb2wgZGVl
cCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCmluZGV4IDZjYzlmNTEu
LjhjZjFjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQu
Y3BwCkBAIC00NCwyMCArNDQsMjYgQEAgUGFzc1JlZlB0cjxIVE1MUGFyYWdyYXBoRWxlbWVudD4g
SFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW0KICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEhUTUxQYXJhZ3JhcGhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKLXZvaWQgSFRNTFBhcmFncmFwaEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0
ZSogYXR0cikKK3ZvaWQgSFRNTFBhcmFncmFwaEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewogICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIGlmIChhdHRyLT52YWx1ZSgp
LmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0
QWxpZ24pOwotICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgp
LCAibWlkZGxlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgImNlbnRlciIp
KQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1Zh
bHVlV2Via2l0Q2VudGVyKTsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZh
bHVlKCksICJtaWRkbGUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiY2Vu
dGVyIikpCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxp
Z24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoYXR0ci0+dmFsdWUoKSwgImxlZnQiKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5
KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQpOworICAgICAgICAgICAg
c3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExl
ZnQpOwogICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAi
cmlnaHQiKSkKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWdu
LCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eVRleHRBbGlnbiwgQ1NTVmFsdWVXZWJraXRSaWdodCk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRB
bGlnbiwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCit2b2lkIEhUTUxQYXJh
Z3JhcGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5
bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShhdHRyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdy
YXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5o
CmluZGV4IDBjOGMyOTAuLmQ1Y2ViNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBhcmFncmFwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJh
Z3JhcGhFbGVtZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MUGFyYWdy
YXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlT
ZXQqKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNjZkNjA5Mi4uYjdjMjkzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTE0MCwzNCArMTQw
LDM1IEBAIFdpZGdldCogSFRNTFBsdWdJbkVsZW1lbnQ6OnBsdWdpbldpZGdldCgpCiAgICAgcmV0
dXJuIHJlbmRlcldpZGdldC0+d2lkZ2V0KCk7CiB9CiAKLXZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Jl
c3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7CisgICAgcmV0
dXJuIGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGhlaWdodEF0
dHIgfHwgYXR0ci0+bmFtZSgpID09IHZzcGFjZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGhzcGFj
ZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGFsaWduQXR0cjsKK30KKwordm9pZCBIVE1MUGx1Z0lu
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQ
cm9wZXJ0eVNldCogc3R5bGUpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3aWR0aEF0dHIp
Ci0gICAgICAgIGlmIChhdHRyLT5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnR5KENTU1Byb3BlcnR5V2lkdGgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NM
ZW5ndGgoQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xl
bmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKQotICAgICAgICBpZiAoYXR0ci0+
aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdo
dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0eUhl
aWdodCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gdnNwYWNlQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAg
ICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBDU1NQcm9w
ZXJ0eU1hcmdpbkJvdHRvbSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWRkQ1NTTGVu
Z3RoKENTU1Byb3BlcnR5TWFyZ2luVG9wLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJn
aW5Ub3AsIGF0dHItPnZhbHVlKCkpOworICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxl
LCBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0cikgewotICAgICAgICBpZiAoYXR0ci0+aXNOdWxs
KCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5TWFyZ2luTGVm
dCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
YWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAg
ICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJv
cGVydHlNYXJnaW5MZWZ0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9T
dHlsZShzdHlsZSwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0ci0+dmFsdWUoKSk7CiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKQotICAgICAgICBhZGRIVE1MQWxp
Z25tZW50KGF0dHIpOworICAgICAgICBhcHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5bGUoYXR0
ciwgc3R5bGUpOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQoIWlzUmVzcGVjdGVkUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGF0dHIpKTsKKyAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworICAgIH0KK30KKwordm9pZCBI
VE1MUGx1Z0luRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAg
IGlmIChpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgc2V0
TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgIGVsc2UKICAgICAgICAgSFRNTEZyYW1l
T3duZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCA4YzIyMTQxLi4yNzAxNzdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC01OSw2ICs1OSw3IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
RG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRy
aWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKICAgICBib29sIG1faW5CZWZv
cmVMb2FkRXZlbnRIYW5kbGVyOwogICAgIC8vIFN1YmNsYXNzZXMgc2hvdWxkIHVzZSBndWFyZGVk
RGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW5zdGVhZCBvZiBjYWxsaW5nIGRpc3BhdGNoQmVmb3Jl
TG9hZEV2ZW50IGRpcmVjdGx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UHJlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmNwcApp
bmRleCA3ZWQ4NWZjLi41YTk3NzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQcmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50
LmNwcApAQCAtNDIsNiArNDIsMTQgQEAgUGFzc1JlZlB0cjxIVE1MUHJlRWxlbWVudD4gSFRNTFBy
ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLAogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTFByZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAor
dm9pZCBIVE1MUHJlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9
PSB3cmFwQXR0cikKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVT
cGFjZSwgQ1NTVmFsdWVQcmVXcmFwKTsKKyAgICBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworfQorCiB2b2lkIEhUTUxQcmVF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHIt
Pm5hbWUoKSA9PSB3aWR0aEF0dHIpIHsKQEAgLTQ5LDEyICs1Nyw5IEBAIHZvaWQgSFRNTFByZUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgLy8gd2Ugc2hv
dWxkIHNpemUgdGhlIHByZSB0by4gIFdlIGJhc2ljYWxseSBuZWVkIHRvIHRha2UgdGhlIHdpZHRo
IG9mIGEgc3BhY2UsCiAgICAgICAgIC8vIG11bHRpcGx5IGJ5IHRoZSB2YWx1ZSBvZiB0aGUgYXR0
cmlidXRlIGFuZCB0aGVuIHNldCB0aGF0IGFzIHRoZSB3aWR0aCBDU1MKICAgICAgICAgLy8gcHJv
cGVydHkuCi0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gd3JhcEF0dHIpIHsKLSAgICAg
ICAgaWYgKGF0dHItPnZhbHVlKCkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlUHJlV3JhcCk7Ci0g
ICAgfSBlbHNlCisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gd3JhcEF0dHIpCisgICAg
ICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlCiAgICAgICAgIHJl
dHVybiBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFByZUVsZW1lbnQuaAppbmRleCAzYWQzMTUyLi44NjJkYzYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUHJlRWxlbWVudC5oCkBAIC0zNSw2ICszNSw3IEBAIHByaXZhdGU6CiAgICAgSFRN
TFByZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5
U2V0KikgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwCmluZGV4IDg4NDUwZDQu
LmVjNTMxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQuY3BwCkBAIC00NCwxNSArNDQsMjEgQEAgUGFzc1JlZlB0cjxIVE1MVGFibGVDYXB0aW9u
RWxlbWVudD4gSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWYKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLXZvaWQgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKK3ZvaWQgSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ6OmNvbGxl
Y3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0
eWxlKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIGlm
ICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUNhcHRpb25TaWRlLCBhdHRyLT52YWx1ZSgpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDYXB0aW9uU2lkZSk7CisgICAg
ICAgIGlmICghYXR0ci0+aXNFbXB0eSgpKQorICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5Q2FwdGlvblNpZGUsIGF0dHItPnZhbHVlKCkpOwogICAgIH0gZWxzZQotICAg
ICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CisgICAgICAgIEhUTUxFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOyAvLyBOb3RlIHRoYXQg
d2UgYXJlIGJ5cGFzc2luZyBIVE1MVGFibGVQYXJ0RWxlbWVudCBoZXJlLgorfQorCit2b2lkIEhU
TUxUYWJsZUNhcHRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCit7
CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBhbGlnbkF0dHIpCisgICAgICAgIHNldE5lZWRzQXR0
cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShhdHRyKTsgLy8gTm90ZSB0aGF0IHdlIGFyZSBieXBhc3NpbmcgSFRNTFRhYmxl
UGFydEVsZW1lbnQgaGVyZS4KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDYXB0aW9uRWxlbWVudC5oCmluZGV4IGRhNDBlODIuLjgyN2NjMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgKQEAgLTM4LDYgKzM4LDcgQEAg
cHJpdmF0ZToKICAgICBIVE1MVGFibGVDYXB0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1
dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yQXR0cmlidXRl
KEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCmlu
ZGV4IDg0YTFjOTYuLjk4N2ZlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlQ2VsbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuY3BwCkBAIC03NSwzNCArNzUsNDMgQEAgaW50IEhUTUxUYWJsZUNlbGxFbGVt
ZW50OjpjZWxsSW5kZXgoKSBjb25zdAogICAgIHJldHVybiBpbmRleDsKIH0KIAotdm9pZCBIVE1M
VGFibGVDZWxsRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQorc3RhdGlj
IGlubGluZSBib29sIGlzUmVzcGVjdGVkUHJlc2VudGF0aW9uQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cikKIHsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IHJvd3NwYW5BdHRyKSB7Ci0gICAgICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzVGFibGVDZWxsKCkpCi0gICAgICAgICAg
ICB0b1JlbmRlclRhYmxlQ2VsbChyZW5kZXJlcigpKS0+Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQo
KTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb2xzcGFuQXR0cikgewotICAgICAg
ICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxlQ2VsbCgpKQotICAgICAgICAg
ICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFuZ2Vk
KCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbm93cmFwQXR0cikgewotICAgICAg
ICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdoaXRlU3BhY2UpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsIENTU1ZhbHVlV2Via2l0Tm93cmFwKTsKKyAgICBy
ZXR1cm4gYXR0ci0+bmFtZSgpID09IG5vd3JhcEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHdpZHRo
QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gaGVpZ2h0QXR0cjsKK30KIAordm9pZCBIVE1MVGFibGVD
ZWxsRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5
bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBub3dyYXBB
dHRyKSB7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdoaXRlU3BhY2Us
IENTU1ZhbHVlV2Via2l0Tm93cmFwKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB3
aWR0aEF0dHIpIHsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgaW50IHdpZHRoSW50ID0gYXR0ci0+dmFsdWUoKS50b0ludCgpOwogICAgICAgICAg
ICAgaWYgKHdpZHRoSW50ID4gMCkgLy8gd2lkdGg9IjAiIGlzIGlnbm9yZWQgZm9yIGNvbXBhdGli
aWxpdHkgd2l0aCBXaW5JRS4KLSAgICAgICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVy
dHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVt
b3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCk7CisgICAgICAgICAgICAgICAgYWRkQ1NT
TGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7Cisg
ICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKSB7CiAg
ICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGludCBo
ZWlnaHRJbnQgPSBhdHRyLT52YWx1ZSgpLnRvSW50KCk7CiAgICAgICAgICAgICBpZiAoaGVpZ2h0
SW50ID4gMCkgLy8gaGVpZ2h0PSIwIiBpcyBpZ25vcmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGgg
V2luSUUuCi0gICAgICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0LCBh
dHRyLT52YWx1ZSgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7CisgICAgICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoVG9T
dHlsZShzdHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCFpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0
dHJpYnV0ZShhdHRyKSk7CisgICAgICAgIEhUTUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworICAgIH0KK30KKwordm9pZCBIVE1MVGFibGVD
ZWxsRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChp
c1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgc2V0TmVlZHNB
dHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSByb3dz
cGFuQXR0cikgeworICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1RhYmxl
Q2VsbCgpKQorICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNlbGwocmVuZGVyZXIoKSktPmNvbFNw
YW5PclJvd1NwYW5DaGFuZ2VkKCk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29s
c3BhbkF0dHIpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJs
ZUNlbGwoKSkKKyAgICAgICAgICAgIHRvUmVuZGVyVGFibGVDZWxsKHJlbmRlcmVyKCkpLT5jb2xT
cGFuT3JSb3dTcGFuQ2hhbmdlZCgpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MVGFibGVQYXJ0
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNlbGxFbGVtZW50LmgKaW5kZXggNWMzMmQ2YS4uZmNkZjBlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaApAQCAtNTQsNiArNTQsNyBAQCBwcml2
YXRlOgogICAgIEhUTUxUYWJsZUNlbGxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmli
dXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBTdHlsZVBy
b3BlcnR5U2V0KiBhZGRpdGlvbmFsQXR0cmlidXRlU3R5bGUoKSBPVkVSUklERTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggMGM4M2U3OC4uN2I1
NGRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCkBA
IC00Nyw2ICs0NywxNCBAQCBQYXNzUmVmUHRyPEhUTUxUYWJsZUNvbEVsZW1lbnQ+IEhUTUxUYWJs
ZUNvbEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTFRhYmxlQ29sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCit2
b2lkIEhUTUxUYWJsZUNvbEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQoreworICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gd2lkdGhBdHRyKQorICAgICAgICBhZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQ
cm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIEhUTUxUYWJs
ZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworfQor
CiB2b2lkIEhUTUxUYWJsZUNvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNwYW5BdHRyKSB7CkBAIC01NCwxNiArNjIs
MTUgQEAgdm9pZCBIVE1MVGFibGVDb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHIpCiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzVGFibGVDb2wo
KSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAgICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyKSB7CisgICAgICAgIHNldE5lZWRzQXR0
cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZh
bHVlKCkpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJs
ZUNvbCgpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyVGFibGVDb2wqIGNvbCA9IHRvUmVuZGVy
VGFibGVDb2wocmVuZGVyZXIoKSk7CiAgICAgICAgICAgICAgICAgaW50IG5ld1dpZHRoID0gd2lk
dGgoKS50b0ludCgpOwogICAgICAgICAgICAgICAgIGlmIChuZXdXaWR0aCAhPSBjb2wtPndpZHRo
KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhz
UmVjYWxjKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVt
b3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCk7CisgICAgICAgIH0KICAgICB9IGVsc2UK
ICAgICAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaAppbmRleCAwMWNlYThlLi4x
N2YwYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaApAQCAt
NDMsNiArNDMsNyBAQCBwcml2YXRlOgogICAgIEhUTUxUYWJsZUNvbEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVj
dFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFN0eWxlUHJvcGVydHlTZXQqIGFkZGl0aW9uYWxBdHRyaWJ1dGVTdHls
ZSgpIE9WRVJSSURFOwogCiAgICAgaW50IG1fc3BhbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCmluZGV4IGJlM2FhYTIuLmZkMTBlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNT
U0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAi
Q1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKQEAgLTI2Niwx
MDIgKzI2NywxMTkgQEAgc3RhdGljIGJvb2wgc2V0VGFibGVDZWxsc0NoYW5nZWQoTm9kZSogbikK
ICAgICByZXR1cm4gY2VsbENoYW5nZWQ7CiB9CiAKK3N0YXRpYyBib29sIGdldEJvcmRlcnNGcm9t
RnJhbWVBdHRyaWJ1dGVWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBib29sJiBib3Jk
ZXJUb3AsIGJvb2wmIGJvcmRlclJpZ2h0LCBib29sJiBib3JkZXJCb3R0b20sIGJvb2wmIGJvcmRl
ckxlZnQpCit7CisgICAgYm9yZGVyVG9wID0gZmFsc2U7CisgICAgYm9yZGVyUmlnaHQgPSBmYWxz
ZTsKKyAgICBib3JkZXJCb3R0b20gPSBmYWxzZTsKKyAgICBib3JkZXJMZWZ0ID0gZmFsc2U7CisK
KyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJhYm92ZSIpKQorICAgICAgICBib3Jk
ZXJUb3AgPSB0cnVlOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiYmVs
b3ciKSkKKyAgICAgICAgYm9yZGVyQm90dG9tID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImhzaWRlcyIpKQorICAgICAgICBib3JkZXJUb3AgPSBib3JkZXJC
b3R0b20gPSB0cnVlOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAidnNp
ZGVzIikpCisgICAgICAgIGJvcmRlckxlZnQgPSBib3JkZXJSaWdodCA9IHRydWU7CisgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJsaHMiKSkKKyAgICAgICAgYm9yZGVyTGVm
dCA9IHRydWU7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJyaHMiKSkK
KyAgICAgICAgYm9yZGVyUmlnaHQgPSB0cnVlOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLCAiYm94IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJib3JkZXIiKSkK
KyAgICAgICAgYm9yZGVyVG9wID0gYm9yZGVyQm90dG9tID0gYm9yZGVyTGVmdCA9IGJvcmRlclJp
Z2h0ID0gdHJ1ZTsKKyAgICBlbHNlIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJ2b2lk
IikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBI
VE1MVGFibGVFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
LCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdp
ZHRoQXR0cikKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlX
aWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdo
dEF0dHIpCisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVp
Z2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVy
QXR0cikgeworICAgICAgICBpbnQgYm9yZGVyID0gYXR0ci0+aXNFbXB0eSgpID8gMSA6IGF0dHIt
PnZhbHVlKCkudG9JbnQoKTsKKyAgICAgICAgYWRkQ1NTTGVuZ3RoVG9TdHlsZShzdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJXaWR0aCwgU3RyaW5nOjpudW1iZXIoYm9yZGVyKSk7IC8vIEZJWE1FOiBQ
YXNzIGFzIGludGVnZXIuCisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyY29s
b3JBdHRyKSB7CisgICAgICAgIGlmICghYXR0ci0+aXNFbXB0eSgpKQorICAgICAgICAgICAgYWRk
Q1NTQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBhdHRyLT52YWx1
ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0cikKKyAgICAg
ICAgYWRkQ1NTQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwg
YXR0ci0+dmFsdWUoKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJhY2tncm91bmRB
dHRyKSB7CisgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91
bmRJbWFnZSwgQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVy
bCkuc3RyaW5nKCkpKSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdmFsaWduQXR0
cikgeworICAgICAgICBpZiAoIWF0dHItPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOworICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNlbGxzcGFjaW5nQXR0cikgeworICAgICAgICBp
ZiAoIWF0dHItPmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgYXR0ci0+dmFsdWUoKSk7CisgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gdnNwYWNlQXR0cikgeworICAgICAgICBhZGRDU1NMZW5ndGhU
b1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7CisgICAg
ICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLCBh
dHRyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoc3BhY2VBdHRy
KSB7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5TWFyZ2lu
TGVmdCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIGFkZENTU0xlbmd0aFRvU3R5bGUoc3R5bGUs
IENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IGFsaWduQXR0cikgeworICAgICAgICBpZiAoIWF0dHItPnZhbHVlKCku
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFs
dWUoKSwgImNlbnRlciIpKSB7CisgICAgICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQsIENTU1ZhbHVlQXV0byk7CisgICAgICAgICAgICAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kLCBDU1NWYWx1
ZUF1dG8pOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5RmxvYXQsIGF0dHItPnZhbHVlKCkpOworICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcnVsZXNBdHRyKSB7CisgICAgICAgIC8vIFRoZSBw
cmVzZW5jZSBvZiBhIHZhbGlkIHJ1bGVzIGF0dHJpYnV0ZSBjYXVzZXMgYm9yZGVyIGNvbGxhcHNp
bmcgdG8gYmUgZW5hYmxlZC4KKyAgICAgICAgaWYgKG1fcnVsZXNBdHRyICE9IFVuc2V0UnVsZXMp
CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBz
ZSwgQ1NTVmFsdWVDb2xsYXBzZSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZnJh
bWVBdHRyKSB7CisgICAgICAgIGJvb2wgYm9yZGVyVG9wOworICAgICAgICBib29sIGJvcmRlclJp
Z2h0OworICAgICAgICBib29sIGJvcmRlckJvdHRvbTsKKyAgICAgICAgYm9vbCBib3JkZXJMZWZ0
OworICAgICAgICBpZiAoZ2V0Qm9yZGVyc0Zyb21GcmFtZUF0dHJpYnV0ZVZhbHVlKGF0dHItPnZh
bHVlKCksIGJvcmRlclRvcCwgYm9yZGVyUmlnaHQsIGJvcmRlckJvdHRvbSwgYm9yZGVyTGVmdCkp
IHsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclRvcFdp
ZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1ZhbHVlVGhpbik7CisgICAgICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1ZhbHVlVGhpbik7
CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdp
ZHRoLCBDU1NWYWx1ZVRoaW4pOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGUsIGJvcmRlclRvcCA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1
ZUhpZGRlbik7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21TdHlsZSwgYm9yZGVyQm90dG9tID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlk
ZGVuKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRTdHlsZSwgYm9yZGVyTGVmdCA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1ZUhpZGRlbik7Cisg
ICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxl
LCBib3JkZXJSaWdodCA/IENTU1ZhbHVlU29saWQgOiBDU1NWYWx1ZUhpZGRlbik7CisgICAgICAg
IH0KKyAgICB9IGVsc2UKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJp
YnV0ZShhdHRyLCBzdHlsZSk7Cit9CisKIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIENlbGxCb3JkZXJzIGJvcmRlcnNCZWZvcmUg
PSBjZWxsQm9yZGVycygpOwogICAgIHVuc2lnbmVkIHNob3J0IG9sZFBhZGRpbmcgPSBtX3BhZGRp
bmc7CiAKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikKLSAgICAgICAgaWYgKGF0
dHItPmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlX
aWR0aCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9wZXJ0
eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKLSAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaGVp
Z2h0QXR0cikKLSAgICAgICAgaWYgKGF0dHItPmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3Zl
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHItPnZhbHVlKCkpOworICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gd2lkdGhBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRy
IHx8IGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gYmFja2dy
b3VuZEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHZhbGlnbkF0dHIgfHwgYXR0ci0+bmFtZSgpID09
IHZzcGFjZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGhzcGFjZUF0dHIgfHwgYXR0ci0+bmFtZSgp
ID09IGFsaWduQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gY2VsbHNwYWNpbmdBdHRyKQorICAgICAg
ICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGJvcmRlckF0dHIpICB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGF0dHJpYnV0ZSBp
cyBhIG1lc3MuCiAgICAgICAgIG1fYm9yZGVyQXR0ciA9IHRydWU7Ci0KLSAgICAgICAgaWYgKGF0
dHItPmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXJXaWR0aCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaW50IGJvcmRlciA9IDA7
Ci0gICAgICAgICAgICBpZiAoYXR0ci0+aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGJvcmRl
ciA9IDE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYm9yZGVyID0gYXR0ci0+
dmFsdWUoKS50b0ludCgpOworICAgICAgICBpZiAoIWF0dHItPmlzTnVsbCgpKSB7CisgICAgICAg
ICAgICBpbnQgYm9yZGVyID0gYXR0ci0+aXNFbXB0eSgpID8gMSA6IGF0dHItPnZhbHVlKCkudG9J
bnQoKTsKICAgICAgICAgICAgIG1fYm9yZGVyQXR0ciA9IGJvcmRlcjsKLSAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBTdHJpbmc6Om51bWJlcihib3JkZXIp
KTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJnY29sb3JBdHRy
KQotICAgICAgICBpZiAoYXR0ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgp
KTsKLSAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyY29sb3JBdHRyKSB7CisgICAg
ICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKKyAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBib3JkZXJjb2xvckF0dHIpIHsKICAgICAgICAgbV9ib3JkZXJDb2xvckF0dHIg
PSAhYXR0ci0+aXNFbXB0eSgpOwotICAgICAgICBpZiAoIWF0dHItPmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGF0dHItPnZhbHVlKCkp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJvcmRlckNvbG9yKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBiYWNrZ3JvdW5k
QXR0cikgewotICAgICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKGF0dHItPnZhbHVlKCkpOwotICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBhZGRDU1NJbWFnZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBk
b2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UpOwor
ICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gZnJhbWVBdHRyKSB7Ci0gICAgICAgIC8vIENhY2hlIHRoZSB2YWx1ZSBv
ZiAiZnJhbWUiIHNvIHRoYXQgdGhlIHRhYmxlIGNhbiBleGFtaW5lIGl0IGxhdGVyLgotICAgICAg
ICBtX2ZyYW1lQXR0ciA9IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgLy8gV2hldGhlciBvciBu
b3QgdG8gaGlkZSB0aGUgdG9wL3JpZ2h0L2JvdHRvbS9sZWZ0IGJvcmRlcnMuCi0gICAgICAgIGNv
bnN0IGludCBjVG9wID0gMDsKLSAgICAgICAgY29uc3QgaW50IGNSaWdodCA9IDE7Ci0gICAgICAg
IGNvbnN0IGludCBjQm90dG9tID0gMjsKLSAgICAgICAgY29uc3QgaW50IGNMZWZ0ID0gMzsKLSAg
ICAgICAgYm9vbCBib3JkZXJzWzRdID0geyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSB9Owot
ICAgICAgICAKLSAgICAgICAgLy8gdm9pZCwgYWJvdmUsIGJlbG93LCBoc2lkZXMsIHZzaWRlcywg
bGhzLCByaHMsIGJveCwgYm9yZGVyCi0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRy
LT52YWx1ZSgpLCAidm9pZCIpKQotICAgICAgICAgICAgbV9mcmFtZUF0dHIgPSB0cnVlOwotICAg
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYWJvdmUiKSkg
ewotICAgICAgICAgICAgbV9mcmFtZUF0dHIgPSB0cnVlOwotICAgICAgICAgICAgYm9yZGVyc1tj
VG9wXSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+
dmFsdWUoKSwgImJlbG93IikpIHsKLSAgICAgICAgICAgIG1fZnJhbWVBdHRyID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGJvcmRlcnNbY0JvdHRvbV0gPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJoc2lkZXMiKSkgewotICAgICAgICAgICAg
bV9mcmFtZUF0dHIgPSB0cnVlOwotICAgICAgICAgICAgYm9yZGVyc1tjVG9wXSA9IGJvcmRlcnNb
Y0JvdHRvbV0gPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0
dHItPnZhbHVlKCksICJ2c2lkZXMiKSkgewotICAgICAgICAgICAgbV9mcmFtZUF0dHIgPSB0cnVl
OwotICAgICAgICAgICAgYm9yZGVyc1tjTGVmdF0gPSBib3JkZXJzW2NSaWdodF0gPSB0cnVlOwot
ICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJsaHMi
KSkgewotICAgICAgICAgICAgbV9mcmFtZUF0dHIgPSB0cnVlOwotICAgICAgICAgICAgYm9yZGVy
c1tjTGVmdF0gPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0
dHItPnZhbHVlKCksICJyaHMiKSkgewotICAgICAgICAgICAgbV9mcmFtZUF0dHIgPSB0cnVlOwot
ICAgICAgICAgICAgYm9yZGVyc1tjUmlnaHRdID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYm94IikgfHwKLSAgICAgICAgICAgICAg
ICAgICBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiYm9yZGVyIikpIHsKLSAgICAg
ICAgICAgIG1fZnJhbWVBdHRyID0gdHJ1ZTsKLSAgICAgICAgICAgIGJvcmRlcnNbY1RvcF0gPSBi
b3JkZXJzW2NCb3R0b21dID0gYm9yZGVyc1tjTGVmdF0gPSBib3JkZXJzW2NSaWdodF0gPSB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBOb3cgbWFwIGluIHRoZSBib3JkZXIg
c3R5bGVzIG9mIHNvbGlkIGFuZCBoaWRkZW4gcmVzcGVjdGl2ZWx5LgotICAgICAgICBpZiAobV9m
cmFtZUF0dHIpIHsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVy
VG9wV2lkdGgsIENTU1ZhbHVlVGhpbik7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NWYWx1ZVRoaW4pOwotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1ZhbHVlVGhpbik7Ci0g
ICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENT
U1ZhbHVlVGhpbik7Ci0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRl
clRvcFN0eWxlLCBib3JkZXJzW2NUb3BdID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVu
KTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGUsIGJvcmRlcnNbY0JvdHRvbV0gPyBDU1NWYWx1ZVNvbGlkIDogQ1NTVmFsdWVIaWRkZW4pOwot
ICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIGJv
cmRlcnNbY0xlZnRdID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgYm9yZGVyc1tj
UmlnaHRdID8gQ1NTVmFsdWVTb2xpZCA6IENTU1ZhbHVlSGlkZGVuKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUpOworICAgICAgICAvLyBGSVhNRTogVGhp
cyBhdHRyaWJ1dGUgaXMgYSBtZXNzLgorICAgICAgICBib29sIGJvcmRlclRvcDsKKyAgICAgICAg
Ym9vbCBib3JkZXJSaWdodDsKKyAgICAgICAgYm9vbCBib3JkZXJCb3R0b207CisgICAgICAgIGJv
b2wgYm9yZGVyTGVmdDsKKyAgICAgICAgbV9mcmFtZUF0dHIgPSBnZXRCb3JkZXJzRnJvbUZyYW1l
QXR0cmlidXRlVmFsdWUoYXR0ci0+dmFsdWUoKSwgYm9yZGVyVG9wLCBib3JkZXJSaWdodCwgYm9y
ZGVyQm90dG9tLCBib3JkZXJMZWZ0KTsKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVw
ZGF0ZSgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHJ1bGVzQXR0cikgewogICAg
ICAgICBtX3J1bGVzQXR0ciA9IFVuc2V0UnVsZXM7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShhdHRyLT52YWx1ZSgpLCAibm9uZSIpKQpAQCAtMzc0LDE3ICszOTIsOCBAQCB2b2lkIEhU
TUxUYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAg
ICAgIG1fcnVsZXNBdHRyID0gQ29sc1J1bGVzOwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYXR0ci0+dmFsdWUoKSwgImFsbCIpKQogICAgICAgICAgICAgbV9ydWxlc0F0dHIgPSBBbGxS
dWxlczsKLSAgICAgICAgCi0gICAgICAgIC8vIFRoZSBwcmVzZW5jZSBvZiBhIHZhbGlkIHJ1bGVz
IGF0dHJpYnV0ZSBjYXVzZXMgYm9yZGVyIGNvbGxhcHNpbmcgdG8gYmUgZW5hYmxlZC4KLSAgICAg
ICAgaWYgKG1fcnVsZXNBdHRyICE9IFVuc2V0UnVsZXMpCi0gICAgICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlLCBDU1NWYWx1ZUNvbGxhcHNlKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJD
b2xsYXBzZSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY2VsbHNwYWNpbmdBdHRy
KSB7Ci0gICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBh
ZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBhdHRyLT52YWx1ZSgpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJTcGFjaW5nKTsKKworICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxlVXBkYXRlKCk7CiAg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY2VsbHBhZGRpbmdBdHRyKSB7CiAgICAgICAg
IGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX3BhZGRpbmcgPSBt
YXgoMCwgYXR0ci0+dmFsdWUoKS50b0ludCgpKTsKQEAgLTM5MiwzNCArNDAxLDYgQEAgdm9pZCBI
VE1MVGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAg
ICAgICBtX3BhZGRpbmcgPSAxOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNvbHNB
dHRyKSB7CiAgICAgICAgIC8vICMjIwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHZz
cGFjZUF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPmlzTnVsbCgpKQotICAgICAgICAgICAgcmVt
b3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eU1hcmdpblRvcCwgQ1NTUHJvcGVydHlNYXJnaW5C
b3R0b20pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGFkZENTU0xlbmd0aChDU1NQcm9w
ZXJ0eU1hcmdpblRvcCwgYXR0ci0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgo
Q1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIGF0dHItPnZhbHVlKCkpOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gaHNwYWNlQXR0cikgewotICAgICAgICBpZiAoYXR0
ci0+aXNOdWxsKCkpCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0aWVzKENTU1Byb3BlcnR5
TWFyZ2luTGVmdCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCk7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgYXR0
ci0+dmFsdWUoKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBh
bGlnbkF0dHIpIHsKLSAgICAgICAgaWYgKCFhdHRyLT52YWx1ZSgpLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJjZW50ZXIiKSkg
ewotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
U3RhcnQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5FbmQsIENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBhdHRy
LT52YWx1ZSgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0
aWVzKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luU3RhcnQsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
RW5kLCBDU1NQcm9wZXJ0eUZsb2F0KTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSB2
YWxpZ25BdHRyKSB7Ci0gICAgICAgIGlmICghYXR0ci0+dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGF0dHItPnZh
bHVlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVZlcnRpY2FsQWxpZ24pOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50
LmgKaW5kZXggZWY4Y2NkZS4uZWUwODEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmgKQEAgLTczLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICBIVE1MVGFibGVFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xs
ZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsK
IAogICAgIC8vIFVzZWQgdG8gb2J0YWluIGVpdGhlciBhIHNvbGlkIG9yIG91dHNldCBib3JkZXIg
ZGVjbCBhbmQgdG8gZGVhbCB3aXRoIHRoZSBmcmFtZSBhbmQgcnVsZXMgYXR0cmlidXRlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAKaW5kZXggOGZkNzQ3
Yi4uODg2YjM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVu
dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MVGFibGVQYXJ0RWxlbWVudC5o
IgogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRz
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTM2LDUzICszNyw1NSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXZvaWQgSFRNTFRhYmxl
UGFydEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIp
Cit7CisgICAgcmV0dXJuIGF0dHItPm5hbWUoKSA9PSBiZ2NvbG9yQXR0ciB8fCBhdHRyLT5uYW1l
KCkgPT0gYmFja2dyb3VuZEF0dHIgfHwgYXR0ci0+bmFtZSgpID09IGJvcmRlcmNvbG9yQXR0ciB8
fCBhdHRyLT5uYW1lKCkgPT0gdmFsaWduQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRy
IHx8IGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyOworfQorCit2b2lkIEhUTUxUYWJsZVBhcnRF
bGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVBy
b3BlcnR5U2V0KiBzdHlsZSkKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGJnY29sb3JBdHRy
KQotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgYWRkQ1NTQ29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGF0dHIt
PnZhbHVlKCkpOworICAgICAgICBhZGRDU1NDb2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gYmFja2dyb3VuZEF0dHIpIHsKICAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgaWYgKCF1cmwu
aXNFbXB0eSgpKQotICAgICAgICAgICAgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRJbWFnZSwgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZEltYWdlKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkpKSk7CiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gYm9yZGVyY29sb3JBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUo
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGFkZENTU0NvbG9yKENTU1Byb3BlcnR5Qm9yZGVy
Q29sb3IsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NWYWx1ZVNvbGlkKTsKLSAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NW
YWx1ZVNvbGlkKTsKLSAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
cmVtb3ZlQ1NTUHJvcGVydGllcyhDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBDU1NQcm9wZXJ0eUJv
cmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlKTsKKyAgICAgICAgICAg
IGFkZENTU0NvbG9yVG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Zh
bHVlU29saWQpOworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRTdHlsZSwgQ1NTVmFsdWVTb2xpZCk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSB2YWxpZ25BdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+dmFsdWUo
KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRp
Y2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pOworICAgICAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgYXR0ci0+dmFsdWUoKSk7
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYWxpZ25BdHRyKSB7Ci0gICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdiA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIGlmICh2LmlzTnVs
bCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24p
OwotICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2LCAibWlkZGxlIikgfHwgZXF1
YWxJZ25vcmluZ0Nhc2UodiwgImNlbnRlciIpKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHko
Q1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0Q2VudGVyKTsKLSAgICAgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodiwgImFic21pZGRsZSIpKQotICAgICAgICAgICAgYWRk
Q1NTUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlQ2VudGVyKTsKLSAgICAg
ICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodiwgImxlZnQiKSkKLSAgICAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdExlZnQpOwot
ICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2LCAicmlnaHQiKSkKLSAgICAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZVdlYmtpdFJp
Z2h0KTsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJtaWRk
bGUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAiY2VudGVyIikpCisgICAg
ICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVl
V2Via2l0Q2VudGVyKTsKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+
dmFsdWUoKSwgImFic21pZGRsZSIpKQorICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZUNlbnRlcik7CisgICAgICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJsZWZ0IikpCisgICAgICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIENTU1ZhbHVlV2Via2l0TGVmdCk7
CisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVlKCksICJyaWdo
dCIpKQorICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWdu
LCBDU1NWYWx1ZVdlYmtpdFJpZ2h0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24sIHYpOworICAgICAgICAgICAgc3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBhdHRyLT52YWx1ZSgpKTsKICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoZWlnaHRBdHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+
dmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhZGRDU1NMZW5ndGgoQ1NTUHJvcGVydHlI
ZWlnaHQsIGF0dHItPnZhbHVlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW1vdmVD
U1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCk7Ci0gICAgfSBlbHNlCisgICAgICAgICAgICBh
ZGRDU1NMZW5ndGhUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUhlaWdodCwgYXR0ci0+dmFsdWUo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKCFpc1Jlc3BlY3RlZFByZXNlbnRhdGlv
bkF0dHJpYnV0ZShhdHRyKSk7CisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JB
dHRyaWJ1dGUoYXR0ciwgc3R5bGUpOworICAgIH0KK30KKwordm9pZCBIVE1MVGFibGVQYXJ0RWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAgIGlmIChpc1Jlc3Bl
Y3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1
dGVTdHlsZVVwZGF0ZSgpOworICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGF0dHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVBhcnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVt
ZW50LmgKaW5kZXggYzEzOWJiZS4uMmViNzBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlUGFydEVsZW1lbnQuaApAQCAtMzgsNiArMzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5
bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggYmZmNzU3NC4uMDkxZjYx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0x
MTcsNyArMTE3LDIxIEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuCiAgICAgc2V0SW5uZXJUZXh0
VmFsdWUodmFsdWUoKSk7CiAgICAgSFRNTEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiB9
Ci0gICAgCisKK3ZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSB3cmFwQXR0cikgeworICAgICAgICBpZiAoc2hvdWxkV3JhcFRleHQo
KSkgeworICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFj
ZSwgQ1NTVmFsdWVQcmVXcmFwKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdvcmRXcmFwLCBDU1NWYWx1ZUJyZWFrV29yZCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NW
YWx1ZVByZSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXb3Jk
V3JhcCwgQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoYXR0ciwg
c3R5bGUpOworfQorCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHJvd3NBdHRyKSB7CkBA
IC0xNTAsMTQgKzE2NCw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICAgICAgd3JhcCA9IFNvZnRXcmFwOwogICAgICAg
ICBpZiAod3JhcCAhPSBtX3dyYXApIHsKICAgICAgICAgICAgIG1fd3JhcCA9IHdyYXA7Ci0KLSAg
ICAgICAgICAgIGlmIChzaG91bGRXcmFwVGV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZVdyYXApOwotICAgICAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V29yZFdyYXAsIENTU1ZhbHVlQnJl
YWtXb3JkKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYWRkQ1NTUHJv
cGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZSk7Ci0gICAgICAgICAgICAg
ICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQ1NTVmFsdWVOb3JtYWwpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgp
OwogCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICByZW5kZXJl
cigpLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggYzJiYmM3MS4uOWQ3MzQ5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTk0LDYgKzk0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2Vk
QnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFu
Z2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRh
TGlzdCYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFVMaXN0RWxlbWVudC5jcHAKaW5kZXggY2MzYzA2OS4uMTA5OTQ5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuY3BwCkBAIC00NywxMyArNDcsMTggQEAgUGFz
c1JlZlB0cjxIVE1MVUxpc3RFbGVtZW50PiBIVE1MVUxpc3RFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxVTGlzdEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAordm9pZCBIVE1MVUxpc3RFbGVtZW50Ojpj
b2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0
KiBzdHlsZSkKK3sKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKQorICAgICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLCBhdHRyLT52YWx1ZSgp
KTsKKyAgICBlbHNlCisgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1
dGUoYXR0ciwgc3R5bGUpOworfQorCiB2b2lkIEhUTUxVTGlzdEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRy
KQotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051bGwoKSkKLSAgICAgICAgICAgIHJlbW92
ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICBl
bHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmgKaW5kZXggYzc4Njc0Ni4uYWJiMjE5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVUxpc3RFbGVtZW50LmgKQEAgLTM2LDYgKzM2LDcgQEAgcHJp
dmF0ZToKICAgICBIVE1MVUxpc3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRl
KiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggNmIzZmM1Yi4uNTU1ODQx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC05NSw2ICs5
NSwxNiBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OmRldGFjaCgpCiAgICAgICAgIG1faW1hZ2VM
b2FkZXIuY2xlYXIoKTsKIH0KIAordm9pZCBIVE1MVmlkZW9FbGVtZW50Ojpjb2xsZWN0U3R5bGVG
b3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKK3sK
KyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdpZHRoQXR0cikKKyAgICAgICAgYWRkQ1NTTGVuZ3Ro
VG9TdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IGhlaWdodEF0dHIpCisgICAgICAgIGFkZENTU0xlbmd0aFRv
U3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNl
CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRy
LCBzdHlsZSk7Cit9CisKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0
cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0
ci0+bmFtZSgpOwpAQCAtMTE1LDE2ICsxMjUsOCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgICAgICAgICB0b1JlbmRlcklt
YWdlKHJlbmRlcmVyKCkpLT5pbWFnZVJlc291cmNlKCktPnNldENhY2hlZEltYWdlKDApOyAKICAg
ICAgICAgfQogI2VuZGlmCi0gICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSB3aWR0aEF0dHIpCi0g
ICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmVtb3ZlQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlXaWR0aCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFk
ZENTU0xlbmd0aChDU1NQcm9wZXJ0eVdpZHRoLCBhdHRyLT52YWx1ZSgpKTsKLSAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSBoZWlnaHRBdHRyKQotICAgICAgICBpZiAoYXR0ci0+dmFsdWUoKS5pc051
bGwoKSkKLSAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0KTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkQ1NTTGVuZ3RoKENTU1Byb3BlcnR5SGVpZ2h0
LCBhdHRyLT52YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHdpZHRoQXR0ciB8
fCBhdHRyTmFtZSA9PSBoZWlnaHRBdHRyKQorICAgICAgICBzZXROZWVkc0F0dHJpYnV0ZVN0eWxl
VXBkYXRlKCk7CiAgICAgZWxzZQogICAgICAgICBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShhdHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXgg
ZThmNjMzMS4uZmU4OGFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgK
QEAgLTc2LDYgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShBdHRyaWJ1dGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9y
QXR0cmlidXRlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaGFzVmlkZW8oKSBjb25zdCB7IHJldHVybiBwbGF5ZXIoKSAmJiBwbGF5ZXIoKS0+aGFz
VmlkZW8oKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAppbmRleCA4MzBhZDQ1Li4wMzVh
MTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC00OCwyOSAr
NDgsNDQgQEAgUGFzc1JlZlB0cjxNYXRoTUxFbGVtZW50PiBNYXRoTUxFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG8KICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1hdGhNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBNYXRoTUxFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCitzdGF0aWMgaW5saW5lIGJvb2wg
aXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQoreworICAg
IHJldHVybiBhdHRyLT5uYW1lKCkgPT0gbWF0aGJhY2tncm91bmRBdHRyIHx8IGF0dHItPm5hbWUo
KSA9PSBtYXRoc2l6ZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IG1hdGhjb2xvckF0dHIgfHwgYXR0
ci0+bmFtZSgpID09IGZvbnRzaXplQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gYmFja2dyb3VuZEF0
dHIgfHwgYXR0ci0+bmFtZSgpID09IGNvbG9yQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gZm9udHN0
eWxlQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gZm9udHdlaWdodEF0dHIgfHwgYXR0ci0+bmFtZSgp
ID09IGZvbnRmYW1pbHlBdHRyOworfQorCit2b2lkIE1hdGhNTEVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQog
ewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gbWF0aGJhY2tncm91bmRBdHRyKQotICAgICAgICBh
ZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7
CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwg
YXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1hdGhzaXplQXR0
cikgewogICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHRocmVlIHZhbHVlcyBvZiBtYXRoc2l6ZSBh
cmUgaGFuZGxlZCBpbiBXZWJDb3JlL2Nzcy9tYXRobWwuY3NzCiAgICAgICAgIGlmIChhdHRyLT52
YWx1ZSgpICE9ICJub3JtYWwiICYmIGF0dHItPnZhbHVlKCkgIT0gInNtYWxsIiAmJiBhdHRyLT52
YWx1ZSgpICE9ICJiaWciKQotICAgICAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlG
b250U2l6ZSwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlGb250U2l6ZSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gbWF0aGNvbG9yQXR0cikKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJv
cGVydHlDb2xvciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICAvLyBGSVhNRTogZGVwcmVjYXRl
ZCBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGxvb3NlIGluIGEgY29uZmxpY3Qgd2l0aCBhIG5vbiBk
ZXByZWNhdGVkIGF0dHJpYnV0ZQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmb250c2l6
ZUF0dHIpCi0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIGF0dHIt
PnZhbHVlKCkpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6
ZSwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJhY2tncm91
bmRBdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvciwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGNvbG9yQXR0cikKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xv
ciwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUNvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZm9u
dHN0eWxlQXR0cikKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U3R5bGUs
IGF0dHItPnZhbHVlKCkpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlG
b250U3R5bGUsIGF0dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBm
b250d2VpZ2h0QXR0cikKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2Vp
Z2h0LCBhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5Rm9udFdlaWdodCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGZvbnRmYW1pbHlBdHRyKQotICAgICAgICBhZGRDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRGYW1pbHksIGF0dHItPnZhbHVlKCkpOworICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlGb250RmFtaWx5LCBhdHRyLT52YWx1ZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
QVNTRVJUKCFpc1Jlc3BlY3RlZFByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRyKSk7CisgICAgICAg
IFN0eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHlsZSk7Cisg
ICAgfQorfQorCit2b2lkIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSog
YXR0cikKK3sKKyAgICBpZiAoaXNSZXNwZWN0ZWRQcmVzZW50YXRpb25BdHRyaWJ1dGUoYXR0cikp
CisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICBlbHNlCiAgICAg
ICAgIFN0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggMjAxZjA4My4uYmM0YTk2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC00Myw2ICs0Myw3IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6ICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc01hdGhNTEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0
cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogfTsKICAgICAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggYmYxMGExZS4uYjkzNTgwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTkxLDYgKzkxLDE2IEBAIGJv
b2wgU1ZHSW1hZ2VFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxR
dWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQog
Cit2b2lkIFNWR0ltYWdlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJpYnV0
ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCit7CisgICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShhdHRyLT5uYW1lKCkpKQorICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKKyAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKKyAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIGF0dHItPnZhbHVlKCkpOworICAgIGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKKyAgICAgICAgc3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBhdHRyLT52YWx1ZSgpKTsKK30KKwogdm9p
ZCBTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CkBAIC0xMDUsMTAgKzExNSwx
MCBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQogICAgICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpwYXJzZVByZXNlcnZlQXNwZWN0UmF0
aW8odGhpcywgYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp3aWR0aEF0dHIpIHsKICAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3Ro
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCBhdHRyLT52YWx1ZSgpLCBwYXJzZUVycm9yLCBG
b3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKLSAgICAgICAgYWRkQ1NTUHJvcGVydHkoQ1NTUHJvcGVy
dHlXaWR0aCwgYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVV
cGRhdGUoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0
QXR0cikgewogICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZUhlaWdodCwgYXR0ci0+dmFsdWUoKSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRp
dmVMZW5ndGhzKSk7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBh
dHRyLT52YWx1ZSgpKTsKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwog
ICAgIH0gZWxzZSBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGF0dHIpCiAgICAgICAgICAg
ICAgfHwgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyKQogICAgICAgICAgICAgIHx8
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggMWZiYmIwZi4uNGVkZDAwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAtNTAsNiArNTAsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQ
cm9wZXJ0eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAppbmRleCA1MThiNWIzLi5lZTc5
NWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0yOTIsMTIg
KzI5MiwxNyBAQCBib29sIFNWR1N0eWxlZEVsZW1lbnQ6OmlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBjc3NQcm9wZXJ0eVRv
VHlwZU1hcCgpLmNvbnRhaW5zKGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdTdHlsZWRFbGVtZW50
Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5
U2V0KiBzdHlsZSkKK3sKKyAgICBpbnQgcHJvcGVydHlJRCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNz
c1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CisgICAgaWYgKHBy
b3BlcnR5SUQgPiAwKQorICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgYXR0
ci0+dmFsdWUoKSk7Cit9CisKIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
QXR0cmlidXRlKiBhdHRyKQogewotICAgIGludCBwcm9wSWQgPSBTVkdTdHlsZWRFbGVtZW50Ojpj
c3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpOwotICAgIGlmIChw
cm9wSWQgPiAwKSB7Ci0gICAgICAgIGFkZENTU1Byb3BlcnR5KHByb3BJZCwgYXR0ci0+dmFsdWUo
KSk7Ci0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBpZiAoU1ZHU3R5bGVkRWxl
bWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKSA+IDAp
IHsKKyAgICAgICAgc2V0TmVlZHNBdHRyaWJ1dGVTdHlsZVVwZGF0ZSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKaW5kZXgg
M2RmNGM5My4uMDg0OThkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCkBA
IC02Niw2ICs2Niw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xs
ZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKaW5kZXggYzhkZmRjNS4uNjFkZmM4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKQEAgLTIyOCw2
ICsyMjgsMjAgQEAgYm9vbCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xh
dG9yPihhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHls
ZSkKK3sKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHItPm5hbWUoKSkpCisgICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShhdHRyLCBzdHls
ZSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpLm1hdGNoZXMoWE1MTmFtZXM6OnNwYWNlQXR0
cikpIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHBy
ZXNlcnZlU3RyaW5nLCAoInByZXNlcnZlIikpOworCisgICAgICAgIGlmIChhdHRyLT52YWx1ZSgp
ID09IHByZXNlcnZlU3RyaW5nKQorICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVQcmUpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZU5vd3Jh
cCk7CisgICAgfQorfQorCiB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0g
Tm9FcnJvcjsKQEAgLTI0MywxNCArMjU3LDggQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICB9IGVsc2UgaWYgKFNWR1Rlc3Rz
OjpwYXJzZUF0dHJpYnV0ZShhdHRyKQogICAgICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHsKICAgICB9IGVsc2UgaWYgKFNW
R0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHsKLSAgICAgICAgaWYgKGF0dHItPm5h
bWUoKS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIpKSB7Ci0gICAgICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgcHJlc2VydmVTdHJpbmcsICgicHJlc2Vy
dmUiKSk7Ci0KLSAgICAgICAgICAgIGlmIChhdHRyLT52YWx1ZSgpID09IHByZXNlcnZlU3RyaW5n
KQotICAgICAgICAgICAgICAgIGFkZENTU1Byb3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwg
Q1NTVmFsdWVQcmUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZENTU1By
b3BlcnR5KENTU1Byb3BlcnR5V2hpdGVTcGFjZSwgQ1NTVmFsdWVOb3dyYXApOwotICAgICAgICB9
CisgICAgICAgIGlmIChhdHRyLT5uYW1lKCkubWF0Y2hlcyhYTUxOYW1lczo6c3BhY2VBdHRyKSkK
KyAgICAgICAgICAgIHNldE5lZWRzQXR0cmlidXRlU3R5bGVVcGRhdGUoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuaAppbmRleCBkNDViZWE2Li43NmQyODI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCkBAIC0xMDQsNiArMTA0LDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoQXR0cmlidXRl
KiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBz
ZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7Cg==
</data>
<flag name="review"
          id="128488"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>