<?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>53442</bug_id>
          
          <creation_ts>2011-01-31 11:58:14 -0800</creation_ts>
          <short_desc>SVGAnimateElement needs information about the animated attribute type</short_desc>
          <delta_ts>2011-02-10 17:17:05 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>thakis</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>342724</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-31 11:58:14 -0800</bug_when>
    <thetext>SVGAnimateElement needs information about the animated attribute type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342760</commentid>
    <comment_count>1</comment_count>
      <attachid>80672</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-31 12:44:32 -0800</bug_when>
    <thetext>Created attachment 80672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343106</commentid>
    <comment_count>2</comment_count>
      <attachid>80735</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-01 03:32:55 -0800</bug_when>
    <thetext>Created attachment 80735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343129</commentid>
    <comment_count>3</comment_count>
      <attachid>80735</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-01 04:14:16 -0800</bug_when>
    <thetext>Comment on attachment 80735
Patch

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

Still some work todo:

&gt; Source/WebCore/ChangeLog:8
&gt; +        For a type specific animation we need to know the property type of an attribute. A simple static mapping between

For animations, we need to know the SVG property type for a XML attribute.

&gt; Source/WebCore/ChangeLog:10
&gt; +        x can be a SVGNumberList, a SVGNumber or SVGLength. So we have to ask every target element, if it supports

or a SVGLength.

&gt; Source/WebCore/ChangeLog:11
&gt; +        the animated attribute and of which type it is. Just for CSS properties we can use biunique static mappings between

s/beiunique static/bijective/?

&gt; Source/WebCore/ChangeLog:12
&gt; +        the name and the type. This is done in a static map in SVGStyledElement. All other mappings are stored in a local

s/in a/with a/

&gt; Source/WebCore/svg/SVGAElement.cpp:112
&gt; +    HashMap&lt;QualifiedName, AnimatedAttributeType&gt;&amp; animatablePropertyMap = this-&gt;animatablePropertyMap();

This needs a typedef, so we can use
AttributeToPropertyTypeMap&amp; map = this-&gt;animatablePropertyMap();
And we should always use
ASSERT(map.isEmpty())
to document the pre-condition of this function call.

&gt; Source/WebCore/svg/SVGElement.h:138
&gt; +    HashMap&lt;QualifiedName, AnimatedAttributeType&gt; m_animatedAttributeMap;

I think this should go into SVGElementRareData, to save the overhead for static non-animated files.

&gt; Source/WebCore/svg/SVGFEMergeNodeElement.h:40
&gt; +    virtual void ensureAnimatablePropertyMap();

Maybe we should rather name it &quot;fillAttributeToPropertyTypeMap()&quot; ? ensure sounds so ... flakey.

&gt; Source/WebCore/svg/SVGStyledLocatableElement.cpp:65
&gt; +void SVGStyledLocatableElement::ensureAnimatablePropertyMap()
&gt; +{
&gt; +    SVGStyledElement::ensureAnimatablePropertyMap();
&gt; +}

Useless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343194</commentid>
    <comment_count>4</comment_count>
      <attachid>80757</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-01 06:39:05 -0800</bug_when>
    <thetext>Created attachment 80757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343215</commentid>
    <comment_count>5</comment_count>
      <attachid>80757</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-01 07:29:53 -0800</bug_when>
    <thetext>Comment on attachment 80757
Patch

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

Almost there, still r- though.

&gt; Source/WebCore/svg/SVGAnimateElement.cpp:91
&gt; +    AnimatedAttributeType type = targetElement()-&gt;animatedPropertyTypeForAttribute(QualifiedName(nullAtom, attribute, nullAtom));
&gt;      // FIXME: We need a full property table for figuring this out reliably.
&gt; -    if (hasTagName(SVGNames::animateColorTag))
&gt; +    if (hasTagName(SVGNames::animateColorTag) || type == AnimatedColor)
&gt;          return ColorProperty;

You don&apos;t need to ask the targetElement(), if hasTagNames(SVGNames::animateColorTag) is true. Make it a early exit shortcut.

&gt; Source/WebCore/svg/SVGCircleElement.cpp:139
&gt; +    AttributeToPropertyTypeMap&amp; animatablePropertyMap = this-&gt;animatablePropertyMap();

s/animatablePropertyMap/attributeToPropertyTypeMap/ ?

&gt; Source/WebCore/svg/SVGElement.h:140
&gt; +    AttributeToPropertyTypeMap m_animatedAttributeMap;

Obsolete, please remove.

&gt; Source/WebCore/svg/SVGElementRareData.h:60
&gt; +    HashMap&lt;QualifiedName, AnimatedAttributeType&gt;&amp; animatedAttributeMap() { return m_animatedAttributeMap; }

Use the typdef.

&gt; Source/WebCore/svg/SVGElementRareData.h:73
&gt; +    HashMap&lt;QualifiedName, AnimatedAttributeType&gt; m_animatedAttributeMap;

Ditto.

&gt; Source/WebCore/svg/SVGGlyphElement.cpp:83
&gt; +void SVGGlyphElement::svgAttributeChanged(const QualifiedName&amp; attrName)
&gt; +{
&gt; +    if (attrName == SVGNames::dAttr)
&gt; +        invalidateGlyphCache();
&gt; +}

This seems unrelated.

&gt; Source/WebCore/svg/SVGGlyphElement.h:120
&gt; +    virtual void svgAttributeChanged(const QualifiedName&amp;);

Ditto.

&gt; Source/WebCore/svg/SVGStyledElement.cpp:204
&gt; +AttributeToPropertyTypeMap&amp; SVGStyledElement::cssPropertyToTypeMap()

Make it a static inline.

&gt; Source/WebCore/svg/SVGStyledElement.h:86
&gt; +    AttributeToPropertyTypeMap&amp; cssPropertyToTypeMap();

No need for this, if you convert it to be a static inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343252</commentid>
    <comment_count>6</comment_count>
      <attachid>80765</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-01 09:11:28 -0800</bug_when>
    <thetext>Created attachment 80765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344833</commentid>
    <comment_count>7</comment_count>
      <attachid>80765</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-03 10:43:30 -0800</bug_when>
    <thetext>Comment on attachment 80765
Patch

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

Ok, I&apos;m stopping the review here, as I think the general concept is wrong, after thinking about it again.
We just need a map between eg. SVGRectElements property types for any attribute it supports.
When storing this information per element in eg. SVGElement or SVGElementRareData (aka. storing the HashMap), we&apos;re basically storing the same information for _each_ rect in the DOM.
Consider 100 &lt;rect&gt; elements, each holds such a HashMap...

We need to discuss this a bit further.

&gt; Source/WebCore/ChangeLog:11
&gt; +        the animated attribute and of which type it is. Just for CSS properties we can use an explicite static mappings between

s/Just for/For/. s/explicite/explicit/

&gt; Source/WebCore/ChangeLog:13
&gt; +        HashMap in SVGElement. This map gets filled once with the function fillAttributeToPropertyTypeMap and needs to be

s/SVGElement/SVGElementRareData/

&gt; Source/WebCore/ChangeLog:14
&gt; +        included in every SVG element.

s/included/implemented/

&gt; Source/WebCore/ChangeLog:16
&gt; +        No change of functionality, so no new test cases.

Isn&apos;t it possible now to animate types, that didn&apos;t work before?

&gt; Source/WebCore/svg/SVGFontElement.cpp:65
&gt; +void SVGFontElement::fillAttributeToPropertyTypeMap()
&gt; +{
&gt; +    SVGStyledElement::fillAttributeToPropertyTypeMap();
&gt; +}
&gt; +

No need for this function, if you&apos;re not doing anything? Is the implementation missing so far?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344842</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-03 10:49:12 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 80765 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80765&amp;action=review
&gt; 
&gt; Ok, I&apos;m stopping the review here, as I think the general concept is wrong, after thinking about it again.
&gt; We just need a map between eg. SVGRectElements property types for any attribute it supports.
&gt; When storing this information per element in eg. SVGElement or SVGElementRareData (aka. storing the HashMap), we&apos;re basically storing the same information for _each_ rect in the DOM.
&gt; Consider 100 &lt;rect&gt; elements, each holds such a HashMap...
Totally agree. Unsure why I did not see it on the first patch :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347683</commentid>
    <comment_count>9</comment_count>
      <attachid>81693</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-08 14:26:18 -0800</bug_when>
    <thetext>Created attachment 81693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348304</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-09 09:29:32 -0800</bug_when>
    <thetext>Upload a new patch in a few moments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348346</commentid>
    <comment_count>11</comment_count>
      <attachid>81828</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-09 10:16:00 -0800</bug_when>
    <thetext>Created attachment 81828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349034</commentid>
    <comment_count>12</comment_count>
      <attachid>81974</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-10 06:52:59 -0800</bug_when>
    <thetext>Created attachment 81974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349109</commentid>
    <comment_count>13</comment_count>
      <attachid>81974</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-02-10 09:05:22 -0800</bug_when>
    <thetext>Comment on attachment 81974
Patch

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

r=me with some fixups:

&gt; Source/WebCore/ChangeLog:9
&gt; +        attribute name and a type is not possible, since one attribute name can be bounded to different property types:

s/bounded/bound/

&gt; Source/WebCore/ChangeLog:11
&gt; +        the animated attribute and of which type it is. Just for CSS properties we can share an explicite mappings between

s/explicite mappings/explicit mapping/

&gt; Source/WebCore/ChangeLog:13
&gt; +        HashMaps for all SVG elements with animated properties. These maps get filled once with the function fillAttributeToPropertyTypeMap

with the function &lt;abc&gt; -&gt; with the &lt;abc&gt; function.

&gt; Source/WebCore/svg/SVGElement.h:92
&gt; +    void fillAttributeToPropertyTypeMap(AttributeToPropertyTypeMap&amp;) { }

This one is not needed, eh? Please remove it.

&gt; Source/WebCore/svg/SVGStyledElement.cpp:273
&gt; +    if (!cssPropertyTypeMap.contains(attrName))
&gt; +        return AnimatedUnknown;
&gt; +    return cssPropertyTypeMap.get(attrName);

I&apos;d rather write:
if (cssPropertyTypeMap.contains(attrName))
    return css...get(attrName)p;
return AnimatedUnknown;

&gt; Source/WebCore/svg/SVGStyledElement.cpp:278
&gt; +    SVGElement::fillAttributeToPropertyTypeMap(attributeToPropertyTypeMap);

This is not needed, please remove it (even for consistency, it would be lame, to call an empty function in sVGElement here)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349209</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-02-10 11:17:47 -0800</bug_when>
    <thetext>Committed r78249: &lt;http://trac.webkit.org/changeset/78249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349403</commentid>
    <comment_count>15</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-02-10 14:51:15 -0800</bug_when>
    <thetext>Hi,

this patch caused this clang warning:

In file included from out/Debug/obj/gen/webkit/bindings/V8DerivedSources3.cpp:90:
In file included from out/Debug/obj/gen/webcore/bindings/V8SVGCircleElement.cpp:22:
In file included from out/Debug/obj/gen/webkit/bindings/V8SVGCircleElement.h:26:
In file included from third_party/WebKit/Source/WebCore/svg/SVGCircleElement.h:29:
In file included from third_party/WebKit/Source/WebCore/svg/SVGStyledTransformableElement.h:26:
In file included from third_party/WebKit/Source/WebCore/svg/SVGStyledLocatableElement.h:26:
third_party/WebKit/Source/WebCore/svg/SVGStyledElement.h:71:10:error: &apos;WebCore::SVGStyledElement::fillAttributeToPropertyTypeMap&apos; hides overloaded virtual function [-Woverloaded-virtual]
    void fillAttributeToPropertyTypeMap(AttributeToPropertyTypeMap&amp;);
         ^
In file included from out/Debug/obj/gen/webkit/bindings/V8DerivedSources3.cpp:90:
In file included from out/Debug/obj/gen/webcore/bindings/V8SVGCircleElement.cpp:22:
In file included from out/Debug/obj/gen/webkit/bindings/V8SVGCircleElement.h:26:
In file included from third_party/WebKit/Source/WebCore/svg/SVGCircleElement.h:25:
In file included from third_party/WebKit/Source/WebCore/svg/SVGAnimatedBoolean.h:24:
In file included from third_party/WebKit/Source/WebCore/svg/properties/SVGAnimatedStaticPropertyTearOff.h:24:
In file included from third_party/WebKit/Source/WebCore/svg/properties/SVGAnimatedProperty.h:26:
third_party/WebKit/Source/WebCore/svg/SVGElement.h:93:18: note: hidden overloaded virtual function &apos;WebCore::SVGElement::fillAttributeToPropertyTypeMap&apos; declared here
    virtual void fillAttributeToPropertyTypeMap() { }
                 ^
1 error generated.


I&apos;m not sure if SVGStyledElement::fillAttributeToPropertyTypeMap is supposed to override SVGElement::fillAttributeToPropertyTypeMap…if not, I&apos;d recommend renaming the method in the subclass. Having an overload of a virtual method of a base class is confusing at best.

(I was just done with removing all of these warnings :-/)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349525</commentid>
    <comment_count>16</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-02-10 17:17:05 -0800</bug_when>
    <thetext>I filed bug 54259 for the warning.

(sorry, was afk when you pinged me on irc. resolving this tomorrow works for me.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80672</attachid>
            <date>2011-01-31 12:44:32 -0800</date>
            <delta_ts>2011-02-01 03:32:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53442-20110131214424.patch</filename>
            <type>text/plain</type>
            <size>113296</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MTQ5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjE1IEBACisyMDExLTAxLTMxICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQgbmVlZHMgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGFuaW1hdGVkIGF0dHJpYnV0ZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQ0MgorCisgICAgICAgIEZvciBhIHR5cGUgc3BlY2lm
aWMgYW5pbWF0aW9uIHdlIG5lZWQgdG8ga25vdyB0aGUgcHJvcGVydHkgdHlwZSBvZiBhbiBhdHRy
aWJ1dGUuIEEgc2ltcGxlIHN0YXRpYyBtYXBwaW5nIGJldHdlZW4KKyAgICAgICAgYXR0cmlidXRl
IG5hbWUgYW5kIGEgdHlwZSBpcyBub3QgcG9zc2libGUsIHNpbmNlIG9uZSBhdHRyaWJ1dGUgbmFt
ZSBjYW4gYmUgYm91bmRlZCB0byBkaWZmZXJlbnQgcHJvcGVydHkgdHlwZXM6CisgICAgICAgIHgg
Y2FuIGJlIGEgU1ZHTnVtYmVyTGlzdCwgYSBTVkdOdW1iZXIgb3IgU1ZHTGVuZ3RoLiBTbyB3ZSBo
YXZlIHRvIGFzayBldmVyeSB0YXJnZXQgZWxlbWVudCwgaWYgaXQgc3VwcG9ydHMKKyAgICAgICAg
dGhlIGFuaW1hdGVkIGF0dHJpYnV0ZSBhbmQgb2Ygd2hpY2ggdHlwZSBpdCBpcy4gSnVzdCBmb3Ig
Q1NTIHByb3BlcnRpZXMgd2UgY2FuIHVzZSBiaXVuaXF1ZSBzdGF0aWMgbWFwcGluZ3MgYmV0d2Vl
bgorICAgICAgICB0aGUgbmFtZSBhbmQgdGhlIHR5cGUuIFRoaXMgaXMgZG9uZSBpbiBhIHN0YXRp
YyBtYXAgaW4gU1ZHU3R5bGVkRWxlbWVudC4gQWxsIG90aGVyIG1hcHBpbmdzIGFyZSBzdG9yZWQg
aW4gYSBsb2NhbAorICAgICAgICBIYXNoTWFwIGluIFNWR0VsZW1lbnQuIFRoaXMgbWFwIGdldHMg
ZmlsbGVkIG9uY2Ugd2l0aCB0aGUgZnVuY3Rpb24gZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
IGFuZCBuZWVkcyB0byBiZQorICAgICAgICBpbmNsdWRlZCBpbiBldmVyeSBTVkcgZWxlbWVudC4K
KworICAgICAgICBObyBjaGFuZ2Ugb2YgZnVuY3Rpb25hbGl0eSwgc28gbm8gbmV3IHRlc3QgY2Fz
ZXMuCisKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3Zn
L1NWR0FFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50Ojpl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25F
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToK
KyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50Ojpl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6ZW5zdXJl
QW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdEZWZzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdEZWZzRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBz
dmcvU1ZHRGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0
ZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6OmFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdFbGxp
cHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6ZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjplbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjplbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZW5zdXJl
QW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRnVuY0FFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUZ1bmNBRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVGdW5jQkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRnVuY0JFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdGRUZ1bmNHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGdW5j
R0VsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NW
R0ZFRnVuY1JFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZ1bmNSRWxlbWVudDo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjplbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxp
Z2h0RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6ZW5zdXJlQW5p
bWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5
TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZz
ZXRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVQb2ludExpZ2h0RWxlbWVudDo6ZW5zdXJlQW5p
bWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJs
ZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmls
dGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjplbnN1
cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RWxlbWVudDo6ZW5zdXJlQW5pbWF0
YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50OjplbnN1cmVBbmlt
YXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2x5cGhF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dseXBo
RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZH
R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdJbWFn
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6Cisg
ICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTVBhdGhFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJv
cGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdNYXJr
ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgor
ICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6ZW5zdXJlQW5pbWF0
YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
dGVybkVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3Zn
L1NWR1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVy
dHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAq
IHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OmVuc3VyZUFuaW1h
dGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxl
bWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZH
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NjcmlwdEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6
CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3Rv
cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OmVuc3VyZUFu
aW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlUb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVy
dHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5
bGVkTG9jYXRhYmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAg
ICAgICAgKiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHU3dpdGNoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTd2l0Y2hFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdTd2l0
Y2hFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdU
UmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6ZW5zdXJl
QW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50OjplbnN1
cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9T
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVBy
b3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1l
bnQuaDoKKwogMjAxMS0wMS0zMSAgRGFuIFdpbnNoaXAgIDxkYW53QGdub21lLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwxNiBAQCB2b2lk
IFNWR0FFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvCiAgICAgfQogfQogCit2b2lkIFNW
R0FFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKwor
ICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0
YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5p
bWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6dGFyZ2V0QXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
OjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgQW5pbWF0ZWRCb29sZWFuKTsKK30KKwog
dm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwog
CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw2ICs1NCwxMyBAQCB2b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c3luY2hyb25p
emVQcm9wCiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwogfQogCit2b2lkIFNWR0FsdEdseXBo
RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOworfQorCiB2b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c2V0R2x5cGhSZWYoY29uc3Qg
QXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSBOT19NT0RJRklD
QVRJT05fQUxMT1dFRF9FUlI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlw
aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworCiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihO
b2RlKikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJD
b2xvckRpc3RhbmNlLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAi
UXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKQEAgLTg0LDE1ICs4NSwxNCBA
QCBzdGF0aWMgYm9vbCBwYXJzZU51bWJlclZhbHVlQW5kVW5pdChjb25zCiAKIFNWR0FuaW1hdGVF
bGVtZW50OjpQcm9wZXJ0eVR5cGUgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZVByb3BlcnR5
VHlwZShjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSkgY29uc3QKIHsKKyAgICBBbmltYXRlZEF0dHJp
YnV0ZVR5cGUgdHlwZSA9IHRhcmdldEVsZW1lbnQoKS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JB
dHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgYXR0cmlidXRlLCBudWxsQXRvbSkpOwog
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgZnVsbCBwcm9wZXJ0eSB0YWJsZSBmb3IgZmlndXJpbmcg
dGhpcyBvdXQgcmVsaWFibHkuCi0gICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVD
b2xvclRhZykpCisgICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykg
fHwgdHlwZSA9PSBBbmltYXRlZENvbG9yKQogICAgICAgICByZXR1cm4gQ29sb3JQcm9wZXJ0eTsK
LSAgICBpZiAoYXR0cmlidXRlID09ICJkIikKKyAgICBpZiAodHlwZSA9PSBBbmltYXRlZFBhdGgp
CiAgICAgICAgIHJldHVybiBQYXRoUHJvcGVydHk7Ci0gICAgaWYgKGF0dHJpYnV0ZSA9PSAicG9p
bnRzIikKKyAgICBpZiAodHlwZSA9PSBBbmltYXRlZFBvaW50cykKICAgICAgICAgcmV0dXJuIFBv
aW50c1Byb3BlcnR5OwotICAgIGlmIChhdHRyaWJ1dGUgPT0gImNvbG9yIiB8fCBhdHRyaWJ1dGUg
PT0gImZpbGwiIHx8IGF0dHJpYnV0ZSA9PSAic3Ryb2tlIikKLSAgICAgICAgcmV0dXJuIENvbG9y
UHJvcGVydHk7CiAgICAgcmV0dXJuIE51bWJlclByb3BlcnR5OwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgwLDYgKzE4MCwxMyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwogfQogCit2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5
TWFwKCk7CisKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAoKS5zZXQoU1ZHTmFtZXM6OmV4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBBbmltYXRlZEJvb2xlYW4pOworfQorCiBmbG9hdCBT
VkdBbmltYXRpb25FbGVtZW50OjpnZXRTdGFydFRpbWUoKSBjb25zdAogewogICAgIHJldHVybiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGludGVydmFsQmVnaW4oKS52YWx1ZSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05Myw2ICs5Myw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmly
dHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3Vs
YXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiBieVN0cmluZykgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50
LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsMTcgQEAgdm9pZCBTVkdDaXJj
bGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25p
emVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdDaXJjbGVFbGVtZW50
OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBI
YXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAg
IGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnJBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Cit9CisKIHZvaWQg
U1ZHQ2lyY2xlRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFT
U0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVt
ZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisKICAg
ICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2
ICsxMDIsMTUgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcAogICAg
ICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0K
IAordm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgp
Cit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVBy
b3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6Y2xp
cFBhdGhVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBBbmlt
YXRlZEJvb2xlYW4pOworfQorCiB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVy
Q2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAs
IGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDYgKzExMiwyMCBAQCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50CiAg
ICAgICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7CiB9CiAKK3ZvaWQgU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAg
U1ZHRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisKKyAgICBIYXNoTWFw
PFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnR5cGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIEFu
aW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6c2xvcGVBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6aW50ZXJjZXB0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsIEFuaW1hdGVkTnVt
YmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpleHBvbmVudEF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjpvZmZzZXRBdHRyLCBBbmltYXRlZE51bWJlcik7Cit9CisKIENvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb24gU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnRyYW5zZmVyRnVu
Y3Rpb24oKSBjb25zdAogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gZnVuYzsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw2ICszOCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1h
dGFibGVQcm9wZXJ0eU1hcCgpOwogICAgIAogcHJpdmF0ZToKICAgICAvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxNyBAQCB2b2lkIFNWR0N1cnNv
ckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgfQogfQogCit2b2lkIFNWR0N1cnNvckVs
ZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHRWxlbWVudDo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5h
bWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMt
PmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Cit9CisKIHZvaWQgU1ZHQ3Vyc29yRWxlbWVu
dDo6YWRkQ2xpZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgbV9jbGllbnRzLmFkZChl
bGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjYsNiArNjYsMTMgQEAgdm9pZCBTVkdEZWZzRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQog
ICAgIGVsc2UgaWYgKFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKICAgICAg
ICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9Cisg
ICAgCit2b2lkIFNWR0RlZnNFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQor
eworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJv
cGVydHlNYXAoKTsKKworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpLnNldChTVkdOYW1lczo6
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Cit9CiAKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwg
dm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogICAgIC8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlY2xhcmF0aW9ucwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU2LDYgKzI1NiwxOCBAQCB2b2lkIFNWR0VsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0CiAgICAgICAgIFN0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKGF0dHIpOwogfQogCitBbmltYXRlZEF0dHJpYnV0ZVR5cGUgU1ZHRWxlbWVudDo6YW5pbWF0
ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
Cit7CisgICAgaWYgKG1fYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuaXNFbXB0eSgpKQorICAgICAgICBl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBpZiAobV9hbmltYXRlZEF0dHJpYnV0
ZU1hcC5jb250YWlucyhhdHRyTmFtZSkpCisgICAgICAgIHJldHVybiBtX2FuaW1hdGVkQXR0cmli
dXRlTWFwLmdldChhdHRyTmFtZSk7CisgICAgaWYgKGlzU3R5bGVkKCkpCisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4odGhpcyktPmFuaW1hdGVkUHJvcGVydHlU
eXBlRm9yQ1NTUHJvcGVydHkoYXR0ck5hbWUpOworCisgICAgcmV0dXJuIEFuaW1hdGVkVW5rbm93
bjsKK30KKwogYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKQog
ewogICAgIE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDMwIEBACiAjaWYgRU5BQkxFKFNWRykKICNp
bmNsdWRlICJTVkdMb2NhdGFibGUuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIEFuaW1h
dGVkQXR0cmlidXRlVHlwZSB7CisgICAgQW5pbWF0ZWRBbmdsZSwKKyAgICBBbmltYXRlZEJvb2xl
YW4sCisgICAgQW5pbWF0ZWRDb2xvciwKKyAgICBBbmltYXRlZEVudW1lcmF0aW9uLAorICAgIEFu
aW1hdGVkSW50ZWdlciwKKyAgICBBbmltYXRlZExlbmd0aCwKKyAgICBBbmltYXRlZExlbmd0aExp
c3QsCisgICAgQW5pbWF0ZWROdW1iZXIsCisgICAgQW5pbWF0ZWROdW1iZXJMaXN0LAorICAgIEFu
aW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsCisgICAgQW5pbWF0ZWRQYXRoLAorICAgIEFuaW1h
dGVkUG9pbnRzLAorICAgIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywKKyAgICBBbmltYXRl
ZFJlY3QsCisgICAgQW5pbWF0ZWRTdHJpbmcsCisgICAgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LAor
ICAgIEFuaW1hdGVkVW5rbm93bgorfTsKKwogY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgU1ZHQ3Vyc29yRWxlbWVudDsKQEAgLTY0LDYgKzg1LDExIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIHsgfQogCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmlt
YXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAoKSB7IHJldHVybiBtX2Fu
aW1hdGVkQXR0cmlidXRlTWFwOyB9CisgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGFuaW1hdGVk
UHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgIHZp
cnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKSB7IH0KKwogICAgIHZvaWQg
c2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUoYm9vbCBzZW5kUGFyZW50TG9hZEV2ZW50cyA9IGZh
bHNlKTsKIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBwbGVtZW50YWxUcmFuc2Zv
cm0oKSB7IHJldHVybiAwOyB9CkBAIC0xMDgsNiArMTM0LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlbW92ZUluc3RhbmNlTWFwcGluZyhTVkdFbGVtZW50SW5zdGFuY2UqKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKKworICAgIEhhc2hNYXA8UXVh
bGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiBtX2FuaW1hdGVkQXR0cmlidXRlTWFw
OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsMTggQEAgdm9pZCBTVkdFbGxpcHNl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZQogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFz
aE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJv
cGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpyeEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpyeUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgQW5pbWF0ZWRCb29sZWFuKTsKK30K
Kwogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAog
ewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxsaXBzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk3LDYgKzk3LDE2IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGUKICAgICAgICAgc3luY2hyb25pemVJbjIoKTsKIH0KIAordm9pZCBTVkdGRUJsZW5kRWxlbWVu
dDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAg
IAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5p
bWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aW4yQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om1v
ZGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
ZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRl
ckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsMTYgQEAgdm9pZCBTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6c3luY2hyb25pegogICAgICAgICBzeW5jaHJvbml6ZVZhbHVl
cygpOwogfQogCit2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjplbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFs
aWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAg
PSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlN
YXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6dmFsdWVzQXR0ciwgQW5p
bWF0ZWROdW1iZXJMaXN0KTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBG
aWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVBy
b3BlcnR5TWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNiArNjQsMTMgQEAgdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
c3luYwogICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwogfQogCit2b2lkIFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZW5zdXJlQW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CisgICAgCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwKCkuc2V0KFNWR05hbWVz
OjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIq
KTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNyw2ICsxMjcsMjAgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
OnN5bmNocm9uaXplUAogICAgICAgICBzeW5jaHJvbml6ZUs0KCk7CiB9CiAKK3ZvaWQgU1ZHRkVD
b21wb3NpdGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZW5zdXJlQW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJp
YnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVy
dHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
OjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjprMUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjprMkF0dHIsIEFuaW1hdGVk
TnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjprM0F0dHIs
IEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
OjprNEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw2ICsxNTksMjMgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cgog
ICAgICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAg
ICAKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAg
IGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om9yZGVyQXR0ciwg
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpkaXZpc29yQXR0ciwgQW5pbWF0
ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmJpYXNB
dHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdO
YW1lczo6dGFyZ2V0WEF0dHIsIEFuaW1hdGVkSW50ZWdlcik7CisgICAgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6dGFyZ2V0WUF0dHIsIEFuaW1hdGVkSW50ZWdlcik7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBBbmltYXRl
ZEVudW1lcmF0aW9uKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpr
ZXJuZWxVbml0TGVuZ3RoQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIEFu
aW1hdGVkQm9vbGVhbik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwg
RmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWls
ZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw2ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmlt
YXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiBvcmRlclhJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiwxNyBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudDo6c3luY2hyCiAgICAgfQogfQogCit2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1h
cCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFw
KCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZGlm
ZnVzZUNvbnN0YW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0
ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCog
aW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCShyZXZp
c2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsMTggQEAgdm9pZCBTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN5bmNocgogICAgICAgICBzeW5jaHJvbml6ZVNjYWxlKCk7
CiB9CiAKK3ZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjplbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFs
aWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAg
PSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlN
YXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIs
IEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZH
TmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpzY2FsZUF0dHIsIEFuaW1hdGVkTnVt
YmVyKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBm
aWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw2ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50
LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU1ZHRkVGdW5jQUVsZW1lbnQgOiBwdWJsaWMgU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRnVu
Y0FFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAg
dmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpIHsgfQogCiBwcml2YXRl
OgogICAgIFNWR0ZFRnVuY0FFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmgJKHJldmlzaW9uIDc2
OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU1ZHRkVG
dW5jQkVsZW1lbnQgOiBwdWJsaWMgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRnVuY0JFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGVu
c3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpIHsgfQogCiBwcml2YXRlOgogICAgIFNWR0ZFRnVu
Y0JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU1ZHRkVGdW5jR0VsZW1lbnQgOiBw
dWJsaWMgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNWR0ZFRnVuY0dFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpIHsgfQogCiBwcml2YXRlOgogICAgIFNWR0ZFRnVuY0dFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRnVuY1JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RnVuY1JFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRnVuY1JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU1ZHRkVGdW5jUkVsZW1lbnQgOiBwdWJsaWMgU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR0ZFRnVuY1JFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpIHsg
fQogCiBwcml2YXRlOgogICAgIFNWR0ZFRnVuY1JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsx
MDYsMTUgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN5bmNocm9uaQogICAgIH0g
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKICAgICAgICAgc3luY2hyb25p
emVJbjEoKTsKIH0KKyAgICAKK3ZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjplbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFz
aE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJv
cGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLCBBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKK30KIAogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVy
QnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRh
YmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBzdGREZXZpYXRpb25YSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2
ICsxMjEsMTYgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZQogICAg
IGVsc2UgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKQogICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KTsKIH0KKyAgICAKK3ZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNoTWFwPFF1YWxpZmll
ZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRo
aXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5z
ZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW8pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoWExpbmtOYW1lczo6aHJl
ZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgQW5pbWF0ZWRCb29sZWFuKTsK
K30KIAogdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM5LDYgKzEzOSwyMyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlCiAgICAgICAgIHN5bmNocm9uaXplTGltaXRpbmdDb25lQW5nbGUoKTsKIH0KIAordm9pZCBT
VkdGRUxpZ2h0RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBT
VkdFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKworICAgIEhhc2hNYXA8
UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5
TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6YXppbXV0aEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjplbGV2YXRpb25BdHRyLCBBbmltYXRl
ZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eEF0dHIs
IEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
Ojp5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OnpBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRYQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsIEFuaW1hdGVk
TnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpwb2ludHNB
dFpBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChT
VkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKK30KKwogdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVy
Q2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxk
Q291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1
YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9y
ZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9
IDApOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTMgQEAgdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZQogICAgIAogICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQorICAgIAordm9pZCBT
VkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7Cisg
ICAgU1ZHRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAoKS5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OworfQogCiB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAg
ICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDYgKzExOCwxNiBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN5
bmNocm9uaXplCiAgICAgfQogfQogCit2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmVuc3Vy
ZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBI
YXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAg
IGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6
cmFkaXVzQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Cit9CisKIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZl
Y3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaXVzWElkZW50aWZpZXIoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Nyw2ICs4NywxNiBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3luY2hyb25p
emVQcm9wCiAgICAgICAgIHN5bmNocm9uaXplSW4xKCk7CiB9CiAKK3ZvaWQgU1ZHRkVPZmZzZXRF
bGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7
CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+
JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpkeEF0dHIs
IEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
OjpkeUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRl
ciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJC
dWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVPZmZzZXRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgp
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGlnaHRFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCA6IHB1YmxpYyBTVkdGRUxpZ2h0RWxlbWVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVQb2ludExpZ2h0RWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIHZpcnR1YWwg
dm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKSB7IH0KIAogcHJpdmF0ZToKICAgICBT
VkdGRVBvaW50TGlnaHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcs
MTggQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzeW5jaAogICAgIH0KIH0K
IAordm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJv
cGVydHlNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZp
ZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0
aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAu
c2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJv
cGVydHlNYXAuc2V0KFNWR05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyRXhw
b25lbnRBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBBbmlt
YXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKK30KKwogUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4g
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0cygpIGNvbnN0CiB7CiAgICAg
Zm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNp
YmxpbmcoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2
OSwxMyBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVyCiAgICAgICAg
IHN5bmNocm9uaXplSW4xKCk7CiB9CiAKK3ZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6ZW5zdXJlQW5p
bWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworCisgICAgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwKCkuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30K
KwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmlt
YXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVU
dXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiAr
MTI4LDE4IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3luY2hyb25pemUKICAgICAg
ICAgc3luY2hyb25pemVOdW1PY3RhdmVzKCk7CiB9CiAKK3ZvaWQgU1ZHRkVUdXJidWxlbmNlRWxl
bWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwor
ICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYg
YW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIs
IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cC5zZXQoU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyLCBBbmltYXRlZEludGVnZXIpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnNlZWRBdHRyLCBBbmltYXRlZE51bWJl
cik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6c3RpdGNoVGlsZXNB
dHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJC
dWlsZGVyKiwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgaWYgKGJhc2VGcmVxdWVuY3lYKCkgPCAw
IHx8IGJhc2VGcmVxdWVuY3lZKCkgPCAwKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwyMiBA
QCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVyCiAgICAgICAgIHN5bmNo
cm9uaXplSHJlZigpOwogfQogCit2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJs
ZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRl
ZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxl
UHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpm
aWx0ZXJVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJh
dGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZH
TmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpmaWx0ZXJSZXNBdHRyLCBBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFhMaW5r
TmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhbmltYXRhYmxlUHJv
cGVydHlNYXAuc2V0KFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgQW5p
bWF0ZWRCb29sZWFuKTsKK30KKwogdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJD
aGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwg
Y2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
aAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVm
b3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRh
ID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsMTggQEAgdm9p
ZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIGZpbHRlckVmZmVjdC0+
c2V0RWZmZWN0Qm91bmRhcmllcyhlZmZlY3RCQm94KTsKIH0KIAordm9pZCBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7
CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7Cisg
ICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBh
bmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6d2lk
dGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChT
VkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnJlc3VsdEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwog
UmVuZGVyT2JqZWN0KiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSh0aGlzKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw2ICs1MCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJl
QW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBO
b2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIGlu
bGluZSB2b2lkIGludmFsaWRhdGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDEzIEBAIHZvaWQgU1ZHRm9udEVs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCk7CiB9CiAKK3ZvaWQgU1ZHRm9udEVsZW1lbnQ6OmVuc3VyZUFuaW1h
dGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZW5zdXJlQW5pbWF0
YWJsZVByb3BlcnR5TWFwKCk7CisKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAoKS5zZXQoU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBBbmltYXRlZEJvb2xlYW4pOwor
fQorCiB2b2lkIFNWR0ZvbnRFbGVtZW50OjppbnZhbGlkYXRlR2x5cGhDYWNoZSgpCiB7CiAgICAg
aWYgKG1faXNHbHlwaENhY2hlVmFsaWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZH
Rm9udEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0gICAg
CiAKICAgICB2b2lkIGVuc3VyZUdseXBoQ2FjaGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDE5IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQ6OnN5bmNocm9uaXoKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0
aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmVuc3Vy
ZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8
UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5
TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRh
YmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAg
IGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFhMaW5r
TmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1hdGVk
Qm9vbGVhbik7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KHRoaXMpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDc2
OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0
eWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05Myw2ICs5MywxMyBAQCB2b2lkIFNWR0dFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNv
CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUp
OwogfQogCit2b2lkIFNWR0dFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQor
eworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJv
cGVydHlNYXAoKTsKKworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpLnNldChTVkdOYW1lczo6
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Cit9CisKIFJl
bmRlck9iamVjdCogU1ZHR0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIC8vIFNWRyAxLjEgdGVzdHN1aXRlIGV4cGxp
Y2l0ZWx5IHVzZXMgY29uc3RydWN0cyBsaWtlIDxnIGRpc3BsYXk9Im5vbmUiPjxsaW5lYXJHcmFk
aWVudD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDEyIEBAIHZvaWQgU1ZHR2x5cGhFbGVtZW50Ojpy
ZW1vdmVkRnJvbURvY3VtZW4KICAgICBTVkdTdHlsZWRFbGVtZW50OjpyZW1vdmVkRnJvbURvY3Vt
ZW50KCk7CiB9CiAKK3ZvaWQgU1ZHR2x5cGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ZEF0dHIpCisgICAgICAgIGludmFsaWRhdGVHbHlwaENhY2hlKCk7Cit9CisKIHN0YXRp
YyBpbmxpbmUgU1ZHR2x5cGhJZGVudGlmaWVyOjpBcmFiaWNGb3JtIHBhcnNlQXJhYmljRm9ybShj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSAibWVkaWFsIikK
QEAgLTEzMiw2ICsxMzgsMTMgQEAgc3RhdGljIGlubGluZSBmbG9hdCBwYXJzZVNWR0dseXBoQXR0
cmlidQogICAgIHJldHVybiB2YWx1ZS50b0Zsb2F0KCk7CiB9CiAKK3ZvaWQgU1ZHR2x5cGhFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1l
bnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpLnNldChTVkdOYW1lczo6ZEF0dHIsIEFuaW1hdGVkUGF0aCk7Cit9CisKIFNW
R0dseXBoSWRlbnRpZmllciBTVkdHbHlwaEVsZW1lbnQ6OmJ1aWxkR2VuZXJpY0dseXBoSWRlbnRp
Zmllcihjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIFNWR0dseXBoSWRlbnRpZmll
ciBpZGVudGlmaWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFNWR0dseXBoRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGluc2Vy
dGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDE4IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3AKICAgICAgICAgc3luY2hyb25pemVIcmVmKCk7CiB9CiAKK3Zv
aWQgU1ZHR3JhZGllbnRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQorewor
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAg
IAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5p
bWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6c3ByZWFkTWV0aG9kQXR0ciwgQW5p
bWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6Z3JhZGllbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFhMaW5rTmFt
ZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1hdGVkQm9v
bGVhbik7Cit9CisgICAgCiB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hh
bmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNo
aWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVu
dC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0LDIwIEBAIHZvaWQgU1ZHSW1hZ2VF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnQKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXpl
UHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHSW1hZ2VFbGVtZW50Ojpl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNo
TWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5p
bWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpoZWln
aHRBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChT
VkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RS
YXRpbyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFt
ZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBBbmltYXRlZEJvb2xlYW4pOworfQor
CiBib29sIFNWR0ltYWdlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHgoKS5pc1JlbGF0aXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1
bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCShyZXZpc2lv
biA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTcgQEAgdm9pZCBTVkdMaW5lRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eQogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRo
aXMsIGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdMaW5lRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJs
ZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWRO
YW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlz
LT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjp4MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjp5MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRh
YmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4MkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5MkF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKK30KKwogdm9pZCBTVkdMaW5lRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBj
b25zdAogewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTcgQEAgdm9pZCBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OnN5bmNocm9uaQogICAgICAgICBzeW5jaHJvbml6ZVkyKCk7CiB9CiAKK3Zv
aWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAo
KQoreworICAgIFNWR0dyYWRpZW50RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KCk7CisKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4m
IGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwor
ICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OngxQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnkxQXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OngyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OnkyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworfQorCiBSZW5kZXJPYmplY3QqIFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxNSBAQCB2
b2lkIFNWR01QYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0CiAgICAgICAgIHN5bmNocm9u
aXplSHJlZigpOwogfQogCit2b2lkIFNWR01QYXRoRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVBy
b3BlcnR5TWFwKCkKK3sKKyAgICBTVkdFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlN
YXAoKTsKKworICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBl
PiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBBbmltYXRlZEJvb2xlYW4pOworfQorCiBTVkdQ
YXRoRWxlbWVudCogU1ZHTVBhdGhFbGVtZW50OjpwYXRoRWxlbWVudCgpCiB7CiAgICAgRWxlbWVu
dCogdGFyZ2V0ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoZ2V0VGFyZ2V0KGhyZWYoKSkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDYgKzE4MywyMiBAQCB2b2lkIFNWR01hcmtlckVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVyCiAgICAgfQogfQogCit2b2lkIFNWR01hcmtlckVsZW1lbnQ6
OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZp
ZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0
aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAu
c2V0KFNWR05hbWVzOjpyZWZYQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnJlZllBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6bWFy
a2VySGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cC5zZXQoU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6b3JpZW50QXR0ciwgQW5pbWF0
ZWRBbmdsZSk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1hdGVkQm9vbGVhbik7CisgICAgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRp
b0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Cit9CisKIHZvaWQgU1ZHTWFya2Vy
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZv
cmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAg
IFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9y
ZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlN
YXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0g
MCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiAr
MTQ4LDIwIEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAg
ICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAK
K3ZvaWQgU1ZHTWFza0VsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7Cisg
ICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5
cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAo
KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRy
LCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVy
YXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om1hc2tDb250
ZW50VW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgQW5pbWF0
ZWRCb29sZWFuKTsKK30KKwogdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdl
LCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxk
Q291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9
IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDE2IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5
bmNocm9uaXplRCgpCiAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6
c3luY2hyb25pemUodGhpcywgU1ZHTmFtZXM6OmRBdHRyLCBtX3BhdGhTZWdMaXN0LnZhbHVlLnZh
bHVlQXNTdHJpbmcoKSk7CiB9CiAKK3ZvaWQgU1ZHUGF0aEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmVu
c3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVk
TmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhp
cy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6ZEF0dHIsIEFuaW1hdGVkUGF0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1hdGVk
Qm9vbGVhbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cGF0aExl
bmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKK30KKwogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmYqIFNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdCgpCiB7CiAgICAgaWYgKCFtX2FuaW1h
dGFibGVQYXRoU2VnTGlzdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJ
KHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1
YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDYgKzE5NCwyNCBAQCB2
b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlCiAgICAgICAgIFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR1Bh
dHRlcm5FbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0
eWxlZEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhh
c2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVBy
b3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Omhl
aWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0
ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChT
VkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0
ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdC
b3hBdHRyLCBBbmltYXRlZFJlY3QpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBBbmltYXRlZEJvb2xlYW4pOwor
ICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworfQorCiB2b2lkIFNWR1BhdHRl
cm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJl
Zm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAg
ICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVm
b3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1
OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2Vk
QnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFu
Z2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Miw2ICsxMTIsMTUgQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQog
ICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsK
IH0KIAordm9pZCBTVkdQb2x5RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkK
K3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVBy
b3BlcnR5TWFwKCk7CisKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmli
dXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0
eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0
dHIsIEFuaW1hdGVkUG9pbnRzKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgQW5pbWF0ZWRCb29sZWFuKTsKK30K
Kwogdm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMoKQogewogICAgIGlmICgh
bV9wb2ludHMuc2hvdWxkU3luY2hyb25pemUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVs
ZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsgCiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwxOCBAQCB2b2lkIFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudDo6c3luY2hyb25pCiAgICAgICAgIHN5bmNocm9uaXplUigpOwog
fQogCit2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCkKK3sKKyAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRy
aWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6Y3hBdHRy
LCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6ckF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjpmeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRh
YmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpmeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30K
KwogUmVuZGVyT2JqZWN0KiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KHRoaXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYxLDYgKzE2MSwyMCBAQCB2b2lkIFNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUp
OwogfQogCit2b2lkIFNWR1JlY3RFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAo
KQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVk
QXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnhB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdO
YW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAu
c2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cnhBdHRyLCBBbmltYXRlZExl
bmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cnlBdHRyLCBB
bmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6
ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Cit9CisKIHZv
aWQgU1ZHUmVjdEVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBB
U1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNiArMzc5LDIwIEBAIHZvaWQgU1ZH
U1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSgKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHU1ZHRWxlbWVu
dDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNo
TWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5p
bWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpoZWln
aHRBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChT
VkdOYW1lczo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7CisgICAgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1h
dGVkQm9vbGVhbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cHJl
c2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Cit9CisK
IHVuc2lnbmVkIFNWR1NWR0VsZW1lbnQ6OnN1c3BlbmRSZWRyYXcodW5zaWduZWQgLyogbWF4V2Fp
dE1pbGxpc2Vjb25kcyAqLykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lIChzZWUgYnVn
IDExMjc1KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0NCw2ICsxNDQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMTUgQEAgdm9p
ZCBTVkdTY3JpcHRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBzeW5jaHJvbml6
ZUhyZWYoKTsKIH0KIAordm9pZCBTVkdTY3JpcHRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJv
cGVydHlNYXAoKQoreworICAgIFNWR0VsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1h
cCgpOworCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+
JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1hdGVkQm9vbGVhbik7Cit9CisKIHZvaWQg
U1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIFNWR0VsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3Jp
cHRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7
CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDEz
IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAgICAgc3lu
Y2hyb25pemVPZmZzZXQoKTsKIH0KIAordm9pZCBTVkdTdG9wRWxlbWVudDo6ZW5zdXJlQW5pbWF0
YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjplbnN1cmVBbmltYXRh
YmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAoKS5zZXQo
U1ZHTmFtZXM6Om9mZnNldEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogUmVuZGVyT2JqZWN0
KiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0dyYWRpZW50U3Rv
cCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3Vy
ZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGlzR3JhZGllbnRT
dG9wKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAog
I2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMCw2ICsyMDEsODYgQEAgaW50IFNWR1N0eWxlZEVs
ZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVgogICAgIHJldHVybiBwcm9wZXJ0eU5hbWVUb0lkTWFw
LT5nZXQoYXR0ck5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKIH0KIAorSGFzaE1hcDxRdWFsaWZp
ZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9w
ZXJ0eVRvVHlwZU1hcCgpCit7CisgICAgdHlwZWRlZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFu
aW1hdGVkQXR0cmlidXRlVHlwZT4gQ1NTUHJvcGVydHlUb1R5cGVNYXA7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDU1NQcm9wZXJ0eVRvVHlwZU1hcCwgc19jc3NQcm9wZXJ0eU1hcCwgKCkpOwor
ICAgIAorICAgIGlmICghc19jc3NQcm9wZXJ0eU1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBzX2Nzc1Byb3BlcnR5TWFwOworCisgICAgLy8gRmlsbCB0aGUgbWFwIGZvciB0aGUgZmlyc3Qg
dXNlLgorICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGFsaWdubWVudF9iYXNlbGluZUF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChiYXNlbGluZV9zaGlmdEF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjbGlwQXR0ciwg
QW5pbWF0ZWRSZWN0KTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjbGlwX3BhdGhBdHRyLCBB
bmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY2xpcF9ydWxlQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpjb2xv
ckF0dHIsIEFuaW1hdGVkQ29sb3IpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX2lu
dGVycG9sYXRpb25BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQoY29sb3JfaW50ZXJwb2xhdGlvbl9maWx0ZXJzQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAg
IHNfY3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX3Byb2ZpbGVBdHRyLCBBbmltYXRlZFN0cmluZyk7
CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY29sb3JfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOyAKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjdXJzb3JBdHRyLCBBbmltYXRlZFN0
cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZGlzcGxheUF0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChkb21pbmFudF9iYXNlbGluZUF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmaWxsQXR0ciwgQW5pbWF0
ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmlsbF9vcGFjaXR5QXR0ciwgQW5p
bWF0ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZpbGxfcnVsZUF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmaWx0ZXJBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmxvb2RfY29sb3JBdHRyLCBB
bmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmbG9vZF9vcGFjaXR5QXR0
ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZvbnRfZmFtaWx5
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZvbnRfc2l6
ZUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmb250X3N0
cmV0Y2hBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZm9u
dF9zdHlsZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChm
b250X3ZhcmlhbnRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQoZm9udF93ZWlnaHRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1h
cC5zZXQoaW1hZ2VfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJv
cGVydHlNYXAuc2V0KGtlcm5pbmdBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgc19jc3NQcm9w
ZXJ0eU1hcC5zZXQobGV0dGVyX3NwYWNpbmdBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgc19j
c3NQcm9wZXJ0eU1hcC5zZXQobGlnaHRpbmdfY29sb3JBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAg
ICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXJrZXJfZW5kQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwor
ICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hcmtlcl9taWRBdHRyLCBBbmltYXRlZFN0cmluZyk7
CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobWFya2VyX3N0YXJ0QXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hc2tBdHRyLCBBbmltYXRlZFN0cmluZyk7
CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQob3BhY2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
KyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChvdmVyZmxvd0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsK
KyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChwb2ludGVyX2V2ZW50c0F0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzaGFwZV9yZW5kZXJpbmdBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3RvcF9jb2xvckF0dHIsIEFu
aW1hdGVkQ29sb3IpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0b3Bfb3BhY2l0eUF0dHIs
IEFuaW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VBdHRyLCBB
bmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VfZGFzaGFycmF5
QXR0ciwgQW5pbWF0ZWRMZW5ndGhMaXN0KTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJv
a2VfZGFzaG9mZnNldEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFw
LnNldChzdHJva2VfbGluZWNhcEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChzdHJva2VfbGluZWpvaW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19j
c3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX21pdGVybGltaXRBdHRyLCBBbmltYXRlZE51bWJlcik7
CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX29wYWNpdHlBdHRyLCBBbmltYXRlZE51
bWJlcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX3dpZHRoQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHRleHRfYW5jaG9yQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHRleHRfZGVjb3JhdGlvbkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh0ZXh0X3JlbmRl
cmluZ0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh2ZWN0
b3JfZWZmZWN0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KHZpc2liaWxpdHlBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQod29yZF9zcGFjaW5nQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIHJldHVybiBzX2Nzc1By
b3BlcnR5TWFwOworfQorCitBbmltYXRlZEF0dHJpYnV0ZVR5cGUgU1ZHU3R5bGVkRWxlbWVudDo6
YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKK3sKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRl
VHlwZT4mIGNzc1Byb3BlcnR5VG9UeXBlTWFwID0gdGhpcy0+Y3NzUHJvcGVydHlUb1R5cGVNYXAo
KTsKKyAgICBpZiAoIWNzc1Byb3BlcnR5VG9UeXBlTWFwLmNvbnRhaW5zKGF0dHJOYW1lKSkKKyAg
ICAgICAgcmV0dXJuIEFuaW1hdGVkVW5rbm93bjsKKyAgICByZXR1cm4gY3NzUHJvcGVydHlUb1R5
cGVNYXAuZ2V0KGF0dHJOYW1lKTsKK30KKwordm9pZCBTVkdTdHlsZWRFbGVtZW50OjplbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR0VsZW1lbnQ6OmVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOworCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwKCkuc2V0KEhUTUxO
YW1lczo6Y2xhc3NBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIGJvb2wgU1ZHU3R5bGVkRWxl
bWVudDo6bWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0
cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoU1ZHU3R5bGVkRWxlbWVudDo6
Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpID4gMCkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDYgKzUyLDggQEAgcHVibGljOgogICAgIGJvb2wgaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpIGNv
bnN0OwogICAgIHZvaWQgc2V0SW5zdGFuY2VVcGRhdGVzQmxvY2tlZChib29sKTsKIAorICAgIEFu
aW1hdGVkQXR0cmlidXRlVHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZUZvckNTU1Byb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2Fs
Q29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsgcmV0dXJuIFN0eWxl
ZEVsZW1lbnQ6OnN0eWxlKCk7IH0KQEAgLTY2LDYgKzY4LDggQEAgcHJvdGVjdGVkOiAKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworCiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9E
b2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CkBAIC03
OSw2ICs4Myw3IEBAIHByb3RlY3RlZDogCiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
U3R5bGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFt
ZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgY3NzUHJvcGVydHlUb1R5cGVNYXAoKTsKIAogICAg
IEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhz
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksMTEgQEAg
QWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbgogICAgIHJldHVybiBTVkdM
b2NhdGFibGU6OmNvbXB1dGVDVE0odGhpcywgU1ZHTG9jYXRhYmxlOjpTY3JlZW5TY29wZSwgc3R5
bGVVcGRhdGVTdHJhdGVneSk7CiB9CiAKK3ZvaWQgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50Ojpl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
TG9jYXRhYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHB1Ymxp
YzoKIAogcHJvdGVjdGVkOgogICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlZExv
Y2F0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkocmV2aXNpb24g
NzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDEzIEBAIFJlbmRlck9iamVjdCog
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW0KICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVy
U1ZHUGF0aCh0aGlzKTsKIH0KIAordm9pZCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50Ojpl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAoKS5zZXQoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlz
dCk7Cit9CisKIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnRvQ2xpcFBhdGgo
UGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICB0b1BhdGhEYXRhKHBhdGgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHJl
dmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKICAgICBERUNMQVJFX0FOSU1BVEVEX1RS
QU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDEz
IEBAIHZvaWQgU1ZHU3dpdGNoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICAgICAgU1ZH
VGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQg
U1ZHU3dpdGNoRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KCk7CisKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAoKS5zZXQoU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBBbmltYXRlZEJvb2xlYW4pOworfQorCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5o
CShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsK
IAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgs
NiArODgsMTYgQEAgdm9pZCBTVkdTeW1ib2xFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAg
IH0gCiB9CiAKK3ZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5
TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlN
YXAoKTsKKyAgICAKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRl
VHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1h
cCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRy
LCBBbmltYXRlZFJlY3QpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBBbmltYXRlZEJvb2xlYW4pOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
LCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworfQorCiBib29sIFNWR1N5bWJvbEVsZW1l
bnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogewogICAgIHJldHVybiBoYXNBdHRy
aWJ1dGUoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTeW1ib2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5
bWJvbEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3ltYm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODQsNiArODQsMTMgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZXJ0eQogICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKIH0KIAordm9pZCBTVkdUUmVmRWxlbWVu
dDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OworfQorCiBSZW5kZXJPYmplY3QqIFNWR1RSZWZFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyU1ZHSW5saW5lKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50
LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwog
ICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEsNiArMjIxLDE2IEBAIHZvaWQgU1ZHVGV4dENv
bnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGUKICAgICAvLyBGSVhNRTogYWxzbyBoYW5kbGUgYXR0
cmlidXRlIGNoYW5nZXMgZm9yIGxlbmd0aEFkanVzdCBhbmQgdGV4dExlbmd0aAogfQogCit2b2lk
IFNWR1RleHRDb250ZW50RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sK
KyAgICBTVkdTdHlsZWRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAg
ICAKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAg
IGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6bGVu
Z3RoQWRqdXN0QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIEFuaW1h
dGVkQm9vbGVhbik7Cit9CisKIGJvb2wgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojppc0tub3duQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIHJldHVybiBhdHRy
TmFtZS5tYXRjaGVzKFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyKQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDYgKzY1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRp
dmVMZW5ndGhzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50
LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDEzIEBAIHZvaWQgU1ZHVGV4dEVs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0o
KTsKIH0KIAordm9pZCBTVkdUZXh0RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KCkKK3sKKyAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJv
cGVydHlNYXAoKTsKKyAgICAKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAoKS5zZXQoU1ZHTmFt
ZXM6OnRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Cit9CisKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAK
ICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKICAgICBERUNMQVJFX0FOSU1B
VEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMCw2ICsxMTAsMTcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cAogICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKIH0KIAordm9pZCBTVkdUZXh0UGF0aEVsZW1l
bnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHVGV4dENvbnRlbnRF
bGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNoTWFw
PFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om1ldGhvZEF0dHIsIEFuaW1h
dGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OnNwYWNpbmdBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFJl
bmRlck9iamVjdCogU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVy
U1ZHVGV4dFBhdGgodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0
aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSop
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEs
MTggQEAgdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbgogICAgICAgICBz
eW5jaHJvbml6ZVJvdGF0ZSgpOwogfQogCit2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6
OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNoTWFwPFF1
YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworICAgIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZE51bWJlckxpc3Qp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmR4QXR0ciwgQW5pbWF0
ZWROdW1iZXJMaXN0KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpk
eUF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6cm90YXRlQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKK30KKwogc3RhdGlj
IGlubGluZSBib29sIGxpc3RDb250YWluc1JlbGF0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoTGlz
dCYgbGlzdCkKIHsKICAgICB1bnNpZ25lZCBzaXplID0gbGlzdC5zaXplKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50
RGVsdGEgPSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJv
cGVydHlNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjcsNiArMjI3LDE5IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eSgKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlz
LCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHVXNlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVBy
b3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZW5zdXJl
QW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1l
LCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5h
bmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNW
R05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVBy
b3BlcnR5TWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgQW5pbWF0ZWRCb29sZWFuKTsKK30K
Kwogc3RhdGljIHZvaWQgdXBkYXRlQ29udGFpbmVyU2l6ZShTVkdVc2VFbGVtZW50KiB1c2VFbGVt
ZW50LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlKQogewogICAgIC8vIERlcHRo
LWZpcnN0IHVzZWQgdG8gd3JpdGUgdGhlIG1ldGhvZCBpbiBlYXJseSBleGl0IHN0eWxlLCBubyBw
YXJ0aWN1bGFyIG90aGVyIHJlYXNvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
aAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOwogICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODAsNiArODAsMTYgQEAgdm9pZCBTVkdWaWV3RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQog
ICAgIH0KIH0KIAordm9pZCBTVkdWaWV3RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5
TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlN
YXAoKTsKKyAgICAKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRl
VHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1h
cCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRy
LCBBbmltYXRlZFJlY3QpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBBbmltYXRlZEJvb2xlYW4pOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
LCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHJldmlzaW9uIDc2
OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDYgKzQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFu
aW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80735</attachid>
            <date>2011-02-01 03:32:55 -0800</date>
            <delta_ts>2011-02-01 06:38:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53442-20110201123252.patch</filename>
            <type>text/plain</type>
            <size>102162</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MjQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkzIEBACisyMDExLTAyLTAxICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQgbmVlZHMgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGFuaW1hdGVkIGF0dHJpYnV0ZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQ0MgorCisgICAgICAgIEZvciBhIHR5cGUgc3BlY2lm
aWMgYW5pbWF0aW9uIHdlIG5lZWQgdG8ga25vdyB0aGUgcHJvcGVydHkgdHlwZSBvZiBhbiBhdHRy
aWJ1dGUuIEEgc2ltcGxlIHN0YXRpYyBtYXBwaW5nIGJldHdlZW4KKyAgICAgICAgYXR0cmlidXRl
IG5hbWUgYW5kIGEgdHlwZSBpcyBub3QgcG9zc2libGUsIHNpbmNlIG9uZSBhdHRyaWJ1dGUgbmFt
ZSBjYW4gYmUgYm91bmRlZCB0byBkaWZmZXJlbnQgcHJvcGVydHkgdHlwZXM6CisgICAgICAgIHgg
Y2FuIGJlIGEgU1ZHTnVtYmVyTGlzdCwgYSBTVkdOdW1iZXIgb3IgU1ZHTGVuZ3RoLiBTbyB3ZSBo
YXZlIHRvIGFzayBldmVyeSB0YXJnZXQgZWxlbWVudCwgaWYgaXQgc3VwcG9ydHMKKyAgICAgICAg
dGhlIGFuaW1hdGVkIGF0dHJpYnV0ZSBhbmQgb2Ygd2hpY2ggdHlwZSBpdCBpcy4gSnVzdCBmb3Ig
Q1NTIHByb3BlcnRpZXMgd2UgY2FuIHVzZSBiaXVuaXF1ZSBzdGF0aWMgbWFwcGluZ3MgYmV0d2Vl
bgorICAgICAgICB0aGUgbmFtZSBhbmQgdGhlIHR5cGUuIFRoaXMgaXMgZG9uZSBpbiBhIHN0YXRp
YyBtYXAgaW4gU1ZHU3R5bGVkRWxlbWVudC4gQWxsIG90aGVyIG1hcHBpbmdzIGFyZSBzdG9yZWQg
aW4gYSBsb2NhbAorICAgICAgICBIYXNoTWFwIGluIFNWR0VsZW1lbnQuIFRoaXMgbWFwIGdldHMg
ZmlsbGVkIG9uY2Ugd2l0aCB0aGUgZnVuY3Rpb24gZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
IGFuZCBuZWVkcyB0byBiZQorICAgICAgICBpbmNsdWRlZCBpbiBldmVyeSBTVkcgZWxlbWVudC4K
KworICAgICAgICBObyBjaGFuZ2Ugb2YgZnVuY3Rpb25hbGl0eSwgc28gbm8gbmV3IHRlc3QgY2Fz
ZXMuCisKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3Zn
L1NWR0FFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjplbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAg
ICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdDdXJzb3JFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAq
IHN2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50OjphbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6
OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAp
OgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3Zn
L1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29t
cG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29t
cG9zaXRlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6ZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmVu
c3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjplbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6
CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50Ojpl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVy
dHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RU1vcnBob2xvZ3lFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OmVu
c3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmVuc3VyZUFu
aW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAp
OgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNl
RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZW5zdXJlQW5p
bWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlN
YXApOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR2x5cGhFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dseXBoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR0dseXBoRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3Jh
ZGllbnRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2
Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVBy
b3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50
OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R01QYXRoRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBz
dmcvU1ZHTVBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVBy
b3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVu
dDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjplbnN1cmVBbmlt
YXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
b2x5RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcv
U1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6ZW5zdXJl
QW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlY3RFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAg
ICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdTY3Jp
cHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgor
ICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3Bl
cnR5VG9UeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1h
dGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5
bGVkRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcv
U1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmVu
c3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVBy
b3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVu
dDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3Bl
cnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAqIHN2Zy9TVkdUZXh0
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlN
YXApOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6ZW5zdXJlQW5p
bWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3
RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKToKKyAgICAgICAgKiBzdmcvU1ZH
Vmlld0VsZW1lbnQuaDoKKwogMjAxMS0wMi0wMSAgWm9sdGFuIEhlcmN6ZWcgIDx6aGVyY3plZ0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDE1
IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY28KICAgICB9CiB9CiAK
K3ZvaWQgU1ZHQUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1h
cCgpOworCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+
JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp0YXJnZXRBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChYTGlua05hbWVzOjpo
cmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiB2b2lkIFNWR0FFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKIAorICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXAoKTsKKwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FsdEdseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDEzIEBAIHZv
aWQgU1ZHQWx0R2x5cGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3AKICAgICAgICAgc3luY2hyb25p
emVIcmVmKCk7CiB9CiAKK3ZvaWQgU1ZHQWx0R2x5cGhFbGVtZW50OjplbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXAoKQoreworICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVuc3VyZUFu
aW1hdGFibGVQcm9wZXJ0eU1hcCgpOworCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwKCkuc2V0
KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIHZvaWQgU1ZHQWx0
R2x5cGhFbGVtZW50OjpzZXRHbHlwaFJlZihjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0Nyw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNvbG9yRGlzdGFuY2UuaCIKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVk
ZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNl
clV0aWxpdGllcy5oIgpAQCAtODQsMTUgKzg1LDE0IEBAIHN0YXRpYyBib29sIHBhcnNlTnVtYmVy
VmFsdWVBbmRVbml0KGNvbnMKIAogU1ZHQW5pbWF0ZUVsZW1lbnQ6OlByb3BlcnR5VHlwZSBTVkdB
bmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlUeXBlKGNvbnN0IFN0cmluZyYgYXR0cmli
dXRlKSBjb25zdAogeworICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlID0gdGFyZ2V0RWxl
bWVudCgpLT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51
bGxBdG9tLCBhdHRyaWJ1dGUsIG51bGxBdG9tKSk7CiAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSBm
dWxsIHByb3BlcnR5IHRhYmxlIGZvciBmaWd1cmluZyB0aGlzIG91dCByZWxpYWJseS4KLSAgICBp
ZiAoaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSkKKyAgICBpZiAoaGFzVGFn
TmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSB8fCB0eXBlID09IEFuaW1hdGVkQ29sb3Ip
CiAgICAgICAgIHJldHVybiBDb2xvclByb3BlcnR5OwotICAgIGlmIChhdHRyaWJ1dGUgPT0gImQi
KQorICAgIGlmICh0eXBlID09IEFuaW1hdGVkUGF0aCkKICAgICAgICAgcmV0dXJuIFBhdGhQcm9w
ZXJ0eTsKLSAgICBpZiAoYXR0cmlidXRlID09ICJwb2ludHMiKQorICAgIGlmICh0eXBlID09IEFu
aW1hdGVkUG9pbnRzKQogICAgICAgICByZXR1cm4gUG9pbnRzUHJvcGVydHk7Ci0gICAgaWYgKGF0
dHJpYnV0ZSA9PSAiY29sb3IiIHx8IGF0dHJpYnV0ZSA9PSAiZmlsbCIgfHwgYXR0cmlidXRlID09
ICJzdHJva2UiKQotICAgICAgICByZXR1cm4gQ29sb3JQcm9wZXJ0eTsKICAgICByZXR1cm4gTnVt
YmVyUHJvcGVydHk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMyLDE2IEBAIHZvaWQgU1ZHQ2ly
Y2xlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHQ2lyY2xlRWxlbWVu
dDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAg
SGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxl
UHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRh
YmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpyQXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOworfQorCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0
aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1h
dGFibGVQcm9wZXJ0eU1hcCgpOworCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYp
IGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDE0IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3AKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjplbnN1
cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNoTWFw
PFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0
aW9uKTsKK30KKwogdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwg
aW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNo
YW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBh
dGhFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Ns
aXBQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxz
ZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hp
bGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIs
MjAgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudAogICAgICAgICBz
eW5jaHJvbml6ZU9mZnNldCgpOwogfQogCit2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR0VsZW1l
bnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworCisgICAgSGFzaE1hcDxRdWFsaWZp
ZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0
aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAu
c2V0KFNWR05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0
YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyLCBBbmltYXRlZE51
bWJlckxpc3QpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnNsb3Bl
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZH
TmFtZXM6OmludGVyY2VwdEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJv
cGVydHlNYXAuc2V0KFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyLCBBbmltYXRlZE51bWJlcik7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZXhwb25lbnRBdHRyLCBBbmlt
YXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6b2Zm
c2V0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworfQorCiBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0cmFuc2ZlckZ1bmN0aW9uKCkg
Y29uc3QKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGZ1bmM7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiAr
MzgsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJv
cGVydHlNYXAoKTsKICAgICAKIHByaXZhdGU6CiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVj
bGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMTYgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgIH0KIH0KIAordm9pZCBTVkdDdXJzb3JFbGVtZW50Ojpl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR0VsZW1lbnQ6OmVuc3VyZUFu
aW1hdGFibGVQcm9wZXJ0eU1hcCgpOworCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmlt
YXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRh
YmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
Ojp4QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiB2b2lk
IFNWR0N1cnNvckVsZW1lbnQ6OmFkZENsaWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogewogICAg
IG1fY2xpZW50cy5hZGQoZWxlbWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JF
bGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4m
KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1Niw2ICsyNTYsMTggQEAgdm9pZCBTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdAogICAgICAgICBTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
IH0KIAorQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR0VsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlU
eXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIGlm
IChtX2FuaW1hdGVkQXR0cmlidXRlTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgZW5zdXJlQW5pbWF0
YWJsZVByb3BlcnR5TWFwKCk7CisgICAgaWYgKG1fYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuY29udGFp
bnMoYXR0ck5hbWUpKQorICAgICAgICByZXR1cm4gbV9hbmltYXRlZEF0dHJpYnV0ZU1hcC5nZXQo
YXR0ck5hbWUpOworICAgIGlmIChpc1N0eWxlZCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHRoaXMpLT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckNTU1By
b3BlcnR5KGF0dHJOYW1lKTsKKworICAgIHJldHVybiBBbmltYXRlZFVua25vd247Cit9CisKIGJv
b2wgU1ZHRWxlbWVudDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKIHsKICAgICBOb2Rl
KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw5ICsyNSwzMCBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZH
TG9jYXRhYmxlLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBBbmltYXRlZEF0dHJpYnV0
ZVR5cGUgeworICAgIEFuaW1hdGVkQW5nbGUsCisgICAgQW5pbWF0ZWRCb29sZWFuLAorICAgIEFu
aW1hdGVkQ29sb3IsCisgICAgQW5pbWF0ZWRFbnVtZXJhdGlvbiwKKyAgICBBbmltYXRlZEludGVn
ZXIsCisgICAgQW5pbWF0ZWRMZW5ndGgsCisgICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAorICAgIEFu
aW1hdGVkTnVtYmVyLAorICAgIEFuaW1hdGVkTnVtYmVyTGlzdCwKKyAgICBBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyLAorICAgIEFuaW1hdGVkUGF0aCwKKyAgICBBbmltYXRlZFBvaW50cywK
KyAgICBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sCisgICAgQW5pbWF0ZWRSZWN0LAorICAg
IEFuaW1hdGVkU3RyaW5nLAorICAgIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwKKyAgICBBbmltYXRl
ZFVua25vd24KK307CisKIGNsYXNzIENTU0N1cnNvckltYWdlVmFsdWU7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIFNWR0N1cnNvckVsZW1lbnQ7CkBAIC02NCw2ICs4NSwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSB7IH0KIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwKCkgeyByZXR1cm4gbV9hbmltYXRlZEF0dHJp
YnV0ZU1hcDsgfQorICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhbmltYXRlZFByb3BlcnR5VHlw
ZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkgeyB9CisKICAgICB2b2lkIHNlbmRTVkdMb2Fk
RXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMgPSBmYWxzZSk7CiAKICAg
ICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNmb3JtKCkgeyByZXR1
cm4gMDsgfQpAQCAtMTA4LDYgKzEzNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVJbnN0
YW5jZU1hcHBpbmcoU1ZHRWxlbWVudEluc3RhbmNlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2
ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CisKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUs
IEFuaW1hdGVkQXR0cmlidXRlVHlwZT4gbV9hbmltYXRlZEF0dHJpYnV0ZU1hcDsKIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24g
NzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDE3IEBAIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGUKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0
aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OmVuc3VyZUFuaW1h
dGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlm
aWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0g
dGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVBy
b3BlcnR5TWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5p
bWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cnhBdHRyLCBBbmltYXRlZExlbmd0aCk7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cnlBdHRyLCBBbmltYXRl
ZExlbmd0aCk7Cit9CisKIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYg
cGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYg
KzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVBy
b3BlcnR5TWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywxNiBAQCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlCiAgICAgICAgIHN5bmNocm9uaXplSW4yKCk7CiB9CiAKK3ZvaWQgU1ZH
RkVCbGVuZEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjplbnN1cmVBbmltYXRhYmxlUHJvcGVy
dHlNYXAoKTsKKyAgICAKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmli
dXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0
eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjptb2RlQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBp
bnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2
ICszOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5
IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDE2
IEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN5bmNocm9uaXoKICAgICAgICAgc3lu
Y2hyb25pemVWYWx1ZXMoKTsKIH0KIAordm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAg
IEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0
YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1hdGVk
RW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnZh
bHVlc0F0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3Vy
ZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDEzIEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQ6OnN5bmMKICAgICAgICAgc3luY2hyb25pemVJbjEoKTsKIH0KIAordm9pZCBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFu
aW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCgp
LnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVy
RWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyKik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDIwIEBAIHZvaWQgU1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpzeW5jaHJvbml6ZVAKICAgICAgICAgc3luY2hyb25pemVLNCgpOwogfQog
Cit2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFu
aW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwg
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5p
bWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdO
YW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6aW4yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlv
bik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6azFBdHRyLCBBbmlt
YXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6azJB
dHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdO
YW1lczo6azNBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6azRBdHRyLCBBbmltYXRlZE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCog
aW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1
cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICAvLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTksNiArMTU5LDIzIEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6OnN2Z0F0dHIKICAgICAgICAgaW52YWxpZGF0ZSgpOwogfQogCit2b2lkIFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZW5zdXJlQW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJp
YnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVy
dHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
OjpvcmRlckF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEFuaW1hdGVkTnVt
YmVyTGlzdCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZGl2aXNv
ckF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNW
R05hbWVzOjpiaWFzQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBBbmltYXRlZEludGVnZXIpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldFlBdHRyLCBBbmltYXRlZElu
dGVnZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJhdG9y
QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZl
QWxwaGFBdHRyLCBBbmltYXRlZEJvb2xlYW4pOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQx
ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JkZXJYSWRlbnRpZmllcigpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsMTcgQEAgdm9pZCBT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN5bmNocgogICAgIH0KIH0KIAordm9pZCBTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7
CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjplbnN1cmVBbmltYXRh
YmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1h
dGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBBbmltYXRl
ZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6a2VybmVs
VW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworfQorCiBQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDE4IEBA
IHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzeW5jaHIKICAgICAgICAgc3luY2hy
b25pemVTY2FsZSgpOwogfQogCit2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAg
IEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0
YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aW4yQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnhDaGFubmVs
U2VsZWN0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJh
dGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6c2NhbGVBdHRy
LCBBbmltYXRlZE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxk
ZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVy
QnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYsNiArMTA2LDE1IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Ojpz
eW5jaHJvbmkKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCiAg
ICAgICAgIHN5bmNocm9uaXplSW4xKCk7CiB9CisgICAgCit2b2lkIFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgp
OworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBl
PiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRl
ZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6c3RkRGV2
aWF0aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Cit9CiAKIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjEsNiArMTIxLDE1IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGUKICAgICBlbHNlIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKICAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCk7CiB9CisgICAgCit2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjplbnN1
cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAg
SGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxl
UHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRh
YmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CiAKIHZvaWQgU1ZHRkVJ
bWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw2ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTGlnaHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksMjMg
QEAgdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZQogICAgICAgICBzeW5j
aHJvbml6ZUxpbWl0aW5nQ29uZUFuZ2xlKCk7CiB9CiAKK3ZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6
OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHRWxlbWVudDo6ZW5zdXJl
QW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFu
aW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1h
dGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFt
ZXM6OmF6aW11dGhBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6ZWxldmF0aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlcik7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVk
TnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp6QXR0ciwg
QW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OnBvaW50c0F0WEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlN
YXAuc2V0KFNWR05hbWVzOjpwb2ludHNBdFlBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5p
bWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRaQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFy
RXhwb25lbnRBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyLCBBbmltYXRlZE51bWJlcik7Cit9
CisKIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxk
Q291bnREZWx0YSkKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5
UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5p
bWF0YWJsZVByb3BlcnR5TWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIC8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDYgKzcwLDEzIEBAIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGUKICAg
ICAKICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KKyAgICAKK3ZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR0VsZW1lbnQ6OmVu
c3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
KCkuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KIAogdm9pZCBTVkdG
RU1lcmdlTm9kZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2Rl
RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAog
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwogICAgIERFQ0xBUkVfQU5JTUFU
RURfU1RSSU5HKEluMSwgaW4xKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhv
bG9neUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsx
MTgsMTYgQEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzeW5jaHJvbml6ZQogICAgIH0K
IH0KIAordm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVy
dHlNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWRO
YW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlz
LT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwor
ICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIEFuaW1h
dGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0
ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw2ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIHJhZGl1c1hJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcs
MTYgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcAogICAgICAgICBz
eW5jaHJvbml6ZUluMSgpOwogfQogCit2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6ZW5zdXJlQW5p
bWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hN
YXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVBy
b3BlcnR5TWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYW5p
bWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRlZE51bWJlcik7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZHlBdHRyLCBBbmltYXRl
ZE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNldEVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVy
KQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0
QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5o
CShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZp
cnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7
CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDE4IEBAIHZvaWQgU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c3luY2gKICAgICB9CiB9CiAKK3ZvaWQgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sK
KyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0
ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJs
ZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6
aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChT
VkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgQW5p
bWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnN1
cmZhY2VTY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlN
YXAuc2V0KFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRp
b25hbE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+IFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdodHMoKSBjb25zdAogewogICAgIGZvciAoTm9kZSogbm9k
ZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVp
bGRlciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2VybmVs
VW5pdExlbmd0aFhJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVU
aWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTMgQEAgdm9pZCBT
VkdGRVRpbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBzeW5jaHJvbml6ZUlu
MSgpOwogfQogCit2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0
eU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjplbnN1
cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCgp
LnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5
TWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFy
YXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCwxOCBAQCB2b2lk
IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnN5bmNocm9uaXplCiAgICAgICAgIHN5bmNocm9uaXpl
TnVtT2N0YXZlcygpOwogfQogCit2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmVuc3VyZUFu
aW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNo
TWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLCBBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
OjpudW1PY3RhdmVzQXR0ciwgQW5pbWF0ZWRJbnRlZ2VyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjpzZWVkQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgQW5pbWF0ZWRF
bnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6dHlw
ZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciogZmlsdGVyKQogewogICAgIGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBiYXNlRnJlcXVl
bmN5WSgpIDwgMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGJhc2VGcmVxdWVu
Y3lYSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsMjEgQEAgdm9pZCBTVkdGaWx0
ZXJFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsK
IH0KIAordm9pZCBTVkdGaWx0ZXJFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAo
KQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgp
OworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBl
PiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRy
LCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNW
R05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51
bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0
ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5v
ZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0
ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2Us
IE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxk
Q291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNiArMTUx
LDE4IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICBmaWx0
ZXJFZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoZWZmZWN0QkJveCk7CiB9CiAKK3ZvaWQgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjplbnN1cmVBbmltYXRhYmxlUHJvcGVy
dHlNYXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0
eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5
TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZH
TmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpyZXN1bHRBdHRyLCBBbmltYXRlZFN0cmlu
Zyk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsK
ICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUo
dGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2
b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CiAKICAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCwxMSBAQCB2b2lk
IFNWR0ZvbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIHN5bmNocm9uaXpl
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwogfQogCit2b2lkIFNWR0ZvbnRFbGVtZW50Ojpl
bnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmVu
c3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworfQorCiB2b2lkIFNWR0ZvbnRFbGVtZW50Ojpp
bnZhbGlkYXRlR2x5cGhDYWNoZSgpCiB7CiAgICAgaWYgKG1faXNHbHlwaENhY2hlVmFsaWQpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0gICAgCiAKICAgICB2b2lkIGVuc3VyZUdseXBoQ2Fj
aGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDE4
IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXoKICAgICAgICAgU1ZH
VGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQg
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7
CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRy
aWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eEF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
Ojp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0
cmluZyk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KHRoaXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Niw2ICs3NiwxMiBAQCB2b2lkIFNWR0dseXBoRWxlbWVudDo6cmVtb3ZlZEZy
b21Eb2N1bWVuCiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwog
fQogCit2b2lkIFNWR0dseXBoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRB
dHRyKQorICAgICAgICBpbnZhbGlkYXRlR2x5cGhDYWNoZSgpOworfQorCiBzdGF0aWMgaW5saW5l
IFNWR0dseXBoSWRlbnRpZmllcjo6QXJhYmljRm9ybSBwYXJzZUFyYWJpY0Zvcm0oY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gIm1lZGlhbCIpCkBAIC0xMzIs
NiArMTM4LDEzIEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgcGFyc2VTVkdHbHlwaEF0dHJpYnUKICAg
ICByZXR1cm4gdmFsdWUudG9GbG9hdCgpOwogfQogCit2b2lkIFNWR0dseXBoRWxlbWVudDo6ZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjplbnN1
cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBhbmltYXRhYmxlUHJvcGVydHlN
YXAoKS5zZXQoU1ZHTmFtZXM6OmRBdHRyLCBBbmltYXRlZFBhdGgpOworfQorCiBTVkdHbHlwaElk
ZW50aWZpZXIgU1ZHR2x5cGhFbGVtZW50OjpidWlsZEdlbmVyaWNHbHlwaElkZW50aWZpZXIoY29u
c3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBTVkdHbHlwaElkZW50aWZpZXIgaWRlbnRp
ZmllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDc2
OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTcsNiArMTE3LDggQEAgcHJpdmF0ZToKICAgICBTVkdHbHlwaEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9E
b2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwxNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wCiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwogfQogCit2b2lkIFNWR0dy
YWRpZW50RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdT
dHlsZWRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBI
YXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIEFuaW1hdGVkRW51
bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmdyYWRp
ZW50VW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNm
b3JtTGlzdCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChYTGlua05hbWVzOjpocmVm
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorICAgIAogdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHls
ZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlN
YXAoKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VI
YW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwxOSBA
QCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0CiAgICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNW
R0ltYWdlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7
CisgICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+
JiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBB
bmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6
d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoWExp
bmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogYm9vbCBTVkdJbWFnZUVs
ZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogewogICAgIHJldHVybiB4KCku
aXNSZWxhdGl2ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCShyZXZp
c2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
NiArMTM4LDE3IEBAIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAg
ICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9
CiAKK3ZvaWQgU1ZHTGluZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7
CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRy
aWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eDFBdHRy
LCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6eTFBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6eDJBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6eTJBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIHZvaWQg
U1ZHTGluZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NF
UlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJ
KHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
dG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsNiArMTE0LDE3IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzeW5j
aHJvbmkKICAgICAgICAgc3luY2hyb25pemVZMigpOwogfQogCit2b2lkIFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdHcmFk
aWVudEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworCisgICAgSGFzaE1h
cDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRhYmxlUHJvcGVy
dHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJv
cGVydHlNYXAuc2V0KFNWR05hbWVzOjp4MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4MkF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5MkF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogUmVuZGVyT2JqZWN0KiBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQog
ewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50
KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAK
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNw
cAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTQgQEAgdm9pZCBTVkdNUGF0aEVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydAogICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKIH0KIAor
dm9pZCBTVkdNUGF0aEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7Cisg
ICAgU1ZHRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisKKyAgICBIYXNo
TWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30K
KwogU1ZHUGF0aEVsZW1lbnQqIFNWR01QYXRoRWxlbWVudDo6cGF0aEVsZW1lbnQoKQogewogICAg
IEVsZW1lbnQqIHRhcmdldCA9IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGdldFRhcmdldCho
cmVmKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWNsYXJhdGlvbnMKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50
LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsxODMsMjAgQEAgdm9pZCBTVkdNYXJr
ZXJFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgIH0KIH0KIAordm9pZCBTVkdNYXJrZXJF
bGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxlZEVs
ZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8
UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5
TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6cmVmWEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpyZWZZQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFt
ZXM6Om1hcmtlckhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJv
cGVydHlNYXAuc2V0KFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRp
b24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om9yaWVudEF0dHIs
IEFuaW1hdGVkQW5nbGUpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOworfQorCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHls
ZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZh
bHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBj
aGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwxOSBA
QCB2b2lkIFNWR01hc2tFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNW
R01hc2tFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAg
IAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5p
bWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRo
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZH
TmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjptYXNrQ29udGVudFVuaXRz
QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBO
b2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHlsZWRF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFm
dGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hc2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2Rl
KiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50
RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDYgKzI3MiwxNSBAQCB2b2lkIFNW
R1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQoKQogICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5j
aHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKHRoaXMsIFNWR05hbWVzOjpkQXR0ciwgbV9wYXRo
U2VnTGlzdC52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwogfQogCit2b2lkIFNWR1BhdGhFbGVtZW50
OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBI
YXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmRBdHRyLCBBbmltYXRlZFBhdGgpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCBBbmltYXRl
ZE51bWJlcik7Cit9CisKIFNWR1BhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKiBTVkdQYXRoRWxl
bWVudDo6cGF0aFNlZ0xpc3QoKQogewogICAgIGlmICghbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3Qp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDQsNiArMTA0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5p
bWF0YWJsZVByb3BlcnR5TWFwKCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTWFya2Vycygp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw2ICsxOTQsMjMgQEAgdm9pZCBTVkdQYXR0ZXJuRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZQogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9w
ZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6ZW5z
dXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjplbnN1
cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5h
bWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMt
PmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRl
ZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cGF0dGVy
blVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVy
YXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnBhdHRlcm5U
cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRS
ZWN0KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKK30KKwogdm9pZCBT
VkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJz
ZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTksNiArNTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRh
YmxlUHJvcGVydHlNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFm
dGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTIsNiArMTEyLDEzIEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRy
TmFtZSk7CiB9CiAKK3ZvaWQgU1ZHUG9seUVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0
eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmVuc3VyZUFuaW1h
dGFibGVQcm9wZXJ0eU1hcCgpOworCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwKCkuc2V0KFNW
R05hbWVzOjpwb2ludHNBdHRyLCBBbmltYXRlZFBvaW50cyk7Cit9CisKIHZvaWQgU1ZHUG9seUVs
ZW1lbnQ6OnN5bmNocm9uaXplUG9pbnRzKCkKIHsKICAgICBpZiAoIW1fcG9pbnRzLnNob3VsZFN5
bmNocm9uaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVu
c3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
TWFya2VycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNCw2ICsxMjQsMTggQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQ6OnN5bmNocm9uaQogICAgICAgICBzeW5jaHJvbml6ZVIoKTsKIH0KIAordm9pZCBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAg
U1ZHR3JhZGllbnRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICAK
KyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnJBdHRy
LCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6ZnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6ZnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIFJlbmRlck9iamVjdCog
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVz
b3VyY2VSYWRpYWxHcmFkaWVudCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFi
bGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsMTkgQEAg
dm9pZCBTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQogICAgICAgICBTVkdUZXN0
czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdS
ZWN0RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7Cisg
ICAgCisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBh
bmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6d2lk
dGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChT
VkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnJ4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnJ5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
fQorCiB2b2lkIFNWR1JlY3RFbGVtZW50Ojp0b1BhdGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmly
dHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSwxOSBAQCB2
b2lkIFNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoCiAgICAgICAgIFNWR1Rlc3Rz
OjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR1NW
R0VsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVk
TG9jYXRhYmxlRWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisg
ICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+JiBhbmltYXRh
YmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExl
bmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRy
LCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworfQorCiB1bnNpZ25lZCBTVkdTVkdFbGVtZW50Ojpz
dXNwZW5kUmVkcmF3KHVuc2lnbmVkIC8qIG1heFdhaXRNaWxsaXNlY29uZHMgKi8pCiB7CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBtZSAoc2VlIGJ1ZyAxMTI3NSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1h
cCgpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24g
NzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk3LDYgKzk3LDEzIEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXIKICAgICAgICAgc3luY2hyb25pemVIcmVmKCk7CiB9CiAKK3ZvaWQgU1ZHU2Ny
aXB0RWxlbWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdFbGVt
ZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQor
CiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBT
VkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0
eU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2
ICs3NywxMyBAQCB2b2lkIFNWR1N0b3BFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAg
ICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7CiB9CiAKK3ZvaWQgU1ZHU3RvcEVsZW1lbnQ6OmVuc3Vy
ZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZW5zdXJl
QW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
KCkuc2V0KFNWR05hbWVzOjpvZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIFJlbmRl
ck9iamVjdCogU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdHcmFk
aWVudFN0b3AodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0dy
YWRpZW50U3RvcCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMDAsNiArMjAxLDg2IEBAIGludCBTVkdT
dHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1YKICAgICByZXR1cm4gcHJvcGVydHlOYW1l
VG9JZE1hcC0+Z2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKK0hhc2hNYXA8
UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgU1ZHU3R5bGVkRWxlbWVudDo6
Y3NzUHJvcGVydHlUb1R5cGVNYXAoKQoreworICAgIHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWRO
YW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+IENTU1Byb3BlcnR5VG9UeXBlTWFwOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlUb1R5cGVNYXAsIHNfY3NzUHJvcGVydHlNYXAs
ICgpKTsKKyAgICAKKyAgICBpZiAoIXNfY3NzUHJvcGVydHlNYXAuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gc19jc3NQcm9wZXJ0eU1hcDsKKworICAgIC8vIEZpbGwgdGhlIG1hcCBmb3IgdGhl
IGZpcnN0IHVzZS4KKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChhbGlnbm1lbnRfYmFzZWxpbmVB
dHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoYmFzZWxpbmVf
c2hpZnRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY2xp
cEF0dHIsIEFuaW1hdGVkUmVjdCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY2xpcF9wYXRo
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNsaXBfcnVs
ZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6Y29sb3JBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChj
b2xvcl9pbnRlcnBvbGF0aW9uQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KGNvbG9yX2ludGVycG9sYXRpb25fZmlsdGVyc0F0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjb2xvcl9wcm9maWxlQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX3JlbmRlcmluZ0F0dHIsIEFu
aW1hdGVkU3RyaW5nKTsgCisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY3Vyc29yQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGRpc3BsYXlBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZG9taW5hbnRfYmFzZWxpbmVB
dHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmlsbEF0dHIs
IEFuaW1hdGVkQ29sb3IpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZpbGxfb3BhY2l0eUF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmaWxsX3J1bGVB
dHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmlsdGVyQXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZsb29kX2NvbG9y
QXR0ciwgQW5pbWF0ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmxvb2Rfb3Bh
Y2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmb250
X2ZhbWlseUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChm
b250X3NpemVBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
Zm9udF9zdHJldGNoQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAu
c2V0KGZvbnRfc3R5bGVBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1h
cC5zZXQoZm9udF92YXJpYW50QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KGZvbnRfd2VpZ2h0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJv
cGVydHlNYXAuc2V0KGltYWdlX3JlbmRlcmluZ0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBz
X2Nzc1Byb3BlcnR5TWFwLnNldChrZXJuaW5nQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIHNf
Y3NzUHJvcGVydHlNYXAuc2V0KGxldHRlcl9zcGFjaW5nQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGxpZ2h0aW5nX2NvbG9yQXR0ciwgQW5pbWF0ZWRDb2xv
cik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobWFya2VyX2VuZEF0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXJrZXJfbWlkQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hcmtlcl9zdGFydEF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXNrQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG9wYWNpdHlBdHRyLCBBbmltYXRlZE51
bWJlcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQob3ZlcmZsb3dBdHRyLCBBbmltYXRlZFN0
cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQocG9pbnRlcl9ldmVudHNBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc2hhcGVfcmVuZGVyaW5nQXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0b3BfY29sb3JB
dHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdG9wX29wYWNp
dHlBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tl
QXR0ciwgQW5pbWF0ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX2Rh
c2hhcnJheUF0dHIsIEFuaW1hdGVkTGVuZ3RoTGlzdCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQoc3Ryb2tlX2Rhc2hvZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgc19jc3NQcm9w
ZXJ0eU1hcC5zZXQoc3Ryb2tlX2xpbmVjYXBBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19j
c3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX2xpbmVqb2luQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwor
ICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0cm9rZV9taXRlcmxpbWl0QXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0cm9rZV9vcGFjaXR5QXR0ciwgQW5p
bWF0ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0cm9rZV93aWR0aEF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh0ZXh0X2FuY2hvckF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh0ZXh0X2RlY29y
YXRpb25BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQodGV4
dF9yZW5kZXJpbmdBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQodmVjdG9yX2VmZmVjdEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5
TWFwLnNldCh2aXNpYmlsaXR5QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KHdvcmRfc3BhY2luZ0F0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICByZXR1cm4g
c19jc3NQcm9wZXJ0eU1hcDsKK30KKworQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR1N0eWxlZEVs
ZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCit7CisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0
dHJpYnV0ZVR5cGU+JiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCA9IHRoaXMtPmNzc1Byb3BlcnR5VG9U
eXBlTWFwKCk7CisgICAgaWYgKCFjc3NQcm9wZXJ0eVRvVHlwZU1hcC5jb250YWlucyhhdHRyTmFt
ZSkpCisgICAgICAgIHJldHVybiBBbmltYXRlZFVua25vd247CisgICAgcmV0dXJuIGNzc1Byb3Bl
cnR5VG9UeXBlTWFwLmdldChhdHRyTmFtZSk7Cit9CisKK3ZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6
ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdFbGVtZW50OjplbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpLnNl
dChIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiBib29sIFNWR1N0
eWxlZEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1h
cHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKFNWR1N0eWxlZEVs
ZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKSA+IDApIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICBib29sIGluc3RhbmNlVXBkYXRlc0Jsb2Nr
ZWQoKSBjb25zdDsKICAgICB2b2lkIHNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoYm9vbCk7CiAK
KyAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKSB7IHJldHVy
biBTdHlsZWRFbGVtZW50OjpzdHlsZSgpOyB9CkBAIC02Niw2ICs2OCw4IEBAIHByb3RlY3RlZDog
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKIAorICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAo
KTsKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgp
OwpAQCAtNzksNiArODMsNyBAQCBwcm90ZWN0ZWQ6IAogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBpc1N0eWxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBIYXNoTWFwPFF1YWxp
ZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGNzc1Byb3BlcnR5VG9UeXBlTWFwKCk7
CiAKICAgICBIYXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPiBtX2VsZW1lbnRzV2l0aFJlbGF0aXZl
TGVuZ3RoczsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2Nh
dGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5
LDExIEBAIEFmZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW4KICAgICByZXR1
cm4gU1ZHTG9jYXRhYmxlOjpjb21wdXRlQ1RNKHRoaXMsIFNWR0xvY2F0YWJsZTo6U2NyZWVuU2Nv
cGUsIHN0eWxlVXBkYXRlU3RyYXRlZ3kpOwogfQogCit2b2lkIFNWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxl
bWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2Nh
dGFibGVFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVB
bmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNT
dHlsZWRMb2NhdGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwxMyBAQCBSZW5kZXJP
YmplY3QqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlclNWR1BhdGgodGhpcyk7CiB9CiAKK3ZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxl
bWVudDo6ZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgCisgICAgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwKCkuc2V0KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5z
Zm9ybUxpc3QpOworfQorCiB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp0b0Ns
aXBQYXRoKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgdG9QYXRoRGF0YShwYXRoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwog
CiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAgICAgREVDTEFSRV9BTklN
QVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2
ICs4OCwxNSBAQCB2b2lkIFNWR1N5bWJvbEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVyCiAgICAg
fSAKIH0KIAordm9pZCBTVkdTeW1ib2xFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlN
YXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1h
cCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFw
KCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIs
IEFuaW1hdGVkUmVjdCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6
cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Cit9
CisKIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dmlld0JveEF0dHIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDYgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0
YWJsZVByb3BlcnR5TWFwKCk7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNS
ZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVm
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxMyBAQCB2b2lkIFNWR1RSZWZF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwog
fQogCit2b2lkIFNWR1RSZWZFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQor
eworICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0
eU1hcCgpOworCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwKCkuc2V0KFhMaW5rTmFtZXM6Omhy
ZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHVFJlZkVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewog
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdJbmxpbmUodGhpcyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlN
YXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRl
UmVuZGVyZXIoTm9kZSopIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw2ICsy
MjEsMTUgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZQogICAgIC8v
IEZJWE1FOiBhbHNvIGhhbmRsZSBhdHRyaWJ1dGUgY2hhbmdlcyBmb3IgbGVuZ3RoQWRqdXN0IGFu
ZCB0ZXh0TGVuZ3RoCiB9CiAKK3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjplbnN1cmVBbmlt
YXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmVuc3VyZUFuaW1h
dGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0
YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6dGV4dExlbmd0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9u
KTsKK30KKwogYm9vbCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgcmV0dXJuIGF0dHJOYW1lLm1hdGNo
ZXMoU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiAr
NjUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsMTMgQEAgdm9pZCBTVkdUZXh0RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXJ0eQogICAgICAgICBzeW5jaHJvbml6ZVRyYW5zZm9ybSgpOwogfQogCit2
b2lkIFNWR1RleHRFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKQoreworICAg
IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgp
OworICAgIAorICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpLnNldChTVkdOYW1lczo6dHJhbnNm
b3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
IHZpcnR1YWwgdm9pZCBlbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKIAogICAgIC8vIEFu
aW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwogICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNG
T1JNX0xJU1QoVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzEx
MCwxNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wCiAgICAgICAg
IHN5bmNocm9uaXplSHJlZigpOwogfQogCit2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6ZW5zdXJl
QW5pbWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmVu
c3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVk
TmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhp
cy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0
YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6bWV0aG9kQXR0ciwgQW5pbWF0ZWRFbnVtZXJh
dGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6c3BhY2luZ0F0
dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
WExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogUmVuZGVyT2JqZWN0
KiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUZXh0UGF0
aCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHJl
dmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAg
ICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSwxOCBAQCB2b2lk
IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN5bmNocm9uCiAgICAgICAgIHN5bmNocm9uaXpl
Um90YXRlKCk7CiB9CiAKK3ZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZW5zdXJlQW5p
bWF0YWJsZVByb3BlcnR5TWFwKCkKK3sKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmVuc3Vy
ZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFt
ZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+
YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChT
VkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYW5p
bWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRlZE51bWJlckxp
c3QpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmR5QXR0ciwgQW5p
bWF0ZWROdW1iZXJMaXN0KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
Ojpyb3RhdGVBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworfQorCiBzdGF0aWMgaW5saW5lIGJv
b2wgbGlzdENvbnRhaW5zUmVsYXRpdmVWYWx1ZShjb25zdCBTVkdMZW5ndGhMaXN0JiBsaXN0KQog
ewogICAgIHVuc2lnbmVkIHNpemUgPSBsaXN0LnNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNo
YW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDAp
OwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGVuc3VyZUFuaW1hdGFibGVQcm9wZXJ0eU1hcCgp
OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyNyw2ICsyMjcsMTggQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KAogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1l
KTsKIH0KIAordm9pZCBTVkdVc2VFbGVtZW50OjplbnN1cmVBbmltYXRhYmxlUHJvcGVydHlNYXAo
KQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjplbnN1cmVBbmltYXRhYmxl
UHJvcGVydHlNYXAoKTsKKyAgICAKKyAgICBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVk
QXR0cmlidXRlVHlwZT4mIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQ
cm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnhB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdO
YW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAu
c2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworfQorCiBzdGF0aWMgdm9pZCB1cGRhdGVDb250YWluZXJTaXplKFNWR1VzZUVs
ZW1lbnQqIHVzZUVsZW1lbnQsIFNWR0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UpCiB7
CiAgICAgLy8gRGVwdGgtZmlyc3QgdXNlZCB0byB3cml0ZSB0aGUgbWV0aG9kIGluIGVhcmx5IGV4
aXQgc3R5bGUsIG5vIHBhcnRpY3VsYXIgb3RoZXIgcmVhc29uLgpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw2ICs4MCwxNSBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5CiAgICAgfQogfQogCit2b2lkIFNWR1ZpZXdFbGVtZW50OjplbnN1cmVBbmlt
YXRhYmxlUHJvcGVydHlNYXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmVuc3VyZUFuaW1h
dGFibGVQcm9wZXJ0eU1hcCgpOworICAgIAorICAgIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlPiYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0
YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpbyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlQW5pbWF0YWJsZVByb3BlcnR5TWFw
KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsg
cmV0dXJuIGZhbHNlOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80757</attachid>
            <date>2011-02-01 06:39:05 -0800</date>
            <delta_ts>2011-02-01 09:11:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53442-20110201153858.patch</filename>
            <type>text/plain</type>
            <size>102034</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MjQ2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkyIEBACisyMDExLTAyLTAxICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQgbmVlZHMgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGFuaW1hdGVkIGF0dHJpYnV0ZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQ0MgorCisgICAgICAgIEZvciBhbmltYXRpb25zLCB3
ZSBuZWVkIHRvIGtub3cgdGhlIFNWRyBwcm9wZXJ0eSB0eXBlIGZvciBhIFhNTCBhdHRyaWJ1dGUu
IEEgc2ltcGxlIHN0YXRpYyBtYXBwaW5nIGJldHdlZW4KKyAgICAgICAgYXR0cmlidXRlIG5hbWUg
YW5kIGEgdHlwZSBpcyBub3QgcG9zc2libGUsIHNpbmNlIG9uZSBhdHRyaWJ1dGUgbmFtZSBjYW4g
YmUgYm91bmRlZCB0byBkaWZmZXJlbnQgcHJvcGVydHkgdHlwZXM6CisgICAgICAgIHggY2FuIGJl
IGEgU1ZHTnVtYmVyTGlzdCwgYSBTVkdOdW1iZXIgb3IgYSBTVkdMZW5ndGguIFNvIHdlIGhhdmUg
dG8gYXNrIGV2ZXJ5IHRhcmdldCBlbGVtZW50LCBpZiBpdCBzdXBwb3J0cworICAgICAgICB0aGUg
YW5pbWF0ZWQgYXR0cmlidXRlIGFuZCBvZiB3aGljaCB0eXBlIGl0IGlzLiBKdXN0IGZvciBDU1Mg
cHJvcGVydGllcyB3ZSBjYW4gdXNlIGFuIGV4cGxpY2l0ZSBzdGF0aWMgbWFwcGluZ3MgYmV0d2Vl
bgorICAgICAgICB0aGUgbmFtZSBhbmQgdGhlIHR5cGUuIFRoaXMgaXMgZG9uZSBpbiBhIHN0YXRp
YyBtYXAgaW4gU1ZHU3R5bGVkRWxlbWVudC4gQWxsIG90aGVyIG1hcHBpbmdzIGFyZSBzdG9yZWQg
d2l0aCBhIGxvY2FsCisgICAgICAgIEhhc2hNYXAgaW4gU1ZHRWxlbWVudC4gVGhpcyBtYXAgZ2V0
cyBmaWxsZWQgb25jZSB3aXRoIHRoZSBmdW5jdGlvbiBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAgYW5kIG5lZWRzIHRvIGJlCisgICAgICAgIGluY2x1ZGVkIGluIGV2ZXJ5IFNWRyBlbGVt
ZW50LgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBmdW5jdGlvbmFsaXR5LCBzbyBubyBuZXcgdGVz
dCBjYXNlcy4KKworICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHQUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVFbGVtZW50OjpkZXRlcm1pbmVQcm9wZXJ0eVR5cGUpOgorICAgICAgICAqIHN2
Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojphbmlt
YXRhYmxlUHJvcGVydHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YW5pbWF0
ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6YW5pbWF0ZWRBdHRyaWJ1dGVNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxp
cHNlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBz
dmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgor
ICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdl
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2
Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2x5cGhFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dseXBoRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHR2x5
cGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdJ
bWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICog
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTVBhdGhFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXJrZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdQb2x5
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAg
ICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NjcmlwdEVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU3RvcEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6
Y3NzUHJvcGVydHlUb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVu
dDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAg
ICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdTeW1ib2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N5bWJvbEVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1N5bWJv
bEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6
CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1Rl
eHRDb250ZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVmll
d0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50Lmg6
CisKIDIwMTEtMDItMDEgIEFudG9uIE11aGluICA8YW50b25tQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsMTUgQEAgdm9pZCBTVkdBRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAgIH0KIH0KIAordm9pZCBTVkdBRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+
YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChT
VkdOYW1lczo6dGFyZ2V0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwog
dm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw2ICs1NCwxMyBAQCB2b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c3luY2hy
b25pemVQcm9wCiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwogfQogCit2b2lkIFNWR0FsdEds
eXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
KworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOworfQorCiB2b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c2V0R2x5cGhS
ZWYoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSBO
T19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QWx0R2x5cGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
dEdseXBoRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbHRHbHlwaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogCisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOworCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAK
ICNpbmNsdWRlICJDb2xvckRpc3RhbmNlLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgi
CisjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKQEAgLTg0
LDE1ICs4NSwxNCBAQCBzdGF0aWMgYm9vbCBwYXJzZU51bWJlclZhbHVlQW5kVW5pdChjb25zCiAK
IFNWR0FuaW1hdGVFbGVtZW50OjpQcm9wZXJ0eVR5cGUgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVy
bWluZVByb3BlcnR5VHlwZShjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSkgY29uc3QKIHsKKyAgICBB
bmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSA9IHRhcmdldEVsZW1lbnQoKS0+YW5pbWF0ZWRQcm9w
ZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgYXR0cmlidXRlLCBu
dWxsQXRvbSkpOwogICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgZnVsbCBwcm9wZXJ0eSB0YWJsZSBm
b3IgZmlndXJpbmcgdGhpcyBvdXQgcmVsaWFibHkuCi0gICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OmFuaW1hdGVDb2xvclRhZykpCisgICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1h
dGVDb2xvclRhZykgfHwgdHlwZSA9PSBBbmltYXRlZENvbG9yKQogICAgICAgICByZXR1cm4gQ29s
b3JQcm9wZXJ0eTsKLSAgICBpZiAoYXR0cmlidXRlID09ICJkIikKKyAgICBpZiAodHlwZSA9PSBB
bmltYXRlZFBhdGgpCiAgICAgICAgIHJldHVybiBQYXRoUHJvcGVydHk7Ci0gICAgaWYgKGF0dHJp
YnV0ZSA9PSAicG9pbnRzIikKKyAgICBpZiAodHlwZSA9PSBBbmltYXRlZFBvaW50cykKICAgICAg
ICAgcmV0dXJuIFBvaW50c1Byb3BlcnR5OwotICAgIGlmIChhdHRyaWJ1dGUgPT0gImNvbG9yIiB8
fCBhdHRyaWJ1dGUgPT0gImZpbGwiIHx8IGF0dHJpYnV0ZSA9PSAic3Ryb2tlIikKLSAgICAgICAg
cmV0dXJuIENvbG9yUHJvcGVydHk7CiAgICAgcmV0dXJuIE51bWJlclByb3BlcnR5OwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDYgKzEzMiwxNiBAQCB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVyCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywg
YXR0ck5hbWUpOwogfQogCit2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJv
cGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpjeEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAu
c2V0KFNWR05hbWVzOjpyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworfQorCiB2b2lkIFNWR0NpcmNs
ZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0
aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCisgICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCiAgICAgdmly
dHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDbGlwUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAy
LDE0IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3AKICAgICAgICAg
U1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3Zv
aWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQor
eworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5p
bWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIsIEFu
aW1hdGVkRW51bWVyYXRpb24pOworfQorCiB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUq
IGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVD
aGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5n
ZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNo
YW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEyLDYgKzExMiwyMCBAQCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50CiAgICAgICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7CiB9CiAKK3ZvaWQgU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCit7CisgICAgU1ZHRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFw
ID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ciwgQW5pbWF0
ZWROdW1iZXJMaXN0KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpz
bG9wZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjppbnRlcmNlcHRBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6YW1wbGl0dWRlQXR0ciwgQW5pbWF0ZWROdW1iZXIp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwg
QW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
Om9mZnNldEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKK30KKwogQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6dHJhbnNmZXJGdW5jdGlv
bigpIGNvbnN0CiB7CiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBmdW5jOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAgICAgCiBwcml2YXRlOgogICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50
LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDE2IEBAIHZvaWQgU1ZHQ3Vyc29y
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9CiB9CiAKK3ZvaWQgU1ZHQ3Vyc29yRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJv
cGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4QXR0
ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFt
ZXM6OnlBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiB2b2lkIFNWR0N1
cnNvckVsZW1lbnQ6OmFkZENsaWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIG1fY2xp
ZW50cy5hZGQoZWxlbWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50
LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBj
b25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1Niw2ICsyNTYsMjQgQEAgdm9pZCBTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dAogICAgICAgICBTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0K
IAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0VsZW1lbnQ6OmFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCgpCit7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVTVkdEYXRhKCktPmFuaW1hdGVkQXR0
cmlidXRlTWFwKCk7Cit9CisKK0FuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdFbGVtZW50Ojphbmlt
YXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0ZWRBdHRyaWJ1dGVN
YXAgPSBhbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBpZiAoYW5pbWF0ZWRBdHRyaWJ1dGVN
YXAuaXNFbXB0eSgpKQorICAgICAgICBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
KyAgICBpZiAoYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuY29udGFpbnMoYXR0ck5hbWUpKQorICAgICAg
ICByZXR1cm4gYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuZ2V0KGF0dHJOYW1lKTsKKyAgICBpZiAoaXNT
dHlsZWQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPih0
aGlzKS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAg
ICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOworfQorCiBib29sIFNWR0VsZW1lbnQ6OmhhdmVMb2Fk
ZWRSZXF1aXJlZFJlc291cmNlcygpCiB7CiAgICAgTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsMzIg
QEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgogI2luY2x1ZGUg
IlN0eWxlZEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2VudW0gQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHsKKyAgICBBbmltYXRlZEFu
Z2xlLAorICAgIEFuaW1hdGVkQm9vbGVhbiwKKyAgICBBbmltYXRlZENvbG9yLAorICAgIEFuaW1h
dGVkRW51bWVyYXRpb24sCisgICAgQW5pbWF0ZWRJbnRlZ2VyLAorICAgIEFuaW1hdGVkTGVuZ3Ro
LAorICAgIEFuaW1hdGVkTGVuZ3RoTGlzdCwKKyAgICBBbmltYXRlZE51bWJlciwKKyAgICBBbmlt
YXRlZE51bWJlckxpc3QsCisgICAgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlciwKKyAgICBB
bmltYXRlZFBhdGgsCisgICAgQW5pbWF0ZWRQb2ludHMsCisgICAgQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvLAorICAgIEFuaW1hdGVkUmVjdCwKKyAgICBBbmltYXRlZFN0cmluZywKKyAgICBB
bmltYXRlZFRyYW5zZm9ybUxpc3QsCisgICAgQW5pbWF0ZWRVbmtub3duCit9OworCit0eXBlZGVm
IEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKKwogY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgU1ZHQ3Vyc29yRWxlbWVudDsKQEAgLTY0LDYgKzg3LDExIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIHsgfQogCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcCgpOworICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBhbmltYXRlZFBy
b3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkgeyB9CisKICAgICB2b2lk
IHNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMgPSBm
YWxzZSk7CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNm
b3JtKCkgeyByZXR1cm4gMDsgfQpAQCAtMTA4LDYgKzEzNiw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZW1vdmVJbnN0YW5jZU1hcHBpbmcoU1ZHRWxlbWVudEluc3RhbmNlKik7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CisKKyAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCBtX2FuaW1hdGVkQXR0cmlidXRlTWFwOwogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAkocmV2aXNpb24gNzY5NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogCiAgICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFu
Y2UqPiYgZWxlbWVudEluc3RhbmNlcygpIHsgcmV0dXJuIG1fZWxlbWVudEluc3RhbmNlczsgfQog
ICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4mIGVsZW1lbnRJbnN0YW5jZXMo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRJbnN0YW5jZXM7IH0KKyAgICAKKyAgICBIYXNoTWFw
PFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4mIGFuaW1hdGVkQXR0cmlidXRl
TWFwKCkgeyByZXR1cm4gbV9hbmltYXRlZEF0dHJpYnV0ZU1hcDsgfQogCiAgICAgYm9vbCBpbnN0
YW5jZVVwZGF0ZXNCbG9ja2VkKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZXNVcGRhdGVzQmxv
Y2tlZDsgfQogICAgIHZvaWQgc2V0SW5zdGFuY2VVcGRhdGVzQmxvY2tlZChib29sIHZhbHVlKSB7
IG1faW5zdGFuY2VzVXBkYXRlc0Jsb2NrZWQgPSB2YWx1ZTsgfQpAQCAtNjgsNiArNzAsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiBtX2Vs
ZW1lbnRJbnN0YW5jZXM7CisgICAgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJp
YnV0ZVR5cGU+IG1fYW5pbWF0ZWRBdHRyaWJ1dGVNYXA7CiAgICAgU1ZHQ3Vyc29yRWxlbWVudCog
bV9jdXJzb3JFbGVtZW50OwogICAgIENTU0N1cnNvckltYWdlVmFsdWUqIG1fY3Vyc29ySW1hZ2VW
YWx1ZTsKICAgICBib29sIG1faW5zdGFuY2VzVXBkYXRlc0Jsb2NrZWQgOiAxOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Miw2ICsxNDIsMTcgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZQogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJO
YW1lKTsKIH0KIAordm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0
eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OmN5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OnJ4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OnJ5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworfQorCiB2b2lkIFNW
R0VsbGlwc2VFbGVtZW50Ojp0b1BhdGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKHBhdGguaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAg
dmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcs
NiArOTcsMTYgQEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3luY2hyb25pemVQcm9wZQogICAg
ICAgICBzeW5jaHJvbml6ZUluMigpOwogfQogCit2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAg
CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9
IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjptb2RlQXR0ciwgQW5pbWF0ZWRFbnVt
ZXJhdGlvbik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIp
CiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsK
IAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDE2IEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQ6OnN5bmNocm9uaXoKICAgICAgICAgc3luY2hyb25pemVWYWx1ZXMoKTsKIH0KIAordm9pZCBT
VkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
K3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAo
KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp0eXBl
QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6dmFsdWVzQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKK30KKwogUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJF
ZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciop
OwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsMTMgQEAgdm9pZCBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6c3luYwogICAgICAgICBzeW5jaHJvbml6ZUlu
MSgpOwogfQogCit2b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwKCkuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIq
IGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDYgKzM2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9zaXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2
ICsxMjcsMjAgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN5bmNocm9uaXplUAogICAg
ICAgICBzeW5jaHJvbml6ZUs0KCk7CiB9CiAKK3ZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Cisg
ICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1h
dGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6
OmsxQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OmsyQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OmszQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Oms0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworfQor
CiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciop
OwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSwyMyBAQCB2b2lkIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyCiAgICAgICAgIGludmFsaWRhdGUoKTsKIH0KIAor
dm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJv
cGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjppbkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjpvcmRlckF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworICAgIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEFuaW1hdGVk
TnVtYmVyTGlzdCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZGl2
aXNvckF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjpiaWFzQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBBbmltYXRlZEludGVnZXIpOworICAg
IGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldFlBdHRyLCBBbmltYXRl
ZEludGVnZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJh
dG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNl
cnZlQWxwaGFBdHRyLCBBbmltYXRlZEJvb2xlYW4pOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5w
dXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkocmV2aXNpb24g
NzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwog
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JkZXJYSWRlbnRpZmllcigpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsMTcgQEAg
dm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN5bmNocgogICAgIH0KIH0KIAordm9p
ZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aW5BdHRy
LCBBbmltYXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6ZGlmZnVzZUNvbnN0YW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVy
KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjprZXJuZWxVbml0TGVu
Z3RoQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVm
ZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5o
CShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5j
cHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsMTggQEAgdm9p
ZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN5bmNocgogICAgICAgICBzeW5jaHJvbml6
ZVNjYWxlKCk7CiB9CiAKK3ZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisg
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRo
aXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5z
ZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQW5p
bWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIp
OworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRl
cikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYg
KzEwNiwxNSBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3luY2hyb25pCiAgICAg
fSBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQogICAgICAgICBzeW5jaHJv
bml6ZUluMSgpOwogfQorICAgIAordm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAK
KyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0g
dGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYW5pbWF0YWJsZVBy
b3BlcnR5TWFwLnNldChTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXJP
cHRpb25hbE51bWJlcik7Cit9CiAKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZp
bHRlciogZmlsdGVyKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNiArMTIxLDE1
IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGUKICAgICBlbHNlIGlm
IChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkKICAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CiB9Cisg
ICAgCit2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0
eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworICAgIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKK30KIAogdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHJl
dmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM5LDYgKzEzOSwyMyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlCiAgICAgICAgIHN5bmNocm9uaXplTGltaXRpbmdDb25lQW5nbGUoKTsKIH0KIAor
dm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
K3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKwor
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0
aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAu
c2V0KFNWR05hbWVzOjphemltdXRoQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVy
KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0
ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRy
LCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6ekF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjpwb2ludHNBdFhBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRZQXR0ciwgQW5pbWF0ZWROdW1iZXIp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WkF0dHIs
IEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
OjpzcGVjdWxhckV4cG9uZW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOworfQorCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2Us
IGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERl
bHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCShyZXZpc2lv
biA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MCw2ICs3MCwxMyBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3Zn
QXR0cmlidXRlCiAgICAgCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CiB9CisgICAgCit2b2lkIFNWR0ZF
TWVyZ2VOb2RlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcCgpLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmlu
Zyk7Cit9CiAKIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklORyhJbjEsIGluMSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDE2IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6c3luY2hyb25pemUKICAgICB9CiB9CiAKK3ZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
ICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlN
YXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmltYXRh
YmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVy
YXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnJhZGl1c0F0
dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworfQorCiBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw2ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRp
YyBjb25zdCBBdG9taWNTdHJpbmcmIHJhZGl1c1hJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODcsNiArODcsMTYgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cAogICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwogfQogCit2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVy
dHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJv
cGVydHlNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpkeEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
KyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpkeUF0dHIsIEFuaW1hdGVk
TnVtYmVyKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIp
CiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgJ
KHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIq
KTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsMTggQEAgdm9pZCBT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzeW5jaAogICAgIH0KIH0KIAordm9pZCBTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1h
cCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnNw
ZWN1bGFyQ29uc3RhbnRBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIEFuaW1hdGVkTnVtYmVy
KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpzdXJmYWNlU2NhbGVB
dHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdO
YW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIp
OworfQorCiBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50OjpmaW5kTGlnaHRzKCkgY29uc3QKIHsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENo
aWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBG
aWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5n
dGhYSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDEzIEBAIHZvaWQgU1ZHRkVUaWxl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICAgICAgc3luY2hyb25pemVJbjEoKTsKIH0K
IAordm9pZCBTVkdGRVRpbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAoKS5z
ZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmls
dGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xh
cmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsMTggQEAgdm9p
ZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzeW5jaHJvbml6ZQogICAgICAgICBzeW5jaHJvbml6
ZU51bU9jdGF2ZXMoKTsKIH0KIAordm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisg
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRo
aXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5z
ZXQoU1ZHTmFtZXM6OmJhc2VGcmVxdWVuY3lBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpudW1PY3RhdmVz
QXR0ciwgQW5pbWF0ZWRJbnRlZ2VyKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNW
R05hbWVzOjpzZWVkQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1h
dGVkRW51bWVyYXRpb24pOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsdGVyKQog
ewogICAgIGlmIChiYXNlRnJlcXVlbmN5WCgpIDwgMCB8fCBiYXNlRnJlcXVlbmN5WSgpIDwgMCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIq
KTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lYSWRlbnRp
ZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsMjEgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKIH0KIAordm9p
ZCBTVkdGaWx0ZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorewor
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
ICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlN
YXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24p
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRz
QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFi
bGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpmaWx0
ZXJSZXNBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9u
KTsKK30KKwogdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFu
Z2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBj
aGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERl
bHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24g
NzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdl
ID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAK
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDc2OTUw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsMTggQEAgdm9pZCBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIGZpbHRlckVmZmVjdC0+c2V0RWZmZWN0
Qm91bmRhcmllcyhlZmZlY3RCQm94KTsKIH0KIAordm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAg
U1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAg
CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9
IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVBy
b3BlcnR5TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBB
bmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6
cmVzdWx0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0g
MCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0
ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2
OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsNiArNTgsMTEgQEAgdm9pZCBTVkdGb250RWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXJ0eQogICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsK
IH0KIAordm9pZCBTVkdGb250RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKK30KKwogdm9pZCBTVkdGb250RWxlbWVudDo6aW52YWxpZGF0ZUdseXBoQ2FjaGUoKQog
ewogICAgIGlmIChtX2lzR2x5cGhDYWNoZVZhbGlkKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBwcml2YXRlOgog
ICAgIFNWR0ZvbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZh
bHNlOyB9ICAgIAogCiAgICAgdm9pZCBlbnN1cmVHbHlwaENhY2hlKCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNywxOCBAQCB2b2lkIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpzeW5jaHJvbml6CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVBy
b3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAg
ICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFw
ID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5n
dGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFhMaW5rTmFt
ZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29u
c3Q7CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
bHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3NiwxMiBAQCB2b2lk
IFNWR0dseXBoRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVuCiAgICAgU1ZHU3R5bGVkRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCit2b2lkIFNWR0dseXBoRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRBdHRyKQorICAgICAgICBpbnZhbGlkYXRlR2x5cGhD
YWNoZSgpOworfQorCiBzdGF0aWMgaW5saW5lIFNWR0dseXBoSWRlbnRpZmllcjo6QXJhYmljRm9y
bSBwYXJzZUFyYWJpY0Zvcm0oY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAo
dmFsdWUgPT0gIm1lZGlhbCIpCkBAIC0xMzIsNiArMTM4LDEzIEBAIHN0YXRpYyBpbmxpbmUgZmxv
YXQgcGFyc2VTVkdHbHlwaEF0dHJpYnUKICAgICByZXR1cm4gdmFsdWUudG9GbG9hdCgpOwogfQog
Cit2b2lkIFNWR0dseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
K3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICAKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAoKS5zZXQoU1ZHTmFtZXM6OmRBdHRy
LCBBbmltYXRlZFBhdGgpOworfQorCiBTVkdHbHlwaElkZW50aWZpZXIgU1ZHR2x5cGhFbGVtZW50
OjpidWlsZEdlbmVyaWNHbHlwaElkZW50aWZpZXIoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBTVkdHbHlwaElkZW50aWZpZXIgaWRlbnRpZmllcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDggQEAg
cHJpdmF0ZToKICAgICBTVkdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEy
NCwxNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wCiAgICAgICAg
IHN5bmNocm9uaXplSHJlZigpOwogfQogCit2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6c3ByZWFk
TWV0aG9kQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24p
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNm
b3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlN
YXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisgICAgCiB2
b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjQsNiArMTY0LDE5IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnQKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlz
LCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVBy
b3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5z
ZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlv
QXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIGJv
b2wgU1ZHSW1hZ2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKIHsKICAg
ICByZXR1cm4geCgpLmlzUmVsYXRpdmUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3Vt
ZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxNyBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhp
cywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR0xpbmVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVBy
b3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eDFB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdO
YW1lczo6eTFBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6eDJBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVBy
b3BlcnR5TWFwLnNldChTVkdOYW1lczo6eTJBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIHZv
aWQgU1ZHTGluZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBB
U1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50
LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTQsNiArMTE0LDE3IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
OjpzeW5jaHJvbmkKICAgICAgICAgc3luY2hyb25pemVZMigpOwogfQogCit2b2lkIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBTVkdHcmFkaWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9
IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cC5zZXQoU1ZHTmFtZXM6OngxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnkxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OngyQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnkyQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQodGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5o
CShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxNCBAQCB2b2lkIFNWR01QYXRoRWxlbWVudDo6
c3luY2hyb25pemVQcm9wZXJ0CiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwogfQogCit2b2lk
IFNWR01QYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5h
bmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFhM
aW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFNWR1BhdGhFbGVtZW50
KiBTVkdNUGF0aEVsZW1lbnQ6OnBhdGhFbGVtZW50KCkKIHsKICAgICBFbGVtZW50KiB0YXJnZXQg
PSBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChnZXRUYXJnZXQoaHJlZigpKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiAr
NDMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODMsNiArMTgzLDIwIEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXIKICAgICB9CiB9CiAKK3ZvaWQgU1ZHTWFya2VyRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3Bl
cnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cmVmWEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjpyZWZZQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1h
cC5zZXQoU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjptYXJr
ZXJVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6Om9yaWVudEF0dHIsIEFuaW1hdGVkQW5nbGUpOworICAgIGFuaW1h
dGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3Qp
OworfQorCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5n
ZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNo
aWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVs
dGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwxOSBAQCB2b2lkIFNWR01hc2tFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR01hc2tFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxl
UHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp4
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZH
TmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIsIEFu
aW1hdGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFt
ZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKK30KKwogdm9p
ZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJz
ZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDks
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzIsNiArMjcyLDE1IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRCgpCiAgICAg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUodGhpcywg
U1ZHTmFtZXM6OmRBdHRyLCBtX3BhdGhTZWdMaXN0LnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7CiB9
CiAKK3ZvaWQgU1ZHUGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
bmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpkQXR0ciwgQW5pbWF0ZWRQYXRo
KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0
ciwgQW5pbWF0ZWROdW1iZXIpOworfQorCiBTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiog
U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KCkKIHsKICAgICBpZiAoIW1fYW5pbWF0YWJsZVBh
dGhTZWdMaXN0KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJu
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNiArMTk0LDIzIEBAIHZvaWQg
U1ZHUGF0dGVybkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGUKICAgICAgICAgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHUGF0dGVy
bkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5
bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMt
PmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQo
U1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxl
UHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAg
ICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRl
ZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6cGF0dGVy
blVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwLnNldChTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVy
YXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnBhdHRlcm5U
cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOworICAgIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRS
ZWN0KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKK30KKwogdm9pZCBT
VkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJz
ZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTksNiArNTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUq
IGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTIsNiArMTEyLDEzIEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBh
dHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHUG9seUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
KCkuc2V0KFNWR05hbWVzOjpwb2ludHNBdHRyLCBBbmltYXRlZFBvaW50cyk7Cit9CisKIHZvaWQg
U1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUG9pbnRzKCkKIHsKICAgICBpZiAoIW1fcG9pbnRz
LnNob3VsZFN5bmNocm9uaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJ
KHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7IAogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsMTggQEAgdm9pZCBTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQ6OnN5bmNocm9uaQogICAgICAgICBzeW5jaHJvbml6ZVIoKTsKIH0KIAor
dm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0
YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5p
bWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7
CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRl
ZExlbmd0aCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ckF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVz
OjpmeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjpmeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogUmVuZGVyT2JqZWN0KiBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNv
dXJjZVJhZGlhbEdyYWRpZW50KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDYgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSwxOSBA
QCB2b2lkIFNWR1JlY3RFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNW
R1JlY3RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0YWJsZVBy
b3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBh
bmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Omhl
aWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjpyeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVy
dHlNYXAuc2V0KFNWR05hbWVzOjpyeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogdm9pZCBT
VkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VS
VChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OSw2ICszNzksMTkgQEAgdm9pZCBTVkdT
VkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KAogICAgICAgICBTVkdUZXN0czo6c3luY2hy
b25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdTVkdFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlNYXAgPSB0aGlz
LT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYW5pbWF0YWJs
ZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Cisg
ICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdC
b3hBdHRyLCBBbmltYXRlZFJlY3QpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZH
TmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8pOworfQorCiB1bnNpZ25lZCBTVkdTVkdFbGVtZW50OjpzdXNwZW5kUmVkcmF3KHVuc2lnbmVk
IC8qIG1heFdhaXRNaWxsaXNlY29uZHMgKi8pCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBt
ZSAoc2VlIGJ1ZyAxMTI3NSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVh
bCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYg
Kzk3LDEzIEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICAg
ICAgc3luY2hyb25pemVIcmVmKCk7CiB9CiAKK3ZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpLnNl
dChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiB2b2lkIFNWR1Nj
cmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBTVkdFbGVtZW50Ojpp
bnNlcnRlZEludG9Eb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Njcmlw
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3NywxMyBA
QCB2b2lkIFNWR1N0b3BFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIHN5bmNo
cm9uaXplT2Zmc2V0KCk7CiB9CiAKK3ZvaWQgU1ZHU3RvcEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwKCku
c2V0KFNWR05hbWVzOjpvZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIFJlbmRlck9i
amVjdCogU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdHcmFkaWVu
dFN0b3AodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0dy
YWRpZW50U3RvcCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMDAsNiArMjAxLDg1IEBAIGludCBTVkdT
dHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1YKICAgICByZXR1cm4gcHJvcGVydHlOYW1l
VG9JZE1hcC0+Z2V0KGF0dHJOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKK0F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eVRvVHlwZU1h
cCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19jc3NQcm9wZXJ0eU1hcCwgKCkpOworICAgIAorICAgIGlmICghc19jc3NQcm9wZXJ0eU1h
cC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzX2Nzc1Byb3BlcnR5TWFwOworCisgICAgLy8g
RmlsbCB0aGUgbWFwIGZvciB0aGUgZmlyc3QgdXNlLgorICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KGFsaWdubWVudF9iYXNlbGluZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChiYXNlbGluZV9zaGlmdEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nz
c1Byb3BlcnR5TWFwLnNldChjbGlwQXR0ciwgQW5pbWF0ZWRSZWN0KTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChjbGlwX3BhdGhBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9w
ZXJ0eU1hcC5zZXQoY2xpcF9ydWxlQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJv
cGVydHlNYXAuc2V0KFNWR05hbWVzOjpjb2xvckF0dHIsIEFuaW1hdGVkQ29sb3IpOworICAgIHNf
Y3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX2ludGVycG9sYXRpb25BdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY29sb3JfaW50ZXJwb2xhdGlvbl9maWx0ZXJz
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX3By
b2ZpbGVBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY29s
b3JfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOyAKKyAgICBzX2Nzc1Byb3BlcnR5TWFw
LnNldChjdXJzb3JBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQoZGlzcGxheUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNl
dChkb21pbmFudF9iYXNlbGluZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChmaWxsQXR0ciwgQW5pbWF0ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0eU1h
cC5zZXQoZmlsbF9vcGFjaXR5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KGZpbGxfcnVsZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChmaWx0ZXJBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoZmxvb2RfY29sb3JBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChmbG9vZF9vcGFjaXR5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIHNfY3Nz
UHJvcGVydHlNYXAuc2V0KGZvbnRfZmFtaWx5QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNf
Y3NzUHJvcGVydHlNYXAuc2V0KGZvbnRfc2l6ZUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBz
X2Nzc1Byb3BlcnR5TWFwLnNldChmb250X3N0cmV0Y2hBdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZm9udF9zdHlsZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsK
KyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmb250X3ZhcmlhbnRBdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZm9udF93ZWlnaHRBdHRyLCBBbmltYXRlZFN0
cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoaW1hZ2VfcmVuZGVyaW5nQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGtlcm5pbmdBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobGV0dGVyX3NwYWNpbmdBdHRy
LCBBbmltYXRlZExlbmd0aCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobGlnaHRpbmdfY29s
b3JBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXJrZXJf
ZW5kQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hcmtl
cl9taWRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobWFy
a2VyX3N0YXJ0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KG1hc2tBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQob3Bh
Y2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChvdmVy
Zmxvd0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChwb2lu
dGVyX2V2ZW50c0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNl
dChzaGFwZV9yZW5kZXJpbmdBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoc3RvcF9jb2xvckF0dHIsIEFuaW1hdGVkQ29sb3IpOworICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KHN0b3Bfb3BhY2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1By
b3BlcnR5TWFwLnNldChzdHJva2VBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChzdHJva2VfZGFzaGFycmF5QXR0ciwgQW5pbWF0ZWRMZW5ndGhMaXN0KTsKKyAg
ICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VfZGFzaG9mZnNldEF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VfbGluZWNhcEF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VfbGluZWpvaW5BdHRy
LCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX21pdGVy
bGltaXRBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ry
b2tlX29wYWNpdHlBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQoc3Ryb2tlX3dpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIHNfY3NzUHJvcGVydHlN
YXAuc2V0KHRleHRfYW5jaG9yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KHRleHRfZGVjb3JhdGlvbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nz
c1Byb3BlcnR5TWFwLnNldCh0ZXh0X3JlbmRlcmluZ0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAg
ICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh2ZWN0b3JfZWZmZWN0QXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHZpc2liaWxpdHlBdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQod29yZF9zcGFjaW5nQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIHJldHVybiBzX2Nzc1Byb3BlcnR5TWFwOworfQorCitBbmltYXRlZEF0dHJp
YnV0ZVR5cGUgU1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgY3NzUHJvcGVydHlUb1R5cGVNYXAgPSB0aGlzLT5jc3NQcm9wZXJ0eVRv
VHlwZU1hcCgpOworICAgIGlmICghY3NzUHJvcGVydHlUb1R5cGVNYXAuY29udGFpbnMoYXR0ck5h
bWUpKQorICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOworICAgIHJldHVybiBjc3NQcm9w
ZXJ0eVRvVHlwZU1hcC5nZXQoYXR0ck5hbWUpOworfQorCit2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBhbmltYXRhYmxlUHJvcGVydHlN
YXAoKS5zZXQoSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogYm9v
bCBTVkdTdHlsZWRFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAogewogICAgIGlmIChTVkdT
dHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyTmFtZSkg
PiAwKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbnN0YW5jZVVwZGF0
ZXNCbG9ja2VkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGJv
b2wpOwogCisgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9y
Q1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworCiAgICAgdmlydHVhbCBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1T
Y29wZSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkg
eyByZXR1cm4gU3R5bGVkRWxlbWVudDo6c3R5bGUoKTsgfQpAQCAtNjYsNiArNjgsOCBAQCBwcm90
ZWN0ZWQ6IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2
b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
RG9jdW1lbnQoKTsKQEAgLTc5LDYgKzgzLDcgQEAgcHJvdGVjdGVkOiAKIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGNzc1Byb3BlcnR5VG9UeXBlTWFwKCk7CiAKICAgICBI
YXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPiBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3RoczsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2
ICsxMTQsMTMgQEAgUmVuZGVyT2JqZWN0KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbQogICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdQYXRoKHRoaXMpOwogfQogCit2b2lkIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOworICAgIAorICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpLnNldChTVkdOYW1lczo6dHJh
bnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKK30KKwogdm9pZCBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6dG9DbGlwUGF0aChQYXRoJiBwYXRoKSBjb25zdAogewogICAg
IHRvUGF0aERhdGEocGF0aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTksNiArNTksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwogICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoVHJhbnNmb3Jt
LCB0cmFuc2Zvcm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMTUgQEAgdm9pZCBTVkdTeW1ib2xFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgIH0gCiB9CiAKK3ZvaWQgU1ZHU3ltYm9sRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0
YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1l
czo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
LnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpbyk7Cit9CisKIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZl
TGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dmll
d0JveEF0dHIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZp
c2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmly
dHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwx
MyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIHN5
bmNocm9uaXplSHJlZigpOwogfQogCit2b2lkIFNWR1RSZWZFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgYW5pbWF0YWJsZVByb3BlcnR5
TWFwKCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFJl
bmRlck9iamVjdCogU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdJ
bmxpbmUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyMSw2ICsyMjEsMTUgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZQogICAgIC8vIEZJWE1FOiBhbHNvIGhhbmRsZSBhdHRyaWJ1dGUg
Y2hhbmdlcyBmb3IgbGVuZ3RoQWRqdXN0IGFuZCB0ZXh0TGVuZ3RoCiB9CiAKK3ZvaWQgU1ZHVGV4
dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAg
IFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRhYmxlUHJvcGVydHlNYXAg
PSB0aGlzLT5hbmltYXRhYmxlUHJvcGVydHlNYXAoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlN
YXAuc2V0KFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFu
aW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIEFuaW1h
dGVkRW51bWVyYXRpb24pOworfQorCiBib29sIFNWR1RleHRDb250ZW50RWxlbWVudDo6aXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICByZXR1cm4g
YXR0ck5hbWUubWF0Y2hlcyhTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0cikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSw2ICs2NSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0MywxMyBAQCB2b2lkIFNW
R1RleHRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIHN5bmNocm9uaXplVHJh
bnNmb3JtKCk7CiB9CiAKK3ZvaWQgU1ZHVGV4dEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCit7CisgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFw
KCkuc2V0KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwor
fQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAg
ICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lv
biA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDE3IEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50
OjpzeW5jaHJvbml6ZVByb3AKICAgICAgICAgc3luY2hyb25pemVIcmVmKCk7CiB9CiAKK3ZvaWQg
U1ZHVGV4dFBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorewor
ICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGFibGVQcm9w
ZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgpOworICAgIGFuaW1hdGFibGVQ
cm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6Om1ldGhvZEF0dHIsIEFu
aW1hdGVkRW51bWVyYXRpb24pOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFt
ZXM6OnNwYWNpbmdBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhbmltYXRhYmxlUHJv
cGVydHlNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisK
IFJlbmRlck9iamVjdCogU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVu
ZGVyU1ZHVGV4dFBhdGgodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Tm9kZSopIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2
ICsxNjEsMTggQEAgdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbgogICAg
ICAgICBzeW5jaHJvbml6ZVJvdGF0ZSgpOwogfQogCit2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHVGV4dENv
bnRlbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAg
ICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhp
cy0+YW5pbWF0YWJsZVByb3BlcnR5TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNl
dChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYW5pbWF0YWJsZVBy
b3BlcnR5TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAg
YW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRlZE51bWJl
ckxpc3QpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OmR5QXR0ciwg
QW5pbWF0ZWROdW1iZXJMaXN0KTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05h
bWVzOjpyb3RhdGVBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworfQorCiBzdGF0aWMgaW5saW5l
IGJvb2wgbGlzdENvbnRhaW5zUmVsYXRpdmVWYWx1ZShjb25zdCBTVkdMZW5ndGhMaXN0JiBsaXN0
KQogewogICAgIHVuc2lnbmVkIHNpemUgPSBsaXN0LnNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9y
ZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9
IDApOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNyw2ICsyMjcsMTggQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5KAogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0
dHJOYW1lKTsKIH0KIAordm9pZCBTVkdVc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYW5pbWF0YWJsZVByb3BlcnR5TWFwID0gdGhpcy0+YW5pbWF0YWJsZVByb3BlcnR5
TWFwKCk7CisgICAgYW5pbWF0YWJsZVByb3BlcnR5TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKKyAgICBhbmltYXRhYmxlUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjp5
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZH
TmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0
eU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhbmlt
YXRhYmxlUHJvcGVydHlNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZExlbmd0
aCk7Cit9CisKIHN0YXRpYyB2b2lkIHVwZGF0ZUNvbnRhaW5lclNpemUoU1ZHVXNlRWxlbWVudCog
dXNlRWxlbWVudCwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSkKIHsKICAgICAv
LyBEZXB0aC1maXJzdCB1c2VkIHRvIHdyaXRlIHRoZSBtZXRob2QgaW4gZWFybHkgZXhpdCBzdHls
ZSwgbm8gcGFydGljdWxhciBvdGhlciByZWFzb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
IHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgwLDYgKzgwLDE1IEBAIHZvaWQgU1ZHVmlld0VsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkKICAgICB9CiB9CiAKK3ZvaWQgU1ZHVmlld0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGFuaW1hdGFibGVQcm9wZXJ0eU1hcCA9IHRoaXMtPmFuaW1hdGFibGVQcm9wZXJ0eU1hcCgp
OworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBB
bmltYXRlZFJlY3QpOworICAgIGFuaW1hdGFibGVQcm9wZXJ0eU1hcC5zZXQoU1ZHTmFtZXM6OnBy
ZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworfQor
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1ZpZXdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdF
bGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsg
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80765</attachid>
            <date>2011-02-01 09:11:28 -0800</date>
            <delta_ts>2011-02-08 14:26:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53442-20110201181123.patch</filename>
            <type>text/plain</type>
            <size>102638</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3MjUyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkxIEBACisyMDExLTAyLTAxICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQgbmVlZHMgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGFuaW1hdGVkIGF0dHJpYnV0ZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQ0MgorCisgICAgICAgIEZvciBhbmltYXRpb25zLCB3
ZSBuZWVkIHRvIGtub3cgdGhlIFNWRyBwcm9wZXJ0eSB0eXBlIGZvciBhIFhNTCBhdHRyaWJ1dGUu
IEEgc2ltcGxlIHN0YXRpYyBtYXBwaW5nIGJldHdlZW4KKyAgICAgICAgYXR0cmlidXRlIG5hbWUg
YW5kIGEgdHlwZSBpcyBub3QgcG9zc2libGUsIHNpbmNlIG9uZSBhdHRyaWJ1dGUgbmFtZSBjYW4g
YmUgYm91bmRlZCB0byBkaWZmZXJlbnQgcHJvcGVydHkgdHlwZXM6CisgICAgICAgIHggY2FuIGJl
IGEgU1ZHTnVtYmVyTGlzdCwgYSBTVkdOdW1iZXIgb3IgYSBTVkdMZW5ndGguIFNvIHdlIGhhdmUg
dG8gYXNrIGV2ZXJ5IHRhcmdldCBlbGVtZW50LCBpZiBpdCBzdXBwb3J0cworICAgICAgICB0aGUg
YW5pbWF0ZWQgYXR0cmlidXRlIGFuZCBvZiB3aGljaCB0eXBlIGl0IGlzLiBKdXN0IGZvciBDU1Mg
cHJvcGVydGllcyB3ZSBjYW4gdXNlIGFuIGV4cGxpY2l0ZSBzdGF0aWMgbWFwcGluZ3MgYmV0d2Vl
bgorICAgICAgICB0aGUgbmFtZSBhbmQgdGhlIHR5cGUuIFRoaXMgaXMgZG9uZSBpbiBhIHN0YXRp
YyBtYXAgaW4gU1ZHU3R5bGVkRWxlbWVudC4gQWxsIG90aGVyIG1hcHBpbmdzIGFyZSBzdG9yZWQg
d2l0aCBhIGxvY2FsCisgICAgICAgIEhhc2hNYXAgaW4gU1ZHRWxlbWVudC4gVGhpcyBtYXAgZ2V0
cyBmaWxsZWQgb25jZSB3aXRoIHRoZSBmdW5jdGlvbiBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAgYW5kIG5lZWRzIHRvIGJlCisgICAgICAgIGluY2x1ZGVkIGluIGV2ZXJ5IFNWRyBlbGVt
ZW50LgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBmdW5jdGlvbmFsaXR5LCBzbyBubyBuZXcgdGVz
dCBjYXNlcy4KKworICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHQUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVFbGVtZW50OjpkZXRlcm1pbmVQcm9wZXJ0eVR5cGUpOgorICAgICAgICAqIHN2
Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojph
bmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjphbmltYXRlZEF0dHJpYnV0ZU1hcCk6Cisg
ICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsbGlwc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
SW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAq
IHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAqIHN2Zy9TVkdGb250
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0dseXBoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaEVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NW
R0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcv
U1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTVBh
dGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTWFya2VyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAg
ICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3Zn
L1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZH
UG9seUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlY3RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgor
ICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3Jp
cHRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2
Zy9TVkdTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3BlcnR5VG9U
eXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJv
cGVydHlUeXBlRm9yQ1NTUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZH
U3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3ltYm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RS
ZWZFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2
Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAg
ICAgICogc3ZnL1NWR1RleHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdVc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAq
IHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5oOgorCiAyMDExLTAyLTAx
ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNw
cAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDE1IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY28KICAgICB9CiB9CiAKK3ZvaWQgU1ZHQUVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKK30KKwogdm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCwxMyBAQCB2b2lkIFNWR0FsdEdseXBo
RWxlbWVudDo6c3luY2hyb25pemVQcm9wCiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwogfQog
Cit2b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKK3sKKyAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKKworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFhM
aW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIHZvaWQgU1ZHQWx0R2x5
cGhFbGVtZW50OjpzZXRHbHlwaFJlZihjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQ
cm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNvbG9yRGlzdGFuY2UuaCIKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVk
ZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNl
clV0aWxpdGllcy5oIgpAQCAtODQsMTUgKzg1LDE4IEBAIHN0YXRpYyBib29sIHBhcnNlTnVtYmVy
VmFsdWVBbmRVbml0KGNvbnMKIAogU1ZHQW5pbWF0ZUVsZW1lbnQ6OlByb3BlcnR5VHlwZSBTVkdB
bmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlUeXBlKGNvbnN0IFN0cmluZyYgYXR0cmli
dXRlKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEgZnVsbCBwcm9wZXJ0eSB0YWJs
ZSBmb3IgZmlndXJpbmcgdGhpcyBvdXQgcmVsaWFibHkuCisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBub3QgYWxsb3cgYW5pbWF0aW9uIG9mIGF0dHJpYnV0ZSB0eXBlcyBvdGhlciB0aGFuIEFuaW1h
dGVkQ29sb3IgZm9yIDxhbmltYXRlQ29sb3I+LgogICAgIGlmIChoYXNUYWdOYW1lKFNWR05hbWVz
OjphbmltYXRlQ29sb3JUYWcpKQogICAgICAgICByZXR1cm4gQ29sb3JQcm9wZXJ0eTsKLSAgICBp
ZiAoYXR0cmlidXRlID09ICJkIikKKworICAgIC8vIEZJWE1FOiBOb3cgdGhhdCB3ZSBoYXZlIGEg
ZnVsbCBwcm9wZXJ0eSB0YWJsZSB3ZSBuZWVkIGEgbW9yZSBncmFudWxhciB0eXBlIHNwZWNpZmlj
IGFuaW1hdGlvbi4KKyAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgdHlwZSA9IHRhcmdldEVsZW1l
bnQoKS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxs
QXRvbSwgYXR0cmlidXRlLCBudWxsQXRvbSkpOworICAgIGlmICh0eXBlID09IEFuaW1hdGVkQ29s
b3IpCisgICAgICAgIHJldHVybiBDb2xvclByb3BlcnR5OworICAgIGlmICh0eXBlID09IEFuaW1h
dGVkUGF0aCkKICAgICAgICAgcmV0dXJuIFBhdGhQcm9wZXJ0eTsKLSAgICBpZiAoYXR0cmlidXRl
ID09ICJwb2ludHMiKQorICAgIGlmICh0eXBlID09IEFuaW1hdGVkUG9pbnRzKQogICAgICAgICBy
ZXR1cm4gUG9pbnRzUHJvcGVydHk7Ci0gICAgaWYgKGF0dHJpYnV0ZSA9PSAiY29sb3IiIHx8IGF0
dHJpYnV0ZSA9PSAiZmlsbCIgfHwgYXR0cmlidXRlID09ICJzdHJva2UiKQotICAgICAgICByZXR1
cm4gQ29sb3JQcm9wZXJ0eTsKICAgICByZXR1cm4gTnVtYmVyUHJvcGVydHk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzIsNiArMTMyLDE2IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXIKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRy
TmFtZSk7CiB9CiAKK3ZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworfQorCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29u
c3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOworCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDIsNiArMTAyLDE0IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3AKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlz
LCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwor
fQorCiB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hp
bGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBj
aGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmly
dHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBO
b2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENv
dW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiwyMCBA
QCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50CiAgICAgICAgIHN5bmNo
cm9uaXplT2Zmc2V0KCk7CiB9CiAKK3ZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyLCBBbmltYXRl
ZE51bWJlckxpc3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6c2xvcGVBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjppbnRlcmNlcHRBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyLCBB
bmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpleHBvbmVudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9mZnNldEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKK30K
KwogQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudDo6dHJhbnNmZXJGdW5jdGlvbigpIGNvbnN0CiB7CiAgICAgQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiBmdW5jOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgCiBwcml2YXRl
OgogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYg
KzcyLDE2IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9
CiB9CiAKK3ZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKK3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWROdW1iZXIp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtO
YW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogdm9pZCBTVkdDdXJzb3JFbGVt
ZW50OjphZGRDbGllbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBtX2NsaWVudHMuYWRk
KGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZp
c2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiAr
MjU2LDI0IEBAIHZvaWQgU1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXQKICAgICAg
ICAgU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKK0F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVTVkdEYXRhKCktPmFuaW1hdGVkQXR0cmli
dXRlTWFwKCk7Cit9CisKK0FuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdFbGVtZW50OjphbmltYXRl
ZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
K3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0ZWRBdHRyaWJ1dGVNYXAg
PSBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGlmIChhbmltYXRlZEF0dHJpYnV0
ZU1hcC5pc0VtcHR5KCkpCisgICAgICAgIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworICAgIGlmIChhbmltYXRlZEF0dHJpYnV0ZU1hcC5jb250YWlucyhhdHRyTmFtZSkpCisgICAg
ICAgIHJldHVybiBhbmltYXRlZEF0dHJpYnV0ZU1hcC5nZXQoYXR0ck5hbWUpOworICAgIGlmIChp
c1N0eWxlZCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+
KHRoaXMpLT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckNTU1Byb3BlcnR5KGF0dHJOYW1lKTsKKwor
ICAgIHJldHVybiBBbmltYXRlZFVua25vd247Cit9CisKIGJvb2wgU1ZHRWxlbWVudDo6aGF2ZUxv
YWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKIHsKICAgICBOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSwz
MiBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCiAjaW5jbHVk
ZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorZW51bSBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgeworICAgIEFuaW1hdGVk
QW5nbGUsCisgICAgQW5pbWF0ZWRCb29sZWFuLAorICAgIEFuaW1hdGVkQ29sb3IsCisgICAgQW5p
bWF0ZWRFbnVtZXJhdGlvbiwKKyAgICBBbmltYXRlZEludGVnZXIsCisgICAgQW5pbWF0ZWRMZW5n
dGgsCisgICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAorICAgIEFuaW1hdGVkTnVtYmVyLAorICAgIEFu
aW1hdGVkTnVtYmVyTGlzdCwKKyAgICBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLAorICAg
IEFuaW1hdGVkUGF0aCwKKyAgICBBbmltYXRlZFBvaW50cywKKyAgICBBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8sCisgICAgQW5pbWF0ZWRSZWN0LAorICAgIEFuaW1hdGVkU3RyaW5nLAorICAg
IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwKKyAgICBBbmltYXRlZFVua25vd24KK307CisKK3R5cGVk
ZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+IEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOworCiBjbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVlOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBTVkdDdXJzb3JFbGVtZW50OwpAQCAtNjQsNiArODcsMTEgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJikgeyB9CiAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYW5p
bWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworCisg
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpIHsgfQorCiAg
ICAgdm9pZCBzZW5kU1ZHTG9hZEV2ZW50SWZQb3NzaWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZl
bnRzID0gZmFsc2UpOwogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudFJhcmVEYXRhLmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIHB1Ymxp
YzoKIAogICAgIEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4mIGVsZW1lbnRJbnN0YW5jZXMo
KSB7IHJldHVybiBtX2VsZW1lbnRJbnN0YW5jZXM7IH0KICAgICBjb25zdCBIYXNoU2V0PFNWR0Vs
ZW1lbnRJbnN0YW5jZSo+JiBlbGVtZW50SW5zdGFuY2VzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVt
ZW50SW5zdGFuY2VzOyB9CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGFu
aW1hdGVkQXR0cmlidXRlTWFwKCkgeyByZXR1cm4gbV9hbmltYXRlZEF0dHJpYnV0ZU1hcDsgfQog
CiAgICAgYm9vbCBpbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0
YW5jZXNVcGRhdGVzQmxvY2tlZDsgfQogICAgIHZvaWQgc2V0SW5zdGFuY2VVcGRhdGVzQmxvY2tl
ZChib29sIHZhbHVlKSB7IG1faW5zdGFuY2VzVXBkYXRlc0Jsb2NrZWQgPSB2YWx1ZTsgfQpAQCAt
NjgsNiArNzAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSGFzaFNldDxTVkdFbGVtZW50
SW5zdGFuY2UqPiBtX2VsZW1lbnRJbnN0YW5jZXM7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAgbV9hbmltYXRlZEF0dHJpYnV0ZU1hcDsKICAgICBTVkdDdXJzb3JFbGVtZW50KiBtX2N1
cnNvckVsZW1lbnQ7CiAgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogbV9jdXJzb3JJbWFnZVZhbHVl
OwogICAgIGJvb2wgbV9pbnN0YW5jZXNVcGRhdGVzQmxvY2tlZCA6IDE7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQyLDYgKzE0MiwxNyBAQCB2b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUp
OwogfQogCit2b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJ4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnlBdHRyLCBBbmlt
YXRlZExlbmd0aCk7Cit9CisKIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0
aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikg
Y29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywxNiBAQCB2b2lkIFNWR0ZFQmxlbmRFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlCiAgICAgICAgIHN5bmNocm9uaXplSW4yKCk7CiB9CiAKK3Zv
aWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7
CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptb2RlQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlv
bik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAg
ICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lv
biA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAg
IC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDYgKzk4LDE2IEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN5
bmNocm9uaXoKICAgICAgICAgc3luY2hyb25pemVWYWx1ZXMoKTsKIH0KIAordm9pZCBTVkdGRUNv
bG9yTWF0cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnR5cGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZhbHVlc0F0dHIsIEFuaW1hdGVkTnVtYmVy
TGlzdCk7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0
ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0
aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDYgKzY0LDEzIEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnN5bmMKICAg
ICAgICAgc3luY2hyb25pemVJbjEoKTsKIH0KIAordm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOworICAgIAorICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05h
bWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlu
cHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHJl
dmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBG
aWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsMjAgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQ6OnN5bmNocm9uaXplUAogICAgICAgICBzeW5jaHJvbml6ZUs0KCk7CiB9CiAKK3ZvaWQg
U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQor
eworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6aW4yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBBbmltYXRlZEVudW1l
cmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omsx
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6azJBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprM0F0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Oms0QXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb21wb3NpdGVFbGVt
ZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRl
cikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSwyMyBAQCB2
b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyCiAgICAgICAgIGludmFsaWRh
dGUoKTsKIH0KIAordm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9yZGVyQXR0ciwgQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjprZXJuZWxNYXRyaXhBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZGl2aXNvckF0dHIsIEFuaW1h
dGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OmJpYXNBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp0YXJnZXRYQXR0ciwgQW5pbWF0ZWRJbnRlZ2VyKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldFlBdHRyLCBBbmltYXRl
ZEludGVnZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
b3BlcmF0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBBbmltYXRlZE51
bWJlck9wdGlvbmFsTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCBBbmltYXRlZEJvb2xlYW4pOworfQorCiBQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZp
bHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgb3JkZXJYSWRl
bnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
Niw2ICsxMzYsMTcgQEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN5bmNocgog
ICAgIH0KIH0KIAordm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0
aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRy
LCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciwgQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQx
ID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxk
KFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsMTggQEAgdm9pZCBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OnN5bmNocgogICAgICAgICBzeW5jaHJvbml6ZVNjYWxlKCk7CiB9
CiAKK3ZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW4yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eENoYW5uZWxTZWxl
Y3RvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIsIEFuaW1hdGVkRW51bWVy
YXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c2Nh
bGVBdHRyLCBBbmltYXRlZE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRl
ckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0g
ZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAK
ICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDE1IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50OjpzeW5jaHJvbmkKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpp
bkF0dHIpCiAgICAgICAgIHN5bmNocm9uaXplSW4xKCk7CiB9CisgICAgCit2b2lkIFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIp
OworfQogCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZERldmlhdGlv
blhJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSwxNSBAQCB2b2lkIFNWR0ZF
SW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlCiAgICAgZWxzZSBpZiAoU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCiAgICAgICAgIHN5
bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwogfQorICAgIAordm9pZCBTVkdG
RUltYWdlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2
ZUFzcGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKK30KIAogdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSwyMyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlCiAgICAgICAgIHN5bmNocm9uaXplTGltaXRpbmdDb25lQW5nbGUoKTsK
IH0KIAordm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKK3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjphemltdXRoQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZWxl
dmF0aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZE51bWJlcik7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp6QXR0ciwgQW5pbWF0
ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
cG9pbnRzQXRYQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRZQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRaQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOworfQorCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0
ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hp
bGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5o
CShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSog
YmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERl
bHRhID0gMCk7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZpc2lv
biA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCwxMyBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxl
bWVudDo6c3ZnQXR0cmlidXRlCiAgICAgCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CiB9CisgICAgCit2
b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKK3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
KworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05hbWVzOjppbkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKK30KIAogdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucwogICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsMTYgQEAgdm9pZCBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50OjpzeW5jaHJvbml6ZQogICAgIH0KIH0KIAordm9pZCBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6b3BlcmF0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJhZGl1c0F0dHIsIEFuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmls
dGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVy
LT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHJhZGl1c1hJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcsMTYgQEAg
dm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcAogICAgICAgICBzeW5jaHJv
bml6ZUluMSgpOwogfQogCit2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMt
PmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmR4QXR0ciwgQW5pbWF0ZWROdW1iZXIp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHlBdHRyLCBB
bmltYXRlZE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9mZnNl
dEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciog
ZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwg
RmlsdGVyKik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDE4IEBA
IHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c3luY2gKICAgICB9CiB9CiAKK3Zv
aWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyLCBBbmltYXRlZE51
bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzcGVj
dWxhckV4cG9uZW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5p
dExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworfQorCiBQYXNzUmVm
UHRyPExpZ2h0U291cmNlPiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaW5kTGlnaHRz
KCkgY29uc3QKIHsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5v
ZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24g
NzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDYgKzY5LDEzIEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6c3luY2hy
b25pemVQcm9wZXIKICAgICAgICAgc3luY2hyb25pemVJbjEoKTsKIH0KIAordm9pZCBTVkdGRVRp
bGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CisKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChTVkdOYW1l
czo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVy
LCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVU
aWxlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCwxOCBAQCB2b2lkIFNWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQ6OnN5bmNocm9uaXplCiAgICAgICAgIHN5bmNocm9uaXplTnVtT2N0YXZl
cygpOwogfQogCit2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9u
YWxOdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
bnVtT2N0YXZlc0F0dHIsIEFuaW1hdGVkSW50ZWdlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzZWVkQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLCBB
bmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnR5cGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKK30KKwogUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1
aWxkZXIqLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBpZiAoYmFzZUZyZXF1ZW5jeVgoKSA8IDAg
fHwgYmFzZUZyZXF1ZW5jeVkoKSA8IDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVU
dXJidWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBiYXNlRnJlcXVlbmN5WElkZW50aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDIx
IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICAgICAgc3lu
Y2hyb25pemVIcmVmKCk7CiB9CiAKK3ZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6ZmlsdGVyVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBB
bmltYXRlZEVudW1lcmF0aW9uKTsKK30KKwogdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSog
YWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNo
YW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZp
cnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwg
Tm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRD
b3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5j
cHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEs
MTggQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIGZpbHRl
ckVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhlZmZlY3RCQm94KTsKIH0KIAordm9pZCBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBB
bmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExl
bmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyZXN1
bHRBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZp
c2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIg
PSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBp
bnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OCw2ICs1OCwxMSBAQCB2b2lkIFNWR0ZvbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnR5CiAgICAgICAgIHN5bmNocm9uaXplRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpOwogfQog
Cit2b2lkIFNWR0ZvbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQor
eworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworfQorCiB2b2lkIFNWR0ZvbnRFbGVtZW50OjppbnZhbGlkYXRlR2x5cGhDYWNoZSgpCiB7CiAg
ICAgaWYgKG1faXNHbHlwaENhY2hlVmFsaWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAg
U1ZHRm9udEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7
IH0gICAgCiAKICAgICB2b2lkIGVuc3VyZUdseXBoQ2FjaGUoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24g
NzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDE4IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQ6OnN5bmNocm9uaXoKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVy
dGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAor
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Ondp
ZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHls
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24g
NzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiwxMyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHBhcnNlU1ZH
R2x5cGhBdHRyaWJ1CiAgICAgcmV0dXJuIHZhbHVlLnRvRmxvYXQoKTsKIH0KIAordm9pZCBTVkdH
bHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZH
U3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFtZXM6OmRBdHRyLCBBbmlt
YXRlZFBhdGgpOworfQorCiBTVkdHbHlwaElkZW50aWZpZXIgU1ZHR2x5cGhFbGVtZW50OjpidWls
ZEdlbmVyaWNHbHlwaElkZW50aWZpZXIoY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAg
ICBTVkdHbHlwaElkZW50aWZpZXIgaWRlbnRpZmllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgcHJpdmF0
ZToKICAgICBTVkdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAg
dmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tRG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDE3IEBAIHZv
aWQgU1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3AKICAgICAgICAgc3luY2hyb25p
emVIcmVmKCk7CiB9CiAKK3ZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpz
cHJlYWRNZXRob2RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBBbmltYXRlZEVu
dW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKK30KKyAgICAKIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJD
aGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwg
Y2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVt
ZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsMTkgQEAgdm9pZCBTVkdJ
bWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydAogICAgICAgICBTVkdUZXN0czo6c3luY2hy
b25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdJbWFnZUVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0
dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisK
IGJvb2wgU1ZHSW1hZ2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKIHsK
ICAgICByZXR1cm4geCgpLmlzUmVsYXRpdmUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0Rv
Y3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxNyBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzeW5j
aHJvbml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXMo
dGhpcywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR0xpbmVFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eDFBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OngyQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
eTJBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnRvUGF0
aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikg
Y29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDE3
IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbmkKICAgICAgICAgc3lu
Y2hyb25pemVZMigpOwogfQogCit2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OngxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6eTFBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MkF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnkyQXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQo
dGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
IAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwxNCBAQCB2b2lkIFNWR01QYXRoRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXJ0CiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwogfQog
Cit2b2lkIFNWR01QYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
K3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKwor
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7
Cit9CisKIFNWR1BhdGhFbGVtZW50KiBTVkdNUGF0aEVsZW1lbnQ6OnBhdGhFbGVtZW50KCkKIHsK
ICAgICBFbGVtZW50KiB0YXJnZXQgPSBkb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChnZXRUYXJn
ZXQoaHJlZigpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCShyZXZp
c2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
cmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsNiArMTgzLDIwIEBAIHZvaWQg
U1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICB9CiB9CiAKK3ZvaWQgU1ZH
TWFya2VyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBT
VkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAK
KyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVmWEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJlZllBdHRyLCBB
bmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjptYXJrZXJXaWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtl
clVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvcmllbnRBdHRyLCBBbmltYXRlZEFuZ2xlKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmlt
YXRlZFJlY3QpOworfQorCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5n
ZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGls
ZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZv
cmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEg
PSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCwxOSBAQCB2b2lkIFNWR01hc2tF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR01hc2tFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFza1VuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJh
dGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptYXNr
Q29udGVudFVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIHZvaWQgU1ZHTWFz
a0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVm
b3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAg
ICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZv
cmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNl
ciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAs
IGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDYgKzI3
MiwxNSBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpzeW5jaHJvbml6ZUQoKQogICAgIFNWR0FuaW1h
dGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1ZT46OnN5bmNocm9uaXplKHRoaXMsIFNWR05hbWVz
OjpkQXR0ciwgbV9wYXRoU2VnTGlzdC52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwogfQogCit2b2lk
IFNWR1BhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAg
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZEF0dHIsIEFuaW1h
dGVkUGF0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpw
YXRoTGVuZ3RoQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworfQorCiBTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZiogU1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0KCkKIHsKICAgICBpZiAoIW1f
YW5pbWF0YWJsZVBhdGhTZWdMaXN0KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNiArMTk0
LDIzIEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGUKICAgICAgICAg
U1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3Zv
aWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7
CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRy
LCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9u
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBhdHRlcm5U
cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOworICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIs
IEFuaW1hdGVkUmVjdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
KTsKK30KKwogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQg
Y2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnRE
ZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNo
YW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDAp
OwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNw
cAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDEzIEBAIHZvaWQgU1ZHUG9seUVsZW1l
bnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJv
cGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK3ZvaWQgU1ZHUG9seUVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0dHIsIEFuaW1hdGVk
UG9pbnRzKTsKK30KKwogdm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMoKQog
ewogICAgIGlmICghbV9wb2ludHMuc2hvdWxkU3luY2hyb25pemUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsg
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwx
OCBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3luY2hyb25pCiAgICAgICAgIHN5
bmNocm9uaXplUigpOwogfQogCit2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ckF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmZ4QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6ZnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3Vy
Y2VSYWRpYWxHcmFkaWVudCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsMTkgQEAg
dm9pZCBTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQogICAgICAgICBTVkdUZXN0
czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAordm9pZCBTVkdS
ZWN0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExl
bmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnJ5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworfQorCiB2b2lkIFNWR1JlY3RFbGVtZW50Ojp0b1Bh
dGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYp
IGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lv
biA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSwxOSBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhp
cywgYXR0ck5hbWUpOwogfQogCit2b2lkIFNWR1NWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworfQorCiB1bnNpZ25lZCBTVkdTVkdFbGVtZW50Ojpz
dXNwZW5kUmVkcmF3KHVuc2lnbmVkIC8qIG1heFdhaXRNaWxsaXNlY29uZHMgKi8pCiB7CiAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBtZSAoc2VlIGJ1ZyAxMTI3NSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDEzIEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZXIKICAgICAgICAgc3luY2hyb25pemVIcmVmKCk7CiB9CiAKK3ZvaWQgU1ZH
U2NyaXB0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBT
VkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRl
ZFN0cmluZyk7Cit9CisKIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKQogewogICAgIFNWR0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NiArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRl
KEF0dHJpYnV0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRy
ZW4oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCShyZXZpc2lv
biA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc3LDYgKzc3LDEzIEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkKICAgICAgICAgc3luY2hyb25pemVPZmZzZXQoKTsKIH0KIAordm9pZCBTVkdT
dG9wRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdT
dHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChTVkdOYW1lczo6b2Zmc2V0QXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR1N0b3BFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKHRoaXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFkaWVudFN0b3AoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU1ZHU1ZHRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMjAwLDYgKzIwMSw4NSBAQCBpbnQgU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJ
ZEZvclNWCiAgICAgcmV0dXJuIHByb3BlcnR5TmFtZVRvSWRNYXAtPmdldChhdHRyTmFtZS5sb2Nh
bE5hbWUoKS5pbXBsKCkpOwogfQogCitzdGF0aWMgaW5saW5lIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19jc3NQcm9wZXJ0eU1hcCwgKCkpOworICAg
IAorICAgIGlmICghc19jc3NQcm9wZXJ0eU1hcC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBz
X2Nzc1Byb3BlcnR5TWFwOworCisgICAgLy8gRmlsbCB0aGUgbWFwIGZvciB0aGUgZmlyc3QgdXNl
LgorICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGFsaWdubWVudF9iYXNlbGluZUF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChiYXNlbGluZV9zaGlmdEF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjbGlwQXR0ciwgQW5p
bWF0ZWRSZWN0KTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjbGlwX3BhdGhBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY2xpcF9ydWxlQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KFNWR05hbWVzOjpjb2xvckF0
dHIsIEFuaW1hdGVkQ29sb3IpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX2ludGVy
cG9sYXRpb25BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
Y29sb3JfaW50ZXJwb2xhdGlvbl9maWx0ZXJzQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNf
Y3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX3Byb2ZpbGVBdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY29sb3JfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOyAKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjdXJzb3JBdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZGlzcGxheUF0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChkb21pbmFudF9iYXNlbGluZUF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmaWxsQXR0ciwgQW5pbWF0ZWRD
b2xvcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmlsbF9vcGFjaXR5QXR0ciwgQW5pbWF0
ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZpbGxfcnVsZUF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmaWx0ZXJBdHRyLCBBbmltYXRl
ZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmxvb2RfY29sb3JBdHRyLCBBbmlt
YXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmbG9vZF9vcGFjaXR5QXR0ciwg
QW5pbWF0ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZvbnRfZmFtaWx5QXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZvbnRfc2l6ZUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmb250X3N0cmV0
Y2hBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZm9udF9z
dHlsZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmb250
X3ZhcmlhbnRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
Zm9udF93ZWlnaHRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQoaW1hZ2VfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KGtlcm5pbmdBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQobGV0dGVyX3NwYWNpbmdBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgc19jc3NQ
cm9wZXJ0eU1hcC5zZXQobGlnaHRpbmdfY29sb3JBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBz
X2Nzc1Byb3BlcnR5TWFwLnNldChtYXJrZXJfZW5kQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAg
IHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hcmtlcl9taWRBdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobWFya2VyX3N0YXJ0QXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hc2tBdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQob3BhY2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAg
ICBzX2Nzc1Byb3BlcnR5TWFwLnNldChvdmVyZmxvd0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAg
ICBzX2Nzc1Byb3BlcnR5TWFwLnNldChwb2ludGVyX2V2ZW50c0F0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzaGFwZV9yZW5kZXJpbmdBdHRyLCBBbmltYXRl
ZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3RvcF9jb2xvckF0dHIsIEFuaW1h
dGVkQ29sb3IpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0b3Bfb3BhY2l0eUF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VBdHRyLCBBbmlt
YXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VfZGFzaGFycmF5QXR0
ciwgQW5pbWF0ZWRMZW5ndGhMaXN0KTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2Vf
ZGFzaG9mZnNldEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNl
dChzdHJva2VfbGluZWNhcEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5
TWFwLnNldChzdHJva2VfbGluZWpvaW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQ
cm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX21pdGVybGltaXRBdHRyLCBBbmltYXRlZE51bWJlcik7Cisg
ICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX29wYWNpdHlBdHRyLCBBbmltYXRlZE51bWJl
cik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX3dpZHRoQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHRleHRfYW5jaG9yQXR0ciwgQW5pbWF0
ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHRleHRfZGVjb3JhdGlvbkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh0ZXh0X3JlbmRlcmlu
Z0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh2ZWN0b3Jf
ZWZmZWN0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHZp
c2liaWxpdHlBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
d29yZF9zcGFjaW5nQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIHJldHVybiBzX2Nzc1Byb3Bl
cnR5TWFwOworfQorCitBbmltYXRlZEF0dHJpYnV0ZVR5cGUgU1ZHU3R5bGVkRWxlbWVudDo6YW5p
bWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgY3NzUHJvcGVydHlUeXBl
TWFwID0gY3NzUHJvcGVydHlUb1R5cGVNYXAoKTsKKyAgICBpZiAoIWNzc1Byb3BlcnR5VHlwZU1h
cC5jb250YWlucyhhdHRyTmFtZSkpCisgICAgICAgIHJldHVybiBBbmltYXRlZFVua25vd247Cisg
ICAgcmV0dXJuIGNzc1Byb3BlcnR5VHlwZU1hcC5nZXQoYXR0ck5hbWUpOworfQorCit2b2lkIFNW
R1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAg
U1ZHRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChIVE1MTmFtZXM6OmNsYXNzQXR0ciwgQW5pbWF0
ZWRTdHJpbmcpOworfQorCiBib29sIFNWR1N0eWxlZEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNv
bnN0CiB7CiAgICAgaWYgKFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRy
aWJ1dGVOYW1lKGF0dHJOYW1lKSA+IDApIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAg
ICBib29sIGluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSBjb25zdDsKICAgICB2b2lkIHNldEluc3Rh
bmNlVXBkYXRlc0Jsb2NrZWQoYm9vbCk7CiAKKyAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYW5p
bWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisK
ICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9y
bShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdDsKIAogICAgIHZpcnR1YWwgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUoKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpzdHlsZSgpOyB9CkBA
IC02Niw2ICs2OCw4IEBAIHByb3RlY3RlZDogCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAorICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTMgQEAgUmVuZGVyT2JqZWN0KiBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbQogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
VkdQYXRoKHRoaXMpOwogfQogCit2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRy
YW5zZm9ybUxpc3QpOworfQorCiB2b2lkIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp0
b0NsaXBQYXRoKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgdG9QYXRoRGF0YShwYXRoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAgICAgREVDTEFS
RV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04OCw2ICs4OCwxNSBAQCB2b2lkIFNWR1N5bWJvbEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
CiAgICAgfSAKIH0KIAordm9pZCBTVkdTeW1ib2xFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3
Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW8pOworfQorCiBib29sIFNWR1N5bWJvbEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxl
bmd0aHMoKSBjb25zdAogewogICAgIHJldHVybiBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnZpZXdC
b3hBdHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTMg
QEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQogICAgICAgICBzeW5j
aHJvbml6ZUhyZWYoKTsKIH0KIAordm9pZCBTVkdUUmVmRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisK
IFJlbmRlck9iamVjdCogU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
VkdJbmxpbmUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAg
dmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw2ICsyMjEsMTUgQEAgdm9pZCBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZQogICAgIC8vIEZJWE1FOiBhbHNvIGhhbmRsZSBhdHRyaWJ1
dGUgY2hhbmdlcyBmb3IgbGVuZ3RoQWRqdXN0IGFuZCB0ZXh0TGVuZ3RoCiB9CiAKK3ZvaWQgU1ZH
VGV4dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorewor
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
ICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
bGVuZ3RoQWRqdXN0QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIGJvb2wgU1ZHVGV4
dENvbnRlbnRFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewogICAgIHJldHVybiBhdHRyTmFtZS5tYXRjaGVzKFNWR05hbWVzOjpsZW5ndGhB
ZGp1c3RBdHRyKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDMsNiArMTQzLDEzIEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkK
ICAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0oKTsKIH0KIAordm9pZCBTVkdUZXh0RWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChTVkdOYW1lczo6dHJhbnNmb3JtQXR0
ciwgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw2ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwogICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JN
X0xJU1QoVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCwx
NyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wCiAgICAgICAgIHN5
bmNocm9uaXplSHJlZigpOwogfQogCit2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1ldGhvZEF0dHIsIEFuaW1hdGVkRW51
bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
c3BhY2luZ0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQor
CiBSZW5kZXJPYmplY3QqIFNWR1RleHRQYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclNWR1RleHRQYXRoKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0
aEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAK
ICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KE5vZGUqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEs
NiArMTYxLDE4IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3luY2hyb24KICAg
ICAgICAgc3luY2hyb25pemVSb3RhdGUoKTsKIH0KIAordm9pZCBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1RleHRD
b250ZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisg
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1h
dGVkTnVtYmVyTGlzdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpkeEF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeUF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyb3RhdGVBdHRyLCBBbmlt
YXRlZE51bWJlckxpc3QpOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgbGlzdENvbnRhaW5zUmVs
YXRpdmVWYWx1ZShjb25zdCBTVkdMZW5ndGhMaXN0JiBsaXN0KQogewogICAgIHVuc2lnbmVkIHNp
emUgPSBsaXN0LnNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICsz
OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFm
dGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVh
bCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNyw2ICsyMjcsMTgg
QEAgdm9pZCBTVkdVc2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KAogICAgICAgICBTVkdU
ZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAordm9pZCBT
VkdVc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogc3RhdGljIHZvaWQgdXBkYXRlQ29udGFpbmVyU2l6ZShT
VkdVc2VFbGVtZW50KiB1c2VFbGVtZW50LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3Rh
bmNlKQogewogICAgIC8vIERlcHRoLWZpcnN0IHVzZWQgdG8gd3JpdGUgdGhlIG1ldGhvZCBpbiBl
YXJseSBleGl0IHN0eWxlLCBubyBwYXJ0aWN1bGFyIG90aGVyIHJlYXNvbi4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlID0gTm9DaGFu
Z2UpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsMTUgQEAgdm9pZCBTVkdWaWV3RWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eQogICAgIH0KIH0KIAordm9pZCBTVkdWaWV3RWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwg
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81693</attachid>
            <date>2011-02-08 14:26:18 -0800</date>
            <delta_ts>2011-02-09 10:15:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53442-20110208232614.patch</filename>
            <type>text/plain</type>
            <size>119036</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3OTcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjM4IEBACisyMDExLTAyLTA4ICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmdnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNWR0FuaW1hdGVFbGVtZW50IG5lZWRzIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBhbmltYXRlZCBhdHRyaWJ1dGUgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM0NDIKKworICAgICAgICBGb3IgYW5pbWF0aW9ucywg
d2UgbmVlZCB0byBrbm93IHRoZSBTVkcgcHJvcGVydHkgdHlwZSBmb3IgYSBYTUwgYXR0cmlidXRl
LiBBIGdsb2JhbCBzdGF0aWMgbWFwcGluZyBiZXR3ZWVuCisgICAgICAgIGF0dHJpYnV0ZSBuYW1l
IGFuZCBhIHR5cGUgaXMgbm90IHBvc3NpYmxlLCBzaW5jZSBvbmUgYXR0cmlidXRlIG5hbWUgY2Fu
IGJlIGJvdW5kZWQgdG8gZGlmZmVyZW50IHByb3BlcnR5IHR5cGVzOgorICAgICAgICB4IGNhbiBi
ZSBhIFNWR051bWJlckxpc3QsIGEgU1ZHTnVtYmVyIG9yIGEgU1ZHTGVuZ3RoLiBTbyB3ZSBoYXZl
IHRvIGFzayBldmVyeSB0YXJnZXQgZWxlbWVudCwgaWYgaXQgc3VwcG9ydHMKKyAgICAgICAgdGhl
IGFuaW1hdGVkIGF0dHJpYnV0ZSBhbmQgb2Ygd2hpY2ggdHlwZSBpdCBpcy4gSnVzdCBmb3IgQ1NT
IHByb3BlcnRpZXMgd2UgY2FuIHNoYXJlIGFuIGV4cGxpY2l0ZSBtYXBwaW5ncyBiZXR3ZWVuCisg
ICAgICAgIHRoZSBuYW1lIGFuZCB0aGUgdHlwZS4gVGhpcyBpcyBkb25lIGluIGEgc3RhdGljIG1h
cCBpbiBTVkdTdHlsZWRFbGVtZW50LiBBbGwgb3RoZXIgbWFwcGluZ3MgYXJlIHN0b3JlZCBpbiBs
b2NhbCBzdGF0aWMKKyAgICAgICAgSGFzaE1hcHMgZm9yIGFsbCBTVkcgZWxlbWVudHMgd2l0aCBh
bmltYXRlZCBwcm9wZXJ0aWVzLiBUaGVzZSBtYXBzIGdldCBmaWxsZWQgb25jZSB3aXRoIHRoZSBm
dW5jdGlvbiBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAKKyAgICAgICAgdGhhdCBuZWVk
cyB0byBiZSBpbmNsdWRlZCBpbiBldmVyeSBTVkcgZWxlbWVudC4KKworICAgICAgICBObyBjaGFu
Z2Ugb2YgZnVuY3Rpb25hbGl0eSwgc28gbm8gbmV3IHRlc3QgY2FzZXMuCisKKyAgICAgICAgKiBz
dmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdD
aXJjbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDdXJzb3JFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YW5pbWF0ZWRQ
cm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUJsZW5kRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9T
VkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6Cisg
ICAgICAgICogc3ZnL1NWR0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5l
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGluZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAg
ICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01Q
YXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHTVBh
dGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICog
c3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
dGVybkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdHRlcm5FbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgor
ICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQb2x5
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50
OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9T
VkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9w
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU3RvcEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAg
ICogc3ZnL1NWR1N0b3BFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlUb1R5cGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAg
KiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
U3ltYm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9T
VkdTeW1ib2xFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRDb250ZW50RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2
Zy9TVkdUZXh0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdW
aWV3RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBz
dmcvU1ZHVmlld0VsZW1lbnQuaDoKKwogMjAxMS0wMi0wOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwyMSBA
QCB2b2lkIFNWR0FFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvCiAgICAgfQogfQogCitB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHQUVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhp
cy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKK30KKwogdm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKKwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
dEdseXBoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
dEdseXBoRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FsdEdseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDE5IEBA
IHZvaWQgU1ZHQWx0R2x5cGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3AKICAgICAgICAgc3luY2hy
b25pemVIcmVmKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdBbHRHbHlw
aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Cit9CisKK3ZvaWQgU1ZHQWx0R2x5cGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQoreworICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5z
ZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogdm9pZCBTVkdB
bHRHbHlwaEVsZW1lbnQ6OnNldEdseXBoUmVmKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDYgKzQ3LDkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAorICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikg
Y29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJDb2xvckRp
c3RhbmNlLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiUXVhbGlm
aWVkTmFtZS5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKQEAgLTg0LDE1ICs4NSwxOCBAQCBzdGF0
aWMgYm9vbCBwYXJzZU51bWJlclZhbHVlQW5kVW5pdChjb25zCiAKIFNWR0FuaW1hdGVFbGVtZW50
OjpQcm9wZXJ0eVR5cGUgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZVByb3BlcnR5VHlwZShj
b25zdCBTdHJpbmcmIGF0dHJpYnV0ZSkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCBh
IGZ1bGwgcHJvcGVydHkgdGFibGUgZm9yIGZpZ3VyaW5nIHRoaXMgb3V0IHJlbGlhYmx5LgorICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGFsbG93IGFuaW1hdGlvbiBvZiBhdHRyaWJ1dGUgdHlw
ZXMgb3RoZXIgdGhhbiBBbmltYXRlZENvbG9yIGZvciA8YW5pbWF0ZUNvbG9yPi4KICAgICBpZiAo
aGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSkKICAgICAgICAgcmV0dXJuIENv
bG9yUHJvcGVydHk7Ci0gICAgaWYgKGF0dHJpYnV0ZSA9PSAiZCIpCisKKyAgICAvLyBGSVhNRTog
Tm93IHRoYXQgd2UgaGF2ZSBhIGZ1bGwgcHJvcGVydHkgdGFibGUgd2UgbmVlZCBhIG1vcmUgZ3Jh
bnVsYXIgdHlwZSBzcGVjaWZpYyBhbmltYXRpb24uCisgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBl
IHR5cGUgPSB0YXJnZXRFbGVtZW50KCktPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRl
KFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGF0dHJpYnV0ZSwgbnVsbEF0b20pKTsKKyAgICBpZiAo
dHlwZSA9PSBBbmltYXRlZENvbG9yKQorICAgICAgICByZXR1cm4gQ29sb3JQcm9wZXJ0eTsKKyAg
ICBpZiAodHlwZSA9PSBBbmltYXRlZFBhdGgpCiAgICAgICAgIHJldHVybiBQYXRoUHJvcGVydHk7
Ci0gICAgaWYgKGF0dHJpYnV0ZSA9PSAicG9pbnRzIikKKyAgICBpZiAodHlwZSA9PSBBbmltYXRl
ZFBvaW50cykKICAgICAgICAgcmV0dXJuIFBvaW50c1Byb3BlcnR5OwotICAgIGlmIChhdHRyaWJ1
dGUgPT0gImNvbG9yIiB8fCBhdHRyaWJ1dGUgPT0gImZpbGwiIHx8IGF0dHJpYnV0ZSA9PSAic3Ry
b2tlIikKLSAgICAgICAgcmV0dXJuIENvbG9yUHJvcGVydHk7CiAgICAgcmV0dXJuIE51bWJlclBy
b3BlcnR5OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiwyMiBAQCB2b2lkIFNWR0NpcmNsZUVs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVyCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVBy
b3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHQ2lyY2xlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdDaXJjbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJBdHRyLCBBbmltYXRlZExl
bmd0aCk7Cit9CisKIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRo
KSBjb25zdAogewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKwogICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhE
YXRhKFBhdGgmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5n
dGhzKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiwyMCBAQCB2b2lkIFNWR0Ns
aXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHQ2xpcFBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhp
cy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0
aW9uKTsKK30KKwogdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwg
aW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNo
YW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBh
dGhFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Ns
aXBQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
ICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5n
ZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNo
YW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEyLDYgKzExMiwyNiBAQCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25F
bGVtZW50CiAgICAgICAgIHN5bmNocm9uaXplT2Zmc2V0KCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsK
KyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKK3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0ZWRF
bnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp0YWJsZVZhbHVlc0F0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzbG9wZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmludGVyY2VwdEF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b2Zmc2V0
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworfQorCiBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0cmFuc2ZlckZ1bmN0aW9uKCkgY29u
c3QKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGZ1bmM7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgs
OCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIAogcHJpdmF0ZToKICAgICAvLyBBbmltYXRl
ZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJz
b3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29y
RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1
cnNvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwyMiBAQCB2b2lkIFNW
R0N1cnNvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgfQogfQogCitBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ3Vyc29yRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdDdXJzb3JFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0VsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OworfQorCiB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OmFkZENsaWVudChTVkdFbGVtZW50KiBlbGVt
ZW50KQogewogICAgIG1fY2xpZW50cy5hZGQoZWxlbWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDYgKzI1NiwyNSBAQCB2b2lkIFNW
R0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0CiAgICAgICAgIFN0eWxlZEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgU1ZHRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKK30KKworQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR0VsZW1lbnQ6OmFuaW1hdGVk
UHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQor
eworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhbmltYXRlZEF0dHJpYnV0ZU1hcCA9
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgaWYgKGFuaW1hdGVkQXR0cmlidXRl
TWFwLmlzRW1wdHkoKSkKKyAgICAgICAgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisgICAgaWYgKGFuaW1hdGVkQXR0cmlidXRlTWFwLmNvbnRhaW5zKGF0dHJOYW1lKSkKKyAgICAg
ICAgcmV0dXJuIGFuaW1hdGVkQXR0cmlidXRlTWFwLmdldChhdHRyTmFtZSk7CisgICAgaWYgKGlz
U3R5bGVkKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4o
dGhpcyktPmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoYXR0ck5hbWUpOworCisg
ICAgcmV0dXJuIEFuaW1hdGVkVW5rbm93bjsKK30KKwogYm9vbCBTVkdFbGVtZW50OjpoYXZlTG9h
ZGVkUmVxdWlyZWRSZXNvdXJjZXMoKQogewogICAgIE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDMy
IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdMb2NhdGFibGUuaCIKICNpbmNsdWRl
ICJTdHlsZWRFbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitlbnVtIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB7CisgICAgQW5pbWF0ZWRB
bmdsZSwKKyAgICBBbmltYXRlZEJvb2xlYW4sCisgICAgQW5pbWF0ZWRDb2xvciwKKyAgICBBbmlt
YXRlZEVudW1lcmF0aW9uLAorICAgIEFuaW1hdGVkSW50ZWdlciwKKyAgICBBbmltYXRlZExlbmd0
aCwKKyAgICBBbmltYXRlZExlbmd0aExpc3QsCisgICAgQW5pbWF0ZWROdW1iZXIsCisgICAgQW5p
bWF0ZWROdW1iZXJMaXN0LAorICAgIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIsCisgICAg
QW5pbWF0ZWRQYXRoLAorICAgIEFuaW1hdGVkUG9pbnRzLAorICAgIEFuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpbywKKyAgICBBbmltYXRlZFJlY3QsCisgICAgQW5pbWF0ZWRTdHJpbmcsCisgICAg
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LAorICAgIEFuaW1hdGVkVW5rbm93bgorfTsKKwordHlwZWRl
ZiBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIEFuaW1hdGVkQXR0cmlidXRlVHlwZT4gQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXA7CisKIGNsYXNzIENTU0N1cnNvckltYWdlVmFsdWU7CiBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIFNWR0N1cnNvckVsZW1lbnQ7CkBAIC02NCw2ICs4NywxMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKSB7IH0KIAorICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgQW5pbWF0ZWRBdHRyaWJ1dGVU
eXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSB7
IH0KKwogICAgIHZvaWQgc2VuZFNWR0xvYWRFdmVudElmUG9zc2libGUoYm9vbCBzZW5kUGFyZW50
TG9hZEV2ZW50cyA9IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBw
bGVtZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiAwOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0
MiwyMyBAQCB2b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlCiAgICAgICAg
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRWxsaXBzZUVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRWxsaXBz
ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogdm9p
ZCBTVkdFbGxpcHNlRWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAg
IEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBz
ZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9u
IDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMjIgQEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3lu
Y2hyb25pemVQcm9wZQogICAgICAgICBzeW5jaHJvbml6ZUluMigpOwogfQogCitBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVCbGVuZEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
KyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbjJBdHRy
LCBBbmltYXRlZFN0cmluZyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjptb2RlQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciog
ZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTgsNiArOTgsMjIgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3luY2hyb25p
egogICAgICAgICBzeW5jaHJvbml6ZVZhbHVlcygpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0
cmluZyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0eXBl
QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworfQorCiBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZp
bHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
IHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0
dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0
aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDYgKzY0LDE5IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnN5bmMKICAg
ICAgICAgc3luY2hyb25pemVJbjEoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgCisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFt
ZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
IGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5w
dXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJh
dGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDI2IEBAIHZvaWQgU1ZH
RkVDb21wb3NpdGVFbGVtZW50OjpzeW5jaHJvbml6ZVAKICAgICAgICAgc3luY2hyb25pemVLNCgp
OwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVDb21wb3NpdGVFbGVtZW50
OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2
b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgQW5pbWF0ZWRF
bnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjprMUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmsyQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azNBdHRyLCBBbmltYXRlZE51bWJlcik7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprNEF0dHIsIEFuaW1h
dGVkTnVtYmVyKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRl
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBm
aWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9zaXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU5LDYgKzE1OSwyOSBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRy
CiAgICAgICAgIGludmFsaWRhdGUoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3JkZXJB
dHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIsIEFuaW1hdGVkTnVtYmVy
TGlzdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkaXZp
c29yQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6Ymlhc0F0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRhcmdldFhBdHRyLCBBbmltYXRlZEludGVn
ZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dGFyZ2V0
WUF0dHIsIEFuaW1hdGVkSW50ZWdlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0
dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsIEFuaW1hdGVkQm9vbGVh
bik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0
ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
Myw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIG9yZGVyWElkZW50aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lv
biA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDIzIEBAIHZvaWQgU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpzeW5jaHIKICAgICB9CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgQW5pbWF0
ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworfQor
CiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojpi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsK
ICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQo
aW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRM
ZW5ndGhYSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNiw2ICsxMTYsMjQgQEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6
OnN5bmNocgogICAgICAgICBzeW5jaHJvbml6ZVNjYWxlKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0
dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6aW4yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsIEFuaW1hdGVkRW51
bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
eUNoYW5uZWxTZWxlY3RvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c2NhbGVBdHRyLCBBbmltYXRlZE51bWJl
cik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmls
dGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8v
IEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNyw2ICsxMDcsMjEgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OnN5bmNocm9uaQogICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwogfQogCitBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVy
biBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnN0ZERldmlhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworfQor
CiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Cisg
ICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nJiBzdGREZXZpYXRpb25YSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIs
MjEgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZQogICAgICAgICBz
eW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKIH0KIAorQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR0ZFSW1hZ2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Cisg
ICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
LCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiB2
b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopCiB7
CiAgICAgaWYgKCFpbkRvY3VtZW50KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxLVVJMPiYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGln
aHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdo
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUxpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksMjkgQEAgdm9p
ZCBTVkdGRUxpZ2h0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZQogICAgICAgICBzeW5jaHJvbml6
ZUxpbWl0aW5nQ29uZUFuZ2xlKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBT
VkdGRUxpZ2h0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKK30KKwordm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjphemltdXRoQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6ZWxldmF0aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZE51
bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp6QXR0
ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cG9pbnRzQXRYQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRZQXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRz
QXRaQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFu
Z2xlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworfQorCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwg
Tm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNo
YW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5n
ZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3Bl
cnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2Rl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VO
b2RlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDE5IEBA
IHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGUKICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRl
cmVyKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTWVyZ2VOb2RlRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30K
Kwordm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgU1ZHRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChTVkdOYW1lczo6aW5B
dHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAg
IFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwogICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKElu
MSwgaW4xKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsMjIgQEAgdm9p
ZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzeW5jaHJvbml6ZQogICAgIH0KIH0KIAorQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6Om9wZXJhdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyYWRpdXNBdHRyLCBBbmltYXRlZE51bWJl
ck9wdGlvbmFsTnVtYmVyKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZp
bHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRl
ci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHJhZGl1c1hJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODcsNiArODcsMjIgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcAog
ICAgICAgICBzeW5jaHJvbml6ZUluMSgpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHRkVPZmZzZXRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmR4QXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHlBdHRy
LCBBbmltYXRlZE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU9m
ZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRl
ciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+
Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0
RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAg
ICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNyw2ICsxMTcsMjQgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzeW5j
aAogICAgIH0KIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRB
dHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwg
QW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIp
OworfQorCiBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50OjpmaW5kTGlnaHRzKCkgY29uc3QKIHsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENo
aWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHJldmlz
aW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZp
cnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
a2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVGlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTkgQEAg
dm9pZCBTVkdGRVRpbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBzeW5jaHJv
bml6ZUluMSgpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVUaWxlRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30K
Kwordm9pZCBTVkdGRVRpbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlu
cHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICAvLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjgsNiArMTI4LDI0IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3luY2hyb25pemUK
ICAgICAgICAgc3luY2hyb25pemVOdW1PY3RhdmVzKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIs
IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6bnVtT2N0YXZlc0F0dHIsIEFuaW1hdGVkSW50ZWdlcik7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzZWVkQXR0ciwgQW5p
bWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6c3RpdGNoVGlsZXNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnR5cGVBdHRyLCBBbmltYXRlZEVudW1lcmF0
aW9uKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBpZiAo
YmFzZUZyZXF1ZW5jeVgoKSA8IDAgfHwgYmFzZUZyZXF1ZW5jeVkoKSA8IDApCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0
ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lYSWRl
bnRpZmllcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsMjcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVt
ZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKIH0KIAor
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZpbHRlckVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRmlsdGVy
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHls
ZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0
aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0
aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByaW1p
dGl2ZVVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRo
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgQW5pbWF0ZWROdW1i
ZXJPcHRpb25hbE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhM
aW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKK30KKwogdm9pZCBTVkdG
aWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUq
IGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7
CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwg
YmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1
Myw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAw
LCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gNzY5NTApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSwyNCBAQCB2b2lkIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgZmlsdGVyRWZmZWN0LT5zZXRFZmZlY3RCb3Vu
ZGFyaWVzKGVmZmVjdEJCb3gpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAg
ICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJlc3VsdEF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKK30KKwogUmVuZGVyT2JqZWN0KiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDc2OTUwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0g
ZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50
IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0ZSgpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNywyNCBAQCB2b2lkIFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpzeW5jaHJvbml6CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdCh0aGlzKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqIHN0eWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMyLDE5IEBAIHN0YXRpYyBpbmxp
bmUgZmxvYXQgcGFyc2VTVkdHbHlwaEF0dHJpYnUKICAgICByZXR1cm4gdmFsdWUudG9GbG9hdCgp
OwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHR2x5cGhFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNW
R0dseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBT
VkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChTVkdOYW1lczo6ZEF0dHIsIEFu
aW1hdGVkUGF0aCk7Cit9CisKIFNWR0dseXBoSWRlbnRpZmllciBTVkdHbHlwaEVsZW1lbnQ6OmJ1
aWxkR2VuZXJpY0dseXBoSWRlbnRpZmllcihjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQogewog
ICAgIFNWR0dseXBoSWRlbnRpZmllciBpZGVudGlmaWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dseXBoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHbHlwaEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2x5cGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsOCBAQCBwcml2
YXRlOgogICAgIFNWR0dseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0
LDYgKzEyNCwyMyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6c3luY2hyb25pemVQcm9wCiAg
ICAgICAgIHN5bmNocm9uaXplSHJlZigpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHR3JhZGllbnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6c3ByZWFkTWV0aG9kQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmlt
YXRlZFN0cmluZyk7Cit9CisgICAgCiB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFm
dGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFu
Z2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50
RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFk
aWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
ICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jl
c291cmNlSGFuZGxpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsx
NjQsMjUgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydAogICAgICAg
ICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAor
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ltYWdlRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdJbWFnZUVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
ICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRp
b0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9
CisKIGJvb2wgU1ZHSW1hZ2VFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QK
IHsKICAgICByZXR1cm4geCgpLmlzUmVsYXRpdmUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Cisg
ICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZv
aWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVF
bGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDIzIEBAIHZvaWQgU1ZH
TGluZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNo
cm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBTVkdMaW5lRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdMaW5lRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OngxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eTFBdHRyLCBBbmltYXRlZExlbmd0aCk7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MkF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnkyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworfQorCiB2b2lkIFNWR0xpbmVFbGVtZW50Ojp0b1Bh
dGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhdGguaXNFbXB0eSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9Q
YXRoRGF0YShQYXRoJikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTQsNiArMTE0LDIzIEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzeW5jaHJv
bmkKICAgICAgICAgc3luY2hyb25pemVZMigpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdHcmFkaWVudEVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OngxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eTFBdHRyLCBBbmltYXRlZExlbmd0aCk7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MkF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnkyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1
LDIwIEBAIHZvaWQgU1ZHTVBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnQKICAgICAgICAg
c3luY2hyb25pemVIcmVmKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdN
UGF0aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Cit9CisKK3ZvaWQgU1ZHTVBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQoreworICAgIFNWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOworCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVk
U3RyaW5nKTsKK30KKwogU1ZHUGF0aEVsZW1lbnQqIFNWR01QYXRoRWxlbWVudDo6cGF0aEVsZW1l
bnQoKQogewogICAgIEVsZW1lbnQqIHRhcmdldCA9IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlk
KGdldFRhcmdldChocmVmKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50
LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1
YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVh
bCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTgzLDYgKzE4MywyNiBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
CiAgICAgfQogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHTWFya2VyRWxlbWVu
dDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwor
dm9pZCBTVkdNYXJrZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQor
eworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyZWZYQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVm
WUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6bWFya2VyVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9yaWVudEF0dHIsIEFuaW1hdGVkQW5nbGUp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0
dHIsIEFuaW1hdGVkUmVjdCk7Cit9CisKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFm
dGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFu
Z2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
IHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0
dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAw
LCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsx
NDgsMjUgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQogICAgICAg
ICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAor
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01hc2tFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR01hc2tFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZExv
Y2F0YWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAor
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Ondp
ZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bWFza1VuaXRzQXR0ciwgQW5pbWF0ZWRF
bnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjptYXNrQ29udGVudFVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIHZvaWQg
U1ZHTWFza0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9k
ZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkK
IHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2Vy
LCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5v
ZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24g
NzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzIsNiArMjcyLDIxIEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9u
aXplRCgpCiAgICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hy
b25pemUodGhpcywgU1ZHTmFtZXM6OmRBdHRyLCBtX3BhdGhTZWdMaXN0LnZhbHVlLnZhbHVlQXNT
dHJpbmcoKSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdQYXRoRWxlbWVu
dDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwor
dm9pZCBTVkdQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sK
KyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmRBdHRyLCBB
bmltYXRlZFBhdGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6cGF0aExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKK30KKwogU1ZHUGF0aFNlZ0xpc3RQ
cm9wZXJ0eVRlYXJPZmYqIFNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdCgpCiB7CiAgICAgaWYg
KCFtX2FuaW1hdGFibGVQYXRoU2VnTGlzdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw2ICsxMDQsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2
aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTQsNiArMTk0LDI5IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGUKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBh
dHRyTmFtZSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdQYXR0ZXJuRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30K
Kwordm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBhdHRlcm5Vbml0
c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVy
YXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cGF0
dGVyblRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94
QXR0ciwgQW5pbWF0ZWRSZWN0KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8pOworfQorCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2Us
IGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRD
b3VudERlbHRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZh
bHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBj
aGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiwxOSBA
QCB2b2lkIFNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUG9seUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHUG9seUVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0dHIsIEFuaW1h
dGVkUG9pbnRzKTsKK30KKwogdm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMo
KQogewogICAgIGlmICghbV9wb2ludHMuc2hvdWxkU3luY2hyb25pemUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsgCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjQsNiArMTI0LDI0IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzeW5j
aHJvbmkKICAgICAgICAgc3luY2hyb25pemVSKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0dyYWRpZW50
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhp
cy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyQXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6ZnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpmeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogUmVuZGVy
T2JqZWN0KiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5k
ZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjEsNiArMTYxLDI1IEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBh
dHRyTmFtZSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdSZWN0RWxlbWVu
dDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwor
dm9pZCBTVkdSZWN0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sK
KyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBB
bmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExl
bmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnJ5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworfQorCiB2b2lkIFNWR1JlY3RFbGVt
ZW50Ojp0b1BhdGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHBhdGguaXNF
bXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShyZXZpc2lvbiA3
Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw2ICs0Niw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNiArMzc5LDI1IEBAIHZvaWQg
U1ZHU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSgKICAgICAgICAgU1ZHVGVzdHM6OnN5
bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBTVkdTVkdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1NWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRl
ZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpo
ZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
LCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworfQorCiB1bnNpZ25lZCBTVkdTVkdFbGVt
ZW50OjpzdXNwZW5kUmVkcmF3KHVuc2lnbmVkIC8qIG1heFdhaXRNaWxsaXNlY29uZHMgKi8pCiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtZSAoc2VlIGJ1ZyAxMTI3NSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDggQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2Ny
aXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Njcmlw
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMTkgQEAgdm9pZCBT
VkdTY3JpcHRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBzeW5jaHJvbml6ZUhy
ZWYoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1NjcmlwdEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3Zv
aWQgU1ZHU2NyaXB0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sK
KyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBB
bmltYXRlZFN0cmluZyk7Cit9CisKIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKQogewogICAgIFNWR0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3RvcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9w
RWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTkgQEAgdm9pZCBTVkdT
dG9wRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQogICAgICAgICBzeW5jaHJvbml6ZU9mZnNl
dCgpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHU3RvcEVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQg
U1ZHU3RvcEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAg
U1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAg
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFtZXM6Om9mZnNldEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogUmVuZGVyT2JqZWN0KiBTVkdTdG9wRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0dyYWRpZW50U3RvcCh0aGlzKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFkaWVudFN0
b3AoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAj
aW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjAwLDYgKzIwMSw5MSBAQCBpbnQgU1ZHU3R5bGVkRWxl
bWVudDo6Y3NzUHJvcGVydHlJZEZvclNWCiAgICAgcmV0dXJuIHByb3BlcnR5TmFtZVRvSWRNYXAt
PmdldChhdHRyTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCitzdGF0aWMgaW5saW5lIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBjc3NQcm9wZXJ0eVRvVHlwZU1hcCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19jc3NQcm9w
ZXJ0eU1hcCwgKCkpOworICAgIAorICAgIGlmICghc19jc3NQcm9wZXJ0eU1hcC5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBzX2Nzc1Byb3BlcnR5TWFwOworCisgICAgLy8gRmlsbCB0aGUgbWFw
IGZvciB0aGUgZmlyc3QgdXNlLgorICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGFsaWdubWVudF9i
YXNlbGluZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChi
YXNlbGluZV9zaGlmdEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFw
LnNldChjbGlwQXR0ciwgQW5pbWF0ZWRSZWN0KTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChj
bGlwX3BhdGhBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
Y2xpcF9ydWxlQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KFNWR05hbWVzOjpjb2xvckF0dHIsIEFuaW1hdGVkQ29sb3IpOworICAgIHNfY3NzUHJvcGVydHlN
YXAuc2V0KGNvbG9yX2ludGVycG9sYXRpb25BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19j
c3NQcm9wZXJ0eU1hcC5zZXQoY29sb3JfaW50ZXJwb2xhdGlvbl9maWx0ZXJzQXR0ciwgQW5pbWF0
ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX3Byb2ZpbGVBdHRyLCBB
bmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY29sb3JfcmVuZGVyaW5n
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOyAKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjdXJzb3JB
dHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZGlzcGxheUF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChkb21pbmFudF9i
YXNlbGluZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChm
aWxsQXR0ciwgQW5pbWF0ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmlsbF9v
cGFjaXR5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZp
bGxfcnVsZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChm
aWx0ZXJBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmxv
b2RfY29sb3JBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChm
bG9vZF9vcGFjaXR5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAu
c2V0KGZvbnRfZmFtaWx5QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlN
YXAuc2V0KGZvbnRfc2l6ZUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBzX2Nzc1Byb3BlcnR5
TWFwLnNldChmb250X3N0cmV0Y2hBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9w
ZXJ0eU1hcC5zZXQoZm9udF9zdHlsZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1By
b3BlcnR5TWFwLnNldChmb250X3ZhcmlhbnRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19j
c3NQcm9wZXJ0eU1hcC5zZXQoZm9udF93ZWlnaHRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAg
c19jc3NQcm9wZXJ0eU1hcC5zZXQoaW1hZ2VfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGtlcm5pbmdBdHRyLCBBbmltYXRlZExlbmd0aCk7
CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobGV0dGVyX3NwYWNpbmdBdHRyLCBBbmltYXRlZExl
bmd0aCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobGlnaHRpbmdfY29sb3JBdHRyLCBBbmlt
YXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXJrZXJfZW5kQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hcmtlcl9taWRBdHRyLCBB
bmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobWFya2VyX3N0YXJ0QXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hc2tBdHRyLCBB
bmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQob3BhY2l0eUF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChvdmVyZmxvd0F0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChwb2ludGVyX2V2ZW50c0F0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzaGFwZV9yZW5k
ZXJpbmdBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Rv
cF9jb2xvckF0dHIsIEFuaW1hdGVkQ29sb3IpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0
b3Bfb3BhY2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNl
dChzdHJva2VBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChz
dHJva2VfZGFzaGFycmF5QXR0ciwgQW5pbWF0ZWRMZW5ndGhMaXN0KTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChzdHJva2VfZGFzaG9mZnNldEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBz
X2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VfbGluZWNhcEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsK
KyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdHJva2VfbGluZWpvaW5BdHRyLCBBbmltYXRlZFN0
cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX21pdGVybGltaXRBdHRyLCBB
bmltYXRlZE51bWJlcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX29wYWNpdHlB
dHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX3dp
ZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHRleHRf
YW5jaG9yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHRl
eHRfZGVjb3JhdGlvbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFw
LnNldCh0ZXh0X3JlbmRlcmluZ0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldCh2ZWN0b3JfZWZmZWN0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3Nz
UHJvcGVydHlNYXAuc2V0KHZpc2liaWxpdHlBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19j
c3NQcm9wZXJ0eU1hcC5zZXQod29yZF9zcGFjaW5nQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAg
IHJldHVybiBzX2Nzc1Byb3BlcnR5TWFwOworfQorCitBbmltYXRlZEF0dHJpYnV0ZVR5cGUgU1ZH
U3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgY3NzUHJvcGVydHlUeXBlTWFwID0gY3NzUHJvcGVydHlUb1R5cGVNYXAoKTsKKyAgICBpZiAo
IWNzc1Byb3BlcnR5VHlwZU1hcC5jb250YWlucyhhdHRyTmFtZSkpCisgICAgICAgIHJldHVybiBB
bmltYXRlZFVua25vd247CisgICAgcmV0dXJuIGNzc1Byb3BlcnR5VHlwZU1hcC5nZXQoYXR0ck5h
bWUpOworfQorCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHU3R5bGVkRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9p
ZCBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorewor
ICAgIFNWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoSFRNTE5hbWVzOjpjbGFzc0F0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKK30KKwogYm9vbCBTVkdTdHlsZWRFbGVtZW50OjptYXBUb0VudHJ5KGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0
KSBjb25zdAogewogICAgIGlmIChTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZH
QXR0cmlidXRlTmFtZShhdHRyTmFtZSkgPiAwKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJ
bnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGJvb2wpOwogCisgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBl
IGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OworCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxDb29yZGluYXRlU3BhY2VUcmFu
c2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIENTU1N0
eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6c3R5bGUoKTsg
fQpAQCAtNjYsNiArNjgsOSBAQCBwcm90ZWN0ZWQ6IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKwogICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTkg
QEAgUmVuZGVyT2JqZWN0KiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbQogICAgIHJldHVybiBu
ZXcgKGFyZW5hKSBSZW5kZXJTVkdQYXRoKHRoaXMpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAg
U1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAg
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFtZXM6OnRyYW5zZm9y
bUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Cit9CisKIHZvaWQgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnRvQ2xpcFBhdGgoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICB0b1Bh
dGhEYXRhKHBhdGgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHJldmlzaW9uIDc2OTUwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDYgKzU5LDggQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIC8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlY2xhcmF0aW9ucwogICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1Qo
VHJhbnNmb3JtLCB0cmFuc2Zvcm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9s
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1i
b2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsMjEgQEAgdm9pZCBTVkdT
eW1ib2xFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgIH0gCiB9CiAKK0F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdTeW1ib2xFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1N5bWJvbEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Cit9CisKIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0
ZShTVkdOYW1lczo6dmlld0JveEF0dHIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5
bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9s
RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1i
b2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSop
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDE5IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkKICAgICAgICAgc3luY2hyb25pemVIcmVmKCk7CiB9CiAKK0F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdUUmVmRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdUUmVmRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRl
ZFN0cmluZyk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJTVkdJbmxpbmUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2
aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDYg
KzIyMSwyMSBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAg
Ly8gRklYTUU6IGFsc28gaGFuZGxlIGF0dHJpYnV0ZSBjaGFuZ2VzIGZvciBsZW5ndGhBZGp1c3Qg
YW5kIHRleHRMZW5ndGgKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RleHRD
b250ZW50RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcDsKK30KKwordm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRl
eHRMZW5ndGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9u
KTsKK30KKwogYm9vbCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgcmV0dXJuIGF0dHJOYW1lLm1hdGNo
ZXMoU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiAr
NjUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7IAogCiAgICAgdmlydHVhbCBib29sIHNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsMTkgQEAgdm9pZCBT
VkdUZXh0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQogICAgICAgICBzeW5jaHJvbml6ZVRy
YW5zZm9ybSgpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGV4dEVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisK
K3ZvaWQgU1ZHVGV4dEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7
CisgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CisgICAgCisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZH
TmFtZXM6OnRyYW5zZm9ybUF0dHIsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Cit9CisKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQu
aAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwogICAgIERFQ0xBUkVfQU5JTUFURURfVFJBTlNGT1JNX0xJU1QoVHJhbnNmb3JtLCB0cmFuc2Zv
cm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkocmV2
aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCwyMyBAQCB2b2lkIFNWR1RleHRQYXRoRWxl
bWVudDo6c3luY2hyb25pemVQcm9wCiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwogfQogCitB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGV4dFBhdGhFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1RleHRQ
YXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1l
dGhvZEF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6c3BhY2luZ0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR1RleHRQYXRoRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1RleHRQYXRoKHRoaXMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYy
LDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAko
cmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsMjQgQEAgdm9pZCBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbgogICAgICAgICBzeW5jaHJvbml6ZVJvdGF0
ZSgpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsK
K30KKwordm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnhBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeEF0dHIsIEFuaW1hdGVkTnVtYmVy
TGlzdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeUF0
dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpyb3RhdGVBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworfQorCiBzdGF0
aWMgaW5saW5lIGJvb2wgbGlzdENvbnRhaW5zUmVsYXRpdmVWYWx1ZShjb25zdCBTVkdMZW5ndGhM
aXN0JiBsaXN0KQogewogICAgIHVuc2lnbmVkIHNpemUgPSBsaXN0LnNpemUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA3Njk1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDYgKzIyNywyNCBAQCB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHVXNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdVc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omhl
aWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogc3RhdGlj
IHZvaWQgdXBkYXRlQ29udGFpbmVyU2l6ZShTVkdVc2VFbGVtZW50KiB1c2VFbGVtZW50LCBTVkdF
bGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlKQogewogICAgIC8vIERlcHRoLWZpcnN0IHVz
ZWQgdG8gd3JpdGUgdGhlIG1ldGhvZCBpbiBlYXJseSBleGl0IHN0eWxlLCBubyBwYXJ0aWN1bGFy
IG90aGVyIHJlYXNvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNp
b24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Miw2ICs2Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkocmV2aXNpb24gNzY5
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MCw2ICs4MCwyMSBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpzeW5jaHJvbml6ZVBy
b3BlcnR5CiAgICAgfQogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVmlld0Vs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9
CisKK3ZvaWQgU1ZHVmlld0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmlt
YXRlZFJlY3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Cit9
CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVmlld0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmll
d0VsZW1lbnQuaAkocmV2aXNpb24gNzY5NTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmll
d0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikg
eyByZXR1cm4gZmFsc2U7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81828</attachid>
            <date>2011-02-09 10:16:00 -0800</date>
            <delta_ts>2011-02-10 06:52:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53442-20110209191555.patch</filename>
            <type>text/plain</type>
            <size>119081</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjM4IEBACisyMDExLTAyLTA5ICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmdnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNWR0FuaW1hdGVFbGVtZW50IG5lZWRzIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBhbmltYXRlZCBhdHRyaWJ1dGUgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM0NDIKKworICAgICAgICBGb3IgYW5pbWF0aW9ucywg
d2UgbmVlZCB0byBrbm93IHRoZSBTVkcgcHJvcGVydHkgdHlwZSBmb3IgYSBYTUwgYXR0cmlidXRl
LiBBIGdsb2JhbCBzdGF0aWMgbWFwcGluZyBiZXR3ZWVuCisgICAgICAgIGF0dHJpYnV0ZSBuYW1l
IGFuZCBhIHR5cGUgaXMgbm90IHBvc3NpYmxlLCBzaW5jZSBvbmUgYXR0cmlidXRlIG5hbWUgY2Fu
IGJlIGJvdW5kZWQgdG8gZGlmZmVyZW50IHByb3BlcnR5IHR5cGVzOgorICAgICAgICB4IGNhbiBi
ZSBhIFNWR051bWJlckxpc3QsIGEgU1ZHTnVtYmVyIG9yIGEgU1ZHTGVuZ3RoLiBTbyB3ZSBoYXZl
IHRvIGFzayBldmVyeSB0YXJnZXQgZWxlbWVudCwgaWYgaXQgc3VwcG9ydHMKKyAgICAgICAgdGhl
IGFuaW1hdGVkIGF0dHJpYnV0ZSBhbmQgb2Ygd2hpY2ggdHlwZSBpdCBpcy4gSnVzdCBmb3IgQ1NT
IHByb3BlcnRpZXMgd2UgY2FuIHNoYXJlIGFuIGV4cGxpY2l0ZSBtYXBwaW5ncyBiZXR3ZWVuCisg
ICAgICAgIHRoZSBuYW1lIGFuZCB0aGUgdHlwZS4gVGhpcyBpcyBkb25lIGluIGEgc3RhdGljIG1h
cCBpbiBTVkdTdHlsZWRFbGVtZW50LiBBbGwgb3RoZXIgbWFwcGluZ3MgYXJlIHN0b3JlZCBpbiBs
b2NhbCBzdGF0aWMKKyAgICAgICAgSGFzaE1hcHMgZm9yIGFsbCBTVkcgZWxlbWVudHMgd2l0aCBh
bmltYXRlZCBwcm9wZXJ0aWVzLiBUaGVzZSBtYXBzIGdldCBmaWxsZWQgb25jZSB3aXRoIHRoZSBm
dW5jdGlvbiBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAKKyAgICAgICAgdGhhdCBuZWVk
cyB0byBiZSBpbmNsdWRlZCBpbiBldmVyeSBTVkcgZWxlbWVudC4KKworICAgICAgICBObyBjaGFu
Z2Ugb2YgZnVuY3Rpb25hbGl0eSwgc28gbm8gbmV3IHRlc3QgY2FzZXMuCisKKyAgICAgICAgKiBz
dmcvU1ZHQUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQWx0R2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlUeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdD
aXJjbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDdXJzb3JFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YW5pbWF0ZWRQ
cm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRUJsZW5kRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9T
VkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6Cisg
ICAgICAgICogc3ZnL1NWR0dseXBoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5l
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGluZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAg
ICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01Q
YXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHTVBh
dGhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICog
c3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
dGVybkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdHRlcm5FbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgor
ICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQb2x5
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50
OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9T
VkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU2NyaXB0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9w
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU3RvcEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAg
ICogc3ZnL1NWR1N0b3BFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlUb1R5cGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JDU1NQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAg
KiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
U3ltYm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTeW1ib2xF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9T
VkdTeW1ib2xFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRDb250ZW50RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2
Zy9TVkdUZXh0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdW
aWV3RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBz
dmcvU1ZHVmlld0VsZW1lbnQuaDoKKwogMjAxMS0wMi0wOCAgRGltaXRyaSBHbGF6a292ICA8ZGds
YXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2
ICsxMDUsMjEgQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAg
IH0KIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0FFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwor
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0FF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
KworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0YXJnZXRBdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIHZvaWQgU1ZHQUVsZW1lbnQ6OnN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDkgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogCisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2
ICs1NCwxOSBAQCB2b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6c3luY2hyb25pemVQcm9wCiAgICAg
ICAgIHN5bmNocm9uaXplSHJlZigpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
U1ZHQWx0R2x5cGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOworfQorCit2b2lkIFNWR0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisK
IHZvaWQgU1ZHQWx0R2x5cGhFbGVtZW50OjpzZXRHbHlwaFJlZihjb25zdCBBdG9taWNTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VE
X0VSUjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgJKHJldmlz
aW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
KwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoTm9kZSopIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVk
ZSAiQ29sb3JEaXN0YW5jZS5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2luY2x1
ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTVkdDb2xvci5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCkBAIC04NCwxNSArODUs
MTggQEAgc3RhdGljIGJvb2wgcGFyc2VOdW1iZXJWYWx1ZUFuZFVuaXQoY29ucwogCiBTVkdBbmlt
YXRlRWxlbWVudDo6UHJvcGVydHlUeXBlIFNWR0FuaW1hdGVFbGVtZW50OjpkZXRlcm1pbmVQcm9w
ZXJ0eVR5cGUoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6
IFdlIG5lZWQgYSBmdWxsIHByb3BlcnR5IHRhYmxlIGZvciBmaWd1cmluZyB0aGlzIG91dCByZWxp
YWJseS4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhbGxvdyBhbmltYXRpb24gb2YgYXR0
cmlidXRlIHR5cGVzIG90aGVyIHRoYW4gQW5pbWF0ZWRDb2xvciBmb3IgPGFuaW1hdGVDb2xvcj4u
CiAgICAgaWYgKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVDb2xvclRhZykpCiAgICAgICAg
IHJldHVybiBDb2xvclByb3BlcnR5OwotICAgIGlmIChhdHRyaWJ1dGUgPT0gImQiKQorCisgICAg
Ly8gRklYTUU6IE5vdyB0aGF0IHdlIGhhdmUgYSBmdWxsIHByb3BlcnR5IHRhYmxlIHdlIG5lZWQg
YSBtb3JlIGdyYW51bGFyIHR5cGUgc3BlY2lmaWMgYW5pbWF0aW9uLgorICAgIEFuaW1hdGVkQXR0
cmlidXRlVHlwZSB0eXBlID0gdGFyZ2V0RWxlbWVudCgpLT5hbmltYXRlZFByb3BlcnR5VHlwZUZv
ckF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBhdHRyaWJ1dGUsIG51bGxBdG9tKSk7
CisgICAgaWYgKHR5cGUgPT0gQW5pbWF0ZWRDb2xvcikKKyAgICAgICAgcmV0dXJuIENvbG9yUHJv
cGVydHk7CisgICAgaWYgKHR5cGUgPT0gQW5pbWF0ZWRQYXRoKQogICAgICAgICByZXR1cm4gUGF0
aFByb3BlcnR5OwotICAgIGlmIChhdHRyaWJ1dGUgPT0gInBvaW50cyIpCisgICAgaWYgKHR5cGUg
PT0gQW5pbWF0ZWRQb2ludHMpCiAgICAgICAgIHJldHVybiBQb2ludHNQcm9wZXJ0eTsKLSAgICBp
ZiAoYXR0cmlidXRlID09ICJjb2xvciIgfHwgYXR0cmlidXRlID09ICJmaWxsIiB8fCBhdHRyaWJ1
dGUgPT0gInN0cm9rZSIpCi0gICAgICAgIHJldHVybiBDb2xvclByb3BlcnR5OwogICAgIHJldHVy
biBOdW1iZXJQcm9wZXJ0eTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNs
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVF
bGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsMjIgQEAgdm9pZCBT
VkdDaXJjbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBTVkdUZXN0czo6c3lu
Y2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0NpcmNsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhp
cy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3lBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyQXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOworfQorCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnRvUGF0aERhdGEo
UGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKICAgICB2aXJ0dWFsIHZv
aWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQ
YXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQ
YXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsMjAgQEAg
dm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcAogICAgICAgICBTVkdUZXN0
czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAorQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0NsaXBQYXRoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdDbGlwUGF0aEVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7Cit9CisKIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0
ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5n
ZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksOCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9k
ZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsMjYgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudAogICAgICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOwogfQogCitBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisK
K3ZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dHlwZUF0dHIs
IEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c2xvcGVBdHRyLCBBbmltYXRl
ZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpp
bnRlcmNlcHRBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpleHBvbmVudEF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6Om9mZnNldEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKK30KKwogQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6dHJhbnNmZXJGdW5j
dGlvbigpIGNvbnN0CiB7CiAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBmdW5jOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDggQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICAKIHByaXZhdGU6CiAgICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0N1cnNvckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMjIg
QEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgIH0KIH0KIAor
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0N1cnNvckVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHQ3Vyc29y
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKK30KKwogdm9pZCBTVkdDdXJzb3JFbGVtZW50OjphZGRDbGllbnQoU1ZHRWxl
bWVudCogZWxlbWVudCkKIHsKICAgICBtX2NsaWVudHMuYWRkKGVsZW1lbnQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYg
KzUzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsMjUg
QEAgdm9pZCBTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdAogICAgICAgICBTdHls
ZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAorQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK0FuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdFbGVtZW50
OjphbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYW5pbWF0ZWRBdHRy
aWJ1dGVNYXAgPSBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGlmIChhbmltYXRl
ZEF0dHJpYnV0ZU1hcC5pc0VtcHR5KCkpCisgICAgICAgIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOworICAgIGlmIChhbmltYXRlZEF0dHJpYnV0ZU1hcC5jb250YWlucyhhdHRyTmFt
ZSkpCisgICAgICAgIHJldHVybiBhbmltYXRlZEF0dHJpYnV0ZU1hcC5nZXQoYXR0ck5hbWUpOwor
ICAgIGlmIChpc1N0eWxlZCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVk
RWxlbWVudCo+KHRoaXMpLT5hbmltYXRlZFByb3BlcnR5VHlwZUZvckNTU1Byb3BlcnR5KGF0dHJO
YW1lKTsKKworICAgIHJldHVybiBBbmltYXRlZFVua25vd247Cit9CisKIGJvb2wgU1ZHRWxlbWVu
dDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkKIHsKICAgICBOb2RlKiBjaGlsZCA9IGZp
cnN0Q2hpbGQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw5ICsyNSwzMiBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgi
CiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgeworICAg
IEFuaW1hdGVkQW5nbGUsCisgICAgQW5pbWF0ZWRCb29sZWFuLAorICAgIEFuaW1hdGVkQ29sb3Is
CisgICAgQW5pbWF0ZWRFbnVtZXJhdGlvbiwKKyAgICBBbmltYXRlZEludGVnZXIsCisgICAgQW5p
bWF0ZWRMZW5ndGgsCisgICAgQW5pbWF0ZWRMZW5ndGhMaXN0LAorICAgIEFuaW1hdGVkTnVtYmVy
LAorICAgIEFuaW1hdGVkTnVtYmVyTGlzdCwKKyAgICBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyLAorICAgIEFuaW1hdGVkUGF0aCwKKyAgICBBbmltYXRlZFBvaW50cywKKyAgICBBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8sCisgICAgQW5pbWF0ZWRSZWN0LAorICAgIEFuaW1hdGVkU3Ry
aW5nLAorICAgIEFuaW1hdGVkVHJhbnNmb3JtTGlzdCwKKyAgICBBbmltYXRlZFVua25vd24KK307
CisKK3R5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBBbmltYXRlZEF0dHJpYnV0ZVR5cGU+
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworCiBjbGFzcyBDU1NDdXJzb3JJbWFnZVZhbHVl
OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTVkdDdXJzb3JFbGVtZW50OwpAQCAtNjQsNiArODcs
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJikgeyB9CiAKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIEFuaW1hdGVk
QXR0cmlidXRlVHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkgeyB9CisKICAgICB2b2lkIHNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wg
c2VuZFBhcmVudExvYWRFdmVudHMgPSBmYWxzZSk7CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSogc3VwcGxlbWVudGFsVHJhbnNmb3JtKCkgeyByZXR1cm4gMDsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0Miw2ICsxNDIsMjMgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVQcm9w
ZQogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1l
KTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0VsbGlwc2VFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lk
IFNWR0VsbGlwc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorewor
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3hBdHRyLCBB
bmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnJ4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnlBdHRyLCBBbmltYXRlZExlbmd0aCk7
Cit9CisKIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29u
c3QKIHsKICAgICBBU1NFUlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgm
KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDIyIEBAIHZvaWQgU1ZHRkVCbGVuZEVs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGUKICAgICAgICAgc3luY2hyb25pemVJbjIoKTsKIH0KIAor
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFQmxlbmRFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFQmxl
bmRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6aW4yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6bW9kZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworfQorCiBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVm
ZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAog
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDYgKzk4LDIyIEBAIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
OnN5bmNocm9uaXoKICAgICAgICAgc3luY2hyb25pemVWYWx1ZXMoKTsKIH0KIAorQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6dHlwZUF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmFsdWVzQXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0
KTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikK
IHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5
SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0
eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCwxOSBAQCB2b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50
OjpzeW5jCiAgICAgICAgIHN5bmNocm9uaXplSW4xKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCku
c2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJF
ZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNywyNiBA
QCB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3luY2hyb25pemVQCiAgICAgICAgIHN5bmNo
cm9uaXplSzQoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKK30KKwordm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbjJBdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIs
IEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6azFBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprMkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmszQXR0ciwgQW5pbWF0ZWRO
dW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6azRB
dHRyLCBBbmltYXRlZE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIs
IEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzks
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OSw2ICsxNTksMjkgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6c3ZnQXR0cgogICAgICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6Om9yZGVyQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprZXJuZWxNYXRyaXhBdHRyLCBBbmlt
YXRlZE51bWJlckxpc3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6ZGl2aXNvckF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmJpYXNBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0YXJnZXRYQXR0ciwgQW5p
bWF0ZWRJbnRlZ2VyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnRhcmdldFlBdHRyLCBBbmltYXRlZEludGVnZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9u
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbFVu
aXRMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCBBbmlt
YXRlZEJvb2xlYW4pOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZp
bHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRl
ci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmRlclhJZGVudGlmaWVyKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3MiwyMyBAQCB2b2lk
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3luY2hyCiAgICAgfQogfQogCitBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwor
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
K3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0
dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBm
aWx0ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0
ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBr
ZXJuZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDI0IEBAIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjpzeW5jaHIKICAgICAgICAgc3luY2hyb25pemVTY2FsZSgpOwogfQogCitBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyLCBB
bmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNjYWxlQXR0ciwgQW5p
bWF0ZWROdW1iZXIpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBG
aWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7
CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3
ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDIxIEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50OjpzeW5jaHJvbmkKICAgICAgICAgc3luY2hyb25pemVJbjEoKTsKIH0KIAorQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsK
KyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7
CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpzdGREZXZpYXRpb25BdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVt
YmVyKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0
ZXIpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjIsNiArMTIyLDIxIEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGUK
ICAgICAgICAgc3luY2hyb25pemVFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CiB9CiAKK0F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUltYWdlRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGRUltYWdl
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKK30KKwogdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKQogewogICAgIGlmICghaW5Eb2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNiArMTUx
LDI5IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGUKICAgICAgICAg
c3luY2hyb25pemVMaW1pdGluZ0NvbmVBbmdsZSgpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHRkVMaWdodEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6YXpp
bXV0aEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmVsZXZhdGlvbkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJl
cik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwg
QW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6ekF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnBvaW50c0F0WkF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBBbmltYXRlZE51
bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpsaW1p
dGluZ0NvbmVBbmdsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKK30KKwogdm9pZCBTVkdGRUxpZ2h0
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZv
cmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAg
IFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5n
ZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSog
YWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICAvLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1lcmdlTm9kZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2
ICs3MSwxOSBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbihyZW5kZXJlcik7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1l
cmdlTm9kZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworCisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZH
TmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiB2b2lkIFNWR0ZFTWVyZ2VOb2Rl
RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKIHsKICAgICBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJOYW1lKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHJldmlzaW9u
IDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAg
ICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKICAgICBERUNMQVJFX0FOSU1BVEVE
X1NUUklORyhJbjEsIGluMSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4
LDIyIEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3luY2hyb25pemUKICAgICB9CiB9
CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lk
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmFkaXVzQXR0ciwgQW5p
bWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJC
dWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYWRpdXNYSWRlbnRpZmllcigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg3LDYgKzg3LDIyIEBAIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3AKICAgICAgICAgc3luY2hyb25pemVJbjEoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAg
ICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeEF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmR5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWls
ZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRl
ckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsNiArMTE3LDI0IEBAIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6c3luY2gKICAgICB9CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
KyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzcGVjdWxh
ckNvbnN0YW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIsIEFuaW1hdGVkTnVtYmVy
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnN1cmZhY2VT
Y2FsZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlck9wdGlv
bmFsTnVtYmVyKTsKK30KKwogUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0cygpIGNvbnN0CiB7CiAgICAgZm9yIChOb2RlKiBub2Rl
ID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAgcHJpdmF0
ZToKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYg
KzY5LDE5IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICAg
ICAgc3luY2hyb25pemVJbjEoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R0ZFVGlsZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKK3sKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQor
CiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZHRmls
dGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgRmlsdGVy
RWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAg
ICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI4LDYgKzEyOCwyNCBAQCB2b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnN5
bmNocm9uaXplCiAgICAgICAgIHN5bmNocm9uaXplTnVtT2N0YXZlcygpOwogfQogCitBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGRVR1cmJ1
bGVuY2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmJhc2VGcmVx
dWVuY3lBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyLCBBbmltYXRlZElu
dGVnZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c2Vl
ZEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1cmJ1
bGVuY2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWx0ZXIpCiB7
CiAgICAgaWYgKGJhc2VGcmVxdWVuY3lYKCkgPCAwIHx8IGJhc2VGcmVxdWVuY3lZKCkgPCAwKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCShyZXZp
c2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWls
ZGVyKiwgRmlsdGVyKik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBiYXNlRnJl
cXVlbmN5WElkZW50aWZpZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDI3IEBAIHZvaWQgU1ZH
RmlsdGVyRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICAgICAgc3luY2hyb25pemVIcmVm
KCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGaWx0ZXJFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lk
IFNWR0ZpbHRlckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7Cisg
ICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Cisg
ICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ciwgQW5pbWF0
ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpwcmltaXRpdmVVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBB
bmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIsIEFu
aW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisK
IHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2Vk
QnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTMsNiArNTMsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBj
aGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3Jl
Q2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0g
MCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9u
IDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsMjQgQEAgdm9pZCBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIGZpbHRlckVmZmVjdC0+c2V0
RWZmZWN0Qm91bmRhcmllcyhlZmZlY3RCQm94KTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRl
ZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5
QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyZXN1bHRBdHRy
LCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZpc2lvbiA3
ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5n
ZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIGlubGluZSB2b2lkIGludmFs
aWRhdGUoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsMjQgQEAg
dm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3luY2hyb25pegogICAgICAgICBTVkdUZXN0
czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAorQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKK30KKwogUmVuZGVyT2JqZWN0KiBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7
CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QodGhpcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkocmV2
aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZp
cnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFs
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OwogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNv
bnN0OwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2x5cGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiwxOSBAQCBz
dGF0aWMgaW5saW5lIGZsb2F0IHBhcnNlU1ZHR2x5cGhBdHRyaWJ1CiAgICAgcmV0dXJuIHZhbHVl
LnRvRmxvYXQoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0dseXBoRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30K
Kwordm9pZCBTVkdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgCisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKS5zZXQoU1ZHTmFtZXM6
OmRBdHRyLCBBbmltYXRlZFBhdGgpOworfQorCiBTVkdHbHlwaElkZW50aWZpZXIgU1ZHR2x5cGhF
bGVtZW50OjpidWlsZEdlbmVyaWNHbHlwaElkZW50aWZpZXIoY29uc3QgU1ZHRWxlbWVudCogZWxl
bWVudCkKIHsKICAgICBTVkdHbHlwaElkZW50aWZpZXIgaWRlbnRpZmllcjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3
LDggQEAgcHJpdmF0ZToKICAgICBTVkdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNCw2ICsxMjQsMjMgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcAogICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0dyYWRpZW50RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0
dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxp
c3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVm
QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorICAgIAogdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHls
ZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBuZWVk
c1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjQsNiArMTY0LDI1IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Bl
cnQKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFt
ZSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdJbWFnZUVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAo
KSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQg
U1ZHSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAg
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1h
dGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRT
dHJpbmcpOworfQorCiBib29sIFNWR0ltYWdlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHgoKS5pc1JlbGF0aXZlKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAg
dmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwyMyBA
QCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHTGluZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHTGluZUVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnkxQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDJB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp5MkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogdm9pZCBTVkdMaW5lRWxl
bWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VSVChwYXRoLmlz
RW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkocmV2aXNpb24g
NzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsNiArNDYsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVh
bCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwyMyBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dDo6c3luY2hyb25pCiAgICAgICAgIHN5bmNocm9uaXplWTIoKTsKIH0KIAorQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZH
R3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnkxQXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDJB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp5MkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogUmVuZGVyT2JqZWN0KiBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNv
dXJjZUxpbmVhckdyYWRpZW50KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDYgKzQyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw2ICs2NSwyMCBAQCB2b2lkIFNWR01QYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
CiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgU1ZHTVBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR01QYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKKworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRy
LCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFNWR1BhdGhFbGVtZW50KiBTVkdNUGF0aEVsZW1lbnQ6
OnBhdGhFbGVtZW50KCkKIHsKICAgICBFbGVtZW50KiB0YXJnZXQgPSBkb2N1bWVudCgpLT5nZXRF
bGVtZW50QnlJZChnZXRUYXJnZXQoaHJlZigpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTVBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01Q
YXRoRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBwcml2YXRlOgog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwor
ICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2aXNpb24gNzgw
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4Myw2ICsxODMsMjYgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcgogICAgIH0KIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01h
cmtlckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Cit9CisKK3ZvaWQgU1ZHTWFya2VyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmVmWEF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnJlZllBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlckhlaWdo
dEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvcmllbnRBdHRyLCBBbmlt
YXRlZEFuZ2xlKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOworfQorCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHls
ZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVy
Q2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsNiArMTQ4LDI1IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVy
dHkKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFt
ZSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdNYXNrRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBT
VkdNYXNrRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRy
LCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIs
IEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOwor
fQorCiB2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENv
dW50RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5n
ZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw2ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFu
Z2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsK
IAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDYgKzI3MiwyMSBAQCB2b2lkIFNWR1BhdGhFbGVtZW50
OjpzeW5jaHJvbml6ZUQoKQogICAgIFNWR0FuaW1hdGVkUHJvcGVydHlTeW5jaHJvbml6ZXI8dHJ1
ZT46OnN5bmNocm9uaXplKHRoaXMsIFNWR05hbWVzOjpkQXR0ciwgbV9wYXRoU2VnTGlzdC52YWx1
ZS52YWx1ZUFzU3RyaW5nKCkpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
UGF0aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Cit9CisKK3ZvaWQgU1ZHUGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpkQXR0ciwgQW5pbWF0ZWRQYXRoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlcik7Cit9CisKIFNWR1Bh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmKiBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3QoKQog
ewogICAgIGlmICghbV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlz
aW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTk0LDYgKzE5NCwyOSBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50
OjpzeW5jaHJvbml6ZVByb3BlCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
UGF0dGVybkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXA7Cit9CisKK3ZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisgICAgCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRy
LCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRl
ZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpw
YXR0ZXJuVW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvKTsKK30KKwogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFm
dGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFu
Z2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2
aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2Ug
PSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2
ICsxMTIsMTkgQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQogICAg
ICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0K
IAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1BvbHlFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1BvbHlF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsK
KworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05hbWVzOjpwb2ludHNB
dHRyLCBBbmltYXRlZFBvaW50cyk7Cit9CisKIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9u
aXplUG9pbnRzKCkKIHsKICAgICBpZiAoIW1fcG9pbnRzLnNob3VsZFN5bmNocm9uaXplKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYg
KzUwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwyNCBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudDo6c3luY2hyb25pCiAgICAgICAgIHN5bmNocm9uaXplUigpOwogfQogCitBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBT
VkdHcmFkaWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0ciwgQW5p
bWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6ckF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6OmZ4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZnlBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9
CisKIFJlbmRlck9iamVjdCogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudCh0aGlzKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDc4
MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2
b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSwyNSBAQCB2b2lkIFNWR1JlY3RFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
UmVjdEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Cit9CisKK3ZvaWQgU1ZHUmVjdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6cnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpyeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogdm9pZCBT
VkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VS
VChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAko
cmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwg
dm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSwy
NSBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoCiAgICAgICAgIFNW
R1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHU1ZHRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdTVkdFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3Ro
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIsIEFuaW1hdGVkUmVjdCk7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKK30KKwogdW5zaWduZWQg
U1ZHU1ZHRWxlbWVudDo6c3VzcGVuZFJlZHJhdyh1bnNpZ25lZCAvKiBtYXhXYWl0TWlsbGlzZWNv
bmRzICovKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUgKHNlZSBidWcgMTEyNzUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYg
KzE0NCw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29s
IHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDE5
IEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICAgICAgc3lu
Y2hyb25pemVIcmVmKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdTY3Jp
cHRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
OworfQorCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgU1ZHRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChYTGlua05hbWVzOjpo
cmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KCkKIHsKICAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1
bWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCShyZXZpc2lv
biA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAg
ICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3RvcEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDE5IEBA
IHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAgICAgc3luY2hy
b25pemVPZmZzZXQoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N0b3BF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwor
fQorCit2b2lkIFNWR1N0b3BFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOworICAgIAorICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05hbWVz
OjpvZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHU3Rv
cEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdHcmFkaWVudFN0b3AodGhpcyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGlz
R3JhZGllbnRTdG9wKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiAr
NDMsNyBAQAogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVc2VFbGVt
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIwMCw2ICsyMDEsOTEgQEAgaW50IFNW
R1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVgogICAgIHJldHVybiBwcm9wZXJ0eU5h
bWVUb0lkTWFwLT5nZXQoYXR0ck5hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKIH0KIAorc3RhdGlj
IGlubGluZSBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgY3NzUHJvcGVydHlUb1R5cGVNYXAo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
IHNfY3NzUHJvcGVydHlNYXAsICgpKTsKKyAgICAKKyAgICBpZiAoIXNfY3NzUHJvcGVydHlNYXAu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc19jc3NQcm9wZXJ0eU1hcDsKKworICAgIC8vIEZp
bGwgdGhlIG1hcCBmb3IgdGhlIGZpcnN0IHVzZS4KKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChh
bGlnbm1lbnRfYmFzZWxpbmVBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoYmFzZWxpbmVfc2hpZnRBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQ
cm9wZXJ0eU1hcC5zZXQoY2xpcEF0dHIsIEFuaW1hdGVkUmVjdCk7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoY2xpcF9wYXRoQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KGNsaXBfcnVsZUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChTVkdOYW1lczo6Y29sb3JBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nz
c1Byb3BlcnR5TWFwLnNldChjb2xvcl9pbnRlcnBvbGF0aW9uQXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX2ludGVycG9sYXRpb25fZmlsdGVyc0F0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjb2xvcl9wcm9m
aWxlQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNvbG9y
X3JlbmRlcmluZ0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsgCisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQoY3Vyc29yQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KGRpc3BsYXlBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
ZG9taW5hbnRfYmFzZWxpbmVBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoZmlsbEF0dHIsIEFuaW1hdGVkQ29sb3IpOworICAgIHNfY3NzUHJvcGVydHlNYXAu
c2V0KGZpbGxfb3BhY2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5
TWFwLnNldChmaWxsX3J1bGVBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoZmlsdGVyQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlN
YXAuc2V0KGZsb29kX2NvbG9yQXR0ciwgQW5pbWF0ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoZmxvb2Rfb3BhY2l0eUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1By
b3BlcnR5TWFwLnNldChmb250X2ZhbWlseUF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nz
c1Byb3BlcnR5TWFwLnNldChmb250X3NpemVBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgc19j
c3NQcm9wZXJ0eU1hcC5zZXQoZm9udF9zdHJldGNoQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAg
IHNfY3NzUHJvcGVydHlNYXAuc2V0KGZvbnRfc3R5bGVBdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZm9udF92YXJpYW50QXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZvbnRfd2VpZ2h0QXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGltYWdlX3JlbmRlcmluZ0F0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChrZXJuaW5nQXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGxldHRlcl9zcGFjaW5nQXR0ciwg
QW5pbWF0ZWRMZW5ndGgpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGxpZ2h0aW5nX2NvbG9y
QXR0ciwgQW5pbWF0ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQobWFya2VyX2Vu
ZEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXJrZXJf
bWlkQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hcmtl
cl9zdGFydEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCht
YXNrQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG9wYWNp
dHlBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQob3ZlcmZs
b3dBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQocG9pbnRl
cl9ldmVudHNBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQo
c2hhcGVfcmVuZGVyaW5nQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlN
YXAuc2V0KHN0b3BfY29sb3JBdHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5
TWFwLnNldChzdG9wX29wYWNpdHlBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgc19jc3NQcm9w
ZXJ0eU1hcC5zZXQoc3Ryb2tlQXR0ciwgQW5pbWF0ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoc3Ryb2tlX2Rhc2hhcnJheUF0dHIsIEFuaW1hdGVkTGVuZ3RoTGlzdCk7CisgICAg
c19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX2Rhc2hvZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX2xpbmVjYXBBdHRyLCBBbmltYXRl
ZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX2xpbmVqb2luQXR0ciwg
QW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0cm9rZV9taXRlcmxp
bWl0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0cm9r
ZV9vcGFjaXR5QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KHN0cm9rZV93aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFw
LnNldCh0ZXh0X2FuY2hvckF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5
TWFwLnNldCh0ZXh0X2RlY29yYXRpb25BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQ
cm9wZXJ0eU1hcC5zZXQodGV4dF9yZW5kZXJpbmdBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAg
c19jc3NQcm9wZXJ0eU1hcC5zZXQodmVjdG9yX2VmZmVjdEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsK
KyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh2aXNpYmlsaXR5QXR0ciwgQW5pbWF0ZWRTdHJpbmcp
OworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHdvcmRfc3BhY2luZ0F0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICByZXR1cm4gc19jc3NQcm9wZXJ0eU1hcDsKK30KKworQW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlIFNWR1N0eWxlZEVsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGNzc1Byb3BlcnR5VHlwZU1hcCA9IGNzc1Byb3BlcnR5VG9UeXBlTWFwKCk7
CisgICAgaWYgKCFjc3NQcm9wZXJ0eVR5cGVNYXAuY29udGFpbnMoYXR0ck5hbWUpKQorICAgICAg
ICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOworICAgIHJldHVybiBjc3NQcm9wZXJ0eVR5cGVNYXAu
Z2V0KGF0dHJOYW1lKTsKK30KKworQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N0eWxl
ZEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7
Cit9CisKK3ZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKK3sKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KEhUTUxOYW1lczo6Y2xh
c3NBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6bWFw
VG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50
cnkmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVy
dHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpID4gMCkgewpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDgg
QEAgcHVibGljOgogICAgIGJvb2wgaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0SW5zdGFuY2VVcGRhdGVzQmxvY2tlZChib29sKTsKIAorICAgIEFuaW1hdGVkQXR0
cmlidXRlVHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZUZvckNTU1Byb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0
ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6
OnN0eWxlKCk7IH0KQEAgLTY2LDYgKzY4LDkgQEAgcHJvdGVjdGVkOiAKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCisgICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1
YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGluc2Vy
dGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQs
NiArMTE0LDE5IEBAIFJlbmRlck9iamVjdCogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW0KICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUGF0aCh0aGlzKTsKIH0KIAorQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwor
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOworICAgIAorICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkuc2V0KFNWR05hbWVz
Ojp0cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOworfQorCiB2b2lkIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp0b0NsaXBQYXRoKFBhdGgmIHBhdGgpIGNvbnN0CiB7
CiAgICAgdG9QYXRoRGF0YShwYXRoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw2ICs1OSw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKICAgICBERUNMQVJFX0FOSU1BVEVEX1RSQU5T
Rk9STV9MSVNUKFRyYW5zZm9ybSwgdHJhbnNmb3JtKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N5bWJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTeW1ib2xFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDIxIEBA
IHZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICB9IAogfQogCitB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHU3ltYm9sRWxlbWVudDo6YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICBy
ZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdTeW1ib2xF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2aWV3Qm94QXR0ciwgQW5pbWF0ZWRSZWN0KTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworfQorCiBib29sIFNWR1N5bWJv
bEVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdAogewogICAgIHJldHVybiBo
YXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N5bWJvbEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3ltYm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVu
ZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNS
ZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVm
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCwxOSBAQCB2b2lkIFNWR1RSZWZF
bGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIHN5bmNocm9uaXplSHJlZigpOwog
fQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVFJlZkVsZW1lbnQ6OmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Cisg
ICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHVFJl
ZkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpLnNldChYTGlua05hbWVzOjpocmVmQXR0
ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR1RSZWZFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHSW5saW5lKHRoaXMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyMSw2ICsyMjEsMjEgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZQogICAgIC8vIEZJWE1FOiBhbHNvIGhhbmRsZSBhdHRyaWJ1dGUgY2hhbmdlcyBmb3IgbGVu
Z3RoQWRqdXN0IGFuZCB0ZXh0TGVuZ3RoCiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0ciwgQW5pbWF0ZWRF
bnVtZXJhdGlvbik7Cit9CisKIGJvb2wgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojppc0tub3duQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIHJldHVybiBhdHRy
TmFtZS5tYXRjaGVzKFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyKQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDYgKzY1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOyAKIAogICAgIHZpcnR1YWwg
Ym9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDE5
IEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAgICAgc3lu
Y2hyb25pemVUcmFuc2Zvcm0oKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R1RleHRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwOworfQorCit2b2lkIFNWR1RleHRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQoreworICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOworICAgIAorICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCkuc2V0KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBBbmltYXRlZFRyYW5zZm9ybUxpc3QpOwor
fQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKICAgICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUKFRyYW5zZm9y
bSwgdHJhbnNmb3JtKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsMjMgQEAgdm9pZCBTVkdU
ZXh0UGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcAogICAgICAgICBzeW5jaHJvbml6ZUhyZWYo
KTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RleHRQYXRoRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9p
ZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7
CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRy
LCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjptZXRob2RBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLCBBbmltYXRlZEVudW1l
cmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6
aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogUmVuZGVyT2JqZWN0KiBTVkdUZXh0UGF0
aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUZXh0UGF0aCh0aGlzKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw2ICs2Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25p
emVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDI0IEBA
IHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3luY2hyb24KICAgICAgICAgc3luY2hy
b25pemVSb3RhdGUoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnhBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeEF0dHIsIEFuaW1hdGVk
TnVtYmVyTGlzdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
OjpkeUF0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpyb3RhdGVBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworfQor
CiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojpl
bGVtZW50RnJvbVJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFy
ZW5kZXJlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5
UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdl
ID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKICAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSF9MSVNUKFgsIHgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI3LDYgKzIyNywyNCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVydHkoCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRp
ZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
VXNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKK30KKwordm9pZCBTVkdVc2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICAKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtO
YW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKK30KKwogc3RhdGljIHZvaWQgdXBkYXRl
Q29udGFpbmVyU2l6ZShTVkdVc2VFbGVtZW50KiB1c2VFbGVtZW50LCBTVkdFbGVtZW50SW5zdGFu
Y2UqIHRhcmdldEluc3RhbmNlKQogewogICAgIC8vIERlcHRoLWZpcnN0IHVzZWQgdG8gd3JpdGUg
dGhlIG1ldGhvZCBpbiBlYXJseSBleGl0IHN0eWxlLCBubyBwYXJ0aWN1bGFyIG90aGVyIHJlYXNv
bi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Miw2ICs2Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0
eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVj
YWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2
ICs4MCwyMSBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAg
fQogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVmlld0VsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZH
Vmlld0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgU1ZH
U3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgCisg
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3Bl
Y3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Cit9CisKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAko
cmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFs
c2U7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81974</attachid>
            <date>2011-02-10 06:52:59 -0800</date>
            <delta_ts>2011-02-10 09:05:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53442-20110210155254.patch</filename>
            <type>text/plain</type>
            <size>130093</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4MjE4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYxIEBACisyMDExLTAyLTEwICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQgbmVlZHMgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGFuaW1hdGVkIGF0dHJpYnV0ZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzQ0MgorCisgICAgICAgIEZvciBhbmltYXRpb25zLCB3
ZSBuZWVkIHRvIGtub3cgdGhlIFNWRyBwcm9wZXJ0eSB0eXBlIGZvciBhIFhNTCBhdHRyaWJ1dGUu
IEEgZ2xvYmFsIHN0YXRpYyBtYXBwaW5nIGJldHdlZW4KKyAgICAgICAgYXR0cmlidXRlIG5hbWUg
YW5kIGEgdHlwZSBpcyBub3QgcG9zc2libGUsIHNpbmNlIG9uZSBhdHRyaWJ1dGUgbmFtZSBjYW4g
YmUgYm91bmRlZCB0byBkaWZmZXJlbnQgcHJvcGVydHkgdHlwZXM6CisgICAgICAgIHggY2FuIGJl
IGEgU1ZHTnVtYmVyTGlzdCwgYSBTVkdOdW1iZXIgb3IgYSBTVkdMZW5ndGguIFNvIHdlIGhhdmUg
dG8gYXNrIGV2ZXJ5IHRhcmdldCBlbGVtZW50LCBpZiBpdCBzdXBwb3J0cworICAgICAgICB0aGUg
YW5pbWF0ZWQgYXR0cmlidXRlIGFuZCBvZiB3aGljaCB0eXBlIGl0IGlzLiBKdXN0IGZvciBDU1Mg
cHJvcGVydGllcyB3ZSBjYW4gc2hhcmUgYW4gZXhwbGljaXRlIG1hcHBpbmdzIGJldHdlZW4KKyAg
ICAgICAgdGhlIG5hbWUgYW5kIHRoZSB0eXBlLiBUaGlzIGlzIGRvbmUgaW4gYSBzdGF0aWMgbWFw
IGluIFNWR1N0eWxlZEVsZW1lbnQuIEFsbCBvdGhlciBtYXBwaW5ncyBhcmUgc3RvcmVkIGluIGxv
Y2FsIHN0YXRpYworICAgICAgICBIYXNoTWFwcyBmb3IgYWxsIFNWRyBlbGVtZW50cyB3aXRoIGFu
aW1hdGVkIHByb3BlcnRpZXMuIFRoZXNlIG1hcHMgZ2V0IGZpbGxlZCBvbmNlIHdpdGggdGhlIGZ1
bmN0aW9uIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcAorICAgICAgICB0aGF0IG5lZWRz
IHRvIGJlIGluY2x1ZGVkIGluIGV2ZXJ5IFNWRyBlbGVtZW50LiBUaGUgZnVuY3Rpb24gaXMgbm90
IHZpcnR1YWwgaW4gYmFzZSBjbGFzc2VzIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgorCisgICAg
ICAgIE5vIGNoYW5nZSBvZiBmdW5jdGlvbmFsaXR5LCBzbyBubyBuZXcgdGVzdCBjYXNlcy4KKwor
ICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxl
bWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3Zn
L1NWR0FFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbHRHbHlwaEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FsdEdseXBoRWxlbWVudDo6ZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjpkZXRlcm1pbmVQcm9wZXJ0eVR5cGUpOgorICAgICAgICAq
IHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0NpcmNsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAg
ICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjphbmltYXRlZFByb3BlcnR5VHlwZUZvckF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0Vs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVCbGVuZEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgor
ICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICog
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUZs
b29kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NW
R0ZFRmxvb2RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdodEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRU1lcmdlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9s
b2d5RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRU9mZnNldEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVRpbGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zp
bHRlckVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICog
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToK
KyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
bnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGb250RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAg
ICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAq
IHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2x5cGhFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaEVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0dseXBoRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXApOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9T
VkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTVBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6
CisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXJr
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR01h
cmtlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01pc3Np
bmdHbHlwaEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR01pc3NpbmdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgICogc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BvbHlFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToK
KyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9T
VkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVtZW50
OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3Jp
cHRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2
Zy9TVkdTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NQcm9w
ZXJ0eVRvVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50Ojphbmlt
YXRlZFByb3BlcnR5VHlwZUZvckNTU1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0
eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICog
c3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3Zn
L1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N3aXRj
aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxlbWVudDo6YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3dpdGNoRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKiBzdmcvU1ZHU3dp
dGNoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N5bWJvbEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N5bWJvbEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVs
ZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RSZWZFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAq
IHN2Zy9TVkdUUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUU3BhbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFNwYW5FbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUU3BhbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1RTcGFuRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHVGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVt
ZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdU
ZXh0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RpdGxlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGl0bGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgor
ICAgICAgICAqIHN2Zy9TVkdUaXRsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1ZpZXdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdWaWV3RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKToKKyAg
ICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKwogMjAxMS0wMi0xMCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNl
bWlraGF0c2t5LgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3
ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNSw2ICsxMDUsMjEgQEAgdm9pZCBTVkdBRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjbwogICAgIH0KIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0FFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQor
Cit2b2lkIFNWR0FFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorewor
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnRhcmdldEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKK30KKwogdm9pZCBTVkdBRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVs
ZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAg
dmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDIwIEBAIHZvaWQgU1ZH
QWx0R2x5cGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3AKICAgICAgICAgc3luY2hyb25pemVIcmVm
KCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdBbHRHbHlwaEVsZW1lbnQ6
OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3Zv
aWQgU1ZHQWx0R2x5cGhFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQor
eworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorCiB2b2lkIFNWR0Fs
dEdseXBoRWxlbWVudDo6c2V0R2x5cGhSZWYoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCisgICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBj
b25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkNvbG9yRGlz
dGFuY2UuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJRdWFsaWZp
ZWROYW1lLmgiCiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgpAQCAtODQsMTUgKzg1LDE4IEBAIHN0YXRp
YyBib29sIHBhcnNlTnVtYmVyVmFsdWVBbmRVbml0KGNvbnMKIAogU1ZHQW5pbWF0ZUVsZW1lbnQ6
OlByb3BlcnR5VHlwZSBTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lUHJvcGVydHlUeXBlKGNv
bnN0IFN0cmluZyYgYXR0cmlidXRlKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEg
ZnVsbCBwcm9wZXJ0eSB0YWJsZSBmb3IgZmlndXJpbmcgdGhpcyBvdXQgcmVsaWFibHkuCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBub3QgYWxsb3cgYW5pbWF0aW9uIG9mIGF0dHJpYnV0ZSB0eXBl
cyBvdGhlciB0aGFuIEFuaW1hdGVkQ29sb3IgZm9yIDxhbmltYXRlQ29sb3I+LgogICAgIGlmICho
YXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlQ29sb3JUYWcpKQogICAgICAgICByZXR1cm4gQ29s
b3JQcm9wZXJ0eTsKLSAgICBpZiAoYXR0cmlidXRlID09ICJkIikKKworICAgIC8vIEZJWE1FOiBO
b3cgdGhhdCB3ZSBoYXZlIGEgZnVsbCBwcm9wZXJ0eSB0YWJsZSB3ZSBuZWVkIGEgbW9yZSBncmFu
dWxhciB0eXBlIHNwZWNpZmljIGFuaW1hdGlvbi4KKyAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUg
dHlwZSA9IHRhcmdldEVsZW1lbnQoKS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRyaWJ1dGUo
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgYXR0cmlidXRlLCBudWxsQXRvbSkpOworICAgIGlmICh0
eXBlID09IEFuaW1hdGVkQ29sb3IpCisgICAgICAgIHJldHVybiBDb2xvclByb3BlcnR5OworICAg
IGlmICh0eXBlID09IEFuaW1hdGVkUGF0aCkKICAgICAgICAgcmV0dXJuIFBhdGhQcm9wZXJ0eTsK
LSAgICBpZiAoYXR0cmlidXRlID09ICJwb2ludHMiKQorICAgIGlmICh0eXBlID09IEFuaW1hdGVk
UG9pbnRzKQogICAgICAgICByZXR1cm4gUG9pbnRzUHJvcGVydHk7Ci0gICAgaWYgKGF0dHJpYnV0
ZSA9PSAiY29sb3IiIHx8IGF0dHJpYnV0ZSA9PSAiZmlsbCIgfHwgYXR0cmlidXRlID09ICJzdHJv
a2UiKQotICAgICAgICByZXR1cm4gQ29sb3JQcm9wZXJ0eTsKICAgICByZXR1cm4gTnVtYmVyUHJv
cGVydHk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMyLDIyIEBAIHZvaWQgU1ZHQ2lyY2xlRWxl
bWVudDo6c3luY2hyb25pemVQcm9wZXIKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJv
cGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdDaXJjbGVFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOworfQorCit2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnJBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6
dG9QYXRoRGF0YShQYXRoJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHko
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHJldmlzaW9uIDc4
MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICB2aXJ0dWFsIHZv
aWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKwogICAg
IHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9v
bCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYg
KzEwMiwyMCBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wCiAgICAg
ICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQog
CitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ2xpcFBhdGhFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwor
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0Ns
aXBQYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0
aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIHZv
aWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCiB7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291
bnREZWx0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShy
ZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBm
YWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQg
Y2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsx
MTIsMjYgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudAogICAgICAg
ICBzeW5jaHJvbml6ZU9mZnNldCgpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7Cisg
ICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
ID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIFNWR0VsZW1lbnQ6
OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0eXBlQXR0
ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIEFuaW1hdGVkTnVtYmVyTGlzdCk7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzbG9wZUF0dHIsIEFuaW1h
dGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OmludGVyY2VwdEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmFtcGxpdHVkZUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmV4cG9uZW50QXR0ciwg
QW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6b2Zmc2V0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworfQorCiBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp0cmFuc2ZlckZ1
bmN0aW9uKCkgY29uc3QKIHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIGZ1bmM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIAogcHJpdmF0ZToKICAg
ICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miwy
MiBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgfQogfQog
CitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHQ3Vyc29yRWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAg
ICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdDdXJz
b3JFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMt
PmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVk
TnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlB
dHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIHZvaWQgU1ZHQ3Vy
c29yRWxlbWVudDo6YWRkQ2xpZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgbV9jbGll
bnRzLmFkZChlbGVtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQu
aAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDI1IEBAIHZvaWQgU1ZHRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXQKICAgICAgICAgU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdFbGVtZW50Ojph
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
KCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCitBbmlt
YXRlZEF0dHJpYnV0ZVR5cGUgU1ZHRWxlbWVudDo6YW5pbWF0ZWRQcm9wZXJ0eVR5cGVGb3JBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGFuaW1hdGVkQXR0cmlidXRlTWFwID0gYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICBpZiAoYW5pbWF0ZWRBdHRyaWJ1dGVNYXAuaXNFbXB0eSgpKQorICAg
ICAgICBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICBpZiAoYW5pbWF0ZWRB
dHRyaWJ1dGVNYXAuY29udGFpbnMoYXR0ck5hbWUpKQorICAgICAgICByZXR1cm4gYW5pbWF0ZWRB
dHRyaWJ1dGVNYXAuZ2V0KGF0dHJOYW1lKTsKKyAgICBpZiAoaXNTdHlsZWQoKSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPih0aGlzKS0+YW5pbWF0ZWRQcm9w
ZXJ0eVR5cGVGb3JDU1NQcm9wZXJ0eShhdHRyTmFtZSk7CisKKyAgICByZXR1cm4gQW5pbWF0ZWRV
bmtub3duOworfQorCiBib29sIFNWR0VsZW1lbnQ6OmhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNl
cygpCiB7CiAgICAgTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOSArMjUsMzIgQEAKICNpZiBFTkFCTEUoU1ZH
KQogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1lbnQuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0g
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHsKKyAgICBBbmltYXRlZEFuZ2xlLAorICAgIEFuaW1hdGVk
Qm9vbGVhbiwKKyAgICBBbmltYXRlZENvbG9yLAorICAgIEFuaW1hdGVkRW51bWVyYXRpb24sCisg
ICAgQW5pbWF0ZWRJbnRlZ2VyLAorICAgIEFuaW1hdGVkTGVuZ3RoLAorICAgIEFuaW1hdGVkTGVu
Z3RoTGlzdCwKKyAgICBBbmltYXRlZE51bWJlciwKKyAgICBBbmltYXRlZE51bWJlckxpc3QsCisg
ICAgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlciwKKyAgICBBbmltYXRlZFBhdGgsCisgICAg
QW5pbWF0ZWRQb2ludHMsCisgICAgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLAorICAgIEFu
aW1hdGVkUmVjdCwKKyAgICBBbmltYXRlZFN0cmluZywKKyAgICBBbmltYXRlZFRyYW5zZm9ybUxp
c3QsCisgICAgQW5pbWF0ZWRVbmtub3duCit9OworCit0eXBlZGVmIEhhc2hNYXA8UXVhbGlmaWVk
TmFtZSwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlPiBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsK
KwogY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU1ZH
Q3Vyc29yRWxlbWVudDsKQEAgLTY0LDYgKzg3LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpIHsgfQog
CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKKyAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYW5pbWF0ZWRQcm9wZXJ0
eVR5cGVGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJikgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkgeyB9
CisKICAgICB2b2lkIHNlbmRTVkdMb2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExv
YWRFdmVudHMgPSBmYWxzZSk7CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSogc3VwcGxl
bWVudGFsVHJhbnNmb3JtKCkgeyByZXR1cm4gMDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIs
MjMgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3luY2hyb25pemVQcm9wZQogICAgICAgICBT
VkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAorQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0VsbGlwc2VFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0VsbGlwc2VF
bGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKTsgICAgCisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpjeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OmN5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cnhBdHRyLCBBbmltYXRlZExlbmd0aCk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpyeUF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKK30KKwogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6dG9QYXRoRGF0YShQ
YXRoJiBwYXRoKSBjb25zdAogewogICAgIEFTU0VSVChwYXRoLmlzRW1wdHkoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNiArNDYsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHRv
UGF0aERhdGEoUGF0aCYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsMjIgQEAgdm9p
ZCBTVkdGRUJsZW5kRWxlbWVudDo6c3luY2hyb25pemVQcm9wZQogICAgICAgICBzeW5jaHJvbml6
ZUluMigpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVCbGVuZEVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisK
K3ZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsgICAgCisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
Om1vZGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKK30KKwogUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFQmxlbmRFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJC
dWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
ICs5OCwyMiBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzeW5jaHJvbml6CiAgICAg
ICAgIHN5bmNocm9uaXplVmFsdWVzKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNf
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworCisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXApOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5B
dHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjp0eXBlQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBBbmltYXRlZE51bWJl
ckxpc3QpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmls
dGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIC8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDYgKzY0LDIwIEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQ6OnN5bmMKICAgICAgICAgc3luY2hyb25pemVJbjEoKTsKIH0KIAorQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjphdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAg
IHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQor
eworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4x
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2
LDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBR
dWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0
ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYg
KzEyNywyNiBAQCB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3luY2hyb25pemVQCiAgICAg
ICAgIHN5bmNocm9uaXplSzQoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNW
R0ZFQ29tcG9zaXRlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsg
ICAgCisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIs
IEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprMUF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmsyQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6azNBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprNEF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
K30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAg
ICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJ
KHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
dmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1
YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciosIEZpbHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRp
b25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSwy
OSBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyCiAgICAgICAgIGlu
dmFsaWRhdGUoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwOworfQorCit2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CisKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6Om9yZGVyQXR0ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjprZXJuZWxNYXRyaXhBdHRyLCBBbmlt
YXRlZE51bWJlckxpc3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdO
YW1lczo6ZGl2aXNvckF0dHIsIEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmJpYXNBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp0YXJnZXRYQXR0ciwgQW5p
bWF0ZWRJbnRlZ2VyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnRhcmdldFlBdHRyLCBBbmltYXRlZEludGVnZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6b3BlcmF0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9u
KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Omtlcm5lbFVu
aXRMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyLCBBbmlt
YXRlZEJvb2xlYW4pOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZp
bHRlciogZmlsdGVyKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRl
ci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAg
ICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmRlclhJZGVudGlmaWVyKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNw
cAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3MiwyMyBAQCB2b2lk
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3luY2hyCiAgICAgfQogfQogCitBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjphdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOwor
ICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkK
K3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOyAgICAKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50
QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIs
IEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlu
cHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNp
b24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHko
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0
YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllcigpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsMjQg
QEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN5bmNocgogICAgICAgICBzeW5j
aHJvbml6ZVNjYWxlKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmluMkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyLCBBbmltYXRlZEVu
dW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNjYWxlQXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZp
bHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlckJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwx
NyBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVGbG9vZEVsZW1lCiAgICAgcmV0dXJu
IEZFRmxvb2Q6OmNyZWF0ZShmaWx0ZXIsIGNvbG9yLCBvcGFjaXR5KTsKIH0KIAorQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFRmxvb2RFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBz
X2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFRmxvb2RFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZs
b29kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZsb29k
RWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUZs
b29kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU1ZHRkVGbG9vZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiB9OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24gNzgw
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNywyMSBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6c3luY2hyb25pCiAgICAgICAgIHN5bmNocm9uaXplSW4xKCk7CiB9CiAKK0F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Cisg
ICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorewor
ICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIsIEFuaW1h
dGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIpOworfQorCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJC
dWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZp
bHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7
CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25YSWRlbnRpZmll
cigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsMjEgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVu
dDo6c3luY2hyb25pemVQcm9wZQogICAgICAgICBzeW5jaHJvbml6ZUV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFSW1hZ2VF
bGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOwor
fQorCit2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogdm9pZCBT
VkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogewogICAg
IGlmICghaW5Eb2N1bWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdo
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDI5IEBAIHZvaWQgU1ZH
RkVMaWdodEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGUKICAgICAgICAgc3luY2hyb25pemVMaW1p
dGluZ0NvbmVBbmdsZSgpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVM
aWdodEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Cit9CisKK3ZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKwor
ICAgIFNWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNW
R05hbWVzOjphemltdXRoQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZWxldmF0aW9uQXR0ciwgQW5pbWF0ZWROdW1iZXIp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFu
aW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OnlBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjp6QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRzQXRYQXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cG9pbnRz
QXRZQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6cG9pbnRzQXRaQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIs
IEFuaW1hdGVkTnVtYmVyKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworfQorCiB2b2lk
IFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIs
IE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVs
dGEpCiB7CiAgICAgU1ZHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwg
YmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVu
Q2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2Ug
PSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAog
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDE3IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRU1lcmdlRWxlbWUKICAgICBy
ZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
IFNWR0ZFTWVyZ2VFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwOworfQorCit2b2lkIFNWR0ZFTWVyZ2VFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRU1lcmdlRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAorICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSwyMCBAQCB2b2lkIFNWR0ZFTWVy
Z2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CiB9CiAKK0F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Cisg
ICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVN
ZXJnZU5vZGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAg
IEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9
IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aW5BdHRyLCBB
bmltYXRlZFN0cmluZyk7Cit9CisKIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIFNWR0Vs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoYXR0ck5hbWUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIC8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlY2xhcmF0aW9ucwogICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsMjIgQEAgdm9pZCBTVkdG
RU1vcnBob2xvZ3lFbGVtZW50OjpzeW5jaHJvbml6ZQogICAgIH0KIH0KIAorQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJu
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6aW5BdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvcGVyYXRvckF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24p
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cmFkaXVzQXR0
ciwgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcik7Cit9CisKIFBhc3NSZWZQdHI8RmlsdGVy
RWZmZWN0PiBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBm
aWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MSA9IGZpbHRlckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7
CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYWRpdXNYSWRlbnRpZmllcigpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDIyIEBAIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50Ojpz
eW5jaHJvbml6ZVByb3AKICAgICAgICAgc3luY2hyb25pemVJbjEoKTsKIH0KIAorQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4g
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGRU9mZnNldEVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6OmluQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkeUF0dHIsIEFuaW1hdGVkTnVtYmVyKTsK
K30KKwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgJKHJldmlzaW9u
IDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciopOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNywyNCBAQCB2
b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnN5bmNoCiAgICAgfQogfQogCitBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgp
KTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3Rh
bnRBdHRyLCBBbmltYXRlZE51bWJlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAu
c2V0KFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0
ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1i
ZXIpOworfQorCiBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50OjpmaW5kTGlnaHRzKCkgY29uc3QKIHsKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJz
dENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHJl
dmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQCBwcml2YXRlOgogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZH
RmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYga2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVGlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMjAg
QEAgdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcgogICAgICAgICBzeW5j
aHJvbml6ZUluMSgpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHRkVUaWxl
RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsK
K30KKwordm9pZCBTVkdGRVRpbGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjppbkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30K
KwogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQogewogICAgIEZpbHRl
ckVmZmVjdCogaW5wdXQxID0gZmlsdGVyQnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJv
cGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAog
ICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyOCw2ICsxMjgsMjQgQEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpz
eW5jaHJvbml6ZQogICAgICAgICBzeW5jaHJvbml6ZU51bU9jdGF2ZXMoKTsKIH0KIAorQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAg
cmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0
aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIsIEFuaW1hdGVkTnVtYmVyT3B0aW9uYWxO
dW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6bnVt
T2N0YXZlc0F0dHIsIEFuaW1hdGVkSW50ZWdlcik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjpzZWVkQXR0ciwgQW5pbWF0ZWROdW1iZXIpOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLCBBbmlt
YXRlZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnR5cGVBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKK30KKwogUGFzc1JlZlB0cjxG
aWx0ZXJFZmZlY3Q+IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBpZiAoYmFzZUZyZXF1ZW5jeVgoKSA8IDAgfHwg
YmFzZUZyZXF1ZW5jeVkoKSA8IDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGJhc2VGcmVxdWVuY3lYSWRlbnRpZmllcigpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
Niw2ICsxOTYsMjcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzeW5jaHJvbml6ZVByb3Blcgog
ICAgICAgICBzeW5jaHJvbml6ZUhyZWYoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIFNWR0ZpbHRlckVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOworCisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlv
bik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwcmltaXRp
dmVVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIsIEFuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXIpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlu
a05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7Cit9CisKIHZvaWQgU1ZHRmls
dGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewog
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJl
Zm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwg
Tm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsMTcgQEAgdm9pZCBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIGZpbHRlckVmZmVjdC0+c2V0RWZmZWN0Qm91bmRh
cmllcyhlZmZlY3RCQm94KTsKIH0KIAordm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApCit7CisgICAgU1ZHU3R5bGVk
RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKTsKKyAgICAKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpyZXN1bHRBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisKIFJlbmRlck9iamVj
dCogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUodGhpcyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiAr
NTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNo
YW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDAp
OwogCiAgICAgaW5saW5lIHZvaWQgaW52YWxpZGF0ZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDYgKzE3OSwxNyBAQCB2
b2lkIFNWR0ZvbnRFbGVtZW50OjpnZXRHbHlwaElkZW50aWZpZXJzCiAgICAgbV9nbHlwaE1hcC5n
ZXQoc3RyaW5nLCBnbHlwaHMpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZH
Rm9udEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXA7Cit9CisKK3ZvaWQgU1ZHRm9udEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkpOworfQorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHX0ZPTlRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgJ
KHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDkgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9ICAg
IAorICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1
cm4gZmFsc2U7IH0gIAorICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdm9pZCBlbnN1cmVHbHlwaENhY2hlKCkgY29u
c3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDI0IEBAIHZv
aWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN5bmNocm9uaXoKICAgICAgICAgU1ZHVGVzdHM6
OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK0F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1
cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sgICAgCisgICAg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0g
dGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp3aWR0aEF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdo
dEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogUmVuZGVyT2Jq
ZWN0KiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNW
R0ZvcmVpZ25PYmplY3QodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTMyLDYgKzEzMiwyMCBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IHBhcnNlU1ZHR2x5cGhB
dHRyaWJ1CiAgICAgcmV0dXJuIHZhbHVlLnRvRmxvYXQoKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAmIFNWR0dseXBoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
IHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdHbHlwaEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkQXR0ciwgQW5pbWF0ZWRQYXRoKTsKK30KKwog
U1ZHR2x5cGhJZGVudGlmaWVyIFNWR0dseXBoRWxlbWVudDo6YnVpbGRHZW5lcmljR2x5cGhJZGVu
dGlmaWVyKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgU1ZHR2x5cGhJZGVudGlm
aWVyIGlkZW50aWZpZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCShy
ZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw4IEBAIHByaXZhdGU6CiAgICAgU1ZHR2x5cGhF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmly
dHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZWRGcm9tRG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFk
aWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDE2IEBAIHZvaWQg
U1ZHR3JhZGllbnRFbGVtZW50OjpzeW5jaHJvbml6ZVByb3AKICAgICAgICAgc3luY2hyb25pemVI
cmVmKCk7CiB9CiAKK3ZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIEFuaW1hdGVk
RW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6Z3JhZGllbnRVbml0c0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLCBB
bmltYXRlZFRyYW5zZm9ybUxpc3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNl
dChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQorICAgIAogdm9pZCBT
VkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwg
Tm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0
YSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFy
c2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZvaWQgZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsMjUgQEAgdm9pZCBTVkdJbWFnZUVs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydAogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQ
cm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1lKTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIFNWR0ltYWdlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KTsKKworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp3aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OmhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9B
dHRyLCBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworfQor
CiBib29sIFNWR0ltYWdlRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHgoKS5pc1JlbGF0aXZlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lk
IGluc2VydGVkSW50b0RvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxl
bWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwyMyBAQCB2b2lkIFNWR0xp
bmVFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5CiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHTGluZUVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHTGluZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKKworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDFBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MUF0dHIs
IEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OngyQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwLnNldChTVkdOYW1lczo6eTJBdHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIHZvaWQg
U1ZHTGluZUVsZW1lbnQ6OnRvUGF0aERhdGEoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICBBU1NF
UlQocGF0aC5pc0VtcHR5KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJ
KHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCB0b1BhdGhEYXRhKFBhdGgmKSBjb25zdDsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9u
IDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMjMgQEAgdm9pZCBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OnN5bmNocm9uaQogICAgICAgICBzeW5jaHJvbml6ZVkyKCk7CiB9CiAKK0F0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7
CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQor
eworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdHcmFk
aWVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp4MUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoU1ZHTmFtZXM6OnkxQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eDJBdHRyLCBBbmltYXRlZExlbmd0aCk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5MkF0dHIsIEFu
aW1hdGVkTGVuZ3RoKTsKK30KKwogUmVuZGVyT2JqZWN0KiBTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewog
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50KHRo
aXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7Cisg
ICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNUGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwyMCBAQCB2b2lk
IFNWR01QYXRoRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0CiAgICAgICAgIHN5bmNocm9uaXpl
SHJlZigpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHTVBhdGhFbGVtZW50
OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2
b2lkIFNWR01QYXRoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sK
KyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgU1ZHRWxlbWVu
dDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJl
ZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogU1ZHUGF0aEVsZW1lbnQqIFNWR01QYXRoRWxl
bWVudDo6cGF0aEVsZW1lbnQoKQogewogICAgIEVsZW1lbnQqIHRhcmdldCA9IGRvY3VtZW50KCkt
PmdldEVsZW1lbnRCeUlkKGdldFRhcmdldChocmVmKCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTVBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01QYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9u
cwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lv
biA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTgzLDYgKzE4MywyNiBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5
bmNocm9uaXplUHJvcGVyCiAgICAgfQogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
U1ZHTWFya2VyRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcDsKK30KKwordm9pZCBTVkdNYXJrZXJFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CisKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6cmVmWEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJlZllBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptYXJrZXJX
aWR0aEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cC5zZXQoU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwg
QW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpvcmllbnRBdHRyLCBBbmltYXRlZEFuZ2xlKTsKKyAgICBhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOwor
fQorCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxk
Q291bnREZWx0YSkKIHsKICAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDYgKzY3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJl
Zm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0
YSA9IDApOwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNr
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiArMTQ4LDI1IEBAIHZvaWQgU1ZHTWFz
a0VsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9u
aXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBTVkdNYXNrRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdNYXNrRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOworCisgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0
ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6
d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjptYXNrVW5pdHNBdHRyLCBBbmltYXRl
ZEVudW1lcmF0aW9uKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFt
ZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKK30KKwogdm9p
ZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBO
b2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRh
KQogewogICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJz
ZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDks
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwg
Tm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2lu
Z0dseXBoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDE3IEBAIFBhc3NS
ZWZQdHI8U1ZHTWlzc2luZ0dseXBoRWxlbWVudD4gU1ZHTWkKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNWR01pc3NpbmdHbHlwaEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQ6OmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7Cisg
ICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHTWlz
c2luZ0dseXBoRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkdf
Rk9OVFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhFbGVtZW50
LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlw
aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOSBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcyLDIx
IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRCgpCiAgICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVN5bmNocm9uaXplcjx0cnVlPjo6c3luY2hyb25pemUodGhpcywgU1ZHTmFtZXM6OmRB
dHRyLCBtX3BhdGhTZWdMaXN0LnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7CiB9CiAKK0F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdQYXRoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdQYXRoRWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpOworCisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7
CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpkQXR0ciwgQW5p
bWF0ZWRQYXRoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6
OnBhdGhMZW5ndGhBdHRyLCBBbmltYXRlZE51bWJlcik7Cit9CisKIFNWR1BhdGhTZWdMaXN0UHJv
cGVydHlUZWFyT2ZmKiBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3QoKQogewogICAgIGlmICgh
bV9hbmltYXRhYmxlUGF0aFNlZ0xpc3QpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmly
dHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk0LDYgKzE5NCwyOSBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzeW5jaHJvbml6
ZVByb3BlCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0
ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUGF0dGVybkVsZW1l
bnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisK
K3ZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIFNWR1N0
eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjp4QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6eUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgp
OworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChT
VkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRz
QXR0ciwgQW5pbWF0ZWRFbnVtZXJhdGlvbik7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAuc2V0KFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ciwgQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoWExpbmtOYW1lczo6aHJl
ZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBBbmltYXRlZFJlY3QpOworICAgIGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7Cit9CisKIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBTVkdTdHls
ZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFm
dGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTIsNiArMTEyLDIwIEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkKICAgICAgICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRy
TmFtZSk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdQb2x5RWxlbWVudDo6
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAs
ICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9p
ZCBTVkdQb2x5RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAg
PSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpwb2ludHNBdHRyLCBBbmltYXRlZFBvaW50cyk7Cit9CisKIHZvaWQgU1ZHUG9s
eUVsZW1lbnQ6OnN5bmNocm9uaXplUG9pbnRzKCkKIHsKICAgICBpZiAoIW1fcG9pbnRzLnNob3Vs
ZFN5bmNocm9uaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHJldmlz
aW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNw
cAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCwyNCBAQCB2b2lkIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3luY2hyb25pCiAgICAgICAgIHN5bmNocm9uaXplUigp
OwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQor
Cit2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisg
ICAgU1ZHR3JhZGllbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6Y3hBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpjeUF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJBdHRyLCBBbmltYXRl
ZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpm
eEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5z
ZXQoU1ZHTmFtZXM6OmZ5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworfQorCiBSZW5kZXJPYmplY3Qq
IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jl
c291cmNlUmFkaWFsR3JhZGllbnQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNiArNDIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVy
dHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2MSw2ICsxNjEsMjUgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0
eQogICAgICAgICBTVkdUZXN0czo6c3luY2hyb25pemVQcm9wZXJ0aWVzKHRoaXMsIGF0dHJOYW1l
KTsKIH0KIAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1JlY3RFbGVtZW50OjphdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkp
OworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNW
R1JlY3RFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRo
aXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZH
TmFtZXM6OnhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAuc2V0KFNWR05hbWVzOjp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0
KFNWR05hbWVzOjpyeEF0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnJ5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworfQorCiB2
b2lkIFNWR1JlY3RFbGVtZW50Ojp0b1BhdGhEYXRhKFBhdGgmIHBhdGgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKHBhdGguaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwg
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNiAr
Mzc5LDI1IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eSgKICAgICAg
ICAgU1ZHVGVzdHM6OnN5bmNocm9uaXplUHJvcGVydGllcyh0aGlzLCBhdHRyTmFtZSk7CiB9CiAK
K0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdTVkdFbGVtZW50OjphdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJl
dHVybiBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1NWR0VsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWRM
ZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6eUF0
dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQo
U1ZHTmFtZXM6OndpZHRoQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6aGVpZ2h0QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOwor
ICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIs
IEFuaW1hdGVkUmVjdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05h
bWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
KTsKK30KKwogdW5zaWduZWQgU1ZHU1ZHRWxlbWVudDo6c3VzcGVuZFJlZHJhdyh1bnNpZ25lZCAv
KiBtYXhXYWl0TWlsbGlzZWNvbmRzICovKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUg
KHNlZSBidWcgMTEyNzUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlz
aW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2
b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1
YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwog
CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDYgKzk3LDIwIEBAIHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6c3luY2hyb25pemVQ
cm9wZXIKICAgICAgICAgc3luY2hyb25pemVIcmVmKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwJiBTVkdTY3JpcHRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwg
c19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OmZpbGxBdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAoKTsKKworICAgIFNWR0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0
eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBBbmltYXRlZFN0cmluZyk7Cit9CisK
IHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIFNW
R0VsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU2NyaXB0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUo
QXR0cmlidXRlKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHJldmlzaW9u
IDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcsNiArNzcsMjAgQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6c3luY2hyb25p
emVQcm9wZXJ0eQogICAgICAgICBzeW5jaHJvbml6ZU9mZnNldCgpOwogfQogCitBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgU1ZHU3RvcEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHU3RvcEVsZW1lbnQ6OmZpbGxB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwID0gdGhpcy0+YXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAoKTsKKworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpvZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0
aCk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJTVkdHcmFkaWVudFN0b3AodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3RvcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Rv
cEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Rv
cEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2
aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcCgpOwogCiAgICAgdmlydHVhbCBib29sIGlzR3JhZGllbnRTdG9wKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlNWR1NWR0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTIwMCw2ICsyMDEsODUgQEAgaW50IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5
SWRGb3JTVgogICAgIHJldHVybiBwcm9wZXJ0eU5hbWVUb0lkTWFwLT5nZXQoYXR0ck5hbWUubG9j
YWxOYW1lKCkuaW1wbCgpKTsKIH0KIAorc3RhdGljIGlubGluZSBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgY3NzUHJvcGVydHlUb1R5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfY3NzUHJvcGVydHlNYXAsICgpKTsKKyAg
ICAKKyAgICBpZiAoIXNfY3NzUHJvcGVydHlNYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
c19jc3NQcm9wZXJ0eU1hcDsKKworICAgIC8vIEZpbGwgdGhlIG1hcCBmb3IgdGhlIGZpcnN0IHVz
ZS4KKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChhbGlnbm1lbnRfYmFzZWxpbmVBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoYmFzZWxpbmVfc2hpZnRBdHRy
LCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY2xpcEF0dHIsIEFu
aW1hdGVkUmVjdCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY2xpcF9wYXRoQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNsaXBfcnVsZUF0dHIsIEFu
aW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChTVkdOYW1lczo6Y29sb3JB
dHRyLCBBbmltYXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChjb2xvcl9pbnRl
cnBvbGF0aW9uQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KGNvbG9yX2ludGVycG9sYXRpb25fZmlsdGVyc0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBz
X2Nzc1Byb3BlcnR5TWFwLnNldChjb2xvcl9wcm9maWxlQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwor
ICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGNvbG9yX3JlbmRlcmluZ0F0dHIsIEFuaW1hdGVkU3Ry
aW5nKTsgCisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoY3Vyc29yQXR0ciwgQW5pbWF0ZWRTdHJp
bmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGRpc3BsYXlBdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZG9taW5hbnRfYmFzZWxpbmVBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmlsbEF0dHIsIEFuaW1hdGVk
Q29sb3IpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZpbGxfb3BhY2l0eUF0dHIsIEFuaW1h
dGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmaWxsX3J1bGVBdHRyLCBBbmlt
YXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmlsdGVyQXR0ciwgQW5pbWF0
ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZsb29kX2NvbG9yQXR0ciwgQW5p
bWF0ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZmxvb2Rfb3BhY2l0eUF0dHIs
IEFuaW1hdGVkTnVtYmVyKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmb250X2ZhbWlseUF0
dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChmb250X3NpemVB
dHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZm9udF9zdHJl
dGNoQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KGZvbnRf
c3R5bGVBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoZm9u
dF92YXJpYW50QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KGZvbnRfd2VpZ2h0QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAu
c2V0KGltYWdlX3JlbmRlcmluZ0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3Bl
cnR5TWFwLnNldChrZXJuaW5nQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIHNfY3NzUHJvcGVy
dHlNYXAuc2V0KGxldHRlcl9zcGFjaW5nQXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIHNfY3Nz
UHJvcGVydHlNYXAuc2V0KGxpZ2h0aW5nX2NvbG9yQXR0ciwgQW5pbWF0ZWRDb2xvcik7CisgICAg
c19jc3NQcm9wZXJ0eU1hcC5zZXQobWFya2VyX2VuZEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAg
ICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXJrZXJfbWlkQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwor
ICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG1hcmtlcl9zdGFydEF0dHIsIEFuaW1hdGVkU3RyaW5n
KTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChtYXNrQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOwor
ICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KG9wYWNpdHlBdHRyLCBBbmltYXRlZE51bWJlcik7Cisg
ICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQob3ZlcmZsb3dBdHRyLCBBbmltYXRlZFN0cmluZyk7Cisg
ICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQocG9pbnRlcl9ldmVudHNBdHRyLCBBbmltYXRlZFN0cmlu
Zyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc2hhcGVfcmVuZGVyaW5nQXR0ciwgQW5pbWF0
ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0b3BfY29sb3JBdHRyLCBBbmlt
YXRlZENvbG9yKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldChzdG9wX29wYWNpdHlBdHRyLCBB
bmltYXRlZE51bWJlcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlQXR0ciwgQW5p
bWF0ZWRDb2xvcik7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tlX2Rhc2hhcnJheUF0
dHIsIEFuaW1hdGVkTGVuZ3RoTGlzdCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQoc3Ryb2tl
X2Rhc2hvZmZzZXRBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5z
ZXQoc3Ryb2tlX2xpbmVjYXBBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0
eU1hcC5zZXQoc3Ryb2tlX2xpbmVqb2luQXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3Nz
UHJvcGVydHlNYXAuc2V0KHN0cm9rZV9taXRlcmxpbWl0QXR0ciwgQW5pbWF0ZWROdW1iZXIpOwor
ICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0cm9rZV9vcGFjaXR5QXR0ciwgQW5pbWF0ZWROdW1i
ZXIpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0KHN0cm9rZV93aWR0aEF0dHIsIEFuaW1hdGVk
TGVuZ3RoKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh0ZXh0X2FuY2hvckF0dHIsIEFuaW1h
dGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh0ZXh0X2RlY29yYXRpb25BdHRy
LCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQodGV4dF9yZW5kZXJp
bmdBdHRyLCBBbmltYXRlZFN0cmluZyk7CisgICAgc19jc3NQcm9wZXJ0eU1hcC5zZXQodmVjdG9y
X2VmZmVjdEF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKKyAgICBzX2Nzc1Byb3BlcnR5TWFwLnNldCh2
aXNpYmlsaXR5QXR0ciwgQW5pbWF0ZWRTdHJpbmcpOworICAgIHNfY3NzUHJvcGVydHlNYXAuc2V0
KHdvcmRfc3BhY2luZ0F0dHIsIEFuaW1hdGVkTGVuZ3RoKTsKKyAgICByZXR1cm4gc19jc3NQcm9w
ZXJ0eU1hcDsKK30KKworQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR1N0eWxlZEVsZW1lbnQ6OmFu
aW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCit7CisgICAgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGNzc1Byb3BlcnR5VHlw
ZU1hcCA9IGNzc1Byb3BlcnR5VG9UeXBlTWFwKCk7CisgICAgaWYgKCFjc3NQcm9wZXJ0eVR5cGVN
YXAuY29udGFpbnMoYXR0ck5hbWUpKQorICAgICAgICByZXR1cm4gQW5pbWF0ZWRVbmtub3duOwor
ICAgIHJldHVybiBjc3NQcm9wZXJ0eVR5cGVNYXAuZ2V0KGF0dHJOYW1lKTsKK30KKwordm9pZCBT
VkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKQoreworICAgIFNW
R0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCk7CisKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoSFRNTE5h
bWVzOjpjbGFzc0F0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogYm9vbCBTVkdTdHlsZWRFbGVt
ZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRy
aWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAogewogICAgIGlmIChTVkdTdHlsZWRFbGVtZW50Ojpj
c3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyTmFtZSkgPiAwKSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NiArNTIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGJvb2wpOwogCisgICAgQW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQ1NTUHJvcGVydHkoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxD
b29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3Q7CiAK
ICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgeyByZXR1cm4gU3R5bGVk
RWxlbWVudDo6c3R5bGUoKTsgfQpAQCAtNjYsNiArNjgsOCBAQCBwcm90ZWN0ZWQ6IAogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKKyAgICB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcCYpOworCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1
YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVk
RnJvbURvY3VtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE0LDYgKzExNCwxMyBAQCBSZW5kZXJPYmplY3QqIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtCiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1BhdGgodGhpcyk7CiB9
CiAKK3ZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICAKKyAgICBhdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsIEFuaW1h
dGVkVHJhbnNmb3JtTGlzdCk7Cit9CisKIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnRvQ2xpcFBhdGgoUGF0aCYgcGF0aCkgY29uc3QKIHsKICAgICB0b1BhdGhEYXRhKHBhdGgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChB
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYpOwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkg
ZGVjbGFyYXRpb25zCiAgICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zv
cm0sIHRyYW5zZm9ybSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCwxNyBAQCB2b2lkIFNWR1N3aXRjaEVs
ZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVyCiAgICAgICAgIFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVBy
b3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCYgU1ZHU3dpdGNoRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdTd2l0Y2hFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAo
KSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsOSBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgIAorICAgIHZpcnR1YWwgdm9pZCBmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgLy8gQW5p
bWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N5bWJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCwyMSBAQCB2
b2lkIFNWR1N5bWJvbEVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVyCiAgICAgfSAKIH0KIAorQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1N5bWJvbEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwLCBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0
dXJuIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHU3ltYm9sRWxl
bWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAgICBBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRy
aWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAgU1ZHU3R5bGVkRWxlbWVudDo6ZmlsbEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAg
ICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBB
bmltYXRlZFJlY3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1l
czo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIEFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyk7
Cit9CisKIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dmlld0JveEF0dHIpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDYgKzQ1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVBy
b3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0
LDIwIEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkKICAgICAgICAg
c3luY2hyb25pemVIcmVmKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBTVkdU
UmVmRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cDsKK30KKwordm9pZCBTVkdUUmVmRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCkKK3sKKyAgICBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXAgPSB0aGlzLT5hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworCisgICAg
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlw
ZU1hcC5zZXQoWExpbmtOYW1lczo6aHJlZkF0dHIsIEFuaW1hdGVkU3RyaW5nKTsKK30KKwogUmVu
ZGVyT2JqZWN0KiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0lu
bGluZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCShyZXZpc2lv
biA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIGZp
bGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAgIHZpcnR1YWwgQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCk7CiAKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCShyZXZpc2lv
biA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw2ICs3MywxNyBAQCBib29sIFNWR1RTcGFuRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitBdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCYgU1ZHVFNwYW5FbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1RTcGFuRWxlbWVudDo6ZmlsbEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sgICAgICAgIAorICAgIFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcCgpKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoUmVuZGVyU3R5bGUqKTsKKworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMSw2ICsyMjEsMTQgQEAgdm9pZCBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZQogICAgIC8vIEZJWE1FOiBhbHNvIGhhbmRs
ZSBhdHRyaWJ1dGUgY2hhbmdlcyBmb3IgbGVuZ3RoQWRqdXN0IGFuZCB0ZXh0TGVuZ3RoCiB9CiAK
K3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVN
YXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
KQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5
VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCBBbmltYXRlZExlbmd0aCk7Cisg
ICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpsZW5ndGhBZGp1c3RB
dHRyLCBBbmltYXRlZEVudW1lcmF0aW9uKTsKK30KKwogYm9vbCBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OmlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAg
ICAgcmV0dXJuIGF0dHJOYW1lLm1hdGNoZXMoU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCShyZXZpc2lv
biA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAm
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDMsNiArMTQzLDIwIEBAIHZvaWQgU1ZHVGV4dEVsZW1lbnQ6OnN5bmNocm9uaXplUHJv
cGVydHkKICAgICAgICAgc3luY2hyb25pemVUcmFuc2Zvcm0oKTsKIH0KIAorQXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAmIFNWR1RleHRFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVybiBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1RleHRFbGVtZW50OjpmaWxsQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVy
dHlUeXBlTWFwKCk7CisKKyAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0KTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2
ICs1NCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAg
Ly8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAgICAgREVDTEFSRV9BTklNQVRFRF9U
UkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9ybSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAs
NiArMTEwLDIzIEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpzeW5jaHJvbml6ZVByb3AKICAg
ICAgICAgc3luY2hyb25pemVIcmVmKCk7CiB9CiAKK0F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
JiBTVkdUZXh0UGF0aEVsZW1lbnQ6OmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLCBzX2F0dHJp
YnV0ZVRvUHJvcGVydHlUeXBlTWFwLCAoKSk7CisgICAgcmV0dXJuIHNfYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXA7Cit9CisKK3ZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBh
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwKCk7CisKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcChhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCk7CisgICAgYXR0cmlidXRlVG9Q
cm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIEFuaW1hdGVkTGVu
Z3RoKTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6Om1ldGhv
ZEF0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBl
TWFwLnNldChTVkdOYW1lczo6c3BhY2luZ0F0dHIsIEFuaW1hdGVkRW51bWVyYXRpb24pOworICAg
IGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChYTGlua05hbWVzOjpocmVmQXR0ciwgQW5p
bWF0ZWRTdHJpbmcpOworfQorCiBSZW5kZXJPYmplY3QqIFNWR1RleHRQYXRoRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0
dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1RleHRQYXRoKHRoaXMpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYg
KzYyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
QXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisgICAgdmlydHVhbCBBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYg
YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVh
bCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkocmV2
aXNpb24gNzgwNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsMTcgQEAgdm9pZCBTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjpzeW5jaHJvbgogICAgICAgICBzeW5jaHJvbml6ZVJvdGF0ZSgp
OwogfQogCit2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcChBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCYgYXR0cmlidXRlVG9Qcm9w
ZXJ0eVR5cGVNYXApCit7CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpmaWxsQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworCisgICAgYXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjp4QXR0ciwgQW5pbWF0ZWROdW1i
ZXJMaXN0KTsKKyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnlB
dHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6ZHhBdHRyLCBBbmltYXRlZE51bWJlckxpc3QpOworICAgIGF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6ZHlBdHRyLCBBbmltYXRlZE51bWJlckxp
c3QpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6cm90YXRl
QXR0ciwgQW5pbWF0ZWROdW1iZXJMaXN0KTsKK30KKwogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dCogU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6ZWxlbWVudEZyb21SZW5kZXJlcihSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZv
cmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEg
PSAwKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZvaWQgZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKEF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJik7CiAKICAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBk
ZWNsYXJhdGlvbnMKICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFgsIHgpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gNzgwNzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNiArNTYsMTcgQEAgdm9pZCBTVkdUaXRsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChi
bwogICAgICAgICBkb2N1bWVudCgpLT5zZXRUaXRsZSh0ZXh0Q29udGVudCgpLCB0aGlzKTsKIH0K
IAorQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1RpdGxlRWxlbWVudDo6YXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAg
ICByZXR1cm4gc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdUaXRs
ZUVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpCit7ICAgICAgICAKKyAg
ICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKSk7Cit9CisKIH0KIAogLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAkocmV2aXNpb24gNzgwNzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUq
IGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQor
CisgICAgdmlydHVhbCB2b2lkIGZpbGxBdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOworICAg
IHZpcnR1YWwgQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIGF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDYgKzIyNywyNCBA
QCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN5bmNocm9uaXplUHJvcGVydHkoCiAgICAgICAgIFNWR1Rl
c3RzOjpzeW5jaHJvbml6ZVByb3BlcnRpZXModGhpcywgYXR0ck5hbWUpOwogfQogCitBdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCYgU1ZHVXNlRWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAsIHNfYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAsICgpKTsKKyAgICByZXR1cm4gc19h
dHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcDsKK30KKwordm9pZCBTVkdVc2VFbGVtZW50OjpmaWxs
QXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJvcGVydHlU
eXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Zmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwKTsK
KyAgICBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcC5zZXQoU1ZHTmFtZXM6OnhBdHRyLCBBbmlt
YXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVz
Ojp5QXR0ciwgQW5pbWF0ZWRMZW5ndGgpOworICAgIGF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFw
LnNldChTVkdOYW1lczo6d2lkdGhBdHRyLCBBbmltYXRlZExlbmd0aCk7CisgICAgYXR0cmlidXRl
VG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpoZWlnaHRBdHRyLCBBbmltYXRlZExlbmd0
aCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFhMaW5rTmFtZXM6OmhyZWZB
dHRyLCBBbmltYXRlZExlbmd0aCk7Cit9CisKIHN0YXRpYyB2b2lkIHVwZGF0ZUNvbnRhaW5lclNp
emUoU1ZHVXNlRWxlbWVudCogdXNlRWxlbWVudCwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJ
bnN0YW5jZSkKIHsKICAgICAvLyBEZXB0aC1maXJzdCB1c2VkIHRvIHdyaXRlIHRoZSBtZXRob2Qg
aW4gZWFybHkgZXhpdCBzdHlsZSwgbm8gcGFydGljdWxhciBvdGhlciByZWFzb24uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsOCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5
cGVNYXAoKTsKKyAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1
dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0
eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHJldmlzaW9uIDc4MDc4KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsMjEgQEAg
dm9pZCBTVkdWaWV3RWxlbWVudDo6c3luY2hyb25pemVQcm9wZXJ0eQogICAgIH0KIH0KIAorQXR0
cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAmIFNWR1ZpZXdFbGVtZW50OjphdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcCwgc19hdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCwgKCkpOworICAgIHJldHVy
biBzX2F0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwOworfQorCit2b2lkIFNWR1ZpZXdFbGVtZW50
OjpmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQoreworICAgIEF0dHJpYnV0ZVRvUHJv
cGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCA9IHRoaXMtPmF0dHJpYnV0
ZVRvUHJvcGVydHlUeXBlTWFwKCk7CisKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpmaWxsQXR0cmli
dXRlVG9Qcm9wZXJ0eVR5cGVNYXAoYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXApOworICAgIGF0
dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwLnNldChTVkdOYW1lczo6dmlld0JveEF0dHIsIEFuaW1h
dGVkUmVjdCk7CisgICAgYXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAuc2V0KFNWR05hbWVzOjpw
cmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKK30K
KwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
RWxlbWVudC5oCShyZXZpc2lvbiA3ODA3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAg
IHZpcnR1YWwgdm9pZCBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKKyAgICB2aXJ0
dWFsIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1h
cCgpOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7
IHJldHVybiBmYWxzZTsgfQogCg==
</data>
<flag name="review"
          id="73592"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>