<?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>195863</bug_id>
          
          <creation_ts>2019-03-17 12:57:38 -0700</creation_ts>
          <short_desc>Remove the SVG property tear off objects for SVGStringList</short_desc>
          <delta_ts>2019-03-21 01:59:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>195862</dependson>
          <blocked>191237</blocked>
    
    <blocked>195949</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1517549</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-17 12:57:38 -0700</bug_when>
    <thetext>Currently some of SVGElements store SVGStringListValues which is an array of Strings. When the DOM requests an interface of SVGStringList a tear off object of type SVGStaticListPropertyTearOff is created to encapsulate SVGStringListValues. Like what we did for SVGAnimatedInteger and SVGAnimatedBoolean, we are going to store Ref&lt;SVGStringList&gt; in the SVGElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517550</commentid>
    <comment_count>1</comment_count>
      <attachid>364972</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-17 12:59:26 -0700</bug_when>
    <thetext>Created attachment 364972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517551</commentid>
    <comment_count>2</comment_count>
      <attachid>364973</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-17 13:03:20 -0700</bug_when>
    <thetext>Created attachment 364973
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517552</commentid>
    <comment_count>3</comment_count>
      <attachid>364974</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-17 13:09:52 -0700</bug_when>
    <thetext>Created attachment 364974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517585</commentid>
    <comment_count>4</comment_count>
      <attachid>364989</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-17 17:48:38 -0700</bug_when>
    <thetext>Created attachment 364989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517588</commentid>
    <comment_count>5</comment_count>
      <attachid>364990</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-17 18:10:51 -0700</bug_when>
    <thetext>Created attachment 364990
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517890</commentid>
    <comment_count>6</comment_count>
      <attachid>364990</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-18 13:46:13 -0700</bug_when>
    <thetext>Comment on attachment 364990
Patch for review

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

&gt; Source/WebCore/ChangeLog:12
&gt; +           attribute name in SVGPropertyRegistery. It will also commits changes

it will also commit

&gt; Source/WebCore/svg/SVGElement.h:160
&gt; +    void commitPropertyChange(SVGProperty*) override;

Can SVGProperty be a reference?

&gt; Source/WebCore/svg/SVGStringList.h:39
&gt; +    static Ref&lt;SVGStringList&gt; create(SVGPropertyOwner* owner)

Can SVGPropertyOwner be a reference?

&gt; Source/WebCore/svg/SVGStringList.h:59
&gt; +        const UChar* end = ptr + data.length();

Are we sure that upconvertedCharacters() returns the same number of characters as data contains?

&gt; Source/WebCore/svg/SVGViewElement.h:58
&gt; +    Ref&lt;SVGStringList&gt; m_viewTarget { SVGStringList::create(this) };

Please initialize in the constructor.

&gt; Source/WebCore/svg/properties/SVGList.h:2
&gt; + * Copyright (C) 2018-2019 Apple Inc.  All rights reserved.

Just 2019

&gt; Source/WebCore/svg/properties/SVGPrimitiveList.h:2
&gt; + * Copyright (C) 2018-2019 Apple Inc.  All rights reserved.

2019

&gt; Source/WebCore/svg/properties/SVGProperty.h:37
&gt; +    void attach(SVGPropertyOwner* owner, SVGPropertyAccess access)

Can SVGPropertyOwner be a reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518049</commentid>
    <comment_count>7</comment_count>
      <attachid>365099</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-18 18:31:43 -0700</bug_when>
    <thetext>Created attachment 365099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518129</commentid>
    <comment_count>8</comment_count>
      <attachid>365099</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-18 21:23:33 -0700</bug_when>
    <thetext>Comment on attachment 365099
Patch

Clearing flags on attachment: 365099

Committed r243130: &lt;https://trac.webkit.org/changeset/243130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518130</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-18 21:23:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518131</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-18 21:24:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/49006248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518233</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-19 06:46:30 -0700</bug_when>
    <thetext>Committed r243137: &lt;https://trac.webkit.org/changeset/243137&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364972</attachid>
            <date>2019-03-17 12:59:26 -0700</date>
            <delta_ts>2019-03-17 13:09:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195863-20190317125925.patch</filename>
            <type>text/plain</type>
            <size>223964</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3OTdlODJkZjg2MzIz
ZGJiYjQwZjVlN2ViYjFjMmY1YTVjNzcyMy4uYWFkZDVjMmJjMmEwMWU4NDNhMzg4OWNmNWU2YjFj
ZDI0N2ZhYTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4MSBAQAorMjAxOS0wMy0xNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB0aGUgU1ZHIHByb3BlcnR5IHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1N0cmluZ0xpc3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNWR1N0cmluZ0xp
c3QgaXMgbm90IGFuaW1hdGVkIGxpc3QuIFNvIHdlIG5lZWQgdG8gaW50cm9kdWNlIHR3byBuZXcg
Y2xhc3NlczoKKworICAgICAgICAtLSBTVkdQcm9wZXJ0eTogVGhpcyB3aWxsIGJlIHRoZSBiYXNl
IG9mIGFsbCB0aGUgbm9uLWFuaW1hdGVkIHByb3BlcnRpZXMuCisgICAgICAgICAgIExpa2UgdGhl
IFNWR0FuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5IHdpbGwgYmUgcmVnaXN0ZXJlZCB3aXRo
IHRoZQorICAgICAgICAgICBhdHRyaWJ1dGUgbmFtZSBpbiBTVkdQcm9wZXJ0eVJlZ2lzdGVyeS4g
SXQgd2lsbCBhbHNvIGNvbW1pdHMgY2hhbmdlcworICAgICAgICAgICB0byB0aGUgcmVmbGVjdGlu
ZyBhdHRyaWJ1dGUuIEFuZCBpdCB3aWxsIHByb3ZpZGUgYSBzeW5jaHJvbml6ZSBzdHJpbmcKKyAg
ICAgICAgICAgZm9yIGxhenkgYXR0cmlidXRlIHVwZGF0ZS4KKworICAgICAgICAtLSBTVkdMaXN0
OiBJdCB3aWxsIGJlIHRoZSBiYXNlIG9mIGFsbCB0aGUgbGlzdCBwcm9wZXJ0aWVzLiBJdCBjYW4g
aG9sZAorICAgICAgICAgICBwcmltaXRpdmUgdHlwZXMgb3IgU1ZHIHR5cGVzLiBJbiB0aGlzIHBh
dGNoIHByaW1pdGl2ZSB0eXBlcyB3aWxsIGJlIAorICAgICAgICAgICBzdXBwb3J0ZWQgb25seS4g
VG8gZG8gdGhhdCwgYSBzdXBlcmNsYXNzIGNhbGxlZCBTVkdQcmltaXRpdmVMaXN0IGlzCisgICAg
ICAgICAgIGFkZGVkLiBJdHMgaXRlbXMgYXJlIG9mIHByaW1pdGl2ZSB0eXBlIG9ubHkuCisKKyAg
ICAgICAgTm90ZSB0aGF0IFNWR0xpc3QgaW1wbGVtZW50cyB0aGUgU1ZHMiBzcGVjcyByZWdhcmRp
bmcgYWRkaW5nIGEgbmV3IGl0ZW0KKyAgICAgICAgdG8gdGhlIGxpc3Qgd2hpY2ggc3RhdGUgdGhh
dCBhIGNvcHkgb2YgdGhlIGl0ZW0gaXMgYWRkZWQgdG8gdGhlIGxpc3QgaWYKKyAgICAgICAgdGhl
IGl0ZW0gaXMgYXR0YWNoZWQgdG8gYW5vdGhlciBsaXN0LgorCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5
bmNocm9uaXplQW5pbWF0ZWRTVkdBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9TVkdFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZH
U3RyaW5nTGlzdFZhbHVlcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xp
c3RWYWx1ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGVzdHM6OlNWR1Rlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjppc1Zh
bGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3Rz
OjpyZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJl
ZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdl
KToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmlkbDoKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6U1ZH
Vmlld0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50Ojp2aWV3VGFyZ2V0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5OjpzZXRCYXNlVmFsKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5Lmg6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdMaXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6bnVtYmVy
T2ZJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMaXN0OjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
c3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aW5zZXJ0SXRlbUJl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpyZXBsYWNlSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
c3Q6OmFwcGVuZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aXRlbXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aXRlbXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGlzdDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0Ojppc0VtcHR5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmNsZWFySXRlbXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2FuQWx0ZXJMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3Q6OmNhbkdldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2Fu
UmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2FuUmVtb3ZlSXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpkZXRhY2hJdGVtcyk6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01l
bWJlckFjY2Vzc29yOjptYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcmltaXRpdmVMaXN0Lmg6IEFkZGVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNBdHRhY2hlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6YXR0YWNoKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHk6OmNvbnRleHRFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
Ojpjb21taXRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OmFjY2VzcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNSZWFkT25seSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNEaXJ0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6c2V0RGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UHJvcGVydHk6OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojp2
YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjpTVkdQ
cm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvci5o
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29ySW1w
bC5oOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyOjpjb21taXRQcm9wZXJ0eUNoYW5n
ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHkpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaDoK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmg6
IFJlbW92ZWQuCisKKzIwMTktMDMtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNWRyBwcm9wZXJ0eSB0ZWFyIG9mZiBv
YmplY3RzIGZvciBTVkdBbmltYXRlZEJvb2xlYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNWR0FuaW1hdGVkQm9vbGVhbiB3aWxsIGJlIGRlZmluZWQg
YXMgU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eTxib29sPi4KKyAgICAgICAgLS0gU1ZHQW5p
bWF0ZWRCb29sZWFuQWNjZXNzb3IgaXMgYWRkZWQgdG8gdGhpcyBhY2Nlc3MgdGhlIG5ldyB0eXBl
LgorICAgICAgICAtLSBBIGZ1bmN0aW9uIHJlZ2lzdGVyUHJvcGVydHkoKSBpcyBhZGRlZCB0byBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkKKyAgICAgICAgICAgdG8gcmVnaXN0ZXIgdGhpcyBuZXcg
dHlwZS4KKyAgICAgICAgLS0gU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgaXMgYWRkZWQgdG8g
YW5pbWF0ZSB0aGUgbmV3IHR5cGUKKyAgICAgICAgLS0gU1ZHQW5pbWF0aW9uQm9vbGVhbkZ1bmN0
aW9uIGlzIGFkZGVkIHRvIGhhbmRsZSB0aGUgcHJvZ3Jlc3Mgb2YgdGhpcworICAgICAgICAgICBu
ZXcgdHlwZSBvdmVyIGEgcGVyaW9kIG9mIHRpbWUuCisKKyAgICAgICAgU1ZHQW5pbWF0aW9uQm9v
bGVhbkZ1bmN0aW9uIGlzIGEgc3VwZXJjbGFzcyBvZiBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0
aW9uCisgICAgICAgIHdoaWNoIHdpbGwgYmUgdGhlIGJhc2UgY2xhc3Mgb2YgdGhlIGRpc2NyZXRl
IGFuaW1hdGlvbiB0eXBlczogc3RyaW5nLCBib29sLAorICAgICAgICBlbnVtIGFuZCBQcmVzZXJ2
ZUFzcGVjdFJhdGlvIHR5cGVzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZEJvb2xlYW4uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEJvb2xl
YW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdG9yRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEFuaW1hdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6c2V0RXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0dFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2Vy
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHU3dpdGNoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdV
c2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFjY2Vzc29ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5SW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRp
c2NyZXRlRnVuY3Rpb24uaDogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkRp
c2NyZXRlRnVuY3Rpb246OlNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbjo6cHJvZ3Jlc3MpOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmg6IEFk
ZGVkCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eSk6
CisKKzIwMTktMDMtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBEZWZpbmUgdGhlIHR5cGUgb2YgU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
IGZvciBhbGwgU1ZHIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU4NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkgd2lsbCBldmVudHVhbGx5IHJl
cGxhY2UgU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGwuCisKKyAgICAgICAgKiBzdmcvU1ZHQUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjphdHRyaWJ1dGVSZWdpc3RyeSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6
aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTGlnaHRFbGVtZW50OjphdHRyaWJ1dGVSZWdpc3RyeSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaXRUb1ZpZXdCb3g6
OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdH
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAg
ICogc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6aXNLbm93bkF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAg
KiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdNUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmF0
dHJpYnV0ZVJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojppc0tu
b3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTd2l0Y2hFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1ZpZXdTcGVjLmg6CisgICAgICAgICogc3ZnL1NWR1pvb21BbmRQYW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6cGFyc2Vab29tQW5kUGFuKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1pvb21BbmRQYW46OlNWR1pvb21BbmRQYW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHWm9vbUFuZFBhbjo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dmcvU1ZHWm9vbUFuZFBhbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6em9v
bUFuZFBhbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5kUGFuOjpzZXRab29t
QW5kUGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OmF0dHJpYnV0ZVJlZ2lzdHJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OmlzS25vd25BdHRyaWJ1dGUpOiBEZWxl
dGVkLgorICAgICAgICBTVkdab29tQW5kUGFuIGhvbGRzIG5laXRoZXIgU1ZHIGFuaW1hdGVkIHBy
b3BlcnRpZXMgbm9yIFNWRyB0eXBlIGVsZW1lbnQuCisgICAgICAgIFNvIHJlbW92ZSBpdCBmcm9t
IGl0cyBhdHRyaWJ1dGUgcmVnaXN0cnkuCisKIDIwMTktMDMtMTYgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0IHRlc3RzIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCLyotZXhjZXB0aW9uLW9yZGVyLmh0bWwgYXJlIGZhaWxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNWUyOTVhYzQxNDcwZjk5NzM0YTM0ZTk1NTM5YWIyNGQ3ZGE4
NzhmYi4uNzFjZmYxYjExYjI3MGE1NTM5YWMyNDRmNWU1ZDMxZWMyNmQ1YjA4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTIyNzAsNyArMjI3MCw2IEBAIHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
CiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKLXN2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uY3BwCiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKIHN2Zy9TVkdBbmltYXRlZEVudW1l
cmF0aW9uLmNwcAogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcApAQCAtMjM4NSw3ICsyMzg0LDYg
QEAgc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKIHN2Zy9T
VkdTZXRFbGVtZW50LmNwcAogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAotc3ZnL1NWR1N0cmluZ0xp
c3RWYWx1ZXMuY3BwCiBzdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAogc3ZnL1NWR1N3aXRjaEVsZW1l
bnQuY3BwCiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlY2M2ZTc4OGIyYTM4MTQxNDli
OTgzYTA2OTRkNTU3OTdlOGI1MGE2Li4zYmQwYzMwNWFjZTFjY2E5YjI1NmY2NzJiZjJhODNhM2Fh
MTcxZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNTgsNyArMjU4LDYgQEAKIAkJMDg1NEIwMjExMjU1RTRFNjAwQjlDREQw
IC8qIFNWR0lubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NTRCMDBGMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdJbmxpbmVUZXh0Qm94
LmggKi87IH07CiAJCTA4NTRCMDIzMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdSb290SW5saW5lQm94
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAx
MTEyNTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJveC5oICovOyB9OwogCQkwODU0QjAy
NTEyNTVFNEU2MDBCOUNERDAgLyogU1ZHVGV4dFF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAxMzEyNTVFNEU2MDBCOUNERDAgLyogU1ZH
VGV4dFF1ZXJ5LmggKi87IH07Ci0JCTA4NTc5NzA5MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmlt
YXRlZEJvb2xlYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NTc5NzA4MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmltYXRlZEJvb2xlYW4uaCAqLzsg
fTsKIAkJMDg1QTE1OTMxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg1QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkwODVCOTJCQjBFRkRFNzNEMDBFNjEyM0Mg
LyogRm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMDg2Mzk1MTYxM0I1RkU1
NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2Mzk1MTQxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1h
dGVkUGF0aC5oICovOyB9OwpAQCAtMjY3LDcgKzI2Niw2IEBACiAJCTA4NzNCODZCMTM2MDY0RUEw
MEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODc1NThDNjEz
QjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc1NThDNDEzQjRBNTdE
MDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg3Qjg0OTYxMjcyQ0VDODAw
QTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRl
ZEFuZ2xlLmggKi87IH07Ci0JCTA4ODBGNzBFMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNM
aXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODgwRjcwRDEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oICovOyB9OwogCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyogUGFpbnRJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg1
MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8q
IFBhaW50UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QTBFMDQxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4QTBERkIxMjZFRjFEQjAwOTc4RjdB
IC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwpAQCAtMjEzOCw2ICsy
MTM2LDEwIEBACiAJCTcxRUFEQ0Q4MjIwODdFNzIwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRUFEQ0Q2MjIwODdF
NkQwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MUVGQ0VEQzIwMkIzOEE5MDBEN0M0MTEgLyogQW5pbWF0aW9u
RWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MUVGQ0VENzIwMkIzODhEMDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzFGQjk2N0IxMzgzRDY0NjAw
QUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRkI5NjdBMTM4M0Q2NDYw
MEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggKi87IH07
CisJCTcyMTQ0MzMxMjIzRUM4NTQwMEYxMkZGNyAvKiBTVkdQcmltaXRpdmVMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjE0NDMyQzIyM0VCMjJF
MDBGMTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMTQ0MzMyMjIzRUM4NUYwMEYxMkZGNyAvKiBTVkdM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjE0
NDMyRTIyM0VCMkZFMDBGMTJGRjcgLyogU1ZHTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBT
VkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTVFRTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNDQzMzQyMjNFQzkxNjAw
RjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0
eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI0RUQzMkMxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzI5MUEzQTdFNTQw
MEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi87IH07CiAJCTcyNEVEMzMyMUEzQThCMjMw
MEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVu
ZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0
RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIzNCw3ICsyMjM2LDYgQEAKIAkJ
N0MzMzBBMDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDEx
REY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTA4MURGOUY5
NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDYxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9z
aXRpb25PcHRpb25zLmggKi87IH07CiAJCTdDMzlDMzY1MUREQTg2NTIwMEZFRkIyOSAvKiBTVkdM
ZW5ndGhMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5o
ICovOyB9OwotCQk3QzM5QzM3NzFEREJFMTcwMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMz
NjcxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBE
MUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJv
YXJkQWNjZXNzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNC
Nzk2RjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKIAkJ
N0MzQjc5NzIxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NzAxOTA4NzU3QjAw
QjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NjI5LDcgKzU2MzAsNiBAQAogCQkwODU0QjAxMTEy
NTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdSb290SW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4NTRCMDEyMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdUZXh0UXVlcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dFF1ZXJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1NEIwMTMxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1Rl
eHRRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0UXVlcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg1Nzk3MDgxMjc4Mzk0QzAwQThFQzVG
IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZEJvb2xlYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1
QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDg1QjkyQjgwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9y
bURhdGFCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRh
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY0Miw3ICs1NjQyLDYg
QEAKIAkJMDg3NTU4QzMxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJ
dGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXJyb2dh
dGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODdCODQ5NTEy
NzJDRUM3MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmdsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZEFuZ2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTA4ODBGNzBEMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0UHJvcGVydHlU
ZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4NTA2N0Qx
MURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYWludEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4NTA2
N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFpbnRQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODhBMERGQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU4MCw3ICs3NTc5
LDYgQEAKIAkJNDMxQTJGOUIxM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQzMUEyRkQ2MTNCNzcwN0EwMDc3OTFFNCAvKiBTVkdBbmltYXRlZExlbmd0aExpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMxQTMwMjAxM0I4OURD
QzAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzFBMzA4NzEzQjhGOTc4MDA3
NzkxRTQgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkQm9vbGVhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQzMkQzRkU3MThBODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0
RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9yQ2hl
Y2tlclRlc3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMzMUFD
NzcxM0I2ODcwMDAwQTlFNUFFIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZE51bWJlckxpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzU4RTg3QTEzNjBBMkVFMDBFNDc0OEMgLyog
SlNTVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NTA2LDYgKzk1MDQsMTIgQEAKIAkJNzFFRkNFREUyMDJCMzlDNzAwRDdD
NDExIC8qIEpTQW5pbWF0aW9uRWZmZWN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQW5pbWF0aW9uRWZmZWN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzFGOTM2RjcxREQ0Rjk5QjAwOTIyQ0M3IC8qIHRyYWNrcy1zdXBw
b3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInRyYWNrcy1z
dXBwb3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFGQjk2N0ExMzgzRDY0
NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3Bl
cnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMyOTIyM0Uz
REM1MDBGMTJGRjcgLyogU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyMTQ0MzJBMjIzRTNERTQwMEYxMkZGNyAvKiBTVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0
aW9uSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMyQzIyM0VCMjJF
MDBGMTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcmltaXRp
dmVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTQ0MzJFMjIzRUIyRkUw
MEYxMkZGNyAvKiBTVkdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNDQzMkYyMjNFQjZFODAwRjEyRkY3IC8qIFNWR1Byb3Bl
cnR5QWNjZXNzb3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5QWNjZXNzb3JJbXBs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTQ0MzMwMjIzRUI3QzcwMEYxMkZG
NyAvKiBTVkdQcm9wZXJ0eUFjY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5QWNj
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkMyMjM4RUUwODAw
N0YwNzlDIC8qIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyM0Y5N0JEMjIzOEVFMDgwMDdGMDc5QyAvKiBTVkdBdHRyaWJ1
dGVBbmltYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZUFuaW1h
dGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkUy
MjM5NTEyRDAwN0YwNzlDIC8qIFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzMxLDggKzk3MzUsNiBA
QAogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFn
bWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzYyMURE
QTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3Ro
TGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMZW5ndGhM
aXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlDMzY2MUREQjgy
Q0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QzM5QzM2NzFEREI4MkNGMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlz
dFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTdHJpbmdMaXN0
VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzY4MUREQjg2RDMw
MEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzM5QzM2OTFEREI4NkQzMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZh
bHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdOdW1iZXJMaXN0VmFs
dWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZBMUREQjg3MUMwMEZF
RkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2MjMwLDYgKzE2MjMyLDggQEAKIAkJCQk1NUJFMDI1RjIyM0IyOUM1MDAzMkYw
OEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVGdW5jdGlvbi5oICovLAogCQkJCTU1RUU1MzVFMjIz
QjJBMEUwMEZCQTk0NCAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaCAqLywK
IAkJCQk1NUJFMDI1OTIyM0IyOUMxMDAzMkYwOEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1
ZUZ1bmN0aW9uSW1wbC5oICovLAorCQkJCTcyMTQ0MzI5MjIzRTNEQzUwMEYxMkZGNyAvKiBTVkdB
bmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmggKi8sCisJCQkJNzIxNDQzMkEyMjNFM0RFNDAwRjEy
RkY3IC8qIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmggKi8sCiAJCQkJNTVCRTAy
NUIyMjNCMjlDMjAwMzJGMDhBIC8qIFNWR0FuaW1hdGlvbkZ1bmN0aW9uLmggKi8sCiAJCQkJNTVG
QTdGRUYyMTBGQTM4NjAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZS5oICovLAogCQkJCTU1RkE3RkY0
MjEwRkI2ODgwMDVBRUZFNyAvKiBTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oICovLApAQCAtMTYyNDIs
MTggKzE2MjQ2LDIxIEBACiAJCQkJNTVENzBEMjEyMjNCMDBCQjAwMDQ0QjhFIC8qIFNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHkuY3BwICovLAogCQkJCTU1RDcwRDIwMjIzQjAwOTEwMDA0NEI4RSAv
KiBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmggKi8sCiAJCQkJNTVENzBEMjIyMjNCMDBFQTAw
MDQ0QjhFIC8qIFNWR0xlZ2FjeVByb3BlcnR5LmggKi8sCisJCQkJNzIxNDQzMkUyMjNFQjJGRTAw
RjEyRkY3IC8qIFNWR0xpc3QuaCAqLywKIAkJCQkwODEwNzY0MzEyODI4NTU2MDA3QzYzQkEgLyog
U1ZHTGlzdFByb3BlcnR5LmggKi8sCiAJCQkJMDg4QTBFMDAxMjZFRjFEQjAwOTc4RjdBIC8qIFNW
R0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAg
LyogU1ZHTWF0cml4VGVhck9mZi5oICovLAogCQkJCTU1RUU1MzU0MjIzQjI5RTkwMEZCQTk0NCAv
KiBTVkdNZW1iZXJBY2Nlc3Nvci5oICovLAogCQkJCTU1QkUwMjVBMjIzQjI5QzIwMDMyRjA4QSAv
KiBTVkdQb2ludGVyTWVtYmVyQWNjZXNzb3IuaCAqLywKKwkJCQk3MjE0NDMyQzIyM0VCMjJFMDBG
MTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovLAogCQkJCTU1RUU1MzYzMjIzQjJBMjQwMEZC
QTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovLAorCQkJCTcyMTQ0MzMwMjIzRUI3QzcwMEYxMkZGNyAv
KiBTVkdQcm9wZXJ0eUFjY2Vzc29yLmggKi8sCisJCQkJNzIxNDQzMkYyMjNFQjZFODAwRjEyRkY3
IC8qIFNWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmggKi8sCiAJCQkJNTVFRTUzNjAyMjNCMkEyMTAw
RkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLywKIAkJCQk1NUJFMDI1QzIyM0IyOUMzMDAz
MkYwOEEgLyogU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmggKi8sCiAJCQkJNTVCRTAyNTcyMjNC
MjlDMDAwMzJGMDhBIC8qIFNWR1Byb3BlcnR5UmVnaXN0cnkuaCAqLywKIAkJCQkwODhBMEUwMjEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDMx
MjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggKi8sCi0JCQkJMDg4MEY3MEQx
MjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJ
CQkwODEzQTRFOTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IHByb3BlcnRpZXM7CkBAIC0yNDExMyw4ICsyNDEyMCw2IEBA
CiAJCQkJNDM2MkM3QjgxM0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0FuaW1hdGVkQW5nbGUuY3BwICov
LAogCQkJCTA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggKi8s
CiAJCQkJQjIyMjc3RTYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkQW5nbGUuaWRsICov
LAotCQkJCTQzMUEzMDg3MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmltYXRlZEJvb2xlYW4uY3Bw
ICovLAotCQkJCTA4NTc5NzA4MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmltYXRlZEJvb2xlYW4u
aCAqLywKIAkJCQlCMjIyNzdFNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRCb29sZWFu
LmlkbCAqLywKIAkJCQk0M0E2MjVGNzEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xv
ci5jcHAgKi8sCiAJCQkJNDNBNjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29s
b3IuaCAqLywKQEAgLTI0NTEzLDggKzI0NTE4LDYgQEAKIAkJCQlCMjIyNzkxNDBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaWRsICovLAogCQkJCUIyMjI3OTE2MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggKi8sCiAJCQkJQjIyMjc5MTcwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1N0cmluZ0xpc3QuaWRsICovLAotCQkJCTdDMzlDMzY2MUREQjgyQ0YwMEZFRkIyOSAv
KiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLywKLQkJCQk3QzM5QzM2NzFEREI4MkNGMDBGRUZC
MjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5oICovLAogCQkJCUIyMjI3OTIxMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3OTIyMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU3R5bGVFbGVtZW50LmlkbCAqLywKQEAgLTMwODYzLDYgKzMwODY2LDggQEAKIAkJ
CQk0OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nl
c3NpYmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUJDQzYxMTEyNERGQ0Iw
MEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
Q0M5QkNGMjIzODdFOUEwMEZGQjUxQyAvKiBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RDQzlCRDEyMjM4N0VBQTAwRkZCNTFDIC8qIE1lZGlhQ2Fw
YWJpbGl0aWVzRW5jb2RpbmdJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkzQTE3RDE2
RTFDMDA0MjBBQTEgLyogTWVkaWFDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3
MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlERUJDQ0RENDE2NjQ2RUFGMDBBNDUyRTEgLyogTWVkaWFDb250cm9sRWxlbWVu
dFR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTMxOTA4LDcgKzMxOTEzLDYgQEAKIAkJCQlCMjIy
Nzk3NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3OTdBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODdCODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmds
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDg1Nzk3MDkxMjc4Mzk0QzAwQThFQzVGIC8qIFNWR0Fu
aW1hdGVkQm9vbGVhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDNBNjI1RjgxM0IzMzA0MDAwQUM5
NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RDQ2Q0UzMTI3
QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MUZCOTY3QjEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblBy
b3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjAxNyw2ICszMjAyMSw3IEBACiAJ
CQkJN0NDRUJGQzAxREQ4RjZBQjAwMkM0MEI4IC8qIFNWR0xlbmd0aFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzQzBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHTGluZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMyMjIzRUM4NUYwMEYx
MkZGNyAvKiBTVkdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODEwNzY0NDEyODI4NTU2MDA3
QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwOTEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjA4NCw2ICszMjA4OSw5IEBACiAJCQkJQjIyMjdBOTEwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5NDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0E5NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3IC8qIFNWR1ByaW1pdGl2
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBT
VkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3
IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTBCMTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
OEEwRTBDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjEwMiwxMSArMzIxMTAsOSBAQAogCQkJCUIyMjI3
QUEzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FBNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRBRkQwMTAwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQkwODgwRjcwRTEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGlj
TGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxM0E0RUExMjg0MTMy
NjAwOTkyNTExIC8qIFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBQTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0FBQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJN0MzOUMzNzcxRERCRTE3MDAwRkVGQjI5IC8qIFNWR1N0cmluZ0xp
c3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUI4MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUJCMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FCRTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MjE2Niw3ICszMjE3Miw2IEBACiAJCQkJQzY1MDQ2QTkxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBs
YXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2RTk0NERE
MUFDNEI0RUEwMDdCODVCNSAvKiBUZXJtLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBNjA5
OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RDQzlCRDEyMjM4
N0VBQTAwRkZCNTFDIC8qIE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzMwOUUxNzA5OUU2NDkyMDA1NkU1ODEgLyogVGV4dEFmZmluaXR5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0RENFNjE4ODEwNTFEMDAzRUVE
QkIgLyogVGV4dEF1dG9TaXppbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMzIyNjAsNyArMzIyNjUs
NiBAQAogCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI0ODRGNEQxNzFGODIxRTAwMDQwNzU1IC8qIFRyYW5z
Zm9ybUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0UwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RDQzlCQ0Yy
MjM4N0U5QTAwRkZCNTFDIC8qIE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTFEMDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURCMUJDNkExMDcxNUE2NDAwRUZBQTQ5IC8qIFRy
YW5zZm9ybVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0NUJGRDQxM0NGODA5MDAwQ0Mz
QjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVt
ZW50LmgKaW5kZXggZDQxYWQwYjM1MjJkYjlkNzEzZDM5YjFlNDQ4ZmU1OTlhZTY3NGIwNS4uMDU3
Nzk0YjBlN2NmMzE0NGViNDhiZWYyMGVhNDg5MDMwYmUzNGEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FF
bGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNDIsOCArNDIsMTEgQEAgcHJpdmF0ZToKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5
ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHQUVsZW1lbnQsIFNWR0dyYXBoaWNzRWxl
bWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29u
c3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVy
dHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdBRWxlbWVudCwgU1ZHR3Jh
cGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVu
Y2U+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZp
bmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
ZmluYWw7CiAKQEAgLTY0LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCkgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1f
YXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRl
IG1fdGFyZ2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCmlu
ZGV4IDNiNGU4NjFhMzAxYzAxMGVlYmUzN2FlMDMzY2YxMTM0YWExYmM3OWYuLmQzNGY5ZWQwNjYy
MDQxYTVjN2M0M2YwOGU0NDViYzM1MGM0ZGRiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0
R2x5cGhFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ4LDEwICs0OCwxNCBAQCBwcml2YXRlOgogICAg
IHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxT
VkdBbHRHbHlwaEVsZW1lbnQsIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZT47CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQ
cm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCisg
ICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdB
bHRHbHlwaEVsZW1lbnQsIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1VSSVJlZmVyZW5j
ZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzNzUxOWJmZTMwZmJhY2U0MDdmZWQ5YzZhZDcz
NTgyOGFiNDBhOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWRCb29sZWFu
QW5pbWF0b3I6OlNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQotICAgIDogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRCb29sZWFuLCBhbmltYXRpb25FbGVtZW50LCBj
b250ZXh0RWxlbWVudCkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlKFNWR1By
b3BlcnR5VHJhaXRzPGJvb2w+Ojpmcm9tU3RyaW5nKHN0cmluZykpOwotfQotCi1zdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6c3RhcnRB
bmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5p
bWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmlt
YXRlZEJvb2xlYW4+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQm9vbGVh
bkFuaW1hdG9yOjpzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgc3RvcEFuaW1WYWxBbmltYXRpb25G
b3JUeXBlPFNWR0FuaW1hdGVkQm9vbGVhbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1hdGVkVHlw
ZSYgdHlwZSkKLXsKLSAgICByZXNldEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRCb29sZWFuPihh
bmltYXRlZFR5cGVzLCB0eXBlKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRv
cjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxXaWxsQ2hhbmdlRm9yVHlwZTxTVkdBbmlt
YXRlZEJvb2xlYW4+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQm9vbGVh
bkFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZTxT
VkdBbmltYXRlZEJvb2xlYW4+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVk
Qm9vbGVhbkFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0Fu
aW1hdGVkVHlwZSopCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVy
Y2VudGFnZSwgdW5zaWduZWQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBl
KiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKLXsKLSAg
ICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVu
dCk7Ci0KLSAgICBjb25zdCBhdXRvIGZyb21Cb29sZWFuID0gKG1fYW5pbWF0aW9uRWxlbWVudC0+
YW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OlRvID8gYW5pbWF0ZWQgOiBmcm9tKS0+
YXM8Ym9vbD4oKTsKLSAgICBjb25zdCBhdXRvIHRvQm9vbGVhbiA9IHRvLT5hczxib29sPigpOwot
ICAgIGF1dG8mIGFuaW1hdGVkQm9vbGVhbiA9IGFuaW1hdGVkLT5hczxib29sPigpOwotCi0gICAg
bV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlRGlzY3JldGVUeXBlPGJvb2w+KHBlcmNlbnRhZ2Us
IGZyb21Cb29sZWFuLCB0b0Jvb2xlYW4sIGFuaW1hdGVkQm9vbGVhbik7Ci19Ci0KLWZsb2F0IFNW
R0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKQotewotICAgIC8vIE5vIHBhY2VkIGFuaW1hdGlvbnMgZm9yIGJvb2xl
YW4uCi0gICAgcmV0dXJuIC0xOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRC
b29sZWFuLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NTkwOWYwNzZiNGIxYTg0
NmM3NTc4ODVjMmVhY2Q1OTc0YmE1MmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNs
dWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFj
Y2Vzc29yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHQW5pbWF0aW9uRWxl
bWVudDsKLQotdXNpbmcgU1ZHQW5pbWF0ZWRCb29sZWFuID0gU1ZHQW5pbWF0ZWRTdGF0aWNQcm9w
ZXJ0eVRlYXJPZmY8Ym9vbD47Ci11c2luZyBTVkdBbmltYXRlZEJvb2xlYW5BdHRyaWJ1dGUgPSBT
VkdBbmltYXRlZEF0dHJpYnV0ZTxTVkdBbmltYXRlZEJvb2xlYW4+OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGU+Ci11c2luZyBTVkdBbmltYXRlZEJvb2xlYW5BdHRyaWJ1dGVBY2Nlc3Nv
ciA9IFNWR0FuaW1hdGVkQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEJv
b2xlYW5BdHRyaWJ1dGUsIEFuaW1hdGVkQm9vbGVhbj47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkQm9v
bGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKLXB1
YmxpYzoKLSAgICBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50
KiwgU1ZHRWxlbWVudCopOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wQW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBl
cyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIGZsb2F0IGNhbGN1bGF0ZURpc3Rh
bmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3Zl
cnJpZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGlvbkVsZW1lbnQuaAppbmRleCAzZjRhNTc2ZWEzOWQ3ODM4OTlkNWZjMmIwMzg2MWRi
YjI0YTZlYTQ0Li43NzMwODhiNjdiMTQxN2UzNjU5MTY5Zjk4YmIwZDJiY2ZiYWFjN2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1j
Yy5pZC5hdT4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNCw3ICsyNCw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHVGVzdHMuaCIKQEAgLTE0Nyw2ICsxNDYsOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVS
ZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5
KCk7IH0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclBy
b3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R0FuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR1Rlc3RzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKIAogICAgIHN0YXRpYyBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKQEAgLTIwNyw2ICsyMDks
NyBAQCBwcml2YXRlOgogICAgIENhbGNNb2RlIG1fY2FsY01vZGUgeyBDYWxjTW9kZTo6TGluZWFy
IH07CiAgICAgQW5pbWF0aW9uTW9kZSBtX2FuaW1hdGlvbk1vZGUgeyBBbmltYXRpb25Nb2RlOjpO
b25lIH07CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAq
dGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRvckZhY3RvcnkuaAppbmRleCAwZjQ1NzYzMzE0YTBhYTg5ZDBhYjM3M2MzMThkYmVhMDY2NTU0
OWM1Li4yYjgyNzE3ZjQ3MGE3YTkxMmIzZTZiNjg0MTg0MzM3NTMyMTczNmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCkBAIC0yMCw3ICsyMCw2IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgiCiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgi
CkBAIC01MCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5p
bWF0ZWRCb29sZWFuOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRCb29sZWFuQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZENvbG9yQW5p
bWF0b3I+KCphbmltYXRpb25FbGVtZW50LCAqY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNl
IEFuaW1hdGVkRW51bWVyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaApp
bmRleCA2NWM3YjQ2NWI1MTI4ODQwMWEzNDNjOTgwYzAyY2U3MDk2ODUxMDA4Li41YTBlYjcwMzJi
NWUzMTRhNWRiYmEyMDA0N2FkMjg3NTZmNjdhYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmgKQEAgLTQ2LDEwICs0NiwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0
cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0NpcmNsZUVs
ZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47
CiAgICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQog
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdDaXJjbGVFbGVtZW50LCBTVkdHZW9tZXRy
eUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OworICAgIGNvbnN0IFNWR1By
b3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8
IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAg
fQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNTksNiArNjYsNyBAQCBwcml2YXRlOgogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVP
d25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIG1fY3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX2N5IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fciB7IExlbmd0aE1vZGVPdGhlciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCmluZGV4IDYzYjZiZGUwZTI0MzNiNmVjNWRhYTJmMGVlYTY2
ZTM3YWUzYWRmZjcuLjAzYzFhZGRmN2UwZTJmMmQ4NmM4Mzg1ODUxMTNjODA0MzEwOGZmMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw3
ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFu
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQu
aCIKQEAgLTQ0LDEwICs0MywxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3du
ZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0NsaXBQYXRoRWxlbWVudCwg
U1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBz
dGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJl
Z2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnko
KTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmli
dXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3du
ZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQor
CisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxT
VkdDbGlwUGF0aEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CkBAIC01OSw2
ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBm
aW5hbDsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsg
KnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlPiBtX2NsaXBQYXRoVW5pdHMgeyBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVf
VVNFUlNQQUNFT05VU0UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKaW5kZXggOWY0NmJlY2RmYjRi
OWMxOWEwNWE0ZDkzYmFiYmE1ZjM1OTM2YmMyZC4uOWQyYjZkZTZmZmE2NjZjOGM0MzM5YzhmNDgz
ZDFhMmQ4M2VkM2VkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC05NiwxMCArOTYsMTcgQEAg
cHJvdGVjdGVkOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHlJbXBsPFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdF
bGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0
cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0
cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94
eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmli
dXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZH
RWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC0xMDcsNiArMTE0LDcgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8Q29tcG9uZW50VHJhbnNmZXJUeXBlPiBtX3R5cGUg
eyBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgfTsKICAgICBTVkdBbmltYXRlZE51
bWJlckxpc3RBdHRyaWJ1dGUgbV90YWJsZVZhbHVlczsKICAgICBTVkdBbmltYXRlZE51bWJlckF0
dHJpYnV0ZSBtX3Nsb3BlIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgK
aW5kZXggMmE3MWM2MmMwYjZkODdkNGZiZTEzMDc1NzVlNjM3NjIzNmRmZmYzMS4uOGQ2OTVjYWYx
MzE0NGZmMTFmYmY5OGJjN2NlZTY5OTc3YTU3Y2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
TGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCkBAIC01NCwxMCArNTMsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdDdXJzb3JFbGVt
ZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdUZXN0cywg
U1ZHVVJJUmVmZXJlbmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmli
dXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmli
dXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRl
T3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNW
R1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdDdXJzb3JFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdUZXN0cywgU1ZHVVJJUmVmZXJlbmNlPjsKKyAg
ICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisgICAgCisgICAgc3RhdGljIGJvb2wg
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC02Nyw2ICs3Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYpIGNvbnN0IGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0
dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgSGFzaFNldDxDU1NDdXJzb3JJbWFnZVZhbHVl
Kj4gbV9jbGllbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAppbmRleCBkZjNjMDQw
M2VjZjViNTY4MmFmY2E3MmU5ZjdhMjdhMDU3M2U0NTFmLi4zYWI0ZTk5ZTNjNThhZWNmMjBhODYz
YzdlZDlmMjQzMzc3NDMyZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVm
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaApAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIx
LDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xl
YW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVk
ZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAgLTM3LDYgKzM2LDkgQEAgcHJpdmF0ZToKIAog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdEZWZzRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdEZWZzRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDQsNiArNDYsNyBAQCBwcml2YXRlOgog
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1
dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGI2NjRkM2QwYjBj
ODU0ODQyNGZlMzA0ZDYzYWU5NzM1NDk5OTlkNjcuLjBjODY1OTg4MjFiOTNmYWE3YWRmY2Q0MjBi
ZDc1Mzk5YjJjNDAwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTcyMCwxMiAr
NzIwLDI0IEBAIHZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zCiAgICAgU1ZHRWxlbWVudCogbm9uQ29u
c3RUaGlzID0gY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4odGhpcyk7CiAgICAgaWYgKG5hbWUgPT0g
YW55UU5hbWUoKSkKICAgICAgICAgc3luY2hyb25pemVBbGxBbmltYXRlZFNWR0F0dHJpYnV0ZShu
b25Db25zdFRoaXMpOwotICAgIGVsc2UgaWYgKGlzQW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShu
YW1lKSkgeworICAgIGVsc2UgewogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgb2YgdGhlIHByb3Bl
cnR5IGhhcyBjaGFuZ2VkLCBzZXJpYWxpemUgdGhlIG5ldyB2YWx1ZSB0byB0aGUgYXR0cmlidXRl
LgogICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3BlcnR5UmVnaXN0cnkoKS5zeW5jaHJvbml6
ZShuYW1lKSkKICAgICAgICAgICAgIG5vbkNvbnN0VGhpcy0+c2V0U3luY2hyb25pemVkTGF6eUF0
dHJpYnV0ZShuYW1lLCAqdmFsdWUpOwotICAgIH0gZWxzZQotICAgICAgICBub25Db25zdFRoaXMt
PnN5bmNocm9uaXplQXR0cmlidXRlKG5hbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBu
b25Db25zdFRoaXMtPnN5bmNocm9uaXplQXR0cmlidXRlKG5hbWUpOworICAgIH0KK30KKyAgICAK
K3ZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3Bl
cnR5KQoreworICAgIC8vIFdlIHdhbnQgdG8gZGlydHkgdGhlIHRvcC1sZXZlbCBwcm9wZXJ0eSB3
aGVuIGEgZGVzY2VuZGFudCBjaGFuZ2VzLiBGb3IgZXhhbXBsZQorICAgIC8vIGEgY2hhbmdlIGlu
IGFuIFNWR0xlbmd0aCBpdGVtIGluIFNWR0xlbmd0aExpc3Qgc2hvdWxkIHNldCB0aGUgZGlydHkg
ZmxhZyBvbgorICAgIC8vIFNWR0xlbmd0aExpc3QgYW5kIG5vdCB0aGUgU1ZHTGVuZ3RoLgorICAg
IHByb3BlcnR5LT5zZXREaXJ0eSgpOworCisgICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsK
KyAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKHByb3BlcnR5UmVnaXN0cnkoKS5wcm9wZXJ0eUF0dHJp
YnV0ZU5hbWUoKnByb3BlcnR5KSk7CiB9CiAKIHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVy
dHlDaGFuZ2UoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCmluZGV4IDkyOTZjYmExZTExYWQ0ZTMwMzYwMzFkNDM5YjhmZDA1NGM3YTkw
NzkuLjhhODg0NzQ1ZDQ1NDU1ZTZiNzAzNTJmMGUzNDAzZTBkNjdlYWE3MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaApAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW5p
bWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAg
Ym9vbCBpc0FuaW1hdGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAot
ICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNv
bW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21t
aXRQcm9wZXJ0eUNoYW5nZShTVkdBbmltYXRlZFByb3BlcnR5Jik7CiAKICAgICBjb25zdCBTVkdF
bGVtZW50KiBhdHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRoaXM7IH0KQEAgLTIxNiw5ICsyMTYsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U1ZHRWxl
bWVudCo+IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzOwogCiAgICAgQXR0cmlidXRlT3du
ZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVk
U3RyaW5nQXR0cmlidXRlIG1fY2xhc3NOYW1lOwotICAgIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKKyAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJp
YnV0ZSBtX2NsYXNzTmFtZTsKIH07CiAKIGNsYXNzIFNWR0VsZW1lbnQ6Okluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAppbmRleCA5
ZGFhZWE4Y2Y4YmFhZTFmMjNmNzI2YTU2OTk0MzYyOGQyY2E4M2EwLi4zYzliY2ZjN2Q5YmExY2Vm
MWE0YzI1YzljNzFhZjU3ODRiYzQxMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxsaXBzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ4LDEwICs0OCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNp
bmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0Vs
bGlwc2VFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclBy
b3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5
JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdFbGxpcHNlRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lz
dHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJl
Z2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgZmluYWw7CiAKQEAgLTYxLDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZSBtX2N4IHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV9jeSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3J4IHsgTGVuZ3RoTW9kZVdpZHRoIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKaW5kZXggM2ExZTU2ZGQ2MjNhNmIy
NGViNzU4MDg2NDBlYjEzNzdjZGY3ZGMzZi4uYWYyNjFiNjg2MTI4ZTI3MDAyM2UwMmRmODk2YTY1
OTZjOTY0NTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmNwcApAQCAtMjksMjIgKzI5LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICA6IG1fY29udGV4dEVsZW1l
bnQoKmNvbnRleHRFbGVtZW50KQorICAgICwgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKFNW
R0FuaW1hdGVkQm9vbGVhbjo6Y3JlYXRlKGNvbnRleHRFbGVtZW50KSkKIHsKLSAgICByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpy
ZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVn
aXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgJlNWR0VsbGlwc2VFbGVtZW50OjptX2V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+KCk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCAmU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6bV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPigp
OworICAgIH0pOwogfQogCiB2b2lkIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyKQotICAgICAgICBzZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHZhbHVlID09
ICJ0cnVlIik7CisgICAgICAgIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC0+c2V0QmFzZVZh
bEludGVybmFsKHZhbHVlID09ICJ0cnVlIik7CiB9CiAKIHZvaWQgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5oCmluZGV4IGQyNTUwN2FkMDdlMjBmMDZlYjJhOTk5NjU3NGQwMGJjMDIyMjlmZDUuLmVh
ZWIyMmFhYmViZWQ5YmUzOGNhOGNmMGIzZDRiNmNmNWE2MTkwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDE1
ICs0OCwxOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAg
IHN0YXRpYyBhdXRvJiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAotICAgIGF1dG8gZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIHVzaW5nIFBy
b3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZD47CiAKLSAgICBib29sIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKSBj
b25zdCB7IHJldHVybiBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQudmFsdWUoKTsgfQotICAg
IHZvaWQgc2V0RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZChib29sIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpIHsgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLnNldFZhbHVlKGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpOyB9CisgICAgYm9vbCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCkgY29uc3QgeyByZXR1cm4gbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLT5jdXJyZW50VmFs
dWUoKTsgfQorICAgIFNWR0FuaW1hdGVkQm9vbGVhbiYgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KTsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSk7CisgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldEhhdmVGaXJlZExvYWRFdmVu
dChib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQYXJzZXJJbnNlcnRlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC02NywxMSArNzEsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBh
dHRyaWJ1dGVPd25lclByb3h5KCkgeyByZXR1cm4geyAqdGhpcywgbV9jb250ZXh0RWxlbWVudCB9
OyB9CiAgICAgCiAgICAgU1ZHRWxlbWVudCYgbV9jb250ZXh0RWxlbWVudDsKLSAgICBTVkdBbmlt
YXRlZEJvb2xlYW5BdHRyaWJ1dGUgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOworICAgIFJl
ZjxTVkdBbmltYXRlZEJvb2xlYW4+IG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmgKaW5kZXggZDY3YmFmZmNhYTk2OGVhZTRjZjJhZDBkNTI5OGU4OGE4YzNhZDA0Yy4uYTE2YjFk
MmJmNDFlMTA1MTgwZDI1YTBmMDkxMzk3YzhiMDhiZGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAq
IENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU5LDEwICs1OSwxNyBAQCBwcml2
YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHlJbXBsPFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdp
c3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwor
ICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApAQCAtNzAsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KSBvdmVycmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclBy
b3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZH
QW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjI7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bkF0dHJpYnV0ZTxCbGVuZE1vZGU+IG1fbW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCmluZGV4IDQ3Njg4ZWM4
NjlkM2ZjZjEzNTE5NDk4YzhlODAwMGI1NGU2OWMxZjguLjRlMWYzM2EyNzNhNWNkZmMyZDBlODg5
N2JlMjRjOTA4MzE5ZjdhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtODMsMTAgKzgzLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47
CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC05NCw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEF0dHJp
YnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0
ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJp
YnV0ZTxDb2xvck1hdHJpeFR5cGU+IG1fdHlwZSB7IEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgg
fTsKICAgICBTVkdBbmltYXRlZE51bWJlckxpc3RBdHRyaWJ1dGUgbV92YWx1ZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCmluZGV4
IGJkNjJiMzQ4MWM1ZWU0NjUzNDFkNDNkYmM0NGJmODg3MmY0YjZlN2UuLjI1N2E5NTZkODg0ZDAx
ZTk0ZDAzNjA3NzNjNWFmYWUwYzZhNGEzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCkBAIC0yLDYgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zOSwxNCArNDAsMTggQEAgcHJpdmF0ZToK
ICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUlt
cGw8U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0
ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0
cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAogICAgIC8v
IEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCi0gICAgY29uc3QgU1ZHQXR0cmli
dXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJy
aWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAq
dGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAppbmRleCBhMTIzY2M2YTcxNDQwNTFj
ODMzNjg4ZjVkNWViMDIwY2ZkOTlmYzNkLi4wZjExNzNiMTU5NDZlMjMxYzUyMTBiYTI5NWY4MTFj
YzA4ZWFhMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTA2LDEwICsxMDYsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0
ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGlj
IEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3Ry
eSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVD
b21wb3NpdGVFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+Owor
ICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtMTE3LDYg
KzEyNCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94
eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJp
YnV0ZSBtX2luMTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMjsKICAgICBT
VkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+IG1f
c3ZnT3BlcmF0b3IgeyBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmOWM0MWZk
ZjkyYmI2ZjE0YjUxMDhkNDlkZDYzY2NkOWY3OGVjNDE2Li5kYTcyNmQ2Y2Q5MDFiNTU3NjQxMzAz
NWE1ZjgwYjFmZTM3ZWNkZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgaW5saW5lIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW0KICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdO
YW1lczo6b3JkZXJBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fb3JkZXJYLCAm
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fb3JkZXJZPigpOwogICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp0YXJnZXRYQXR0ciwgJlNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjptX3RhcmdldFg+KCk7CiAgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnRhcmdldFlBdHRyLCAmU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fdGFyZ2V0WT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsICZTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudDo6bV9wcmVzZXJ2ZUFscGhhPigpOwogICAgIH0pOwogfQogCkBA
IC03OSw3ICs4MCw2IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcygpCiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Omtl
cm5lbFVuaXRMZW5ndGhBdHRyLAogICAgICAgICAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6
Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjptX2tlcm5lbFVuaXRMZW5ndGhYLAogICAgICAgICAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjptX2tlcm5lbFVuaXRMZW5ndGhZPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjptX3ByZXNlcnZlQWxwaGE+KCk7CiB9CiAKIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCkBAIC0xNTIsOSArMTUyLDkgQEAgdm9pZCBTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cikgewog
ICAgICAgICBpZiAodmFsdWUgPT0gInRydWUiKQotICAgICAgICAgICAgbV9wcmVzZXJ2ZUFscGhh
LnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgbV9wcmVzZXJ2ZUFscGhhLT5zZXRCYXNlVmFs
SW50ZXJuYWwodHJ1ZSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJmYWxzZSIpCi0gICAg
ICAgICAgICBtX3ByZXNlcnZlQWxwaGEuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICAgICAgbV9w
cmVzZXJ2ZUFscGhhLT5zZXRCYXNlVmFsSW50ZXJuYWwoZmFsc2UpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5n
KCJmZUNvbnZvbHZlTWF0cml4OiBwcm9ibGVtIHBhcnNpbmcgcHJlc2VydmVBbHBoYUF0dHI9XCIi
ICsgdmFsdWUgICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4i
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuaAppbmRleCBkMzA0Y2M0MWI5MjI3MzcyMmRmOGY3NjJkYjU2YzIzMjU1
YjJhMWFjLi43MGZiOWQ3MzUwNjRmYTJkNmEwNTMyNzk5MTViYTg5N2M3N2U5OTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaApAQCAtNzgs
NyArNzgsNyBAQCBwdWJsaWM6CiAgICAgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lZGdlTW9kZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0
TGVuZ3RoWC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWS5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGJvb2wgcHJlc2VydmVB
bHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVBbHBoYS5jdXJyZW50VmFsdWUoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQorICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlc2VydmVBbHBoYS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAgIFJlZlB0cjxTVkdB
bmltYXRlZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMS5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBTVkdBbmltYXRlZEludGVnZXImIG9y
ZGVyWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9vcmRlclg7IH0KQEAgLTkxLDIwICs5MSwyNCBAQCBw
dWJsaWM6CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IGVkZ2VNb2RlQW5pbWF0
ZWQoKSB7IHJldHVybiBtX2VkZ2VNb2RlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4ga2VybmVsVW5pdExlbmd0
aFhBbmltYXRlZCgpIHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFguYW5pbWF0ZWRQcm9wZXJ0
eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVy
PiBrZXJuZWxVbml0TGVuZ3RoWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3Ro
WS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRCb29sZWFuPiBwcmVzZXJ2ZUFscGhhQW5pbWF0ZWQoKSB7IHJldHVybiBtX3By
ZXNlcnZlQWxwaGEuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Cisg
ICAgU1ZHQW5pbWF0ZWRCb29sZWFuJiBwcmVzZXJ2ZUFscGhhQW5pbWF0ZWQoKSB7IHJldHVybiBt
X3ByZXNlcnZlQWxwaGE7IH0KIAogcHJpdmF0ZToKICAgICBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0
cmlidXRlcygpOwotICAgIAorICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKwogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0g
ICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAt
MTE2LDcgKzEyMCw2IEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotCiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUg
bV9pbjE7CiAgICAgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4gbV9vcmRlclggeyBTVkdBbmltYXRl
ZEludGVnZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEludGVnZXI+IG1f
b3JkZXJZIHsgU1ZHQW5pbWF0ZWRJbnRlZ2VyOjpjcmVhdGUodGhpcykgfTsKQEAgLTEyOCw3ICsx
MzEsNyBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8RWRn
ZU1vZGVUeXBlPiBtX2VkZ2VNb2RlIHsgRURHRU1PREVfRFVQTElDQVRFIH07CiAgICAgU1ZHQW5p
bWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9rZXJuZWxVbml0TGVuZ3RoWDsKICAgICBTVkdBbmltYXRl
ZE51bWJlckF0dHJpYnV0ZSBtX2tlcm5lbFVuaXRMZW5ndGhZOwotICAgIFNWR0FuaW1hdGVkQm9v
bGVhbkF0dHJpYnV0ZSBtX3ByZXNlcnZlQWxwaGE7CisgICAgUmVmPFNWR0FuaW1hdGVkQm9vbGVh
bj4gbV9wcmVzZXJ2ZUFscGhhIHsgU1ZHQW5pbWF0ZWRCb29sZWFuOjpjcmVhdGUodGhpcykgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAppbmRleCAwYjhhZThiMDFlZjRhY2VmNzlhYmIx
YWE2OTIxOGE3YmE4ZjRhNmE4Li45NWM5ZDc0YTI4NmE2ZTMxOTY3NzJlMzFhMzA1NTMyYTk5OGVk
OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDUgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNTMsMTAgKzUzLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclBy
b3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBB
dHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnko
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7
Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1
c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisgICAgCisgICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBA
IC02Nyw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmli
dXRlIG1faW4xOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZGlmZnVzZUNvbnN0
YW50IHsgMSB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3VyZmFjZVNjYWxl
IHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oCmluZGV4IDUxYmVkNTNkZjY2YjA1YzQ4NDBhZDE1YTZjNDQyYWRkZjkxNzc0N2IuLjNj
MDkyZDRmNjNmZTkwZWU3NzgwNGE1MjUyMTQ1Yjg1MDBlNjk5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvbGl2ZXJAbmVyZ2V0LmNv
bT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTg4LDEwICs4OCwxNyBAQCBwcml2YXRlOgogCiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVn
aXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQ
cm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmli
dXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtOTksNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3Zl
cnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7
ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwogICAgIFNWR0FuaW1h
dGVkU3RyaW5nQXR0cmlidXRlIG1faW4yOwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gbV94Q2hhbm5lbFNlbGVjdG9yIHsgQ0hBTk5FTF9B
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAppbmRleCAz
NjYyMTllMDJjNjkzMzc0NjgyNWE3OTJlODM2NWJlMGY1MmQwMTc5Li43MTE2MzQyZDg0YWNkMDE2
OWExZDVlODg0NWJiMjFiYjRhOGNiMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNTAsMTAgKzUwLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVE
cm9wU2hhZG93RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsK
ICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmli
dXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVy
UmVnaXN0cnk8U1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7CiAKQEAgLTYzLDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpOwogCiAgICAgQXR0cmlidXRlT3duZXJQ
cm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0
dHJpYnV0ZSBtX2luMTsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2R4IHsgMiB9
OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZHkgeyAyIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKaW5kZXggOTNiNjFhY2E0NmEz
Y2RiMTkwM2Q1NTlmZjhiY2NlMTgxYjRjYzRjOS4uMGY0M2NjNjY3ZTE2NDZiZmI1NDhjYzliNDE2
NGNlMzY4ZTExM2FiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTUxLDEwICs1MSwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsK
ICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmli
dXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC02NCw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRy
aWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zdGREZXZpYXRp
b25YOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3RkRGV2aWF0aW9uWTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggNmM0ZmQ2MzUwYjk4NzIwYjU4
OTRiZTY2ODgyMjNjNjA0YjM0MjQwOS4uNTUwYmY5MDllYjMzNTFiZjczODIxN2VkYTQ5YzMzNzRl
MmI5ZTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw3ICsy
Myw2IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZFSW1hZ2UuaCIKQEAgLTQ5
LDEwICs0OCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJp
YnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5
ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IFNWR1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVy
dHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQor
CisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogCkBAIC03MSw2ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0F0dHJpYnV0ZSBtX3ByZXNlcnZlQXNwZWN0UmF0aW87
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAppbmRleCA4NGE2NzhmZmIwZTc5
MjNmOTE4YWQzYzg3YWNjMzViMjY2ZjI3MWYyLi45YmUyYmZhNDZlYzhjZmEwNDI2MTg3N2FjYzhj
NmVkODA5Y2JjMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaApAQCAt
Miw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZlciBI
dW50IDxvbGl2ZXJAbmVyZ2V0LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTY2LDE1ICs2
NiwyMyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJv
eHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRWxl
bWVudD47CiAgICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0
cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3Qg
U1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlS
ZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUxpZ2h0RWxlbWVudCwgU1ZH
RWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAK
ICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07
CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fYXppbXV0aDsKICAgICBTVkdBbmltYXRlZE51
bWJlckF0dHJpYnV0ZSBtX2VsZXZhdGlvbjsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0
ZSBtX3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgKaW5kZXgg
OWM1NTRlZTExMjU4NjNmNzQ1Y2MxYTk0YjBhMzIxNGQ2MjUwYzA1Yi4uNzI2ZmI2MjM2MTI2ODE5
YTQxZTQ0MTM4NmVlYmI1N2VjOTBkY2NlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTM5LDE2ICszOSwyNCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFTWVy
Z2VOb2RlRWxlbWVudCwgU1ZHRWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBp
c0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0
dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7
IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBT
VkdFbGVtZW50PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lz
dHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBz
dGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAKICAg
ICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJv
eHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCmluZGV4IGFmNmYxNWU4
ZjczMTk1YTA3OGM0ZGUxMWYzMWRlOWI1ZjQ4NGFlOWMuLjBiNmJhMmMyMTdhZWQ0MzcxZWE0Y2Iw
ZGFmMDg5NGY5NTMxZTAyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaApAQCAtNzgsMTAgKzc4LDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRy
aWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVNb3JwaG9s
b2d5RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBz
dGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJl
Z2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnko
KTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmli
dXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3du
ZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQor
CisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxT
VkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAt
OTIsNiArOTksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJh
ZGl1c1lJZGVudGlmaWVyKCk7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRl
T3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwog
ICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8TW9ycGhvbG9neU9wZXJhdG9yVHlw
ZT4gbV9zdmdPcGVyYXRvciB7IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSB9OwogICAgIFNW
R0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fcmFkaXVzWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuaAppbmRleCBiZGIwZTRmMGI4ZmZhODk5NTJkYjkzZDA3ZjRkYjliMGFh
ZjIzYmZlLi4xNDM2YmFlOGQ3YWI0ZDAwOGM0NzkyZmQwM2JmN2ZkNThkYTRlN2RiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCkBAIC00NCwxNiArNDQsMjQgQEAgcHJp
dmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25l
clByb3h5SW1wbDxTVkdGRU9mZnNldEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJl
Z2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJp
YnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3Bl
cnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0K
KworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRy
aWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9p
bjE7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9keDsKICAgICBTVkdBbmltYXRl
ZE51bWJlckF0dHJpYnV0ZSBtX2R5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggN2NlZGFmODU5OWI0MTliZDRkODFiYjQ3ZDU3
NGIxNWE3MjhjYWVjYS4uOTQ4NzdiNDZmN2E2Mzc5OTMwMWMxYjc5NzQ4ZGNlMjcwZDg3MWNhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5oCkBAIC01NCwxMCArNTQsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93
bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIHN0
YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVn
aXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgp
OyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
CkBAIC02OCw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CiAKICAgICBBdHRyaWJ1dGVPd25lclBy
b3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0
cmlidXRlIG1faW4xOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3BlY3VsYXJD
b25zdGFudCB7IDEgfTsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3NwZWN1bGFy
RXhwb25lbnQgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAppbmRleCA3
NTRkZjQwOTkxZTg1Yzk4N2VhYThkNWNjZjI4OTUwMGVkMDljNmQxLi45YTAzM2QyMGRlYTY1ZTRj
N2ExOTQ0NjYxZGE5NWFhMDkzMDc4MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmgKQEAgLTM4LDE2ICszOCwyNCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRl
T3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFVGlsZUVsZW1lbnQs
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJp
YnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsg
cmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBz
dGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQog
ICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVUaWxlRWxl
bWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBT
VkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwor
ICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCmluZGV4IDI3MDcxYzA4ZDM1MDJkMTc4YmVkZjRi
NGQzNjRkYmQ5ZDRiOThjNTguLjdkN2ZmNDIyZGMwODM0NmZiOWM3Y2QwNzAzYWI3NjI1NjhlOWEz
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnNldEZpbHRl
ckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29ucwogCiB2b2lkIFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFBy
b3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKGlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmgKaW5kZXggMzZiNDcyYjJhOGI1MzZjYTBlYzMyYTI4YzYwNmU0MGI3MjAw
NjdlYi4uNGZhMjNhZDE5NTlhYTg2NTk1MjJkZTAwOTkyZmViOTMxMDRlZWNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCkBAIC0xMTYsMTMgKzExNiwx
NyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6
OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0
ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0K
ICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLSAgICAKKyAgICBjb25zdCBT
VkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKICAgICB1c2luZyBQcm9wZXJ0eVJl
Z2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQs
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJv
cGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYg
YXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3du
ZXJQcm94eTsgfQorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKaW5k
ZXggY2VkYTlmNWQ1YzAwOGY0NGM5NjM2NTU5ZDI4ODIxZmE4MDNiMzVhMy4uMzMwZGIyODMyMWM3
YzU4MTk4NDc2NzlhMThiZTcxNjAyNWRlNTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5oCkBAIC01NiwxMSArNTYsMTkgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGaWx0ZXJFbGVt
ZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZl
cmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclBy
b3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0gICAgc3RhdGljIGJvb2wg
aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVz
KCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclBy
b3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAg
ICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNW
R1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisg
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7IH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKQEAgLTczLDYgKzgxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQ
cm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkg
eyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZT4gbV9maWx0ZXJVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRf
VFlQRV9PQkpFQ1RCT1VORElOR0JPWCB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9wcmltaXRpdmVVbml0cyB7IFNWR1Vu
aXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmgKaW5kZXggZTA5NDZmNTUyZWE1NDdlYmY4NjYwM2ZiNmY2YjdhNTNhYjU5YjE3Ni4u
YWQyMWIzMjNhYzg1MjU2YTgxODcyZmNhZjA4ZDVjYjRlN2JhYzNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHRWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdFbGVtZW50PjsKKwogICAgIGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBt
X3kuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLmN1cnJlbnRWYWx1ZShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC03MSw3ICs3MywxMiBAQCBwcm90ZWN0ZWQ6CiAK
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpOyB9CisgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CiAKICAgICBib29sIGlz
RmlsdGVyRWZmZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC03OSwx
MCArODYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
b25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGNvbnN0
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KLQogICAgIEF0dHJpYnV0ZU93
bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKLQogICAgIC8vIFNwZWM6
IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3
aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgU1ZHQW5pbWF0ZWRMZW5n
dGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoLCAiMCUiIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRml0VG9WaWV3Qm94LmgKaW5kZXggZjUxYTdlOWNhZGFjMDU2YzU4MjA0ZTVlMTNjNzBlN2Y3
ZDUxODdmZi4uNWFiYzVhMGU5YTNlZjFjNjAxMzlhZjU3MmYzMWIxNGExMWEwMDdjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaApAQCAtNDAsNiArNDAsOCBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0ZpdFRvVmlld0JveD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJp
YnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRml0VG9WaWV3Qm94PjsKKwogICAgIGNv
bnN0IEZsb2F0UmVjdCYgdmlld0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0JveC5jdXJyZW50
VmFsdWUobV9hdHRyaWJ1dGVPd25lclByb3h5KTsgfQogICAgIGNvbnN0IFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fcHJl
c2VydmVBc3BlY3RSYXRpby5jdXJyZW50VmFsdWUobV9hdHRyaWJ1dGVPd25lclByb3h5KTsgfQog
CkBAIC02MSw3ICs2MywxMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRml0VG9WaWV3
Qm94KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRlZFByb3BlcnR5U3RhdGUgPSBQ
cm9wZXJ0eUlzUmVhZFdyaXRlKTsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7CisgICAgfQogCiAgICAgdm9pZCByZXNldCgpOwogICAgIGJvb2wgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAppbmRleCA4MmE0MzJhYmYyZjVjZTY5OGY5NzIx
OGMxNmNjNWZmMzA1NzU5NjdjLi43NTIxY2NhODBiZGQ5YWMxNWM0Yzg4MjgwNGY3NmU1MmQwYTE5
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaApAQCAtMjQsNyArMjQsNiBAQAog
CiAjaWYgRU5BQkxFKFNWR19GT05UUykKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5o
IgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCkBAIC01Niw3ICs1
NSwxMSBAQCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRy
aWJ1dGVPd25lclByb3h5SW1wbDxTVkdGb250RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYg
YXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3du
ZXJQcm94eTsgfQogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeTxTVkdGb250RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAg
QXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAg
IFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmgKaW5kZXggMzA2ZTExNzBlZjkzNzhhNzc1YjBkZTQ1YjRiNTI0NzA5ZWM5MDgw
NS4uNzk5ZmM4MjNhYTkzMTU0NTc5MDFkZWI2ZDM1YzJiYTc1MzhiNTgzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTE5LDcgKzE5LDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKQEAgLTQ4LDEwICs0
NywxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIHN0YXRpYyBBdHRy
aWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0K
ICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2lu
ZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNjMs
NiArNjksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9h
dHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUg
bV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUg
bV95IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
IG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKaW5k
ZXggYmEzYWNjM2M2MmUyYWEyOTM5NDdmNmVjYWQyOTE5NzJkN2ZjYTg1Ny4uNTBlNDIyNzZiNmQ4
ZTRjYTc5MmVmM2UwY2RjOTlmNjAwOWZhMGI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgK
QEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRl
ZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAj
aW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAgLTM5LDggKzM4LDExIEBAIHByaXZh
dGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIHVz
aW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdH
RWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
PjsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR0Vs
ZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47
CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5h
bDsKIApAQCAtNDgsNiArNTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaAppbmRleCA4MjRmZWZjNTBmYjI1
NzJjMWVmYmI5OWRhZjJjZGVhN2JjMjBmMDFmLi4zZDYyNTAxOTBhYjVlNjFiYTAyYzdlMzkwZGY0
ZjZmNzQ5YjBmMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5oCkBA
IC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0g
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQ+OwogICAgIHN0YXRpYyBhdXRvJiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR2VvbWV0cnlF
bGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQ+OworCiAgICAgYXV0byBwYXRoTGVuZ3RoQW5pbWF0
ZWQoKSB7IHJldHVybiBtX3BhdGhMZW5ndGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CiAKIHByb3RlY3RlZDoKQEAgLTU1LDEwICs1NywxNCBAQCBwcm90ZWN0ZWQ6
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0dlb21ldHJ5RWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBh
dHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CiAKKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1
dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclBy
b3h5OyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIEF0
dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBT
VkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3BhdGhMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2x5cGhSZWZFbGVtZW50LmgKaW5kZXggODgxMGQ1YjA5MjYyMGRjZGQzNGE5NzBjZDk1NGIx
ZjFhYTIzNjFmNy4uZmFjODAyOTM3NmI1YjRmOGI5MmFhMjk3OGM2MzhlYzQ3YjI4MmNjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaApAQCAtNDgsOCArNDgsMTEgQEAg
cHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbDxTVkdHbHlwaFJlZkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZT47CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQ
cm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQotICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIGZpbmFsOwogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTxTVkdHbHlwaFJlZkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGZsb2F0IG1feCB7IDAgfTsKQEAgLTU3LDYgKzYw
LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2R4IHsgMCB9OwogICAgIGZsb2F0IG1fZHkgeyAw
IH07CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhp
cyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAppbmRleCBiNGMz
OTJiMzU0OTc5NjA0Yzk1MWU2ZTc5ZTBjZjc0Y2Q4MWQ2ODQ3Li45NGU1YjE0NjM4ODU4NjFiYjI4
YTc3YjcyNjdkNTUxOWM4OTEyMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5oCkBAIC0yMiw3ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdyYWRp
ZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
IgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTg4LDYgKzg3LDggQEAgcHVibGljOgogICAg
IHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxT
VkdHcmFkaWVudEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR3JhZGllbnRFbGVtZW50LCBTVkdF
bGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+Owor
CiAgICAgU1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2QoKSBjb25zdCB7IHJldHVybiBt
X3NwcmVhZE1ldGhvZC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAg
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JhZGllbnRVbml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIGdyYWRpZW50VHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQpAQCAtOTksNyArMTAwLDExIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0K
KwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuaAppbmRleCAwNmVlNGIzMDc5MmI0ZmY5NjFiNjlmZjM5NjY0N2FjMzU3MmI4MmNj
Li4wMDk4YTgyZjZhZWQxMmJjYjk4ZTM4MGY3MDRjODUwYTBkN2I1YWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKIAog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1Rlc3RzPjsKICAgICBzdGF0aWMg
YXV0byYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9
IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0VsZW1lbnQs
IFNWR1Rlc3RzPjsKIAogICAgIGNvbnN0IGF1dG8mIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNmb3JtLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAg
YXV0byB0cmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQpAQCAtODEsOSArODMsMTIgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQotCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIC8v
IFVzZWQgYnkgPGFuaW1hdGVNb3Rpb24+CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFmZmluZVRyYW5z
Zm9ybT4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmgKaW5kZXggNTIzYmU2MDEyMTc1MWU5NmE5ZWI2OTQ0MGE3M2EzYzBmOTBhMjA2OS4uMTcy
YmQ3MWIwYjExZTRmMzJhY2FmZDQ3OGNlOTMwYjk5MzRhZWFiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuaApAQCAtNTUsMTAgKzU1LDE3IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
dXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNW
R0ltYWdlRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5
OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9
CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdB
dHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lz
dHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ltYWdlRWxlbWVudCwgU1ZHR3JhcGhp
Y3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+
OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNzQsNiArODEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuaAppbmRleCBmMWViYzRlY2JmNzVhNDUzMTNkNDM2ZGU1ZjhhODM5ZWM3
YjY5YWYxLi44MDU0ZjMwNmM4MzYyNDc2N2VkY2JjOTEwNTcxNzAyZWFkYTRkNjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaApAQCAtNDgsMTAgKzQ4LDE3IEBAIHByaXZhdGU6CiAK
ICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUlt
cGw8U1ZHTGluZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJl
Z2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJp
YnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTGluZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGZpbmFsOwogCkBAIC02MCw2ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlIG1feDEgeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3kxIHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1feDIgeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAppbmRleCA5ZjY3MGM5ZGFhNDgyODE5OWExZjUyYjM0
YTJmNzk2ZGU2YWUxMjc2Li4yMjQ4ZDVjZGM0ZDZhMDE5ODEzYWM3ZDZlODBhZWIzNGVkOGNlNzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCkBA
IC01MSwxMCArNTEsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJv
eHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFNWR0dyYWRpZW50RWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0
dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdH
cmFkaWVudEVsZW1lbnQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwor
ICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApAQCAtNjMsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZSBtX3gxIHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV95MSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3gyIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuaAppbmRleCAzOWM5ZWEwNDUxODIwOGVkOTIzNGEwMjRlZTA3ODQwNzJjMzA4
Y2VkLi42ZWM4YmQ4YjMwOTUzN2Y0MzdhOGJkMjYwYmZkZGFmN2NlNjVkOTc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCkBAIC0yMCw3ICsyMCw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDYsOCArNDUsMTEgQEAgcHJpdmF0ZToKICAgICBT
VkdNUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1
c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZH
TVBhdGhFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBT
VkdVUklSZWZlcmVuY2U+OwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0
cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQ
cm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdNUGF0aEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNjIsNiArNjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5UGFyZW50T2ZQYXRoQ2hhbmdlKENvbnRhaW5lck5vZGUqKTsKIAog
ICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsK
KyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
aAppbmRleCAzN2MxODBhMDFmYTRkMjNiOGQ0MmY1ZGJhNzVhMjk1ZTI2NTU1Njg0Li5iODllMDlj
MzYyZmQwNDc4Y2Q3ZmI3MWJkODI2YWNkYzJlNTVlYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
YXJrZXJFbGVtZW50LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIgpA
QCAtNzksMTEgKzc4LDE4IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclBy
b3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHTWFya2VyRWxlbWVudCwgU1ZHRWxl
bWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQotICAgIHN0YXRpYyBib29sIGlzQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAg
Y29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJv
cGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdNYXJrZXJFbGVtZW50
LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdC
b3g+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBi
b29sIGlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
IHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwpAQCAtMTI2LDYgKzEzMiw3IEBAIHByaXZh
dGU6CiAKICAgICB1c2luZyBTVkdBbmltYXRlZEN1c3RvbUFuZ2xlQXR0cmlidXRlQWNjZXNzb3Ig
PSBTVkdBbmltYXRlZFBhaXJBdHRyaWJ1dGVBY2Nlc3NvcjxTVkdNYXJrZXJFbGVtZW50LCBTVkdB
bmltYXRlZEFuZ2xlQXR0cmlidXRlLCBBbmltYXRlZEFuZ2xlLCBTVkdBbmltYXRlZEN1c3RvbU9y
aWVudFR5cGVBdHRyaWJ1dGUsIEFuaW1hdGVkRW51bWVyYXRpb24+OwogCisgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIG1fcmVmWCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fcmVmWSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZSBtX21hcmtlcldpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMyIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKaW5kZXggMzBiZTc3ZTgwYWU0OGEwYWJm
YmMyZjRjZGM2MzIzYTBlYmRkOGFiOC4uOWI5M2RkNGM0YzZhZTYwM2QxOWQ5NjAxODljMmQyOTUz
MmRjMjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKQEAgLTIwLDcgKzIwLDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRM
ZW5ndGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCkBAIC01NSwxMSArNTQsMTggQEAgcHJp
dmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25l
clByb3h5SW1wbDxTVkdNYXNrRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgU1ZHVGVzdHM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpB
dHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBB
dHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBh
dHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25l
clByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25l
clJlZ2lzdHJ5PFNWR01hc2tFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBTVkdUZXN0cz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsg
fQorCisgICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CkBAIC03MSw2ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93
bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5n
dGhNb2RlV2lkdGgsICItMTAlIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
eSB7IExlbmd0aE1vZGVIZWlnaHQsICItMTAlIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuaAppbmRleCA5ODFkZTg2NTFjMWU2YzZjMzY5NTg2MTQxN2JkNWJlNmZk
YzlkZjY3Li5mODAwMDdlMjgwNTI4ZTk4OGM4ZTc1MjYwYjcyOGQxZjFiNGIxYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaApAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJQYXRoLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGgu
aCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0xMTEsMTAg
KzExMCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1BhdGhFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1l
bnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIHN0YXRpYyBhdXRvJiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHUGF0aEVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorICAg
IAorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5h
bDsKIApAQCAtMTU2LDYgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgU1ZHQW5pbWF0ZWRD
dXN0b21QYXRoU2VnTGlzdEF0dHJpYnV0ZUFjY2Vzc29yID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGVB
Y2Nlc3NvcjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5pbWF0ZWRDdXN0b21QYXRoU2VnTGlzdEF0dHJp
YnV0ZSwgQW5pbWF0ZWRQYXRoPjsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1
dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRDdXN0b21QYXRoU2VnTGlzdEF0dHJp
YnV0ZSBtX3BhdGhTZWdMaXN0IHsgKnRoaXMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmgKaW5kZXggMDNhNjA2ZjBhMDU4MjIyMmYyYWY5MTA3NTQwODEwMTA4ZDk2
MzdhOC4uMTlkOWI5MWQ3NWYxOGMwZjE3YThiYTRiY2U2ZDlmYjhmYjdlMGIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCIKQEAgLTY5LDExICs2OCwx
OCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHlJbXBsPFNWR1BhdHRlcm5FbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3gsIFNWR1Rlc3RzLCBTVkdVUklS
ZWZlcmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdp
c3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0gICAgc3RhdGljIGJv
b2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBTVkdGaXRUb1ZpZXdCb3gsIFNWR1Rlc3RzLCBTVkdVUklSZWZlcmVuY2U+OworICAgIGNvbnN0
IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IGZpbmFsOwpAQCAtODUsNiArOTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEF0dHJpYnV0
ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BvbHlFbGVtZW50LmgKaW5kZXggMDMyMGMwNDc4MDhjYmEzM2Y4Y2NlMzRjZjdlNDBkMzNk
NjQ3YmJhMi4uNWM0OWY1NjQ5NGE4OWIzMzZhMmI5ODhmNmMxMDQwZGYyNmIzYjZmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKQEAgLTQ0LDEwICs0NCwxNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbDxTVkdQb2x5RWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6
QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQog
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdQb2x5RWxlbWVudCwgU1ZHR2VvbWV0cnlF
bGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9w
ZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
cm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0K
KwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOyAKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC01NSw2ICs2Miw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0
aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwogICAgIFNWR0FuaW1hdGVkUG9pbnRMaXN0QXR0cmlidXRlIG1fcG9pbnRzOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCmluZGV4IGY5OTFm
M2QwMmQ5NWI2YjdlMjg4ZWQwYjYzZDdjZTA5ZWI5MjY2ZTAuLmI3MmM3MTU5Nzk3ZjNiZDBhNTk4
NjZkYWFhMjJmZTFkYjFhMmFkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmgKQEAgLTU2LDggKzU2LDExIEBAIHByaXZhdGU6CiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1JhZGlh
bEdyYWRpZW50RWxlbWVudCwgU1ZHR3JhZGllbnRFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmli
dXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRl
T3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlT3duZXJQcm94eTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdH
cmFkaWVudEVsZW1lbnQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAgLTY2LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEF0
dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5p
bWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9jeCB7IExlbmd0aE1vZGVXaWR0aCwgIjUwJSIgfTsKICAg
ICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX2N5IHsgTGVuZ3RoTW9kZUhlaWdodCwgIjUw
JSIgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3IgeyBMZW5ndGhNb2RlT3Ro
ZXIsICI1MCUiIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCmluZGV4IGU0Y2RhYjFh
ZmZhNTJjOWY1NDQ0YjM1YjMzN2NkMzZlMDZlMDFmMTUuLjU4Y2UxZDkwMzViNWRlYmZjYWRkZjRi
OTUzY2MyNzc1ODlmMzU1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCkBAIC0y
MSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29s
ZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR2VvbWV0cnlFbGVtZW50Lmgi
CkBAIC01MywxMCArNTIsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVy
UHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdSZWN0RWxlbWVudCwgU1ZHR2Vv
bWV0cnlFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBzdGF0aWMg
YXV0byYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR1JlY3RFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1lbnQsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkm
IHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0
cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBmaW5hbDsKIApAQCAtNjYsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
eCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
eSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaApp
bmRleCA5YmNmMjg2ODU2NDhiNTM4MTZiMjI1N2NkZGMwNDJmNGM3MjBhODcxLi4xOWRjNWUwMDhj
NDk5YzMxMDU1NWZmMjNlMmY1ZDUzYzQxMTU0ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRSZWN0LmgiCkBAIC0xMzUsMTIgKzEzNCwxOSBAQCBw
cml2YXRlOgogICAgIFNWR1NWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAgICAgdmlydHVhbCB+U1ZHU1ZHRWxlbWVudCgpOwogCi0gICAgdXNpbmcgQXR0cmlidXRl
T3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1NWR0VsZW1lbnQsIFNW
R0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9W
aWV3Qm94LCBTVkdab29tQW5kUGFuPjsKKyAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0g
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHU1ZHRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OwogICAg
IHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRl
UmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3Ry
eSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRy
aWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdTVkdFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdp
c3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlS
ZWdpc3RyeTsgfQorICAgIAorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRy
aWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTE3MCw2ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2N1cnJlbnRWaWV3RnJhZ21lbnRJZGVudGlmaWVyOwogCiAgICAgQXR0cmlidXRlT3duZXJQ
cm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0fTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSJfcyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKaW5kZXggZjhjZWQyMmEzMjcyODFiMDExODAzNWE5Yjcx
ODA3ZjE1YTgxNWQyOC4uNjc2MGNjZDMxOTJmNzk3ZWFiZWU0ZmVmMDUwNWY3OTlhNGRjMDBmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDMsOCArNDIsMTEgQEAgcHJp
dmF0ZToKICAgICBTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCk7CiAKICAg
ICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8
U1ZHU2NyaXB0RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgU1ZHVVJJUmVmZXJlbmNlPjsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkm
IGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93
bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93
bmVyUmVnaXN0cnk8U1ZHU2NyaXB0RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJl
Z2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0
eVJlZ2lzdHJ5OyB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC04NSw2ICs4Nyw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25l
clByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgVGltZXIgbV9zdmdMb2FkRXZlbnRUaW1lcjsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKaW5kZXggZDg0M2I3NmFmZWRhM2ZhNTA3MDNmYjE3Zjc2
ODZhNjJjMDEwYTc5Zi4uZmQzOTlhYmFkZTI4OWU2NWY1NzZiMDljYzZiNTEyN2Y5MGNlZjAzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKQEAgLTQxLDEwICs0MSwxNyBAQCBwcml2
YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHlJbXBsPFNWR1N0b3BFbGVtZW50LCBTVkdFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmli
dXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0
YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAg
ICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdTdG9wRWxlbWVu
dCwgU1ZHRWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisg
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwog
CkBAIC01NCw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1f
b2Zmc2V0IHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
cmluZ0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgKaW5kZXggN2Zl
N2YwMGZjNTJhNThiY2QwMDFmMmZhYmM1YjJmYTM4YTM3ZWU4NS4uZWQ3ZWE0NDk2ODVjMTExMzkw
OTNmNThjNzNkNWJlOWZiMDI1YzE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0cmluZ0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDMzICsyNSw2MyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIK
LSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAiU1ZHUHJpbWl0aXZlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNWR1N0cmluZ0xpc3QgZmluYWwgOiBwdWJsaWMgU1ZHU3RhdGljTGlz
dFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdMaXN0VmFsdWVzPiB7CitjbGFzcyBTVkdTdHJpbmdM
aXN0IGZpbmFsIDogcHVibGljIFNWR1ByaW1pdGl2ZUxpc3Q8U3RyaW5nPiB7CisgICAgdXNpbmcg
QmFzZSA9IFNWR1ByaW1pdGl2ZUxpc3Q8U3RyaW5nPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOwor
ICAgIHVzaW5nIEJhc2U6Om1faXRlbXM7CisKIHB1YmxpYzoKLSAgICB1c2luZyBBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3Ry
aW5nTGlzdFZhbHVlcz47Ci0gICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKKyAgICBzdGF0aWMgUmVmPFNWR1N0
cmluZ0xpc3Q+IGNyZWF0ZShTVkdQcm9wZXJ0eU93bmVyKiBvd25lcikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1N0cmluZ0xpc3Qob3duZXIpKTsKKyAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xpc3Q+IGNyZWF0ZShTVkdFbGVtZW50JiBjb250ZXh0RWxl
bWVudCwgU1ZHU3RyaW5nTGlzdFZhbHVlcyYgdmFsdWVzKQorICAgIHZvaWQgcmVzZXQoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdT
dHJpbmdMaXN0KCZjb250ZXh0RWxlbWVudCwgdmFsdWVzKSk7CisgICAgICAgIHBhcnNlKHN0cmlu
ZywgJyAnKTsKKworICAgICAgICAvLyBBZGQgZW1wdHkgc3RyaW5nLCBpZiBsaXN0IGlzIGVtcHR5
LgorICAgICAgICBpZiAobV9pdGVtcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2l0ZW1zLmFw
cGVuZChlbXB0eVN0cmluZygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xp
c3Q+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmLCBTVkdQcm9wZXJ0eVJvbGUs
IFNWR1N0cmluZ0xpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYpCisgICAgYm9v
bCBwYXJzZShjb25zdCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKICAgICB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGlzLiBJdCdzIG9ubHkgbmVlZGVk
IHRvIGtlZXAgV2luZG93cyBjb21waWxpbmcuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdTdHJpbmdMaXN0KG51bGxwdHIsIHZh
bHVlcykpOworICAgICAgICBjbGVhckl0ZW1zKCk7CisKKyAgICAgICAgYXV0byB1cGNvbnZlcnRl
ZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGRhdGEpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwor
ICAgICAgICBjb25zdCBVQ2hhciogcHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgICAg
ICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgZGF0YS5sZW5ndGgoKTsKKyAgICAgICAgd2hpbGUg
KHB0ciA8IGVuZCkgeworICAgICAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gcHRyOworICAg
ICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAqcHRyICE9IGRlbGltaXRlciAmJiAhaXNTVkdT
cGFjZSgqcHRyKSkKKyAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIGlmIChwdHIg
PT0gc3RhcnQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtX2l0ZW1zLmFw
cGVuZChTdHJpbmcoc3RhcnQsIHB0ciAtIHN0YXJ0KSk7CisgICAgICAgICAgICBza2lwT3B0aW9u
YWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIsIGVuZCwgZGVsaW1pdGVyKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBwdHIgPT0gZW5kOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBTVkdT
dHJpbmdMaXN0KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBTVkdTdHJpbmdMaXN0VmFsdWVz
JiB2YWx1ZXMpCi0gICAgICAgIDogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJp
bmdMaXN0VmFsdWVzPihjb250ZXh0RWxlbWVudCwgdmFsdWVzKQorICAgIFN0cmluZyB2YWx1ZUFz
U3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKworICAgICAgICBmb3IgKGF1dG8gc3RyaW5nIDogbV9pdGVtcykgeworICAgICAgICAg
ICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKKworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyaW5nKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzZmY4OThhOTEyYjYyMDE4MGVkMzM2ZDEzODdkZWFiYjUzN2Q5NDc4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIKLQotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNs
dWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVz
Ojpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpCi17Ci0gICAgY29udGV4
dEVsZW1lbnQuaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKLSAgICBjb250ZXh0RWxlbWVudC5z
dmdBdHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlTmFtZSk7Ci19Ci0KLXZvaWQgU1ZHU3RyaW5n
TGlzdFZhbHVlczo6cmVzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgcGFyc2Uoc3Ry
aW5nLCAnICcpOwotCi0gICAgLy8gQWRkIGVtcHR5IHN0cmluZywgaWYgbGlzdCBpcyBlbXB0eS4K
LSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICBhcHBlbmQoZW1wdHlTdHJpbmcoKSk7Ci19Ci0K
LXZvaWQgU1ZHU3RyaW5nTGlzdFZhbHVlczo6cGFyc2UoY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hh
ciBkZWxpbWl0ZXIpCi17Ci0gICAgLy8gVE9ETyA6IG1vcmUgZXJyb3IgY2hlY2tpbmcvcmVwb3J0
aW5nCi0gICAgY2xlYXIoKTsKLQotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3Ry
aW5nVmlldyhkYXRhKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciog
cHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIg
KyBkYXRhLmxlbmd0aCgpOwotICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKLSAgICAgICAgY29uc3Qg
VUNoYXIqIHN0YXJ0ID0gcHRyOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICpwdHIgIT0g
ZGVsaW1pdGVyICYmICFpc1NWR1NwYWNlKCpwdHIpKQotICAgICAgICAgICAgcHRyKys7Ci0gICAg
ICAgIGlmIChwdHIgPT0gc3RhcnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgYXBwZW5k
KFN0cmluZyhzdGFydCwgcHRyIC0gc3RhcnQpKTsKLSAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzT3JEZWxpbWl0ZXIocHRyLCBlbmQsIGRlbGltaXRlcik7Ci0gICAgfQotfQotCi1TdHJpbmcg
U1ZHU3RyaW5nTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChpID4g
MCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoYXQoaSkpOwotICAgIH0KLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmZjlhMjc0MjIxOTAwMTBhMGNjYWJkZWEzNTRhMzM1ODZjZTA5
MDU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKLSNpbmNsdWRlICJTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5o
IgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNW
R1N0cmluZ0xpc3Q7Ci1jbGFzcyBTVkdTdHJpbmdMaXN0VmFsdWVzOwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiAKLWNsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKLQotdXNpbmcgU1ZHU3RyaW5nTGlz
dFZhbHVlc0F0dHJpYnV0ZSA9IFNWR1Byb3BlcnR5QXR0cmlidXRlPFNWR1N0cmluZ0xpc3RWYWx1
ZXM+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci11c2luZyBTVkdTdHJpbmdMaXN0
VmFsdWVzQXR0cmlidXRlQWNjZXNzb3IgPSBTVkdQcm9wZXJ0eUF0dHJpYnV0ZUFjY2Vzc29yPE93
bmVyVHlwZSwgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZT47Ci0KLWNsYXNzIFNWR1N0cmlu
Z0xpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFN0cmluZz4gewotcHVibGljOgotICAg
IFNWR1N0cmluZ0xpc3RWYWx1ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
LSAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdm9pZCByZXNldChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHBhcnNlKGNvbnN0IFN0
cmluZyYsIFVDaGFyIGRlbGltaXRlciA9ICcsJyk7Ci0KLSAgICAvLyBPbmx5IHVzZWQgYnkgU1ZH
U3RyaW5nTGlzdC4KLSAgICB2b2lkIGNvbW1pdENoYW5nZShTVkdFbGVtZW50JiBjb250ZXh0RWxl
bWVudCk7Ci0KLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwotCi1wcml2YXRlOgot
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRlTmFtZTsKLX07Ci0KLXRlbXBsYXRl
PD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1N0cmluZ0xpc3RWYWx1ZXM+IHsKLSAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1N0cmluZ0xpc3RWYWx1ZXMmIGxpc3QpIHsg
cmV0dXJuIGxpc3QudmFsdWVBc1N0cmluZygpOyB9Ci0KLSAgICB1c2luZyBMaXN0SXRlbVR5cGUg
PSBTdHJpbmc7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2Zm
PFN0cmluZz47Ci0gICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR1N0cmluZ0xpc3Q7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVs
ZW1lbnQuaAppbmRleCAxZTQ0NjY3ZGI0ZTJjMGY1NDRkZTJlYjMxODEzYTk4ZDE4ZTJmZmU1Li5j
M2QzMzJjZDg1ZWY0MThlOWY4YmY2MjMyMTAzODc4YjM4ODQ0MDI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTd2l0Y2hFbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAg
LTM4LDEyICszNywxNiBAQCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkg
PSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdTd2l0Y2hFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIGNvbnN0IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHU3dpdGNoRWxlbWVudCwgU1ZHR3JhcGhp
Y3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IGZpbmFsOwogICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKaW5kZXggZDc2ODNlMTkyMzg1ZmVlODQ4NmYw
OTliZGE2Nzc1MGIyNTA5ZWYyZC4uZTFmMjhmMTRjODhhNDY1NWVjNGM0ZmFmZTcyYjRiMWI0NTg1
OTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtNDEsNiArNDAsOSBA
QCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbDxTVkdTeW1ib2xFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OwogICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHU3ltYm9sRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKKyAgICBjb25zdCBT
VkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CkBAIC00OCw2ICs1MCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7
ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuaAppbmRleCBiYTE3Y2NhYWU3ZTAxYWFlMDIwYTczZDIxZDJiYzg0YTRhZDcxYjJiLi4w
ZWIzZDZhMDZiNWYyZTJkNzVmYTk4Y2E1MmU2ODY3YWI3MjcwNDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuaApAQCAtNDAsOCArNDAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IH5TVkdUUmVmRWxlbWVudCgpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1RSZWZFbGVtZW50LCBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LCBTVkdVUklSZWZlcmVuY2U+OwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3du
ZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0
cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1By
b3BlcnR5T3duZXJSZWdpc3RyeTxTVkdUUmVmRWxlbWVudCwgU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudCwgU1ZHVVJJUmVmZXJlbmNlPjsKKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAg
LTU5LDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkg
b3ZlcnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94
eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAq
dGhpcyB9OwogICAgIFJlZjxTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcj4gbV90YXJnZXRMaXN0
ZW5lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCmluZGV4IDcxMzRjZTdiOGU2ZWZjMTZl
OWJkZjQ5ZjFlNGNkZTQyMTRlMTFjNDEuLmY0NGY5MGUzZmYxOTc4MTM0M2E2M2U1OGUzOTdlY2M4
OWU2MjYyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcApAQCAtMTA5LDE4ICsxMDksMTYgQEAg
c3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBz
dXBwb3J0ZWRTVkdGZWF0dXJlcygpCiAKIFNWR1Rlc3RzOjpTVkdUZXN0cyhTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCkKICAgICA6IG1fY29udGV4dEVsZW1lbnQoKmNvbnRleHRFbGVtZW50KQor
ICAgICwgbV9yZXF1aXJlZEZlYXR1cmVzKFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShjb250ZXh0RWxl
bWVudCkpCisgICAgLCBtX3JlcXVpcmVkRXh0ZW5zaW9ucyhTVkdTdHJpbmdMaXN0OjpjcmVhdGUo
Y29udGV4dEVsZW1lbnQpKQorICAgICwgbV9zeXN0ZW1MYW5ndWFnZShTVkdTdHJpbmdMaXN0Ojpj
cmVhdGUoY29udGV4dEVsZW1lbnQpKQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotfQot
Ci12b2lkIFNWR1Rlc3RzOjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lz
dHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjpyZXF1aXJlZEZlYXR1cmVzQXR0ciwgJlNWR1Rlc3RzOjptX3JlcXVpcmVkRmVhdHVyZXM+KCk7
Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5z
aW9uc0F0dHIsICZTVkdUZXN0czo6bV9yZXF1aXJlZEV4dGVuc2lvbnM+KCk7Ci0gICAgcmVnaXN0
cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0ciwgJlNWR1Rl
c3RzOjptX3N5c3RlbUxhbmd1YWdlPigpOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0
ciwgJlNWR1Rlc3RzOjptX3JlcXVpcmVkRmVhdHVyZXM+KCk7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIs
ICZTVkdUZXN0czo6bV9yZXF1aXJlZEV4dGVuc2lvbnM+KCk7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0ciwgJlNW
R1Rlc3RzOjptX3N5c3RlbUxhbmd1YWdlPigpOworICAgIH0pOwogfQogCiBTVkdUZXN0czo6QXR0
cmlidXRlUmVnaXN0cnkmIFNWR1Rlc3RzOjphdHRyaWJ1dGVSZWdpc3RyeSgpCkBAIC0xMzAsNyAr
MTI4LDcgQEAgU1ZHVGVzdHM6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBTVkdUZXN0czo6YXR0cmlidXRl
UmVnaXN0cnkoKQogCiBib29sIFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CiB9CiAKIGJvb2wgU1ZH
VGVzdHM6Omhhc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTE0NSwxNSAr
MTQzLDE1IEBAIGJvb2wgU1ZHVGVzdHM6Omhhc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbikKIAogYm9vbCBTVkdUZXN0czo6aXNWYWxpZCgpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRv
JiBmZWF0dXJlIDogbV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlKCkpIHsKKyAgICBmb3IgKGF1dG8m
IGZlYXR1cmUgOiBtX3JlcXVpcmVkRmVhdHVyZXMtPml0ZW1zKCkpIHsKICAgICAgICAgaWYgKGZl
YXR1cmUuaXNFbXB0eSgpIHx8ICFzdXBwb3J0ZWRTVkdGZWF0dXJlcygpLmNvbnRhaW5zKGZlYXR1
cmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBmb3IgKGF1dG8mIGxh
bmd1YWdlIDogbV9zeXN0ZW1MYW5ndWFnZS52YWx1ZSgpKSB7CisgICAgZm9yIChhdXRvJiBsYW5n
dWFnZSA6IG1fc3lzdGVtTGFuZ3VhZ2UtPml0ZW1zKCkpIHsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IGRlZmF1bHRMYW5ndWFnZSgpLnN1YnN0cmluZygwLCAyKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3JlcXVpcmVkRXh0
ZW5zaW9ucy52YWx1ZSgpKSB7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3JlcXVpcmVk
RXh0ZW5zaW9ucy0+aXRlbXMoKSkgewogICAgICAgICBpZiAoIWhhc0V4dGVuc2lvbihleHRlbnNp
b24pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE2MywxMSArMTYxLDEx
IEBAIGJvb2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogdm9pZCBTVkdUZXN0czo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSByZXF1aXJlZEZlYXR1
cmVzQXR0cikKLSAgICAgICAgbV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlKCkucmVzZXQodmFsdWUp
OworICAgICAgICBtX3JlcXVpcmVkRmVhdHVyZXMtPnJlc2V0KHZhbHVlKTsKICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSByZXF1aXJlZEV4dGVuc2lvbnNBdHRyKQotICAgICAgICBtX3JlcXVpcmVk
RXh0ZW5zaW9ucy52YWx1ZSgpLnJlc2V0KHZhbHVlKTsKKyAgICAgICAgbV9yZXF1aXJlZEV4dGVu
c2lvbnMtPnJlc2V0KHZhbHVlKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBzeXN0ZW1MYW5n
dWFnZUF0dHIpCi0gICAgICAgIG1fc3lzdGVtTGFuZ3VhZ2UudmFsdWUoKS5yZXNldCh2YWx1ZSk7
CisgICAgICAgIG1fc3lzdGVtTGFuZ3VhZ2UtPnJlc2V0KHZhbHVlKTsKIH0KIAogdm9pZCBTVkdU
ZXN0czo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
QEAgLTE4NywyNCArMTg1LDYgQEAgdm9pZCBTVkdUZXN0czo6YWRkU3VwcG9ydGVkQXR0cmlidXRl
cyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+JiBzdXBwb3J0ZWRBdHRyaWJ1dGUKICAgICBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmFkZChzeXN0ZW1MYW5ndWFnZUF0dHIpOwogfQogCi1SZWY8U1ZHU3RyaW5n
TGlzdD4gU1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKQotewotICAgIG1fcmVxdWlyZWRGZWF0
dXJlcy5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICByZXR1cm4gU1ZHU3RyaW5nTGlz
dDo6Y3JlYXRlKG1fY29udGV4dEVsZW1lbnQsIG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZSgpKTsK
LX0KLQotUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMoKQot
ewotICAgIG1fcmVxdWlyZWRFeHRlbnNpb25zLnNldFNob3VsZFN5bmNocm9uaXplKHRydWUpOwot
ICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUobV9jb250ZXh0RWxlbWVudCwgbV9yZXF1
aXJlZEV4dGVuc2lvbnMudmFsdWUoKSk7Ci19Ci0KLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdUZXN0
czo6c3lzdGVtTGFuZ3VhZ2UoKQotewotICAgIG1fc3lzdGVtTGFuZ3VhZ2Uuc2V0U2hvdWxkU3lu
Y2hyb25pemUodHJ1ZSk7Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShtX2NvbnRl
eHRFbGVtZW50LCBtX3N5c3RlbUxhbmd1YWdlLnZhbHVlKCkpOwotfQotCiBib29sIFNWR1Rlc3Rz
OjpoYXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgaGVy
ZSBvbmx5IHRvIGJlIGV4cG9zZWQgaW4gdGhlIE9iamVjdGl2ZS1DIGFuZCBHT2JqZWN0IGJpbmRp
bmdzIGZvciBib3RoIE5vZGUgYW5kIERPTUltcGxlbWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMu
aAppbmRleCA3OWRkZTliNjBhNDg5N2E1MWFjYjg4MzA5ZTkxYzk0YWQ3ZWZlNmZkLi4xNjJlYzEy
NTg2MDEzNGNkZDM4ZTcyM2U2MTJhMDU1ZTIwOWZkZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGVzdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMTAgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIxLDggKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJT
VkdBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCisjaW5jbHVk
ZSAiU1ZHU3RyaW5nTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDYgKzM0
LDkgQEAgY2xhc3MgU1ZHQXR0cmlidXRlUmVnaXN0cnk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25l
clR5cGUsIHR5cGVuYW1lLi4uIEJhc2VUeXBlcz4KIGNsYXNzIFNWR0F0dHJpYnV0ZU93bmVyUHJv
eHlJbXBsOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lLi4uIEJhc2VU
eXBlcz4KK2NsYXNzIFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTsKKwogY2xhc3MgU1ZHVGVzdHMg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR1Rlc3RzKTsKIHB1YmxpYzoKQEAgLTQzLDcg
KzQ1LDEwIEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEF0dHJpYnV0ZVJlZ2lzdHJ5ID0gU1ZHQXR0
cmlidXRlUmVnaXN0cnk8U1ZHVGVzdHM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVSZWdpc3RyeSYg
YXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOworCisgICAgdXNpbmcgUHJvcGVydHlS
ZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdUZXN0cz47CisKKyAgICBzdGF0
aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CkBAIC01MywyMSArNTgsMjAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGhhc0ZlYXR1cmVGb3JMZWdhY3lCaW5kaW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNv
bnN0IFN0cmluZyYgdmVyc2lvbik7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQg
ZnJvbSBET00gdGhyb3VnaCB0aGUgc3VwZXIgY2xhc3Nlcy4KLSAgICBSZWY8U1ZHU3RyaW5nTGlz
dD4gcmVxdWlyZWRGZWF0dXJlcygpOwotICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEV4
dGVuc2lvbnMoKTsKLSAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVtTGFuZ3VhZ2UoKTsKKyAg
ICBTVkdTdHJpbmdMaXN0JiByZXF1aXJlZEZlYXR1cmVzKCkgeyByZXR1cm4gbV9yZXF1aXJlZEZl
YXR1cmVzOyB9CisgICAgU1ZHU3RyaW5nTGlzdCYgcmVxdWlyZWRFeHRlbnNpb25zKCkgeyByZXR1
cm4gbV9yZXF1aXJlZEV4dGVuc2lvbnM7IH0KKyAgICBTVkdTdHJpbmdMaXN0JiBzeXN0ZW1MYW5n
dWFnZSgpIHsgcmV0dXJuIG1fc3lzdGVtTGFuZ3VhZ2U7IH0KIAogcHJvdGVjdGVkOgogICAgIFNW
R1Rlc3RzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKIAogcHJpdmF0ZToKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHVGVz
dHM+OwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogCiAgICAgU1ZHRWxl
bWVudCYgbV9jb250ZXh0RWxlbWVudDsKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRl
IG1fcmVxdWlyZWRGZWF0dXJlcyB7IFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ciB9Owot
ICAgIFNWR1N0cmluZ0xpc3RWYWx1ZXNBdHRyaWJ1dGUgbV9yZXF1aXJlZEV4dGVuc2lvbnMgeyBT
VkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0ciB9OwotICAgIFNWR1N0cmluZ0xpc3RWYWx1
ZXNBdHRyaWJ1dGUgbV9zeXN0ZW1MYW5ndWFnZSB7IFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0
dHIgfTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEZlYXR1cmVzOworICAgIFJl
ZjxTVkdTdHJpbmdMaXN0PiBtX3JlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBSZWY8U1ZHU3RyaW5n
TGlzdD4gbV9zeXN0ZW1MYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuaWRsCmluZGV4IGE0NGYwNzNlOTQ0NzUxY2MzYTc2NzBmZjg1ODk5Zjlm
OGM3ZTQ0ZjUuLjNiN2E5Yzc4ODA5NTgyYjhmN2Q1MTNkNzg1NGZiMGMwMWQxMGMyMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1Rlc3RzLmlkbApAQCAtMjgsOSArMjgsOSBAQAogICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFNWR1Rlc3RzIHsKLSAg
ICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEZl
YXR1cmVzOwotICAgIFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0
IHJlcXVpcmVkRXh0ZW5zaW9uczsKLSAgICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUg
U1ZHU3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdT
dHJpbmdMaXN0IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZp
bmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICBib29sZWFuIGhh
c0V4dGVuc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXh0ZW5zaW9uID0gInVuZGVmaW5lZCIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCmluZGV4IDE1N2MzZDdh
Nzg2NjczNmE2NjYzMDBjZGIxMTcwMTZlNjJkOWEzNzMuLjhkY2FjNjQ1Y2JhMWU2MDg1ZGQ3NzE0
NjhlMmFiNzExMWFjNTNkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRF
bGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJT
VkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmgiCkBAIC04OSw2ICs4OCw4IEBAIHB1YmxpYzoKIAogICAgIHVzaW5n
IEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdUZXh0
Q29udGVudEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lz
dHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0
dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0g
U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHR3JhcGhp
Y3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKIAogICAgIGNvbnN0IFNW
R0xlbmd0aFZhbHVlJiB0ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0TGVuZ3RoLmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgU1ZHTGVuZ3RoQWRqdXN0
VHlwZSBsZW5ndGhBZGp1c3QoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aEFkanVzdC5jdXJyZW50
VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQpAQCAtMTEwLDEwICsxMTEsMTQgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNUZXh0Q29udGVudCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRy
aWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25l
clByb3h5OyB9CiAKKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5
OyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGljIGJv
b2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIGNsYXNz
IFNWR0FuaW1hdGVkQ3VzdG9tTGVuZ3RoQXR0cmlidXRlIDogcHVibGljIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmgKaW5kZXggNjliMzg1NWQ2MzMyNDAyMTk0ZGU4OGE1NjE1NjZhZWI5OGZjODFlYS4u
ZTRmYTY4M2FlNWY5NzQ0OWEyN2QyNmQzMDRlZjU3OTEzYWQ1OTAwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaApAQCAtMTI4LDEwICsxMjgsMTcgQEAgcHJpdmF0ZToK
IAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5
SW1wbDxTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHVVJJUmVm
ZXJlbmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0
cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0
cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94
eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRl
T3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTxTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR1RleHRDb250ZW50RWxlbWVudCwg
U1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisK
KyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAKQEAgLTE0Nyw2ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94
eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3N0YXJ0T2Zmc2V0IHsgTGVuZ3RoTW9kZU90aGVyIH07CiAgICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+IG1fbWV0aG9kIHsgU1ZH
VGV4dFBhdGhNZXRob2RBbGlnbiB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1
dGU8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT4gbV9zcGFjaW5nIHsgU1ZHVGV4dFBhdGhTcGFjaW5n
RXhhY3QgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dC5oCmluZGV4IDFiMWI4MWJiMjg5YjE0MzI1MTkyMWE3NWZhNGM4MjM2ZWJlYzIzYTEuLjNmMjhk
ZmRkN2FlOTk5ZGYzMDVhY2MyOTM3YTZlZTQyZDM0MWJjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaApAQCAtMzQsNiArMzQsOCBAQCBwdWJs
aWM6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQ
cm94eUltcGw8U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVGV4dENvbnRlbnRFbGVtZW50
PjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0
dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRl
UmVnaXN0cnkoKTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVGV4dENvbnRl
bnRFbGVtZW50PjsKIAogICAgIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMmIHgoKSBjb25zdCB7
IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBj
b25zdCBTVkdMZW5ndGhMaXN0VmFsdWVzJiB5KCkgY29uc3QgeyByZXR1cm4gbV95LmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC01OCwxMSArNjAsMTcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYpIGZpbmFsOwogCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQotCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CisKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lz
dHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
QXR0cmlidXRlIG1feDsKICAgICBTVkdBbmltYXRlZExlbmd0aExpc3RBdHRyaWJ1dGUgbV95Owog
ICAgIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZSBtX2R4OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VSSVJlZmVyZW5jZS5oCmluZGV4IDY2MGMyNjI2MzA3NDJhOWNhMjhmZWJiYzdkYWFhN2U4MWUy
YTVlZDkuLjMxNzIwMzZmZTM0MzAzMTE5YjViZjNkMGIwOGRkMTcwNDE3ZjAwMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4LCAyMDA5IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Niw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBdHRyaWJ1dGVSZWdpc3RyeSA9IFNWR0F0dHJpYnV0ZVJlZ2lzdHJ5PFNWR1VSSVJlZmVy
ZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgp
OwogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3Ry
eTxTVkdVUklSZWZlcmVuY2U+OworCiAgICAgY29uc3QgU3RyaW5nJiBocmVmKCkgY29uc3Q7CiAg
ICAgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBocmVmQW5pbWF0ZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmgKaW5kZXggMzFlMGMwOWZiOGM1ZmY0OTlhOThkZTA0M2ViMDlmZWRh
NDc2YTM4OC4uZDZlZGFmZWM3ZGE2NzlmZTUxZWRhMWIxNzFkOTQxNmE5MTgwMTUwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50
LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAj
aW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCkBAIC02NywxMCArNjYsMTcgQEAgcHJpdmF0
ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5SW1wbDxTVkdVc2VFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93
bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMg
Ym9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNv
bnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVXNlRWxlbWVudCwgU1ZH
R3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZl
cmVuY2U+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApA
QCAtMTAxLDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlRGVwZW5kZW50
U2hhZG93VHJlZXMoKTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25l
clByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3Ro
TW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV95IHsgTGVuZ3Ro
TW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBM
ZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCmluZGV4
IDUzYmY0YTM0ZmYxN2UwZDYwODY3MTg1ZWViZTVlOTE4NTE2Y2U1YjcuLjMzOTZjNmU5ODIzNmI2
NGU4Njk1ZmYwNDE5ZTgwMjY5NTc3YjQ3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVt
ZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM0LDkgKzM0LDEzIEBAIGlubGluZSBTVkdWaWV3RWxlbWVudDo6U1ZH
Vmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvCiAg
ICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCh0aGlzKQogICAgICwgU1ZHRml0VG9WaWV3Qm94KHRoaXMpCi0gICAgLCBt
X3ZpZXdUYXJnZXQoU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjp2aWV3VGFnKSk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAg
IFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnZpZXdUYXJnZXRB
dHRyLCAmU1ZHVmlld0VsZW1lbnQ6Om1fdmlld1RhcmdldD4oKTsKKyAgICB9KTsKIH0KIAogUmVm
PFNWR1ZpZXdFbGVtZW50PiBTVkdWaWV3RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ0LDE1ICs0OCwxMiBAQCBSZWY8
U1ZHVmlld0VsZW1lbnQ+IFNWR1ZpZXdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1ZpZXdFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdWaWV3
RWxlbWVudDo6dmlld1RhcmdldCgpCi17Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0
ZSgqdGhpcywgbV92aWV3VGFyZ2V0KTsKLX0KLQogdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCi0gICAg
ICAgIG1fdmlld1RhcmdldC5yZXNldCh2YWx1ZSk7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnZpZXdUYXJnZXRBdHRyKSB7CisgICAgICAgIG1fdmlld1RhcmdldC0+cmVzZXQodmFsdWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0
cmlidXRlKG5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
aWV3RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKaW5kZXgg
YTU3NzMxMDRkY2EzNDU4YjE3ZDBmYTEzNTU5MjE1ODZlZDJhNDY2NS4uZjNmNzk1ZDMxOWU2ZDk4
YWFiZmQ2MDBmYTJjMDBiNTMxMWFhNDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50
LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yNCwxMiArMjQsMTEgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRv
Vmlld0JveC5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJTVkdab29t
QW5kUGFuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHU3RyaW5nTGlzdDsK
LQogY2xhc3MgU1ZHVmlld0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCwgcHVibGlj
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3gsIHB1
YmxpYyBTVkdab29tQW5kUGFuIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR1ZpZXdF
bGVtZW50KTsKIHB1YmxpYzoKQEAgLTM4LDIwICszNywyNSBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
U1ZHRWxlbWVudDo6cmVmOwogICAgIHVzaW5nIFNWR0VsZW1lbnQ6OmRlcmVmOwogCi0gICAgUmVm
PFNWR1N0cmluZ0xpc3Q+IHZpZXdUYXJnZXQoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gdmll
d1RhcmdldCgpIHsgcmV0dXJuIG1fdmlld1RhcmdldC5jb3B5UmVmKCk7IH0KIAogcHJpdmF0ZToK
ICAgICBTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAog
ICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCi0gICAgdXNpbmcgQXR0
cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1ZpZXdFbGVt
ZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1Zp
ZXdCb3gsIFNWR1pvb21BbmRQYW4+OworICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBT
VkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdWaWV3RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKICAgICBjb25zdCBT
VkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJl
Z2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1ZpZXdFbGVtZW50LCBTVkdFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OworICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCiAg
ICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclBy
b3h5IHsgKnRoaXMgfTsKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzIG1fdmlld1RhcmdldDsKKyAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CisgICAgUmVm
PFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZSh0aGlz
KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMu
aAppbmRleCBiNmZkN2JjNDVjNGI5ZjdlY2U0NmIwYWVmNDU4MWM4YTNlNGU2MGJjLi42NmFiMjVh
N2Y3YjdiOGQxNzYyNzQxOTk1OTRlNmQ0ZTAxNGZiZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVmlld1NwZWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1Nw
ZWMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU0LDEyICs1NCwxNCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNWR1ZpZXdTcGVjKFNWR0VsZW1lbnQmKTsK
IAotICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5
SW1wbDxTVkdWaWV3U3BlYywgU1ZHRml0VG9WaWV3Qm94LCBTVkdab29tQW5kUGFuPjsKKyAgICB1
c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZH
Vmlld1NwZWMsIFNWR0ZpdFRvVmlld0JveD47CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRy
aWJ1dGVzKCk7CiAKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVn
aXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogCisgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdWaWV3U3BlYywg
U1ZHRml0VG9WaWV3Qm94PjsKKwogICAgIFdlYWtQdHI8U1ZHRWxlbWVudD4gbV9jb250ZXh0RWxl
bWVudDsKICAgICBTdHJpbmcgbV92aWV3VGFyZ2V0U3RyaW5nOwogICAgIEF0dHJpYnV0ZU93bmVy
UHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1pvb21BbmRQYW4uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4u
Y3BwCmluZGV4IGVmYWRkNGIyMjUxNDExNjA0NjM3MGRkOWY5ZjFiMTNmMDgxOWEzY2QuLjE0ZDhm
Y2I3N2VhNTgwMWQ2NTEwOWY0NTNkYTI1MDM2MjMxMTI3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Wm9vbUFuZFBhbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwzMCArMjQsMTcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1TVkdab29tQW5kUGFuOjpTVkdab29tQW5kUGFuKCkKLXsKLSAgICByZWdp
c3RlckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdab29tQW5kUGFuOjpyZWdpc3RlckF0dHJp
YnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAg
ICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp6b29tQW5kUGFuQXR0ciwgJlNWR1pvb21BbmRQ
YW46Om1fem9vbUFuZFBhbj4oKTsKLX0KLQogYm9vbCBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21B
bmRQYW4oY29uc3QgVUNoYXIqJiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCkKIHsKICAgICBzdGF0
aWMgY29uc3QgVUNoYXIgZGlzYWJsZVtdID0geyAnZCcsICdpJywgJ3MnLCAnYScsICdiJywgJ2wn
LCAnZScgfTsKICAgICBpZiAoc2tpcFN0cmluZyhzdGFydCwgZW5kLCBkaXNhYmxlLCBXVEZfQVJS
QVlfTEVOR1RIKGRpc2FibGUpKSkgewotICAgICAgICBtX3pvb21BbmRQYW4uc2V0VmFsdWUoU1ZH
Wm9vbUFuZFBhbkRpc2FibGUpOworICAgICAgICBtX3pvb21BbmRQYW4gPSBTVkdab29tQW5kUGFu
RGlzYWJsZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIG1hZ25pZnlbXSA9IHsgJ20nLCAnYScsICdnJywgJ24nLCAnaScsICdmJywgJ3knIH07
CiAgICAgaWYgKHNraXBTdHJpbmcoc3RhcnQsIGVuZCwgbWFnbmlmeSwgV1RGX0FSUkFZX0xFTkdU
SChtYWduaWZ5KSkpIHsKLSAgICAgICAgbV96b29tQW5kUGFuLnNldFZhbHVlKFNWR1pvb21BbmRQ
YW5NYWduaWZ5KTsKKyAgICAgICAgbV96b29tQW5kUGFuID0gU1ZHWm9vbUFuZFBhbk1hZ25pZnk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNTgsNyArNDUsNyBAQCB2b2lkIFNW
R1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIGNvbnN0IEF0bwogewogICAgIGlmIChhdHRyaWJ1dGVOYW1lICE9IFNWR05hbWVzOjp6
b29tQW5kUGFuQXR0cikKICAgICAgICAgcmV0dXJuOwotICAgIG1fem9vbUFuZFBhbi5zZXRWYWx1
ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdab29tQW5kUGFuVHlwZT46OmZyb21TdHJpbmcodmFsdWUp
KTsKKyAgICBtX3pvb21BbmRQYW4gPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdab29tQW5kUGFuVHlw
ZT46OmZyb21TdHJpbmcodmFsdWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHWm9vbUFuZFBhbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4u
aAppbmRleCAzNWQ4ODI4ZWM1N2M0ZGNiYzBhNWI3NjgwZTQzZGNiZWEyZDZhODE0Li4zOTJmNDNl
ZmI3YzhhOWEyMTY3MjJmODQxNjQzMjcxNGY3NzcyYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29t
QW5kUGFuLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNywyNiArMzcsMjAgQEAgcHVibGljOgogICAgICAgICBT
VkdfWk9PTUFORFBBTl9NQUdOSUZZID0gU1ZHWm9vbUFuZFBhbk1hZ25pZnkKICAgICB9OwogCi0g
ICAgU1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbigpIGNvbnN0IHsgcmV0dXJuIG1fem9vbUFu
ZFBhbi52YWx1ZSgpOyB9Ci0gICAgdm9pZCBzZXRab29tQW5kUGFuKFNWR1pvb21BbmRQYW5UeXBl
IHpvb21BbmRQYW4pIHsgbV96b29tQW5kUGFuLnNldFZhbHVlKHpvb21BbmRQYW4pOyB9CisgICAg
U1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbigpIGNvbnN0IHsgcmV0dXJuIG1fem9vbUFuZFBh
bjsgfQorICAgIHZvaWQgc2V0Wm9vbUFuZFBhbihTVkdab29tQW5kUGFuVHlwZSB6b29tQW5kUGFu
KSB7IG1fem9vbUFuZFBhbiA9IHpvb21BbmRQYW47IH0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRab29tQW5kUGFuKHVuc2lnbmVkKSB7IHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlv
bkFsbG93ZWRFcnJvciB9OyB9Ci0gICAgdm9pZCByZXNldCgpIHsgbV96b29tQW5kUGFuLnNldFZh
bHVlKFNWR1pvb21BbmRQYW5NYWduaWZ5KTsgfQotCi0gICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1pvb21BbmRQYW4+OwotICAgIHN0
YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVn
aXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgp
OyB9CisgICAgdm9pZCByZXNldCgpIHsgbV96b29tQW5kUGFuID0gU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHWm9vbUFuZFBhblR5cGU+Ojppbml0aWFsVmFsdWUoKTsgfQogCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAKIHBy
b3RlY3RlZDoKLSAgICBTVkdab29tQW5kUGFuKCk7CisgICAgU1ZHWm9vbUFuZFBhbigpID0gZGVm
YXVsdDsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIGJvb2wgcGFyc2Vab29tQW5kUGFuKGNv
bnN0IFVDaGFyKiYsIGNvbnN0IFVDaGFyKik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KLSAgICBTVkdQcm9wZXJ0eUF0dHJpYnV0ZTxTVkdab29t
QW5kUGFuVHlwZT4gbV96b29tQW5kUGFuOworICAgIFNWR1pvb21BbmRQYW5UeXBlIG1fem9vbUFu
ZFBhbiB7IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1pvb21BbmRQYW5UeXBlPjo6aW5pdGlhbFZhbHVl
KCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmLmgKaW5kZXggOTA1MTMwZjlhYjQwMmRiM2QwNTNhYWFjNDU1ZjU4OWI5Y2U2ZDA0Ny4uMDk3
M2QyYmRkYjgyZDM1OWZhN2I3N2RjZGNiMjI0NmNmMzA4Yjk5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmLmgKQEAgLTIyLDcgKzIyLDYgQEAKIAogI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCi0jaW5j
bHVkZSAiU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJpbWl0aXZlUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaAppbmRleCBhMGE0MzEyNDhkNmFkNDI0ZmVlZTE4
ODExM2FmNjU4MTFjYWE4NTJhLi5jNDI1NjE5MjAwZGYwNDg1NjcxYmM3MzE5ZWI1N2Y2ZDNjYThh
ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByaW1pdGl2ZVByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCYXNlVmFsKGNvbnN0IFByb3BlcnR5VHlwZSYgYmFz
ZVZhbCkKICAgICB7CiAgICAgICAgIG1fYmFzZVZhbCA9IGJhc2VWYWw7Ci0gICAgICAgIGNvbW1p
dFByb3BlcnR5Q2hhbmdlKCk7CisgICAgICAgIGNvbW1pdFByb3BlcnR5Q2hhbmdlKG51bGxwdHIp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAppbmRleCA0N2JjNGNiMTQx
OWNiZjFkYTUzZGM4Y2JlMDcyODMwZmMzMDhkOTAyLi5lYzJmM2E0ODdmODMwZjFjNzI2ZDBmNmJl
NGM5NDIyZWM4ZjMwMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcApAQCAtMzUsNyArMzUsNyBAQCBTVkdQcm9wZXJ0
eU93bmVyKiBTVkdBbmltYXRlZFByb3BlcnR5Ojpvd25lcigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y29udGV4dEVsZW1lbnQ7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0UHJv
cGVydHlDaGFuZ2UoKQordm9pZCBTVkdBbmltYXRlZFByb3BlcnR5Ojpjb21taXRQcm9wZXJ0eUNo
YW5nZShTVkdQcm9wZXJ0eSopCiB7CiAgICAgaWYgKCFtX2NvbnRleHRFbGVtZW50KQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5LmgKaW5kZXggMDRjOTM0YjFjMTM1ODQyZjU4YTkzNjJiMjBjZmI4ZWUwMGRk
YzNjZi4uODNjZjA5MzE1NzI5MjRkMTAzZDlkNzA4ODIzNTBjNWYyOTYwODY2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaApA
QCAtNjIsNyArNjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogICAgIAogICAgIFNWR1Byb3BlcnR5
T3duZXIqIG93bmVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21taXRQcm9wZXJ0eUNo
YW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVy
dHkqKSBvdmVycmlkZTsKICAgICAKICAgICBTVkdFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50IHsg
bnVsbHB0ciB9OwogICAgIGJvb2wgbV9pc0FuaW1hdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNz
b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5QWNjZXNzb3JJbXBsLmgKaW5kZXggYTgxZmZjM2ZhOTIwNDFjMTNlYzE1OGJhMmFkOWQ5Y2Q2
NWQ2NzU0Ni4uYzdhODFjODE3YmExZTZlYjFhMjE2ZDhjNjJjYmU0NjRjZWY0YWNmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFj
Y2Vzc29ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaApAQCAtMzIsNiArMzIsMjggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBTVkdBbmlt
YXRlZEJvb2xlYW5BY2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNj
ZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEJvb2xlYW4+IHsKKyAgICB1c2luZyBCYXNlID0g
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRCb29sZWFu
PjsKKyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6
OkJhc2U7CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4gT3duZXJUeXBlOjoq
cHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxP
d25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248
U1ZHQW5pbWF0ZWRCb29sZWFuQWNjZXNzb3IsIHByb3BlcnR5PigpOyB9CisKK3ByaXZhdGU6Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihP
d25lclR5cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVy
biBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIHByb3Bl
cnR5KG93bmVyKSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShPd25lclR5
cGUmIG93bmVyLCBTVkdBdHRyaWJ1dGVBbmltYXRvciYgYW5pbWF0b3IpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICBzdGF0aWNfY2FzdDxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciY+KGFu
aW1hdG9yKS5hcHBlbmRBbmltYXRlZEluc3RhbmNlKHByb3BlcnR5KG93bmVyKSk7CisgICAgfQor
fTsKKyAgICAKIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KIGNsYXNzIFNWR0FuaW1hdGVk
SW50ZWdlckFjY2Vzc29yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3Nv
cjxPd25lclR5cGUsIFNWR0FuaW1hdGVkSW50ZWdlcj4gewogICAgIHVzaW5nIEJhc2UgPSBTVkdB
bmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEludGVnZXI+Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDViYjE1Nzg5OGE0MTE5ZmIyMzRiZjIy
ZDRkOWQyODc1Yzk5MmIxMGEuLmFmMzM0NTZmYmJlNGI5ZDhkMjYzMWJmYjk0YzlhZTIxM2NkMTJk
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaCIKICNpbmNsdWRlICJTVkdBbmlt
YXRlZFByb3BlcnR5SW1wbC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVG
dW5jdGlvbkltcGwuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1w
bC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDYgKzM3LDI0IEBAIGNsYXNzIFNW
R0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcjsKIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVk
UHJvcGVydHlBbmltYXRvcjEsIHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmltYXRvcjI+CiBj
bGFzcyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1hdG9yOwogCitjbGFzcyBTVkdBbmltYXRl
ZEJvb2xlYW5BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3I8U1ZHQW5pbWF0ZWRCb29sZWFuLCBTVkdBbmltYXRpb25Cb29sZWFuRnVuY3Rpb24+ICB7Cisg
ICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZEJv
b2xlYW4sIFNWR0FuaW1hdGlvbkJvb2xlYW5GdW5jdGlvbj47CisgICAgdXNpbmcgQmFzZTo6QmFz
ZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRCb29sZWFuPiYgYW5pbWF0ZWQsIEFuaW1h
dGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVs
YXRlZCwgYm9vbCBpc0FkZGl0aXZlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4obmV3IFNWR0FuaW1hdGVkQm9vbGVhbkFu
aW1hdG9yKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lk
IHByb2dyZXNzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHBlcmNlbnRhZ2UsIHVu
c2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHsKKyAgICAgICAgYm9vbCYgYW5pbWF0ZWQg
PSBtX2FuaW1hdGVkLT5hbmltVmFsKCk7CisgICAgICAgIG1fZnVuY3Rpb24ucHJvZ3Jlc3ModGFy
Z2V0RWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGFuaW1hdGVkKTsKKyAgICB9Cit9
OworCiBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdB
bmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRJbnRlZ2VyLCBTVkdBbmltYXRpb25J
bnRlZ2VyRnVuY3Rpb24+IHsKICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBh
aXJBbmltYXRvcjxTVkdBbmltYXRlZEludGVnZXJBbmltYXRvciwgU1ZHQW5pbWF0ZWRJbnRlZ2Vy
QW5pbWF0b3I+OwogICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJQYWlyQW5pbWF0
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUltcGwuaAppbmRleCAwMTI5MTU0NmI0NDMzZTBkODg5NzNlZWQzYWU1YjMwN2Jk
NDMyNjg0Li44ZWY3NzI2YmFiM2M5MzFkNTM2ZmJiM2NmNjc5NzU0OGIxNzhkZmQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlJbXBsLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0
aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgpAQCAtNDEsNiArNDAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIFNWR0FuaW1hdGVkQm9vbGVhbiA9IFNW
R0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHk8Ym9vbD47CiB1c2luZyBTVkdBbmltYXRlZEludGVn
ZXIgPSBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5PGludD47CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRl
RnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjcwN2JkNzdmZmYxZTA1NWU4OWUwYmFmYThmZTUxODFl
MGQ0YTA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+Citj
bGFzcyBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uIDogcHVibGljIFNWR0FuaW1hdGlvbkZ1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uKEFuaW1h
dGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUsIGJvb2wsIGJvb2wpCisgICAgICAgIDog
U1ZHQW5pbWF0aW9uRnVuY3Rpb24oYW5pbWF0aW9uTW9kZSkKKyAgICB7CisgICAgfQorCisgICAg
Ym9vbCBpc0Rpc2NyZXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
dm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dEZyb21BbmRCeVZhbHVlcyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KworICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCosIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkLCBWYWx1ZVR5cGUmIGFuaW1hdGVkKQorICAgIHsKKyAgICAgICAgaWYgKChtX2FuaW1hdGlv
bk1vZGUgPT0gQW5pbWF0aW9uTW9kZTo6RnJvbVRvICYmIHBlcmNlbnRhZ2UgPiAwLjUpIHx8IG1f
YW5pbWF0aW9uTW9kZSA9PSBBbmltYXRpb25Nb2RlOjpUbyB8fCBwZXJjZW50YWdlID09IDEpCisg
ICAgICAgICAgICBhbmltYXRlZCA9IG1fdG87CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFu
aW1hdGVkID0gbV9mcm9tOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFZhbHVlVHlwZSBtX2Zy
b207CisgICAgVmFsdWVUeXBlIG1fdG87Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlv
bkltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MzYwOWQ3Y2EyNWQ2NDk1NWIxNmM0ZmRkMjdmMjA3OGNkYzZj
NDk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAi
U1ZHUHJvcGVydHlUcmFpdHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTVkdB
bmltYXRpb25Cb29sZWFuRnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5j
dGlvbjxib29sPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGlvbkRpc2Ny
ZXRlRnVuY3Rpb248Ym9vbD47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworICAgIHZvaWQgc2V0
RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0
cmluZyYgdG8pIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2Zyb20gPSBTVkdQcm9wZXJ0eVRy
YWl0czxib29sPjo6ZnJvbVN0cmluZyhmcm9tKTsKKyAgICAgICAgbV90byA9IFNWR1Byb3BlcnR5
VHJhaXRzPGJvb2w+Ojpmcm9tU3RyaW5nKHRvKTsKKyAgICB9Cit9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaAppbmRl
eCBiMGIzMzAyMDljZTY1ZTgxMjc2ODVlMzJhZGZhMDY4ZDA2NmM5MGEyLi4zYjQ2OTM4MDJhMDNh
ZmRiZjBlNWFlNGZhMzlkN2MxMTZlNzQ5MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKQEAgLTI1LDcgKzI1LDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5n
dGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKQEAgLTM4LDcgKzM3LDYg
QEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdB
dHRyaWJ1dGVBY2Nlc3Nvci5oIgogI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHku
aCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHWm9vbUFu
ZFBhblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC01MywxMyArNTEsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfQogCi0gICAgLy8gTm9uIGFuaW1h
dGFibGUgYXR0cmlidXRlcwotICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxj
b25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0
dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+Ci0gICAgdm9pZCByZWdpc3RlckF0dHJpYnV0
ZSgpCi0gICAgewotICAgICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdTdHJpbmdMaXN0VmFsdWVz
QXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPGF0dHJpYnV0
ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5l
dmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdab29t
QW5kUGFuVHlwZUF0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+CiAgICAgdm9pZCByZWdp
c3RlckF0dHJpYnV0ZSgpCiAgICAgewpAQCAtNjcsMTIgKzU4LDYgQEAgcHVibGljOgogICAgIH0K
IAogICAgIC8vIEFuaW1hdGFibGUgYXR0cmlidXRlcwotICAgIHRlbXBsYXRlPGNvbnN0IExhenlO
ZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgU1ZHQW5p
bWF0ZWRCb29sZWFuQXR0cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KLSAgICB2b2lkIHJl
Z2lzdGVyQXR0cmlidXRlKCkKLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyQXR0cmlidXRlKFNWR0Fu
aW1hdGVkQm9vbGVhbkF0dHJpYnV0ZUFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmds
ZXRvbjxhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGU+KCkpOwotICAgIH0KLQogICAgIHRlbXBsYXRl
PGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRl
TmFtZSwgdHlwZW5hbWUgRW51bVR5cGUsIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8
RW51bVR5cGU+IE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KICAgICB2b2lkIHJlZ2lzdGVyQXR0cmli
dXRlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjkzYTU0ZjVkNDg1NGNhM2Q1ZWNjNDYyODIzM2ViNDRmOTZkZjM0NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3QuaApAQCAtMCww
ICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRl
ICJTVkdQcm9wZXJ0eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEl0ZW1UeXBlPgorY2xhc3MgU1ZHTGlzdCA6IHB1YmxpYyBTVkdQcm9wZXJ0eSB7CitwdWJs
aWM6CisgICAgdW5zaWduZWQgbnVtYmVyT2ZJdGVtcygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9pdGVtcy5zaXplKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xl
YXIoKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRlckxpc3QoKTsKKyAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VSZXR1cm5W
YWx1ZSgpKTsKKworICAgICAgICBjbGVhckl0ZW1zKCk7CisgICAgICAgIGNvbW1pdENoYW5nZSgp
OworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBl
PiBnZXRJdGVtKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBj
YW5HZXRJdGVtKGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NF
UlQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICByZXR1cm4gYXQoaW5k
ZXgpOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBlPiBpbml0aWFsaXplKEl0ZW1U
eXBlJiYgbmV3SXRlbSkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0
KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgICAgICAvLyBTcGVjOiBDbGVhcnMg
YWxsIGV4aXN0aW5nIGN1cnJlbnQgaXRlbXMgZnJvbSB0aGUgbGlzdC4KKyAgICAgICAgY2xlYXJJ
dGVtcygpOworCisgICAgICAgIGF1dG8gaXRlbSA9IGFwcGVuZChXVEZNb3ZlKG5ld0l0ZW0pKTsK
KyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGl0ZW0pOwor
ICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBlPiBpbnNlcnRJdGVtQmVmb3JlKEl0ZW1U
eXBlJiYgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNhbkFsdGVyTGlzdCgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFT
U0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIC8vIFNwZWM6IElm
IHRoZSBpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbnVtYmVyT2ZJdGVtcywKKyAg
ICAgICAgLy8gdGhlbiB0aGUgbmV3IGl0ZW0gaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUg
bGlzdC4KKyAgICAgICAgaWYgKGluZGV4ID4gbnVtYmVyT2ZJdGVtcygpKQorICAgICAgICAgICAg
aW5kZXggPSBudW1iZXJPZkl0ZW1zKCk7CisKKyAgICAgICAgYXV0byBpdGVtID0gaW5zZXJ0KGlu
ZGV4LCBXVEZNb3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAg
IHJldHVybiBXVEZNb3ZlKGl0ZW0pOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBl
PiByZXBsYWNlSXRlbShJdGVtVHlwZSYmIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4KQorICAgIHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5SZXBsYWNlSXRlbShpbmRleCk7CisgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KSk7CisKKyAgICAgICAgYXV0byBpdGVtID0gcmVwbGFjZShpbmRleCwgV1RGTW92ZShuZXdJdGVt
KSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShpdGVt
KTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gcmVtb3ZlSXRlbSh1bnNpZ25l
ZCBpbmRleCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuUmVtb3ZlSXRlbShpbmRl
eCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgYXV0byBpdGVtID0gcmVtb3ZlKGluZGV4KTsK
KyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGl0ZW0pOwor
ICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBlPiBhcHBlbmRJdGVtKEl0ZW1UeXBlJiYg
bmV3SXRlbSkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0KCk7Cisg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKSk7CisKKyAgICAgICAgYXV0byBpdGVtID0gYXBwZW5kKFdURk1vdmUobmV3SXRl
bSkpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaXRl
bSk7CisgICAgfQorCisgICAgLy8gUGFyc2VycyBhbmQgYW5pbWF0b3JzIG5lZWQgdG8gaGF2ZSBh
IGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGl0ZW1zLgorICAgIFZlY3RvcjxJdGVtVHlwZT4mIGl0ZW1z
KCkgeyByZXR1cm4gbV9pdGVtczsgfQorICAgIGNvbnN0IFZlY3RvcjxJdGVtVHlwZT4mIGl0ZW1z
KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtczsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9pdGVtcy5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX2l0ZW1zLmlzRW1wdHkoKTsgfQorCisgICAgdm9pZCBjbGVhckl0ZW1zKCkKKyAgICB7Cisg
ICAgICAgIGRldGFjaEl0ZW1zKCk7CisgICAgICAgIG1faXRlbXMuY2xlYXIoKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICB1c2luZyBTVkdQcm9wZXJ0eTo6U1ZHUHJvcGVydHk7CisKKyAgICBF
eGNlcHRpb25Pcjxib29sPiBjYW5BbHRlckxpc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KGlzUmVhZE9ubHkoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNh
dGlvbkFsbG93ZWRFcnJvciB9OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBF
eGNlcHRpb25Pcjxib29sPiBjYW5HZXRJdGVtKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAg
ICAgaWYgKGluZGV4ID49IG1faXRlbXMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNhblJlcGxhY2VJdGVtKHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRlckxpc3QoKTsKKyAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
KworICAgICAgICBpZiAoaW5kZXggPj0gbV9pdGVtcy5zaXplKCkpCisgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2FuUmVtb3ZlSXRlbSh1bnNpZ25lZCBpbmRl
eCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAgICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKSk7CisKKyAgICAgICAgaWYgKGluZGV4ID49IG1faXRlbXMuc2l6ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hJdGVtcygpIHsgfQorICAgIHZp
cnR1YWwgSXRlbVR5cGUgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IEl0ZW1UeXBlIGluc2VydCh1bnNpZ25lZCBpbmRleCwgSXRlbVR5cGUmJikgPSAwOworICAgIHZp
cnR1YWwgSXRlbVR5cGUgcmVwbGFjZSh1bnNpZ25lZCBpbmRleCwgSXRlbVR5cGUmJikgPSAwOwor
ICAgIHZpcnR1YWwgSXRlbVR5cGUgcmVtb3ZlKHVuc2lnbmVkIGluZGV4KSA9IDA7CisgICAgdmly
dHVhbCBJdGVtVHlwZSBhcHBlbmQoSXRlbVR5cGUmJikgPSAwOworCisgICAgVmVjdG9yPEl0ZW1U
eXBlPiBtX2l0ZW1zOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR01lbWJlckFjY2Vzc29yLmgKaW5kZXggZGIyMTM0ZDM2NzNmOWYzYTA0N2RjZjI4ZDQ3
ZDQyYThmMTc1NjAzOC4uN2RjNGNhYThiYzZjZTBmZmI3M2U4ZmQ1ZjUxMDU3MWQxNTNjMjYyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNz
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nv
ci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0Fu
aW1hdGVkUHJvcGVydHk7CitjbGFzcyBTVkdQcm9wZXJ0eTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
T3duZXJUeXBlPgogY2xhc3MgU1ZHTWVtYmVyQWNjZXNzb3IgewpAQCAtNDIsNiArNDMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWRMZW5ndGgoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJU
eXBlJiwgY29uc3QgU1ZHUHJvcGVydHkmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBtYXRjaGVzKGNvbnN0IE93bmVyVHlwZSYsIGNvbnN0IFNWR0FuaW1hdGVkUHJv
cGVydHkmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8U3Ry
aW5nPiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5cGUmKSBjb25zdCB7IHJldHVybiBXVEY6Om51
bGxvcHQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJpbWl0aXZlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0
aXZlTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NmJmYjY3YWQ4MGIwYTk5OTJjODY2Mjc3YjIyMWZjZmFm
M2ZjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcmltaXRpdmVMaXN0LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
U1ZHTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFBy
b3BlcnR5VHlwZT4KK2NsYXNzIFNWR1ByaW1pdGl2ZUxpc3QgOiBwdWJsaWMgU1ZHTGlzdDxQcm9w
ZXJ0eVR5cGU+IHsKK3Byb3RlY3RlZDoKKyAgICB1c2luZyBCYXNlID0gU1ZHTGlzdDxQcm9wZXJ0
eVR5cGU+OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdXNpbmcgQmFzZTo6c2l6ZTsKKyAg
ICB1c2luZyBCYXNlOjptX2l0ZW1zOworCisgICAgUHJvcGVydHlUeXBlIGF0KHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgp
KTsKKyAgICAgICAgcmV0dXJuIG1faXRlbXMuYXQoaW5kZXgpOworICAgIH0KKworICAgIFByb3Bl
cnR5VHlwZSBpbnNlcnQodW5zaWduZWQgaW5kZXgsIFByb3BlcnR5VHlwZSYmIG5ld0l0ZW0pIG92
ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPD0gc2l6ZSgpKTsKKyAgICAgICAg
bV9pdGVtcy5pbnNlcnQoaW5kZXgsIFdURk1vdmUobmV3SXRlbSkpOworICAgICAgICByZXR1cm4g
YXQoaW5kZXgpOworICAgIH0KKworICAgIFByb3BlcnR5VHlwZSByZXBsYWNlKHVuc2lnbmVkIGlu
ZGV4LCBQcm9wZXJ0eVR5cGUmJiBuZXdJdGVtKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGluZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAgbV9pdGVtcy5hdChpbmRleCkgPSBXVEZNb3Zl
KG5ld0l0ZW0pOworICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgIH0KKworICAgIFByb3Bl
cnR5VHlwZSByZW1vdmUodW5zaWduZWQgaW5kZXgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBB
U1NFUlQoaW5kZXggPCBzaXplKCkpOworICAgICAgICBQcm9wZXJ0eVR5cGUgaXRlbSA9IGF0KGlu
ZGV4KTsKKyAgICAgICAgbV9pdGVtcy5yZW1vdmUoaW5kZXgpOworICAgICAgICByZXR1cm4gV1RG
TW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBQcm9wZXJ0eVR5cGUgYXBwZW5kKFByb3BlcnR5VHlw
ZSYmIG5ld0l0ZW0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2l0ZW1zLmFwcGVuZChXVEZN
b3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgcmV0dXJuIGF0KHNpemUoKSAtIDEpOworICAgIH0KK307
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCmluZGV4
IGZkYTI4MGE3YWRmYzE4YTIyOTI4OWFkZjc0N2RiYWQ0ZTZjOGQ3NGEuLmNjZjEyNjFlMWE5ZjAz
NTg0ZTM3NTMzMDdkMTAwNzRlODBhNGRkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHkuaApAQCAtMjAsMTAgKzIwLDc4IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiU1ZHUHJvcGVydHlPd25lci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBTVkdQcm9wZXJ0eUFjY2Vz
cyA6IHVpbnQ4X3QgeyBSZWFkV3JpdGUsIFJlYWRPbmx5IH07CiBlbnVtIGNsYXNzIFNWR1Byb3Bl
cnR5U3RhdGUgOiB1aW50OF90IHsgQ2xlYW4sIERpcnR5IH07CiAKK2NsYXNzIFNWR1Byb3BlcnR5
IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUHJvcGVydHk+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5TVkdQcm9wZXJ0eSgpID0gZGVmYXVsdDsKKworICAgIC8vIE1hbmFnaW5nIHRoZSByZWxhdGlv
bnNoaXAgd2l0aCB0aGUgb3duZXIuCisgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1
cm4gbV9vd25lcjsgfQorICAgIHZvaWQgYXR0YWNoKFNWR1Byb3BlcnR5T3duZXIqIG93bmVyLCBT
VkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fb3duZXIp
OworICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbik7Cisg
ICAgICAgIG1fb3duZXIgPSBvd25lcjsKKyAgICAgICAgbV9hY2Nlc3MgPSBhY2Nlc3M7CisgICAg
fQorCisgICAgdm9pZCBkZXRhY2goKQorICAgIHsKKyAgICAgICAgbV9vd25lciA9IG51bGxwdHI7
CisgICAgICAgIG1fYWNjZXNzID0gU1ZHUHJvcGVydHlBY2Nlc3M6OlJlYWRXcml0ZTsKKyAgICAg
ICAgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuOworICAgIH0KKworICAgIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICgh
bV9vd25lcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbV9v
d25lci0+YXR0cmlidXRlQ29udGV4dEVsZW1lbnQoKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbW1p
dENoYW5nZSgpCisgICAgeworICAgICAgICBpZiAoIW1fb3duZXIpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1fb3duZXItPmNvbW1pdFByb3BlcnR5Q2hhbmdlKHRoaXMpOworICAgIH0K
KworICAgIC8vIERPTSBhY2Nlc3MuCisgICAgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9hY2Nlc3M7IH0KKyAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCB7IHJl
dHVybiBtX2FjY2VzcyA9PSBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZE9ubHk7IH0KKworICAgIC8v
IFN5bmNocm9uaXppbmcgdGhlIFNWRyBhdHRyaWJ1dGUgYW5kIGl0cyByZWZsZWN0aW9uIGhlcmUu
CisgICAgYm9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTVkdQcm9wZXJ0
eVN0YXRlOjpEaXJ0eTsgfQorICAgIHZvaWQgc2V0RGlydHkoKSB7IG1fc3RhdGUgPSBTVkdQcm9w
ZXJ0eVN0YXRlOjpEaXJ0eTsgfQorICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW4pCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBtX3N0YXRlID0gU1ZHUHJv
cGVydHlTdGF0ZTo6Q2xlYW47CisgICAgICAgIHJldHVybiB2YWx1ZUFzU3RyaW5nKCk7CisgICAg
fQorCisgICAgLy8gVGhpcyBpcyB1c2VkIHdoZW4gY2FsbGluZyBzZXRBdHRyaWJ1dGUoKS4KKyAg
ICB2aXJ0dWFsIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJp
bmcoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgU1ZHUHJvcGVydHkoU1ZHUHJvcGVydHlPd25lciog
b3duZXIgPSBudWxscHRyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MgPSBTVkdQcm9wZXJ0eUFj
Y2Vzczo6UmVhZFdyaXRlKQorICAgICAgICA6IG1fb3duZXIob3duZXIpCisgICAgICAgICwgbV9h
Y2Nlc3MoYWNjZXNzKQorICAgIHsKKyAgICB9CisKKyAgICBTVkdQcm9wZXJ0eU93bmVyKiBtX293
bmVyIHsgbnVsbHB0ciB9OworICAgIFNWR1Byb3BlcnR5QWNjZXNzIG1fYWNjZXNzIHsgU1ZHUHJv
cGVydHlBY2Nlc3M6OlJlYWRXcml0ZSB9OworICAgIFNWR1Byb3BlcnR5U3RhdGUgbV9zdGF0ZSB7
IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuIH07Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
QWNjZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNj
ZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZjhjNGNkZTZkZDBmM2NhZmJjOGYyN2IyNzAyOTcwZTM1ZjQ4
NzY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHlBY2Nlc3Nvci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlNWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5hbWUgUHJvcGVydHlUeXBlPgorY2xhc3Mg
U1ZHUHJvcGVydHlBY2Nlc3NvciA6IHB1YmxpYyBTVkdQb2ludGVyTWVtYmVyQWNjZXNzb3I8T3du
ZXJUeXBlLCBQcm9wZXJ0eVR5cGU+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHUG9pbnRlck1lbWJl
ckFjY2Vzc29yPE93bmVyVHlwZSwgUHJvcGVydHlUeXBlPjsKKworcHVibGljOgorICAgIHVzaW5n
IEJhc2U6OkJhc2U7CisKK3Byb3RlY3RlZDoKKyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKKyAg
ICB1c2luZyBCYXNlOjpzaW5nbGV0b247CisKKyAgICBib29sIG1hdGNoZXMoY29uc3QgT3duZXJU
eXBlJiBvd25lciwgY29uc3QgU1ZHUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMtPnByb3BlcnR5KG93bmVyKS5wdHIoKSA9PSAmcHJv
cGVydHk7CisgICAgfQorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdkNjMxODQz
NzViMjhiYTNjYTk1OTM1ZWJhMDZjNjExOGM5YjVhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmgKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlBY2Nlc3Nvci5oIgor
I2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBTVkdTdHJpbmdMaXN0QWNjZXNzb3IgZmlu
YWwgOiBwdWJsaWMgU1ZHUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0cmluZ0xpc3Q+
IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0
cmluZ0xpc3Q+OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0
ZTxSZWY8U1ZHU3RyaW5nTGlzdD4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgY29uc3RleHBy
IHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7
IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHU3RyaW5nTGlzdEFjY2Vzc29yLCBw
cm9wZXJ0eT4oKTsgfQorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlPd25lci5oCmluZGV4IGI0MmE1NzhhMTUxYWYyOTljZTc4NTQ3ZjVmNWEw
ZGU5YjQ0OWU4MjQuLmM5ODE4YmU5Zjg0MGM3NjQ1Mzk4ZTYxYjQ4OTM4MTg2MmEzNDY4ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyLmgK
QEAgLTI2LDYgKzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCitjbGFzcyBTVkdFbGVtZW50OworY2xhc3MgU1ZHUHJvcGVydHk7CiAKIGNsYXNzIFNWR1By
b3BlcnR5T3duZXIgewogcHVibGljOgpAQCAtNDAsMTEgKzQzLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG93bmVyKCktPmF0dHJpYnV0ZUNvbnRleHRFbGVtZW50KCk7CiAgICAgfQogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5nZSgpCisgICAgdmlydHVhbCB2
b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5KiBwcm9wZXJ0eSkKICAgICB7CiAg
ICAgICAgIGlmICghb3duZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgb3duZXIo
KS0+Y29tbWl0UHJvcGVydHlDaGFuZ2UoKTsKKyAgICAgICAgb3duZXIoKS0+Y29tbWl0UHJvcGVy
dHlDaGFuZ2UocHJvcGVydHkpOwogICAgIH0KICAgICAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
LmgKaW5kZXggZWY1NDZmZmZjNTIwZDMwNGNiZTI1YTU5ZTkxZTQ4MDRhMTIxNDJmZC4uNTkzNTcw
M2MyMDc2NGE0NTc1MGNmYjc4NTRmMWJkNTJiYTYwNDNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3Nvcklt
cGwuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oIgor
I2luY2x1ZGUgIlNWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVy
dHlSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTQyLDYgKzQzLDE4
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVy
RGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHU3Ry
aW5nTGlzdD4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQ
cm9wZXJ0eSgpCisgICAgeworICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUs
IFNWR1N0cmluZ0xpc3RBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJv
cGVydHk+KCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9v
bGVhbj4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9w
ZXJ0eSgpCisgICAgeworICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNW
R0FuaW1hdGVkQm9vbGVhbkFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxw
cm9wZXJ0eT4oKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJ
bnRlZ2VyPiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlclBy
b3BlcnR5KCkKICAgICB7CkBAIC03MSw2ICs4NCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBmaW5kQWNjZXNzb3IoYXR0cmlidXRlTmFtZSk7CiAgICAgfQogCisgICAgUXVhbGlmaWVkTmFt
ZSBwcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZHUHJvcGVydHkmIHByb3BlcnR5KSBjb25z
dCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVOYW1lID0g
bnVsbFFOYW1lKCk7CisgICAgICAgIGVudW1lcmF0ZVJlY3Vyc2l2ZWx5KFsmXShjb25zdCBhdXRv
JiBlbnRyeSkgLT4gYm9vbCB7CisgICAgICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLT5tYXRjaGVz
KG1fb3duZXIsIHByb3BlcnR5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBlbnRyeS5rZXk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gYXR0cmlidXRlTmFtZTsKKyAgICB9CisK
ICAgICBRdWFsaWZpZWROYW1lIGFuaW1hdGVkUHJvcGVydHlBdHRyaWJ1dGVOYW1lKGNvbnN0IFNW
R0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHkpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5hbWUgPSBudWxsUU5hbWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnku
aAppbmRleCA3YzI4ZmQ3YmQ4MWU0YTEwYmI1NzQzZDE5MzY1NDc3ODgxMWUxYTYyLi41M2EwMzQ1
NWZhZGU1MmFjNmNlZjlmNDI1YTNkOWUxMDhiYTdjZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oCkBAIC0zNyw2ICszNyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdQcm9wZXJ0eVJlZ2lzdHJ5KCkgPSBkZWZhdWx0
OwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaEFsbFByb3BlcnRpZXMoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBRdWFsaWZpZWROYW1lIHByb3BlcnR5QXR0cmlidXRlTmFtZShjb25zdCBTVkdQ
cm9wZXJ0eSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFF1YWxpZmllZE5hbWUgYW5pbWF0ZWRQ
cm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwg
U3RyaW5nPiBzeW5jaHJvbml6ZUFsbEF0dHJpYnV0ZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFy
T2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVy
dHlUZWFyT2ZmLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Njg3NGRjYTAxMTY4
YzJlYzRjNDcwYTJkNzM3MGEyNmZiMjJjYzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGlj
TGlzdFByb3BlcnR5VGVhck9mZi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlU
eXBlPiAKLWNsYXNzIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHTGlz
dFByb3BlcnR5PFByb3BlcnR5VHlwZT4gewotcHVibGljOgotICAgIHVzaW5nIFNlbGYgPSBTVkdT
dGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT47Ci0gICAgdXNpbmcgQmFzZSA9
IFNWR0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+OwotCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBl
ID0gdHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1UeXBl
OwotICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IHR5cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRz
PFByb3BlcnR5VHlwZT46Okxpc3RJdGVtVGVhck9mZjsKLQotICAgIHVzaW5nIEJhc2U6Om1fcm9s
ZTsKLSAgICB1c2luZyBCYXNlOjptX3ZhbHVlczsKLQotICAgIHN0YXRpYyBSZWY8U2VsZj4gY3Jl
YXRlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGYoY29udGV4dEVsZW1lbnQsIHZh
bHVlcykpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFyKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBCYXNlOjpjbGVhclZhbHVlcygpOwotICAgIH0KLQotICAgIEV4Y2VwdGlv
bk9yPExpc3RJdGVtVHlwZT4gaW5pdGlhbGl6ZShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0p
Ci0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6aW5pdGlhbGl6ZVZhbHVlcyhuZXdJdGVtKTsK
LSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxMaXN0SXRlbVR5cGU+IGdldEl0ZW0odW5zaWduZWQg
aW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6Z2V0SXRlbVZhbHVlcyhpbmRleCk7
Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiBpbnNlcnRJdGVtQmVmb3Jl
KGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCi0gICAgewotICAg
ICAgICByZXR1cm4gQmFzZTo6aW5zZXJ0SXRlbUJlZm9yZVZhbHVlcyhuZXdJdGVtLCBpbmRleCk7
Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiByZXBsYWNlSXRlbShjb25z
dCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEJhc2U6OnJlcGxhY2VJdGVtVmFsdWVzKG5ld0l0ZW0sIGluZGV4KTsKLSAgICB9Ci0K
LSAgICBFeGNlcHRpb25PcjxMaXN0SXRlbVR5cGU+IHJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgp
Ci0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6cmVtb3ZlSXRlbVZhbHVlcyhpbmRleCk7Ci0g
ICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiBhcHBlbmRJdGVtKGNvbnN0IExp
c3RJdGVtVHlwZSYgbmV3SXRlbSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjphcHBlbmRJ
dGVtVmFsdWVzKG5ld0l0ZW0pOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIFNWR1N0YXRpY0xp
c3RQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFByb3BlcnR5VHlw
ZSYgdmFsdWVzKQotICAgICAgICA6IEJhc2UoVW5kZWZpbmVkUm9sZSwgdmFsdWVzLCBudWxscHRy
KQotICAgICAgICAsIG1fY29udGV4dEVsZW1lbnQoKmNvbnRleHRFbGVtZW50KQotICAgIHsKLSAg
ICB9Ci0KLSAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fcm9sZSA9PSBBbmltVmFsUm9sZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbW1p
dENoYW5nZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBU1NFUlQobV92YWx1ZXMpOwotICAg
ICAgICBtX3ZhbHVlcy0+Y29tbWl0Q2hhbmdlKG1fY29udGV4dEVsZW1lbnQpOwotICAgIH0KLQot
ICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShjb25zdCBMaXN0SXRlbVR5cGUm
LCB1bnNpZ25lZCopIG92ZXJyaWRlCi0gICAgewotICAgICAgICAvLyBuby1vcCBmb3Igc3RhdGlj
IGxpc3RzCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgcHJvY2Vzc0lu
Y29taW5nTGlzdEl0ZW1XcmFwcGVyKFJlZjxMaXN0SXRlbVRlYXJPZmY+JiwgdW5zaWduZWQqKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIFJlZjxTVkdFbGVtZW50PiBtX2NvbnRleHRFbGVtZW50
OwotfTsKLQotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364973</attachid>
            <date>2019-03-17 13:03:20 -0700</date>
            <delta_ts>2019-03-17 17:48:34 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>SVGStringList.patch</filename>
            <type>text/plain</type>
            <size>66803</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZWMyZjc4Nzk1MC4uYWFkZDVjMmJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDggQEAKKzIwMTktMDMtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNWRyBwcm9wZXJ0eSB0ZWFyIG9mZiBv
YmplY3RzIGZvciBTVkdTdHJpbmdMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTU4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdTdHJpbmdMaXN0IGlzIG5vdCBhbmltYXRlZCBsaXN0LiBTbyB3
ZSBuZWVkIHRvIGludHJvZHVjZSB0d28gbmV3IGNsYXNzZXM6CisKKyAgICAgICAgLS0gU1ZHUHJv
cGVydHk6IFRoaXMgd2lsbCBiZSB0aGUgYmFzZSBvZiBhbGwgdGhlIG5vbi1hbmltYXRlZCBwcm9w
ZXJ0aWVzLgorICAgICAgICAgICBMaWtlIHRoZSBTVkdBbmltYXRlZFByb3BlcnR5LCBTVkdQcm9w
ZXJ0eSB3aWxsIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUKKyAgICAgICAgICAgYXR0cmlidXRlIG5h
bWUgaW4gU1ZHUHJvcGVydHlSZWdpc3RlcnkuIEl0IHdpbGwgYWxzbyBjb21taXRzIGNoYW5nZXMK
KyAgICAgICAgICAgdG8gdGhlIHJlZmxlY3RpbmcgYXR0cmlidXRlLiBBbmQgaXQgd2lsbCBwcm92
aWRlIGEgc3luY2hyb25pemUgc3RyaW5nCisgICAgICAgICAgIGZvciBsYXp5IGF0dHJpYnV0ZSB1
cGRhdGUuCisKKyAgICAgICAgLS0gU1ZHTGlzdDogSXQgd2lsbCBiZSB0aGUgYmFzZSBvZiBhbGwg
dGhlIGxpc3QgcHJvcGVydGllcy4gSXQgY2FuIGhvbGQKKyAgICAgICAgICAgcHJpbWl0aXZlIHR5
cGVzIG9yIFNWRyB0eXBlcy4gSW4gdGhpcyBwYXRjaCBwcmltaXRpdmUgdHlwZXMgd2lsbCBiZSAK
KyAgICAgICAgICAgc3VwcG9ydGVkIG9ubHkuIFRvIGRvIHRoYXQsIGEgc3VwZXJjbGFzcyBjYWxs
ZWQgU1ZHUHJpbWl0aXZlTGlzdCBpcworICAgICAgICAgICBhZGRlZC4gSXRzIGl0ZW1zIGFyZSBv
ZiBwcmltaXRpdmUgdHlwZSBvbmx5LgorCisgICAgICAgIE5vdGUgdGhhdCBTVkdMaXN0IGltcGxl
bWVudHMgdGhlIFNWRzIgc3BlY3MgcmVnYXJkaW5nIGFkZGluZyBhIG5ldyBpdGVtCisgICAgICAg
IHRvIHRoZSBsaXN0IHdoaWNoIHN0YXRlIHRoYXQgYSBjb3B5IG9mIHRoZSBpdGVtIGlzIGFkZGVk
IHRvIHRoZSBsaXN0IGlmCisgICAgICAgIHRoZSBpdGVtIGlzIGF0dGFjaGVkIHRvIGFub3RoZXIg
bGlzdC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5jaHJvbml6ZUFuaW1hdGVkU1ZHQXR0cmlidXRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hh
bmdlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHJp
bmdMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmg6IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpTVkdUZXN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXN0czo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6
OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0
czo6cmVxdWlyZWRGZWF0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0
czo6cmVxdWlyZWRFeHRlbnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjpzeXN0ZW1MYW5ndWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Rlc3RzOjpzeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdUZXN0cy5pZGw6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OlNWR1ZpZXdFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1ZpZXdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdWaWV3RWxlbWVudDo6dmlld1RhcmdldCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Zp
ZXdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcmlt
aXRpdmVQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcmltaXRpdmVQ
cm9wZXJ0eTo6c2V0QmFzZVZhbCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojpj
b21taXRQcm9wZXJ0eUNoYW5nZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lz
dHJ5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xpc3Q6Om51bWJlck9mSXRlbXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Z2V0SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xpc3Q6Omluc2VydEl0ZW1CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGlzdDo6cmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6cmVtb3ZlSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjphcHBlbmRJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xpc3Q6Oml0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6Oml0ZW1z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OnNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGlzdDo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaXN0OjpjbGVhckl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmNhbkFsdGVy
TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpjYW5HZXRJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmNhblJlcGxhY2VJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3Q6OmNhblJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6
ZGV0YWNoSXRlbXMpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdNZW1iZXJBY2Nlc3Nvcjo6bWF0Y2hlcyBjb25zdCk6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlTGlzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUHJvcGVydHk6OmlzQXR0YWNoZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJv
cGVydHk6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6ZGV0YWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojpjb250ZXh0RWxlbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6Y29tbWl0Q2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5OjphY2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UHJvcGVydHk6OmlzUmVhZE9ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHk6OmlzRGlydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OnNldERp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjpzeW5jaHJvbml6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6dmFsdWVBc1N0cmluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6U1ZHUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3IuaDogQWRkZWQuCisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaDogQWRkZWQuCisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlPd25lcjo6Y29tbWl0UHJvcGVydHlDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
U3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oOiBSZW1vdmVkLgorCiAyMDE5LTAzLTE3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IHRoZSBTVkcgcHJvcGVydHkgdGVhciBvZmYgb2JqZWN0cyBmb3IgU1ZHQW5pbWF0ZWRCb29sZWFu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDRmODQyMTMzMjVlLi43MWNmZjFiMTFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTIzODQsNyArMjM4NCw2IEBAIHN2Zy9TVkdTVkdFbGVtZW50LmNwcAogc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuY3BwCiBzdmcvU1ZHU2V0RWxlbWVudC5jcHAKIHN2Zy9TVkdTdG9wRWxlbWVu
dC5jcHAKLXN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAogc3ZnL1NWR1N0eWxlRWxlbWVudC5j
cHAKIHN2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjk1YjZhY2UwYzEuLjNiZDBjMzA1YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjYsNyArMjY2LDYgQEAKIAkJMDg3
M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3M0I4NkExMzYwNjRFQTAwQTUyMkMyIC8qIEds
eXBoUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA4NzU1OEM2MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODdC
ODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmdsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3Qjg0OTUxMjcyQ0VDNzAwQTE0NDE3
IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCAqLzsgfTsKLQkJMDg4MEY3MEUxMjgyQjQ2RDAwOTQ4NTA1
IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODBGNzBEMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdT
dGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi87IH07CiAJCTA4ODUwNjdGMTFEQTA0NUIwMDE4
MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODg1MDY4MDExREEw
NDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhB
MEUwNDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMERGQjEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi87IH07
CkBAIC0yMTM3LDYgKzIxMzYsMTAgQEAKIAkJNzFFQURDRDgyMjA4N0U3MjAwNjVBNDVGIC8qIFBv
aW50ZXJJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzFFQURDRDYyMjA4N0U2RDAwNjVBNDVGIC8qIFBvaW50ZXJJRC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxRUZDRURDMjAyQjM4QTkwMEQ3QzQx
MSAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcxRUZDRUQ3MjAyQjM4OEQwMEQ3QzQxMSAvKiBBbmltYXRpb25FZmZlY3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MUZC
OTY3QjEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVh
ck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFG
Qjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRl
YXJPZmYuaCAqLzsgfTsKKwkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3IC8qIFNWR1ByaW1pdGl2
ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
MTQ0MzJDMjIzRUIyMkUwMEYxMkZGNyAvKiBTVkdQcmltaXRpdmVMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNDQzMzIyMjNFQzg1RjAw
RjEyRkY3IC8qIFNWR0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMTQ0MzJFMjIzRUIyRkUwMEYxMkZGNyAvKiBTVkdMaXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNDQzMzMyMjNFQzhC
MDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBGQkE5NDQgLyogU1ZHUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjE0
NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0
IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MjRFRDMyQzFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5N
YXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0
RUQzMjkxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCAqLzsgfTsKIAkJNzI0
RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEz
QyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjMzLDcg
KzIyMzYsNiBAQAogCQk3QzMzMEEwMjFERjhGQUM2MDBEMzM5NUMgLyogR3JhcGhpY3NDb250ZXh0
M0RBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzMzMEEwMTFERjhGQUM2MDBEMzM5NUMgLyogR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1
dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0MzMzBBMDgxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzMEEwNjFERjlGOTUxMDBE
MzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAqLzsgfTsKIAkJN0MzOUMzNjUxRERBODY1MjAw
RkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzYzMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5n
dGhMaXN0VmFsdWVzLmggKi87IH07Ci0JCTdDMzlDMzc3MUREQkUxNzAwMEZFRkIyOSAvKiBTVkdT
dHJpbmdMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzM5QzM2NzFEREI4MkNGMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDM0E5
MUU2MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0E5MUU1MUM5NjNCODgwMEQx
QTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNCNzk3MTE5MDg3NTdCMDBCNDdBMkQgLyogVXNl
ck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIu
Y3BwICovOyB9OwogCQk3QzNCNzk3MjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5k
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNC
Nzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU2NDAsNyArNTY0Miw2IEBA
CiAJCTA4NzU1OEMzMTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRl
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Vycm9nYXRl
UGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDg3NTU4QzQxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdXJyb2dhdGVQYWlyQXdhcmVU
ZXh0SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3Qjg0OTUxMjcy
Q0VDNzAwQTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRBbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwODgwRjcwRDEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVh
ck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTdGF0aWNMaXN0UHJv
cGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdEMTFE
QTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFpbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdF
MTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBhaW50UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4
QTBERkIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1MDUsNiArOTUwNiwx
MCBAQAogCQk3MUZCOTY3QTEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
blByb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdB
bmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyMTQ0MzI5MjIzRTNEQzUwMEYxMkZGNyAvKiBTVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNDQzMkEyMjNFM0RFNDAwRjEyRkY3
IC8qIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyMTQ0MzJDMjIzRUIyMkUwMEYxMkZGNyAvKiBTVkdQcmltaXRpdmVMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzIxNDQzMkUyMjNFQjJGRTAwRjEyRkY3IC8qIFNWR0xpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMyRjIyM0VC
NkU4MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzIxNDQzMzAyMjNFQjdDNzAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5QWNjZXNzb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHUHJvcGVydHlBY2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjNGOTdCQzIyMzhFRTA4MDA3RjA3OUMgLyogU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250
cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkQyMjM4RUUw
ODAwN0YwNzlDIC8qIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjNGOTdCRTIyMzk1MTJEMDA3RjA3OUMgLyogU1ZHTGVnYWN5QXR0cmli
dXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZWdhY3lB
dHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTk3MzAsOCArOTczNSw2IEBACiAJCTdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBK
U0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0MzOUMzNjIxRERBODY0OTAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzYzMUREQTg2
NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0xlbmd0aExpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0MzOUMzNjYxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHU3RyaW5nTGlzdFZh
bHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlDMzY3MUREQjgyQ0Yw
MEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR1N0cmluZ0xpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0MzOUMzNjgxRERCODZEMzAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTnVtYmVyTGlzdFZhbHVl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzY5MUREQjg2RDMwMEZF
RkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MzOUMzNkExRERCODcxQzAwRkVGQjI5IC8qIFNWR1BvaW50TGlzdFZhbHVlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQb2ludExpc3RWYWx1ZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNDMsMTggKzE2MjQ2LDIxIEBACiAJ
CQkJNTVENzBEMjEyMjNCMDBCQjAwMDQ0QjhFIC8qIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHku
Y3BwICovLAogCQkJCTU1RDcwRDIwMjIzQjAwOTEwMDA0NEI4RSAvKiBTVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5LmggKi8sCiAJCQkJNTVENzBEMjIyMjNCMDBFQTAwMDQ0QjhFIC8qIFNWR0xlZ2Fj
eVByb3BlcnR5LmggKi8sCisJCQkJNzIxNDQzMkUyMjNFQjJGRTAwRjEyRkY3IC8qIFNWR0xpc3Qu
aCAqLywKIAkJCQkwODEwNzY0MzEyODI4NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5Lmgg
Ki8sCiAJCQkJMDg4QTBFMDAxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCAqLywKIAkJCQkwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAgLyogU1ZHTWF0cml4VGVhck9m
Zi5oICovLAogCQkJCTU1RUU1MzU0MjIzQjI5RTkwMEZCQTk0NCAvKiBTVkdNZW1iZXJBY2Nlc3Nv
ci5oICovLAogCQkJCTU1QkUwMjVBMjIzQjI5QzIwMDMyRjA4QSAvKiBTVkdQb2ludGVyTWVtYmVy
QWNjZXNzb3IuaCAqLywKKwkJCQk3MjE0NDMyQzIyM0VCMjJFMDBGMTJGRjcgLyogU1ZHUHJpbWl0
aXZlTGlzdC5oICovLAogCQkJCTU1RUU1MzYzMjIzQjJBMjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0
eS5oICovLAorCQkJCTcyMTQ0MzMwMjIzRUI3QzcwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eUFjY2Vz
c29yLmggKi8sCisJCQkJNzIxNDQzMkYyMjNFQjZFODAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5QWNj
ZXNzb3JJbXBsLmggKi8sCiAJCQkJNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3Bl
cnR5T3duZXIuaCAqLywKIAkJCQk1NUJFMDI1QzIyM0IyOUMzMDAzMkYwOEEgLyogU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5LmggKi8sCiAJCQkJNTVCRTAyNTcyMjNCMjlDMDAwMzJGMDhBIC8qIFNW
R1Byb3BlcnR5UmVnaXN0cnkuaCAqLywKIAkJCQkwODhBMEUwMjEyNkVGMURCMDA5NzhGN0EgLyog
U1ZHUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR1Byb3BlcnR5VHJhaXRzLmggKi8sCi0JCQkJMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4NTA1IC8q
IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODEzQTRFOTEyODQxMzI2
MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHByb3BlcnRpZXM7CkBAIC0yNDUxMiw4ICsyNDUxOCw2IEBACiAJCQkJQjIyMjc5MTQwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmlkbCAqLywKIAkJCQlCMjIyNzkxNjBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oICovLAogCQkJCUIyMjI3OTE3MEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmlkbCAqLywKLQkJCQk3QzM5QzM2NjFEREI4MkNGMDBG
RUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAgKi8sCi0JCQkJN0MzOUMzNjcxRERCODJD
RjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCAqLywKIAkJCQlCMjIyNzkyMTBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzkyMjBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc5MjMwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5pZGwgKi8sCkBAIC0zMjAxNyw2ICszMjAyMSw3
IEBACiAJCQkJN0NDRUJGQzAxREQ4RjZBQjAwMkM0MEI4IC8qIFNWR0xlbmd0aFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzQzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHTGluZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMyMjIzRUM4
NUYwMEYxMkZGNyAvKiBTVkdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODEwNzY0NDEyODI4
NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhB
MEUwOTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMjA4NCw2ICszMjA4OSw5IEBACiAJCQkJQjIyMjdBOTEwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0E5NDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0E5NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3IC8qIFNWR1By
aW1pdGl2ZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZG
NyAvKiBTVkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzQyMjNFQzkxNjAw
RjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTBC
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4OEEwRTBDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjEwMiwxMSArMzIxMTAsOSBAQAogCQkJ
CUIyMjI3QUEzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0FBNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTRBRkQwMTAwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkwODgwRjcwRTEyODJCNDZEMDA5NDg1MDUgLyogU1ZH
U3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxM0E0RUEx
Mjg0MTMyNjAwOTkyNTExIC8qIFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBQTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0FBQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlz
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0MzOUMzNzcxRERCRTE3MDAwRkVGQjI5IC8qIFNWR1N0
cmluZ0xpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUI4MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUJCMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0FCRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYjY2NGQzZDBiMGMuLjBjODY1OTg4MjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC03MjAsMTIgKzcyMCwyNCBAQCB2b2lk
IFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29ucwogICAgIFNWR0VsZW1lbnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0
X2Nhc3Q8U1ZHRWxlbWVudCo+KHRoaXMpOwogICAgIGlmIChuYW1lID09IGFueVFOYW1lKCkpCiAg
ICAgICAgIHN5bmNocm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRyaWJ1dGUobm9uQ29uc3RUaGlzKTsK
LSAgICBlbHNlIGlmIChpc0FuaW1hdGVkUHJvcGVydHlBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICBl
bHNlIHsKICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBoYXMgY2hhbmdl
ZCwgc2VyaWFsaXplIHRoZSBuZXcgdmFsdWUgdG8gdGhlIGF0dHJpYnV0ZS4KICAgICAgICAgaWYg
KGF1dG8gdmFsdWUgPSBwcm9wZXJ0eVJlZ2lzdHJ5KCkuc3luY2hyb25pemUobmFtZSkpCiAgICAg
ICAgICAgICBub25Db25zdFRoaXMtPnNldFN5bmNocm9uaXplZExhenlBdHRyaWJ1dGUobmFtZSwg
KnZhbHVlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbm9uQ29uc3RUaGlzLT5zeW5jaHJvbml6ZUF0
dHJpYnV0ZShuYW1lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbm9uQ29uc3RUaGlzLT5z
eW5jaHJvbml6ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICB9Cit9CisgICAgCit2b2lkIFNWR0VsZW1l
bnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5KiBwcm9wZXJ0eSkKK3sKKyAgICAv
LyBXZSB3YW50IHRvIGRpcnR5IHRoZSB0b3AtbGV2ZWwgcHJvcGVydHkgd2hlbiBhIGRlc2NlbmRh
bnQgY2hhbmdlcy4gRm9yIGV4YW1wbGUKKyAgICAvLyBhIGNoYW5nZSBpbiBhbiBTVkdMZW5ndGgg
aXRlbSBpbiBTVkdMZW5ndGhMaXN0IHNob3VsZCBzZXQgdGhlIGRpcnR5IGZsYWcgb24KKyAgICAv
LyBTVkdMZW5ndGhMaXN0IGFuZCBub3QgdGhlIFNWR0xlbmd0aC4KKyAgICBwcm9wZXJ0eS0+c2V0
RGlydHkoKTsKKworICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc3ZnQXR0cmli
dXRlQ2hhbmdlZChwcm9wZXJ0eVJlZ2lzdHJ5KCkucHJvcGVydHlBdHRyaWJ1dGVOYW1lKCpwcm9w
ZXJ0eSkpOwogfQogCiB2b2lkIFNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR0Fu
aW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApp
bmRleCBkOGJmYzJkZjg3Yi4uOGE4ODQ3NDVkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApA
QCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW5pbWF0ZWRQcm9wZXJ0eUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgYm9vbCBpc0FuaW1hdGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAotICAgIHZvaWQgY29tbWl0
UHJvcGVydHlDaGFuZ2UoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNvbW1pdFByb3BlcnR5Q2hh
bmdlKFNWR1Byb3BlcnR5Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5n
ZShTVkdBbmltYXRlZFByb3BlcnR5Jik7CiAKICAgICBjb25zdCBTVkdFbGVtZW50KiBhdHRyaWJ1
dGVDb250ZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCmluZGV4IDdmZTdmMDBmYzUyLi5lZDdlYTQ0OTY4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDMzICsyNSw2MyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1
ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFs
dWVzLmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU1ZHUHJp
bWl0aXZlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR1N0cmluZ0xp
c3QgZmluYWwgOiBwdWJsaWMgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdM
aXN0VmFsdWVzPiB7CitjbGFzcyBTVkdTdHJpbmdMaXN0IGZpbmFsIDogcHVibGljIFNWR1ByaW1p
dGl2ZUxpc3Q8U3RyaW5nPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1ByaW1pdGl2ZUxpc3Q8U3Ry
aW5nPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHVzaW5nIEJhc2U6Om1faXRlbXM7CisK
IHB1YmxpYzoKLSAgICB1c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdFZhbHVlcz47Ci0gICAgdXNpbmcg
TGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBw
ZXJDYWNoZTsKKyAgICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xpc3Q+IGNyZWF0ZShTVkdQcm9wZXJ0
eU93bmVyKiBvd25lcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1N0
cmluZ0xpc3Qob3duZXIpKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xpc3Q+
IGNyZWF0ZShTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgU1ZHU3RyaW5nTGlzdFZhbHVlcyYg
dmFsdWVzKQorICAgIHZvaWQgcmVzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdTdHJpbmdMaXN0KCZjb250ZXh0RWxlbWVudCwg
dmFsdWVzKSk7CisgICAgICAgIHBhcnNlKHN0cmluZywgJyAnKTsKKworICAgICAgICAvLyBBZGQg
ZW1wdHkgc3RyaW5nLCBpZiBsaXN0IGlzIGVtcHR5LgorICAgICAgICBpZiAobV9pdGVtcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChlbXB0eVN0cmluZygpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xpc3Q+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmYmLCBTVkdQcm9wZXJ0eVJvbGUsIFNWR1N0cmluZ0xpc3RWYWx1ZXMmIHZhbHVl
cywgTGlzdFdyYXBwZXJDYWNoZSYpCisgICAgYm9vbCBwYXJzZShjb25zdCBTdHJpbmcmIGRhdGEs
IFVDaGFyIGRlbGltaXRlcikKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRv
IHJlbW92ZSB0aGlzLiBJdCdzIG9ubHkgbmVlZGVkIHRvIGtlZXAgV2luZG93cyBjb21waWxpbmcu
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTVkdTdHJpbmdMaXN0KG51bGxwdHIsIHZhbHVlcykpOworICAgICAgICBjbGVhckl0ZW1z
KCk7CisKKyAgICAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGRh
dGEpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgICAgICBjb25zdCBVQ2hhciogcHRyID0g
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgICAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsg
ZGF0YS5sZW5ndGgoKTsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgeworICAgICAgICAgICAg
Y29uc3QgVUNoYXIqIHN0YXJ0ID0gcHRyOworICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAm
JiAqcHRyICE9IGRlbGltaXRlciAmJiAhaXNTVkdTcGFjZSgqcHRyKSkKKyAgICAgICAgICAgICAg
ICBwdHIrKzsKKyAgICAgICAgICAgIGlmIChwdHIgPT0gc3RhcnQpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChTdHJpbmcoc3RhcnQsIHB0ciAtIHN0
YXJ0KSk7CisgICAgICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIs
IGVuZCwgZGVsaW1pdGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwdHIgPT0gZW5k
OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBTVkdTdHJpbmdMaXN0KFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50LCBTVkdTdHJpbmdMaXN0VmFsdWVzJiB2YWx1ZXMpCi0gICAgICAgIDogU1ZHU3Rh
dGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdMaXN0VmFsdWVzPihjb250ZXh0RWxlbWVu
dCwgdmFsdWVzKQorICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgICAgICBmb3IgKGF1dG8g
c3RyaW5nIDogbV9pdGVtcykgeworICAgICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoc3RyaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0cmluZ0xpc3RWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RW
YWx1ZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmY4OThhOTEyYi4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIgotCi0j
aW5jbHVkZSAiU1ZHRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi12b2lkIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OmNvbW1pdENoYW5nZShTVkdFbGVtZW50JiBj
b250ZXh0RWxlbWVudCkKLXsKLSAgICBjb250ZXh0RWxlbWVudC5pbnZhbGlkYXRlU1ZHQXR0cmli
dXRlcygpOwotICAgIGNvbnRleHRFbGVtZW50LnN2Z0F0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1
dGVOYW1lKTsKLX0KLQotdm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVzOjpyZXNldChjb25zdCBTdHJp
bmcmIHN0cmluZykKLXsKLSAgICBwYXJzZShzdHJpbmcsICcgJyk7Ci0KLSAgICAvLyBBZGQgZW1w
dHkgc3RyaW5nLCBpZiBsaXN0IGlzIGVtcHR5LgotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAg
IGFwcGVuZChlbXB0eVN0cmluZygpKTsKLX0KLQotdm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVzOjpw
YXJzZShjb25zdCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKLXsKLSAgICAvLyBUT0RP
IDogbW9yZSBlcnJvciBjaGVja2luZy9yZXBvcnRpbmcKLSAgICBjbGVhcigpOwotCi0gICAgYXV0
byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGRhdGEpLnVwY29udmVydGVkQ2hh
cmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBwdHIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7
Ci0gICAgY29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIGRhdGEubGVuZ3RoKCk7Ci0gICAgd2hpbGUg
KHB0ciA8IGVuZCkgewotICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBwdHI7Ci0gICAgICAg
IHdoaWxlIChwdHIgPCBlbmQgJiYgKnB0ciAhPSBkZWxpbWl0ZXIgJiYgIWlzU1ZHU3BhY2UoKnB0
cikpCi0gICAgICAgICAgICBwdHIrKzsKLSAgICAgICAgaWYgKHB0ciA9PSBzdGFydCkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBhcHBlbmQoU3RyaW5nKHN0YXJ0LCBwdHIgLSBzdGFydCkp
OwotICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIsIGVuZCwgZGVs
aW1pdGVyKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBTVkdTdHJpbmdMaXN0VmFsdWVzOjp2YWx1ZUFz
U3RyaW5nKCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0KLSAgICB1bnNp
Z25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgaWYgKGkgPiAwKQotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnKTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZChhdChpKSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHJpbmdMaXN0VmFsdWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmOWEyNzQy
MjE5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZh
bHVlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5j
bHVkZSAiU1ZHQXR0cmlidXRlQWNjZXNzb3IuaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0
cy5oIgotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFNWR0VsZW1lbnQ7Ci1jbGFzcyBTVkdTdHJpbmdMaXN0OwotY2xhc3MgU1ZHU3RyaW5n
TGlzdFZhbHVlczsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1jbGFzcyBTVkdQcm9wZXJ0eVRl
YXJPZmY7Ci0KLXVzaW5nIFNWR1N0cmluZ0xpc3RWYWx1ZXNBdHRyaWJ1dGUgPSBTVkdQcm9wZXJ0
eUF0dHJpYnV0ZTxTVkdTdHJpbmdMaXN0VmFsdWVzPjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgT3du
ZXJUeXBlPgotdXNpbmcgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZUFjY2Vzc29yID0gU1ZH
UHJvcGVydHlBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0cmluZ0xpc3RWYWx1ZXNB
dHRyaWJ1dGU+OwotCi1jbGFzcyBTVkdTdHJpbmdMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZl
Y3RvcjxTdHJpbmc+IHsKLXB1YmxpYzoKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0
dHJpYnV0ZU5hbWUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgcmVzZXQoY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmLCBVQ2hhciBkZWxpbWl0ZXIgPSAnLCcp
OwotCi0gICAgLy8gT25seSB1c2VkIGJ5IFNWR1N0cmluZ0xpc3QuCi0gICAgdm9pZCBjb21taXRD
aGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpOwotCi0gICAgU3RyaW5nIHZhbHVlQXNT
dHJpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBtX2F0
dHJpYnV0ZU5hbWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdTdHJpbmdMaXN0VmFsdWVzPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBT
VkdTdHJpbmdMaXN0VmFsdWVzJiBsaXN0KSB7IHJldHVybiBsaXN0LnZhbHVlQXNTdHJpbmcoKTsg
fQotCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU3RyaW5nOwotICAgIHVzaW5nIExpc3RJdGVt
VGVhck9mZiA9IFNWR1Byb3BlcnR5VGVhck9mZjxTdHJpbmc+OwotICAgIHVzaW5nIExpc3RQcm9w
ZXJ0eVRlYXJPZmYgPSBTVkdTdHJpbmdMaXN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKaW5kZXggNzEzNGNlN2I4ZTYuLmY0NGY5MGUzZmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKQEAgLTEwOSwxOCArMTA5LDE2IEBAIHN0YXRpYyBjb25z
dCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkU1ZH
RmVhdHVyZXMoKQogCiBTVkdUZXN0czo6U1ZHVGVzdHMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiAgICAgOiBtX2NvbnRleHRFbGVtZW50KCpjb250ZXh0RWxlbWVudCkKKyAgICAsIG1fcmVx
dWlyZWRGZWF0dXJlcyhTVkdTdHJpbmdMaXN0OjpjcmVhdGUoY29udGV4dEVsZW1lbnQpKQorICAg
ICwgbV9yZXF1aXJlZEV4dGVuc2lvbnMoU1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKGNvbnRleHRFbGVt
ZW50KSkKKyAgICAsIG1fc3lzdGVtTGFuZ3VhZ2UoU1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKGNvbnRl
eHRFbGVtZW50KSkKIHsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdU
ZXN0czo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJp
YnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cmVxdWlyZWRG
ZWF0dXJlc0F0dHIsICZTVkdUZXN0czo6bV9yZXF1aXJlZEZlYXR1cmVzPigpOwotICAgIHJlZ2lz
dHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLCAm
U1ZHVGVzdHM6Om1fcmVxdWlyZWRFeHRlbnNpb25zPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsICZTVkdUZXN0czo6bV9zeXN0
ZW1MYW5ndWFnZT4oKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6
cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIsICZTVkdUZXN0
czo6bV9yZXF1aXJlZEZlYXR1cmVzPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLCAmU1ZHVGVzdHM6
Om1fcmVxdWlyZWRFeHRlbnNpb25zPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsICZTVkdUZXN0czo6bV9z
eXN0ZW1MYW5ndWFnZT4oKTsKKyAgICB9KTsKIH0KIAogU1ZHVGVzdHM6OkF0dHJpYnV0ZVJlZ2lz
dHJ5JiBTVkdUZXN0czo6YXR0cmlidXRlUmVnaXN0cnkoKQpAQCAtMTMwLDcgKzEyOCw3IEBAIFNW
R1Rlc3RzOjpBdHRyaWJ1dGVSZWdpc3RyeSYgU1ZHVGVzdHM6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCkK
IAogYm9vbCBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQogewotICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIHJldHVybiBQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwogfQogCiBib29sIFNWR1Rlc3RzOjpoYXNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCkBAIC0xNDUsMTUgKzE0MywxNSBAQCBi
b29sIFNWR1Rlc3RzOjpoYXNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAKIGJv
b2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogewotICAgIGZvciAoYXV0byYgZmVhdHVyZSA6
IG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZSgpKSB7CisgICAgZm9yIChhdXRvJiBmZWF0dXJlIDog
bV9yZXF1aXJlZEZlYXR1cmVzLT5pdGVtcygpKSB7CiAgICAgICAgIGlmIChmZWF0dXJlLmlzRW1w
dHkoKSB8fCAhc3VwcG9ydGVkU1ZHRmVhdHVyZXMoKS5jb250YWlucyhmZWF0dXJlKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IG1f
c3lzdGVtTGFuZ3VhZ2UudmFsdWUoKSkgeworICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBtX3N5
c3RlbUxhbmd1YWdlLT5pdGVtcygpKSB7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSBkZWZhdWx0
TGFuZ3VhZ2UoKS5zdWJzdHJpbmcoMCwgMikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogbV9yZXF1aXJlZEV4dGVuc2lvbnMudmFs
dWUoKSkgeworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogbV9yZXF1aXJlZEV4dGVuc2lvbnMt
Pml0ZW1zKCkpIHsKICAgICAgICAgaWYgKCFoYXNFeHRlbnNpb24oZXh0ZW5zaW9uKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNjMsMTEgKzE2MSwxMSBAQCBib29sIFNW
R1Rlc3RzOjppc1ZhbGlkKCkgY29uc3QKIHZvaWQgU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVxdWlyZWRGZWF0dXJlc0F0dHIpCi0g
ICAgICAgIG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZSgpLnJlc2V0KHZhbHVlKTsKKyAgICAgICAg
bV9yZXF1aXJlZEZlYXR1cmVzLT5yZXNldCh2YWx1ZSk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUg
PT0gcmVxdWlyZWRFeHRlbnNpb25zQXR0cikKLSAgICAgICAgbV9yZXF1aXJlZEV4dGVuc2lvbnMu
dmFsdWUoKS5yZXNldCh2YWx1ZSk7CisgICAgICAgIG1fcmVxdWlyZWRFeHRlbnNpb25zLT5yZXNl
dCh2YWx1ZSk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gc3lzdGVtTGFuZ3VhZ2VBdHRyKQot
ICAgICAgICBtX3N5c3RlbUxhbmd1YWdlLnZhbHVlKCkucmVzZXQodmFsdWUpOworICAgICAgICBt
X3N5c3RlbUxhbmd1YWdlLT5yZXNldCh2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHVGVzdHM6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xODcsMjQg
KzE4NSw2IEBAIHZvaWQgU1ZHVGVzdHM6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxR
dWFsaWZpZWROYW1lPiYgc3VwcG9ydGVkQXR0cmlidXRlCiAgICAgc3VwcG9ydGVkQXR0cmlidXRl
cy5hZGQoc3lzdGVtTGFuZ3VhZ2VBdHRyKTsKIH0KIAotUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR1Rl
c3RzOjpyZXF1aXJlZEZlYXR1cmVzKCkKLXsKLSAgICBtX3JlcXVpcmVkRmVhdHVyZXMuc2V0U2hv
dWxkU3luY2hyb25pemUodHJ1ZSk7Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZSht
X2NvbnRleHRFbGVtZW50LCBtX3JlcXVpcmVkRmVhdHVyZXMudmFsdWUoKSk7Ci19Ci0KLVJlZjxT
VkdTdHJpbmdMaXN0PiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKCkKLXsKLSAgICBtX3Jl
cXVpcmVkRXh0ZW5zaW9ucy5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICByZXR1cm4g
U1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKG1fY29udGV4dEVsZW1lbnQsIG1fcmVxdWlyZWRFeHRlbnNp
b25zLnZhbHVlKCkpOwotfQotCi1SZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHVGVzdHM6OnN5c3RlbUxh
bmd1YWdlKCkKLXsKLSAgICBtX3N5c3RlbUxhbmd1YWdlLnNldFNob3VsZFN5bmNocm9uaXplKHRy
dWUpOwotICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUobV9jb250ZXh0RWxlbWVudCwg
bV9zeXN0ZW1MYW5ndWFnZS52YWx1ZSgpKTsKLX0KLQogYm9vbCBTVkdUZXN0czo6aGFzRmVhdHVy
ZUZvckxlZ2FjeUJpbmRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIGhlcmUgb25seSB0byBi
ZSBleHBvc2VkIGluIHRoZSBPYmplY3RpdmUtQyBhbmQgR09iamVjdCBiaW5kaW5ncyBmb3IgYm90
aCBOb2RlIGFuZCBET01JbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXN0cy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgKaW5kZXggNjcx
MzZlZGRiOGUuLjE2MmVjMTI1ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGVzdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaApAQCAtMjEsOCArMjEs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZS5oIgotI2luY2x1
ZGUgIlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksMjEgKzU4LDIwIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBoYXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MoY29u
c3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgY2FsbGVkIGZyb20gRE9NIHRocm91Z2ggdGhlIHN1cGVyIGNsYXNzZXMu
Ci0gICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHJlcXVpcmVkRmVhdHVyZXMoKTsKLSAgICBSZWY8U1ZH
U3RyaW5nTGlzdD4gcmVxdWlyZWRFeHRlbnNpb25zKCk7Ci0gICAgUmVmPFNWR1N0cmluZ0xpc3Q+
IHN5c3RlbUxhbmd1YWdlKCk7CisgICAgU1ZHU3RyaW5nTGlzdCYgcmVxdWlyZWRGZWF0dXJlcygp
IHsgcmV0dXJuIG1fcmVxdWlyZWRGZWF0dXJlczsgfQorICAgIFNWR1N0cmluZ0xpc3QmIHJlcXVp
cmVkRXh0ZW5zaW9ucygpIHsgcmV0dXJuIG1fcmVxdWlyZWRFeHRlbnNpb25zOyB9CisgICAgU1ZH
U3RyaW5nTGlzdCYgc3lzdGVtTGFuZ3VhZ2UoKSB7IHJldHVybiBtX3N5c3RlbUxhbmd1YWdlOyB9
CiAKIHByb3RlY3RlZDoKICAgICBTVkdUZXN0cyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7
CiAKIHByaXZhdGU6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHlJbXBsPFNWR1Rlc3RzPjsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKIAogICAgIFNWR0VsZW1lbnQmIG1fY29udGV4dEVsZW1lbnQ7Ci0gICAgU1ZHU3Ry
aW5nTGlzdFZhbHVlc0F0dHJpYnV0ZSBtX3JlcXVpcmVkRmVhdHVyZXMgeyBTVkdOYW1lczo6cmVx
dWlyZWRGZWF0dXJlc0F0dHIgfTsKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRlIG1f
cmVxdWlyZWRFeHRlbnNpb25zIHsgU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIgfTsK
LSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRlIG1fc3lzdGVtTGFuZ3VhZ2UgeyBTVkdO
YW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyIH07CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fcmVx
dWlyZWRGZWF0dXJlczsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEV4dGVuc2lv
bnM7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fc3lzdGVtTGFuZ3VhZ2U7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVz
dHMuaWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbAppbmRleCBhNDRmMDczZTk0
NC4uM2I3YTljNzg4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbApAQCAtMjgsOSArMjgsOSBA
QAogICAgIE5vSW50ZXJmYWNlT2JqZWN0LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50
ZXJmYWNlIFNWR1Rlc3RzIHsKLSAgICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOwotICAgIFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHJlcXVpcmVkRXh0ZW5zaW9uczsKLSAgICBbTmV3T2JqZWN0
XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKIAogICAgIC8v
IEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3
cm9uZy4KICAgICBib29sZWFuIGhhc0V4dGVuc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXh0ZW5z
aW9uID0gInVuZGVmaW5lZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmgKaW5kZXggMzNjOWY2NTM2Y2IuLjNmMjhkZmRkN2FlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKQEAgLTYyLDEyICs2
MiwxNSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVy
UHJveHk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKIAorICAgIGNv
bnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwogICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7CiAgICAgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVy
UHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aExpc3RBdHRyaWJ1dGUgbV94OwogICAg
IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZSBtX3k7CiAgICAgU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0QXR0cmlidXRlIG1fZHg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcApp
bmRleCA1M2JmNGEzNGZmMS4uMzM5NmM2ZTk4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdF
bGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTM0LDkgKzM0LDEzIEBAIGlubGluZSBTVkdWaWV3RWxlbWVudDo6
U1ZHVmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
CiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCh0aGlzKQogICAgICwgU1ZHRml0VG9WaWV3Qm94KHRoaXMpCi0gICAg
LCBtX3ZpZXdUYXJnZXQoU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjp2aWV3VGFnKSk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnZpZXdUYXJn
ZXRBdHRyLCAmU1ZHVmlld0VsZW1lbnQ6Om1fdmlld1RhcmdldD4oKTsKKyAgICB9KTsKIH0KIAog
UmVmPFNWR1ZpZXdFbGVtZW50PiBTVkdWaWV3RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ0LDE1ICs0OCwxMiBAQCBS
ZWY8U1ZHVmlld0VsZW1lbnQ+IFNWR1ZpZXdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1ZpZXdF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdW
aWV3RWxlbWVudDo6dmlld1RhcmdldCgpCi17Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNy
ZWF0ZSgqdGhpcywgbV92aWV3VGFyZ2V0KTsKLX0KLQogdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCi0g
ICAgICAgIG1fdmlld1RhcmdldC5yZXNldCh2YWx1ZSk7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnZpZXdUYXJnZXRBdHRyKSB7CisgICAgICAgIG1fdmlld1RhcmdldC0+cmVzZXQodmFsdWUp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpOwogICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKaW5k
ZXggZDYzMzM1YmViODkuLmYzZjc5NWQzMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVmlld0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI0LDEyICsyNCwxMSBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHRml0
VG9WaWV3Qm94LmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlNWR1pv
b21BbmRQYW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdTdHJpbmdMaXN0
OwotCiBjbGFzcyBTVkdWaWV3RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJs
aWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgcHVibGljIFNWR0ZpdFRvVmlld0JveCwg
cHVibGljIFNWR1pvb21BbmRQYW4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU1ZHVmll
d0VsZW1lbnQpOwogcHVibGljOgpAQCAtMzgsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
U1ZHRWxlbWVudDo6cmVmOwogICAgIHVzaW5nIFNWR0VsZW1lbnQ6OmRlcmVmOwogCi0gICAgUmVm
PFNWR1N0cmluZ0xpc3Q+IHZpZXdUYXJnZXQoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gdmll
d1RhcmdldCgpIHsgcmV0dXJuIG1fdmlld1RhcmdldC5jb3B5UmVmKCk7IH0KIAogcHJpdmF0ZToK
ICAgICBTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAg
LTU2LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRy
aWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHU3RyaW5nTGlzdFZhbHVlcyBtX3ZpZXdUYXJn
ZXQ7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNWR1N0cmluZ0xpc3Q6
OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmYuaAppbmRleCA5MDUxMzBmOWFiNC4uMDk3M2QyYmRkYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZi5oCkBAIC0yMiw3ICsyMiw2IEBACiAKICNpbmNsdWRlICJTVkdM
ZWdhY3lBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5VGVhck9m
Zi5oIgotI2luY2x1ZGUgIlNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgKaW5kZXggYTBhNDMxMjQ4ZDYu
LmM0MjU2MTkyMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oCkBAIC00OSw3ICs0OSw3IEBA
IHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCYXNlVmFsKGNvbnN0IFByb3BlcnR5
VHlwZSYgYmFzZVZhbCkKICAgICB7CiAgICAgICAgIG1fYmFzZVZhbCA9IGJhc2VWYWw7Ci0gICAg
ICAgIGNvbW1pdFByb3BlcnR5Q2hhbmdlKCk7CisgICAgICAgIGNvbW1pdFByb3BlcnR5Q2hhbmdl
KG51bGxwdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAppbmRleCA0
N2JjNGNiMTQxOS4uZWMyZjNhNDg3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFNW
R1Byb3BlcnR5T3duZXIqIFNWR0FuaW1hdGVkUHJvcGVydHk6Om93bmVyKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jb250ZXh0RWxlbWVudDsKIH0KIAotdm9pZCBTVkdBbmltYXRlZFByb3BlcnR5Ojpj
b21taXRQcm9wZXJ0eUNoYW5nZSgpCit2b2lkIFNWR0FuaW1hdGVkUHJvcGVydHk6OmNvbW1pdFBy
b3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5KikKIHsKICAgICBpZiAoIW1fY29udGV4dEVsZW1lbnQp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHkuaAppbmRleCAwNGM5MzRiMWMxMy4uODNjZjA5MzE1NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJvdGVjdGVkOgogICAgIH0KICAgICAKICAgICBTVkdQ
cm9wZXJ0eU93bmVyKiBvd25lcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgY29tbWl0UHJv
cGVydHlDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdlKFNW
R1Byb3BlcnR5Kikgb3ZlcnJpZGU7CiAgICAgCiAgICAgU1ZHRWxlbWVudCogbV9jb250ZXh0RWxl
bWVudCB7IG51bGxwdHIgfTsKICAgICBib29sIG1faXNBbmltYXRpbmcgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5
LmgKaW5kZXggYjI5NjdkYjU2YTcuLjNiNDY5MzgwMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKQEAgLTM3LDcgKzM3
LDYgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJT
VkdBdHRyaWJ1dGVBY2Nlc3Nvci5oIgogI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVy
dHkuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAiU1ZHWm9v
bUFuZFBhblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC01MiwxMyArNTEs
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfQogCi0gICAgLy8gTm9uIGFu
aW1hdGFibGUgYXR0cmlidXRlcwotICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgU1ZHU3RyaW5nTGlzdFZhbHVl
c0F0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+Ci0gICAgdm9pZCByZWdpc3RlckF0dHJp
YnV0ZSgpCi0gICAgewotICAgICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdTdHJpbmdMaXN0VmFs
dWVzQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPGF0dHJp
YnV0ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkda
b29tQW5kUGFuVHlwZUF0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+CiAgICAgdm9pZCBy
ZWdpc3RlckF0dHJpYnV0ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
TGlzdC5oCmluZGV4IDhiMTM3ODkxNzkxLi4yOTNhNTRmNWQ0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0xpc3QuaApAQCAtMSArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwogCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHkuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtVHlwZT4KK2NsYXNzIFNWR0xpc3Qg
OiBwdWJsaWMgU1ZHUHJvcGVydHkgeworcHVibGljOgorICAgIHVuc2lnbmVkIG51bWJlck9mSXRl
bXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXRlbXMuc2l6ZSgpOworICAgIH0K
KworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFyKCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAg
QVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgY2xlYXJJdGVt
cygpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gZ2V0SXRlbSh1bnNpZ25lZCBpbmRleCkKKyAg
ICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuR2V0SXRlbShpbmRleCk7CisgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KSk7CisKKyAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25P
cjxJdGVtVHlwZT4gaW5pdGlhbGl6ZShJdGVtVHlwZSYmIG5ld0l0ZW0pCisgICAgeworICAgICAg
ICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7
CisKKyAgICAgICAgLy8gU3BlYzogQ2xlYXJzIGFsbCBleGlzdGluZyBjdXJyZW50IGl0ZW1zIGZy
b20gdGhlIGxpc3QuCisgICAgICAgIGNsZWFySXRlbXMoKTsKKworICAgICAgICBhdXRvIGl0ZW0g
PSBhcHBlbmQoV1RGTW92ZShuZXdJdGVtKSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAg
ICAgICByZXR1cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVt
VHlwZT4gaW5zZXJ0SXRlbUJlZm9yZShJdGVtVHlwZSYmIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRlckxpc3QoKTsKKyAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKTsKKworICAgICAgICAvLyBTcGVjOiBJZiB0aGUgaW5kZXggaXMgZ3JlYXRlciB0aGFuIG9y
IGVxdWFsIHRvIG51bWJlck9mSXRlbXMsCisgICAgICAgIC8vIHRoZW4gdGhlIG5ldyBpdGVtIGlz
IGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCisgICAgICAgIGlmIChpbmRleCA+IG51
bWJlck9mSXRlbXMoKSkKKyAgICAgICAgICAgIGluZGV4ID0gbnVtYmVyT2ZJdGVtcygpOworCisg
ICAgICAgIGF1dG8gaXRlbSA9IGluc2VydChpbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CisgICAg
ICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9
CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gcmVwbGFjZUl0ZW0oSXRlbVR5cGUmJiBuZXdJ
dGVtLCB1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuUmVw
bGFjZUl0ZW0oaW5kZXgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VS
VChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIGF1dG8gaXRlbSA9IHJl
cGxhY2UoaW5kZXgsIFdURk1vdmUobmV3SXRlbSkpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUoaXRlbSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8
SXRlbVR5cGU+IHJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBhdXRv
IHJlc3VsdCA9IGNhblJlbW92ZUl0ZW0oaW5kZXgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7
CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAg
IGF1dG8gaXRlbSA9IHJlbW92ZShpbmRleCk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAg
ICAgICByZXR1cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVt
VHlwZT4gYXBwZW5kSXRlbShJdGVtVHlwZSYmIG5ld0l0ZW0pCisgICAgeworICAgICAgICBhdXRv
IHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAg
ICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIGF1dG8g
aXRlbSA9IGFwcGVuZChXVEZNb3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7
CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGl0ZW0pOworICAgIH0KKworICAgIC8vIFBhcnNlcnMg
YW5kIGFuaW1hdG9ycyBuZWVkIHRvIGhhdmUgYSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBpdGVtcy4K
KyAgICBWZWN0b3I8SXRlbVR5cGU+JiBpdGVtcygpIHsgcmV0dXJuIG1faXRlbXM7IH0KKyAgICBj
b25zdCBWZWN0b3I8SXRlbVR5cGU+JiBpdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXM7IH0K
KyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXMuc2l6ZSgpOyB9CisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5pc0VtcHR5KCk7IH0KKworICAg
IHZvaWQgY2xlYXJJdGVtcygpCisgICAgeworICAgICAgICBkZXRhY2hJdGVtcygpOworICAgICAg
ICBtX2l0ZW1zLmNsZWFyKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdXNpbmcgU1ZHUHJv
cGVydHk6OlNWR1Byb3BlcnR5OworCisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2FuQWx0ZXJMaXN0
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2FuR2V0SXRlbSh1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA+PSBtX2l0ZW1zLnNpemUo
KSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjxib29sPiBjYW5SZXBs
YWNlSXRlbSh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2Fu
QWx0ZXJMaXN0KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKGluZGV4ID49IG1faXRl
bXMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9y
IH07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPGJvb2w+
IGNhblJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNhbkFsdGVyTGlzdCgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFT
U0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIGlmIChpbmRleCA+
PSBtX2l0ZW1zLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoSXRlbXMoKSB7IH0KKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIGF0KHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJdGVtVHlwZSBpbnNlcnQodW5zaWduZWQgaW5k
ZXgsIEl0ZW1UeXBlJiYpID0gMDsKKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIHJlcGxhY2UodW5zaWdu
ZWQgaW5kZXgsIEl0ZW1UeXBlJiYpID0gMDsKKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIHJlbW92ZSh1
bnNpZ25lZCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgSXRlbVR5cGUgYXBwZW5kKEl0ZW1UeXBl
JiYpID0gMDsKKworICAgIFZlY3RvcjxJdGVtVHlwZT4gbV9pdGVtczsKK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oCmluZGV4
IGRiMjEzNGQzNjczLi43ZGM0Y2FhOGJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CitjbGFzcyBTVkdQcm9w
ZXJ0eTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogY2xhc3MgU1ZHTWVtYmVyQWNj
ZXNzb3IgewpAQCAtNDIsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQW5p
bWF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzQW5pbWF0ZWRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVh
bCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZHUHJvcGVydHkmKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzKGNvbnN0IE93bmVy
VHlwZSYsIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHkmKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5
cGUmKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlTGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlTGlzdC5oCmluZGV4IDhiMTM3ODkxNzkxLi4x
NDZiZmI2N2FkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJpbWl0aXZlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
aW1pdGl2ZUxpc3QuaApAQCAtMSArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCiAKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHTGlz
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5
VHlwZT4KK2NsYXNzIFNWR1ByaW1pdGl2ZUxpc3QgOiBwdWJsaWMgU1ZHTGlzdDxQcm9wZXJ0eVR5
cGU+IHsKK3Byb3RlY3RlZDoKKyAgICB1c2luZyBCYXNlID0gU1ZHTGlzdDxQcm9wZXJ0eVR5cGU+
OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdXNpbmcgQmFzZTo6c2l6ZTsKKyAgICB1c2lu
ZyBCYXNlOjptX2l0ZW1zOworCisgICAgUHJvcGVydHlUeXBlIGF0KHVuc2lnbmVkIGluZGV4KSBj
b25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIG1faXRlbXMuYXQoaW5kZXgpOworICAgIH0KKworICAgIFByb3BlcnR5VHlw
ZSBpbnNlcnQodW5zaWduZWQgaW5kZXgsIFByb3BlcnR5VHlwZSYmIG5ld0l0ZW0pIG92ZXJyaWRl
CisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPD0gc2l6ZSgpKTsKKyAgICAgICAgbV9pdGVt
cy5pbnNlcnQoaW5kZXgsIFdURk1vdmUobmV3SXRlbSkpOworICAgICAgICByZXR1cm4gYXQoaW5k
ZXgpOworICAgIH0KKworICAgIFByb3BlcnR5VHlwZSByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCBQ
cm9wZXJ0eVR5cGUmJiBuZXdJdGVtKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAgbV9pdGVtcy5hdChpbmRleCkgPSBXVEZNb3ZlKG5ld0l0
ZW0pOworICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgIH0KKworICAgIFByb3BlcnR5VHlw
ZSByZW1vdmUodW5zaWduZWQgaW5kZXgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQo
aW5kZXggPCBzaXplKCkpOworICAgICAgICBQcm9wZXJ0eVR5cGUgaXRlbSA9IGF0KGluZGV4KTsK
KyAgICAgICAgbV9pdGVtcy5yZW1vdmUoaW5kZXgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShp
dGVtKTsKKyAgICB9CisKKyAgICBQcm9wZXJ0eVR5cGUgYXBwZW5kKFByb3BlcnR5VHlwZSYmIG5l
d0l0ZW0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX2l0ZW1zLmFwcGVuZChXVEZNb3ZlKG5l
d0l0ZW0pKTsKKyAgICAgICAgcmV0dXJuIGF0KHNpemUoKSAtIDEpOworICAgIH0KK307CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCmluZGV4IGZkYTI4
MGE3YWRmLi5jY2YxMjYxZTFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eS5oCkBAIC0yMCwxMCArMjAsNzggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJTVkdQcm9wZXJ0eU93bmVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIFNWR1Byb3BlcnR5QWNjZXNzIDogdWlu
dDhfdCB7IFJlYWRXcml0ZSwgUmVhZE9ubHkgfTsKIGVudW0gY2xhc3MgU1ZHUHJvcGVydHlTdGF0
ZSA6IHVpbnQ4X3QgeyBDbGVhbiwgRGlydHkgfTsKIAorY2xhc3MgU1ZHUHJvcGVydHkgOiBwdWJs
aWMgUmVmQ291bnRlZDxTVkdQcm9wZXJ0eT4geworcHVibGljOgorICAgIHZpcnR1YWwgflNWR1By
b3BlcnR5KCkgPSBkZWZhdWx0OworCisgICAgLy8gTWFuYWdpbmcgdGhlIHJlbGF0aW9uc2hpcCB3
aXRoIHRoZSBvd25lci4KKyAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX293
bmVyOyB9CisgICAgdm9pZCBhdHRhY2goU1ZHUHJvcGVydHlPd25lciogb3duZXIsIFNWR1Byb3Bl
cnR5QWNjZXNzIGFjY2VzcykKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9vd25lcik7CisgICAg
ICAgIEFTU0VSVChtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuKTsKKyAgICAgICAg
bV9vd25lciA9IG93bmVyOworICAgICAgICBtX2FjY2VzcyA9IGFjY2VzczsKKyAgICB9CisKKyAg
ICB2b2lkIGRldGFjaCgpCisgICAgeworICAgICAgICBtX293bmVyID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9hY2Nlc3MgPSBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlOworICAgICAgICBtX3N0
YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CisgICAgfQorCisgICAgY29uc3QgU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX293bmVy
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBtX293bmVyLT5h
dHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpOworICAgIH0KKworICAgIHZvaWQgY29tbWl0Q2hhbmdl
KCkKKyAgICB7CisgICAgICAgIGlmICghbV9vd25lcikKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV9vd25lci0+Y29tbWl0UHJvcGVydHlDaGFuZ2UodGhpcyk7CisgICAgfQorCisgICAg
Ly8gRE9NIGFjY2Vzcy4KKyAgICBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MoKSBjb25zdCB7IHJl
dHVybiBtX2FjY2VzczsgfQorICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWNjZXNzID09IFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFkT25seTsgfQorCisgICAgLy8gU3luY2hy
b25pemluZyB0aGUgU1ZHIGF0dHJpYnV0ZSBhbmQgaXRzIHJlZmxlY3Rpb24gaGVyZS4KKyAgICBi
b29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6
OkRpcnR5OyB9CisgICAgdm9pZCBzZXREaXJ0eSgpIHsgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3Rh
dGU6OkRpcnR5OyB9CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpCisgICAgewor
ICAgICAgICBpZiAobV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbikKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fc3RhdGUgPSBTVkdQcm9wZXJ0eVN0
YXRlOjpDbGVhbjsKKyAgICAgICAgcmV0dXJuIHZhbHVlQXNTdHJpbmcoKTsKKyAgICB9CisKKyAg
ICAvLyBUaGlzIGlzIHVzZWQgd2hlbiBjYWxsaW5nIHNldEF0dHJpYnV0ZSgpLgorICAgIHZpcnR1
YWwgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBTVkdQcm9wZXJ0eShTVkdQcm9wZXJ0eU93bmVyKiBvd25lciA9
IG51bGxwdHIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcyA9IFNWR1Byb3BlcnR5QWNjZXNzOjpS
ZWFkV3JpdGUpCisgICAgICAgIDogbV9vd25lcihvd25lcikKKyAgICAgICAgLCBtX2FjY2Vzcyhh
Y2Nlc3MpCisgICAgeworICAgIH0KKworICAgIFNWR1Byb3BlcnR5T3duZXIqIG1fb3duZXIgeyBu
dWxscHRyIH07CisgICAgU1ZHUHJvcGVydHlBY2Nlc3MgbV9hY2Nlc3MgeyBTVkdQcm9wZXJ0eUFj
Y2Vzczo6UmVhZFdyaXRlIH07CisgICAgU1ZHUHJvcGVydHlTdGF0ZSBtX3N0YXRlIHsgU1ZHUHJv
cGVydHlTdGF0ZTo6Q2xlYW4gfTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nv
ci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvci5o
CmluZGV4IDhiMTM3ODkxNzkxLi5mZjhjNGNkZTZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3IuaApAQCAtMSArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUG9pbnRlck1lbWJlckFjY2Vzc29yLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlLCB0eXBlbmFtZSBQ
cm9wZXJ0eVR5cGU+CitjbGFzcyBTVkdQcm9wZXJ0eUFjY2Vzc29yIDogcHVibGljIFNWR1BvaW50
ZXJNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGUsIFByb3BlcnR5VHlwZT4geworICAgIHVzaW5nIEJh
c2UgPSBTVkdQb2ludGVyTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlLCBQcm9wZXJ0eVR5cGU+Owor
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworcHJvdGVjdGVkOgorICAgIHVzaW5n
IEJhc2U6OnByb3BlcnR5OworICAgIHVzaW5nIEJhc2U6OnNpbmdsZXRvbjsKKworICAgIGJvb2wg
bWF0Y2hlcyhjb25zdCBPd25lclR5cGUmIG93bmVyLCBjb25zdCBTVkdQcm9wZXJ0eSYgcHJvcGVy
dHkpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy0+cHJvcGVydHko
b3duZXIpLnB0cigpID09ICZwcm9wZXJ0eTsKKyAgICB9Cit9OworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaApp
bmRleCA4YjEzNzg5MTc5MS4uMzdkNjMxODQzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaApAQCAtMSArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlBY2Nlc3Nvci5oIgorI2luY2x1
ZGUgIlNWR1N0cmluZ0xpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBTVkdTdHJpbmdMaXN0QWNjZXNzb3IgZmluYWwgOiBw
dWJsaWMgU1ZHUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0cmluZ0xpc3Q+IHsKKyAg
ICB1c2luZyBCYXNlID0gU1ZHUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0cmluZ0xp
c3Q+OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8
U1ZHU3RyaW5nTGlzdD4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRp
YyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVy
biBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHU3RyaW5nTGlzdEFjY2Vzc29yLCBwcm9wZXJ0
eT4oKTsgfQorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHlPd25lci5oCmluZGV4IGI0MmE1NzhhMTUxLi5jOTgxOGJlOWY4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXIuaApAQCAtMjYs
NiArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2Ns
YXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBTVkdQcm9wZXJ0eTsKIAogY2xhc3MgU1ZHUHJvcGVydHlP
d25lciB7CiBwdWJsaWM6CkBAIC00MCwxMSArNDMsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gb3duZXIoKS0+YXR0cmlidXRlQ29udGV4dEVsZW1lbnQoKTsKICAgICB9CiAgICAgCi0gICAg
dmlydHVhbCB2b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdlKCkKKyAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3BlcnR5KQogICAgIHsKICAgICAgICAg
aWYgKCFvd25lcigpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBvd25lcigpLT5jb21t
aXRQcm9wZXJ0eUNoYW5nZSgpOworICAgICAgICBvd25lcigpLT5jb21taXRQcm9wZXJ0eUNoYW5n
ZShwcm9wZXJ0eSk7CiAgICAgfQogICAgIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAppbmRl
eCBkMTJiMzkyYTkzOC4uNTkzNTcwM2MyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaCIKKyNpbmNsdWRl
ICJTVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5UmVnaXN0
cnkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC00Miw2ICs0MywxMiBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAorICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1N0cmluZ0xpc3Q+
IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHko
KQorICAgIHsKKyAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdTdHJp
bmdMaXN0QWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPHByb3BlcnR5Pigp
KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
UXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+IE93
bmVyVHlwZTo6KnByb3BlcnR5PgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQog
ICAgIHsKQEAgLTc3LDYgKzg0LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZpbmRBY2Nl
c3NvcihhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAKKyAgICBRdWFsaWZpZWROYW1lIHByb3BlcnR5
QXR0cmlidXRlTmFtZShjb25zdCBTVkdQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IG92ZXJyaWRl
CisgICAgeworICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5hbWUgPSBudWxsUU5hbWUo
KTsKKyAgICAgICAgZW51bWVyYXRlUmVjdXJzaXZlbHkoWyZdKGNvbnN0IGF1dG8mIGVudHJ5KSAt
PiBib29sIHsKKyAgICAgICAgICAgIGlmICghZW50cnkudmFsdWUtPm1hdGNoZXMobV9vd25lciwg
cHJvcGVydHkpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYXR0
cmlidXRlTmFtZSA9IGVudHJ5LmtleTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lOworICAgIH0KKwogICAgIFF1YWxp
ZmllZE5hbWUgYW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9IG51bGxRTmFtZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oCmluZGV4IDdj
MjhmZDdiZDgxLi41M2EwMzQ1NWZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaApAQCAtMzcsNiArMzcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+U1ZHUHJvcGVydHlSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2hBbGxQcm9wZXJ0aWVzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UXVhbGlmaWVkTmFtZSBwcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZHUHJvcGVydHkmKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBRdWFsaWZpZWROYW1lIGFuaW1hdGVkUHJvcGVydHlBdHRy
aWJ1dGVOYW1lKGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHkmKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIFN0cmluZz4gc3lu
Y2hyb25pemVBbGxBdHRyaWJ1dGVzKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODY4NzRkY2EwMS4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5
VGVhck9mZi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5LmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPiAKLWNsYXNz
IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5PFBy
b3BlcnR5VHlwZT4gewotcHVibGljOgotICAgIHVzaW5nIFNlbGYgPSBTVkdTdGF0aWNMaXN0UHJv
cGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT47Ci0gICAgdXNpbmcgQmFzZSA9IFNWR0xpc3RQcm9w
ZXJ0eTxQcm9wZXJ0eVR5cGU+OwotCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gdHlwZW5hbWUg
U1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1UeXBlOwotICAgIHVzaW5n
IExpc3RJdGVtVGVhck9mZiA9IHR5cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlw
ZT46Okxpc3RJdGVtVGVhck9mZjsKLQotICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsKLSAgICB1c2lu
ZyBCYXNlOjptX3ZhbHVlczsKLQotICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKFNWR0VsZW1l
bnQmIGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0eVR5cGUmIHZhbHVlcykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGYoY29udGV4dEVsZW1lbnQsIHZhbHVlcykpOwotICAg
IH0KLQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBCYXNlOjpjbGVhclZhbHVlcygpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPExpc3RJdGVt
VHlwZT4gaW5pdGlhbGl6ZShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0pCi0gICAgewotICAg
ICAgICByZXR1cm4gQmFzZTo6aW5pdGlhbGl6ZVZhbHVlcyhuZXdJdGVtKTsKLSAgICB9Ci0KLSAg
ICBFeGNlcHRpb25PcjxMaXN0SXRlbVR5cGU+IGdldEl0ZW0odW5zaWduZWQgaW5kZXgpCi0gICAg
ewotICAgICAgICByZXR1cm4gQmFzZTo6Z2V0SXRlbVZhbHVlcyhpbmRleCk7Ci0gICAgfQotCi0g
ICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiBpbnNlcnRJdGVtQmVmb3JlKGNvbnN0IExpc3RJ
dGVtVHlwZSYgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4g
QmFzZTo6aW5zZXJ0SXRlbUJlZm9yZVZhbHVlcyhuZXdJdGVtLCBpbmRleCk7Ci0gICAgfQotCi0g
ICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiByZXBsYWNlSXRlbShjb25zdCBMaXN0SXRlbVR5
cGUmIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6
OnJlcGxhY2VJdGVtVmFsdWVzKG5ld0l0ZW0sIGluZGV4KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRp
b25PcjxMaXN0SXRlbVR5cGU+IHJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCi0gICAgewotICAg
ICAgICByZXR1cm4gQmFzZTo6cmVtb3ZlSXRlbVZhbHVlcyhpbmRleCk7Ci0gICAgfQotCi0gICAg
RXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiBhcHBlbmRJdGVtKGNvbnN0IExpc3RJdGVtVHlwZSYg
bmV3SXRlbSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjphcHBlbmRJdGVtVmFsdWVzKG5l
d0l0ZW0pOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRl
YXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQot
ICAgICAgICA6IEJhc2UoVW5kZWZpbmVkUm9sZSwgdmFsdWVzLCBudWxscHRyKQotICAgICAgICAs
IG1fY29udGV4dEVsZW1lbnQoKmNvbnRleHRFbGVtZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBi
b29sIGlzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
cm9sZSA9PSBBbmltVmFsUm9sZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbW1pdENoYW5nZSgpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBBU1NFUlQobV92YWx1ZXMpOwotICAgICAgICBtX3ZhbHVl
cy0+Y29tbWl0Q2hhbmdlKG1fY29udGV4dEVsZW1lbnQpOwotICAgIH0KLQotICAgIGJvb2wgcHJv
Y2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShjb25zdCBMaXN0SXRlbVR5cGUmLCB1bnNpZ25lZCop
IG92ZXJyaWRlCi0gICAgewotICAgICAgICAvLyBuby1vcCBmb3Igc3RhdGljIGxpc3RzCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0
ZW1XcmFwcGVyKFJlZjxMaXN0SXRlbVRlYXJPZmY+JiwgdW5zaWduZWQqKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIFJlZjxTVkdFbGVtZW50PiBtX2NvbnRleHRFbGVtZW50OwotfTsKLQotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364974</attachid>
            <date>2019-03-17 13:09:52 -0700</date>
            <delta_ts>2019-03-17 17:48:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195863-20190317130951.patch</filename>
            <type>text/plain</type>
            <size>224083</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3OTdlODJkZjg2MzIz
ZGJiYjQwZjVlN2ViYjFjMmY1YTVjNzcyMy4uYWFkZDVjMmJjMmEwMWU4NDNhMzg4OWNmNWU2YjFj
ZDI0N2ZhYTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4MSBAQAorMjAxOS0wMy0xNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB0aGUgU1ZHIHByb3BlcnR5IHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1N0cmluZ0xpc3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNWR1N0cmluZ0xp
c3QgaXMgbm90IGFuaW1hdGVkIGxpc3QuIFNvIHdlIG5lZWQgdG8gaW50cm9kdWNlIHR3byBuZXcg
Y2xhc3NlczoKKworICAgICAgICAtLSBTVkdQcm9wZXJ0eTogVGhpcyB3aWxsIGJlIHRoZSBiYXNl
IG9mIGFsbCB0aGUgbm9uLWFuaW1hdGVkIHByb3BlcnRpZXMuCisgICAgICAgICAgIExpa2UgdGhl
IFNWR0FuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5IHdpbGwgYmUgcmVnaXN0ZXJlZCB3aXRo
IHRoZQorICAgICAgICAgICBhdHRyaWJ1dGUgbmFtZSBpbiBTVkdQcm9wZXJ0eVJlZ2lzdGVyeS4g
SXQgd2lsbCBhbHNvIGNvbW1pdHMgY2hhbmdlcworICAgICAgICAgICB0byB0aGUgcmVmbGVjdGlu
ZyBhdHRyaWJ1dGUuIEFuZCBpdCB3aWxsIHByb3ZpZGUgYSBzeW5jaHJvbml6ZSBzdHJpbmcKKyAg
ICAgICAgICAgZm9yIGxhenkgYXR0cmlidXRlIHVwZGF0ZS4KKworICAgICAgICAtLSBTVkdMaXN0
OiBJdCB3aWxsIGJlIHRoZSBiYXNlIG9mIGFsbCB0aGUgbGlzdCBwcm9wZXJ0aWVzLiBJdCBjYW4g
aG9sZAorICAgICAgICAgICBwcmltaXRpdmUgdHlwZXMgb3IgU1ZHIHR5cGVzLiBJbiB0aGlzIHBh
dGNoIHByaW1pdGl2ZSB0eXBlcyB3aWxsIGJlIAorICAgICAgICAgICBzdXBwb3J0ZWQgb25seS4g
VG8gZG8gdGhhdCwgYSBzdXBlcmNsYXNzIGNhbGxlZCBTVkdQcmltaXRpdmVMaXN0IGlzCisgICAg
ICAgICAgIGFkZGVkLiBJdHMgaXRlbXMgYXJlIG9mIHByaW1pdGl2ZSB0eXBlIG9ubHkuCisKKyAg
ICAgICAgTm90ZSB0aGF0IFNWR0xpc3QgaW1wbGVtZW50cyB0aGUgU1ZHMiBzcGVjcyByZWdhcmRp
bmcgYWRkaW5nIGEgbmV3IGl0ZW0KKyAgICAgICAgdG8gdGhlIGxpc3Qgd2hpY2ggc3RhdGUgdGhh
dCBhIGNvcHkgb2YgdGhlIGl0ZW0gaXMgYWRkZWQgdG8gdGhlIGxpc3QgaWYKKyAgICAgICAgdGhl
IGl0ZW0gaXMgYXR0YWNoZWQgdG8gYW5vdGhlciBsaXN0LgorCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5
bmNocm9uaXplQW5pbWF0ZWRTVkdBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9TVkdFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZH
U3RyaW5nTGlzdFZhbHVlcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xp
c3RWYWx1ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGVzdHM6OlNWR1Rlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjppc1Zh
bGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3Rz
OjpyZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJl
ZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdl
KToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmlkbDoKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6U1ZH
Vmlld0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50Ojp2aWV3VGFyZ2V0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5OjpzZXRCYXNlVmFsKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5Lmg6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdMaXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6bnVtYmVy
T2ZJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMaXN0OjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
c3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aW5zZXJ0SXRlbUJl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpyZXBsYWNlSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
c3Q6OmFwcGVuZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aXRlbXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aXRlbXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGlzdDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0Ojppc0VtcHR5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmNsZWFySXRlbXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2FuQWx0ZXJMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3Q6OmNhbkdldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2Fu
UmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2FuUmVtb3ZlSXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpkZXRhY2hJdGVtcyk6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01l
bWJlckFjY2Vzc29yOjptYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcmltaXRpdmVMaXN0Lmg6IEFkZGVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNBdHRhY2hlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6YXR0YWNoKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHk6OmNvbnRleHRFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
Ojpjb21taXRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OmFjY2VzcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNSZWFkT25seSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNEaXJ0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6c2V0RGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UHJvcGVydHk6OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojp2
YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjpTVkdQ
cm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvci5o
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29ySW1w
bC5oOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyOjpjb21taXRQcm9wZXJ0eUNoYW5n
ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHkpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaDoK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmg6
IFJlbW92ZWQuCisKKzIwMTktMDMtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNWRyBwcm9wZXJ0eSB0ZWFyIG9mZiBv
YmplY3RzIGZvciBTVkdBbmltYXRlZEJvb2xlYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNWR0FuaW1hdGVkQm9vbGVhbiB3aWxsIGJlIGRlZmluZWQg
YXMgU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eTxib29sPi4KKyAgICAgICAgLS0gU1ZHQW5p
bWF0ZWRCb29sZWFuQWNjZXNzb3IgaXMgYWRkZWQgdG8gdGhpcyBhY2Nlc3MgdGhlIG5ldyB0eXBl
LgorICAgICAgICAtLSBBIGZ1bmN0aW9uIHJlZ2lzdGVyUHJvcGVydHkoKSBpcyBhZGRlZCB0byBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkKKyAgICAgICAgICAgdG8gcmVnaXN0ZXIgdGhpcyBuZXcg
dHlwZS4KKyAgICAgICAgLS0gU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgaXMgYWRkZWQgdG8g
YW5pbWF0ZSB0aGUgbmV3IHR5cGUKKyAgICAgICAgLS0gU1ZHQW5pbWF0aW9uQm9vbGVhbkZ1bmN0
aW9uIGlzIGFkZGVkIHRvIGhhbmRsZSB0aGUgcHJvZ3Jlc3Mgb2YgdGhpcworICAgICAgICAgICBu
ZXcgdHlwZSBvdmVyIGEgcGVyaW9kIG9mIHRpbWUuCisKKyAgICAgICAgU1ZHQW5pbWF0aW9uQm9v
bGVhbkZ1bmN0aW9uIGlzIGEgc3VwZXJjbGFzcyBvZiBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0
aW9uCisgICAgICAgIHdoaWNoIHdpbGwgYmUgdGhlIGJhc2UgY2xhc3Mgb2YgdGhlIGRpc2NyZXRl
IGFuaW1hdGlvbiB0eXBlczogc3RyaW5nLCBib29sLAorICAgICAgICBlbnVtIGFuZCBQcmVzZXJ2
ZUFzcGVjdFJhdGlvIHR5cGVzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZEJvb2xlYW4uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEJvb2xl
YW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdG9yRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEFuaW1hdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6c2V0RXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0dFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2Vy
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHU3dpdGNoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdV
c2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFjY2Vzc29ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5SW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRp
c2NyZXRlRnVuY3Rpb24uaDogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkRp
c2NyZXRlRnVuY3Rpb246OlNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbjo6cHJvZ3Jlc3MpOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmg6IEFk
ZGVkCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eSk6
CisKKzIwMTktMDMtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBEZWZpbmUgdGhlIHR5cGUgb2YgU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
IGZvciBhbGwgU1ZHIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU4NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkgd2lsbCBldmVudHVhbGx5IHJl
cGxhY2UgU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGwuCisKKyAgICAgICAgKiBzdmcvU1ZHQUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjphdHRyaWJ1dGVSZWdpc3RyeSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6
aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTGlnaHRFbGVtZW50OjphdHRyaWJ1dGVSZWdpc3RyeSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaXRUb1ZpZXdCb3g6
OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdH
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAg
ICogc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6aXNLbm93bkF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAg
KiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdNUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmF0
dHJpYnV0ZVJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojppc0tu
b3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTd2l0Y2hFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1ZpZXdTcGVjLmg6CisgICAgICAgICogc3ZnL1NWR1pvb21BbmRQYW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6cGFyc2Vab29tQW5kUGFuKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1pvb21BbmRQYW46OlNWR1pvb21BbmRQYW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHWm9vbUFuZFBhbjo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dmcvU1ZHWm9vbUFuZFBhbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6em9v
bUFuZFBhbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5kUGFuOjpzZXRab29t
QW5kUGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OmF0dHJpYnV0ZVJlZ2lzdHJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OmlzS25vd25BdHRyaWJ1dGUpOiBEZWxl
dGVkLgorICAgICAgICBTVkdab29tQW5kUGFuIGhvbGRzIG5laXRoZXIgU1ZHIGFuaW1hdGVkIHBy
b3BlcnRpZXMgbm9yIFNWRyB0eXBlIGVsZW1lbnQuCisgICAgICAgIFNvIHJlbW92ZSBpdCBmcm9t
IGl0cyBhdHRyaWJ1dGUgcmVnaXN0cnkuCisKIDIwMTktMDMtMTYgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0IHRlc3RzIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCLyotZXhjZXB0aW9uLW9yZGVyLmh0bWwgYXJlIGZhaWxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNWUyOTVhYzQxNDcwZjk5NzM0YTM0ZTk1NTM5YWIyNGQ3ZGE4
NzhmYi4uNzFjZmYxYjExYjI3MGE1NTM5YWMyNDRmNWU1ZDMxZWMyNmQ1YjA4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTIyNzAsNyArMjI3MCw2IEBAIHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
CiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKLXN2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uY3BwCiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKIHN2Zy9TVkdBbmltYXRlZEVudW1l
cmF0aW9uLmNwcAogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcApAQCAtMjM4NSw3ICsyMzg0LDYg
QEAgc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKIHN2Zy9T
VkdTZXRFbGVtZW50LmNwcAogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAotc3ZnL1NWR1N0cmluZ0xp
c3RWYWx1ZXMuY3BwCiBzdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAogc3ZnL1NWR1N3aXRjaEVsZW1l
bnQuY3BwCiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlY2M2ZTc4OGIyYTM4MTQxNDli
OTgzYTA2OTRkNTU3OTdlOGI1MGE2Li4zYmQwYzMwNWFjZTFjY2E5YjI1NmY2NzJiZjJhODNhM2Fh
MTcxZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNTgsNyArMjU4LDYgQEAKIAkJMDg1NEIwMjExMjU1RTRFNjAwQjlDREQw
IC8qIFNWR0lubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NTRCMDBGMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdJbmxpbmVUZXh0Qm94
LmggKi87IH07CiAJCTA4NTRCMDIzMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdSb290SW5saW5lQm94
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAx
MTEyNTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJveC5oICovOyB9OwogCQkwODU0QjAy
NTEyNTVFNEU2MDBCOUNERDAgLyogU1ZHVGV4dFF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAxMzEyNTVFNEU2MDBCOUNERDAgLyogU1ZH
VGV4dFF1ZXJ5LmggKi87IH07Ci0JCTA4NTc5NzA5MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmlt
YXRlZEJvb2xlYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NTc5NzA4MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmltYXRlZEJvb2xlYW4uaCAqLzsg
fTsKIAkJMDg1QTE1OTMxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg1QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkwODVCOTJCQjBFRkRFNzNEMDBFNjEyM0Mg
LyogRm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMDg2Mzk1MTYxM0I1RkU1
NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2Mzk1MTQxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1h
dGVkUGF0aC5oICovOyB9OwpAQCAtMjY3LDcgKzI2Niw2IEBACiAJCTA4NzNCODZCMTM2MDY0RUEw
MEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODc1NThDNjEz
QjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc1NThDNDEzQjRBNTdE
MDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg3Qjg0OTYxMjcyQ0VDODAw
QTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRl
ZEFuZ2xlLmggKi87IH07Ci0JCTA4ODBGNzBFMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNM
aXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODgwRjcwRDEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oICovOyB9OwogCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyogUGFpbnRJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg1
MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8q
IFBhaW50UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QTBFMDQxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4QTBERkIxMjZFRjFEQjAwOTc4RjdB
IC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwpAQCAtMjEzOCw2ICsy
MTM2LDEwIEBACiAJCTcxRUFEQ0Q4MjIwODdFNzIwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRUFEQ0Q2MjIwODdF
NkQwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MUVGQ0VEQzIwMkIzOEE5MDBEN0M0MTEgLyogQW5pbWF0aW9u
RWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MUVGQ0VENzIwMkIzODhEMDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzFGQjk2N0IxMzgzRDY0NjAw
QUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRkI5NjdBMTM4M0Q2NDYw
MEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggKi87IH07
CisJCTcyMTQ0MzMxMjIzRUM4NTQwMEYxMkZGNyAvKiBTVkdQcmltaXRpdmVMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjE0NDMyQzIyM0VCMjJF
MDBGMTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMTQ0MzMyMjIzRUM4NUYwMEYxMkZGNyAvKiBTVkdM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjE0
NDMyRTIyM0VCMkZFMDBGMTJGRjcgLyogU1ZHTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBT
VkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTVFRTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNDQzMzQyMjNFQzkxNjAw
RjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0
eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI0RUQzMkMxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzI5MUEzQTdFNTQw
MEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi87IH07CiAJCTcyNEVEMzMyMUEzQThCMjMw
MEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVu
ZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0
RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIzNCw3ICsyMjM2LDYgQEAKIAkJ
N0MzMzBBMDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDEx
REY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTA4MURGOUY5
NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDYxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9z
aXRpb25PcHRpb25zLmggKi87IH07CiAJCTdDMzlDMzY1MUREQTg2NTIwMEZFRkIyOSAvKiBTVkdM
ZW5ndGhMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5o
ICovOyB9OwotCQk3QzM5QzM3NzFEREJFMTcwMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMz
NjcxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBE
MUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJv
YXJkQWNjZXNzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNC
Nzk2RjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKIAkJ
N0MzQjc5NzIxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NzAxOTA4NzU3QjAw
QjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NjI5LDcgKzU2MzAsNiBAQAogCQkwODU0QjAxMTEy
NTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdSb290SW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4NTRCMDEyMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdUZXh0UXVlcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dFF1ZXJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1NEIwMTMxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1Rl
eHRRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0UXVlcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg1Nzk3MDgxMjc4Mzk0QzAwQThFQzVG
IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZEJvb2xlYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1
QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDg1QjkyQjgwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9y
bURhdGFCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRh
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY0Miw3ICs1NjQyLDYg
QEAKIAkJMDg3NTU4QzMxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJ
dGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXJyb2dh
dGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODdCODQ5NTEy
NzJDRUM3MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmdsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZEFuZ2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTA4ODBGNzBEMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0UHJvcGVydHlU
ZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4NTA2N0Qx
MURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYWludEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4NTA2
N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFpbnRQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODhBMERGQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU4MCw3ICs3NTc5
LDYgQEAKIAkJNDMxQTJGOUIxM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQzMUEyRkQ2MTNCNzcwN0EwMDc3OTFFNCAvKiBTVkdBbmltYXRlZExlbmd0aExpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMxQTMwMjAxM0I4OURD
QzAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzFBMzA4NzEzQjhGOTc4MDA3
NzkxRTQgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkQm9vbGVhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQzMkQzRkU3MThBODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0
RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9yQ2hl
Y2tlclRlc3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMzMUFD
NzcxM0I2ODcwMDAwQTlFNUFFIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZE51bWJlckxpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzU4RTg3QTEzNjBBMkVFMDBFNDc0OEMgLyog
SlNTVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NTA2LDYgKzk1MDQsMTIgQEAKIAkJNzFFRkNFREUyMDJCMzlDNzAwRDdD
NDExIC8qIEpTQW5pbWF0aW9uRWZmZWN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQW5pbWF0aW9uRWZmZWN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzFGOTM2RjcxREQ0Rjk5QjAwOTIyQ0M3IC8qIHRyYWNrcy1zdXBw
b3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInRyYWNrcy1z
dXBwb3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFGQjk2N0ExMzgzRDY0
NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3Bl
cnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMyOTIyM0Uz
REM1MDBGMTJGRjcgLyogU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyMTQ0MzJBMjIzRTNERTQwMEYxMkZGNyAvKiBTVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0
aW9uSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMyQzIyM0VCMjJF
MDBGMTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcmltaXRp
dmVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTQ0MzJFMjIzRUIyRkUw
MEYxMkZGNyAvKiBTVkdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNDQzMkYyMjNFQjZFODAwRjEyRkY3IC8qIFNWR1Byb3Bl
cnR5QWNjZXNzb3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5QWNjZXNzb3JJbXBs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTQ0MzMwMjIzRUI3QzcwMEYxMkZG
NyAvKiBTVkdQcm9wZXJ0eUFjY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5QWNj
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkMyMjM4RUUwODAw
N0YwNzlDIC8qIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyM0Y5N0JEMjIzOEVFMDgwMDdGMDc5QyAvKiBTVkdBdHRyaWJ1
dGVBbmltYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZUFuaW1h
dGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkUy
MjM5NTEyRDAwN0YwNzlDIC8qIFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzMxLDggKzk3MzUsNiBA
QAogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFn
bWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzYyMURE
QTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3Ro
TGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMZW5ndGhM
aXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlDMzY2MUREQjgy
Q0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QzM5QzM2NzFEREI4MkNGMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlz
dFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTdHJpbmdMaXN0
VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzY4MUREQjg2RDMw
MEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzM5QzM2OTFEREI4NkQzMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZh
bHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdOdW1iZXJMaXN0VmFs
dWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZBMUREQjg3MUMwMEZF
RkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2MjMwLDYgKzE2MjMyLDggQEAKIAkJCQk1NUJFMDI1RjIyM0IyOUM1MDAzMkYw
OEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVGdW5jdGlvbi5oICovLAogCQkJCTU1RUU1MzVFMjIz
QjJBMEUwMEZCQTk0NCAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaCAqLywK
IAkJCQk1NUJFMDI1OTIyM0IyOUMxMDAzMkYwOEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1
ZUZ1bmN0aW9uSW1wbC5oICovLAorCQkJCTcyMTQ0MzI5MjIzRTNEQzUwMEYxMkZGNyAvKiBTVkdB
bmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmggKi8sCisJCQkJNzIxNDQzMkEyMjNFM0RFNDAwRjEy
RkY3IC8qIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmggKi8sCiAJCQkJNTVCRTAy
NUIyMjNCMjlDMjAwMzJGMDhBIC8qIFNWR0FuaW1hdGlvbkZ1bmN0aW9uLmggKi8sCiAJCQkJNTVG
QTdGRUYyMTBGQTM4NjAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZS5oICovLAogCQkJCTU1RkE3RkY0
MjEwRkI2ODgwMDVBRUZFNyAvKiBTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oICovLApAQCAtMTYyNDIs
MTggKzE2MjQ2LDIxIEBACiAJCQkJNTVENzBEMjEyMjNCMDBCQjAwMDQ0QjhFIC8qIFNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHkuY3BwICovLAogCQkJCTU1RDcwRDIwMjIzQjAwOTEwMDA0NEI4RSAv
KiBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmggKi8sCiAJCQkJNTVENzBEMjIyMjNCMDBFQTAw
MDQ0QjhFIC8qIFNWR0xlZ2FjeVByb3BlcnR5LmggKi8sCisJCQkJNzIxNDQzMkUyMjNFQjJGRTAw
RjEyRkY3IC8qIFNWR0xpc3QuaCAqLywKIAkJCQkwODEwNzY0MzEyODI4NTU2MDA3QzYzQkEgLyog
U1ZHTGlzdFByb3BlcnR5LmggKi8sCiAJCQkJMDg4QTBFMDAxMjZFRjFEQjAwOTc4RjdBIC8qIFNW
R0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAg
LyogU1ZHTWF0cml4VGVhck9mZi5oICovLAogCQkJCTU1RUU1MzU0MjIzQjI5RTkwMEZCQTk0NCAv
KiBTVkdNZW1iZXJBY2Nlc3Nvci5oICovLAogCQkJCTU1QkUwMjVBMjIzQjI5QzIwMDMyRjA4QSAv
KiBTVkdQb2ludGVyTWVtYmVyQWNjZXNzb3IuaCAqLywKKwkJCQk3MjE0NDMyQzIyM0VCMjJFMDBG
MTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovLAogCQkJCTU1RUU1MzYzMjIzQjJBMjQwMEZC
QTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovLAorCQkJCTcyMTQ0MzMwMjIzRUI3QzcwMEYxMkZGNyAv
KiBTVkdQcm9wZXJ0eUFjY2Vzc29yLmggKi8sCisJCQkJNzIxNDQzMkYyMjNFQjZFODAwRjEyRkY3
IC8qIFNWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmggKi8sCiAJCQkJNTVFRTUzNjAyMjNCMkEyMTAw
RkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLywKIAkJCQk1NUJFMDI1QzIyM0IyOUMzMDAz
MkYwOEEgLyogU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmggKi8sCiAJCQkJNTVCRTAyNTcyMjNC
MjlDMDAwMzJGMDhBIC8qIFNWR1Byb3BlcnR5UmVnaXN0cnkuaCAqLywKIAkJCQkwODhBMEUwMjEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDMx
MjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggKi8sCi0JCQkJMDg4MEY3MEQx
MjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJ
CQkwODEzQTRFOTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IHByb3BlcnRpZXM7CkBAIC0yNDExMyw4ICsyNDEyMCw2IEBA
CiAJCQkJNDM2MkM3QjgxM0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0FuaW1hdGVkQW5nbGUuY3BwICov
LAogCQkJCTA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggKi8s
CiAJCQkJQjIyMjc3RTYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkQW5nbGUuaWRsICov
LAotCQkJCTQzMUEzMDg3MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmltYXRlZEJvb2xlYW4uY3Bw
ICovLAotCQkJCTA4NTc5NzA4MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmltYXRlZEJvb2xlYW4u
aCAqLywKIAkJCQlCMjIyNzdFNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRCb29sZWFu
LmlkbCAqLywKIAkJCQk0M0E2MjVGNzEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xv
ci5jcHAgKi8sCiAJCQkJNDNBNjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29s
b3IuaCAqLywKQEAgLTI0NTEzLDggKzI0NTE4LDYgQEAKIAkJCQlCMjIyNzkxNDBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaWRsICovLAogCQkJCUIyMjI3OTE2MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggKi8sCiAJCQkJQjIyMjc5MTcwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1N0cmluZ0xpc3QuaWRsICovLAotCQkJCTdDMzlDMzY2MUREQjgyQ0YwMEZFRkIyOSAv
KiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLywKLQkJCQk3QzM5QzM2NzFEREI4MkNGMDBGRUZC
MjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5oICovLAogCQkJCUIyMjI3OTIxMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3OTIyMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU3R5bGVFbGVtZW50LmlkbCAqLywKQEAgLTMwODYzLDYgKzMwODY2LDggQEAKIAkJ
CQk0OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nl
c3NpYmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUJDQzYxMTEyNERGQ0Iw
MEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
Q0M5QkNGMjIzODdFOUEwMEZGQjUxQyAvKiBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RDQzlCRDEyMjM4N0VBQTAwRkZCNTFDIC8qIE1lZGlhQ2Fw
YWJpbGl0aWVzRW5jb2RpbmdJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkzQTE3RDE2
RTFDMDA0MjBBQTEgLyogTWVkaWFDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3
MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlERUJDQ0RENDE2NjQ2RUFGMDBBNDUyRTEgLyogTWVkaWFDb250cm9sRWxlbWVu
dFR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTMxOTA4LDcgKzMxOTEzLDYgQEAKIAkJCQlCMjIy
Nzk3NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3OTdBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODdCODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmds
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDg1Nzk3MDkxMjc4Mzk0QzAwQThFQzVGIC8qIFNWR0Fu
aW1hdGVkQm9vbGVhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDNBNjI1RjgxM0IzMzA0MDAwQUM5
NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RDQ2Q0UzMTI3
QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MUZCOTY3QjEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblBy
b3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjAxNyw2ICszMjAyMSw3IEBACiAJ
CQkJN0NDRUJGQzAxREQ4RjZBQjAwMkM0MEI4IC8qIFNWR0xlbmd0aFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzQzBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHTGluZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMyMjIzRUM4NUYwMEYx
MkZGNyAvKiBTVkdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODEwNzY0NDEyODI4NTU2MDA3
QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwOTEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjA4NCw2ICszMjA4OSw5IEBACiAJCQkJQjIyMjdBOTEwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5NDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0E5NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3IC8qIFNWR1ByaW1pdGl2
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBT
VkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3
IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTBCMTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
OEEwRTBDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjEwMiwxMSArMzIxMTAsOSBAQAogCQkJCUIyMjI3
QUEzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FBNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRBRkQwMTAwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQkwODgwRjcwRTEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGlj
TGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxM0E0RUExMjg0MTMy
NjAwOTkyNTExIC8qIFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBQTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0FBQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJN0MzOUMzNzcxRERCRTE3MDAwRkVGQjI5IC8qIFNWR1N0cmluZ0xp
c3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUI4MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUJCMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FCRTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MjE2Niw3ICszMjE3Miw2IEBACiAJCQkJQzY1MDQ2QTkxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBs
YXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2RTk0NERE
MUFDNEI0RUEwMDdCODVCNSAvKiBUZXJtLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBNjA5
OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RDQzlCRDEyMjM4
N0VBQTAwRkZCNTFDIC8qIE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzMwOUUxNzA5OUU2NDkyMDA1NkU1ODEgLyogVGV4dEFmZmluaXR5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0RENFNjE4ODEwNTFEMDAzRUVE
QkIgLyogVGV4dEF1dG9TaXppbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMzIyNjAsNyArMzIyNjUs
NiBAQAogCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI0ODRGNEQxNzFGODIxRTAwMDQwNzU1IC8qIFRyYW5z
Zm9ybUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0UwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RDQzlCQ0Yy
MjM4N0U5QTAwRkZCNTFDIC8qIE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTFEMDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURCMUJDNkExMDcxNUE2NDAwRUZBQTQ5IC8qIFRy
YW5zZm9ybVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0NUJGRDQxM0NGODA5MDAwQ0Mz
QjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVt
ZW50LmgKaW5kZXggZDQxYWQwYjM1MjJkYjlkNzEzZDM5YjFlNDQ4ZmU1OTlhZTY3NGIwNS4uMDU3
Nzk0YjBlN2NmMzE0NGViNDhiZWYyMGVhNDg5MDMwYmUzNGEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FF
bGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNDIsOCArNDIsMTEgQEAgcHJpdmF0ZToKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5
ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHQUVsZW1lbnQsIFNWR0dyYXBoaWNzRWxl
bWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29u
c3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVy
dHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdBRWxlbWVudCwgU1ZHR3Jh
cGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVu
Y2U+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZp
bmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
ZmluYWw7CiAKQEAgLTY0LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCkgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1f
YXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRl
IG1fdGFyZ2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCmlu
ZGV4IDNiNGU4NjFhMzAxYzAxMGVlYmUzN2FlMDMzY2YxMTM0YWExYmM3OWYuLmQzNGY5ZWQwNjYy
MDQxYTVjN2M0M2YwOGU0NDViYzM1MGM0ZGRiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0
R2x5cGhFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ4LDEwICs0OCwxNCBAQCBwcml2YXRlOgogICAg
IHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxT
VkdBbHRHbHlwaEVsZW1lbnQsIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZT47CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQ
cm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCisg
ICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdB
bHRHbHlwaEVsZW1lbnQsIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1VSSVJlZmVyZW5j
ZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzNzUxOWJmZTMwZmJhY2U0MDdmZWQ5YzZhZDcz
NTgyOGFiNDBhOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWRCb29sZWFu
QW5pbWF0b3I6OlNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQotICAgIDogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRCb29sZWFuLCBhbmltYXRpb25FbGVtZW50LCBj
b250ZXh0RWxlbWVudCkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlKFNWR1By
b3BlcnR5VHJhaXRzPGJvb2w+Ojpmcm9tU3RyaW5nKHN0cmluZykpOwotfQotCi1zdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6c3RhcnRB
bmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5p
bWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmlt
YXRlZEJvb2xlYW4+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQm9vbGVh
bkFuaW1hdG9yOjpzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgc3RvcEFuaW1WYWxBbmltYXRpb25G
b3JUeXBlPFNWR0FuaW1hdGVkQm9vbGVhbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1hdGVkVHlw
ZSYgdHlwZSkKLXsKLSAgICByZXNldEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRCb29sZWFuPihh
bmltYXRlZFR5cGVzLCB0eXBlKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRv
cjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxXaWxsQ2hhbmdlRm9yVHlwZTxTVkdBbmlt
YXRlZEJvb2xlYW4+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQm9vbGVh
bkFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZTxT
VkdBbmltYXRlZEJvb2xlYW4+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVk
Qm9vbGVhbkFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0Fu
aW1hdGVkVHlwZSopCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVy
Y2VudGFnZSwgdW5zaWduZWQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBl
KiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKLXsKLSAg
ICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVu
dCk7Ci0KLSAgICBjb25zdCBhdXRvIGZyb21Cb29sZWFuID0gKG1fYW5pbWF0aW9uRWxlbWVudC0+
YW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OlRvID8gYW5pbWF0ZWQgOiBmcm9tKS0+
YXM8Ym9vbD4oKTsKLSAgICBjb25zdCBhdXRvIHRvQm9vbGVhbiA9IHRvLT5hczxib29sPigpOwot
ICAgIGF1dG8mIGFuaW1hdGVkQm9vbGVhbiA9IGFuaW1hdGVkLT5hczxib29sPigpOwotCi0gICAg
bV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlRGlzY3JldGVUeXBlPGJvb2w+KHBlcmNlbnRhZ2Us
IGZyb21Cb29sZWFuLCB0b0Jvb2xlYW4sIGFuaW1hdGVkQm9vbGVhbik7Ci19Ci0KLWZsb2F0IFNW
R0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKQotewotICAgIC8vIE5vIHBhY2VkIGFuaW1hdGlvbnMgZm9yIGJvb2xl
YW4uCi0gICAgcmV0dXJuIC0xOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRC
b29sZWFuLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NTkwOWYwNzZiNGIxYTg0
NmM3NTc4ODVjMmVhY2Q1OTc0YmE1MmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNs
dWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFj
Y2Vzc29yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHQW5pbWF0aW9uRWxl
bWVudDsKLQotdXNpbmcgU1ZHQW5pbWF0ZWRCb29sZWFuID0gU1ZHQW5pbWF0ZWRTdGF0aWNQcm9w
ZXJ0eVRlYXJPZmY8Ym9vbD47Ci11c2luZyBTVkdBbmltYXRlZEJvb2xlYW5BdHRyaWJ1dGUgPSBT
VkdBbmltYXRlZEF0dHJpYnV0ZTxTVkdBbmltYXRlZEJvb2xlYW4+OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGU+Ci11c2luZyBTVkdBbmltYXRlZEJvb2xlYW5BdHRyaWJ1dGVBY2Nlc3Nv
ciA9IFNWR0FuaW1hdGVkQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEJv
b2xlYW5BdHRyaWJ1dGUsIEFuaW1hdGVkQm9vbGVhbj47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkQm9v
bGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKLXB1
YmxpYzoKLSAgICBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50
KiwgU1ZHRWxlbWVudCopOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wQW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBl
cyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIGZsb2F0IGNhbGN1bGF0ZURpc3Rh
bmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3Zl
cnJpZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGlvbkVsZW1lbnQuaAppbmRleCAzZjRhNTc2ZWEzOWQ3ODM4OTlkNWZjMmIwMzg2MWRi
YjI0YTZlYTQ0Li43NzMwODhiNjdiMTQxN2UzNjU5MTY5Zjk4YmIwZDJiY2ZiYWFjN2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1j
Yy5pZC5hdT4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNCw3ICsyNCw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHVGVzdHMuaCIKQEAgLTE0Nyw2ICsxNDYsOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVS
ZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5
KCk7IH0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclBy
b3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R0FuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR1Rlc3RzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKIAogICAgIHN0YXRpYyBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKQEAgLTIwNyw2ICsyMDks
NyBAQCBwcml2YXRlOgogICAgIENhbGNNb2RlIG1fY2FsY01vZGUgeyBDYWxjTW9kZTo6TGluZWFy
IH07CiAgICAgQW5pbWF0aW9uTW9kZSBtX2FuaW1hdGlvbk1vZGUgeyBBbmltYXRpb25Nb2RlOjpO
b25lIH07CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAq
dGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRvckZhY3RvcnkuaAppbmRleCAwZjQ1NzYzMzE0YTBhYTg5ZDBhYjM3M2MzMThkYmVhMDY2NTU0
OWM1Li4yYjgyNzE3ZjQ3MGE3YTkxMmIzZTZiNjg0MTg0MzM3NTMyMTczNmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCkBAIC0yMCw3ICsyMCw2IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgiCiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgi
CkBAIC01MCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5p
bWF0ZWRCb29sZWFuOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRCb29sZWFuQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZENvbG9yQW5p
bWF0b3I+KCphbmltYXRpb25FbGVtZW50LCAqY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNl
IEFuaW1hdGVkRW51bWVyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaApp
bmRleCA2NWM3YjQ2NWI1MTI4ODQwMWEzNDNjOTgwYzAyY2U3MDk2ODUxMDA4Li41YTBlYjcwMzJi
NWUzMTRhNWRiYmEyMDA0N2FkMjg3NTZmNjdhYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmgKQEAgLTQ2LDEwICs0NiwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0
cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0NpcmNsZUVs
ZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47
CiAgICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQog
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdDaXJjbGVFbGVtZW50LCBTVkdHZW9tZXRy
eUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OworICAgIGNvbnN0IFNWR1By
b3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8
IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAg
fQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNTksNiArNjYsNyBAQCBwcml2YXRlOgogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVP
d25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIG1fY3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX2N5IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fciB7IExlbmd0aE1vZGVPdGhlciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCmluZGV4IDYzYjZiZGUwZTI0MzNiNmVjNWRhYTJmMGVlYTY2
ZTM3YWUzYWRmZjcuLjAzYzFhZGRmN2UwZTJmMmQ4NmM4Mzg1ODUxMTNjODA0MzEwOGZmMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw3
ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFu
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQu
aCIKQEAgLTQ0LDEwICs0MywxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3du
ZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0NsaXBQYXRoRWxlbWVudCwg
U1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBz
dGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJl
Z2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnko
KTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmli
dXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3du
ZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQor
CisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxT
VkdDbGlwUGF0aEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CkBAIC01OSw2
ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBm
aW5hbDsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsg
KnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlPiBtX2NsaXBQYXRoVW5pdHMgeyBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVf
VVNFUlNQQUNFT05VU0UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKaW5kZXggOWY0NmJlY2RmYjRi
OWMxOWEwNWE0ZDkzYmFiYmE1ZjM1OTM2YmMyZC4uOWQyYjZkZTZmZmE2NjZjOGM0MzM5YzhmNDgz
ZDFhMmQ4M2VkM2VkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC05NiwxMCArOTYsMTcgQEAg
cHJvdGVjdGVkOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHlJbXBsPFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdF
bGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0
cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0
cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94
eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmli
dXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZH
RWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC0xMDcsNiArMTE0LDcgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8Q29tcG9uZW50VHJhbnNmZXJUeXBlPiBtX3R5cGUg
eyBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgfTsKICAgICBTVkdBbmltYXRlZE51
bWJlckxpc3RBdHRyaWJ1dGUgbV90YWJsZVZhbHVlczsKICAgICBTVkdBbmltYXRlZE51bWJlckF0
dHJpYnV0ZSBtX3Nsb3BlIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgK
aW5kZXggMmE3MWM2MmMwYjZkODdkNGZiZTEzMDc1NzVlNjM3NjIzNmRmZmYzMS4uOGQ2OTVjYWYx
MzE0NGZmMTFmYmY5OGJjN2NlZTY5OTc3YTU3Y2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
TGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCkBAIC01NCwxMCArNTMsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdDdXJzb3JFbGVt
ZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdUZXN0cywg
U1ZHVVJJUmVmZXJlbmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmli
dXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmli
dXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRl
T3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNW
R1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdDdXJzb3JFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdUZXN0cywgU1ZHVVJJUmVmZXJlbmNlPjsKKyAg
ICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisgICAgCisgICAgc3RhdGljIGJvb2wg
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC02Nyw2ICs3Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYpIGNvbnN0IGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0
dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgSGFzaFNldDxDU1NDdXJzb3JJbWFnZVZhbHVl
Kj4gbV9jbGllbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAppbmRleCBkZjNjMDQw
M2VjZjViNTY4MmFmY2E3MmU5ZjdhMjdhMDU3M2U0NTFmLi4zYWI0ZTk5ZTNjNThhZWNmMjBhODYz
YzdlZDlmMjQzMzc3NDMyZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVm
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaApAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIx
LDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xl
YW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVk
ZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAgLTM3LDYgKzM2LDkgQEAgcHJpdmF0ZToKIAog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdEZWZzRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdEZWZzRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDQsNiArNDYsNyBAQCBwcml2YXRlOgog
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1
dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGI2NjRkM2QwYjBj
ODU0ODQyNGZlMzA0ZDYzYWU5NzM1NDk5OTlkNjcuLjBjODY1OTg4MjFiOTNmYWE3YWRmY2Q0MjBi
ZDc1Mzk5YjJjNDAwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTcyMCwxMiAr
NzIwLDI0IEBAIHZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zCiAgICAgU1ZHRWxlbWVudCogbm9uQ29u
c3RUaGlzID0gY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4odGhpcyk7CiAgICAgaWYgKG5hbWUgPT0g
YW55UU5hbWUoKSkKICAgICAgICAgc3luY2hyb25pemVBbGxBbmltYXRlZFNWR0F0dHJpYnV0ZShu
b25Db25zdFRoaXMpOwotICAgIGVsc2UgaWYgKGlzQW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShu
YW1lKSkgeworICAgIGVsc2UgewogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgb2YgdGhlIHByb3Bl
cnR5IGhhcyBjaGFuZ2VkLCBzZXJpYWxpemUgdGhlIG5ldyB2YWx1ZSB0byB0aGUgYXR0cmlidXRl
LgogICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3BlcnR5UmVnaXN0cnkoKS5zeW5jaHJvbml6
ZShuYW1lKSkKICAgICAgICAgICAgIG5vbkNvbnN0VGhpcy0+c2V0U3luY2hyb25pemVkTGF6eUF0
dHJpYnV0ZShuYW1lLCAqdmFsdWUpOwotICAgIH0gZWxzZQotICAgICAgICBub25Db25zdFRoaXMt
PnN5bmNocm9uaXplQXR0cmlidXRlKG5hbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBu
b25Db25zdFRoaXMtPnN5bmNocm9uaXplQXR0cmlidXRlKG5hbWUpOworICAgIH0KK30KKyAgICAK
K3ZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3Bl
cnR5KQoreworICAgIC8vIFdlIHdhbnQgdG8gZGlydHkgdGhlIHRvcC1sZXZlbCBwcm9wZXJ0eSB3
aGVuIGEgZGVzY2VuZGFudCBjaGFuZ2VzLiBGb3IgZXhhbXBsZQorICAgIC8vIGEgY2hhbmdlIGlu
IGFuIFNWR0xlbmd0aCBpdGVtIGluIFNWR0xlbmd0aExpc3Qgc2hvdWxkIHNldCB0aGUgZGlydHkg
ZmxhZyBvbgorICAgIC8vIFNWR0xlbmd0aExpc3QgYW5kIG5vdCB0aGUgU1ZHTGVuZ3RoLgorICAg
IHByb3BlcnR5LT5zZXREaXJ0eSgpOworCisgICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsK
KyAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKHByb3BlcnR5UmVnaXN0cnkoKS5wcm9wZXJ0eUF0dHJp
YnV0ZU5hbWUoKnByb3BlcnR5KSk7CiB9CiAKIHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVy
dHlDaGFuZ2UoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCmluZGV4IDkyOTZjYmExZTExYWQ0ZTMwMzYwMzFkNDM5YjhmZDA1NGM3YTkw
NzkuLjhhODg0NzQ1ZDQ1NDU1ZTZiNzAzNTJmMGUzNDAzZTBkNjdlYWE3MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaApAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW5p
bWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAg
Ym9vbCBpc0FuaW1hdGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAot
ICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNv
bW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21t
aXRQcm9wZXJ0eUNoYW5nZShTVkdBbmltYXRlZFByb3BlcnR5Jik7CiAKICAgICBjb25zdCBTVkdF
bGVtZW50KiBhdHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRoaXM7IH0KQEAgLTIxNiw5ICsyMTYsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U1ZHRWxl
bWVudCo+IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzOwogCiAgICAgQXR0cmlidXRlT3du
ZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVk
U3RyaW5nQXR0cmlidXRlIG1fY2xhc3NOYW1lOwotICAgIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKKyAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJp
YnV0ZSBtX2NsYXNzTmFtZTsKIH07CiAKIGNsYXNzIFNWR0VsZW1lbnQ6Okluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAppbmRleCA5
ZGFhZWE4Y2Y4YmFhZTFmMjNmNzI2YTU2OTk0MzYyOGQyY2E4M2EwLi4zYzliY2ZjN2Q5YmExY2Vm
MWE0YzI1YzljNzFhZjU3ODRiYzQxMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxsaXBzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ4LDEwICs0OCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNp
bmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0Vs
bGlwc2VFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclBy
b3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5
JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdFbGxpcHNlRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lz
dHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJl
Z2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgZmluYWw7CiAKQEAgLTYxLDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZSBtX2N4IHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV9jeSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3J4IHsgTGVuZ3RoTW9kZVdpZHRoIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKaW5kZXggM2ExZTU2ZGQ2MjNhNmIy
NGViNzU4MDg2NDBlYjEzNzdjZGY3ZGMzZi4uYWYyNjFiNjg2MTI4ZTI3MDAyM2UwMmRmODk2YTY1
OTZjOTY0NTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmNwcApAQCAtMjksMjIgKzI5LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICA6IG1fY29udGV4dEVsZW1l
bnQoKmNvbnRleHRFbGVtZW50KQorICAgICwgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKFNW
R0FuaW1hdGVkQm9vbGVhbjo6Y3JlYXRlKGNvbnRleHRFbGVtZW50KSkKIHsKLSAgICByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpy
ZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVn
aXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgJlNWR0VsbGlwc2VFbGVtZW50OjptX2V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+KCk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCAmU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6bV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPigp
OworICAgIH0pOwogfQogCiB2b2lkIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyKQotICAgICAgICBzZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHZhbHVlID09
ICJ0cnVlIik7CisgICAgICAgIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC0+c2V0QmFzZVZh
bEludGVybmFsKHZhbHVlID09ICJ0cnVlIik7CiB9CiAKIHZvaWQgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5oCmluZGV4IGQyNTUwN2FkMDdlMjBmMDZlYjJhOTk5NjU3NGQwMGJjMDIyMjlmZDUuLmVh
ZWIyMmFhYmViZWQ5YmUzOGNhOGNmMGIzZDRiNmNmNWE2MTkwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDE1
ICs0OCwxOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAg
IHN0YXRpYyBhdXRvJiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAotICAgIGF1dG8gZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIHVzaW5nIFBy
b3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZD47CiAKLSAgICBib29sIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKSBj
b25zdCB7IHJldHVybiBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQudmFsdWUoKTsgfQotICAg
IHZvaWQgc2V0RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZChib29sIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpIHsgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLnNldFZhbHVlKGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpOyB9CisgICAgYm9vbCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCkgY29uc3QgeyByZXR1cm4gbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLT5jdXJyZW50VmFs
dWUoKTsgfQorICAgIFNWR0FuaW1hdGVkQm9vbGVhbiYgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KTsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSk7CisgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldEhhdmVGaXJlZExvYWRFdmVu
dChib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQYXJzZXJJbnNlcnRlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC02NywxMSArNzEsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBh
dHRyaWJ1dGVPd25lclByb3h5KCkgeyByZXR1cm4geyAqdGhpcywgbV9jb250ZXh0RWxlbWVudCB9
OyB9CiAgICAgCiAgICAgU1ZHRWxlbWVudCYgbV9jb250ZXh0RWxlbWVudDsKLSAgICBTVkdBbmlt
YXRlZEJvb2xlYW5BdHRyaWJ1dGUgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOworICAgIFJl
ZjxTVkdBbmltYXRlZEJvb2xlYW4+IG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmgKaW5kZXggZDY3YmFmZmNhYTk2OGVhZTRjZjJhZDBkNTI5OGU4OGE4YzNhZDA0Yy4uYTE2YjFk
MmJmNDFlMTA1MTgwZDI1YTBmMDkxMzk3YzhiMDhiZGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAq
IENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU5LDEwICs1OSwxNyBAQCBwcml2
YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHlJbXBsPFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdp
c3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwor
ICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApAQCAtNzAsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KSBvdmVycmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclBy
b3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZH
QW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjI7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bkF0dHJpYnV0ZTxCbGVuZE1vZGU+IG1fbW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCmluZGV4IDQ3Njg4ZWM4
NjlkM2ZjZjEzNTE5NDk4YzhlODAwMGI1NGU2OWMxZjguLjRlMWYzM2EyNzNhNWNkZmMyZDBlODg5
N2JlMjRjOTA4MzE5ZjdhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtODMsMTAgKzgzLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47
CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC05NCw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEF0dHJp
YnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0
ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJp
YnV0ZTxDb2xvck1hdHJpeFR5cGU+IG1fdHlwZSB7IEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgg
fTsKICAgICBTVkdBbmltYXRlZE51bWJlckxpc3RBdHRyaWJ1dGUgbV92YWx1ZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCmluZGV4
IGJkNjJiMzQ4MWM1ZWU0NjUzNDFkNDNkYmM0NGJmODg3MmY0YjZlN2UuLjI1N2E5NTZkODg0ZDAx
ZTk0ZDAzNjA3NzNjNWFmYWUwYzZhNGEzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCkBAIC0yLDYgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zOSwxNCArNDAsMTggQEAgcHJpdmF0ZToK
ICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUlt
cGw8U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0
ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0
cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAogICAgIC8v
IEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCi0gICAgY29uc3QgU1ZHQXR0cmli
dXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJy
aWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAq
dGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAppbmRleCBhMTIzY2M2YTcxNDQwNTFj
ODMzNjg4ZjVkNWViMDIwY2ZkOTlmYzNkLi4wZjExNzNiMTU5NDZlMjMxYzUyMTBiYTI5NWY4MTFj
YzA4ZWFhMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTA2LDEwICsxMDYsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0
ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGlj
IEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3Ry
eSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVD
b21wb3NpdGVFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+Owor
ICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtMTE3LDYg
KzEyNCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94
eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJp
YnV0ZSBtX2luMTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMjsKICAgICBT
VkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+IG1f
c3ZnT3BlcmF0b3IgeyBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmOWM0MWZk
ZjkyYmI2ZjE0YjUxMDhkNDlkZDYzY2NkOWY3OGVjNDE2Li5kYTcyNmQ2Y2Q5MDFiNTU3NjQxMzAz
NWE1ZjgwYjFmZTM3ZWNkZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgaW5saW5lIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW0KICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdO
YW1lczo6b3JkZXJBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fb3JkZXJYLCAm
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fb3JkZXJZPigpOwogICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp0YXJnZXRYQXR0ciwgJlNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjptX3RhcmdldFg+KCk7CiAgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnRhcmdldFlBdHRyLCAmU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fdGFyZ2V0WT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsICZTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudDo6bV9wcmVzZXJ2ZUFscGhhPigpOwogICAgIH0pOwogfQogCkBA
IC03OSw3ICs4MCw2IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcygpCiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Omtl
cm5lbFVuaXRMZW5ndGhBdHRyLAogICAgICAgICAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6
Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjptX2tlcm5lbFVuaXRMZW5ndGhYLAogICAgICAgICAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjptX2tlcm5lbFVuaXRMZW5ndGhZPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjptX3ByZXNlcnZlQWxwaGE+KCk7CiB9CiAKIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCkBAIC0xNTIsOSArMTUyLDkgQEAgdm9pZCBTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cikgewog
ICAgICAgICBpZiAodmFsdWUgPT0gInRydWUiKQotICAgICAgICAgICAgbV9wcmVzZXJ2ZUFscGhh
LnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgbV9wcmVzZXJ2ZUFscGhhLT5zZXRCYXNlVmFs
SW50ZXJuYWwodHJ1ZSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJmYWxzZSIpCi0gICAg
ICAgICAgICBtX3ByZXNlcnZlQWxwaGEuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICAgICAgbV9w
cmVzZXJ2ZUFscGhhLT5zZXRCYXNlVmFsSW50ZXJuYWwoZmFsc2UpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5n
KCJmZUNvbnZvbHZlTWF0cml4OiBwcm9ibGVtIHBhcnNpbmcgcHJlc2VydmVBbHBoYUF0dHI9XCIi
ICsgdmFsdWUgICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4i
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuaAppbmRleCBkMzA0Y2M0MWI5MjI3MzcyMmRmOGY3NjJkYjU2YzIzMjU1
YjJhMWFjLi43MGZiOWQ3MzUwNjRmYTJkNmEwNTMyNzk5MTViYTg5N2M3N2U5OTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaApAQCAtNzgs
NyArNzgsNyBAQCBwdWJsaWM6CiAgICAgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lZGdlTW9kZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0
TGVuZ3RoWC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWS5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGJvb2wgcHJlc2VydmVB
bHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVBbHBoYS5jdXJyZW50VmFsdWUoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQorICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlc2VydmVBbHBoYS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAgIFJlZlB0cjxTVkdB
bmltYXRlZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMS5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBTVkdBbmltYXRlZEludGVnZXImIG9y
ZGVyWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9vcmRlclg7IH0KQEAgLTkxLDIwICs5MSwyNCBAQCBw
dWJsaWM6CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IGVkZ2VNb2RlQW5pbWF0
ZWQoKSB7IHJldHVybiBtX2VkZ2VNb2RlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4ga2VybmVsVW5pdExlbmd0
aFhBbmltYXRlZCgpIHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFguYW5pbWF0ZWRQcm9wZXJ0
eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVy
PiBrZXJuZWxVbml0TGVuZ3RoWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3Ro
WS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRCb29sZWFuPiBwcmVzZXJ2ZUFscGhhQW5pbWF0ZWQoKSB7IHJldHVybiBtX3By
ZXNlcnZlQWxwaGEuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Cisg
ICAgU1ZHQW5pbWF0ZWRCb29sZWFuJiBwcmVzZXJ2ZUFscGhhQW5pbWF0ZWQoKSB7IHJldHVybiBt
X3ByZXNlcnZlQWxwaGE7IH0KIAogcHJpdmF0ZToKICAgICBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0
cmlidXRlcygpOwotICAgIAorICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKwogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0g
ICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAt
MTE2LDcgKzEyMCw2IEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotCiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUg
bV9pbjE7CiAgICAgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4gbV9vcmRlclggeyBTVkdBbmltYXRl
ZEludGVnZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEludGVnZXI+IG1f
b3JkZXJZIHsgU1ZHQW5pbWF0ZWRJbnRlZ2VyOjpjcmVhdGUodGhpcykgfTsKQEAgLTEyOCw3ICsx
MzEsNyBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8RWRn
ZU1vZGVUeXBlPiBtX2VkZ2VNb2RlIHsgRURHRU1PREVfRFVQTElDQVRFIH07CiAgICAgU1ZHQW5p
bWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9rZXJuZWxVbml0TGVuZ3RoWDsKICAgICBTVkdBbmltYXRl
ZE51bWJlckF0dHJpYnV0ZSBtX2tlcm5lbFVuaXRMZW5ndGhZOwotICAgIFNWR0FuaW1hdGVkQm9v
bGVhbkF0dHJpYnV0ZSBtX3ByZXNlcnZlQWxwaGE7CisgICAgUmVmPFNWR0FuaW1hdGVkQm9vbGVh
bj4gbV9wcmVzZXJ2ZUFscGhhIHsgU1ZHQW5pbWF0ZWRCb29sZWFuOjpjcmVhdGUodGhpcykgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAppbmRleCAwYjhhZThiMDFlZjRhY2VmNzlhYmIx
YWE2OTIxOGE3YmE4ZjRhNmE4Li45NWM5ZDc0YTI4NmE2ZTMxOTY3NzJlMzFhMzA1NTMyYTk5OGVk
OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDUgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNTMsMTAgKzUzLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclBy
b3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBB
dHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnko
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7
Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1
c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisgICAgCisgICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBA
IC02Nyw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmli
dXRlIG1faW4xOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZGlmZnVzZUNvbnN0
YW50IHsgMSB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3VyZmFjZVNjYWxl
IHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oCmluZGV4IDUxYmVkNTNkZjY2YjA1YzQ4NDBhZDE1YTZjNDQyYWRkZjkxNzc0N2IuLjNj
MDkyZDRmNjNmZTkwZWU3NzgwNGE1MjUyMTQ1Yjg1MDBlNjk5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvbGl2ZXJAbmVyZ2V0LmNv
bT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTg4LDEwICs4OCwxNyBAQCBwcml2YXRlOgogCiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVn
aXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQ
cm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmli
dXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtOTksNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3Zl
cnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7
ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwogICAgIFNWR0FuaW1h
dGVkU3RyaW5nQXR0cmlidXRlIG1faW4yOwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gbV94Q2hhbm5lbFNlbGVjdG9yIHsgQ0hBTk5FTF9B
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAppbmRleCAz
NjYyMTllMDJjNjkzMzc0NjgyNWE3OTJlODM2NWJlMGY1MmQwMTc5Li43MTE2MzQyZDg0YWNkMDE2
OWExZDVlODg0NWJiMjFiYjRhOGNiMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNTAsMTAgKzUwLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVE
cm9wU2hhZG93RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsK
ICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmli
dXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVy
UmVnaXN0cnk8U1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7CiAKQEAgLTYzLDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpOwogCiAgICAgQXR0cmlidXRlT3duZXJQ
cm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0
dHJpYnV0ZSBtX2luMTsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2R4IHsgMiB9
OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZHkgeyAyIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKaW5kZXggOTNiNjFhY2E0NmEz
Y2RiMTkwM2Q1NTlmZjhiY2NlMTgxYjRjYzRjOS4uMGY0M2NjNjY3ZTE2NDZiZmI1NDhjYzliNDE2
NGNlMzY4ZTExM2FiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTUxLDEwICs1MSwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsK
ICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmli
dXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC02NCw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRy
aWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zdGREZXZpYXRp
b25YOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3RkRGV2aWF0aW9uWTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggNmM0ZmQ2MzUwYjk4NzIwYjU4
OTRiZTY2ODgyMjNjNjA0YjM0MjQwOS4uNTUwYmY5MDllYjMzNTFiZjczODIxN2VkYTQ5YzMzNzRl
MmI5ZTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw3ICsy
Myw2IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZFSW1hZ2UuaCIKQEAgLTQ5
LDEwICs0OCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJp
YnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5
ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IFNWR1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVy
dHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQor
CisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogCkBAIC03MSw2ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0F0dHJpYnV0ZSBtX3ByZXNlcnZlQXNwZWN0UmF0aW87
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAppbmRleCA4NGE2NzhmZmIwZTc5
MjNmOTE4YWQzYzg3YWNjMzViMjY2ZjI3MWYyLi45YmUyYmZhNDZlYzhjZmEwNDI2MTg3N2FjYzhj
NmVkODA5Y2JjMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaApAQCAt
Miw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZlciBI
dW50IDxvbGl2ZXJAbmVyZ2V0LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTY2LDE1ICs2
NiwyMyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJv
eHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRWxl
bWVudD47CiAgICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0
cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3Qg
U1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlS
ZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUxpZ2h0RWxlbWVudCwgU1ZH
RWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAK
ICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07
CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fYXppbXV0aDsKICAgICBTVkdBbmltYXRlZE51
bWJlckF0dHJpYnV0ZSBtX2VsZXZhdGlvbjsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0
ZSBtX3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgKaW5kZXgg
OWM1NTRlZTExMjU4NjNmNzQ1Y2MxYTk0YjBhMzIxNGQ2MjUwYzA1Yi4uNzI2ZmI2MjM2MTI2ODE5
YTQxZTQ0MTM4NmVlYmI1N2VjOTBkY2NlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTM5LDE2ICszOSwyNCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFTWVy
Z2VOb2RlRWxlbWVudCwgU1ZHRWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBp
c0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0
dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7
IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBT
VkdFbGVtZW50PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lz
dHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBz
dGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAKICAg
ICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJv
eHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCmluZGV4IGFmNmYxNWU4
ZjczMTk1YTA3OGM0ZGUxMWYzMWRlOWI1ZjQ4NGFlOWMuLjBiNmJhMmMyMTdhZWQ0MzcxZWE0Y2Iw
ZGFmMDg5NGY5NTMxZTAyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaApAQCAtNzgsMTAgKzc4LDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRy
aWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVNb3JwaG9s
b2d5RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBz
dGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJl
Z2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnko
KTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmli
dXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3du
ZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQor
CisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxT
VkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAt
OTIsNiArOTksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJh
ZGl1c1lJZGVudGlmaWVyKCk7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRl
T3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwog
ICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8TW9ycGhvbG9neU9wZXJhdG9yVHlw
ZT4gbV9zdmdPcGVyYXRvciB7IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSB9OwogICAgIFNW
R0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fcmFkaXVzWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuaAppbmRleCBiZGIwZTRmMGI4ZmZhODk5NTJkYjkzZDA3ZjRkYjliMGFh
ZjIzYmZlLi4xNDM2YmFlOGQ3YWI0ZDAwOGM0NzkyZmQwM2JmN2ZkNThkYTRlN2RiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCkBAIC00NCwxNiArNDQsMjQgQEAgcHJp
dmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25l
clByb3h5SW1wbDxTVkdGRU9mZnNldEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJl
Z2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJp
YnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3Bl
cnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0K
KworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRy
aWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9p
bjE7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9keDsKICAgICBTVkdBbmltYXRl
ZE51bWJlckF0dHJpYnV0ZSBtX2R5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggN2NlZGFmODU5OWI0MTliZDRkODFiYjQ3ZDU3
NGIxNWE3MjhjYWVjYS4uOTQ4NzdiNDZmN2E2Mzc5OTMwMWMxYjc5NzQ4ZGNlMjcwZDg3MWNhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5oCkBAIC01NCwxMCArNTQsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93
bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIHN0
YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVn
aXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgp
OyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
CkBAIC02OCw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CiAKICAgICBBdHRyaWJ1dGVPd25lclBy
b3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0
cmlidXRlIG1faW4xOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3BlY3VsYXJD
b25zdGFudCB7IDEgfTsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3NwZWN1bGFy
RXhwb25lbnQgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAppbmRleCA3
NTRkZjQwOTkxZTg1Yzk4N2VhYThkNWNjZjI4OTUwMGVkMDljNmQxLi45YTAzM2QyMGRlYTY1ZTRj
N2ExOTQ0NjYxZGE5NWFhMDkzMDc4MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmgKQEAgLTM4LDE2ICszOCwyNCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRl
T3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFVGlsZUVsZW1lbnQs
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJp
YnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsg
cmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBz
dGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQog
ICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVUaWxlRWxl
bWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBT
VkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwor
ICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCmluZGV4IDI3MDcxYzA4ZDM1MDJkMTc4YmVkZjRi
NGQzNjRkYmQ5ZDRiOThjNTguLjdkN2ZmNDIyZGMwODM0NmZiOWM3Y2QwNzAzYWI3NjI1NjhlOWEz
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnNldEZpbHRl
ckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29ucwogCiB2b2lkIFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFBy
b3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKGlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmgKaW5kZXggMzZiNDcyYjJhOGI1MzZjYTBlYzMyYTI4YzYwNmU0MGI3MjAw
NjdlYi4uNGZhMjNhZDE5NTlhYTg2NTk1MjJkZTAwOTkyZmViOTMxMDRlZWNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCkBAIC0xMTYsMTMgKzExNiwx
NyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6
OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0
ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0K
ICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLSAgICAKKyAgICBjb25zdCBT
VkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKICAgICB1c2luZyBQcm9wZXJ0eVJl
Z2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQs
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJv
cGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYg
YXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3du
ZXJQcm94eTsgfQorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKaW5k
ZXggY2VkYTlmNWQ1YzAwOGY0NGM5NjM2NTU5ZDI4ODIxZmE4MDNiMzVhMy4uMzMwZGIyODMyMWM3
YzU4MTk4NDc2NzlhMThiZTcxNjAyNWRlNTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5oCkBAIC01NiwxMSArNTYsMTkgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGaWx0ZXJFbGVt
ZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZl
cmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclBy
b3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0gICAgc3RhdGljIGJvb2wg
aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVz
KCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclBy
b3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAg
ICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNW
R1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisg
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7IH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKQEAgLTczLDYgKzgxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQ
cm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkg
eyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZT4gbV9maWx0ZXJVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRf
VFlQRV9PQkpFQ1RCT1VORElOR0JPWCB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9wcmltaXRpdmVVbml0cyB7IFNWR1Vu
aXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmgKaW5kZXggZTA5NDZmNTUyZWE1NDdlYmY4NjYwM2ZiNmY2YjdhNTNhYjU5YjE3Ni4u
YWQyMWIzMjNhYzg1MjU2YTgxODcyZmNhZjA4ZDVjYjRlN2JhYzNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHRWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdFbGVtZW50PjsKKwogICAgIGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBt
X3kuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLmN1cnJlbnRWYWx1ZShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC03MSw3ICs3MywxMiBAQCBwcm90ZWN0ZWQ6CiAK
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpOyB9CisgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CiAKICAgICBib29sIGlz
RmlsdGVyRWZmZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC03OSwx
MCArODYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
b25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGNvbnN0
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KLQogICAgIEF0dHJpYnV0ZU93
bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKLQogICAgIC8vIFNwZWM6
IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3
aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgU1ZHQW5pbWF0ZWRMZW5n
dGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoLCAiMCUiIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRml0VG9WaWV3Qm94LmgKaW5kZXggZjUxYTdlOWNhZGFjMDU2YzU4MjA0ZTVlMTNjNzBlN2Y3
ZDUxODdmZi4uNWFiYzVhMGU5YTNlZjFjNjAxMzlhZjU3MmYzMWIxNGExMWEwMDdjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaApAQCAtNDAsNiArNDAsOCBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0ZpdFRvVmlld0JveD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJp
YnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRml0VG9WaWV3Qm94PjsKKwogICAgIGNv
bnN0IEZsb2F0UmVjdCYgdmlld0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0JveC5jdXJyZW50
VmFsdWUobV9hdHRyaWJ1dGVPd25lclByb3h5KTsgfQogICAgIGNvbnN0IFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fcHJl
c2VydmVBc3BlY3RSYXRpby5jdXJyZW50VmFsdWUobV9hdHRyaWJ1dGVPd25lclByb3h5KTsgfQog
CkBAIC02MSw3ICs2MywxMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRml0VG9WaWV3
Qm94KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRlZFByb3BlcnR5U3RhdGUgPSBQ
cm9wZXJ0eUlzUmVhZFdyaXRlKTsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7CisgICAgfQogCiAgICAgdm9pZCByZXNldCgpOwogICAgIGJvb2wgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAppbmRleCA4MmE0MzJhYmYyZjVjZTY5OGY5NzIx
OGMxNmNjNWZmMzA1NzU5NjdjLi43NTIxY2NhODBiZGQ5YWMxNWM0Yzg4MjgwNGY3NmU1MmQwYTE5
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaApAQCAtMjQsNyArMjQsNiBAQAog
CiAjaWYgRU5BQkxFKFNWR19GT05UUykKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5o
IgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCkBAIC01Niw3ICs1
NSwxMSBAQCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRy
aWJ1dGVPd25lclByb3h5SW1wbDxTVkdGb250RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYg
YXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3du
ZXJQcm94eTsgfQogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeTxTVkdGb250RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAg
QXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAg
IFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmgKaW5kZXggMzA2ZTExNzBlZjkzNzhhNzc1YjBkZTQ1YjRiNTI0NzA5ZWM5MDgw
NS4uNzk5ZmM4MjNhYTkzMTU0NTc5MDFkZWI2ZDM1YzJiYTc1MzhiNTgzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTE5LDcgKzE5LDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKQEAgLTQ4LDEwICs0
NywxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIHN0YXRpYyBBdHRy
aWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0K
ICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2lu
ZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNjMs
NiArNjksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9h
dHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUg
bV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUg
bV95IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
IG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKaW5k
ZXggYmEzYWNjM2M2MmUyYWEyOTM5NDdmNmVjYWQyOTE5NzJkN2ZjYTg1Ny4uNTBlNDIyNzZiNmQ4
ZTRjYTc5MmVmM2UwY2RjOTlmNjAwOWZhMGI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgK
QEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRl
ZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAj
aW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAgLTM5LDggKzM4LDExIEBAIHByaXZh
dGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIHVz
aW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdH
RWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
PjsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR0Vs
ZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47
CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5h
bDsKIApAQCAtNDgsNiArNTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaAppbmRleCA4MjRmZWZjNTBmYjI1
NzJjMWVmYmI5OWRhZjJjZGVhN2JjMjBmMDFmLi4zZDYyNTAxOTBhYjVlNjFiYTAyYzdlMzkwZGY0
ZjZmNzQ5YjBmMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5oCkBA
IC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0g
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQ+OwogICAgIHN0YXRpYyBhdXRvJiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR2VvbWV0cnlF
bGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQ+OworCiAgICAgYXV0byBwYXRoTGVuZ3RoQW5pbWF0
ZWQoKSB7IHJldHVybiBtX3BhdGhMZW5ndGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CiAKIHByb3RlY3RlZDoKQEAgLTU1LDEwICs1NywxNCBAQCBwcm90ZWN0ZWQ6
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0dlb21ldHJ5RWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBh
dHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CiAKKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1
dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclBy
b3h5OyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIEF0
dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBT
VkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3BhdGhMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2x5cGhSZWZFbGVtZW50LmgKaW5kZXggODgxMGQ1YjA5MjYyMGRjZGQzNGE5NzBjZDk1NGIx
ZjFhYTIzNjFmNy4uZmFjODAyOTM3NmI1YjRmOGI5MmFhMjk3OGM2MzhlYzQ3YjI4MmNjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaApAQCAtNDgsOCArNDgsMTEgQEAg
cHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbDxTVkdHbHlwaFJlZkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZT47CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQ
cm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQotICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIGZpbmFsOwogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTxTVkdHbHlwaFJlZkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGZsb2F0IG1feCB7IDAgfTsKQEAgLTU3LDYgKzYw
LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2R4IHsgMCB9OwogICAgIGZsb2F0IG1fZHkgeyAw
IH07CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhp
cyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAppbmRleCBiNGMz
OTJiMzU0OTc5NjA0Yzk1MWU2ZTc5ZTBjZjc0Y2Q4MWQ2ODQ3Li45NGU1YjE0NjM4ODU4NjFiYjI4
YTc3YjcyNjdkNTUxOWM4OTEyMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5oCkBAIC0yMiw3ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdyYWRp
ZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
IgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTg4LDYgKzg3LDggQEAgcHVibGljOgogICAg
IHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxT
VkdHcmFkaWVudEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR3JhZGllbnRFbGVtZW50LCBTVkdF
bGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+Owor
CiAgICAgU1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2QoKSBjb25zdCB7IHJldHVybiBt
X3NwcmVhZE1ldGhvZC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAg
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JhZGllbnRVbml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIGdyYWRpZW50VHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQpAQCAtOTksNyArMTAwLDExIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0K
KwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuaAppbmRleCAwNmVlNGIzMDc5MmI0ZmY5NjFiNjlmZjM5NjY0N2FjMzU3MmI4MmNj
Li4wMDk4YTgyZjZhZWQxMmJjYjk4ZTM4MGY3MDRjODUwYTBkN2I1YWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKIAog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1Rlc3RzPjsKICAgICBzdGF0aWMg
YXV0byYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9
IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0VsZW1lbnQs
IFNWR1Rlc3RzPjsKIAogICAgIGNvbnN0IGF1dG8mIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNmb3JtLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAg
YXV0byB0cmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQpAQCAtODEsOSArODMsMTIgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQotCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIC8v
IFVzZWQgYnkgPGFuaW1hdGVNb3Rpb24+CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFmZmluZVRyYW5z
Zm9ybT4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmgKaW5kZXggNTIzYmU2MDEyMTc1MWU5NmE5ZWI2OTQ0MGE3M2EzYzBmOTBhMjA2OS4uMTcy
YmQ3MWIwYjExZTRmMzJhY2FmZDQ3OGNlOTMwYjk5MzRhZWFiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuaApAQCAtNTUsMTAgKzU1LDE3IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
dXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNW
R0ltYWdlRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5
OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9
CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdB
dHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lz
dHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ltYWdlRWxlbWVudCwgU1ZHR3JhcGhp
Y3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+
OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNzQsNiArODEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuaAppbmRleCBmMWViYzRlY2JmNzVhNDUzMTNkNDM2ZGU1ZjhhODM5ZWM3
YjY5YWYxLi44MDU0ZjMwNmM4MzYyNDc2N2VkY2JjOTEwNTcxNzAyZWFkYTRkNjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaApAQCAtNDgsMTAgKzQ4LDE3IEBAIHByaXZhdGU6CiAK
ICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUlt
cGw8U1ZHTGluZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJl
Z2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJp
YnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTGluZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGZpbmFsOwogCkBAIC02MCw2ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlIG1feDEgeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3kxIHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1feDIgeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAppbmRleCA5ZjY3MGM5ZGFhNDgyODE5OWExZjUyYjM0
YTJmNzk2ZGU2YWUxMjc2Li4yMjQ4ZDVjZGM0ZDZhMDE5ODEzYWM3ZDZlODBhZWIzNGVkOGNlNzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCkBA
IC01MSwxMCArNTEsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJv
eHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFNWR0dyYWRpZW50RWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0
dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdH
cmFkaWVudEVsZW1lbnQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwor
ICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApAQCAtNjMsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZSBtX3gxIHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV95MSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3gyIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuaAppbmRleCAzOWM5ZWEwNDUxODIwOGVkOTIzNGEwMjRlZTA3ODQwNzJjMzA4
Y2VkLi42ZWM4YmQ4YjMwOTUzN2Y0MzdhOGJkMjYwYmZkZGFmN2NlNjVkOTc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCkBAIC0yMCw3ICsyMCw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDYsOCArNDUsMTEgQEAgcHJpdmF0ZToKICAgICBT
VkdNUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1
c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZH
TVBhdGhFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBT
VkdVUklSZWZlcmVuY2U+OwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0
cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQ
cm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdNUGF0aEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNjIsNiArNjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5UGFyZW50T2ZQYXRoQ2hhbmdlKENvbnRhaW5lck5vZGUqKTsKIAog
ICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsK
KyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
aAppbmRleCAzN2MxODBhMDFmYTRkMjNiOGQ0MmY1ZGJhNzVhMjk1ZTI2NTU1Njg0Li5iODllMDlj
MzYyZmQwNDc4Y2Q3ZmI3MWJkODI2YWNkYzJlNTVlYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
YXJrZXJFbGVtZW50LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIgpA
QCAtNzksMTEgKzc4LDE4IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclBy
b3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHTWFya2VyRWxlbWVudCwgU1ZHRWxl
bWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQotICAgIHN0YXRpYyBib29sIGlzQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAg
Y29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJv
cGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdNYXJrZXJFbGVtZW50
LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdC
b3g+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBi
b29sIGlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
IHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwpAQCAtMTI2LDYgKzEzMiw3IEBAIHByaXZh
dGU6CiAKICAgICB1c2luZyBTVkdBbmltYXRlZEN1c3RvbUFuZ2xlQXR0cmlidXRlQWNjZXNzb3Ig
PSBTVkdBbmltYXRlZFBhaXJBdHRyaWJ1dGVBY2Nlc3NvcjxTVkdNYXJrZXJFbGVtZW50LCBTVkdB
bmltYXRlZEFuZ2xlQXR0cmlidXRlLCBBbmltYXRlZEFuZ2xlLCBTVkdBbmltYXRlZEN1c3RvbU9y
aWVudFR5cGVBdHRyaWJ1dGUsIEFuaW1hdGVkRW51bWVyYXRpb24+OwogCisgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIG1fcmVmWCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fcmVmWSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZSBtX21hcmtlcldpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMyIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKaW5kZXggMzBiZTc3ZTgwYWU0OGEwYWJm
YmMyZjRjZGM2MzIzYTBlYmRkOGFiOC4uOWI5M2RkNGM0YzZhZTYwM2QxOWQ5NjAxODljMmQyOTUz
MmRjMjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKQEAgLTIwLDcgKzIwLDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRM
ZW5ndGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCkBAIC01NSwxMSArNTQsMTggQEAgcHJp
dmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25l
clByb3h5SW1wbDxTVkdNYXNrRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgU1ZHVGVzdHM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpB
dHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBB
dHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBh
dHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25l
clByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25l
clJlZ2lzdHJ5PFNWR01hc2tFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBTVkdUZXN0cz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsg
fQorCisgICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CkBAIC03MSw2ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93
bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5n
dGhNb2RlV2lkdGgsICItMTAlIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
eSB7IExlbmd0aE1vZGVIZWlnaHQsICItMTAlIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuaAppbmRleCA5ODFkZTg2NTFjMWU2YzZjMzY5NTg2MTQxN2JkNWJlNmZk
YzlkZjY3Li5mODAwMDdlMjgwNTI4ZTk4OGM4ZTc1MjYwYjcyOGQxZjFiNGIxYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaApAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJQYXRoLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGgu
aCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0xMTEsMTAg
KzExMCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1BhdGhFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1l
bnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIHN0YXRpYyBhdXRvJiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHUGF0aEVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorICAg
IAorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5h
bDsKIApAQCAtMTU2LDYgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgU1ZHQW5pbWF0ZWRD
dXN0b21QYXRoU2VnTGlzdEF0dHJpYnV0ZUFjY2Vzc29yID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGVB
Y2Nlc3NvcjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5pbWF0ZWRDdXN0b21QYXRoU2VnTGlzdEF0dHJp
YnV0ZSwgQW5pbWF0ZWRQYXRoPjsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1
dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRDdXN0b21QYXRoU2VnTGlzdEF0dHJp
YnV0ZSBtX3BhdGhTZWdMaXN0IHsgKnRoaXMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmgKaW5kZXggMDNhNjA2ZjBhMDU4MjIyMmYyYWY5MTA3NTQwODEwMTA4ZDk2
MzdhOC4uMTlkOWI5MWQ3NWYxOGMwZjE3YThiYTRiY2U2ZDlmYjhmYjdlMGIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCIKQEAgLTY5LDExICs2OCwx
OCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHlJbXBsPFNWR1BhdHRlcm5FbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3gsIFNWR1Rlc3RzLCBTVkdVUklS
ZWZlcmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdp
c3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0gICAgc3RhdGljIGJv
b2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBTVkdGaXRUb1ZpZXdCb3gsIFNWR1Rlc3RzLCBTVkdVUklSZWZlcmVuY2U+OworICAgIGNvbnN0
IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IGZpbmFsOwpAQCAtODUsNiArOTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEF0dHJpYnV0
ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BvbHlFbGVtZW50LmgKaW5kZXggMDMyMGMwNDc4MDhjYmEzM2Y4Y2NlMzRjZjdlNDBkMzNk
NjQ3YmJhMi4uNWM0OWY1NjQ5NGE4OWIzMzZhMmI5ODhmNmMxMDQwZGYyNmIzYjZmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKQEAgLTQ0LDEwICs0NCwxNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbDxTVkdQb2x5RWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6
QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQog
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdQb2x5RWxlbWVudCwgU1ZHR2VvbWV0cnlF
bGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9w
ZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
cm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0K
KwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOyAKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC01NSw2ICs2Miw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0
aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwogICAgIFNWR0FuaW1hdGVkUG9pbnRMaXN0QXR0cmlidXRlIG1fcG9pbnRzOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCmluZGV4IGY5OTFm
M2QwMmQ5NWI2YjdlMjg4ZWQwYjYzZDdjZTA5ZWI5MjY2ZTAuLmI3MmM3MTU5Nzk3ZjNiZDBhNTk4
NjZkYWFhMjJmZTFkYjFhMmFkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmgKQEAgLTU2LDggKzU2LDExIEBAIHByaXZhdGU6CiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1JhZGlh
bEdyYWRpZW50RWxlbWVudCwgU1ZHR3JhZGllbnRFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmli
dXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRl
T3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlT3duZXJQcm94eTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdH
cmFkaWVudEVsZW1lbnQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAgLTY2LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEF0
dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5p
bWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9jeCB7IExlbmd0aE1vZGVXaWR0aCwgIjUwJSIgfTsKICAg
ICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX2N5IHsgTGVuZ3RoTW9kZUhlaWdodCwgIjUw
JSIgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3IgeyBMZW5ndGhNb2RlT3Ro
ZXIsICI1MCUiIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCmluZGV4IGU0Y2RhYjFh
ZmZhNTJjOWY1NDQ0YjM1YjMzN2NkMzZlMDZlMDFmMTUuLjU4Y2UxZDkwMzViNWRlYmZjYWRkZjRi
OTUzY2MyNzc1ODlmMzU1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCkBAIC0y
MSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29s
ZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR2VvbWV0cnlFbGVtZW50Lmgi
CkBAIC01MywxMCArNTIsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVy
UHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdSZWN0RWxlbWVudCwgU1ZHR2Vv
bWV0cnlFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBzdGF0aWMg
YXV0byYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR1JlY3RFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1lbnQsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkm
IHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0
cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBmaW5hbDsKIApAQCAtNjYsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
eCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
eSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaApp
bmRleCA5YmNmMjg2ODU2NDhiNTM4MTZiMjI1N2NkZGMwNDJmNGM3MjBhODcxLi4xOWRjNWUwMDhj
NDk5YzMxMDU1NWZmMjNlMmY1ZDUzYzQxMTU0ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRSZWN0LmgiCkBAIC0xMzUsMTIgKzEzNCwxOSBAQCBw
cml2YXRlOgogICAgIFNWR1NWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAgICAgdmlydHVhbCB+U1ZHU1ZHRWxlbWVudCgpOwogCi0gICAgdXNpbmcgQXR0cmlidXRl
T3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1NWR0VsZW1lbnQsIFNW
R0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9W
aWV3Qm94LCBTVkdab29tQW5kUGFuPjsKKyAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0g
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHU1ZHRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OwogICAg
IHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRl
UmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3Ry
eSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRy
aWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdTVkdFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdp
c3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlS
ZWdpc3RyeTsgfQorICAgIAorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRy
aWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTE3MCw2ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2N1cnJlbnRWaWV3RnJhZ21lbnRJZGVudGlmaWVyOwogCiAgICAgQXR0cmlidXRlT3duZXJQ
cm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0fTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSJfcyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKaW5kZXggZjhjZWQyMmEzMjcyODFiMDExODAzNWE5Yjcx
ODA3ZjE1YTgxNWQyOC4uNjc2MGNjZDMxOTJmNzk3ZWFiZWU0ZmVmMDUwNWY3OTlhNGRjMDBmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDMsOCArNDIsMTEgQEAgcHJp
dmF0ZToKICAgICBTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCk7CiAKICAg
ICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8
U1ZHU2NyaXB0RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgU1ZHVVJJUmVmZXJlbmNlPjsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkm
IGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93
bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93
bmVyUmVnaXN0cnk8U1ZHU2NyaXB0RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJl
Z2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0
eVJlZ2lzdHJ5OyB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC04NSw2ICs4Nyw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25l
clByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgVGltZXIgbV9zdmdMb2FkRXZlbnRUaW1lcjsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKaW5kZXggZDg0M2I3NmFmZWRhM2ZhNTA3MDNmYjE3Zjc2
ODZhNjJjMDEwYTc5Zi4uZmQzOTlhYmFkZTI4OWU2NWY1NzZiMDljYzZiNTEyN2Y5MGNlZjAzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKQEAgLTQxLDEwICs0MSwxNyBAQCBwcml2
YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHlJbXBsPFNWR1N0b3BFbGVtZW50LCBTVkdFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmli
dXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0
YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAg
ICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdTdG9wRWxlbWVu
dCwgU1ZHRWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisg
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwog
CkBAIC01NCw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1f
b2Zmc2V0IHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
cmluZ0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgKaW5kZXggN2Zl
N2YwMGZjNTJhNThiY2QwMDFmMmZhYmM1YjJmYTM4YTM3ZWU4NS4uZWQ3ZWE0NDk2ODVjMTExMzkw
OTNmNThjNzNkNWJlOWZiMDI1YzE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0cmluZ0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDMzICsyNSw2MyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIK
LSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAiU1ZHUHJpbWl0aXZlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNWR1N0cmluZ0xpc3QgZmluYWwgOiBwdWJsaWMgU1ZHU3RhdGljTGlz
dFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdMaXN0VmFsdWVzPiB7CitjbGFzcyBTVkdTdHJpbmdM
aXN0IGZpbmFsIDogcHVibGljIFNWR1ByaW1pdGl2ZUxpc3Q8U3RyaW5nPiB7CisgICAgdXNpbmcg
QmFzZSA9IFNWR1ByaW1pdGl2ZUxpc3Q8U3RyaW5nPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOwor
ICAgIHVzaW5nIEJhc2U6Om1faXRlbXM7CisKIHB1YmxpYzoKLSAgICB1c2luZyBBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3Ry
aW5nTGlzdFZhbHVlcz47Ci0gICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKKyAgICBzdGF0aWMgUmVmPFNWR1N0
cmluZ0xpc3Q+IGNyZWF0ZShTVkdQcm9wZXJ0eU93bmVyKiBvd25lcikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1N0cmluZ0xpc3Qob3duZXIpKTsKKyAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xpc3Q+IGNyZWF0ZShTVkdFbGVtZW50JiBjb250ZXh0RWxl
bWVudCwgU1ZHU3RyaW5nTGlzdFZhbHVlcyYgdmFsdWVzKQorICAgIHZvaWQgcmVzZXQoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdT
dHJpbmdMaXN0KCZjb250ZXh0RWxlbWVudCwgdmFsdWVzKSk7CisgICAgICAgIHBhcnNlKHN0cmlu
ZywgJyAnKTsKKworICAgICAgICAvLyBBZGQgZW1wdHkgc3RyaW5nLCBpZiBsaXN0IGlzIGVtcHR5
LgorICAgICAgICBpZiAobV9pdGVtcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2l0ZW1zLmFw
cGVuZChlbXB0eVN0cmluZygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xp
c3Q+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmLCBTVkdQcm9wZXJ0eVJvbGUs
IFNWR1N0cmluZ0xpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYpCisgICAgYm9v
bCBwYXJzZShjb25zdCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKICAgICB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGlzLiBJdCdzIG9ubHkgbmVlZGVk
IHRvIGtlZXAgV2luZG93cyBjb21waWxpbmcuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdTdHJpbmdMaXN0KG51bGxwdHIsIHZh
bHVlcykpOworICAgICAgICBjbGVhckl0ZW1zKCk7CisKKyAgICAgICAgYXV0byB1cGNvbnZlcnRl
ZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGRhdGEpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwor
ICAgICAgICBjb25zdCBVQ2hhciogcHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgICAg
ICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgZGF0YS5sZW5ndGgoKTsKKyAgICAgICAgd2hpbGUg
KHB0ciA8IGVuZCkgeworICAgICAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gcHRyOworICAg
ICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAqcHRyICE9IGRlbGltaXRlciAmJiAhaXNTVkdT
cGFjZSgqcHRyKSkKKyAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIGlmIChwdHIg
PT0gc3RhcnQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtX2l0ZW1zLmFw
cGVuZChTdHJpbmcoc3RhcnQsIHB0ciAtIHN0YXJ0KSk7CisgICAgICAgICAgICBza2lwT3B0aW9u
YWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIsIGVuZCwgZGVsaW1pdGVyKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBwdHIgPT0gZW5kOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBTVkdT
dHJpbmdMaXN0KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBTVkdTdHJpbmdMaXN0VmFsdWVz
JiB2YWx1ZXMpCi0gICAgICAgIDogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJp
bmdMaXN0VmFsdWVzPihjb250ZXh0RWxlbWVudCwgdmFsdWVzKQorICAgIFN0cmluZyB2YWx1ZUFz
U3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKworICAgICAgICBmb3IgKGF1dG8gc3RyaW5nIDogbV9pdGVtcykgeworICAgICAgICAg
ICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKKworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyaW5nKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzZmY4OThhOTEyYjYyMDE4MGVkMzM2ZDEzODdkZWFiYjUzN2Q5NDc4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIKLQotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNs
dWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVz
Ojpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpCi17Ci0gICAgY29udGV4
dEVsZW1lbnQuaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKLSAgICBjb250ZXh0RWxlbWVudC5z
dmdBdHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlTmFtZSk7Ci19Ci0KLXZvaWQgU1ZHU3RyaW5n
TGlzdFZhbHVlczo6cmVzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgcGFyc2Uoc3Ry
aW5nLCAnICcpOwotCi0gICAgLy8gQWRkIGVtcHR5IHN0cmluZywgaWYgbGlzdCBpcyBlbXB0eS4K
LSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICBhcHBlbmQoZW1wdHlTdHJpbmcoKSk7Ci19Ci0K
LXZvaWQgU1ZHU3RyaW5nTGlzdFZhbHVlczo6cGFyc2UoY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hh
ciBkZWxpbWl0ZXIpCi17Ci0gICAgLy8gVE9ETyA6IG1vcmUgZXJyb3IgY2hlY2tpbmcvcmVwb3J0
aW5nCi0gICAgY2xlYXIoKTsKLQotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3Ry
aW5nVmlldyhkYXRhKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciog
cHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIg
KyBkYXRhLmxlbmd0aCgpOwotICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKLSAgICAgICAgY29uc3Qg
VUNoYXIqIHN0YXJ0ID0gcHRyOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICpwdHIgIT0g
ZGVsaW1pdGVyICYmICFpc1NWR1NwYWNlKCpwdHIpKQotICAgICAgICAgICAgcHRyKys7Ci0gICAg
ICAgIGlmIChwdHIgPT0gc3RhcnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgYXBwZW5k
KFN0cmluZyhzdGFydCwgcHRyIC0gc3RhcnQpKTsKLSAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzT3JEZWxpbWl0ZXIocHRyLCBlbmQsIGRlbGltaXRlcik7Ci0gICAgfQotfQotCi1TdHJpbmcg
U1ZHU3RyaW5nTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChpID4g
MCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoYXQoaSkpOwotICAgIH0KLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmZjlhMjc0MjIxOTAwMTBhMGNjYWJkZWEzNTRhMzM1ODZjZTA5
MDU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKLSNpbmNsdWRlICJTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5o
IgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNW
R1N0cmluZ0xpc3Q7Ci1jbGFzcyBTVkdTdHJpbmdMaXN0VmFsdWVzOwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiAKLWNsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKLQotdXNpbmcgU1ZHU3RyaW5nTGlz
dFZhbHVlc0F0dHJpYnV0ZSA9IFNWR1Byb3BlcnR5QXR0cmlidXRlPFNWR1N0cmluZ0xpc3RWYWx1
ZXM+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci11c2luZyBTVkdTdHJpbmdMaXN0
VmFsdWVzQXR0cmlidXRlQWNjZXNzb3IgPSBTVkdQcm9wZXJ0eUF0dHJpYnV0ZUFjY2Vzc29yPE93
bmVyVHlwZSwgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZT47Ci0KLWNsYXNzIFNWR1N0cmlu
Z0xpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFN0cmluZz4gewotcHVibGljOgotICAg
IFNWR1N0cmluZ0xpc3RWYWx1ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
LSAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdm9pZCByZXNldChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHBhcnNlKGNvbnN0IFN0
cmluZyYsIFVDaGFyIGRlbGltaXRlciA9ICcsJyk7Ci0KLSAgICAvLyBPbmx5IHVzZWQgYnkgU1ZH
U3RyaW5nTGlzdC4KLSAgICB2b2lkIGNvbW1pdENoYW5nZShTVkdFbGVtZW50JiBjb250ZXh0RWxl
bWVudCk7Ci0KLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwotCi1wcml2YXRlOgot
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRlTmFtZTsKLX07Ci0KLXRlbXBsYXRl
PD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1N0cmluZ0xpc3RWYWx1ZXM+IHsKLSAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1N0cmluZ0xpc3RWYWx1ZXMmIGxpc3QpIHsg
cmV0dXJuIGxpc3QudmFsdWVBc1N0cmluZygpOyB9Ci0KLSAgICB1c2luZyBMaXN0SXRlbVR5cGUg
PSBTdHJpbmc7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2Zm
PFN0cmluZz47Ci0gICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR1N0cmluZ0xpc3Q7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVs
ZW1lbnQuaAppbmRleCAxZTQ0NjY3ZGI0ZTJjMGY1NDRkZTJlYjMxODEzYTk4ZDE4ZTJmZmU1Li5j
M2QzMzJjZDg1ZWY0MThlOWY4YmY2MjMyMTAzODc4YjM4ODQ0MDI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTd2l0Y2hFbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAg
LTM4LDEyICszNywxNiBAQCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkg
PSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdTd2l0Y2hFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIGNvbnN0IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHU3dpdGNoRWxlbWVudCwgU1ZHR3JhcGhp
Y3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IGZpbmFsOwogICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKaW5kZXggZDc2ODNlMTkyMzg1ZmVlODQ4NmYw
OTliZGE2Nzc1MGIyNTA5ZWYyZC4uZTFmMjhmMTRjODhhNDY1NWVjNGM0ZmFmZTcyYjRiMWI0NTg1
OTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtNDEsNiArNDAsOSBA
QCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbDxTVkdTeW1ib2xFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OwogICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHU3ltYm9sRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKKyAgICBjb25zdCBT
VkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CkBAIC00OCw2ICs1MCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7
ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuaAppbmRleCBiYTE3Y2NhYWU3ZTAxYWFlMDIwYTczZDIxZDJiYzg0YTRhZDcxYjJiLi4w
ZWIzZDZhMDZiNWYyZTJkNzVmYTk4Y2E1MmU2ODY3YWI3MjcwNDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuaApAQCAtNDAsOCArNDAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IH5TVkdUUmVmRWxlbWVudCgpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1RSZWZFbGVtZW50LCBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LCBTVkdVUklSZWZlcmVuY2U+OwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3du
ZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0
cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1By
b3BlcnR5T3duZXJSZWdpc3RyeTxTVkdUUmVmRWxlbWVudCwgU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudCwgU1ZHVVJJUmVmZXJlbmNlPjsKKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAg
LTU5LDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkg
b3ZlcnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94
eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAq
dGhpcyB9OwogICAgIFJlZjxTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcj4gbV90YXJnZXRMaXN0
ZW5lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCmluZGV4IDcxMzRjZTdiOGU2ZWZjMTZl
OWJkZjQ5ZjFlNGNkZTQyMTRlMTFjNDEuLmY0NGY5MGUzZmYxOTc4MTM0M2E2M2U1OGUzOTdlY2M4
OWU2MjYyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcApAQCAtMTA5LDE4ICsxMDksMTYgQEAg
c3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBz
dXBwb3J0ZWRTVkdGZWF0dXJlcygpCiAKIFNWR1Rlc3RzOjpTVkdUZXN0cyhTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCkKICAgICA6IG1fY29udGV4dEVsZW1lbnQoKmNvbnRleHRFbGVtZW50KQor
ICAgICwgbV9yZXF1aXJlZEZlYXR1cmVzKFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShjb250ZXh0RWxl
bWVudCkpCisgICAgLCBtX3JlcXVpcmVkRXh0ZW5zaW9ucyhTVkdTdHJpbmdMaXN0OjpjcmVhdGUo
Y29udGV4dEVsZW1lbnQpKQorICAgICwgbV9zeXN0ZW1MYW5ndWFnZShTVkdTdHJpbmdMaXN0Ojpj
cmVhdGUoY29udGV4dEVsZW1lbnQpKQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotfQot
Ci12b2lkIFNWR1Rlc3RzOjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lz
dHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjpyZXF1aXJlZEZlYXR1cmVzQXR0ciwgJlNWR1Rlc3RzOjptX3JlcXVpcmVkRmVhdHVyZXM+KCk7
Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5z
aW9uc0F0dHIsICZTVkdUZXN0czo6bV9yZXF1aXJlZEV4dGVuc2lvbnM+KCk7Ci0gICAgcmVnaXN0
cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0ciwgJlNWR1Rl
c3RzOjptX3N5c3RlbUxhbmd1YWdlPigpOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0
ciwgJlNWR1Rlc3RzOjptX3JlcXVpcmVkRmVhdHVyZXM+KCk7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIs
ICZTVkdUZXN0czo6bV9yZXF1aXJlZEV4dGVuc2lvbnM+KCk7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0ciwgJlNW
R1Rlc3RzOjptX3N5c3RlbUxhbmd1YWdlPigpOworICAgIH0pOwogfQogCiBTVkdUZXN0czo6QXR0
cmlidXRlUmVnaXN0cnkmIFNWR1Rlc3RzOjphdHRyaWJ1dGVSZWdpc3RyeSgpCkBAIC0xMzAsNyAr
MTI4LDcgQEAgU1ZHVGVzdHM6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBTVkdUZXN0czo6YXR0cmlidXRl
UmVnaXN0cnkoKQogCiBib29sIFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CiB9CiAKIGJvb2wgU1ZH
VGVzdHM6Omhhc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTE0NSwxNSAr
MTQzLDE1IEBAIGJvb2wgU1ZHVGVzdHM6Omhhc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbikKIAogYm9vbCBTVkdUZXN0czo6aXNWYWxpZCgpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRv
JiBmZWF0dXJlIDogbV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlKCkpIHsKKyAgICBmb3IgKGF1dG8m
IGZlYXR1cmUgOiBtX3JlcXVpcmVkRmVhdHVyZXMtPml0ZW1zKCkpIHsKICAgICAgICAgaWYgKGZl
YXR1cmUuaXNFbXB0eSgpIHx8ICFzdXBwb3J0ZWRTVkdGZWF0dXJlcygpLmNvbnRhaW5zKGZlYXR1
cmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBmb3IgKGF1dG8mIGxh
bmd1YWdlIDogbV9zeXN0ZW1MYW5ndWFnZS52YWx1ZSgpKSB7CisgICAgZm9yIChhdXRvJiBsYW5n
dWFnZSA6IG1fc3lzdGVtTGFuZ3VhZ2UtPml0ZW1zKCkpIHsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IGRlZmF1bHRMYW5ndWFnZSgpLnN1YnN0cmluZygwLCAyKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3JlcXVpcmVkRXh0
ZW5zaW9ucy52YWx1ZSgpKSB7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3JlcXVpcmVk
RXh0ZW5zaW9ucy0+aXRlbXMoKSkgewogICAgICAgICBpZiAoIWhhc0V4dGVuc2lvbihleHRlbnNp
b24pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE2MywxMSArMTYxLDEx
IEBAIGJvb2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogdm9pZCBTVkdUZXN0czo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSByZXF1aXJlZEZlYXR1
cmVzQXR0cikKLSAgICAgICAgbV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlKCkucmVzZXQodmFsdWUp
OworICAgICAgICBtX3JlcXVpcmVkRmVhdHVyZXMtPnJlc2V0KHZhbHVlKTsKICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSByZXF1aXJlZEV4dGVuc2lvbnNBdHRyKQotICAgICAgICBtX3JlcXVpcmVk
RXh0ZW5zaW9ucy52YWx1ZSgpLnJlc2V0KHZhbHVlKTsKKyAgICAgICAgbV9yZXF1aXJlZEV4dGVu
c2lvbnMtPnJlc2V0KHZhbHVlKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBzeXN0ZW1MYW5n
dWFnZUF0dHIpCi0gICAgICAgIG1fc3lzdGVtTGFuZ3VhZ2UudmFsdWUoKS5yZXNldCh2YWx1ZSk7
CisgICAgICAgIG1fc3lzdGVtTGFuZ3VhZ2UtPnJlc2V0KHZhbHVlKTsKIH0KIAogdm9pZCBTVkdU
ZXN0czo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
QEAgLTE4NywyNCArMTg1LDYgQEAgdm9pZCBTVkdUZXN0czo6YWRkU3VwcG9ydGVkQXR0cmlidXRl
cyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+JiBzdXBwb3J0ZWRBdHRyaWJ1dGUKICAgICBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmFkZChzeXN0ZW1MYW5ndWFnZUF0dHIpOwogfQogCi1SZWY8U1ZHU3RyaW5n
TGlzdD4gU1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKQotewotICAgIG1fcmVxdWlyZWRGZWF0
dXJlcy5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICByZXR1cm4gU1ZHU3RyaW5nTGlz
dDo6Y3JlYXRlKG1fY29udGV4dEVsZW1lbnQsIG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZSgpKTsK
LX0KLQotUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMoKQot
ewotICAgIG1fcmVxdWlyZWRFeHRlbnNpb25zLnNldFNob3VsZFN5bmNocm9uaXplKHRydWUpOwot
ICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUobV9jb250ZXh0RWxlbWVudCwgbV9yZXF1
aXJlZEV4dGVuc2lvbnMudmFsdWUoKSk7Ci19Ci0KLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdUZXN0
czo6c3lzdGVtTGFuZ3VhZ2UoKQotewotICAgIG1fc3lzdGVtTGFuZ3VhZ2Uuc2V0U2hvdWxkU3lu
Y2hyb25pemUodHJ1ZSk7Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShtX2NvbnRl
eHRFbGVtZW50LCBtX3N5c3RlbUxhbmd1YWdlLnZhbHVlKCkpOwotfQotCiBib29sIFNWR1Rlc3Rz
OjpoYXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgaGVy
ZSBvbmx5IHRvIGJlIGV4cG9zZWQgaW4gdGhlIE9iamVjdGl2ZS1DIGFuZCBHT2JqZWN0IGJpbmRp
bmdzIGZvciBib3RoIE5vZGUgYW5kIERPTUltcGxlbWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMu
aAppbmRleCA3OWRkZTliNjBhNDg5N2E1MWFjYjg4MzA5ZTkxYzk0YWQ3ZWZlNmZkLi4xNjJlYzEy
NTg2MDEzNGNkZDM4ZTcyM2U2MTJhMDU1ZTIwOWZkZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGVzdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMTAgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIxLDggKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJT
VkdBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCisjaW5jbHVk
ZSAiU1ZHU3RyaW5nTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDYgKzM0
LDkgQEAgY2xhc3MgU1ZHQXR0cmlidXRlUmVnaXN0cnk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25l
clR5cGUsIHR5cGVuYW1lLi4uIEJhc2VUeXBlcz4KIGNsYXNzIFNWR0F0dHJpYnV0ZU93bmVyUHJv
eHlJbXBsOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lLi4uIEJhc2VU
eXBlcz4KK2NsYXNzIFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTsKKwogY2xhc3MgU1ZHVGVzdHMg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR1Rlc3RzKTsKIHB1YmxpYzoKQEAgLTQzLDcg
KzQ1LDEwIEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEF0dHJpYnV0ZVJlZ2lzdHJ5ID0gU1ZHQXR0
cmlidXRlUmVnaXN0cnk8U1ZHVGVzdHM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVSZWdpc3RyeSYg
YXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOworCisgICAgdXNpbmcgUHJvcGVydHlS
ZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdUZXN0cz47CisKKyAgICBzdGF0
aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CkBAIC01MywyMSArNTgsMjAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGhhc0ZlYXR1cmVGb3JMZWdhY3lCaW5kaW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNv
bnN0IFN0cmluZyYgdmVyc2lvbik7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQg
ZnJvbSBET00gdGhyb3VnaCB0aGUgc3VwZXIgY2xhc3Nlcy4KLSAgICBSZWY8U1ZHU3RyaW5nTGlz
dD4gcmVxdWlyZWRGZWF0dXJlcygpOwotICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEV4
dGVuc2lvbnMoKTsKLSAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVtTGFuZ3VhZ2UoKTsKKyAg
ICBTVkdTdHJpbmdMaXN0JiByZXF1aXJlZEZlYXR1cmVzKCkgeyByZXR1cm4gbV9yZXF1aXJlZEZl
YXR1cmVzOyB9CisgICAgU1ZHU3RyaW5nTGlzdCYgcmVxdWlyZWRFeHRlbnNpb25zKCkgeyByZXR1
cm4gbV9yZXF1aXJlZEV4dGVuc2lvbnM7IH0KKyAgICBTVkdTdHJpbmdMaXN0JiBzeXN0ZW1MYW5n
dWFnZSgpIHsgcmV0dXJuIG1fc3lzdGVtTGFuZ3VhZ2U7IH0KIAogcHJvdGVjdGVkOgogICAgIFNW
R1Rlc3RzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKIAogcHJpdmF0ZToKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHVGVz
dHM+OwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogCiAgICAgU1ZHRWxl
bWVudCYgbV9jb250ZXh0RWxlbWVudDsKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRl
IG1fcmVxdWlyZWRGZWF0dXJlcyB7IFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ciB9Owot
ICAgIFNWR1N0cmluZ0xpc3RWYWx1ZXNBdHRyaWJ1dGUgbV9yZXF1aXJlZEV4dGVuc2lvbnMgeyBT
VkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0ciB9OwotICAgIFNWR1N0cmluZ0xpc3RWYWx1
ZXNBdHRyaWJ1dGUgbV9zeXN0ZW1MYW5ndWFnZSB7IFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0
dHIgfTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEZlYXR1cmVzOworICAgIFJl
ZjxTVkdTdHJpbmdMaXN0PiBtX3JlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBSZWY8U1ZHU3RyaW5n
TGlzdD4gbV9zeXN0ZW1MYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuaWRsCmluZGV4IGE0NGYwNzNlOTQ0NzUxY2MzYTc2NzBmZjg1ODk5Zjlm
OGM3ZTQ0ZjUuLjNiN2E5Yzc4ODA5NTgyYjhmN2Q1MTNkNzg1NGZiMGMwMWQxMGMyMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1Rlc3RzLmlkbApAQCAtMjgsOSArMjgsOSBAQAogICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFNWR1Rlc3RzIHsKLSAg
ICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEZl
YXR1cmVzOwotICAgIFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0
IHJlcXVpcmVkRXh0ZW5zaW9uczsKLSAgICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUg
U1ZHU3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdT
dHJpbmdMaXN0IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZp
bmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICBib29sZWFuIGhh
c0V4dGVuc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXh0ZW5zaW9uID0gInVuZGVmaW5lZCIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCmluZGV4IDE1N2MzZDdh
Nzg2NjczNmE2NjYzMDBjZGIxMTcwMTZlNjJkOWEzNzMuLjhkY2FjNjQ1Y2JhMWU2MDg1ZGQ3NzE0
NjhlMmFiNzExMWFjNTNkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRF
bGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJT
VkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmgiCkBAIC04OSw2ICs4OCw4IEBAIHB1YmxpYzoKIAogICAgIHVzaW5n
IEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdUZXh0
Q29udGVudEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lz
dHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0
dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0g
U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHR3JhcGhp
Y3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKIAogICAgIGNvbnN0IFNW
R0xlbmd0aFZhbHVlJiB0ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0TGVuZ3RoLmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgU1ZHTGVuZ3RoQWRqdXN0
VHlwZSBsZW5ndGhBZGp1c3QoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aEFkanVzdC5jdXJyZW50
VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQpAQCAtMTEwLDEwICsxMTEsMTQgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNUZXh0Q29udGVudCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRy
aWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25l
clByb3h5OyB9CiAKKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5
OyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGljIGJv
b2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIGNsYXNz
IFNWR0FuaW1hdGVkQ3VzdG9tTGVuZ3RoQXR0cmlidXRlIDogcHVibGljIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmgKaW5kZXggNjliMzg1NWQ2MzMyNDAyMTk0ZGU4OGE1NjE1NjZhZWI5OGZjODFlYS4u
ZTRmYTY4M2FlNWY5NzQ0OWEyN2QyNmQzMDRlZjU3OTEzYWQ1OTAwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaApAQCAtMTI4LDEwICsxMjgsMTcgQEAgcHJpdmF0ZToK
IAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5
SW1wbDxTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHVVJJUmVm
ZXJlbmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0
cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0
cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94
eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRl
T3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTxTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR1RleHRDb250ZW50RWxlbWVudCwg
U1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisK
KyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAKQEAgLTE0Nyw2ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94
eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3N0YXJ0T2Zmc2V0IHsgTGVuZ3RoTW9kZU90aGVyIH07CiAgICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+IG1fbWV0aG9kIHsgU1ZH
VGV4dFBhdGhNZXRob2RBbGlnbiB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1
dGU8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT4gbV9zcGFjaW5nIHsgU1ZHVGV4dFBhdGhTcGFjaW5n
RXhhY3QgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dC5oCmluZGV4IDFiMWI4MWJiMjg5YjE0MzI1MTkyMWE3NWZhNGM4MjM2ZWJlYzIzYTEuLjNmMjhk
ZmRkN2FlOTk5ZGYzMDVhY2MyOTM3YTZlZTQyZDM0MWJjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaApAQCAtMzQsNiArMzQsOCBAQCBwdWJs
aWM6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQ
cm94eUltcGw8U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVGV4dENvbnRlbnRFbGVtZW50
PjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0
dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRl
UmVnaXN0cnkoKTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVGV4dENvbnRl
bnRFbGVtZW50PjsKIAogICAgIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMmIHgoKSBjb25zdCB7
IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBj
b25zdCBTVkdMZW5ndGhMaXN0VmFsdWVzJiB5KCkgY29uc3QgeyByZXR1cm4gbV95LmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC01OCwxMSArNjAsMTcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYpIGZpbmFsOwogCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQotCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CisKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lz
dHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
QXR0cmlidXRlIG1feDsKICAgICBTVkdBbmltYXRlZExlbmd0aExpc3RBdHRyaWJ1dGUgbV95Owog
ICAgIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZSBtX2R4OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VSSVJlZmVyZW5jZS5oCmluZGV4IDY2MGMyNjI2MzA3NDJhOWNhMjhmZWJiYzdkYWFhN2U4MWUy
YTVlZDkuLjMxNzIwMzZmZTM0MzAzMTE5YjViZjNkMGIwOGRkMTcwNDE3ZjAwMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4LCAyMDA5IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Niw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBdHRyaWJ1dGVSZWdpc3RyeSA9IFNWR0F0dHJpYnV0ZVJlZ2lzdHJ5PFNWR1VSSVJlZmVy
ZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgp
OwogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3Ry
eTxTVkdVUklSZWZlcmVuY2U+OworCiAgICAgY29uc3QgU3RyaW5nJiBocmVmKCkgY29uc3Q7CiAg
ICAgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBocmVmQW5pbWF0ZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmgKaW5kZXggMzFlMGMwOWZiOGM1ZmY0OTlhOThkZTA0M2ViMDlmZWRh
NDc2YTM4OC4uZDZlZGFmZWM3ZGE2NzlmZTUxZWRhMWIxNzFkOTQxNmE5MTgwMTUwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50
LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAj
aW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCkBAIC02NywxMCArNjYsMTcgQEAgcHJpdmF0
ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5SW1wbDxTVkdVc2VFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93
bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMg
Ym9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNv
bnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVXNlRWxlbWVudCwgU1ZH
R3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZl
cmVuY2U+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApA
QCAtMTAxLDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlRGVwZW5kZW50
U2hhZG93VHJlZXMoKTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25l
clByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3Ro
TW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV95IHsgTGVuZ3Ro
TW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBM
ZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCmluZGV4
IDUzYmY0YTM0ZmYxN2UwZDYwODY3MTg1ZWViZTVlOTE4NTE2Y2U1YjcuLjMzOTZjNmU5ODIzNmI2
NGU4Njk1ZmYwNDE5ZTgwMjY5NTc3YjQ3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVt
ZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM0LDkgKzM0LDEzIEBAIGlubGluZSBTVkdWaWV3RWxlbWVudDo6U1ZH
Vmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvCiAg
ICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCh0aGlzKQogICAgICwgU1ZHRml0VG9WaWV3Qm94KHRoaXMpCi0gICAgLCBt
X3ZpZXdUYXJnZXQoU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjp2aWV3VGFnKSk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAg
IFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnZpZXdUYXJnZXRB
dHRyLCAmU1ZHVmlld0VsZW1lbnQ6Om1fdmlld1RhcmdldD4oKTsKKyAgICB9KTsKIH0KIAogUmVm
PFNWR1ZpZXdFbGVtZW50PiBTVkdWaWV3RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ0LDE1ICs0OCwxMiBAQCBSZWY8
U1ZHVmlld0VsZW1lbnQ+IFNWR1ZpZXdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1ZpZXdFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdWaWV3
RWxlbWVudDo6dmlld1RhcmdldCgpCi17Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0
ZSgqdGhpcywgbV92aWV3VGFyZ2V0KTsKLX0KLQogdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCi0gICAg
ICAgIG1fdmlld1RhcmdldC5yZXNldCh2YWx1ZSk7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnZpZXdUYXJnZXRBdHRyKSB7CisgICAgICAgIG1fdmlld1RhcmdldC0+cmVzZXQodmFsdWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0
cmlidXRlKG5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
aWV3RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKaW5kZXgg
YTU3NzMxMDRkY2EzNDU4YjE3ZDBmYTEzNTU5MjE1ODZlZDJhNDY2NS4uZjNmNzk1ZDMxOWU2ZDk4
YWFiZmQ2MDBmYTJjMDBiNTMxMWFhNDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50
LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yNCwxMiArMjQsMTEgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRv
Vmlld0JveC5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJTVkdab29t
QW5kUGFuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHU3RyaW5nTGlzdDsK
LQogY2xhc3MgU1ZHVmlld0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCwgcHVibGlj
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3gsIHB1
YmxpYyBTVkdab29tQW5kUGFuIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR1ZpZXdF
bGVtZW50KTsKIHB1YmxpYzoKQEAgLTM4LDIwICszNywyNSBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
U1ZHRWxlbWVudDo6cmVmOwogICAgIHVzaW5nIFNWR0VsZW1lbnQ6OmRlcmVmOwogCi0gICAgUmVm
PFNWR1N0cmluZ0xpc3Q+IHZpZXdUYXJnZXQoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gdmll
d1RhcmdldCgpIHsgcmV0dXJuIG1fdmlld1RhcmdldC5jb3B5UmVmKCk7IH0KIAogcHJpdmF0ZToK
ICAgICBTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAog
ICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCi0gICAgdXNpbmcgQXR0
cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1ZpZXdFbGVt
ZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1Zp
ZXdCb3gsIFNWR1pvb21BbmRQYW4+OworICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBT
VkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdWaWV3RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKICAgICBjb25zdCBT
VkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJl
Z2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1ZpZXdFbGVtZW50LCBTVkdFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OworICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCiAg
ICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclBy
b3h5IHsgKnRoaXMgfTsKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzIG1fdmlld1RhcmdldDsKKyAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CisgICAgUmVm
PFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZSh0aGlz
KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMu
aAppbmRleCBiNmZkN2JjNDVjNGI5ZjdlY2U0NmIwYWVmNDU4MWM4YTNlNGU2MGJjLi42NmFiMjVh
N2Y3YjdiOGQxNzYyNzQxOTk1OTRlNmQ0ZTAxNGZiZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVmlld1NwZWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1Nw
ZWMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU0LDEyICs1NCwxNCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNWR1ZpZXdTcGVjKFNWR0VsZW1lbnQmKTsK
IAotICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5
SW1wbDxTVkdWaWV3U3BlYywgU1ZHRml0VG9WaWV3Qm94LCBTVkdab29tQW5kUGFuPjsKKyAgICB1
c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZH
Vmlld1NwZWMsIFNWR0ZpdFRvVmlld0JveD47CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRy
aWJ1dGVzKCk7CiAKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVn
aXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogCisgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdWaWV3U3BlYywg
U1ZHRml0VG9WaWV3Qm94PjsKKwogICAgIFdlYWtQdHI8U1ZHRWxlbWVudD4gbV9jb250ZXh0RWxl
bWVudDsKICAgICBTdHJpbmcgbV92aWV3VGFyZ2V0U3RyaW5nOwogICAgIEF0dHJpYnV0ZU93bmVy
UHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1pvb21BbmRQYW4uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4u
Y3BwCmluZGV4IGVmYWRkNGIyMjUxNDExNjA0NjM3MGRkOWY5ZjFiMTNmMDgxOWEzY2QuLjE0ZDhm
Y2I3N2VhNTgwMWQ2NTEwOWY0NTNkYTI1MDM2MjMxMTI3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Wm9vbUFuZFBhbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwzMCArMjQsMTcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1TVkdab29tQW5kUGFuOjpTVkdab29tQW5kUGFuKCkKLXsKLSAgICByZWdp
c3RlckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdab29tQW5kUGFuOjpyZWdpc3RlckF0dHJp
YnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAg
ICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp6b29tQW5kUGFuQXR0ciwgJlNWR1pvb21BbmRQ
YW46Om1fem9vbUFuZFBhbj4oKTsKLX0KLQogYm9vbCBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21B
bmRQYW4oY29uc3QgVUNoYXIqJiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCkKIHsKICAgICBzdGF0
aWMgY29uc3QgVUNoYXIgZGlzYWJsZVtdID0geyAnZCcsICdpJywgJ3MnLCAnYScsICdiJywgJ2wn
LCAnZScgfTsKICAgICBpZiAoc2tpcFN0cmluZyhzdGFydCwgZW5kLCBkaXNhYmxlLCBXVEZfQVJS
QVlfTEVOR1RIKGRpc2FibGUpKSkgewotICAgICAgICBtX3pvb21BbmRQYW4uc2V0VmFsdWUoU1ZH
Wm9vbUFuZFBhbkRpc2FibGUpOworICAgICAgICBtX3pvb21BbmRQYW4gPSBTVkdab29tQW5kUGFu
RGlzYWJsZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIG1hZ25pZnlbXSA9IHsgJ20nLCAnYScsICdnJywgJ24nLCAnaScsICdmJywgJ3knIH07
CiAgICAgaWYgKHNraXBTdHJpbmcoc3RhcnQsIGVuZCwgbWFnbmlmeSwgV1RGX0FSUkFZX0xFTkdU
SChtYWduaWZ5KSkpIHsKLSAgICAgICAgbV96b29tQW5kUGFuLnNldFZhbHVlKFNWR1pvb21BbmRQ
YW5NYWduaWZ5KTsKKyAgICAgICAgbV96b29tQW5kUGFuID0gU1ZHWm9vbUFuZFBhbk1hZ25pZnk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNTgsNyArNDUsNyBAQCB2b2lkIFNW
R1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIGNvbnN0IEF0bwogewogICAgIGlmIChhdHRyaWJ1dGVOYW1lICE9IFNWR05hbWVzOjp6
b29tQW5kUGFuQXR0cikKICAgICAgICAgcmV0dXJuOwotICAgIG1fem9vbUFuZFBhbi5zZXRWYWx1
ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdab29tQW5kUGFuVHlwZT46OmZyb21TdHJpbmcodmFsdWUp
KTsKKyAgICBtX3pvb21BbmRQYW4gPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdab29tQW5kUGFuVHlw
ZT46OmZyb21TdHJpbmcodmFsdWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHWm9vbUFuZFBhbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4u
aAppbmRleCAzNWQ4ODI4ZWM1N2M0ZGNiYzBhNWI3NjgwZTQzZGNiZWEyZDZhODE0Li4zOTJmNDNl
ZmI3YzhhOWEyMTY3MjJmODQxNjQzMjcxNGY3NzcyYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29t
QW5kUGFuLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNywyNiArMzcsMjAgQEAgcHVibGljOgogICAgICAgICBT
VkdfWk9PTUFORFBBTl9NQUdOSUZZID0gU1ZHWm9vbUFuZFBhbk1hZ25pZnkKICAgICB9OwogCi0g
ICAgU1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbigpIGNvbnN0IHsgcmV0dXJuIG1fem9vbUFu
ZFBhbi52YWx1ZSgpOyB9Ci0gICAgdm9pZCBzZXRab29tQW5kUGFuKFNWR1pvb21BbmRQYW5UeXBl
IHpvb21BbmRQYW4pIHsgbV96b29tQW5kUGFuLnNldFZhbHVlKHpvb21BbmRQYW4pOyB9CisgICAg
U1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbigpIGNvbnN0IHsgcmV0dXJuIG1fem9vbUFuZFBh
bjsgfQorICAgIHZvaWQgc2V0Wm9vbUFuZFBhbihTVkdab29tQW5kUGFuVHlwZSB6b29tQW5kUGFu
KSB7IG1fem9vbUFuZFBhbiA9IHpvb21BbmRQYW47IH0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRab29tQW5kUGFuKHVuc2lnbmVkKSB7IHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlv
bkFsbG93ZWRFcnJvciB9OyB9Ci0gICAgdm9pZCByZXNldCgpIHsgbV96b29tQW5kUGFuLnNldFZh
bHVlKFNWR1pvb21BbmRQYW5NYWduaWZ5KTsgfQotCi0gICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1pvb21BbmRQYW4+OwotICAgIHN0
YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVn
aXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgp
OyB9CisgICAgdm9pZCByZXNldCgpIHsgbV96b29tQW5kUGFuID0gU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHWm9vbUFuZFBhblR5cGU+Ojppbml0aWFsVmFsdWUoKTsgfQogCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAKIHBy
b3RlY3RlZDoKLSAgICBTVkdab29tQW5kUGFuKCk7CisgICAgU1ZHWm9vbUFuZFBhbigpID0gZGVm
YXVsdDsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIGJvb2wgcGFyc2Vab29tQW5kUGFuKGNv
bnN0IFVDaGFyKiYsIGNvbnN0IFVDaGFyKik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KLSAgICBTVkdQcm9wZXJ0eUF0dHJpYnV0ZTxTVkdab29t
QW5kUGFuVHlwZT4gbV96b29tQW5kUGFuOworICAgIFNWR1pvb21BbmRQYW5UeXBlIG1fem9vbUFu
ZFBhbiB7IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1pvb21BbmRQYW5UeXBlPjo6aW5pdGlhbFZhbHVl
KCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmLmgKaW5kZXggOTA1MTMwZjlhYjQwMmRiM2QwNTNhYWFjNDU1ZjU4OWI5Y2U2ZDA0Ny4uMDk3
M2QyYmRkYjgyZDM1OWZhN2I3N2RjZGNiMjI0NmNmMzA4Yjk5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmLmgKQEAgLTIyLDcgKzIyLDYgQEAKIAogI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCi0jaW5j
bHVkZSAiU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJpbWl0aXZlUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaAppbmRleCBhMGE0MzEyNDhkNmFkNDI0ZmVlZTE4
ODExM2FmNjU4MTFjYWE4NTJhLi5jNDI1NjE5MjAwZGYwNDg1NjcxYmM3MzE5ZWI1N2Y2ZDNjYThh
ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByaW1pdGl2ZVByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCYXNlVmFsKGNvbnN0IFByb3BlcnR5VHlwZSYgYmFz
ZVZhbCkKICAgICB7CiAgICAgICAgIG1fYmFzZVZhbCA9IGJhc2VWYWw7Ci0gICAgICAgIGNvbW1p
dFByb3BlcnR5Q2hhbmdlKCk7CisgICAgICAgIGNvbW1pdFByb3BlcnR5Q2hhbmdlKG51bGxwdHIp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAppbmRleCA0N2JjNGNiMTQx
OWNiZjFkYTUzZGM4Y2JlMDcyODMwZmMzMDhkOTAyLi5lYzJmM2E0ODdmODMwZjFjNzI2ZDBmNmJl
NGM5NDIyZWM4ZjMwMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcApAQCAtMzUsNyArMzUsNyBAQCBTVkdQcm9wZXJ0
eU93bmVyKiBTVkdBbmltYXRlZFByb3BlcnR5Ojpvd25lcigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y29udGV4dEVsZW1lbnQ7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0UHJv
cGVydHlDaGFuZ2UoKQordm9pZCBTVkdBbmltYXRlZFByb3BlcnR5Ojpjb21taXRQcm9wZXJ0eUNo
YW5nZShTVkdQcm9wZXJ0eSopCiB7CiAgICAgaWYgKCFtX2NvbnRleHRFbGVtZW50KQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5LmgKaW5kZXggMDRjOTM0YjFjMTM1ODQyZjU4YTkzNjJiMjBjZmI4ZWUwMGRk
YzNjZi4uODlhMjI3YTlmMmE2MDE5NWVhYzg2OWM1OWE2MDQwMjRmODYxNzgyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaApA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdQcm9wZXJ0eU93
bmVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02Miw3ICs2Myw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAgICAgCiAgICAgU1ZHUHJv
cGVydHlPd25lciogb3duZXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGNvbW1pdFByb3Bl
cnR5Q2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdQ
cm9wZXJ0eSopIG92ZXJyaWRlOwogICAgIAogICAgIFNWR0VsZW1lbnQqIG1fY29udGV4dEVsZW1l
bnQgeyBudWxscHRyIH07CiAgICAgYm9vbCBtX2lzQW5pbWF0aW5nIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlB
Y2Nlc3NvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlBY2Nlc3NvckltcGwuaAppbmRleCBhODFmZmMzZmE5MjA0MWMxM2VjMTU4YmEyYWQ5
ZDljZDY1ZDY3NTQ2Li5jN2E4MWM4MTdiYTFlNmViMWEyMTZkOGM2MmNiZTQ2NGNlZjRhY2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5QWNjZXNzb3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCkBAIC0zMiw2ICszMiwyOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KK2NsYXNzIFNW
R0FuaW1hdGVkQm9vbGVhbkFjY2Vzc29yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVy
dHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkQm9vbGVhbj4geworICAgIHVzaW5nIEJh
c2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEJv
b2xlYW4+OworICAgIHVzaW5nIEJhc2U6OnByb3BlcnR5OworCitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZHQW5pbWF0ZWRCb29sZWFuPiBPd25lclR5
cGU6Oipwcm9wZXJ0eT4KKyAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vz
c29yPE93bmVyVHlwZT4mIHNpbmdsZXRvbigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmds
ZXRvbjxTVkdBbmltYXRlZEJvb2xlYW5BY2Nlc3NvciwgcHJvcGVydHk+KCk7IH0KKworcHJpdmF0
ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1h
dG9yKE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUs
IEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNB
Y2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBjb25zdCBmaW5hbAorICAgIHsKKyAgICAgICAg
cmV0dXJuIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwg
cHJvcGVydHkob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93
bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJiBhbmltYXRvcikgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9y
Jj4oYW5pbWF0b3IpLmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UocHJvcGVydHkob3duZXIpKTsKKyAg
ICB9Cit9OworICAgIAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogY2xhc3MgU1ZHQW5p
bWF0ZWRJbnRlZ2VyQWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFj
Y2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRJbnRlZ2VyPiB7CiAgICAgdXNpbmcgQmFzZSA9
IFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkSW50ZWdl
cj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKaW5kZXggNWJiMTU3ODk4YTQxMTlmYjIz
NGJmMjJkNGQ5ZDI4NzVjOTkyYjEwYS4uYWYzMzQ1NmZiYmU0YjlkOGQyNjMxYmZiOTRjOWFlMjEz
Y2QxMmQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUHJvcGVydHlJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0aW9uQWRkaXRpdmVW
YWx1ZUZ1bmN0aW9uSW1wbC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rp
b25JbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsNiArMzcsMjQgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yOwogdGVtcGxhdGU8dHlwZW5hbWUgQW5p
bWF0ZWRQcm9wZXJ0eUFuaW1hdG9yMSwgdHlwZW5hbWUgQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
Mj4KIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3I7CiAKK2NsYXNzIFNWR0Fu
aW1hdGVkQm9vbGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlB
bmltYXRvcjxTVkdBbmltYXRlZEJvb2xlYW4sIFNWR0FuaW1hdGlvbkJvb2xlYW5GdW5jdGlvbj4g
IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1h
dGVkQm9vbGVhbiwgU1ZHQW5pbWF0aW9uQm9vbGVhbkZ1bmN0aW9uPjsKKyAgICB1c2luZyBCYXNl
OjpCYXNlOworCitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+JiBhbmltYXRlZCwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yPihuZXcgU1ZHQW5pbWF0ZWRCb29s
ZWFuQW5pbWF0b3IoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNN
b2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQpIGZpbmFsCisgICAgeworICAgICAgICBib29sJiBhbmlt
YXRlZCA9IG1fYW5pbWF0ZWQtPmFuaW1WYWwoKTsKKyAgICAgICAgbV9mdW5jdGlvbi5wcm9ncmVz
cyh0YXJnZXRFbGVtZW50LCBwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgYW5pbWF0ZWQpOworICAg
IH0KK307CisKIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yIGZpbmFsIDogcHVibGlj
IFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcjxTVkdBbmltYXRlZEludGVnZXIsIFNWR0FuaW1h
dGlvbkludGVnZXJGdW5jdGlvbj4gewogICAgIGZyaWVuZCBjbGFzcyBTVkdBbmltYXRlZFByb3Bl
cnR5UGFpckFuaW1hdG9yPFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yLCBTVkdBbmltYXRlZElu
dGVnZXJBbmltYXRvcj47CiAgICAgZnJpZW5kIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJB
bmltYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5SW1wbC5oCmluZGV4IDAxMjkxNTQ2YjQ0MzNlMGQ4ODk3M2VlZDNhZTVi
MzA3YmQ0MzI2ODQuLjhlZjc3MjZiYWIzYzkzMWQ1MzZmYmIzY2Y2Nzk3NTQ4YjE3OGRmZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUltcGwuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJTVkdBbmltYXRlZEFuZ2xlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
TGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgiCkBAIC00MSw2ICs0
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgU1ZHQW5pbWF0ZWRCb29sZWFu
ID0gU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eTxib29sPjsKIHVzaW5nIFNWR0FuaW1hdGVk
SW50ZWdlciA9IFNWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHk8aW50PjsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVG
dW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlz
Y3JldGVGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NzA3YmQ3N2ZmZjFlMDU1ZTg5ZTBiYWZhOGZl
NTE4MWUwZDRhMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmgKQEAgLTAsMCArMSw2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlw
ZT4KK2NsYXNzIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5pbWF0
aW9uRnVuY3Rpb24geworcHVibGljOgorICAgIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24o
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSwgYm9vbCwgYm9vbCkKKyAgICAg
ICAgOiBTVkdBbmltYXRpb25GdW5jdGlvbihhbmltYXRpb25Nb2RlKQorICAgIHsKKyAgICB9CisK
KyAgICBib29sIGlzRGlzY3JldGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisK
KyAgICB2b2lkIHNldFRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHZv
aWQgc2V0RnJvbUFuZEJ5VmFsdWVzKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorCisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQsIFZhbHVlVHlwZSYgYW5pbWF0ZWQpCisgICAgeworICAgICAgICBpZiAoKG1fYW5p
bWF0aW9uTW9kZSA9PSBBbmltYXRpb25Nb2RlOjpGcm9tVG8gJiYgcGVyY2VudGFnZSA+IDAuNSkg
fHwgbV9hbmltYXRpb25Nb2RlID09IEFuaW1hdGlvbk1vZGU6OlRvIHx8IHBlcmNlbnRhZ2UgPT0g
MSkKKyAgICAgICAgICAgIGFuaW1hdGVkID0gbV90bzsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYW5pbWF0ZWQgPSBtX2Zyb207CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgVmFsdWVUeXBl
IG1fZnJvbTsKKyAgICBWYWx1ZVR5cGUgbV90bzsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25EaXNjcmV0ZUZ1
bmN0aW9uSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNjA5ZDdjYTI1ZDY0OTU1YjE2YzRmZGQyN2YyMDc4
Y2RjNmM0OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNWR0FuaW1hdGlvbkJvb2xlYW5GdW5jdGlvbiA6IHB1YmxpYyBTVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uPGJvb2w+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0aW9u
RGlzY3JldGVGdW5jdGlvbjxib29sPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCisgICAgdm9p
ZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29u
c3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fZnJvbSA9IFNWR1Byb3Bl
cnR5VHJhaXRzPGJvb2w+Ojpmcm9tU3RyaW5nKGZyb20pOworICAgICAgICBtX3RvID0gU1ZHUHJv
cGVydHlUcmFpdHM8Ym9vbD46OmZyb21TdHJpbmcodG8pOworICAgIH0KK307CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5o
CmluZGV4IGIwYjMzMDIwOWNlNjVlODEyNzY4NWUzMmFkZmEwNjhkMDY2YzkwYTIuLjNiNDY5Mzgw
MmEwM2FmZGJmMGU1YWU0ZmEzOWQ3YzExNmU3NDkxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaApAQCAtMjUsNyArMjUs
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIgpAQCAtMzgsNyAr
MzcsNiBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUg
IlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCiAjaW5jbHVkZSAiU1ZHTGVnYWN5QW5pbWF0ZWRQcm9w
ZXJ0eS5oIgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkda
b29tQW5kUGFuVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTUzLDEzICs1
MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9CiAKLSAgICAvLyBOb24g
YW5pbWF0YWJsZSBhdHRyaWJ1dGVzCi0gICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJv
eWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdTdHJpbmdMaXN0VmFs
dWVzQXR0cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KLSAgICB2b2lkIHJlZ2lzdGVyQXR0
cmlidXRlKCkKLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyQXR0cmlidXRlKFNWR1N0cmluZ0xpc3RW
YWx1ZXNBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0
cmlidXRlTmFtZSwgYXR0cmlidXRlPigpKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTxjb25zdCBM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNW
R1pvb21BbmRQYW5UeXBlQXR0cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KICAgICB2b2lk
IHJlZ2lzdGVyQXR0cmlidXRlKCkKICAgICB7CkBAIC02NywxMiArNTgsNiBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgLy8gQW5pbWF0YWJsZSBhdHRyaWJ1dGVzCi0gICAgdGVtcGxhdGU8Y29uc3Qg
TGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBT
VkdBbmltYXRlZEJvb2xlYW5BdHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0cmlidXRlPgotICAgIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGUoKQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUo
U1ZHQW5pbWF0ZWRCb29sZWFuQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUg
c2luZ2xldG9uPGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgdGVt
cGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRy
aWJ1dGVOYW1lLCB0eXBlbmFtZSBFbnVtVHlwZSwgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJp
YnV0ZTxFbnVtVHlwZT4gT3duZXJUeXBlOjoqYXR0cmlidXRlPgogICAgIHZvaWQgcmVnaXN0ZXJB
dHRyaWJ1dGUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yOTNhNTRmNWQ0ODU0Y2EzZDVlY2M0NjI4MjMzZWI0NGY5NmRmMzQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdC5oCkBA
IC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2lu
Y2x1ZGUgIlNWR1Byb3BlcnR5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgSXRlbVR5cGU+CitjbGFzcyBTVkdMaXN0IDogcHVibGljIFNWR1Byb3BlcnR5IHsK
K3B1YmxpYzoKKyAgICB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2l0ZW1zLnNpemUoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBjbGVhcigpCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOwor
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCkpOworCisgICAgICAgIGNsZWFySXRlbXMoKTsKKyAgICAgICAgY29tbWl0Q2hh
bmdlKCk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRl
bVR5cGU+IGdldEl0ZW0odW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGNhbkdldEl0ZW0oaW5kZXgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAg
IEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIHJldHVybiBh
dChpbmRleCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRlbVR5cGU+IGluaXRpYWxpemUo
SXRlbVR5cGUmJiBuZXdJdGVtKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRl
ckxpc3QoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgICAgIC8vIFNwZWM6IENs
ZWFycyBhbGwgZXhpc3RpbmcgY3VycmVudCBpdGVtcyBmcm9tIHRoZSBsaXN0LgorICAgICAgICBj
bGVhckl0ZW1zKCk7CisKKyAgICAgICAgYXV0byBpdGVtID0gYXBwZW5kKFdURk1vdmUobmV3SXRl
bSkpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaXRl
bSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRlbVR5cGU+IGluc2VydEl0ZW1CZWZvcmUo
SXRlbVR5cGUmJiBuZXdJdGVtLCB1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGF1dG8g
cmVzdWx0ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgLy8gU3Bl
YzogSWYgdGhlIGluZGV4IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBudW1iZXJPZkl0ZW1z
LAorICAgICAgICAvLyB0aGVuIHRoZSBuZXcgaXRlbSBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9m
IHRoZSBsaXN0LgorICAgICAgICBpZiAoaW5kZXggPiBudW1iZXJPZkl0ZW1zKCkpCisgICAgICAg
ICAgICBpbmRleCA9IG51bWJlck9mSXRlbXMoKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSBpbnNl
cnQoaW5kZXgsIFdURk1vdmUobmV3SXRlbSkpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAg
ICAgICAgcmV0dXJuIFdURk1vdmUoaXRlbSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRl
bVR5cGU+IHJlcGxhY2VJdGVtKEl0ZW1UeXBlJiYgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhblJlcGxhY2VJdGVtKGluZGV4KTsKKyAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VSZXR1cm5W
YWx1ZSgpKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSByZXBsYWNlKGluZGV4LCBXVEZNb3ZlKG5l
d0l0ZW0pKTsKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3Zl
KGl0ZW0pOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBlPiByZW1vdmVJdGVtKHVu
c2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5SZW1vdmVJdGVt
KGluZGV4KTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSByZW1vdmUoaW5k
ZXgpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaXRl
bSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRlbVR5cGU+IGFwcGVuZEl0ZW0oSXRlbVR5
cGUmJiBuZXdJdGVtKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRlckxpc3Qo
KTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSBhcHBlbmQoV1RGTW92ZShu
ZXdJdGVtKSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gV1RGTW92
ZShpdGVtKTsKKyAgICB9CisKKyAgICAvLyBQYXJzZXJzIGFuZCBhbmltYXRvcnMgbmVlZCB0byBo
YXZlIGEgZGlyZWN0IGFjY2VzcyB0byB0aGUgaXRlbXMuCisgICAgVmVjdG9yPEl0ZW1UeXBlPiYg
aXRlbXMoKSB7IHJldHVybiBtX2l0ZW1zOyB9CisgICAgY29uc3QgVmVjdG9yPEl0ZW1UeXBlPiYg
aXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1zOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2l0ZW1zLnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1faXRlbXMuaXNFbXB0eSgpOyB9CisKKyAgICB2b2lkIGNsZWFySXRlbXMoKQorICAg
IHsKKyAgICAgICAgZGV0YWNoSXRlbXMoKTsKKyAgICAgICAgbV9pdGVtcy5jbGVhcigpOworICAg
IH0KKworcHJvdGVjdGVkOgorICAgIHVzaW5nIFNWR1Byb3BlcnR5OjpTVkdQcm9wZXJ0eTsKKwor
ICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNhbkFsdGVyTGlzdCgpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoaXNSZWFkT25seSgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9k
aWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNhbkdldEl0ZW0odW5zaWduZWQgaW5kZXgpCisgICAgewor
ICAgICAgICBpZiAoaW5kZXggPj0gbV9pdGVtcy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2FuUmVwbGFjZUl0ZW0odW5zaWduZWQgaW5kZXgp
CisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOworICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCkpOworCisgICAgICAgIGlmIChpbmRleCA+PSBtX2l0ZW1zLnNpemUoKSkKKyAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjxib29sPiBjYW5SZW1vdmVJdGVtKHVuc2lnbmVk
IGluZGV4KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRlckxpc3QoKTsKKyAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKKworICAgICAgICBpZiAoaW5kZXggPj0gbV9pdGVtcy5zaXplKCkpCisgICAg
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRldGFjaEl0ZW1zKCkgeyB9Cisg
ICAgdmlydHVhbCBJdGVtVHlwZSBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgSXRlbVR5cGUgaW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBJdGVtVHlwZSYmKSA9IDA7Cisg
ICAgdmlydHVhbCBJdGVtVHlwZSByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCBJdGVtVHlwZSYmKSA9
IDA7CisgICAgdmlydHVhbCBJdGVtVHlwZSByZW1vdmUodW5zaWduZWQgaW5kZXgpID0gMDsKKyAg
ICB2aXJ0dWFsIEl0ZW1UeXBlIGFwcGVuZChJdGVtVHlwZSYmKSA9IDA7CisKKyAgICBWZWN0b3I8
SXRlbVR5cGU+IG1faXRlbXM7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaAppbmRleCBkYjIxMzRkMzY3M2Y5ZjNhMDQ3ZGNm
MjhkNDdkNDJhOGYxNzU2MDM4Li43ZGM0Y2FhOGJjNmNlMGZmYjczZThmZDVmNTEwNTcxZDE1M2My
NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1iZXJB
Y2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFj
Y2Vzc29yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eTsKK2NsYXNzIFNWR1Byb3BlcnR5OwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGU+CiBjbGFzcyBTVkdNZW1iZXJBY2Nlc3NvciB7CkBAIC00Miw2ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZFByb3BlcnR5KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBbmltYXRlZExlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlcyhjb25zdCBP
d25lclR5cGUmLCBjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBPcHRpb25h
bDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYpIGNvbnN0IHsgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcmltaXRpdmVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cmltaXRpdmVMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ2YmZiNjdhZDgwYjBhOTk5MmM4NjYyNzdiMjIx
ZmNmYWYzZmM3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1ByaW1pdGl2ZUxpc3QuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJTVkdMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgUHJvcGVydHlUeXBlPgorY2xhc3MgU1ZHUHJpbWl0aXZlTGlzdCA6IHB1YmxpYyBTVkdMaXN0
PFByb3BlcnR5VHlwZT4geworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2UgPSBTVkdMaXN0PFBy
b3BlcnR5VHlwZT47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB1c2luZyBCYXNlOjpzaXpl
OworICAgIHVzaW5nIEJhc2U6Om1faXRlbXM7CisKKyAgICBQcm9wZXJ0eVR5cGUgYXQodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBz
aXplKCkpOworICAgICAgICByZXR1cm4gbV9pdGVtcy5hdChpbmRleCk7CisgICAgfQorCisgICAg
UHJvcGVydHlUeXBlIGluc2VydCh1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlUeXBlJiYgbmV3SXRl
bSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8PSBzaXplKCkpOworICAg
ICAgICBtX2l0ZW1zLmluc2VydChpbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CisgICAgICAgIHJl
dHVybiBhdChpbmRleCk7CisgICAgfQorCisgICAgUHJvcGVydHlUeXBlIHJlcGxhY2UodW5zaWdu
ZWQgaW5kZXgsIFByb3BlcnR5VHlwZSYmIG5ld0l0ZW0pIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBBU1NFUlQoaW5kZXggPCBzaXplKCkpOworICAgICAgICBtX2l0ZW1zLmF0KGluZGV4KSA9IFdU
Rk1vdmUobmV3SXRlbSk7CisgICAgICAgIHJldHVybiBhdChpbmRleCk7CisgICAgfQorCisgICAg
UHJvcGVydHlUeXBlIHJlbW92ZSh1bnNpZ25lZCBpbmRleCkgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpbmRleCA8IHNpemUoKSk7CisgICAgICAgIFByb3BlcnR5VHlwZSBpdGVtID0g
YXQoaW5kZXgpOworICAgICAgICBtX2l0ZW1zLnJlbW92ZShpbmRleCk7CisgICAgICAgIHJldHVy
biBXVEZNb3ZlKGl0ZW0pOworICAgIH0KKworICAgIFByb3BlcnR5VHlwZSBhcHBlbmQoUHJvcGVy
dHlUeXBlJiYgbmV3SXRlbSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1faXRlbXMuYXBwZW5k
KFdURk1vdmUobmV3SXRlbSkpOworICAgICAgICByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7CisgICAg
fQorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgK
aW5kZXggZmRhMjgwYTdhZGZjMThhMjI5Mjg5YWRmNzQ3ZGJhZDRlNmM4ZDc0YS4uY2NmMTI2MWUx
YTlmMDM1ODRlMzc1MzMwN2QxMDA3NGU4MGE0ZGRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCkBAIC0yMCwxMCArMjAsNzggQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eU93bmVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIFNWR1Byb3BlcnR5
QWNjZXNzIDogdWludDhfdCB7IFJlYWRXcml0ZSwgUmVhZE9ubHkgfTsKIGVudW0gY2xhc3MgU1ZH
UHJvcGVydHlTdGF0ZSA6IHVpbnQ4X3QgeyBDbGVhbiwgRGlydHkgfTsKIAorY2xhc3MgU1ZHUHJv
cGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQcm9wZXJ0eT4geworcHVibGljOgorICAgIHZp
cnR1YWwgflNWR1Byb3BlcnR5KCkgPSBkZWZhdWx0OworCisgICAgLy8gTWFuYWdpbmcgdGhlIHJl
bGF0aW9uc2hpcCB3aXRoIHRoZSBvd25lci4KKyAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7
IHJldHVybiBtX293bmVyOyB9CisgICAgdm9pZCBhdHRhY2goU1ZHUHJvcGVydHlPd25lciogb3du
ZXIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcykKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9v
d25lcik7CisgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFu
KTsKKyAgICAgICAgbV9vd25lciA9IG93bmVyOworICAgICAgICBtX2FjY2VzcyA9IGFjY2VzczsK
KyAgICB9CisKKyAgICB2b2lkIGRldGFjaCgpCisgICAgeworICAgICAgICBtX293bmVyID0gbnVs
bHB0cjsKKyAgICAgICAgbV9hY2Nlc3MgPSBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlOwor
ICAgICAgICBtX3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CisgICAgfQorCisgICAg
Y29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKCFtX293bmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBtX293bmVyLT5hdHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpOworICAgIH0KKworICAgIHZvaWQg
Y29tbWl0Q2hhbmdlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9vd25lcikKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbV9vd25lci0+Y29tbWl0UHJvcGVydHlDaGFuZ2UodGhpcyk7Cisg
ICAgfQorCisgICAgLy8gRE9NIGFjY2Vzcy4KKyAgICBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2FjY2VzczsgfQorICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWNjZXNzID09IFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFkT25seTsgfQorCisg
ICAgLy8gU3luY2hyb25pemluZyB0aGUgU1ZHIGF0dHJpYnV0ZSBhbmQgaXRzIHJlZmxlY3Rpb24g
aGVyZS4KKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNWR1By
b3BlcnR5U3RhdGU6OkRpcnR5OyB9CisgICAgdm9pZCBzZXREaXJ0eSgpIHsgbV9zdGF0ZSA9IFNW
R1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6
ZSgpCisgICAgeworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVh
bikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fc3RhdGUgPSBT
VkdQcm9wZXJ0eVN0YXRlOjpDbGVhbjsKKyAgICAgICAgcmV0dXJuIHZhbHVlQXNTdHJpbmcoKTsK
KyAgICB9CisKKyAgICAvLyBUaGlzIGlzIHVzZWQgd2hlbiBjYWxsaW5nIHNldEF0dHJpYnV0ZSgp
LgorICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBlbXB0
eVN0cmluZygpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTVkdQcm9wZXJ0eShTVkdQcm9wZXJ0eU93
bmVyKiBvd25lciA9IG51bGxwdHIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcyA9IFNWR1Byb3Bl
cnR5QWNjZXNzOjpSZWFkV3JpdGUpCisgICAgICAgIDogbV9vd25lcihvd25lcikKKyAgICAgICAg
LCBtX2FjY2VzcyhhY2Nlc3MpCisgICAgeworICAgIH0KKworICAgIFNWR1Byb3BlcnR5T3duZXIq
IG1fb3duZXIgeyBudWxscHRyIH07CisgICAgU1ZHUHJvcGVydHlBY2Nlc3MgbV9hY2Nlc3MgeyBT
VkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlIH07CisgICAgU1ZHUHJvcGVydHlTdGF0ZSBtX3N0
YXRlIHsgU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW4gfTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlBY2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlBY2Nlc3Nvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmOGM0Y2RlNmRkMGYzY2FmYmM4ZjI3YjI3MDI5NzBl
MzVmNDg3NjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eUFjY2Vzc29yLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiU1ZHUG9pbnRlck1lbWJlckFjY2Vzc29yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Citj
bGFzcyBTVkdQcm9wZXJ0eUFjY2Vzc29yIDogcHVibGljIFNWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nv
cjxPd25lclR5cGUsIFByb3BlcnR5VHlwZT4geworICAgIHVzaW5nIEJhc2UgPSBTVkdQb2ludGVy
TWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlLCBQcm9wZXJ0eVR5cGU+OworCitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZTo6QmFzZTsKKworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2U6OnByb3BlcnR5
OworICAgIHVzaW5nIEJhc2U6OnNpbmdsZXRvbjsKKworICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBP
d25lclR5cGUmIG93bmVyLCBjb25zdCBTVkdQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IG92ZXJy
aWRlCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy0+cHJvcGVydHkob3duZXIpLnB0cigpID09
ICZwcm9wZXJ0eTsKKyAgICB9Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2Q2
MzE4NDM3NWIyOGJhM2NhOTU5MzVlYmEwNmM2MTE4YzliNWFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaApA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eUFjY2Vzc29y
LmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KK2NsYXNzIFNWR1N0cmluZ0xpc3RBY2Nlc3Nv
ciBmaW5hbCA6IHB1YmxpYyBTVkdQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHU3RyaW5n
TGlzdD4geworICAgIHVzaW5nIEJhc2UgPSBTVkdQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwg
U1ZHU3RyaW5nTGlzdD47CisKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHRl
bXBsYXRlPFJlZjxTVkdTdHJpbmdMaXN0PiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAgICBjb25z
dGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRv
bigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdTdHJpbmdMaXN0QWNjZXNz
b3IsIHByb3BlcnR5PigpOyB9Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eU93bmVyLmgKaW5kZXggYjQyYTU3OGExNTFhZjI5OWNlNzg1NDdm
NWY1YTBkZTliNDQ5ZTgyNC4uYzk4MThiZTlmODQwYzc2NDUzOThlNjFiNDg5MzgxODYyYTM0Njhm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlP
d25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3du
ZXIuaApAQCAtMjYsNiArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKK2NsYXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBTVkdQcm9wZXJ0eTsKIAogY2xhc3Mg
U1ZHUHJvcGVydHlPd25lciB7CiBwdWJsaWM6CkBAIC00MCwxMSArNDMsMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gb3duZXIoKS0+YXR0cmlidXRlQ29udGV4dEVsZW1lbnQoKTsKICAgICB9
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdlKCkKKyAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3BlcnR5KQogICAg
IHsKICAgICAgICAgaWYgKCFvd25lcigpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBv
d25lcigpLT5jb21taXRQcm9wZXJ0eUNoYW5nZSgpOworICAgICAgICBvd25lcigpLT5jb21taXRQ
cm9wZXJ0eUNoYW5nZShwcm9wZXJ0eSk7CiAgICAgfQogICAgIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnkuaAppbmRleCBlZjU0NmZmZmM1MjBkMzA0Y2JlMjVhNTllOTFlNDgwNGExMjE0MmZkLi41
OTM1NzAzYzIwNzY0YTQ1NzUwY2ZiNzg1NGYxYmQ1MmJhNjA0M2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnku
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vz
c29ySW1wbC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBs
LmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaCIKICNpbmNsdWRlICJTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtNDIsNiAr
NDMsMTggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdTdHJpbmdMaXN0PiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAgICBzdGF0aWMgdm9pZCByZWdp
c3RlclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRl
TmFtZSwgU1ZHU3RyaW5nTGlzdEFjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRv
bjxwcm9wZXJ0eT4oKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVz
dHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0
ZWRCb29sZWFuPiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
clByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFt
ZSwgU1ZHQW5pbWF0ZWRCb29sZWFuQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xl
dG9uPHByb3BlcnR5PigpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmlt
YXRlZEludGVnZXI+IE93bmVyVHlwZTo6KnByb3BlcnR5PgogICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyUHJvcGVydHkoKQogICAgIHsKQEAgLTcxLDYgKzg0LDE4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGZpbmRBY2Nlc3NvcihhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAKKyAgICBRdWFsaWZp
ZWROYW1lIHByb3BlcnR5QXR0cmlidXRlTmFtZShjb25zdCBTVkdQcm9wZXJ0eSYgcHJvcGVydHkp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5h
bWUgPSBudWxsUU5hbWUoKTsKKyAgICAgICAgZW51bWVyYXRlUmVjdXJzaXZlbHkoWyZdKGNvbnN0
IGF1dG8mIGVudHJ5KSAtPiBib29sIHsKKyAgICAgICAgICAgIGlmICghZW50cnkudmFsdWUtPm1h
dGNoZXMobV9vd25lciwgcHJvcGVydHkpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgYXR0cmlidXRlTmFtZSA9IGVudHJ5LmtleTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lOworICAg
IH0KKwogICAgIFF1YWxpZmllZE5hbWUgYW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29u
c3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9IG51bGxRTmFtZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlS
ZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdp
c3RyeS5oCmluZGV4IDdjMjhmZDdiZDgxZTRhMTBiYjU3NDNkMTkzNjU0Nzc4ODExZTFhNjIuLjUz
YTAzNDU1ZmFkZTUyYWM2Y2VmOWY0MjVhM2Q5ZTEwOGJhN2NkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5LmgKQEAgLTM3LDYg
KzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNWR1Byb3BlcnR5UmVnaXN0cnkoKSA9IGRl
ZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoQWxsUHJvcGVydGllcygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFF1YWxpZmllZE5hbWUgcHJvcGVydHlBdHRyaWJ1dGVOYW1lKGNvbnN0
IFNWR1Byb3BlcnR5JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUXVhbGlmaWVkTmFtZSBhbmlt
YXRlZFByb3BlcnR5QXR0cmlidXRlTmFtZShjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5JikgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSGFzaE1hcDxRdWFsaWZpZWRO
YW1lLCBTdHJpbmc+IHN5bmNocm9uaXplQWxsQXR0cmlidXRlcygpIGNvbnN0ID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg2ODc0ZGNh
MDExNjhjMmVjNGM0NzBhMmQ3MzcwYTI2ZmIyMmNjNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdT
dGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdMaXN0UHJv
cGVydHkuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBQcm9w
ZXJ0eVR5cGU+IAotY2xhc3MgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZiA6IHB1YmxpYyBT
VkdMaXN0UHJvcGVydHk8UHJvcGVydHlUeXBlPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgU2VsZiA9
IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPjsKLSAgICB1c2luZyBC
YXNlID0gU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT47Ci0KLSAgICB1c2luZyBMaXN0SXRl
bVR5cGUgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRl
bVR5cGU7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gdHlwZW5hbWUgU1ZHUHJvcGVydHlU
cmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1UZWFyT2ZmOwotCi0gICAgdXNpbmcgQmFzZTo6
bV9yb2xlOwotICAgIHVzaW5nIEJhc2U6Om1fdmFsdWVzOwotCi0gICAgc3RhdGljIFJlZjxTZWxm
PiBjcmVhdGUoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQsIFByb3BlcnR5VHlwZSYgdmFsdWVz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VsZihjb250ZXh0RWxlbWVu
dCwgdmFsdWVzKSk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xlYXIoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmNsZWFyVmFsdWVzKCk7Ci0gICAgfQotCi0gICAgRXhj
ZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiBpbml0aWFsaXplKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3
SXRlbSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjppbml0aWFsaXplVmFsdWVzKG5ld0l0
ZW0pOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPExpc3RJdGVtVHlwZT4gZ2V0SXRlbSh1bnNp
Z25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpnZXRJdGVtVmFsdWVzKGlu
ZGV4KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxMaXN0SXRlbVR5cGU+IGluc2VydEl0ZW1C
ZWZvcmUoY29uc3QgTGlzdEl0ZW1UeXBlJiBuZXdJdGVtLCB1bnNpZ25lZCBpbmRleCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBCYXNlOjppbnNlcnRJdGVtQmVmb3JlVmFsdWVzKG5ld0l0ZW0sIGlu
ZGV4KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxMaXN0SXRlbVR5cGU+IHJlcGxhY2VJdGVt
KGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCi0gICAgewotICAg
ICAgICByZXR1cm4gQmFzZTo6cmVwbGFjZUl0ZW1WYWx1ZXMobmV3SXRlbSwgaW5kZXgpOwotICAg
IH0KLQotICAgIEV4Y2VwdGlvbk9yPExpc3RJdGVtVHlwZT4gcmVtb3ZlSXRlbSh1bnNpZ25lZCBp
bmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpyZW1vdmVJdGVtVmFsdWVzKGluZGV4
KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxMaXN0SXRlbVR5cGU+IGFwcGVuZEl0ZW0oY29u
c3QgTGlzdEl0ZW1UeXBlJiBuZXdJdGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmFw
cGVuZEl0ZW1WYWx1ZXMobmV3SXRlbSk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgU1ZHU3Rh
dGljTGlzdFByb3BlcnR5VGVhck9mZihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgUHJvcGVy
dHlUeXBlJiB2YWx1ZXMpCi0gICAgICAgIDogQmFzZShVbmRlZmluZWRSb2xlLCB2YWx1ZXMsIG51
bGxwdHIpCi0gICAgICAgICwgbV9jb250ZXh0RWxlbWVudCgqY29udGV4dEVsZW1lbnQpCi0gICAg
ewotICAgIH0KLQotICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlCi0gICAgewot
ICAgICAgICByZXR1cm4gbV9yb2xlID09IEFuaW1WYWxSb2xlOwotICAgIH0KLQotICAgIHZvaWQg
Y29tbWl0Q2hhbmdlKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7
Ci0gICAgICAgIG1fdmFsdWVzLT5jb21taXRDaGFuZ2UobV9jb250ZXh0RWxlbWVudCk7Ci0gICAg
fQotCi0gICAgYm9vbCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVZhbHVlKGNvbnN0IExpc3RJdGVt
VHlwZSYsIHVuc2lnbmVkKikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIC8vIG5vLW9wIGZvciBz
dGF0aWMgbGlzdHMKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBwcm9j
ZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBwZXIoUmVmPExpc3RJdGVtVGVhck9mZj4mLCB1bnNpZ25l
ZCopIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgUmVmPFNWR0VsZW1lbnQ+IG1fY29udGV4dEVs
ZW1lbnQ7Ci19OwotCi19Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364989</attachid>
            <date>2019-03-17 17:48:38 -0700</date>
            <delta_ts>2019-03-18 18:31:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195863-20190317174837.patch</filename>
            <type>text/plain</type>
            <size>224273</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3OTdlODJkZjg2MzIz
ZGJiYjQwZjVlN2ViYjFjMmY1YTVjNzcyMy4uYWFkZDVjMmJjMmEwMWU4NDNhMzg4OWNmNWU2YjFj
ZDI0N2ZhYTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4MSBAQAorMjAxOS0wMy0xNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB0aGUgU1ZHIHByb3BlcnR5IHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1N0cmluZ0xpc3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg2MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNWR1N0cmluZ0xp
c3QgaXMgbm90IGFuaW1hdGVkIGxpc3QuIFNvIHdlIG5lZWQgdG8gaW50cm9kdWNlIHR3byBuZXcg
Y2xhc3NlczoKKworICAgICAgICAtLSBTVkdQcm9wZXJ0eTogVGhpcyB3aWxsIGJlIHRoZSBiYXNl
IG9mIGFsbCB0aGUgbm9uLWFuaW1hdGVkIHByb3BlcnRpZXMuCisgICAgICAgICAgIExpa2UgdGhl
IFNWR0FuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5IHdpbGwgYmUgcmVnaXN0ZXJlZCB3aXRo
IHRoZQorICAgICAgICAgICBhdHRyaWJ1dGUgbmFtZSBpbiBTVkdQcm9wZXJ0eVJlZ2lzdGVyeS4g
SXQgd2lsbCBhbHNvIGNvbW1pdHMgY2hhbmdlcworICAgICAgICAgICB0byB0aGUgcmVmbGVjdGlu
ZyBhdHRyaWJ1dGUuIEFuZCBpdCB3aWxsIHByb3ZpZGUgYSBzeW5jaHJvbml6ZSBzdHJpbmcKKyAg
ICAgICAgICAgZm9yIGxhenkgYXR0cmlidXRlIHVwZGF0ZS4KKworICAgICAgICAtLSBTVkdMaXN0
OiBJdCB3aWxsIGJlIHRoZSBiYXNlIG9mIGFsbCB0aGUgbGlzdCBwcm9wZXJ0aWVzLiBJdCBjYW4g
aG9sZAorICAgICAgICAgICBwcmltaXRpdmUgdHlwZXMgb3IgU1ZHIHR5cGVzLiBJbiB0aGlzIHBh
dGNoIHByaW1pdGl2ZSB0eXBlcyB3aWxsIGJlIAorICAgICAgICAgICBzdXBwb3J0ZWQgb25seS4g
VG8gZG8gdGhhdCwgYSBzdXBlcmNsYXNzIGNhbGxlZCBTVkdQcmltaXRpdmVMaXN0IGlzCisgICAg
ICAgICAgIGFkZGVkLiBJdHMgaXRlbXMgYXJlIG9mIHByaW1pdGl2ZSB0eXBlIG9ubHkuCisKKyAg
ICAgICAgTm90ZSB0aGF0IFNWR0xpc3QgaW1wbGVtZW50cyB0aGUgU1ZHMiBzcGVjcyByZWdhcmRp
bmcgYWRkaW5nIGEgbmV3IGl0ZW0KKyAgICAgICAgdG8gdGhlIGxpc3Qgd2hpY2ggc3RhdGUgdGhh
dCBhIGNvcHkgb2YgdGhlIGl0ZW0gaXMgYWRkZWQgdG8gdGhlIGxpc3QgaWYKKyAgICAgICAgdGhl
IGl0ZW0gaXMgYXR0YWNoZWQgdG8gYW5vdGhlciBsaXN0LgorCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5
bmNocm9uaXplQW5pbWF0ZWRTVkdBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9TVkdFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZH
U3RyaW5nTGlzdFZhbHVlcy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xp
c3RWYWx1ZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGVzdHM6OlNWR1Rlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjppc1Zh
bGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3Rz
OjpyZXF1aXJlZEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpyZXF1aXJl
ZEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnN5c3RlbUxhbmd1YWdl
KToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmlkbDoKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6U1ZH
Vmlld0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdFbGVtZW50Ojp2aWV3VGFyZ2V0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5OjpzZXRCYXNlVmFsKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHk6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5Lmg6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdMaXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6bnVtYmVy
T2ZJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpjbGVhcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMaXN0OjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
c3Q6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aW5zZXJ0SXRlbUJl
Zm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpyZXBsYWNlSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
c3Q6OmFwcGVuZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aXRlbXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aXRlbXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGlzdDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0Ojppc0VtcHR5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmNsZWFySXRlbXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2FuQWx0ZXJMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3Q6OmNhbkdldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2Fu
UmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2FuUmVtb3ZlSXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpkZXRhY2hJdGVtcyk6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01l
bWJlckFjY2Vzc29yOjptYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcmltaXRpdmVMaXN0Lmg6IEFkZGVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNBdHRhY2hlZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6YXR0YWNoKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHk6OmNvbnRleHRFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
Ojpjb21taXRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OmFjY2VzcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNSZWFkT25seSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6aXNEaXJ0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6c2V0RGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UHJvcGVydHk6OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojp2
YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjpTVkdQ
cm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvci5o
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29ySW1w
bC5oOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyOjpjb21taXRQcm9wZXJ0eUNoYW5n
ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHkpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaDoK
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmg6
IFJlbW92ZWQuCisKKzIwMTktMDMtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNWRyBwcm9wZXJ0eSB0ZWFyIG9mZiBv
YmplY3RzIGZvciBTVkdBbmltYXRlZEJvb2xlYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNWR0FuaW1hdGVkQm9vbGVhbiB3aWxsIGJlIGRlZmluZWQg
YXMgU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eTxib29sPi4KKyAgICAgICAgLS0gU1ZHQW5p
bWF0ZWRCb29sZWFuQWNjZXNzb3IgaXMgYWRkZWQgdG8gdGhpcyBhY2Nlc3MgdGhlIG5ldyB0eXBl
LgorICAgICAgICAtLSBBIGZ1bmN0aW9uIHJlZ2lzdGVyUHJvcGVydHkoKSBpcyBhZGRlZCB0byBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkKKyAgICAgICAgICAgdG8gcmVnaXN0ZXIgdGhpcyBuZXcg
dHlwZS4KKyAgICAgICAgLS0gU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IgaXMgYWRkZWQgdG8g
YW5pbWF0ZSB0aGUgbmV3IHR5cGUKKyAgICAgICAgLS0gU1ZHQW5pbWF0aW9uQm9vbGVhbkZ1bmN0
aW9uIGlzIGFkZGVkIHRvIGhhbmRsZSB0aGUgcHJvZ3Jlc3Mgb2YgdGhpcworICAgICAgICAgICBu
ZXcgdHlwZSBvdmVyIGEgcGVyaW9kIG9mIHRpbWUuCisKKyAgICAgICAgU1ZHQW5pbWF0aW9uQm9v
bGVhbkZ1bmN0aW9uIGlzIGEgc3VwZXJjbGFzcyBvZiBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0
aW9uCisgICAgICAgIHdoaWNoIHdpbGwgYmUgdGhlIGJhc2UgY2xhc3Mgb2YgdGhlIGRpc2NyZXRl
IGFuaW1hdGlvbiB0eXBlczogc3RyaW5nLCBib29sLAorICAgICAgICBlbnVtIGFuZCBQcmVzZXJ2
ZUFzcGVjdFJhdGlvIHR5cGVzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZEJvb2xlYW4uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEJvb2xl
YW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdG9yRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEFuaW1hdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6c2V0RXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0dFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2Vy
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHU3dpdGNoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdV
c2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFjY2Vzc29ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByb3BlcnR5SW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRp
c2NyZXRlRnVuY3Rpb24uaDogQWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkRp
c2NyZXRlRnVuY3Rpb246OlNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbjo6cHJvZ3Jlc3MpOgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmg6IEFk
ZGVkCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eSk6
CisKKzIwMTktMDMtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBEZWZpbmUgdGhlIHR5cGUgb2YgU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5
IGZvciBhbGwgU1ZHIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTU4NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkgd2lsbCBldmVudHVhbGx5IHJl
cGxhY2UgU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGwuCisKKyAgICAgICAgKiBzdmcvU1ZHQUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjphdHRyaWJ1dGVSZWdpc3RyeSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6
aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTGlnaHRFbGVtZW50OjphdHRyaWJ1dGVSZWdpc3RyeSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaXRUb1ZpZXdCb3g6
OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdH
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAg
ICogc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6aXNLbm93bkF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAg
KiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdNUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmF0
dHJpYnV0ZVJlZ2lzdHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojppc0tu
b3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1NWR0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTd2l0Y2hFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1ZpZXdTcGVjLmg6CisgICAgICAgICogc3ZnL1NWR1pvb21BbmRQYW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6cGFyc2Vab29tQW5kUGFuKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1pvb21BbmRQYW46OlNWR1pvb21BbmRQYW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHWm9vbUFuZFBhbjo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dmcvU1ZHWm9vbUFuZFBhbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHWm9vbUFuZFBhbjo6em9v
bUFuZFBhbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5kUGFuOjpzZXRab29t
QW5kUGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OmF0dHJpYnV0ZVJlZ2lzdHJ5KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OmlzS25vd25BdHRyaWJ1dGUpOiBEZWxl
dGVkLgorICAgICAgICBTVkdab29tQW5kUGFuIGhvbGRzIG5laXRoZXIgU1ZHIGFuaW1hdGVkIHBy
b3BlcnRpZXMgbm9yIFNWRyB0eXBlIGVsZW1lbnQuCisgICAgICAgIFNvIHJlbW92ZSBpdCBmcm9t
IGl0cyBhdHRyaWJ1dGUgcmVnaXN0cnkuCisKIDIwMTktMDMtMTYgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0IHRlc3RzIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCLyotZXhjZXB0aW9uLW9yZGVyLmh0bWwgYXJlIGZhaWxp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNWUyOTVhYzQxNDcwZjk5NzM0YTM0ZTk1NTM5YWIyNGQ3ZGE4
NzhmYi4uNzFjZmYxYjExYjI3MGE1NTM5YWMyNDRmNWU1ZDMxZWMyNmQ1YjA4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTIyNzAsNyArMjI3MCw2IEBAIHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
CiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKLXN2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uY3BwCiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKIHN2Zy9TVkdBbmltYXRlZEVudW1l
cmF0aW9uLmNwcAogc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcApAQCAtMjM4NSw3ICsyMzg0LDYg
QEAgc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCiBzdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKIHN2Zy9T
VkdTZXRFbGVtZW50LmNwcAogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAotc3ZnL1NWR1N0cmluZ0xp
c3RWYWx1ZXMuY3BwCiBzdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAogc3ZnL1NWR1N3aXRjaEVsZW1l
bnQuY3BwCiBzdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlY2M2ZTc4OGIyYTM4MTQxNDli
OTgzYTA2OTRkNTU3OTdlOGI1MGE2Li4zYmQwYzMwNWFjZTFjY2E5YjI1NmY2NzJiZjJhODNhM2Fh
MTcxZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNTgsNyArMjU4LDYgQEAKIAkJMDg1NEIwMjExMjU1RTRFNjAwQjlDREQw
IC8qIFNWR0lubGluZVRleHRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NTRCMDBGMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdJbmxpbmVUZXh0Qm94
LmggKi87IH07CiAJCTA4NTRCMDIzMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdSb290SW5saW5lQm94
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAx
MTEyNTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJveC5oICovOyB9OwogCQkwODU0QjAy
NTEyNTVFNEU2MDBCOUNERDAgLyogU1ZHVGV4dFF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAxMzEyNTVFNEU2MDBCOUNERDAgLyogU1ZH
VGV4dFF1ZXJ5LmggKi87IH07Ci0JCTA4NTc5NzA5MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmlt
YXRlZEJvb2xlYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4NTc5NzA4MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmltYXRlZEJvb2xlYW4uaCAqLzsg
fTsKIAkJMDg1QTE1OTMxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg1QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwogCQkwODVCOTJCQjBFRkRFNzNEMDBFNjEyM0Mg
LyogRm9ybURhdGFCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMDg2Mzk1MTYxM0I1RkU1
NzAwQkIzNDREIC8qIFNWR0FuaW1hdGVkUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2Mzk1MTQxM0I1RkU1NzAwQkIzNDREIC8qIFNWR0FuaW1h
dGVkUGF0aC5oICovOyB9OwpAQCAtMjY3LDcgKzI2Niw2IEBACiAJCTA4NzNCODZCMTM2MDY0RUEw
MEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODc1NThDNjEz
QjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc1NThDNDEzQjRBNTdE
MDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg3Qjg0OTYxMjcyQ0VDODAw
QTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRl
ZEFuZ2xlLmggKi87IH07Ci0JCTA4ODBGNzBFMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNM
aXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODgwRjcwRDEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3Bl
cnR5VGVhck9mZi5oICovOyB9OwogCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyogUGFpbnRJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg1
MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8q
IFBhaW50UGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QTBFMDQxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4QTBERkIxMjZFRjFEQjAwOTc4RjdB
IC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oICovOyB9OwpAQCAtMjEzOCw2ICsy
MTM2LDEwIEBACiAJCTcxRUFEQ0Q4MjIwODdFNzIwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRUFEQ0Q2MjIwODdF
NkQwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MUVGQ0VEQzIwMkIzOEE5MDBEN0M0MTEgLyogQW5pbWF0aW9u
RWZmZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MUVGQ0VENzIwMkIzODhEMDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzFGQjk2N0IxMzgzRDY0NjAw
QUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRkI5NjdBMTM4M0Q2NDYw
MEFDOEE0QyAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggKi87IH07
CisJCTcyMTQ0MzMxMjIzRUM4NTQwMEYxMkZGNyAvKiBTVkdQcmltaXRpdmVMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjE0NDMyQzIyM0VCMjJF
MDBGMTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMTQ0MzMyMjIzRUM4NUYwMEYxMkZGNyAvKiBTVkdM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjE0
NDMyRTIyM0VCMkZFMDBGMTJGRjcgLyogU1ZHTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBT
VkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTVFRTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNDQzMzQyMjNFQzkxNjAw
RjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0
eU93bmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzI0RUQzMkMxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzI5MUEzQTdFNTQw
MEY1RjEzQyAvKiBFWFRCbGVuZE1pbk1heC5jcHAgKi87IH07CiAJCTcyNEVEMzMyMUEzQThCMjMw
MEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVu
ZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0
RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIzNCw3ICsyMjM2LDYgQEAKIAkJ
N0MzMzBBMDIxREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDEx
REY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTA4MURGOUY5
NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDYxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9z
aXRpb25PcHRpb25zLmggKi87IH07CiAJCTdDMzlDMzY1MUREQTg2NTIwMEZFRkIyOSAvKiBTVkdM
ZW5ndGhMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5o
ICovOyB9OwotCQk3QzM5QzM3NzFEREJFMTcwMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMz
NjcxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBE
MUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJv
YXJkQWNjZXNzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNC
Nzk2RjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKIAkJ
N0MzQjc5NzIxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NzAxOTA4NzU3QjAw
QjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01NjI5LDcgKzU2MzAsNiBAQAogCQkwODU0QjAxMTEy
NTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdSb290SW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4NTRCMDEyMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdUZXh0UXVlcnkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dFF1ZXJ5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1NEIwMTMxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1Rl
eHRRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0UXVlcnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg1Nzk3MDgxMjc4Mzk0QzAwQThFQzVG
IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZEJvb2xlYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1
QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDg1QjkyQjgwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyogRm9y
bURhdGFCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRh
QnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTY0Miw3ICs1NjQyLDYg
QEAKIAkJMDg3NTU4QzMxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJ
dGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXJyb2dh
dGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODdCODQ5NTEy
NzJDRUM3MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmdsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZEFuZ2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTA4ODBGNzBEMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0UHJvcGVydHlU
ZWFyT2ZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1N0YXRpY0xpc3RQ
cm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4NTA2N0Qx
MURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYWludEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4NTA2
N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFpbnRQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODhBMERGQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzU4MCw3ICs3NTc5
LDYgQEAKIAkJNDMxQTJGOUIxM0I2RjJCMDAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkTnVtYmVyT3B0
aW9uYWxOdW1iZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
QW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQzMUEyRkQ2MTNCNzcwN0EwMDc3OTFFNCAvKiBTVkdBbmltYXRlZExlbmd0aExpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMxQTMwMjAxM0I4OURD
QzAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzFBMzA4NzEzQjhGOTc4MDA3
NzkxRTQgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkQm9vbGVhbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQzMkQzRkU3MThBODY1ODQwMEQ3REMwMyAvKiBTZWxlY3RvckNoZWNrZXJUZXN0
RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlbGVjdG9yQ2hl
Y2tlclRlc3RGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDMzMUFD
NzcxM0I2ODcwMDAwQTlFNUFFIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZE51bWJlckxpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzU4RTg3QTEzNjBBMkVFMDBFNDc0OEMgLyog
SlNTVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NTA2LDYgKzk1MDQsMTIgQEAKIAkJNzFFRkNFREUyMDJCMzlDNzAwRDdD
NDExIC8qIEpTQW5pbWF0aW9uRWZmZWN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQW5pbWF0aW9uRWZmZWN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzFGOTM2RjcxREQ0Rjk5QjAwOTIyQ0M3IC8qIHRyYWNrcy1zdXBw
b3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInRyYWNrcy1z
dXBwb3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFGQjk2N0ExMzgzRDY0
NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3Bl
cnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMyOTIyM0Uz
REM1MDBGMTJGRjcgLyogU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyMTQ0MzJBMjIzRTNERTQwMEYxMkZGNyAvKiBTVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0
aW9uSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMyQzIyM0VCMjJF
MDBGMTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcmltaXRp
dmVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTQ0MzJFMjIzRUIyRkUw
MEYxMkZGNyAvKiBTVkdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzIxNDQzMkYyMjNFQjZFODAwRjEyRkY3IC8qIFNWR1Byb3Bl
cnR5QWNjZXNzb3JJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5QWNjZXNzb3JJbXBs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyMTQ0MzMwMjIzRUI3QzcwMEYxMkZG
NyAvKiBTVkdQcm9wZXJ0eUFjY2Vzc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Byb3BlcnR5QWNj
ZXNzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkMyMjM4RUUwODAw
N0YwNzlDIC8qIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyM0Y5N0JEMjIzOEVFMDgwMDdGMDc5QyAvKiBTVkdBdHRyaWJ1
dGVBbmltYXRpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZUFuaW1h
dGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkUy
MjM5NTEyRDAwN0YwNzlDIC8qIFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJv
bGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzMxLDggKzk3MzUsNiBA
QAogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFn
bWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzYyMURE
QTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0xlbmd0aExpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3Ro
TGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMZW5ndGhM
aXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlDMzY2MUREQjgy
Q0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QzM5QzM2NzFEREI4MkNGMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlz
dFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTdHJpbmdMaXN0
VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzY4MUREQjg2RDMw
MEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzM5QzM2OTFEREI4NkQzMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZh
bHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdOdW1iZXJMaXN0VmFs
dWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZBMUREQjg3MUMwMEZF
RkIyOSAvKiBTVkdQb2ludExpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHUG9pbnRMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2MjMwLDYgKzE2MjMyLDggQEAKIAkJCQk1NUJFMDI1RjIyM0IyOUM1MDAzMkYw
OEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVGdW5jdGlvbi5oICovLAogCQkJCTU1RUU1MzVFMjIz
QjJBMEUwMEZCQTk0NCAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaCAqLywK
IAkJCQk1NUJFMDI1OTIyM0IyOUMxMDAzMkYwOEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1
ZUZ1bmN0aW9uSW1wbC5oICovLAorCQkJCTcyMTQ0MzI5MjIzRTNEQzUwMEYxMkZGNyAvKiBTVkdB
bmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmggKi8sCisJCQkJNzIxNDQzMkEyMjNFM0RFNDAwRjEy
RkY3IC8qIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmggKi8sCiAJCQkJNTVCRTAy
NUIyMjNCMjlDMjAwMzJGMDhBIC8qIFNWR0FuaW1hdGlvbkZ1bmN0aW9uLmggKi8sCiAJCQkJNTVG
QTdGRUYyMTBGQTM4NjAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZS5oICovLAogCQkJCTU1RkE3RkY0
MjEwRkI2ODgwMDVBRUZFNyAvKiBTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oICovLApAQCAtMTYyNDIs
MTggKzE2MjQ2LDIxIEBACiAJCQkJNTVENzBEMjEyMjNCMDBCQjAwMDQ0QjhFIC8qIFNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHkuY3BwICovLAogCQkJCTU1RDcwRDIwMjIzQjAwOTEwMDA0NEI4RSAv
KiBTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmggKi8sCiAJCQkJNTVENzBEMjIyMjNCMDBFQTAw
MDQ0QjhFIC8qIFNWR0xlZ2FjeVByb3BlcnR5LmggKi8sCisJCQkJNzIxNDQzMkUyMjNFQjJGRTAw
RjEyRkY3IC8qIFNWR0xpc3QuaCAqLywKIAkJCQkwODEwNzY0MzEyODI4NTU2MDA3QzYzQkEgLyog
U1ZHTGlzdFByb3BlcnR5LmggKi8sCiAJCQkJMDg4QTBFMDAxMjZFRjFEQjAwOTc4RjdBIC8qIFNW
R0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAg
LyogU1ZHTWF0cml4VGVhck9mZi5oICovLAogCQkJCTU1RUU1MzU0MjIzQjI5RTkwMEZCQTk0NCAv
KiBTVkdNZW1iZXJBY2Nlc3Nvci5oICovLAogCQkJCTU1QkUwMjVBMjIzQjI5QzIwMDMyRjA4QSAv
KiBTVkdQb2ludGVyTWVtYmVyQWNjZXNzb3IuaCAqLywKKwkJCQk3MjE0NDMyQzIyM0VCMjJFMDBG
MTJGRjcgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovLAogCQkJCTU1RUU1MzYzMjIzQjJBMjQwMEZC
QTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovLAorCQkJCTcyMTQ0MzMwMjIzRUI3QzcwMEYxMkZGNyAv
KiBTVkdQcm9wZXJ0eUFjY2Vzc29yLmggKi8sCisJCQkJNzIxNDQzMkYyMjNFQjZFODAwRjEyRkY3
IC8qIFNWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmggKi8sCiAJCQkJNTVFRTUzNjAyMjNCMkEyMTAw
RkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLywKIAkJCQk1NUJFMDI1QzIyM0IyOUMzMDAz
MkYwOEEgLyogU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmggKi8sCiAJCQkJNTVCRTAyNTcyMjNC
MjlDMDAwMzJGMDhBIC8qIFNWR1Byb3BlcnR5UmVnaXN0cnkuaCAqLywKIAkJCQkwODhBMEUwMjEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDMx
MjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggKi8sCi0JCQkJMDg4MEY3MEQx
MjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJ
CQkwODEzQTRFOTEyODQxMzI2MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IHByb3BlcnRpZXM7CkBAIC0yNDExMyw4ICsyNDEyMCw2IEBA
CiAJCQkJNDM2MkM3QjgxM0FDNkYxQTAwMzQ0QkVCIC8qIFNWR0FuaW1hdGVkQW5nbGUuY3BwICov
LAogCQkJCTA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggKi8s
CiAJCQkJQjIyMjc3RTYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkQW5nbGUuaWRsICov
LAotCQkJCTQzMUEzMDg3MTNCOEY5NzgwMDc3OTFFNCAvKiBTVkdBbmltYXRlZEJvb2xlYW4uY3Bw
ICovLAotCQkJCTA4NTc5NzA4MTI3ODM5NEMwMEE4RUM1RiAvKiBTVkdBbmltYXRlZEJvb2xlYW4u
aCAqLywKIAkJCQlCMjIyNzdFNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRCb29sZWFu
LmlkbCAqLywKIAkJCQk0M0E2MjVGNzEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xv
ci5jcHAgKi8sCiAJCQkJNDNBNjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29s
b3IuaCAqLywKQEAgLTI0NTEzLDggKzI0NTE4LDYgQEAKIAkJCQlCMjIyNzkxNDBEMDBCRjIxMDA3
MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaWRsICovLAogCQkJCUIyMjI3OTE2MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggKi8sCiAJCQkJQjIyMjc5MTcwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1N0cmluZ0xpc3QuaWRsICovLAotCQkJCTdDMzlDMzY2MUREQjgyQ0YwMEZFRkIyOSAv
KiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLywKLQkJCQk3QzM5QzM2NzFEREI4MkNGMDBGRUZC
MjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5oICovLAogCQkJCUIyMjI3OTIxMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3OTIyMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzkyMzBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHU3R5bGVFbGVtZW50LmlkbCAqLywKQEAgLTMwODYzLDYgKzMwODY2LDggQEAKIAkJ
CQk0OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0JDOERBRDFBQUEzMDIyMDBFMUM4MDMgLyogTWVkaWFBY2Nl
c3NpYmlsaXR5U29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMUJDQzYxMTEyNERGQ0Iw
MEJFNzBERCAvKiBNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
Q0M5QkNGMjIzODdFOUEwMEZGQjUxQyAvKiBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RDQzlCRDEyMjM4N0VBQTAwRkZCNTFDIC8qIE1lZGlhQ2Fw
YWJpbGl0aWVzRW5jb2RpbmdJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkzQTE3RDE2
RTFDMDA0MjBBQTEgLyogTWVkaWFDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE3
MjUzQUIxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlERUJDQ0RENDE2NjQ2RUFGMDBBNDUyRTEgLyogTWVkaWFDb250cm9sRWxlbWVu
dFR5cGVzLmggaW4gSGVhZGVycyAqLywKQEAgLTMxOTA4LDcgKzMxOTEzLDYgQEAKIAkJCQlCMjIy
Nzk3NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3OTdBMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwODdCODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmds
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDg1Nzk3MDkxMjc4Mzk0QzAwQThFQzVGIC8qIFNWR0Fu
aW1hdGVkQm9vbGVhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDNBNjI1RjgxM0IzMzA0MDAwQUM5
NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4RDQ2Q0UzMTI3
QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MUZCOTY3QjEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblBy
b3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjAxNyw2ICszMjAyMSw3IEBACiAJ
CQkJN0NDRUJGQzAxREQ4RjZBQjAwMkM0MEI4IC8qIFNWR0xlbmd0aFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzQzBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHTGluZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMyMjIzRUM4NUYwMEYx
MkZGNyAvKiBTVkdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODEwNzY0NDEyODI4NTU2MDA3
QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwOTEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjA4NCw2ICszMjA4OSw5IEBACiAJCQkJQjIyMjdBOTEwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E5NDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyN0E5NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3IC8qIFNWR1ByaW1pdGl2
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBT
VkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3
IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTBCMTI2RUYx
REIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4
OEEwRTBDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjEwMiwxMSArMzIxMTAsOSBAQAogCQkJCUIyMjI3
QUEzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0FBNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTRBRkQwMTAwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQkwODgwRjcwRTEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGlj
TGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxM0E0RUExMjg0MTMy
NjAwOTkyNTExIC8qIFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjdBQTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0FBQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJN0MzOUMzNzcxRERCRTE3MDAwRkVGQjI5IC8qIFNWR1N0cmluZ0xp
c3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUI4MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUJCMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0FCRTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MjE2Niw3ICszMjE3Miw2IEBACiAJCQkJQzY1MDQ2QTkxNjdCRkI1NTAwQ0MyQTREIC8qIFRlbXBs
YXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2RTk0NERE
MUFDNEI0RUEwMDdCODVCNSAvKiBUZXJtLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTUwQjZBNjA5
OURGMDI3MDA5MEQ3ODEgLyogVGV4dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RDQzlCRDEyMjM4
N0VBQTAwRkZCNTFDIC8qIE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzMwOUUxNzA5OUU2NDkyMDA1NkU1ODEgLyogVGV4dEFmZmluaXR5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTdCMkRCNTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0
aXZlV2l0aFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU0RENFNjE4ODEwNTFEMDAzRUVE
QkIgLyogVGV4dEF1dG9TaXppbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMzIyNjAsNyArMzIyNjUs
NiBAQAogCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkI0ODRGNEQxNzFGODIxRTAwMDQwNzU1IC8qIFRyYW5z
Zm9ybUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0UwRUY4NkQ0NzAwOUQw
Q0FGIC8qIFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0RDQzlCQ0Yy
MjM4N0U5QTAwRkZCNTFDIC8qIE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0OUU5MTFEMDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtT3BlcmF0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURCMUJDNkExMDcxNUE2NDAwRUZBQTQ5IC8qIFRy
YW5zZm9ybVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0NUJGRDQxM0NGODA5MDAwQ0Mz
QjM4IC8qIFRyYW5zZm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVt
ZW50LmgKaW5kZXggZDQxYWQwYjM1MjJkYjlkNzEzZDM5YjFlNDQ4ZmU1OTlhZTY3NGIwNS4uMDU3
Nzk0YjBlN2NmMzE0NGViNDhiZWYyMGVhNDg5MDMwYmUzNGEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FF
bGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNDIsOCArNDIsMTEgQEAgcHJpdmF0ZToKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5
ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHQUVsZW1lbnQsIFNWR0dyYXBoaWNzRWxl
bWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29u
c3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVy
dHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdBRWxlbWVudCwgU1ZHR3Jh
cGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVu
Y2U+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwogICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZp
bmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
ZmluYWw7CiAKQEAgLTY0LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCkgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1f
YXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRl
IG1fdGFyZ2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEds
eXBoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5oCmlu
ZGV4IDNiNGU4NjFhMzAxYzAxMGVlYmUzN2FlMDMzY2YxMTM0YWExYmM3OWYuLmQzNGY5ZWQwNjYy
MDQxYTVjN2M0M2YwOGU0NDViYzM1MGM0ZGRiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0
R2x5cGhFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ4LDEwICs0OCwxNCBAQCBwcml2YXRlOgogICAg
IHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxT
VkdBbHRHbHlwaEVsZW1lbnQsIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZT47CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQ
cm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCisg
ICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdB
bHRHbHlwaEVsZW1lbnQsIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR1VSSVJlZmVyZW5j
ZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzNzUxOWJmZTMwZmJhY2U0MDdmZWQ5YzZhZDcz
NTgyOGFiNDBhOGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWRCb29sZWFu
QW5pbWF0b3I6OlNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQotICAgIDogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRCb29sZWFuLCBhbmltYXRpb25FbGVtZW50LCBj
b250ZXh0RWxlbWVudCkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
U1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlKFNWR1By
b3BlcnR5VHJhaXRzPGJvb2w+Ojpmcm9tU3RyaW5nKHN0cmluZykpOwotfQotCi1zdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6c3RhcnRB
bmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5p
bWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3RydWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmlt
YXRlZEJvb2xlYW4+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQm9vbGVh
bkFuaW1hdG9yOjpzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgc3RvcEFuaW1WYWxBbmltYXRpb25G
b3JUeXBlPFNWR0FuaW1hdGVkQm9vbGVhbj4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1hdGVkVHlw
ZSYgdHlwZSkKLXsKLSAgICByZXNldEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRCb29sZWFuPihh
bmltYXRlZFR5cGVzLCB0eXBlKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRv
cjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxXaWxsQ2hhbmdlRm9yVHlwZTxTVkdBbmlt
YXRlZEJvb2xlYW4+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkQm9vbGVh
bkFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsRGlkQ2hhbmdlRm9yVHlwZTxT
VkdBbmltYXRlZEJvb2xlYW4+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1hdGVk
Qm9vbGVhbkFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0Fu
aW1hdGVkVHlwZSopCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRCb29sZWFuQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVy
Y2VudGFnZSwgdW5zaWduZWQsIFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBl
KiB0bywgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiBhbmltYXRlZCkKLXsKLSAg
ICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKLSAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVu
dCk7Ci0KLSAgICBjb25zdCBhdXRvIGZyb21Cb29sZWFuID0gKG1fYW5pbWF0aW9uRWxlbWVudC0+
YW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OlRvID8gYW5pbWF0ZWQgOiBmcm9tKS0+
YXM8Ym9vbD4oKTsKLSAgICBjb25zdCBhdXRvIHRvQm9vbGVhbiA9IHRvLT5hczxib29sPigpOwot
ICAgIGF1dG8mIGFuaW1hdGVkQm9vbGVhbiA9IGFuaW1hdGVkLT5hczxib29sPigpOwotCi0gICAg
bV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlRGlzY3JldGVUeXBlPGJvb2w+KHBlcmNlbnRhZ2Us
IGZyb21Cb29sZWFuLCB0b0Jvb2xlYW4sIGFuaW1hdGVkQm9vbGVhbik7Ci19Ci0KLWZsb2F0IFNW
R0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKQotewotICAgIC8vIE5vIHBhY2VkIGFuaW1hdGlvbnMgZm9yIGJvb2xl
YW4uCi0gICAgcmV0dXJuIC0xOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRC
b29sZWFuLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NTkwOWYwNzZiNGIxYTg0
NmM3NTc4ODVjMmVhY2Q1OTc0YmE1MmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNs
dWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFj
Y2Vzc29yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHQW5pbWF0aW9uRWxl
bWVudDsKLQotdXNpbmcgU1ZHQW5pbWF0ZWRCb29sZWFuID0gU1ZHQW5pbWF0ZWRTdGF0aWNQcm9w
ZXJ0eVRlYXJPZmY8Ym9vbD47Ci11c2luZyBTVkdBbmltYXRlZEJvb2xlYW5BdHRyaWJ1dGUgPSBT
VkdBbmltYXRlZEF0dHJpYnV0ZTxTVkdBbmltYXRlZEJvb2xlYW4+OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGU+Ci11c2luZyBTVkdBbmltYXRlZEJvb2xlYW5BdHRyaWJ1dGVBY2Nlc3Nv
ciA9IFNWR0FuaW1hdGVkQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEJv
b2xlYW5BdHRyaWJ1dGUsIEFuaW1hdGVkQm9vbGVhbj47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkQm9v
bGVhbkFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKLXB1
YmxpYzoKLSAgICBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50
KiwgU1ZHRWxlbWVudCopOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wQW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
IG92ZXJyaWRlOwotICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBl
cyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIGZsb2F0IGNhbGN1bGF0ZURpc3Rh
bmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3Zl
cnJpZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGlvbkVsZW1lbnQuaAppbmRleCAzZjRhNTc2ZWEzOWQ3ODM4OTlkNWZjMmIwMzg2MWRi
YjI0YTZlYTQ0Li43NzMwODhiNjdiMTQxN2UzNjU5MTY5Zjk4YmIwZDJiY2ZiYWFjN2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1j
Yy5pZC5hdT4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNCw3ICsyNCw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR1NNSUxFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHVGVzdHMuaCIKQEAgLTE0Nyw2ICsxNDYsOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVS
ZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5
KCk7IH0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclBy
b3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R0FuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR1Rlc3RzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKTsKIAogICAgIHN0YXRpYyBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKQEAgLTIwNyw2ICsyMDks
NyBAQCBwcml2YXRlOgogICAgIENhbGNNb2RlIG1fY2FsY01vZGUgeyBDYWxjTW9kZTo6TGluZWFy
IH07CiAgICAgQW5pbWF0aW9uTW9kZSBtX2FuaW1hdGlvbk1vZGUgeyBBbmltYXRpb25Nb2RlOjpO
b25lIH07CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAq
dGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRvckZhY3RvcnkuaAppbmRleCAwZjQ1NzYzMzE0YTBhYTg5ZDBhYjM3M2MzMThkYmVhMDY2NTU0
OWM1Li4yYjgyNzE3ZjQ3MGE3YTkxMmIzZTZiNjg0MTg0MzM3NTMyMTczNmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCkBAIC0yMCw3ICsyMCw2IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKLSNpbmNsdWRlICJTVkdBbmlt
YXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgiCiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgi
CkBAIC01MCw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNhc2UgQW5p
bWF0ZWRCb29sZWFuOgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRCb29sZWFuQW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KTsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZENvbG9yQW5p
bWF0b3I+KCphbmltYXRpb25FbGVtZW50LCAqY29udGV4dEVsZW1lbnQpOwogICAgICAgICBjYXNl
IEFuaW1hdGVkRW51bWVyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaApp
bmRleCA2NWM3YjQ2NWI1MTI4ODQwMWEzNDNjOTgwYzAyY2U3MDk2ODUxMDA4Li41YTBlYjcwMzJi
NWUzMTRhNWRiYmEyMDA0N2FkMjg3NTZmNjdhYjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmgKQEAgLTQ2LDEwICs0NiwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0
cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0NpcmNsZUVs
ZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47
CiAgICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQog
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdDaXJjbGVFbGVtZW50LCBTVkdHZW9tZXRy
eUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OworICAgIGNvbnN0IFNWR1By
b3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8
IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAg
fQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNTksNiArNjYsNyBAQCBwcml2YXRlOgogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVP
d25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIG1fY3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX2N5IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fciB7IExlbmd0aE1vZGVPdGhlciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5oCmluZGV4IDYzYjZiZGUwZTI0MzNiNmVjNWRhYTJmMGVlYTY2
ZTM3YWUzYWRmZjcuLjAzYzFhZGRmN2UwZTJmMmQ4NmM4Mzg1ODUxMTNjODA0MzEwOGZmMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw3
ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFu
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQu
aCIKQEAgLTQ0LDEwICs0MywxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3du
ZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0NsaXBQYXRoRWxlbWVudCwg
U1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBz
dGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJl
Z2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnko
KTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmli
dXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3du
ZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQor
CisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxT
VkdDbGlwUGF0aEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAg
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CkBAIC01OSw2
ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBm
aW5hbDsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsg
KnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlPiBtX2NsaXBQYXRoVW5pdHMgeyBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVf
VVNFUlNQQUNFT05VU0UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKaW5kZXggOWY0NmJlY2RmYjRi
OWMxOWEwNWE0ZDkzYmFiYmE1ZjM1OTM2YmMyZC4uOWQyYjZkZTZmZmE2NjZjOGM0MzM5YzhmNDgz
ZDFhMmQ4M2VkM2VkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC05NiwxMCArOTYsMTcgQEAg
cHJvdGVjdGVkOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHlJbXBsPFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdF
bGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0
cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0
cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94
eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmli
dXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZH
RWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC0xMDcsNiArMTE0LDcgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8Q29tcG9uZW50VHJhbnNmZXJUeXBlPiBtX3R5cGUg
eyBGRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgfTsKICAgICBTVkdBbmltYXRlZE51
bWJlckxpc3RBdHRyaWJ1dGUgbV90YWJsZVZhbHVlczsKICAgICBTVkdBbmltYXRlZE51bWJlckF0
dHJpYnV0ZSBtX3Nsb3BlIHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgK
aW5kZXggMmE3MWM2MmMwYjZkODdkNGZiZTEzMDc1NzVlNjM3NjIzNmRmZmYzMS4uOGQ2OTVjYWYx
MzE0NGZmMTFmYmY5OGJjN2NlZTY5OTc3YTU3Y2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNyArMjEsNiBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
TGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCkBAIC01NCwxMCArNTMsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdDdXJzb3JFbGVt
ZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdUZXN0cywg
U1ZHVVJJUmVmZXJlbmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmli
dXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmli
dXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRl
T3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNW
R1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdDdXJzb3JFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdUZXN0cywgU1ZHVVJJUmVmZXJlbmNlPjsKKyAg
ICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisgICAgCisgICAgc3RhdGljIGJvb2wg
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC02Nyw2ICs3Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYpIGNvbnN0IGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0
dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9w
ZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgSGFzaFNldDxDU1NDdXJzb3JJbWFnZVZhbHVl
Kj4gbV9jbGllbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaAppbmRleCBkZjNjMDQw
M2VjZjViNTY4MmFmY2E3MmU5ZjdhMjdhMDU3M2U0NTFmLi4zYWI0ZTk5ZTNjNThhZWNmMjBhODYz
YzdlZDlmMjQzMzc3NDMyZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVm
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaApAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIx
LDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xl
YW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVk
ZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAgLTM3LDYgKzM2LDkgQEAgcHJpdmF0ZToKIAog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdEZWZzRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkPjsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdEZWZzRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDQsNiArNDYsNyBAQCBwcml2YXRlOgog
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1
dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGI2NjRkM2QwYjBj
ODU0ODQyNGZlMzA0ZDYzYWU5NzM1NDk5OTlkNjcuLjBjODY1OTg4MjFiOTNmYWE3YWRmY2Q0MjBi
ZDc1Mzk5YjJjNDAwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTcyMCwxMiAr
NzIwLDI0IEBAIHZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zCiAgICAgU1ZHRWxlbWVudCogbm9uQ29u
c3RUaGlzID0gY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4odGhpcyk7CiAgICAgaWYgKG5hbWUgPT0g
YW55UU5hbWUoKSkKICAgICAgICAgc3luY2hyb25pemVBbGxBbmltYXRlZFNWR0F0dHJpYnV0ZShu
b25Db25zdFRoaXMpOwotICAgIGVsc2UgaWYgKGlzQW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShu
YW1lKSkgeworICAgIGVsc2UgewogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgb2YgdGhlIHByb3Bl
cnR5IGhhcyBjaGFuZ2VkLCBzZXJpYWxpemUgdGhlIG5ldyB2YWx1ZSB0byB0aGUgYXR0cmlidXRl
LgogICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3BlcnR5UmVnaXN0cnkoKS5zeW5jaHJvbml6
ZShuYW1lKSkKICAgICAgICAgICAgIG5vbkNvbnN0VGhpcy0+c2V0U3luY2hyb25pemVkTGF6eUF0
dHJpYnV0ZShuYW1lLCAqdmFsdWUpOwotICAgIH0gZWxzZQotICAgICAgICBub25Db25zdFRoaXMt
PnN5bmNocm9uaXplQXR0cmlidXRlKG5hbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBu
b25Db25zdFRoaXMtPnN5bmNocm9uaXplQXR0cmlidXRlKG5hbWUpOworICAgIH0KK30KKyAgICAK
K3ZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3Bl
cnR5KQoreworICAgIC8vIFdlIHdhbnQgdG8gZGlydHkgdGhlIHRvcC1sZXZlbCBwcm9wZXJ0eSB3
aGVuIGEgZGVzY2VuZGFudCBjaGFuZ2VzLiBGb3IgZXhhbXBsZQorICAgIC8vIGEgY2hhbmdlIGlu
IGFuIFNWR0xlbmd0aCBpdGVtIGluIFNWR0xlbmd0aExpc3Qgc2hvdWxkIHNldCB0aGUgZGlydHkg
ZmxhZyBvbgorICAgIC8vIFNWR0xlbmd0aExpc3QgYW5kIG5vdCB0aGUgU1ZHTGVuZ3RoLgorICAg
IHByb3BlcnR5LT5zZXREaXJ0eSgpOworCisgICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsK
KyAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKHByb3BlcnR5UmVnaXN0cnkoKS5wcm9wZXJ0eUF0dHJp
YnV0ZU5hbWUoKnByb3BlcnR5KSk7CiB9CiAKIHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVy
dHlDaGFuZ2UoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5oCmluZGV4IDkyOTZjYmExZTExYWQ0ZTMwMzYwMzFkNDM5YjhmZDA1NGM3YTkw
NzkuLjhhODg0NzQ1ZDQ1NDU1ZTZiNzAzNTJmMGUzNDAzZTBkNjdlYWE3MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaApAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW5p
bWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAg
Ym9vbCBpc0FuaW1hdGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAot
ICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNv
bW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21t
aXRQcm9wZXJ0eUNoYW5nZShTVkdBbmltYXRlZFByb3BlcnR5Jik7CiAKICAgICBjb25zdCBTVkdF
bGVtZW50KiBhdHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRoaXM7IH0KQEAgLTIxNiw5ICsyMTYsOCBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U1ZHRWxl
bWVudCo+IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzOwogCiAgICAgQXR0cmlidXRlT3du
ZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVk
U3RyaW5nQXR0cmlidXRlIG1fY2xhc3NOYW1lOwotICAgIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKKyAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJp
YnV0ZSBtX2NsYXNzTmFtZTsKIH07CiAKIGNsYXNzIFNWR0VsZW1lbnQ6Okluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAppbmRleCA5
ZGFhZWE4Y2Y4YmFhZTFmMjNmNzI2YTU2OTk0MzYyOGQyY2E4M2EwLi4zYzliY2ZjN2Q5YmExY2Vm
MWE0YzI1YzljNzFhZjU3ODRiYzQxMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxsaXBzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ4LDEwICs0OCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNp
bmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0Vs
bGlwc2VFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclBy
b3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5
JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdFbGxpcHNlRWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lz
dHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJl
Z2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgZmluYWw7CiAKQEAgLTYxLDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZSBtX2N4IHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV9jeSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3J4IHsgTGVuZ3RoTW9kZVdpZHRoIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKaW5kZXggM2ExZTU2ZGQ2MjNhNmIy
NGViNzU4MDg2NDBlYjEzNzdjZGY3ZGMzZi4uYWYyNjFiNjg2MTI4ZTI3MDAyM2UwMmRmODk2YTY1
OTZjOTY0NTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmNwcApAQCAtMjksMjIgKzI5LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICA6IG1fY29udGV4dEVsZW1l
bnQoKmNvbnRleHRFbGVtZW50KQorICAgICwgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKFNW
R0FuaW1hdGVkQm9vbGVhbjo6Y3JlYXRlKGNvbnRleHRFbGVtZW50KSkKIHsKLSAgICByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpy
ZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVn
aXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQXR0ciwgJlNWR0VsbGlwc2VFbGVtZW50OjptX2V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+KCk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCAmU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6bV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPigp
OworICAgIH0pOwogfQogCiB2b2lkIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWRBdHRyKQotICAgICAgICBzZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHZhbHVlID09
ICJ0cnVlIik7CisgICAgICAgIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC0+c2V0QmFzZVZh
bEludGVybmFsKHZhbHVlID09ICJ0cnVlIik7CiB9CiAKIHZvaWQgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5oCmluZGV4IGQyNTUwN2FkMDdlMjBmMDZlYjJhOTk5NjU3NGQwMGJjMDIyMjlmZDUuLmVh
ZWIyMmFhYmViZWQ5YmUzOGNhOGNmMGIzZDRiNmNmNWE2MTkwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaApAQCAtMSw3ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcg
QEAKIAogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDE1
ICs0OCwxOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAg
IHN0YXRpYyBhdXRvJiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAotICAgIGF1dG8gZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIHVzaW5nIFBy
b3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZD47CiAKLSAgICBib29sIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKSBj
b25zdCB7IHJldHVybiBtX2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQudmFsdWUoKTsgfQotICAg
IHZvaWQgc2V0RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZChib29sIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpIHsgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLnNldFZhbHVlKGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpOyB9CisgICAgYm9vbCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCkgY29uc3QgeyByZXR1cm4gbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLT5jdXJyZW50VmFs
dWUoKTsgfQorICAgIFNWR0FuaW1hdGVkQm9vbGVhbiYgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEFuaW1hdGVkKCkgeyByZXR1cm4gbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KTsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSk7CisgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldEhhdmVGaXJlZExvYWRFdmVu
dChib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNQYXJzZXJJbnNlcnRlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC02NywxMSArNzEsMTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBh
dHRyaWJ1dGVPd25lclByb3h5KCkgeyByZXR1cm4geyAqdGhpcywgbV9jb250ZXh0RWxlbWVudCB9
OyB9CiAgICAgCiAgICAgU1ZHRWxlbWVudCYgbV9jb250ZXh0RWxlbWVudDsKLSAgICBTVkdBbmlt
YXRlZEJvb2xlYW5BdHRyaWJ1dGUgbV9leHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOworICAgIFJl
ZjxTVkdBbmltYXRlZEJvb2xlYW4+IG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmgKaW5kZXggZDY3YmFmZmNhYTk2OGVhZTRjZjJhZDBkNTI5OGU4OGE4YzNhZDA0Yy4uYTE2YjFk
MmJmNDFlMTA1MTgwZDI1YTBmMDkxMzk3YzhiMDhiZGUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAq
IENvcHlyaWdodCAoQykgMjAxNCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU5LDEwICs1OSwxNyBAQCBwcml2
YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHlJbXBsPFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdp
c3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwor
ICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApAQCAtNzAsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2V0RmlsdGVyRWZm
ZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KSBvdmVycmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclBy
b3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZH
QW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjI7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bkF0dHJpYnV0ZTxCbGVuZE1vZGU+IG1fbW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCmluZGV4IDQ3Njg4ZWM4
NjlkM2ZjZjEzNTE5NDk4YzhlODAwMGI1NGU2OWMxZjguLjRlMWYzM2EyNzNhNWNkZmMyZDBlODg5
N2JlMjRjOTA4MzE5ZjdhZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtODMsMTAgKzgzLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47
CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC05NCw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEF0dHJp
YnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0
ZWRTdHJpbmdBdHRyaWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJp
YnV0ZTxDb2xvck1hdHJpeFR5cGU+IG1fdHlwZSB7IEZFQ09MT1JNQVRSSVhfVFlQRV9NQVRSSVgg
fTsKICAgICBTVkdBbmltYXRlZE51bWJlckxpc3RBdHRyaWJ1dGUgbV92YWx1ZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCmluZGV4
IGJkNjJiMzQ4MWM1ZWU0NjUzNDFkNDNkYmM0NGJmODg3MmY0YjZlN2UuLjI1N2E5NTZkODg0ZDAx
ZTk0ZDAzNjA3NzNjNWFmYWUwYzZhNGEzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCkBAIC0yLDYgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zOSwxNCArNDAsMTggQEAgcHJpdmF0ZToK
ICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUlt
cGw8U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0
ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0
cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAogICAgIC8v
IEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCi0gICAgY29uc3QgU1ZHQXR0cmli
dXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJy
aWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAq
dGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAppbmRleCBhMTIzY2M2YTcxNDQwNTFj
ODMzNjg4ZjVkNWViMDIwY2ZkOTlmYzNkLi4wZjExNzNiMTU5NDZlMjMxYzUyMTBiYTI5NWY4MTFj
YzA4ZWFhMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTA2LDEwICsxMDYsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0
ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGlj
IEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3Ry
eSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0K
LSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVD
b21wb3NpdGVFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+Owor
ICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmli
dXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtMTE3LDYg
KzEyNCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94
eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJp
YnV0ZSBtX2luMTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMjsKICAgICBT
VkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+IG1f
c3ZnT3BlcmF0b3IgeyBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBmOWM0MWZk
ZjkyYmI2ZjE0YjUxMDhkNDlkZDYzY2NkOWY3OGVjNDE2Li5kYTcyNmQ2Y2Q5MDFiNTU3NjQxMzAz
NWE1ZjgwYjFmZTM3ZWNkZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgaW5saW5lIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50OjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW0KICAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdO
YW1lczo6b3JkZXJBdHRyLCAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fb3JkZXJYLCAm
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fb3JkZXJZPigpOwogICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp0YXJnZXRYQXR0ciwgJlNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50OjptX3RhcmdldFg+KCk7CiAgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnRhcmdldFlBdHRyLCAmU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6Om1fdGFyZ2V0WT4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIsICZTVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudDo6bV9wcmVzZXJ2ZUFscGhhPigpOwogICAgIH0pOwogfQogCkBA
IC03OSw3ICs4MCw2IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnJlZ2lzdGVy
QXR0cmlidXRlcygpCiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6Omtl
cm5lbFVuaXRMZW5ndGhBdHRyLAogICAgICAgICAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6
Omtlcm5lbFVuaXRMZW5ndGhYSWRlbnRpZmllciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjptX2tlcm5lbFVuaXRMZW5ndGhYLAogICAgICAgICAmU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQ6Omtlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjptX2tlcm5lbFVuaXRMZW5ndGhZPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmli
dXRlPFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0ciwgJlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50OjptX3ByZXNlcnZlQWxwaGE+KCk7CiB9CiAKIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCkBAIC0xNTIsOSArMTUyLDkgQEAgdm9pZCBTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cikgewog
ICAgICAgICBpZiAodmFsdWUgPT0gInRydWUiKQotICAgICAgICAgICAgbV9wcmVzZXJ2ZUFscGhh
LnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgbV9wcmVzZXJ2ZUFscGhhLT5zZXRCYXNlVmFs
SW50ZXJuYWwodHJ1ZSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJmYWxzZSIpCi0gICAg
ICAgICAgICBtX3ByZXNlcnZlQWxwaGEuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICAgICAgbV9w
cmVzZXJ2ZUFscGhhLT5zZXRCYXNlVmFsSW50ZXJuYWwoZmFsc2UpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5n
KCJmZUNvbnZvbHZlTWF0cml4OiBwcm9ibGVtIHBhcnNpbmcgcHJlc2VydmVBbHBoYUF0dHI9XCIi
ICsgdmFsdWUgICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4i
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuaAppbmRleCBkMzA0Y2M0MWI5MjI3MzcyMmRmOGY3NjJkYjU2YzIzMjU1
YjJhMWFjLi43MGZiOWQ3MzUwNjRmYTJkNmEwNTMyNzk5MTViYTg5N2M3N2U5OTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaApAQCAtNzgs
NyArNzgsNyBAQCBwdWJsaWM6CiAgICAgRWRnZU1vZGVUeXBlIGVkZ2VNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lZGdlTW9kZS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0
TGVuZ3RoWC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAgIGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3RoWS5j
dXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQotICAgIGJvb2wgcHJlc2VydmVB
bHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVBbHBoYS5jdXJyZW50VmFsdWUoYXR0cmli
dXRlT3duZXJQcm94eSgpKTsgfQorICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlc2VydmVBbHBoYS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAgIFJlZlB0cjxTVkdB
bmltYXRlZFN0cmluZz4gaW4xQW5pbWF0ZWQoKSB7IHJldHVybiBtX2luMS5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBTVkdBbmltYXRlZEludGVnZXImIG9y
ZGVyWEFuaW1hdGVkKCkgeyByZXR1cm4gbV9vcmRlclg7IH0KQEAgLTkxLDIwICs5MSwyNCBAQCBw
dWJsaWM6CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IGVkZ2VNb2RlQW5pbWF0
ZWQoKSB7IHJldHVybiBtX2VkZ2VNb2RlLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQ
cm94eSgpKTsgfQogICAgIFJlZlB0cjxTVkdBbmltYXRlZE51bWJlcj4ga2VybmVsVW5pdExlbmd0
aFhBbmltYXRlZCgpIHsgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFguYW5pbWF0ZWRQcm9wZXJ0
eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkTnVtYmVy
PiBrZXJuZWxVbml0TGVuZ3RoWUFuaW1hdGVkKCkgeyByZXR1cm4gbV9rZXJuZWxVbml0TGVuZ3Ro
WS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8
U1ZHQW5pbWF0ZWRCb29sZWFuPiBwcmVzZXJ2ZUFscGhhQW5pbWF0ZWQoKSB7IHJldHVybiBtX3By
ZXNlcnZlQWxwaGEuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Cisg
ICAgU1ZHQW5pbWF0ZWRCb29sZWFuJiBwcmVzZXJ2ZUFscGhhQW5pbWF0ZWQoKSB7IHJldHVybiBt
X3ByZXNlcnZlQWxwaGE7IH0KIAogcHJpdmF0ZToKICAgICBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0
cmlidXRlcygpOwotICAgIAorICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKwogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0g
ICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAt
MTE2LDcgKzEyMCw2IEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotCiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUg
bV9pbjE7CiAgICAgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4gbV9vcmRlclggeyBTVkdBbmltYXRl
ZEludGVnZXI6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEludGVnZXI+IG1f
b3JkZXJZIHsgU1ZHQW5pbWF0ZWRJbnRlZ2VyOjpjcmVhdGUodGhpcykgfTsKQEAgLTEyOCw3ICsx
MzEsNyBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8RWRn
ZU1vZGVUeXBlPiBtX2VkZ2VNb2RlIHsgRURHRU1PREVfRFVQTElDQVRFIH07CiAgICAgU1ZHQW5p
bWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9rZXJuZWxVbml0TGVuZ3RoWDsKICAgICBTVkdBbmltYXRl
ZE51bWJlckF0dHJpYnV0ZSBtX2tlcm5lbFVuaXRMZW5ndGhZOwotICAgIFNWR0FuaW1hdGVkQm9v
bGVhbkF0dHJpYnV0ZSBtX3ByZXNlcnZlQWxwaGE7CisgICAgUmVmPFNWR0FuaW1hdGVkQm9vbGVh
bj4gbV9wcmVzZXJ2ZUFscGhhIHsgU1ZHQW5pbWF0ZWRCb29sZWFuOjpjcmVhdGUodGhpcykgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAppbmRleCAwYjhhZThiMDFlZjRhY2VmNzlhYmIx
YWE2OTIxOGE3YmE4ZjRhNmE4Li45NWM5ZDc0YTI4NmE2ZTMxOTY3NzJlMzFhMzA1NTMyYTk5OGVk
OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDUgT2xpdmVyIEh1bnQgPG9saXZlckBuZXJnZXQuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNTMsMTAgKzUzLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclBy
b3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIHN0YXRpYyBB
dHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnko
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7
Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1
c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisgICAgCisgICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBA
IC02Nyw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmli
dXRlIG1faW4xOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZGlmZnVzZUNvbnN0
YW50IHsgMSB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3VyZmFjZVNjYWxl
IHsgMSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oCmluZGV4IDUxYmVkNTNkZjY2YjA1YzQ4NDBhZDE1YTZjNDQyYWRkZjkxNzc0N2IuLjNj
MDkyZDRmNjNmZTkwZWU3NzgwNGE1MjUyMTQ1Yjg1MDBlNjk5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvbGl2ZXJAbmVyZ2V0LmNv
bT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTg4LDEwICs4OCwxNyBAQCBwcml2YXRlOgogCiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVn
aXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQ
cm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmli
dXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAtOTksNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3Zl
cnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7
ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwogICAgIFNWR0FuaW1h
dGVkU3RyaW5nQXR0cmlidXRlIG1faW4yOwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gbV94Q2hhbm5lbFNlbGVjdG9yIHsgQ0hBTk5FTF9B
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAppbmRleCAz
NjYyMTllMDJjNjkzMzc0NjgyNWE3OTJlODM2NWJlMGY1MmQwMTc5Li43MTE2MzQyZDg0YWNkMDE2
OWExZDVlODg0NWJiMjFiYjRhOGNiMjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNTAsMTAgKzUwLDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVE
cm9wU2hhZG93RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsK
ICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmli
dXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVy
UmVnaXN0cnk8U1ZHRkVEcm9wU2hhZG93RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJl
Z2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7CiAKQEAgLTYzLDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgQXRvbWlj
U3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRpZmllcigpOwogCiAgICAgQXR0cmlidXRlT3duZXJQ
cm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0
dHJpYnV0ZSBtX2luMTsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX2R4IHsgMiB9
OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fZHkgeyAyIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKaW5kZXggOTNiNjFhY2E0NmEz
Y2RiMTkwM2Q1NTlmZjhiY2NlMTgxYjRjYzRjOS4uMGY0M2NjNjY3ZTE2NDZiZmI1NDhjYzliNDE2
NGNlMzY4ZTExM2FiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTUxLDEwICs1MSwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsK
ICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmli
dXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwogCkBAIC02NCw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgc3RkRGV2aWF0aW9uWUlkZW50aWZpZXIoKTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRy
aWJ1dGUgbV9pbjE7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9zdGREZXZpYXRp
b25YOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3RkRGV2aWF0aW9uWTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggNmM0ZmQ2MzUwYjk4NzIwYjU4
OTRiZTY2ODgyMjNjNjA0YjM0MjQwOS4uNTUwYmY5MDllYjMzNTFiZjczODIxN2VkYTQ5YzMzNzRl
MmI5ZTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTEsNyAr
MSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw3ICsy
Myw2IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlSGFuZGxlLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZFSW1hZ2UuaCIKQEAgLTQ5
LDEwICs0OCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJp
YnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBz
dGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5
ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IFNWR1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVy
dHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQor
CisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogCkBAIC03MSw2ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0F0dHJpYnV0ZSBtX3ByZXNlcnZlQXNwZWN0UmF0aW87
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAppbmRleCA4NGE2NzhmZmIwZTc5
MjNmOTE4YWQzYzg3YWNjMzViMjY2ZjI3MWYyLi45YmUyYmZhNDZlYzhjZmEwNDI2MTg3N2FjYzhj
NmVkODA5Y2JjMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaApAQCAt
Miw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IE9saXZlciBI
dW50IDxvbGl2ZXJAbmVyZ2V0LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTY2LDE1ICs2
NiwyMyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJv
eHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRUxpZ2h0RWxlbWVudCwgU1ZHRWxl
bWVudD47CiAgICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0
cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3Qg
U1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlS
ZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUxpZ2h0RWxlbWVudCwgU1ZH
RWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAK
ICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07
CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAg
IFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fYXppbXV0aDsKICAgICBTVkdBbmltYXRlZE51
bWJlckF0dHJpYnV0ZSBtX2VsZXZhdGlvbjsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0
ZSBtX3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgKaW5kZXgg
OWM1NTRlZTExMjU4NjNmNzQ1Y2MxYTk0YjBhMzIxNGQ2MjUwYzA1Yi4uNzI2ZmI2MjM2MTI2ODE5
YTQxZTQ0MTM4NmVlYmI1N2VjOTBkY2NlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTM5LDE2ICszOSwyNCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFTWVy
Z2VOb2RlRWxlbWVudCwgU1ZHRWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBp
c0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0
dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7
IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVNZXJnZU5vZGVFbGVtZW50LCBT
VkdFbGVtZW50PjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lz
dHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBz
dGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAKICAg
ICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJv
eHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKICAgICBTVkdBbmltYXRlZFN0cmluZ0F0dHJpYnV0ZSBtX2luMTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCmluZGV4IGFmNmYxNWU4
ZjczMTk1YTA3OGM0ZGUxMWYzMWRlOWI1ZjQ4NGFlOWMuLjBiNmJhMmMyMTdhZWQ0MzcxZWE0Y2Iw
ZGFmMDg5NGY5NTMxZTAyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuaApAQCAtNzgsMTAgKzc4LDE3IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRy
aWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHRkVNb3JwaG9s
b2d5RWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKICAgICBz
dGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJl
Z2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnko
KTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmli
dXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3du
ZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQor
CisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxT
VkdGRU1vcnBob2xvZ3lFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApAQCAt
OTIsNiArOTksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHJh
ZGl1c1lJZGVudGlmaWVyKCk7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRl
T3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwog
ICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8TW9ycGhvbG9neU9wZXJhdG9yVHlw
ZT4gbV9zdmdPcGVyYXRvciB7IEZFTU9SUEhPTE9HWV9PUEVSQVRPUl9FUk9ERSB9OwogICAgIFNW
R0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fcmFkaXVzWDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuaAppbmRleCBiZGIwZTRmMGI4ZmZhODk5NTJkYjkzZDA3ZjRkYjliMGFh
ZjIzYmZlLi4xNDM2YmFlOGQ3YWI0ZDAwOGM0NzkyZmQwM2JmN2ZkNThkYTRlN2RiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCkBAIC00NCwxNiArNDQsMjQgQEAgcHJp
dmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25l
clByb3h5SW1wbDxTVkdGRU9mZnNldEVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJl
Z2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJp
YnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3Bl
cnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0K
KworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRy
aWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRTdHJpbmdBdHRyaWJ1dGUgbV9p
bjE7CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBdHRyaWJ1dGUgbV9keDsKICAgICBTVkdBbmltYXRl
ZE51bWJlckF0dHJpYnV0ZSBtX2R5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggN2NlZGFmODU5OWI0MTliZDRkODFiYjQ3ZDU3
NGIxNWE3MjhjYWVjYS4uOTQ4NzdiNDZmN2E2Mzc5OTMwMWMxYjc5NzQ4ZGNlMjcwZDg3MWNhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5oCkBAIC01NCwxMCArNTQsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93
bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIHN0
YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVn
aXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgp
OyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3Ry
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwog
CkBAIC02OCw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CiAKICAgICBBdHRyaWJ1dGVPd25lclBy
b3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkU3RyaW5nQXR0
cmlidXRlIG1faW4xOwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1fc3BlY3VsYXJD
b25zdGFudCB7IDEgfTsKICAgICBTVkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3NwZWN1bGFy
RXhwb25lbnQgeyAxIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAppbmRleCA3
NTRkZjQwOTkxZTg1Yzk4N2VhYThkNWNjZjI4OTUwMGVkMDljNmQxLi45YTAzM2QyMGRlYTY1ZTRj
N2ExOTQ0NjYxZGE5NWFhMDkzMDc4MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmgKQEAgLTM4LDE2ICszOCwyNCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRl
T3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFVGlsZUVsZW1lbnQs
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJp
YnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsg
cmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBz
dGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQog
ICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVUaWxlRWxl
bWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPjsKKyAgICBjb25zdCBT
VkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1l
KSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwor
ICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBB
dHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0Fu
aW1hdGVkU3RyaW5nQXR0cmlidXRlIG1faW4xOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCmluZGV4IDI3MDcxYzA4ZDM1MDJkMTc4YmVkZjRi
NGQzNjRkYmQ5ZDRiOThjNTguLjdkN2ZmNDIyZGMwODM0NmZiOWM3Y2QwNzAzYWI3NjI1NjhlOWEz
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnNldEZpbHRl
ckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29ucwogCiB2b2lkIFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFBy
b3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKGlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmgKaW5kZXggMzZiNDcyYjJhOGI1MzZjYTBlYzMyYTI4YzYwNmU0MGI3MjAw
NjdlYi4uNGZhMjNhZDE5NTlhYTg2NTk1MjJkZTAwOTkyZmViOTMxMDRlZWNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCkBAIC0xMTYsMTMgKzExNiwx
NyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6
OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0
ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0K
ICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLSAgICAKKyAgICBjb25zdCBT
VkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKICAgICB1c2luZyBQcm9wZXJ0eVJl
Z2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQs
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3QgU1ZHUHJv
cGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYg
YXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3du
ZXJQcm94eTsgfQorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKaW5k
ZXggY2VkYTlmNWQ1YzAwOGY0NGM5NjM2NTU5ZDI4ODIxZmE4MDNiMzVhMy4uMzMwZGIyODMyMWM3
YzU4MTk4NDc2NzlhMThiZTcxNjAyNWRlNTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5oCkBAIC01NiwxMSArNTYsMTkgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJp
YnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdGaWx0ZXJFbGVt
ZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZl
cmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3Ry
eSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRy
aWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclBy
b3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0gICAgc3RhdGljIGJvb2wg
aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVz
KCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclBy
b3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAg
ICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIFNW
R1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisg
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7IH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKQEAgLTczLDYgKzgxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQ
cm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkg
eyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZT4gbV9maWx0ZXJVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRf
VFlQRV9PQkpFQ1RCT1VORElOR0JPWCB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRy
aWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9wcmltaXRpdmVVbml0cyB7IFNWR1Vu
aXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1feCB7IExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmgKaW5kZXggZTA5NDZmNTUyZWE1NDdlYmY4NjYwM2ZiNmY2YjdhNTNhYjU5YjE3Ni4u
YWQyMWIzMjNhYzg1MjU2YTgxODcyZmNhZjA4ZDVjYjRlN2JhYzNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHRWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJp
YnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdFbGVtZW50PjsKKwogICAgIGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiB4KCkgY29uc3QgeyByZXR1cm4gbV94LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclBy
b3h5KCkpOyB9CiAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHkoKSBjb25zdCB7IHJldHVybiBt
X3kuY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoLmN1cnJlbnRWYWx1ZShh
dHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC03MSw3ICs3MywxMiBAQCBwcm90ZWN0ZWQ6CiAK
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpOyB9CisgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CiAKICAgICBib29sIGlz
RmlsdGVyRWZmZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC03OSwx
MCArODYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpIG92ZXJyaWRlOwogICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
b25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGNvbnN0
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KLQogICAgIEF0dHJpYnV0ZU93
bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKLQogICAgIC8vIFNwZWM6
IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3
aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCiAgICAgU1ZHQW5pbWF0ZWRMZW5n
dGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoLCAiMCUiIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRml0VG9WaWV3Qm94LmgKaW5kZXggZjUxYTdlOWNhZGFjMDU2YzU4MjA0ZTVlMTNjNzBlN2Y3
ZDUxODdmZi4uNWFiYzVhMGU5YTNlZjFjNjAxMzlhZjU3MmYzMWIxNGExMWEwMDdjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaApAQCAtNDAsNiArNDAsOCBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBs
PFNWR0ZpdFRvVmlld0JveD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJp
YnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRml0VG9WaWV3Qm94PjsKKwogICAgIGNv
bnN0IEZsb2F0UmVjdCYgdmlld0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0JveC5jdXJyZW50
VmFsdWUobV9hdHRyaWJ1dGVPd25lclByb3h5KTsgfQogICAgIGNvbnN0IFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fcHJl
c2VydmVBc3BlY3RSYXRpby5jdXJyZW50VmFsdWUobV9hdHRyaWJ1dGVPd25lclByb3h5KTsgfQog
CkBAIC02MSw3ICs2MywxMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRml0VG9WaWV3
Qm94KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBBbmltYXRlZFByb3BlcnR5U3RhdGUgPSBQ
cm9wZXJ0eUlzUmVhZFdyaXRlKTsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7CisgICAgfQogCiAgICAgdm9pZCByZXNldCgpOwogICAgIGJvb2wgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAppbmRleCA4MmE0MzJhYmYyZjVjZTY5OGY5NzIx
OGMxNmNjNWZmMzA1NzU5NjdjLi43NTIxY2NhODBiZGQ5YWMxNWM0Yzg4MjgwNGY3NmU1MmQwYTE5
Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaApAQCAtMjQsNyArMjQsNiBAQAog
CiAjaWYgRU5BQkxFKFNWR19GT05UUykKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5o
IgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCkBAIC01Niw3ICs1
NSwxMSBAQCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRy
aWJ1dGVPd25lclByb3h5SW1wbDxTVkdGb250RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYg
YXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3du
ZXJQcm94eTsgfQogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeTxTVkdGb250RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAg
QXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAg
IFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmgKaW5kZXggMzA2ZTExNzBlZjkzNzhhNzc1YjBkZTQ1YjRiNTI0NzA5ZWM5MDgw
NS4uNzk5ZmM4MjNhYTkzMTU0NTc5MDFkZWI2ZDM1YzJiYTc1MzhiNTgzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTE5LDcgKzE5LDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKQEAgLTQ4LDEwICs0
NywxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIHN0YXRpYyBBdHRy
aWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0K
ICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2lu
ZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNjMs
NiArNjksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9h
dHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUg
bV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUg
bV95IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
IG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKaW5k
ZXggYmEzYWNjM2M2MmUyYWEyOTM5NDdmNmVjYWQyOTE5NzJkN2ZjYTg1Ny4uNTBlNDIyNzZiNmQ4
ZTRjYTc5MmVmM2UwY2RjOTlmNjAwOWZhMGI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgK
QEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRl
ZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAj
aW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAgLTM5LDggKzM4LDExIEBAIHByaXZh
dGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIHVz
aW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdH
RWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
PjsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJv
eHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR0Vs
ZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47
CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5h
bDsKIApAQCAtNDgsNiArNTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIGZpbmFsOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuaAppbmRleCA4MjRmZWZjNTBmYjI1
NzJjMWVmYmI5OWRhZjJjZGVhN2JjMjBmMDFmLi4zZDYyNTAxOTBhYjVlNjFiYTAyYzdlMzkwZGY0
ZjZmNzQ5YjBmMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5oCkBA
IC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0g
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQ+OwogICAgIHN0YXRpYyBhdXRvJiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5n
IFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR2VvbWV0cnlF
bGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQ+OworCiAgICAgYXV0byBwYXRoTGVuZ3RoQW5pbWF0
ZWQoKSB7IHJldHVybiBtX3BhdGhMZW5ndGguYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9CiAKIHByb3RlY3RlZDoKQEAgLTU1LDEwICs1NywxNCBAQCBwcm90ZWN0ZWQ6
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0dlb21ldHJ5RWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBh
dHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9CiAKKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1
dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclBy
b3h5OyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIEF0
dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBT
VkdBbmltYXRlZE51bWJlckF0dHJpYnV0ZSBtX3BhdGhMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2x5cGhSZWZFbGVtZW50LmgKaW5kZXggODgxMGQ1YjA5MjYyMGRjZGQzNGE5NzBjZDk1NGIx
ZjFhYTIzNjFmNy4uZmFjODAyOTM3NmI1YjRmOGI5MmFhMjk3OGM2MzhlYzQ3YjI4MmNjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaApAQCAtNDgsOCArNDgsMTEgQEAg
cHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbDxTVkdHbHlwaFJlZkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZT47CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQ
cm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQotICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIGZpbmFsOwogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTxTVkdHbHlwaFJlZkVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1VSSVJlZmVy
ZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGZsb2F0IG1feCB7IDAgfTsKQEAgLTU3LDYgKzYw
LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX2R4IHsgMCB9OwogICAgIGZsb2F0IG1fZHkgeyAw
IH07CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhp
cyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAppbmRleCBiNGMz
OTJiMzU0OTc5NjA0Yzk1MWU2ZTc5ZTBjZjc0Y2Q4MWQ2ODQ3Li45NGU1YjE0NjM4ODU4NjFiYjI4
YTc3YjcyNjdkNTUxOWM4OTEyMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5oCkBAIC0yMiw3ICsyMiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkdyYWRp
ZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
IgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKQEAgLTg4LDYgKzg3LDggQEAgcHVibGljOgogICAg
IHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxT
VkdHcmFkaWVudEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVn
aXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHR3JhZGllbnRFbGVtZW50LCBTVkdF
bGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+Owor
CiAgICAgU1ZHU3ByZWFkTWV0aG9kVHlwZSBzcHJlYWRNZXRob2QoKSBjb25zdCB7IHJldHVybiBt
X3NwcmVhZE1ldGhvZC5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQogICAg
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JhZGllbnRVbml0cy5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQog
ICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIGdyYWRpZW50VHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3du
ZXJQcm94eSgpKTsgfQpAQCAtOTksNyArMTAwLDExIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0K
KwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuaAppbmRleCAwNmVlNGIzMDc5MmI0ZmY5NjFiNjlmZjM5NjY0N2FjMzU3MmI4MmNj
Li4wMDk4YTgyZjZhZWQxMmJjYjk4ZTM4MGY3MDRjODUwYTBkN2I1YWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCkBAIC02NSw2ICs2NSw4IEBAIHB1YmxpYzoKIAog
ICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1w
bDxTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1Rlc3RzPjsKICAgICBzdGF0aWMg
YXV0byYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9
IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0VsZW1lbnQs
IFNWR1Rlc3RzPjsKIAogICAgIGNvbnN0IGF1dG8mIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNmb3JtLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAg
YXV0byB0cmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtLmFuaW1hdGVkUHJv
cGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQpAQCAtODEsOSArODMsMTIgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQotCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIC8v
IFVzZWQgYnkgPGFuaW1hdGVNb3Rpb24+CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFmZmluZVRyYW5z
Zm9ybT4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmgKaW5kZXggNTIzYmU2MDEyMTc1MWU5NmE5ZWI2OTQ0MGE3M2EzYzBmOTBhMjA2OS4uMTcy
YmQ3MWIwYjExZTRmMzJhY2FmZDQ3OGNlOTMwYjk5MzRhZWFiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdJbWFnZUVsZW1lbnQuaApAQCAtNTUsMTAgKzU1LDE3IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
dXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNW
R0ltYWdlRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5
OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVy
biBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9
CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdB
dHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lz
dHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ltYWdlRWxlbWVudCwgU1ZHR3JhcGhp
Y3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZlcmVuY2U+
OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNzQsNiArODEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpIGZpbmFsOwogCiAgICAgQXR0cmlidXRl
T3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0IH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV93aWR0aCB7IExlbmd0aE1vZGVXaWR0aCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuaAppbmRleCBmMWViYzRlY2JmNzVhNDUzMTNkNDM2ZGU1ZjhhODM5ZWM3
YjY5YWYxLi44MDU0ZjMwNmM4MzYyNDc2N2VkY2JjOTEwNTcxNzAyZWFkYTRkNjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaApAQCAtNDgsMTAgKzQ4LDE3IEBAIHByaXZhdGU6CiAK
ICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUlt
cGw8U1ZHTGluZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJl
Z2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJp
YnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTGluZUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGZpbmFsOwogCkBAIC02MCw2ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlIG1feDEgeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3kxIHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1feDIgeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAppbmRleCA5ZjY3MGM5ZGFhNDgyODE5OWExZjUyYjM0
YTJmNzk2ZGU2YWUxMjc2Li4yMjQ4ZDVjZGM0ZDZhMDE5ODEzYWM3ZDZlODBhZWIzNGVkOGNlNzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCkBA
IC01MSwxMCArNTEsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJv
eHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFNWR0dyYWRpZW50RWxlbWVudD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0
dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0
dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdH
cmFkaWVudEVsZW1lbnQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwor
ICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApAQCAtNjMsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBt
X2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZSBtX3gxIHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUgbV95MSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3gyIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuaAppbmRleCAzOWM5ZWEwNDUxODIwOGVkOTIzNGEwMjRlZTA3ODQwNzJjMzA4
Y2VkLi42ZWM4YmQ4YjMwOTUzN2Y0MzdhOGJkMjYwYmZkZGFmN2NlNjVkOTc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCkBAIC0yMCw3ICsyMCw2IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDYsOCArNDUsMTEgQEAgcHJpdmF0ZToKICAgICBT
VkdNUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB1
c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZH
TVBhdGhFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBT
VkdVUklSZWZlcmVuY2U+OwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0
cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQ
cm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdNUGF0aEVsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3Ry
eSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdp
c3RyeTsgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKIApAQCAtNjIsNiArNjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5UGFyZW50T2ZQYXRoQ2hhbmdlKENvbnRhaW5lck5vZGUqKTsKIAog
ICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsK
KyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
aAppbmRleCAzN2MxODBhMDFmYTRkMjNiOGQ0MmY1ZGJhNzVhMjk1ZTI2NTU1Njg0Li5iODllMDlj
MzYyZmQwNDc4Y2Q3ZmI3MWJkODI2YWNkYzJlNTVlYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
YXJrZXJFbGVtZW50LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIgpA
QCAtNzksMTEgKzc4LDE4IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclBy
b3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHTWFya2VyRWxlbWVudCwgU1ZHRWxl
bWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKICAg
ICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQotICAgIHN0YXRpYyBib29sIGlzQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAg
Y29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJv
cGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdNYXJrZXJFbGVtZW50
LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdC
b3g+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBi
b29sIGlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUp
IHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Cisg
ICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwpAQCAtMTI2LDYgKzEzMiw3IEBAIHByaXZh
dGU6CiAKICAgICB1c2luZyBTVkdBbmltYXRlZEN1c3RvbUFuZ2xlQXR0cmlidXRlQWNjZXNzb3Ig
PSBTVkdBbmltYXRlZFBhaXJBdHRyaWJ1dGVBY2Nlc3NvcjxTVkdNYXJrZXJFbGVtZW50LCBTVkdB
bmltYXRlZEFuZ2xlQXR0cmlidXRlLCBBbmltYXRlZEFuZ2xlLCBTVkdBbmltYXRlZEN1c3RvbU9y
aWVudFR5cGVBdHRyaWJ1dGUsIEFuaW1hdGVkRW51bWVyYXRpb24+OwogCisgICAgUHJvcGVydHlS
ZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIG1fcmVmWCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fcmVmWSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZSBtX21hcmtlcldpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMyIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKaW5kZXggMzBiZTc3ZTgwYWU0OGEwYWJm
YmMyZjRjZGM2MzIzYTBlYmRkOGFiOC4uOWI5M2RkNGM0YzZhZTYwM2QxOWQ5NjAxODljMmQyOTUz
MmRjMjZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKQEAgLTIwLDcgKzIwLDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRM
ZW5ndGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCkBAIC01NSwxMSArNTQsMTggQEAgcHJp
dmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25l
clByb3h5SW1wbDxTVkdNYXNrRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgU1ZHVGVzdHM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpB
dHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBB
dHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBh
dHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25l
clByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25l
clJlZ2lzdHJ5PFNWR01hc2tFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBTVkdUZXN0cz47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsg
fQorCisgICAgc3RhdGljIGJvb2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CisgICAgc3RhdGljIGJv
b2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogICAgIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgZmluYWw7CkBAIC03MSw2ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93
bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3ggeyBMZW5n
dGhNb2RlV2lkdGgsICItMTAlIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
eSB7IExlbmd0aE1vZGVIZWlnaHQsICItMTAlIiB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuaAppbmRleCA5ODFkZTg2NTFjMWU2YzZjMzY5NTg2MTQxN2JkNWJlNmZk
YzlkZjY3Li5mODAwMDdlMjgwNTI4ZTk4OGM4ZTc1MjYwYjcyOGQxZjFiNGIxYzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaApAQCAtMjIsNyArMjIsNiBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJQYXRoLmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGgu
aCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0xMTEsMTAg
KzExMCwxNyBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1BhdGhFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1l
bnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIHN0YXRpYyBhdXRvJiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckF0dHJpYnV0ZXMoKTsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJv
eHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVn
aXN0cnk8U1ZHUGF0aEVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorICAg
IAorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5h
bDsKIApAQCAtMTU2LDYgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgU1ZHQW5pbWF0ZWRD
dXN0b21QYXRoU2VnTGlzdEF0dHJpYnV0ZUFjY2Vzc29yID0gU1ZHQW5pbWF0ZWRBdHRyaWJ1dGVB
Y2Nlc3NvcjxTVkdQYXRoRWxlbWVudCwgU1ZHQW5pbWF0ZWRDdXN0b21QYXRoU2VnTGlzdEF0dHJp
YnV0ZSwgQW5pbWF0ZWRQYXRoPjsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1
dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRDdXN0b21QYXRoU2VnTGlzdEF0dHJp
YnV0ZSBtX3BhdGhTZWdMaXN0IHsgKnRoaXMgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmgKaW5kZXggMDNhNjA2ZjBhMDU4MjIyMmYyYWY5MTA3NTQwODEwMTA4ZDk2
MzdhOC4uMTlkOWI5MWQ3NWYxOGMwZjE3YThiYTRiY2U2ZDlmYjhmYjdlMGIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCIKQEAgLTY5LDExICs2OCwx
OCBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJp
YnV0ZU93bmVyUHJveHlJbXBsPFNWR1BhdHRlcm5FbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3gsIFNWR1Rlc3RzLCBTVkdVUklS
ZWZlcmVuY2U+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdp
c3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0gICAgc3RhdGljIGJv
b2wgaXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25l
clByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisK
KyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBTVkdGaXRUb1ZpZXdCb3gsIFNWR1Rlc3RzLCBTVkdVUklSZWZlcmVuY2U+OworICAgIGNvbnN0
IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1
cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsgfQorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IGZpbmFsOwpAQCAtODUsNiArOTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEF0dHJpYnV0
ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3RoTW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRM
ZW5ndGhBdHRyaWJ1dGUgbV95IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVk
TGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBMZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BvbHlFbGVtZW50LmgKaW5kZXggMDMyMGMwNDc4MDhjYmEzM2Y4Y2NlMzRjZjdlNDBkMzNk
NjQ3YmJhMi4uNWM0OWY1NjQ5NGE4OWIzMzZhMmI5ODhmNmMxMDQwZGYyNmIzYjZmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKQEAgLTQ0LDEwICs0NCwxNyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbDxTVkdQb2x5RWxlbWVudCwgU1ZHR2VvbWV0cnlFbGVtZW50LCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6
QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRl
T3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQog
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdQb2x5RWxlbWVudCwgU1ZHR2VvbWV0cnlF
bGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQcm9w
ZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
cm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4g
QXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0K
KwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOyAKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCkBAIC01NSw2ICs2Miw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0
aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwogICAgIFNWR0FuaW1hdGVkUG9pbnRMaXN0QXR0cmlidXRlIG1fcG9pbnRzOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCmluZGV4IGY5OTFm
M2QwMmQ5NWI2YjdlMjg4ZWQwYjYzZDdjZTA5ZWI5MjY2ZTAuLmI3MmM3MTU5Nzk3ZjNiZDBhNTk4
NjZkYWFhMjJmZTFkYjFhMmFkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmgKQEAgLTU2LDggKzU2LDExIEBAIHByaXZhdGU6CiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1JhZGlh
bEdyYWRpZW50RWxlbWVudCwgU1ZHR3JhZGllbnRFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmli
dXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogICAgIHN0
YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRl
T3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXR0cmlidXRlT3duZXJQcm94eTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkg
PSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdH
cmFkaWVudEVsZW1lbnQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAgLTY2LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEF0
dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5p
bWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV9jeCB7IExlbmd0aE1vZGVXaWR0aCwgIjUwJSIgfTsKICAg
ICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX2N5IHsgTGVuZ3RoTW9kZUhlaWdodCwgIjUw
JSIgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBtX3IgeyBMZW5ndGhNb2RlT3Ro
ZXIsICI1MCUiIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCmluZGV4IGU0Y2RhYjFh
ZmZhNTJjOWY1NDQ0YjM1YjMzN2NkMzZlMDZlMDFmMTUuLjU4Y2UxZDkwMzViNWRlYmZjYWRkZjRi
OTUzY2MyNzc1ODlmMzU1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCkBAIC0y
MSw3ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29s
ZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR2VvbWV0cnlFbGVtZW50Lmgi
CkBAIC01MywxMCArNTIsMTcgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVy
UHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdSZWN0RWxlbWVudCwgU1ZHR2Vv
bWV0cnlFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKICAgICBzdGF0aWMg
YXV0byYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojph
dHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1
dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR1JlY3RFbGVtZW50LCBTVkdHZW9tZXRyeUVsZW1lbnQsIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkm
IHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0
cnk7IH0KKworICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25l
clByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBmaW5hbDsKIApAQCAtNjYsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
eCB7IExlbmd0aE1vZGVXaWR0aCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1f
eSB7IExlbmd0aE1vZGVIZWlnaHQgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJpYnV0ZSBt
X3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaApp
bmRleCA5YmNmMjg2ODU2NDhiNTM4MTZiMjI1N2NkZGMwNDJmNGM3MjBhODcxLi4xOWRjNWUwMDhj
NDk5YzMxMDU1NWZmMjNlMmY1ZDUzYzQxMTU0ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmgKQEAgLTIyLDcgKzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRSZWN0LmgiCkBAIC0xMzUsMTIgKzEzNCwxOSBAQCBw
cml2YXRlOgogICAgIFNWR1NWR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAgICAgdmlydHVhbCB+U1ZHU1ZHRWxlbWVudCgpOwogCi0gICAgdXNpbmcgQXR0cmlidXRl
T3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1NWR0VsZW1lbnQsIFNW
R0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9W
aWV3Qm94LCBTVkdab29tQW5kUGFuPjsKKyAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0g
U1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHU1ZHRWxlbWVudCwgU1ZHR3JhcGhpY3NFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OwogICAg
IHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRl
UmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3Ry
eSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRy
aWJ1dGVzKCk7Ci0KICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9
CisgICAgCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdTVkdFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIFNWR0ZpdFRvVmlld0JveD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdp
c3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlS
ZWdpc3RyeTsgfQorICAgIAorICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRy
aWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTE3MCw2ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2N1cnJlbnRWaWV3RnJhZ21lbnRJZGVudGlmaWVyOwogCiAgICAgQXR0cmlidXRlT3duZXJQ
cm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3ggeyBMZW5ndGhNb2RlV2lkdGggfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3kgeyBMZW5ndGhNb2RlSGVpZ2h0fTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZSBtX3dpZHRoIHsgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSJfcyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKaW5kZXggZjhjZWQyMmEzMjcyODFiMDExODAzNWE5Yjcx
ODA3ZjE1YTgxNWQyOC4uNjc2MGNjZDMxOTJmNzk3ZWFiZWU0ZmVmMDUwNWY3OTlhNGRjMDBmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDMsOCArNDIsMTEgQEAgcHJp
dmF0ZToKICAgICBTVkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIGJvb2wgd2FzSW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCk7CiAKICAg
ICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8
U1ZHU2NyaXB0RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgU1ZHVVJJUmVmZXJlbmNlPjsKLQogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkm
IGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93
bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93
bmVyUmVnaXN0cnk8U1ZHU2NyaXB0RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgU1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJl
Z2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0
eVJlZ2lzdHJ5OyB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwogCkBAIC04NSw2ICs4Nyw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25l
clByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgVGltZXIgbV9zdmdMb2FkRXZlbnRUaW1lcjsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKaW5kZXggZDg0M2I3NmFmZWRhM2ZhNTA3MDNmYjE3Zjc2
ODZhNjJjMDEwYTc5Zi4uZmQzOTlhYmFkZTI4OWU2NWY1NzZiMDljYzZiNTEyN2Y5MGNlZjAzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKQEAgLTQxLDEwICs0MSwxNyBAQCBwcml2
YXRlOgogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVy
UHJveHlJbXBsPFNWR1N0b3BFbGVtZW50LCBTVkdFbGVtZW50PjsKICAgICBzdGF0aWMgQXR0cmli
dXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyBy
ZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0
YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
aWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAg
ICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdTdG9wRWxlbWVu
dCwgU1ZHRWxlbWVudD47CisgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlS
ZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQorCisg
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICB9CisKICAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKICAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGZpbmFsOwog
CkBAIC01NCw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogICAgIFNWR0FuaW1hdGVkTnVtYmVyQXR0cmlidXRlIG1f
b2Zmc2V0IHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
cmluZ0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgKaW5kZXggN2Zl
N2YwMGZjNTJhNThiY2QwMDFmMmZhYmM1YjJmYTM4YTM3ZWU4NS4uZWQ3ZWE0NDk2ODVjMTExMzkw
OTNmNThjNzNkNWJlOWZiMDI1YzE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0cmluZ0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDMzICsyNSw2MyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIK
LSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRp
bGl0aWVzLmgiCisjaW5jbHVkZSAiU1ZHUHJpbWl0aXZlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNWR1N0cmluZ0xpc3QgZmluYWwgOiBwdWJsaWMgU1ZHU3RhdGljTGlz
dFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdMaXN0VmFsdWVzPiB7CitjbGFzcyBTVkdTdHJpbmdM
aXN0IGZpbmFsIDogcHVibGljIFNWR1ByaW1pdGl2ZUxpc3Q8U3RyaW5nPiB7CisgICAgdXNpbmcg
QmFzZSA9IFNWR1ByaW1pdGl2ZUxpc3Q8U3RyaW5nPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOwor
ICAgIHVzaW5nIEJhc2U6Om1faXRlbXM7CisKIHB1YmxpYzoKLSAgICB1c2luZyBBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3Ry
aW5nTGlzdFZhbHVlcz47Ci0gICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKKyAgICBzdGF0aWMgUmVmPFNWR1N0
cmluZ0xpc3Q+IGNyZWF0ZShTVkdQcm9wZXJ0eU93bmVyKiBvd25lcikKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1N0cmluZ0xpc3Qob3duZXIpKTsKKyAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xpc3Q+IGNyZWF0ZShTVkdFbGVtZW50JiBjb250ZXh0RWxl
bWVudCwgU1ZHU3RyaW5nTGlzdFZhbHVlcyYgdmFsdWVzKQorICAgIHZvaWQgcmVzZXQoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdT
dHJpbmdMaXN0KCZjb250ZXh0RWxlbWVudCwgdmFsdWVzKSk7CisgICAgICAgIHBhcnNlKHN0cmlu
ZywgJyAnKTsKKworICAgICAgICAvLyBBZGQgZW1wdHkgc3RyaW5nLCBpZiBsaXN0IGlzIGVtcHR5
LgorICAgICAgICBpZiAobV9pdGVtcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2l0ZW1zLmFw
cGVuZChlbXB0eVN0cmluZygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xp
c3Q+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYmLCBTVkdQcm9wZXJ0eVJvbGUs
IFNWR1N0cmluZ0xpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYpCisgICAgYm9v
bCBwYXJzZShjb25zdCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKICAgICB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGlzLiBJdCdzIG9ubHkgbmVlZGVk
IHRvIGtlZXAgV2luZG93cyBjb21waWxpbmcuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdTdHJpbmdMaXN0KG51bGxwdHIsIHZh
bHVlcykpOworICAgICAgICBjbGVhckl0ZW1zKCk7CisKKyAgICAgICAgYXV0byB1cGNvbnZlcnRl
ZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGRhdGEpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwor
ICAgICAgICBjb25zdCBVQ2hhciogcHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgICAg
ICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgZGF0YS5sZW5ndGgoKTsKKyAgICAgICAgd2hpbGUg
KHB0ciA8IGVuZCkgeworICAgICAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gcHRyOworICAg
ICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAqcHRyICE9IGRlbGltaXRlciAmJiAhaXNTVkdT
cGFjZSgqcHRyKSkKKyAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIGlmIChwdHIg
PT0gc3RhcnQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtX2l0ZW1zLmFw
cGVuZChTdHJpbmcoc3RhcnQsIHB0ciAtIHN0YXJ0KSk7CisgICAgICAgICAgICBza2lwT3B0aW9u
YWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIsIGVuZCwgZGVsaW1pdGVyKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBwdHIgPT0gZW5kOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBTVkdT
dHJpbmdMaXN0KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBTVkdTdHJpbmdMaXN0VmFsdWVz
JiB2YWx1ZXMpCi0gICAgICAgIDogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJp
bmdMaXN0VmFsdWVzPihjb250ZXh0RWxlbWVudCwgdmFsdWVzKQorICAgIFN0cmluZyB2YWx1ZUFz
U3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKKworICAgICAgICBmb3IgKGF1dG8gc3RyaW5nIDogbV9pdGVtcykgeworICAgICAgICAg
ICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKKworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyaW5nKTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzZmY4OThhOTEyYjYyMDE4MGVkMzM2ZDEzODdkZWFiYjUzN2Q5NDc4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIKLQotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNs
dWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVz
Ojpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpCi17Ci0gICAgY29udGV4
dEVsZW1lbnQuaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKLSAgICBjb250ZXh0RWxlbWVudC5z
dmdBdHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRlTmFtZSk7Ci19Ci0KLXZvaWQgU1ZHU3RyaW5n
TGlzdFZhbHVlczo6cmVzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgcGFyc2Uoc3Ry
aW5nLCAnICcpOwotCi0gICAgLy8gQWRkIGVtcHR5IHN0cmluZywgaWYgbGlzdCBpcyBlbXB0eS4K
LSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICBhcHBlbmQoZW1wdHlTdHJpbmcoKSk7Ci19Ci0K
LXZvaWQgU1ZHU3RyaW5nTGlzdFZhbHVlczo6cGFyc2UoY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hh
ciBkZWxpbWl0ZXIpCi17Ci0gICAgLy8gVE9ETyA6IG1vcmUgZXJyb3IgY2hlY2tpbmcvcmVwb3J0
aW5nCi0gICAgY2xlYXIoKTsKLQotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3Ry
aW5nVmlldyhkYXRhKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciog
cHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIg
KyBkYXRhLmxlbmd0aCgpOwotICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKLSAgICAgICAgY29uc3Qg
VUNoYXIqIHN0YXJ0ID0gcHRyOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICpwdHIgIT0g
ZGVsaW1pdGVyICYmICFpc1NWR1NwYWNlKCpwdHIpKQotICAgICAgICAgICAgcHRyKys7Ci0gICAg
ICAgIGlmIChwdHIgPT0gc3RhcnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgYXBwZW5k
KFN0cmluZyhzdGFydCwgcHRyIC0gc3RhcnQpKTsKLSAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzT3JEZWxpbWl0ZXIocHRyLCBlbmQsIGRlbGltaXRlcik7Ci0gICAgfQotfQotCi1TdHJpbmcg
U1ZHU3RyaW5nTGlzdFZhbHVlczo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChpID4g
MCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoYXQoaSkpOwotICAgIH0KLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmZjlhMjc0MjIxOTAwMTBhMGNjYWJkZWEzNTRhMzM1ODZjZTA5
MDU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKLSNpbmNsdWRlICJTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5o
IgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNW
R1N0cmluZ0xpc3Q7Ci1jbGFzcyBTVkdTdHJpbmdMaXN0VmFsdWVzOwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiAKLWNsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKLQotdXNpbmcgU1ZHU3RyaW5nTGlz
dFZhbHVlc0F0dHJpYnV0ZSA9IFNWR1Byb3BlcnR5QXR0cmlidXRlPFNWR1N0cmluZ0xpc3RWYWx1
ZXM+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci11c2luZyBTVkdTdHJpbmdMaXN0
VmFsdWVzQXR0cmlidXRlQWNjZXNzb3IgPSBTVkdQcm9wZXJ0eUF0dHJpYnV0ZUFjY2Vzc29yPE93
bmVyVHlwZSwgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZT47Ci0KLWNsYXNzIFNWR1N0cmlu
Z0xpc3RWYWx1ZXMgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFN0cmluZz4gewotcHVibGljOgotICAg
IFNWR1N0cmluZ0xpc3RWYWx1ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
LSAgICAgICAgOiBtX2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdm9pZCByZXNldChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHBhcnNlKGNvbnN0IFN0
cmluZyYsIFVDaGFyIGRlbGltaXRlciA9ICcsJyk7Ci0KLSAgICAvLyBPbmx5IHVzZWQgYnkgU1ZH
U3RyaW5nTGlzdC4KLSAgICB2b2lkIGNvbW1pdENoYW5nZShTVkdFbGVtZW50JiBjb250ZXh0RWxl
bWVudCk7Ci0KLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwotCi1wcml2YXRlOgot
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRlTmFtZTsKLX07Ci0KLXRlbXBsYXRl
PD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1N0cmluZ0xpc3RWYWx1ZXM+IHsKLSAgICBz
dGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1N0cmluZ0xpc3RWYWx1ZXMmIGxpc3QpIHsg
cmV0dXJuIGxpc3QudmFsdWVBc1N0cmluZygpOyB9Ci0KLSAgICB1c2luZyBMaXN0SXRlbVR5cGUg
PSBTdHJpbmc7Ci0gICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2Zm
PFN0cmluZz47Ci0gICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR1N0cmluZ0xpc3Q7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVs
ZW1lbnQuaAppbmRleCAxZTQ0NjY3ZGI0ZTJjMGY1NDRkZTJlYjMxODEzYTk4ZDE4ZTJmZmU1Li5j
M2QzMzJjZDg1ZWY0MThlOWY4YmY2MjMyMTAzODc4YjM4ODQ0MDI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTd2l0Y2hFbGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAKQEAg
LTM4LDEyICszNywxNiBAQCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkg
PSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdTd2l0Y2hFbGVtZW50LCBTVkdHcmFwaGlj
c0VsZW1lbnQsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ+OwogICAgIGNvbnN0IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHU3dpdGNoRWxlbWVudCwgU1ZHR3JhcGhp
Y3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKKyAgICBjb25zdCBTVkdQ
cm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IGZpbmFsOwogICAgIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0
cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKaW5kZXggZDc2ODNlMTkyMzg1ZmVlODQ4NmYw
OTliZGE2Nzc1MGIyNTA5ZWYyZC4uZTFmMjhmMTRjODhhNDY1NWVjNGM0ZmFmZTcyYjRiMWI0NTg1
OTFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtNDEsNiArNDAsOSBA
QCBwcml2YXRlOgogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVP
d25lclByb3h5SW1wbDxTVkdTeW1ib2xFbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OwogICAgIGNvbnN0IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHU3ltYm9sRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKKyAgICBjb25zdCBT
VkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CkBAIC00OCw2ICs1MCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94eSB7
ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhp
cyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuaAppbmRleCBiYTE3Y2NhYWU3ZTAxYWFlMDIwYTczZDIxZDJiYzg0YTRhZDcxYjJiLi4w
ZWIzZDZhMDZiNWYyZTJkNzVmYTk4Y2E1MmU2ODY3YWI3MjcwNDg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuaApAQCAtNDAsOCArNDAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IH5TVkdUUmVmRWxlbWVudCgpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNW
R0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1RSZWZFbGVtZW50LCBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LCBTVkdVUklSZWZlcmVuY2U+OwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3du
ZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0
cmlidXRlT3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1By
b3BlcnR5T3duZXJSZWdpc3RyeTxTVkdUUmVmRWxlbWVudCwgU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudCwgU1ZHVVJJUmVmZXJlbmNlPjsKKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKQEAg
LTU5LDYgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkg
b3ZlcnJpZGU7CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94
eSB7ICp0aGlzIH07CisgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAq
dGhpcyB9OwogICAgIFJlZjxTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcj4gbV90YXJnZXRMaXN0
ZW5lcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCmluZGV4IDcxMzRjZTdiOGU2ZWZjMTZl
OWJkZjQ5ZjFlNGNkZTQyMTRlMTFjNDEuLmY0NGY5MGUzZmYxOTc4MTM0M2E2M2U1OGUzOTdlY2M4
OWU2MjYyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcApAQCAtMTA5LDE4ICsxMDksMTYgQEAg
c3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBz
dXBwb3J0ZWRTVkdGZWF0dXJlcygpCiAKIFNWR1Rlc3RzOjpTVkdUZXN0cyhTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCkKICAgICA6IG1fY29udGV4dEVsZW1lbnQoKmNvbnRleHRFbGVtZW50KQor
ICAgICwgbV9yZXF1aXJlZEZlYXR1cmVzKFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShjb250ZXh0RWxl
bWVudCkpCisgICAgLCBtX3JlcXVpcmVkRXh0ZW5zaW9ucyhTVkdTdHJpbmdMaXN0OjpjcmVhdGUo
Y29udGV4dEVsZW1lbnQpKQorICAgICwgbV9zeXN0ZW1MYW5ndWFnZShTVkdTdHJpbmdMaXN0Ojpj
cmVhdGUoY29udGV4dEVsZW1lbnQpKQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotfQot
Ci12b2lkIFNWR1Rlc3RzOjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lz
dHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVz
OjpyZXF1aXJlZEZlYXR1cmVzQXR0ciwgJlNWR1Rlc3RzOjptX3JlcXVpcmVkRmVhdHVyZXM+KCk7
Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5z
aW9uc0F0dHIsICZTVkdUZXN0czo6bV9yZXF1aXJlZEV4dGVuc2lvbnM+KCk7Ci0gICAgcmVnaXN0
cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0ciwgJlNWR1Rl
c3RzOjptX3N5c3RlbUxhbmd1YWdlPigpOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0
ciwgJlNWR1Rlc3RzOjptX3JlcXVpcmVkRmVhdHVyZXM+KCk7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIs
ICZTVkdUZXN0czo6bV9yZXF1aXJlZEV4dGVuc2lvbnM+KCk7CisgICAgICAgIFByb3BlcnR5UmVn
aXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0ciwgJlNW
R1Rlc3RzOjptX3N5c3RlbUxhbmd1YWdlPigpOworICAgIH0pOwogfQogCiBTVkdUZXN0czo6QXR0
cmlidXRlUmVnaXN0cnkmIFNWR1Rlc3RzOjphdHRyaWJ1dGVSZWdpc3RyeSgpCkBAIC0xMzAsNyAr
MTI4LDcgQEAgU1ZHVGVzdHM6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBTVkdUZXN0czo6YXR0cmlidXRl
UmVnaXN0cnkoKQogCiBib29sIFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJv
eHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CisgICAgcmV0dXJuIFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7CiB9CiAKIGJvb2wgU1ZH
VGVzdHM6Omhhc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKQEAgLTE0NSwxNSAr
MTQzLDE1IEBAIGJvb2wgU1ZHVGVzdHM6Omhhc0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbikKIAogYm9vbCBTVkdUZXN0czo6aXNWYWxpZCgpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRv
JiBmZWF0dXJlIDogbV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlKCkpIHsKKyAgICBmb3IgKGF1dG8m
IGZlYXR1cmUgOiBtX3JlcXVpcmVkRmVhdHVyZXMtPml0ZW1zKCkpIHsKICAgICAgICAgaWYgKGZl
YXR1cmUuaXNFbXB0eSgpIHx8ICFzdXBwb3J0ZWRTVkdGZWF0dXJlcygpLmNvbnRhaW5zKGZlYXR1
cmUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBmb3IgKGF1dG8mIGxh
bmd1YWdlIDogbV9zeXN0ZW1MYW5ndWFnZS52YWx1ZSgpKSB7CisgICAgZm9yIChhdXRvJiBsYW5n
dWFnZSA6IG1fc3lzdGVtTGFuZ3VhZ2UtPml0ZW1zKCkpIHsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IGRlZmF1bHRMYW5ndWFnZSgpLnN1YnN0cmluZygwLCAyKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3JlcXVpcmVkRXh0
ZW5zaW9ucy52YWx1ZSgpKSB7CisgICAgZm9yIChhdXRvJiBleHRlbnNpb24gOiBtX3JlcXVpcmVk
RXh0ZW5zaW9ucy0+aXRlbXMoKSkgewogICAgICAgICBpZiAoIWhhc0V4dGVuc2lvbihleHRlbnNp
b24pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE2MywxMSArMTYxLDEx
IEBAIGJvb2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogdm9pZCBTVkdUZXN0czo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSByZXF1aXJlZEZlYXR1
cmVzQXR0cikKLSAgICAgICAgbV9yZXF1aXJlZEZlYXR1cmVzLnZhbHVlKCkucmVzZXQodmFsdWUp
OworICAgICAgICBtX3JlcXVpcmVkRmVhdHVyZXMtPnJlc2V0KHZhbHVlKTsKICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSByZXF1aXJlZEV4dGVuc2lvbnNBdHRyKQotICAgICAgICBtX3JlcXVpcmVk
RXh0ZW5zaW9ucy52YWx1ZSgpLnJlc2V0KHZhbHVlKTsKKyAgICAgICAgbV9yZXF1aXJlZEV4dGVu
c2lvbnMtPnJlc2V0KHZhbHVlKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBzeXN0ZW1MYW5n
dWFnZUF0dHIpCi0gICAgICAgIG1fc3lzdGVtTGFuZ3VhZ2UudmFsdWUoKS5yZXNldCh2YWx1ZSk7
CisgICAgICAgIG1fc3lzdGVtTGFuZ3VhZ2UtPnJlc2V0KHZhbHVlKTsKIH0KIAogdm9pZCBTVkdU
ZXN0czo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
QEAgLTE4NywyNCArMTg1LDYgQEAgdm9pZCBTVkdUZXN0czo6YWRkU3VwcG9ydGVkQXR0cmlidXRl
cyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+JiBzdXBwb3J0ZWRBdHRyaWJ1dGUKICAgICBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmFkZChzeXN0ZW1MYW5ndWFnZUF0dHIpOwogfQogCi1SZWY8U1ZHU3RyaW5n
TGlzdD4gU1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMoKQotewotICAgIG1fcmVxdWlyZWRGZWF0
dXJlcy5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICByZXR1cm4gU1ZHU3RyaW5nTGlz
dDo6Y3JlYXRlKG1fY29udGV4dEVsZW1lbnQsIG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZSgpKTsK
LX0KLQotUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR1Rlc3RzOjpyZXF1aXJlZEV4dGVuc2lvbnMoKQot
ewotICAgIG1fcmVxdWlyZWRFeHRlbnNpb25zLnNldFNob3VsZFN5bmNocm9uaXplKHRydWUpOwot
ICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUobV9jb250ZXh0RWxlbWVudCwgbV9yZXF1
aXJlZEV4dGVuc2lvbnMudmFsdWUoKSk7Ci19Ci0KLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdUZXN0
czo6c3lzdGVtTGFuZ3VhZ2UoKQotewotICAgIG1fc3lzdGVtTGFuZ3VhZ2Uuc2V0U2hvdWxkU3lu
Y2hyb25pemUodHJ1ZSk7Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZShtX2NvbnRl
eHRFbGVtZW50LCBtX3N5c3RlbUxhbmd1YWdlLnZhbHVlKCkpOwotfQotCiBib29sIFNWR1Rlc3Rz
OjpoYXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgaGVy
ZSBvbmx5IHRvIGJlIGV4cG9zZWQgaW4gdGhlIE9iamVjdGl2ZS1DIGFuZCBHT2JqZWN0IGJpbmRp
bmdzIGZvciBib3RoIE5vZGUgYW5kIERPTUltcGxlbWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMu
aAppbmRleCA3OWRkZTliNjBhNDg5N2E1MWFjYjg4MzA5ZTkxYzk0YWQ3ZWZlNmZkLi4xNjJlYzEy
NTg2MDEzNGNkZDM4ZTcyM2U2MTJhMDU1ZTIwOWZkZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGVzdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMTAgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIxLDggKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJT
VkdBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVzLmgiCisjaW5jbHVk
ZSAiU1ZHU3RyaW5nTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDYgKzM0
LDkgQEAgY2xhc3MgU1ZHQXR0cmlidXRlUmVnaXN0cnk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBPd25l
clR5cGUsIHR5cGVuYW1lLi4uIEJhc2VUeXBlcz4KIGNsYXNzIFNWR0F0dHJpYnV0ZU93bmVyUHJv
eHlJbXBsOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGUsIHR5cGVuYW1lLi4uIEJhc2VU
eXBlcz4KK2NsYXNzIFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTsKKwogY2xhc3MgU1ZHVGVzdHMg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR1Rlc3RzKTsKIHB1YmxpYzoKQEAgLTQzLDcg
KzQ1LDEwIEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEF0dHJpYnV0ZVJlZ2lzdHJ5ID0gU1ZHQXR0
cmlidXRlUmVnaXN0cnk8U1ZHVGVzdHM+OwogICAgIHN0YXRpYyBBdHRyaWJ1dGVSZWdpc3RyeSYg
YXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOworCisgICAgdXNpbmcgUHJvcGVydHlS
ZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdUZXN0cz47CisKKyAgICBzdGF0
aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CkBAIC01MywyMSArNTgsMjAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGhhc0ZlYXR1cmVGb3JMZWdhY3lCaW5kaW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmUsIGNv
bnN0IFN0cmluZyYgdmVyc2lvbik7CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQg
ZnJvbSBET00gdGhyb3VnaCB0aGUgc3VwZXIgY2xhc3Nlcy4KLSAgICBSZWY8U1ZHU3RyaW5nTGlz
dD4gcmVxdWlyZWRGZWF0dXJlcygpOwotICAgIFJlZjxTVkdTdHJpbmdMaXN0PiByZXF1aXJlZEV4
dGVuc2lvbnMoKTsKLSAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gc3lzdGVtTGFuZ3VhZ2UoKTsKKyAg
ICBTVkdTdHJpbmdMaXN0JiByZXF1aXJlZEZlYXR1cmVzKCkgeyByZXR1cm4gbV9yZXF1aXJlZEZl
YXR1cmVzOyB9CisgICAgU1ZHU3RyaW5nTGlzdCYgcmVxdWlyZWRFeHRlbnNpb25zKCkgeyByZXR1
cm4gbV9yZXF1aXJlZEV4dGVuc2lvbnM7IH0KKyAgICBTVkdTdHJpbmdMaXN0JiBzeXN0ZW1MYW5n
dWFnZSgpIHsgcmV0dXJuIG1fc3lzdGVtTGFuZ3VhZ2U7IH0KIAogcHJvdGVjdGVkOgogICAgIFNW
R1Rlc3RzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKIAogcHJpdmF0ZToKICAgICB1c2lu
ZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZHVGVz
dHM+OwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogCiAgICAgU1ZHRWxl
bWVudCYgbV9jb250ZXh0RWxlbWVudDsKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRl
IG1fcmVxdWlyZWRGZWF0dXJlcyB7IFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0ciB9Owot
ICAgIFNWR1N0cmluZ0xpc3RWYWx1ZXNBdHRyaWJ1dGUgbV9yZXF1aXJlZEV4dGVuc2lvbnMgeyBT
VkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0ciB9OwotICAgIFNWR1N0cmluZ0xpc3RWYWx1
ZXNBdHRyaWJ1dGUgbV9zeXN0ZW1MYW5ndWFnZSB7IFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0
dHIgfTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEZlYXR1cmVzOworICAgIFJl
ZjxTVkdTdHJpbmdMaXN0PiBtX3JlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBSZWY8U1ZHU3RyaW5n
TGlzdD4gbV9zeXN0ZW1MYW5ndWFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuaWRsCmluZGV4IGE0NGYwNzNlOTQ0NzUxY2MzYTc2NzBmZjg1ODk5Zjlm
OGM3ZTQ0ZjUuLjNiN2E5Yzc4ODA5NTgyYjhmN2Q1MTNkNzg1NGZiMGMwMWQxMGMyMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1Rlc3RzLmlkbApAQCAtMjgsOSArMjgsOSBAQAogICAgIE5vSW50ZXJmYWNlT2Jq
ZWN0LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIFNWR1Rlc3RzIHsKLSAg
ICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEZl
YXR1cmVzOwotICAgIFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0
IHJlcXVpcmVkRXh0ZW5zaW9uczsKLSAgICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUg
U1ZHU3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdT
dHJpbmdMaXN0IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZp
bmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KICAgICBib29sZWFuIGhh
c0V4dGVuc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXh0ZW5zaW9uID0gInVuZGVmaW5lZCIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCmluZGV4IDE1N2MzZDdh
Nzg2NjczNmE2NjYzMDBjZGIxMTcwMTZlNjJkOWEzNzMuLjhkY2FjNjQ1Y2JhMWU2MDg1ZGQ3NzE0
NjhlMmFiNzExMWFjNTNkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRF
bGVtZW50LmgKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJT
VkdBbmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmgiCkBAIC04OSw2ICs4OCw4IEBAIHB1YmxpYzoKIAogICAgIHVzaW5n
IEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdUZXh0
Q29udGVudEVsZW1lbnQsIFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZD47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lz
dHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0
dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KKyAgICAKKyAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0g
U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHR3JhcGhp
Y3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPjsKIAogICAgIGNvbnN0IFNW
R0xlbmd0aFZhbHVlJiB0ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0TGVuZ3RoLmN1
cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgU1ZHTGVuZ3RoQWRqdXN0
VHlwZSBsZW5ndGhBZGp1c3QoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aEFkanVzdC5jdXJyZW50
VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQpAQCAtMTEwLDEwICsxMTEsMTQgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wgaXNUZXh0Q29udGVudCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRy
aWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25l
clByb3h5OyB9CiAKKyAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVP
d25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5
OyB9CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGljIGJv
b2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7
IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIGNsYXNz
IFNWR0FuaW1hdGVkQ3VzdG9tTGVuZ3RoQXR0cmlidXRlIDogcHVibGljIFNWR0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhF
bGVtZW50LmgKaW5kZXggNjliMzg1NWQ2MzMyNDAyMTk0ZGU4OGE1NjE1NjZhZWI5OGZjODFlYS4u
ZTRmYTY4M2FlNWY5NzQ0OWEyN2QyNmQzMDRlZjU3OTEzYWQ1OTAwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaApAQCAtMTI4LDEwICsxMjgsMTcgQEAgcHJpdmF0ZToK
IAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5
SW1wbDxTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHVVJJUmVm
ZXJlbmNlPjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0
cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0
cmlidXRlUmVnaXN0cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQ
cm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIHN0YXRpYyB2b2lk
IHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94
eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRl
T3duZXJQcm94eTsgfQorCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTxTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR1RleHRDb250ZW50RWxlbWVudCwg
U1ZHVVJJUmVmZXJlbmNlPjsKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0
eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisK
KyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KKwogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAKQEAgLTE0Nyw2ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXR0cmlidXRlT3duZXJQcm94
eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZSBtX3N0YXJ0T2Zmc2V0IHsgTGVuZ3RoTW9kZU90aGVyIH07CiAgICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+IG1fbWV0aG9kIHsgU1ZH
VGV4dFBhdGhNZXRob2RBbGlnbiB9OwogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1
dGU8U1ZHVGV4dFBhdGhTcGFjaW5nVHlwZT4gbV9zcGFjaW5nIHsgU1ZHVGV4dFBhdGhTcGFjaW5n
RXhhY3QgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dC5oCmluZGV4IDFiMWI4MWJiMjg5YjE0MzI1MTkyMWE3NWZhNGM4MjM2ZWJlYzIzYTEuLjNmMjhk
ZmRkN2FlOTk5ZGYzMDVhY2MyOTM3YTZlZTQyZDM0MWJjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaApAQCAtMzQsNiArMzQsOCBAQCBwdWJs
aWM6CiAKICAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQ
cm94eUltcGw8U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVGV4dENvbnRlbnRFbGVtZW50
PjsKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0
dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRl
UmVnaXN0cnkoKTsgfQorICAgIAorICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHVGV4dENvbnRl
bnRFbGVtZW50PjsKIAogICAgIGNvbnN0IFNWR0xlbmd0aExpc3RWYWx1ZXMmIHgoKSBjb25zdCB7
IHJldHVybiBtX3guY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBj
b25zdCBTVkdMZW5ndGhMaXN0VmFsdWVzJiB5KCkgY29uc3QgeyByZXR1cm4gbV95LmN1cnJlbnRW
YWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CkBAIC01OCwxMSArNjAsMTcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYpIGZpbmFsOwogCiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRl
T3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94
eTsgfQotCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUpOyB9CisKKyAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lz
dHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CisKKyAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJv
eHkgbV9hdHRyaWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
QXR0cmlidXRlIG1feDsKICAgICBTVkdBbmltYXRlZExlbmd0aExpc3RBdHRyaWJ1dGUgbV95Owog
ICAgIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZSBtX2R4OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VSSVJlZmVyZW5jZS5oCmluZGV4IDY2MGMyNjI2MzA3NDJhOWNhMjhmZWJiYzdkYWFhN2U4MWUy
YTVlZDkuLjMxNzIwMzZmZTM0MzAzMTE5YjViZjNkMGIwOGRkMTcwNDE3ZjAwMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4LCAyMDA5IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Niw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB1
c2luZyBBdHRyaWJ1dGVSZWdpc3RyeSA9IFNWR0F0dHJpYnV0ZVJlZ2lzdHJ5PFNWR1VSSVJlZmVy
ZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgp
OwogCisgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3Ry
eTxTVkdVUklSZWZlcmVuY2U+OworCiAgICAgY29uc3QgU3RyaW5nJiBocmVmKCkgY29uc3Q7CiAg
ICAgUmVmUHRyPFNWR0FuaW1hdGVkU3RyaW5nPiBocmVmQW5pbWF0ZWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmgKaW5kZXggMzFlMGMwOWZiOGM1ZmY0OTlhOThkZTA0M2ViMDlmZWRh
NDc2YTM4OC4uZDZlZGFmZWM3ZGE2NzlmZTUxZWRhMWIxNzFkOTQxNmE5MTgwMTUwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCkBAIC0yMyw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50Q2xpZW50
LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRCb29sZWFuLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAj
aW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCkBAIC02NywxMCArNjYsMTcgQEAgcHJpdmF0
ZToKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5SW1wbDxTVkdVc2VFbGVtZW50LCBTVkdHcmFwaGljc0VsZW1lbnQsIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIFNWR1VSSVJlZmVyZW5jZT47CiAgICAgc3RhdGljIEF0dHJpYnV0ZU93
bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMg
Ym9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIGNv
bnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJpYnV0ZU93bmVyUHJveHkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0KKworICAgIHVzaW5nIFByb3Bl
cnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVXNlRWxlbWVudCwgU1ZH
R3JhcGhpY3NFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZl
cmVuY2U+OworICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKworICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7CisgICAgfQorCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApA
QCAtMTAxLDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlRGVwZW5kZW50
U2hhZG93VHJlZXMoKTsKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25l
clByb3h5IHsgKnRoaXMgfTsKKyAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV94IHsgTGVuZ3Ro
TW9kZVdpZHRoIH07CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUgbV95IHsgTGVuZ3Ro
TW9kZUhlaWdodCB9OwogICAgIFNWR0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlIG1fd2lkdGggeyBM
ZW5ndGhNb2RlV2lkdGggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCmluZGV4
IDUzYmY0YTM0ZmYxN2UwZDYwODY3MTg1ZWViZTVlOTE4NTE2Y2U1YjcuLjMzOTZjNmU5ODIzNmI2
NGU4Njk1ZmYwNDE5ZTgwMjY5NTc3YjQ3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVt
ZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM0LDkgKzM0LDEzIEBAIGlubGluZSBTVkdWaWV3RWxlbWVudDo6U1ZH
Vmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvCiAg
ICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCh0aGlzKQogICAgICwgU1ZHRml0VG9WaWV3Qm94KHRoaXMpCi0gICAgLCBt
X3ZpZXdUYXJnZXQoU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQogewogICAgIEFTU0VSVChoYXNU
YWdOYW1lKFNWR05hbWVzOjp2aWV3VGFnKSk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAg
IFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnZpZXdUYXJnZXRB
dHRyLCAmU1ZHVmlld0VsZW1lbnQ6Om1fdmlld1RhcmdldD4oKTsKKyAgICB9KTsKIH0KIAogUmVm
PFNWR1ZpZXdFbGVtZW50PiBTVkdWaWV3RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ0LDE1ICs0OCwxMiBAQCBSZWY8
U1ZHVmlld0VsZW1lbnQ+IFNWR1ZpZXdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1ZpZXdFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdWaWV3
RWxlbWVudDo6dmlld1RhcmdldCgpCi17Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0
ZSgqdGhpcywgbV92aWV3VGFyZ2V0KTsKLX0KLQogdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCi0gICAg
ICAgIG1fdmlld1RhcmdldC5yZXNldCh2YWx1ZSk7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnZpZXdUYXJnZXRBdHRyKSB7CisgICAgICAgIG1fdmlld1RhcmdldC0+cmVzZXQodmFsdWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0
cmlidXRlKG5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
aWV3RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKaW5kZXgg
YTU3NzMxMDRkY2EzNDU4YjE3ZDBmYTEzNTU5MjE1ODZlZDJhNDY2NS4uZjNmNzk1ZDMxOWU2ZDk4
YWFiZmQ2MDBmYTJjMDBiNTMxMWFhNDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50
LmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yNCwxMiArMjQsMTEgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRv
Vmlld0JveC5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJTVkdab29t
QW5kUGFuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHU3RyaW5nTGlzdDsK
LQogY2xhc3MgU1ZHVmlld0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZHRWxlbWVudCwgcHVibGlj
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3gsIHB1
YmxpYyBTVkdab29tQW5kUGFuIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFNWR1ZpZXdF
bGVtZW50KTsKIHB1YmxpYzoKQEAgLTM4LDIwICszNywyNSBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
U1ZHRWxlbWVudDo6cmVmOwogICAgIHVzaW5nIFNWR0VsZW1lbnQ6OmRlcmVmOwogCi0gICAgUmVm
PFNWR1N0cmluZ0xpc3Q+IHZpZXdUYXJnZXQoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gdmll
d1RhcmdldCgpIHsgcmV0dXJuIG1fdmlld1RhcmdldC5jb3B5UmVmKCk7IH0KIAogcHJpdmF0ZToK
ICAgICBTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAog
ICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCi0gICAgdXNpbmcgQXR0
cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1ZpZXdFbGVt
ZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1Zp
ZXdCb3gsIFNWR1pvb21BbmRQYW4+OworICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBT
VkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdWaWV3RWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94PjsKICAgICBjb25zdCBT
VkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CisKKyAgICB1c2luZyBQcm9wZXJ0eVJl
Z2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR1ZpZXdFbGVtZW50LCBTVkdFbGVt
ZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3g+OworICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwogICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogCiAg
ICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVPd25lclBy
b3h5IHsgKnRoaXMgfTsKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzIG1fdmlld1RhcmdldDsKKyAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07CisgICAgUmVm
PFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZSh0aGlz
KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMu
aAppbmRleCBiNmZkN2JjNDVjNGI5ZjdlY2U0NmIwYWVmNDU4MWM4YTNlNGU2MGJjLi42NmFiMjVh
N2Y3YjdiOGQxNzYyNzQxOTk1OTRlNmQ0ZTAxNGZiZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVmlld1NwZWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1Nw
ZWMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU0LDEyICs1NCwxNCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNWR1ZpZXdTcGVjKFNWR0VsZW1lbnQmKTsK
IAotICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5
SW1wbDxTVkdWaWV3U3BlYywgU1ZHRml0VG9WaWV3Qm94LCBTVkdab29tQW5kUGFuPjsKKyAgICB1
c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eUltcGw8U1ZH
Vmlld1NwZWMsIFNWR0ZpdFRvVmlld0JveD47CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRy
aWJ1dGVzKCk7CiAKICAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVn
aXN0cnkmIGF0dHJpYnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
YXR0cmlidXRlUmVnaXN0cnkoKTsgfQogICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogCisgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdWaWV3U3BlYywg
U1ZHRml0VG9WaWV3Qm94PjsKKwogICAgIFdlYWtQdHI8U1ZHRWxlbWVudD4gbV9jb250ZXh0RWxl
bWVudDsKICAgICBTdHJpbmcgbV92aWV3VGFyZ2V0U3RyaW5nOwogICAgIEF0dHJpYnV0ZU93bmVy
UHJveHkgbV9hdHRyaWJ1dGVPd25lclByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1pvb21BbmRQYW4uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4u
Y3BwCmluZGV4IGVmYWRkNGIyMjUxNDExNjA0NjM3MGRkOWY5ZjFiMTNmMDgxOWEzY2QuLjE0ZDhm
Y2I3N2VhNTgwMWQ2NTEwOWY0NTNkYTI1MDM2MjMxMTI3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Wm9vbUFuZFBhbi5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwzMCArMjQsMTcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1TVkdab29tQW5kUGFuOjpTVkdab29tQW5kUGFuKCkKLXsKLSAgICByZWdp
c3RlckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdab29tQW5kUGFuOjpyZWdpc3RlckF0dHJp
YnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAg
ICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp6b29tQW5kUGFuQXR0ciwgJlNWR1pvb21BbmRQ
YW46Om1fem9vbUFuZFBhbj4oKTsKLX0KLQogYm9vbCBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21B
bmRQYW4oY29uc3QgVUNoYXIqJiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCkKIHsKICAgICBzdGF0
aWMgY29uc3QgVUNoYXIgZGlzYWJsZVtdID0geyAnZCcsICdpJywgJ3MnLCAnYScsICdiJywgJ2wn
LCAnZScgfTsKICAgICBpZiAoc2tpcFN0cmluZyhzdGFydCwgZW5kLCBkaXNhYmxlLCBXVEZfQVJS
QVlfTEVOR1RIKGRpc2FibGUpKSkgewotICAgICAgICBtX3pvb21BbmRQYW4uc2V0VmFsdWUoU1ZH
Wm9vbUFuZFBhbkRpc2FibGUpOworICAgICAgICBtX3pvb21BbmRQYW4gPSBTVkdab29tQW5kUGFu
RGlzYWJsZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IFVDaGFyIG1hZ25pZnlbXSA9IHsgJ20nLCAnYScsICdnJywgJ24nLCAnaScsICdmJywgJ3knIH07
CiAgICAgaWYgKHNraXBTdHJpbmcoc3RhcnQsIGVuZCwgbWFnbmlmeSwgV1RGX0FSUkFZX0xFTkdU
SChtYWduaWZ5KSkpIHsKLSAgICAgICAgbV96b29tQW5kUGFuLnNldFZhbHVlKFNWR1pvb21BbmRQ
YW5NYWduaWZ5KTsKKyAgICAgICAgbV96b29tQW5kUGFuID0gU1ZHWm9vbUFuZFBhbk1hZ25pZnk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNTgsNyArNDUsNyBAQCB2b2lkIFNW
R1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIGNvbnN0IEF0bwogewogICAgIGlmIChhdHRyaWJ1dGVOYW1lICE9IFNWR05hbWVzOjp6
b29tQW5kUGFuQXR0cikKICAgICAgICAgcmV0dXJuOwotICAgIG1fem9vbUFuZFBhbi5zZXRWYWx1
ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdab29tQW5kUGFuVHlwZT46OmZyb21TdHJpbmcodmFsdWUp
KTsKKyAgICBtX3pvb21BbmRQYW4gPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdab29tQW5kUGFuVHlw
ZT46OmZyb21TdHJpbmcodmFsdWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHWm9vbUFuZFBhbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4u
aAppbmRleCAzNWQ4ODI4ZWM1N2M0ZGNiYzBhNWI3NjgwZTQzZGNiZWEyZDZhODE0Li4zOTJmNDNl
ZmI3YzhhOWEyMTY3MjJmODQxNjQzMjcxNGY3NzcyYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29t
QW5kUGFuLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNywyNiArMzcsMjAgQEAgcHVibGljOgogICAgICAgICBT
VkdfWk9PTUFORFBBTl9NQUdOSUZZID0gU1ZHWm9vbUFuZFBhbk1hZ25pZnkKICAgICB9OwogCi0g
ICAgU1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbigpIGNvbnN0IHsgcmV0dXJuIG1fem9vbUFu
ZFBhbi52YWx1ZSgpOyB9Ci0gICAgdm9pZCBzZXRab29tQW5kUGFuKFNWR1pvb21BbmRQYW5UeXBl
IHpvb21BbmRQYW4pIHsgbV96b29tQW5kUGFuLnNldFZhbHVlKHpvb21BbmRQYW4pOyB9CisgICAg
U1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbigpIGNvbnN0IHsgcmV0dXJuIG1fem9vbUFuZFBh
bjsgfQorICAgIHZvaWQgc2V0Wm9vbUFuZFBhbihTVkdab29tQW5kUGFuVHlwZSB6b29tQW5kUGFu
KSB7IG1fem9vbUFuZFBhbiA9IHpvb21BbmRQYW47IH0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRab29tQW5kUGFuKHVuc2lnbmVkKSB7IHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlv
bkFsbG93ZWRFcnJvciB9OyB9Ci0gICAgdm9pZCByZXNldCgpIHsgbV96b29tQW5kUGFuLnNldFZh
bHVlKFNWR1pvb21BbmRQYW5NYWduaWZ5KTsgfQotCi0gICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1pvb21BbmRQYW4+OwotICAgIHN0
YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVn
aXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgp
OyB9CisgICAgdm9pZCByZXNldCgpIHsgbV96b29tQW5kUGFuID0gU1ZHUHJvcGVydHlUcmFpdHM8
U1ZHWm9vbUFuZFBhblR5cGU+Ojppbml0aWFsVmFsdWUoKTsgfQogCiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAKIHBy
b3RlY3RlZDoKLSAgICBTVkdab29tQW5kUGFuKCk7CisgICAgU1ZHWm9vbUFuZFBhbigpID0gZGVm
YXVsdDsKIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsgfQogICAgIGJvb2wgcGFyc2Vab29tQW5kUGFuKGNv
bnN0IFVDaGFyKiYsIGNvbnN0IFVDaGFyKik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KLSAgICBTVkdQcm9wZXJ0eUF0dHJpYnV0ZTxTVkdab29t
QW5kUGFuVHlwZT4gbV96b29tQW5kUGFuOworICAgIFNWR1pvb21BbmRQYW5UeXBlIG1fem9vbUFu
ZFBhbiB7IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1pvb21BbmRQYW5UeXBlPjo6aW5pdGlhbFZhbHVl
KCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmLmgKaW5kZXggOTA1MTMwZjlhYjQwMmRiM2QwNTNhYWFjNDU1ZjU4OWI5Y2U2ZDA0Ny4uMDk3
M2QyYmRkYjgyZDM1OWZhN2I3N2RjZGNiMjI0NmNmMzA4Yjk5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVy
dHlUZWFyT2ZmLmgKQEAgLTIyLDcgKzIyLDYgQEAKIAogI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1h
dGVkUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCi0jaW5j
bHVkZSAiU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJpbWl0aXZlUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaAppbmRleCBhMGE0MzEyNDhkNmFkNDI0ZmVlZTE4
ODExM2FmNjU4MTFjYWE4NTJhLi5jNDI1NjE5MjAwZGYwNDg1NjcxYmM3MzE5ZWI1N2Y2ZDNjYThh
ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZFByaW1pdGl2ZVByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCYXNlVmFsKGNvbnN0IFByb3BlcnR5VHlwZSYgYmFz
ZVZhbCkKICAgICB7CiAgICAgICAgIG1fYmFzZVZhbCA9IGJhc2VWYWw7Ci0gICAgICAgIGNvbW1p
dFByb3BlcnR5Q2hhbmdlKCk7CisgICAgICAgIGNvbW1pdFByb3BlcnR5Q2hhbmdlKG51bGxwdHIp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAppbmRleCA0N2JjNGNiMTQx
OWNiZjFkYTUzZGM4Y2JlMDcyODMwZmMzMDhkOTAyLi5lYzJmM2E0ODdmODMwZjFjNzI2ZDBmNmJl
NGM5NDIyZWM4ZjMwMWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcApAQCAtMzUsNyArMzUsNyBAQCBTVkdQcm9wZXJ0
eU93bmVyKiBTVkdBbmltYXRlZFByb3BlcnR5Ojpvd25lcigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y29udGV4dEVsZW1lbnQ7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29tbWl0UHJv
cGVydHlDaGFuZ2UoKQordm9pZCBTVkdBbmltYXRlZFByb3BlcnR5Ojpjb21taXRQcm9wZXJ0eUNo
YW5nZShTVkdQcm9wZXJ0eSopCiB7CiAgICAgaWYgKCFtX2NvbnRleHRFbGVtZW50KQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5LmgKaW5kZXggMDRjOTM0YjFjMTM1ODQyZjU4YTkzNjJiMjBjZmI4ZWUwMGRk
YzNjZi4uYzZmOTMyZTZkZjY5Y2NlZmFmYzk2NWUzMmNkNTY2MjBhMWZjMzM2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaApA
QCAtMjYsOCArMjYsMTMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlP
d25lci5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK2NsYXNzIFNWR0VsZW1lbnQ7CiAKIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVy
dHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdBbmltYXRlZFByb3BlcnR5PiwgcHVibGljIFNWR1By
b3BlcnR5T3duZXIgewogcHVibGljOgpAQCAtNjIsNyArNjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
fQogICAgIAogICAgIFNWR1Byb3BlcnR5T3duZXIqIG93bmVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0
UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqKSBvdmVycmlkZTsKICAgICAKICAgICBTVkdFbGVt
ZW50KiBtX2NvbnRleHRFbGVtZW50IHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9pc0FuaW1hdGlu
ZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgKaW5kZXggYTgxZmZjM2Zh
OTIwNDFjMTNlYzE1OGJhMmFkOWQ5Y2Q2NWQ2NzU0Ni4uYzdhODFjODE3YmExZTZlYjFhMjE2ZDhj
NjJjYmU0NjRjZWY0YWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaApAQCAtMzIs
NiArMzIsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBP
d25lclR5cGU+CitjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5BY2Nlc3NvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZEJvb2xl
YW4+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVy
VHlwZSwgU1ZHQW5pbWF0ZWRCb29sZWFuPjsKKyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKKwor
cHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1h
dGVkQm9vbGVhbj4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRpYyBj
b25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBC
YXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHQW5pbWF0ZWRCb29sZWFuQWNjZXNzb3IsIHByb3Bl
cnR5PigpOyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFu
aW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2Rl
IGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmlu
YWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcjo6Y3Jl
YXRlKGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5KG93bmVyKSwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5k
QW5pbWF0ZWRJbnN0YW5jZShPd25lclR5cGUmIG93bmVyLCBTVkdBdHRyaWJ1dGVBbmltYXRvciYg
YW5pbWF0b3IpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxTVkdBbmlt
YXRlZEJvb2xlYW5BbmltYXRvciY+KGFuaW1hdG9yKS5hcHBlbmRBbmltYXRlZEluc3RhbmNlKHBy
b3BlcnR5KG93bmVyKSk7CisgICAgfQorfTsKKyAgICAKIHRlbXBsYXRlPHR5cGVuYW1lIE93bmVy
VHlwZT4KIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFjY2Vzc29yIGZpbmFsIDogcHVibGljIFNW
R0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR0FuaW1hdGVkSW50ZWdlcj4g
ewogICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBl
LCBTVkdBbmltYXRlZEludGVnZXI+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4
IDViYjE1Nzg5OGE0MTE5ZmIyMzRiZjIyZDRkOWQyODc1Yzk5MmIxMGEuLmFmMzM0NTZmYmJlNGI5
ZDhkMjYzMWJmYjk0YzlhZTIxM2NkMTJkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBs
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0
b3IuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaCIKKyNpbmNsdWRlICJTVkdBbmlt
YXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTM2LDYgKzM3LDI0IEBAIGNsYXNzIFNWR0FuaW1hdGVkSW50ZWdlclBhaXJBbmltYXRvcjsKIHRl
bXBsYXRlPHR5cGVuYW1lIEFuaW1hdGVkUHJvcGVydHlBbmltYXRvcjEsIHR5cGVuYW1lIEFuaW1h
dGVkUHJvcGVydHlBbmltYXRvcjI+CiBjbGFzcyBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFuaW1h
dG9yOwogCitjbGFzcyBTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvciBmaW5hbCA6IHB1YmxpYyBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRCb29sZWFuLCBTVkdBbmltYXRp
b25Cb29sZWFuRnVuY3Rpb24+ICB7CisgICAgdXNpbmcgQmFzZSA9IFNWR0FuaW1hdGVkUHJvcGVy
dHlBbmltYXRvcjxTVkdBbmltYXRlZEJvb2xlYW4sIFNWR0FuaW1hdGlvbkJvb2xlYW5GdW5jdGlv
bj47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKworcHVibGljOgorICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRC
b29sZWFuPiYgYW5pbWF0ZWQsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZEJvb2xlYW5BbmltYXRvcj4o
bmV3IFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkLCBh
bmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSkpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHByb2dyZXNzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1l
bnQsIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50KSBmaW5hbAorICAgIHsK
KyAgICAgICAgYm9vbCYgYW5pbWF0ZWQgPSBtX2FuaW1hdGVkLT5hbmltVmFsKCk7CisgICAgICAg
IG1fZnVuY3Rpb24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291
bnQsIGFuaW1hdGVkKTsKKyAgICB9Cit9OworCiBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJBbmlt
YXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0
ZWRJbnRlZ2VyLCBTVkdBbmltYXRpb25JbnRlZ2VyRnVuY3Rpb24+IHsKICAgICBmcmllbmQgY2xh
c3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBbmltYXRvcjxTVkdBbmltYXRlZEludGVnZXJBbmlt
YXRvciwgU1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I+OwogICAgIGZyaWVuZCBjbGFzcyBTVkdB
bmltYXRlZEludGVnZXJQYWlyQW5pbWF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaAppbmRleCAwMTI5MTU0NmI0
NDMzZTBkODg5NzNlZWQzYWU1YjMwN2JkNDMyNjg0Li44ZWY3NzI2YmFiM2M5MzFkNTM2ZmJiM2Nm
Njc5NzU0OGIxNzhkZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdC5oIgpAQCAtNDEsNiArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5n
IFNWR0FuaW1hdGVkQm9vbGVhbiA9IFNWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHk8Ym9vbD47
CiB1c2luZyBTVkdBbmltYXRlZEludGVnZXIgPSBTVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5
PGludD47CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjcwN2JkNzdm
ZmYxZTA1NWU4OWUwYmFmYThmZTUxODFlMGQ0YTA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbi5oCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBWYWx1ZVR5cGU+CitjbGFzcyBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9u
IDogcHVibGljIFNWR0FuaW1hdGlvbkZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRp
b25EaXNjcmV0ZUZ1bmN0aW9uKEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUs
IGJvb2wsIGJvb2wpCisgICAgICAgIDogU1ZHQW5pbWF0aW9uRnVuY3Rpb24oYW5pbWF0aW9uTW9k
ZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0Rpc2NyZXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldEZyb21BbmRCeVZhbHVlcyhTVkdFbGVtZW50KiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHZvaWQgcHJvZ3Jlc3MoU1ZHRWxlbWVudCos
IGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLCBWYWx1ZVR5cGUmIGFuaW1hdGVkKQorICAgIHsK
KyAgICAgICAgaWYgKChtX2FuaW1hdGlvbk1vZGUgPT0gQW5pbWF0aW9uTW9kZTo6RnJvbVRvICYm
IHBlcmNlbnRhZ2UgPiAwLjUpIHx8IG1fYW5pbWF0aW9uTW9kZSA9PSBBbmltYXRpb25Nb2RlOjpU
byB8fCBwZXJjZW50YWdlID09IDEpCisgICAgICAgICAgICBhbmltYXRlZCA9IG1fdG87CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGFuaW1hdGVkID0gbV9mcm9tOworICAgIH0KKworcHJvdGVj
dGVkOgorICAgIFZhbHVlVHlwZSBtX2Zyb207CisgICAgVmFsdWVUeXBlIG1fdG87Cit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25E
aXNjcmV0ZUZ1bmN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzYwOWQ3Y2EyNWQ2
NDk1NWIxNmM0ZmRkMjdmMjA3OGNkYzZjNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbkltcGwuaApA
QCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTVkdBbmltYXRpb25Cb29sZWFuRnVuY3Rpb24gOiBwdWJsaWMg
U1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbjxib29sPiB7CitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZSA9IFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb248Ym9vbD47CisgICAgdXNpbmcgQmFz
ZTo6QmFzZTsKKworICAgIHZvaWQgc2V0RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqLCBjb25z
dCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBtX2Zyb20gPSBTVkdQcm9wZXJ0eVRyYWl0czxib29sPjo6ZnJvbVN0cmluZyhmcm9tKTsKKyAg
ICAgICAgbV90byA9IFNWR1Byb3BlcnR5VHJhaXRzPGJvb2w+Ojpmcm9tU3RyaW5nKHRvKTsKKyAg
ICB9Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlUmVnaXN0cnkuaAppbmRleCBiMGIzMzAyMDljZTY1ZTgxMjc2ODVlMzJhZGZhMDY4
ZDA2NmM5MGEyLi4zYjQ2OTM4MDJhMDNhZmRiZjBlNWFlNGZhMzlkN2MxMTZlNzQ5MTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lz
dHJ5LmgKQEAgLTI1LDcgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdB
bmltYXRlZEJvb2xlYW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0
aExpc3QuaCIKQEAgLTM4LDcgKzM3LDYgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3QuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oIgogI2luY2x1ZGUgIlNW
R0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFsdWVz
LmgiCiAjaW5jbHVkZSAiU1ZHWm9vbUFuZFBhblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogCkBAIC01MywxMyArNTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYXA7CiAg
ICAgfQogCi0gICAgLy8gTm9uIGFuaW1hdGFibGUgYXR0cmlidXRlcwotICAgIHRlbXBsYXRlPGNv
bnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFt
ZSwgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+Ci0g
ICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgpCi0gICAgewotICAgICAgICByZWdpc3RlckF0dHJp
YnV0ZShTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVt
cGxhdGUgc2luZ2xldG9uPGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAg
ICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+
JiBhdHRyaWJ1dGVOYW1lLCBTVkdab29tQW5kUGFuVHlwZUF0dHJpYnV0ZSBPd25lclR5cGU6Oiph
dHRyaWJ1dGU+CiAgICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgpCiAgICAgewpAQCAtNjcsMTIg
KzU4LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEFuaW1hdGFibGUgYXR0cmlidXRlcwot
ICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1l
PiYgYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWRCb29sZWFuQXR0cmlidXRlIE93bmVyVHlwZTo6
KmF0dHJpYnV0ZT4KLSAgICB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlKCkKLSAgICB7Ci0gICAgICAg
IHJlZ2lzdGVyQXR0cmlidXRlKFNWR0FuaW1hdGVkQm9vbGVhbkF0dHJpYnV0ZUFjY2Vzc29yPE93
bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGU+KCkp
OwotICAgIH0KLQogICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBR
dWFsaWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgdHlwZW5hbWUgRW51bVR5cGUsIFNWR0FuaW1h
dGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8RW51bVR5cGU+IE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4K
ICAgICB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjkzYTU0ZjVkNDg1NGNhM2Q1ZWNjNDYyODIz
M2ViNDRmOTZkZjM0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0xpc3QuaApAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW1UeXBlPgorY2xhc3MgU1ZHTGlzdCA6IHB1
YmxpYyBTVkdQcm9wZXJ0eSB7CitwdWJsaWM6CisgICAgdW5zaWduZWQgbnVtYmVyT2ZJdGVtcygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pdGVtcy5zaXplKCk7CisgICAgfQorCisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xlYXIoKQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBjYW5BbHRlckxpc3QoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NF
UlQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICBjbGVhckl0ZW1zKCk7
CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwor
ICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBlPiBnZXRJdGVtKHVuc2lnbmVkIGluZGV4KQorICAgIHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5HZXRJdGVtKGluZGV4KTsKKyAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
KworICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0
ZW1UeXBlPiBpbml0aWFsaXplKEl0ZW1UeXBlJiYgbmV3SXRlbSkKKyAgICB7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKwor
ICAgICAgICAvLyBTcGVjOiBDbGVhcnMgYWxsIGV4aXN0aW5nIGN1cnJlbnQgaXRlbXMgZnJvbSB0
aGUgbGlzdC4KKyAgICAgICAgY2xlYXJJdGVtcygpOworCisgICAgICAgIGF1dG8gaXRlbSA9IGFw
cGVuZChXVEZNb3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAg
IHJldHVybiBXVEZNb3ZlKGl0ZW0pOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBl
PiBpbnNlcnRJdGVtQmVmb3JlKEl0ZW1UeXBlJiYgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOworICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkp
OworCisgICAgICAgIC8vIFNwZWM6IElmIHRoZSBpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1
YWwgdG8gbnVtYmVyT2ZJdGVtcywKKyAgICAgICAgLy8gdGhlbiB0aGUgbmV3IGl0ZW0gaXMgYXBw
ZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KKyAgICAgICAgaWYgKGluZGV4ID4gbnVtYmVy
T2ZJdGVtcygpKQorICAgICAgICAgICAgaW5kZXggPSBudW1iZXJPZkl0ZW1zKCk7CisKKyAgICAg
ICAgYXV0byBpdGVtID0gaW5zZXJ0KGluZGV4LCBXVEZNb3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAg
Y29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGl0ZW0pOworICAgIH0KKwor
ICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBlPiByZXBsYWNlSXRlbShJdGVtVHlwZSYmIG5ld0l0ZW0s
IHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5SZXBsYWNl
SXRlbShpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgYXV0byBpdGVtID0gcmVwbGFj
ZShpbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAg
ICAgICByZXR1cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVt
VHlwZT4gcmVtb3ZlSXRlbSh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gY2FuUmVtb3ZlSXRlbShpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAg
ICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgYXV0
byBpdGVtID0gcmVtb3ZlKGluZGV4KTsKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAg
IHJldHVybiBXVEZNb3ZlKGl0ZW0pOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPEl0ZW1UeXBl
PiBhcHBlbmRJdGVtKEl0ZW1UeXBlJiYgbmV3SXRlbSkKKyAgICB7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAg
QVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgYXV0byBpdGVt
ID0gYXBwZW5kKFdURk1vdmUobmV3SXRlbSkpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAg
ICAgICAgcmV0dXJuIFdURk1vdmUoaXRlbSk7CisgICAgfQorCisgICAgLy8gUGFyc2VycyBhbmQg
YW5pbWF0b3JzIG5lZWQgdG8gaGF2ZSBhIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIGl0ZW1zLgorICAg
IFZlY3RvcjxJdGVtVHlwZT4mIGl0ZW1zKCkgeyByZXR1cm4gbV9pdGVtczsgfQorICAgIGNvbnN0
IFZlY3RvcjxJdGVtVHlwZT4mIGl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtczsgfQorICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5zaXplKCk7IH0KKyAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1zLmlzRW1wdHkoKTsgfQorCisgICAgdm9p
ZCBjbGVhckl0ZW1zKCkKKyAgICB7CisgICAgICAgIGRldGFjaEl0ZW1zKCk7CisgICAgICAgIG1f
aXRlbXMuY2xlYXIoKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB1c2luZyBTVkdQcm9wZXJ0
eTo6U1ZHUHJvcGVydHk7CisKKyAgICBFeGNlcHRpb25Pcjxib29sPiBjYW5BbHRlckxpc3QoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKKyAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjxib29sPiBjYW5HZXRJdGVtKHVuc2ln
bmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IG1faXRlbXMuc2l6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNhblJlcGxhY2VJ
dGVtKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRl
ckxpc3QoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQocmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICBpZiAoaW5kZXggPj0gbV9pdGVtcy5z
aXplKCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2Fu
UmVtb3ZlSXRlbSh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
Y2FuQWx0ZXJMaXN0KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJU
KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgaWYgKGluZGV4ID49IG1f
aXRlbXMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVy
cm9yIH07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2hJdGVtcygpIHsgfQorICAgIHZpcnR1YWwgSXRlbVR5cGUgYXQodW5zaWduZWQgaW5kZXgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIGluc2VydCh1bnNpZ25lZCBpbmRleCwg
SXRlbVR5cGUmJikgPSAwOworICAgIHZpcnR1YWwgSXRlbVR5cGUgcmVwbGFjZSh1bnNpZ25lZCBp
bmRleCwgSXRlbVR5cGUmJikgPSAwOworICAgIHZpcnR1YWwgSXRlbVR5cGUgcmVtb3ZlKHVuc2ln
bmVkIGluZGV4KSA9IDA7CisgICAgdmlydHVhbCBJdGVtVHlwZSBhcHBlbmQoSXRlbVR5cGUmJikg
PSAwOworCisgICAgVmVjdG9yPEl0ZW1UeXBlPiBtX2l0ZW1zOworfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29yLmgKaW5kZXggZGIy
MTM0ZDM2NzNmOWYzYTA0N2RjZjI4ZDQ3ZDQyYThmMTc1NjAzOC4uN2RjNGNhYThiYzZjZTBmZmI3
M2U4ZmQ1ZjUxMDU3MWQxNTNjMjYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CitjbGFzcyBTVkdQcm9wZXJ0
eTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJUeXBlPgogY2xhc3MgU1ZHTWVtYmVyQWNjZXNz
b3IgewpAQCAtNDIsNiArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0
ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
QW5pbWF0ZWRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCBi
b29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZHUHJvcGVydHkmKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzKGNvbnN0IE93bmVyVHlw
ZSYsIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHkmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5cGUm
KSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NmJmYjY3YWQ4
MGIwYTk5OTJjODY2Mjc3YjIyMWZjZmFmM2ZjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcmltaXRpdmVMaXN0LmgKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KK2NsYXNzIFNWR1ByaW1pdGl2ZUxp
c3QgOiBwdWJsaWMgU1ZHTGlzdDxQcm9wZXJ0eVR5cGU+IHsKK3Byb3RlY3RlZDoKKyAgICB1c2lu
ZyBCYXNlID0gU1ZHTGlzdDxQcm9wZXJ0eVR5cGU+OworICAgIHVzaW5nIEJhc2U6OkJhc2U7Cisg
ICAgdXNpbmcgQmFzZTo6c2l6ZTsKKyAgICB1c2luZyBCYXNlOjptX2l0ZW1zOworCisgICAgUHJv
cGVydHlUeXBlIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1faXRlbXMuYXQoaW5k
ZXgpOworICAgIH0KKworICAgIFByb3BlcnR5VHlwZSBpbnNlcnQodW5zaWduZWQgaW5kZXgsIFBy
b3BlcnR5VHlwZSYmIG5ld0l0ZW0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoaW5k
ZXggPD0gc2l6ZSgpKTsKKyAgICAgICAgbV9pdGVtcy5pbnNlcnQoaW5kZXgsIFdURk1vdmUobmV3
SXRlbSkpOworICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgIH0KKworICAgIFByb3BlcnR5
VHlwZSByZXBsYWNlKHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVR5cGUmJiBuZXdJdGVtKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAgbV9p
dGVtcy5hdChpbmRleCkgPSBXVEZNb3ZlKG5ld0l0ZW0pOworICAgICAgICByZXR1cm4gYXQoaW5k
ZXgpOworICAgIH0KKworICAgIFByb3BlcnR5VHlwZSByZW1vdmUodW5zaWduZWQgaW5kZXgpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBzaXplKCkpOworICAgICAgICBQ
cm9wZXJ0eVR5cGUgaXRlbSA9IGF0KGluZGV4KTsKKyAgICAgICAgbV9pdGVtcy5yZW1vdmUoaW5k
ZXgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBQcm9wZXJ0
eVR5cGUgYXBwZW5kKFByb3BlcnR5VHlwZSYmIG5ld0l0ZW0pIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBtX2l0ZW1zLmFwcGVuZChXVEZNb3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgcmV0dXJuIGF0
KHNpemUoKSAtIDEpOworICAgIH0KK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eS5oCmluZGV4IGZkYTI4MGE3YWRmYzE4YTIyOTI4OWFkZjc0N2RiYWQ0
ZTZjOGQ3NGEuLmNjZjEyNjFlMWE5ZjAzNTg0ZTM3NTMzMDdkMTAwNzRlODBhNGRkZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaApAQCAtMjAsMTAgKzIw
LDc4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlPd25lci5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBjbGFzcyBTVkdQcm9wZXJ0eUFjY2VzcyA6IHVpbnQ4X3QgeyBSZWFkV3JpdGUsIFJlYWRPbmx5
IH07CiBlbnVtIGNsYXNzIFNWR1Byb3BlcnR5U3RhdGUgOiB1aW50OF90IHsgQ2xlYW4sIERpcnR5
IH07CiAKK2NsYXNzIFNWR1Byb3BlcnR5IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUHJvcGVydHk+
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TVkdQcm9wZXJ0eSgpID0gZGVmYXVsdDsKKworICAg
IC8vIE1hbmFnaW5nIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgb3duZXIuCisgICAgYm9vbCBp
c0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQorICAgIHZvaWQgYXR0YWNoKFNW
R1Byb3BlcnR5T3duZXIqIG93bmVyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MpCisgICAgewor
ICAgICAgICBBU1NFUlQoIW1fb3duZXIpOworICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTVkdQ
cm9wZXJ0eVN0YXRlOjpDbGVhbik7CisgICAgICAgIG1fb3duZXIgPSBvd25lcjsKKyAgICAgICAg
bV9hY2Nlc3MgPSBhY2Nlc3M7CisgICAgfQorCisgICAgdm9pZCBkZXRhY2goKQorICAgIHsKKyAg
ICAgICAgbV9vd25lciA9IG51bGxwdHI7CisgICAgICAgIG1fYWNjZXNzID0gU1ZHUHJvcGVydHlB
Y2Nlc3M6OlJlYWRXcml0ZTsKKyAgICAgICAgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkNs
ZWFuOworICAgIH0KKworICAgIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmICghbV9vd25lcikKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gbV9vd25lci0+YXR0cmlidXRlQ29udGV4dEVsZW1lbnQoKTsK
KyAgICB9CisKKyAgICB2b2lkIGNvbW1pdENoYW5nZSgpCisgICAgeworICAgICAgICBpZiAoIW1f
b3duZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fb3duZXItPmNvbW1pdFByb3Bl
cnR5Q2hhbmdlKHRoaXMpOworICAgIH0KKworICAgIC8vIERPTSBhY2Nlc3MuCisgICAgU1ZHUHJv
cGVydHlBY2Nlc3MgYWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9hY2Nlc3M7IH0KKyAgICBib29s
IGlzUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBtX2FjY2VzcyA9PSBTVkdQcm9wZXJ0eUFjY2Vz
czo6UmVhZE9ubHk7IH0KKworICAgIC8vIFN5bmNocm9uaXppbmcgdGhlIFNWRyBhdHRyaWJ1dGUg
YW5kIGl0cyByZWZsZWN0aW9uIGhlcmUuCisgICAgYm9vbCBpc0RpcnR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpEaXJ0eTsgfQorICAgIHZvaWQgc2V0RGly
dHkoKSB7IG1fc3RhdGUgPSBTVkdQcm9wZXJ0eVN0YXRlOjpEaXJ0eTsgfQorICAgIE9wdGlvbmFs
PFN0cmluZz4gc3luY2hyb25pemUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU1ZH
UHJvcGVydHlTdGF0ZTo6Q2xlYW4pCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICBtX3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CisgICAgICAgIHJldHVy
biB2YWx1ZUFzU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gVGhpcyBpcyB1c2VkIHdoZW4gY2Fs
bGluZyBzZXRBdHRyaWJ1dGUoKS4KKyAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgU1ZHUHJv
cGVydHkoU1ZHUHJvcGVydHlPd25lciogb3duZXIgPSBudWxscHRyLCBTVkdQcm9wZXJ0eUFjY2Vz
cyBhY2Nlc3MgPSBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlKQorICAgICAgICA6IG1fb3du
ZXIob3duZXIpCisgICAgICAgICwgbV9hY2Nlc3MoYWNjZXNzKQorICAgIHsKKyAgICB9CisKKyAg
ICBTVkdQcm9wZXJ0eU93bmVyKiBtX293bmVyIHsgbnVsbHB0ciB9OworICAgIFNWR1Byb3BlcnR5
QWNjZXNzIG1fYWNjZXNzIHsgU1ZHUHJvcGVydHlBY2Nlc3M6OlJlYWRXcml0ZSB9OworICAgIFNW
R1Byb3BlcnR5U3RhdGUgbV9zdGF0ZSB7IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuIH07Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjhjNGNkZTZkZDBm
M2NhZmJjOGYyN2IyNzAyOTcwZTM1ZjQ4NzY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvci5oCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5h
bWUgUHJvcGVydHlUeXBlPgorY2xhc3MgU1ZHUHJvcGVydHlBY2Nlc3NvciA6IHB1YmxpYyBTVkdQ
b2ludGVyTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlLCBQcm9wZXJ0eVR5cGU+IHsKKyAgICB1c2lu
ZyBCYXNlID0gU1ZHUG9pbnRlck1lbWJlckFjY2Vzc29yPE93bmVyVHlwZSwgUHJvcGVydHlUeXBl
PjsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisKK3Byb3RlY3RlZDoKKyAgICB1
c2luZyBCYXNlOjpwcm9wZXJ0eTsKKyAgICB1c2luZyBCYXNlOjpzaW5nbGV0b247CisKKyAgICBi
b29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiBvd25lciwgY29uc3QgU1ZHUHJvcGVydHkmIHBy
b3BlcnR5KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMtPnByb3Bl
cnR5KG93bmVyKS5wdHIoKSA9PSAmcHJvcGVydHk7CisgICAgfQorfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3JJbXBs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzdkNjMxODQzNzViMjhiYTNjYTk1OTM1ZWJhMDZjNjExOGM5YjVhZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5QWNjZXNzb3JJbXBsLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
U1ZHUHJvcGVydHlBY2Nlc3Nvci5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBT
VkdTdHJpbmdMaXN0QWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHUHJvcGVydHlBY2Nlc3NvcjxP
d25lclR5cGUsIFNWR1N0cmluZ0xpc3Q+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHUHJvcGVydHlB
Y2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0cmluZ0xpc3Q+OworCitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZHU3RyaW5nTGlzdD4gT3duZXJUeXBlOjoq
cHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxP
d25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248
U1ZHU3RyaW5nTGlzdEFjY2Vzc29yLCBwcm9wZXJ0eT4oKTsgfQorfTsKKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lci5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lci5oCmluZGV4IGI0MmE1
NzhhMTUxYWYyOTljZTc4NTQ3ZjVmNWEwZGU5YjQ0OWU4MjQuLmM5ODE4YmU5Zjg0MGM3NjQ1Mzk4
ZTYxYjQ4OTM4MTg2MmEzNDY4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eU93bmVyLmgKQEAgLTI2LDYgKzI2LDkgQEAKICNwcmFnbWEgb25jZQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBTVkdFbGVtZW50OworY2xhc3MgU1ZH
UHJvcGVydHk7CiAKIGNsYXNzIFNWR1Byb3BlcnR5T3duZXIgewogcHVibGljOgpAQCAtNDAsMTEg
KzQzLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG93bmVyKCktPmF0dHJpYnV0ZUNvbnRl
eHRFbGVtZW50KCk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXRQcm9wZXJ0
eUNoYW5nZSgpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3Bl
cnR5KiBwcm9wZXJ0eSkKICAgICB7CiAgICAgICAgIGlmICghb3duZXIoKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgb3duZXIoKS0+Y29tbWl0UHJvcGVydHlDaGFuZ2UoKTsKKyAgICAg
ICAgb3duZXIoKS0+Y29tbWl0UHJvcGVydHlDaGFuZ2UocHJvcGVydHkpOwogICAgIH0KICAgICAK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmgKaW5kZXggZWY1NDZmZmZjNTIwZDMwNGNiZTI1YTU5
ZTkxZTQ4MDRhMTIxNDJmZC4uNTkzNTcwM2MyMDc2NGE0NTc1MGNmYjc4NTRmMWJkNTJiYTYwNDNl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlP
d25lclJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlPd25lclJlZ2lzdHJ5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3Bl
cnR5UGFpckFjY2Vzc29ySW1wbC5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5QWNjZXNzb3JJbXBs
LmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAKQEAgLTQyLDYgKzQzLDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAg
dGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBh
dHRyaWJ1dGVOYW1lLCBSZWY8U1ZHU3RyaW5nTGlzdD4gT3duZXJUeXBlOjoqcHJvcGVydHk+Cisg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAgeworICAgICAgICByZWdpc3Rl
clByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR1N0cmluZ0xpc3RBY2Nlc3NvcjxPd25lclR5cGU+
Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAgIH0KKworICAgIHRlbXBsYXRl
PGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAg
c3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAgeworICAgICAgICByZWdpc3RlclBy
b3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkQm9vbGVhbkFjY2Vzc29yPE93bmVyVHlw
ZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7CisgICAgfQorCiAgICAgdGVtcGxh
dGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3BlcnR5KCkKICAgICB7CkBAIC03MSw2ICs4NCwxOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmaW5kQWNjZXNzb3IoYXR0cmlidXRlTmFtZSk7CiAg
ICAgfQogCisgICAgUXVhbGlmaWVkTmFtZSBwcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZH
UHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgUXVhbGlm
aWVkTmFtZSBhdHRyaWJ1dGVOYW1lID0gbnVsbFFOYW1lKCk7CisgICAgICAgIGVudW1lcmF0ZVJl
Y3Vyc2l2ZWx5KFsmXShjb25zdCBhdXRvJiBlbnRyeSkgLT4gYm9vbCB7CisgICAgICAgICAgICBp
ZiAoIWVudHJ5LnZhbHVlLT5tYXRjaGVzKG1fb3duZXIsIHByb3BlcnR5KSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSBlbnRyeS5rZXk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4g
YXR0cmlidXRlTmFtZTsKKyAgICB9CisKICAgICBRdWFsaWZpZWROYW1lIGFuaW1hdGVkUHJvcGVy
dHlBdHRyaWJ1dGVOYW1lKGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVy
dHkpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0
ZU5hbWUgPSBudWxsUU5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaAppbmRleCA3YzI4ZmQ3YmQ4MWU0YTEwYmI1NzQzZDE5
MzY1NDc3ODgxMWUxYTYyLi41M2EwMzQ1NWZhZGU1MmFjNmNlZjlmNDI1YTNkOWUxMDhiYTdjZGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJl
Z2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlS
ZWdpc3RyeS5oCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdQcm9w
ZXJ0eVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaEFsbFBy
b3BlcnRpZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRdWFsaWZpZWROYW1lIHByb3BlcnR5
QXR0cmlidXRlTmFtZShjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFF1YWxpZmllZE5hbWUgYW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoY29uc3QgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmluZz4g
c3luY2hyb25pemUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgU3RyaW5nPiBzeW5jaHJvbml6ZUFsbEF0dHJpYnV0ZXMo
KSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc4Njg3NGRjYTAxMTY4YzJlYzRjNDcwYTJkNzM3MGEyNmZiMjJjYzUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPiAKLWNsYXNzIFNWR1N0YXRpY0xpc3RQcm9wZXJ0
eVRlYXJPZmYgOiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4gewotcHVibGlj
OgotICAgIHVzaW5nIFNlbGYgPSBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5
VHlwZT47Ci0gICAgdXNpbmcgQmFzZSA9IFNWR0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+Owot
Ci0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gdHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFpdHM8UHJv
cGVydHlUeXBlPjo6TGlzdEl0ZW1UeXBlOwotICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IHR5
cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46Okxpc3RJdGVtVGVhck9mZjsK
LQotICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsKLSAgICB1c2luZyBCYXNlOjptX3ZhbHVlczsKLQot
ICAgIHN0YXRpYyBSZWY8U2VsZj4gY3JlYXRlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBQ
cm9wZXJ0eVR5cGUmIHZhbHVlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNlbGYoY29udGV4dEVsZW1lbnQsIHZhbHVlcykpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpjbGVhclZhbHVlcygp
OwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPExpc3RJdGVtVHlwZT4gaW5pdGlhbGl6ZShjb25z
dCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0pCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6aW5p
dGlhbGl6ZVZhbHVlcyhuZXdJdGVtKTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxMaXN0SXRl
bVR5cGU+IGdldEl0ZW0odW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gQmFz
ZTo6Z2V0SXRlbVZhbHVlcyhpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0
ZW1UeXBlPiBpbnNlcnRJdGVtQmVmb3JlKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSwgdW5z
aWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6aW5zZXJ0SXRlbUJlZm9y
ZVZhbHVlcyhuZXdJdGVtLCBpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0
ZW1UeXBlPiByZXBsYWNlSXRlbShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0sIHVuc2lnbmVk
IGluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OnJlcGxhY2VJdGVtVmFsdWVzKG5l
d0l0ZW0sIGluZGV4KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxMaXN0SXRlbVR5cGU+IHJl
bW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6cmVt
b3ZlSXRlbVZhbHVlcyhpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1U
eXBlPiBhcHBlbmRJdGVtKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBCYXNlOjphcHBlbmRJdGVtVmFsdWVzKG5ld0l0ZW0pOwotICAgIH0KLQotcHJv
dGVjdGVkOgotICAgIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQotICAgICAgICA6IEJhc2UoVW5kZWZp
bmVkUm9sZSwgdmFsdWVzLCBudWxscHRyKQotICAgICAgICAsIG1fY29udGV4dEVsZW1lbnQoKmNv
bnRleHRFbGVtZW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzUmVhZE9ubHkoKSBjb25z
dCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcm9sZSA9PSBBbmltVmFsUm9sZTsK
LSAgICB9Ci0KLSAgICB2b2lkIGNvbW1pdENoYW5nZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBBU1NFUlQobV92YWx1ZXMpOwotICAgICAgICBtX3ZhbHVlcy0+Y29tbWl0Q2hhbmdlKG1fY29u
dGV4dEVsZW1lbnQpOwotICAgIH0KLQotICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1W
YWx1ZShjb25zdCBMaXN0SXRlbVR5cGUmLCB1bnNpZ25lZCopIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICAvLyBuby1vcCBmb3Igc3RhdGljIGxpc3RzCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKFJlZjxMaXN0SXRl
bVRlYXJPZmY+JiwgdW5zaWduZWQqKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFJlZjxTVkdF
bGVtZW50PiBtX2NvbnRleHRFbGVtZW50OwotfTsKLQotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364990</attachid>
            <date>2019-03-17 18:10:51 -0700</date>
            <delta_ts>2019-03-18 18:31:41 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>SVGStringList.patch</filename>
            <type>text/plain</type>
            <size>67112</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZWMyZjc4Nzk1MC4uYWFkZDVjMmJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDggQEAKKzIwMTktMDMtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNWRyBwcm9wZXJ0eSB0ZWFyIG9mZiBv
YmplY3RzIGZvciBTVkdTdHJpbmdMaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTU4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdTdHJpbmdMaXN0IGlzIG5vdCBhbmltYXRlZCBsaXN0LiBTbyB3
ZSBuZWVkIHRvIGludHJvZHVjZSB0d28gbmV3IGNsYXNzZXM6CisKKyAgICAgICAgLS0gU1ZHUHJv
cGVydHk6IFRoaXMgd2lsbCBiZSB0aGUgYmFzZSBvZiBhbGwgdGhlIG5vbi1hbmltYXRlZCBwcm9w
ZXJ0aWVzLgorICAgICAgICAgICBMaWtlIHRoZSBTVkdBbmltYXRlZFByb3BlcnR5LCBTVkdQcm9w
ZXJ0eSB3aWxsIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUKKyAgICAgICAgICAgYXR0cmlidXRlIG5h
bWUgaW4gU1ZHUHJvcGVydHlSZWdpc3RlcnkuIEl0IHdpbGwgYWxzbyBjb21taXRzIGNoYW5nZXMK
KyAgICAgICAgICAgdG8gdGhlIHJlZmxlY3RpbmcgYXR0cmlidXRlLiBBbmQgaXQgd2lsbCBwcm92
aWRlIGEgc3luY2hyb25pemUgc3RyaW5nCisgICAgICAgICAgIGZvciBsYXp5IGF0dHJpYnV0ZSB1
cGRhdGUuCisKKyAgICAgICAgLS0gU1ZHTGlzdDogSXQgd2lsbCBiZSB0aGUgYmFzZSBvZiBhbGwg
dGhlIGxpc3QgcHJvcGVydGllcy4gSXQgY2FuIGhvbGQKKyAgICAgICAgICAgcHJpbWl0aXZlIHR5
cGVzIG9yIFNWRyB0eXBlcy4gSW4gdGhpcyBwYXRjaCBwcmltaXRpdmUgdHlwZXMgd2lsbCBiZSAK
KyAgICAgICAgICAgc3VwcG9ydGVkIG9ubHkuIFRvIGRvIHRoYXQsIGEgc3VwZXJjbGFzcyBjYWxs
ZWQgU1ZHUHJpbWl0aXZlTGlzdCBpcworICAgICAgICAgICBhZGRlZC4gSXRzIGl0ZW1zIGFyZSBv
ZiBwcmltaXRpdmUgdHlwZSBvbmx5LgorCisgICAgICAgIE5vdGUgdGhhdCBTVkdMaXN0IGltcGxl
bWVudHMgdGhlIFNWRzIgc3BlY3MgcmVnYXJkaW5nIGFkZGluZyBhIG5ldyBpdGVtCisgICAgICAg
IHRvIHRoZSBsaXN0IHdoaWNoIHN0YXRlIHRoYXQgYSBjb3B5IG9mIHRoZSBpdGVtIGlzIGFkZGVk
IHRvIHRoZSBsaXN0IGlmCisgICAgICAgIHRoZSBpdGVtIGlzIGF0dGFjaGVkIHRvIGFub3RoZXIg
bGlzdC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5jaHJvbml6ZUFuaW1hdGVkU1ZHQXR0cmlidXRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hh
bmdlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHJp
bmdMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmg6IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpTVkdUZXN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXN0czo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6
OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0
czo6cmVxdWlyZWRGZWF0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0
czo6cmVxdWlyZWRFeHRlbnNpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
c3RzOjpzeXN0ZW1MYW5ndWFnZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6cmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Rlc3RzOjpzeXN0ZW1MYW5ndWFnZSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdUZXN0cy5pZGw6CisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OlNWR1ZpZXdFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1ZpZXdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdWaWV3RWxlbWVudDo6dmlld1RhcmdldCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR1Zp
ZXdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcmlt
aXRpdmVQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcmltaXRpdmVQ
cm9wZXJ0eTo6c2V0QmFzZVZhbCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFByb3BlcnR5Ojpj
b21taXRQcm9wZXJ0eUNoYW5nZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lz
dHJ5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xpc3Q6Om51bWJlck9mSXRlbXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Z2V0SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xpc3Q6Omluc2VydEl0ZW1CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGlzdDo6cmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6cmVtb3ZlSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjphcHBlbmRJdGVtKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xpc3Q6Oml0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6Oml0ZW1z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OnNpemUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGlzdDo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaXN0OjpjbGVhckl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmNhbkFsdGVy
TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpjYW5HZXRJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmNhblJlcGxhY2VJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3Q6OmNhblJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6
ZGV0YWNoSXRlbXMpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdNZW1iZXJBY2Nlc3Nvcjo6bWF0Y2hlcyBjb25zdCk6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlTGlzdC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUHJvcGVydHk6OmlzQXR0YWNoZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJv
cGVydHk6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6ZGV0YWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5Ojpjb250ZXh0RWxlbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6Y29tbWl0Q2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5OjphY2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UHJvcGVydHk6OmlzUmVhZE9ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHk6OmlzRGlydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OnNldERp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjpzeW5jaHJvbml6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6dmFsdWVBc1N0cmluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6U1ZHUHJvcGVydHkpOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3IuaDogQWRkZWQuCisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaDogQWRkZWQuCisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlPd25lcjo6Y29tbWl0UHJvcGVydHlDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5Lmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
U3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oOiBSZW1vdmVkLgorCiAyMDE5LTAzLTE3ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IHRoZSBTVkcgcHJvcGVydHkgdGVhciBvZmYgb2JqZWN0cyBmb3IgU1ZHQW5pbWF0ZWRCb29sZWFu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDRmODQyMTMzMjVlLi43MWNmZjFiMTFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTIzODQsNyArMjM4NCw2IEBAIHN2Zy9TVkdTVkdFbGVtZW50LmNwcAogc3ZnL1NWR1Nj
cmlwdEVsZW1lbnQuY3BwCiBzdmcvU1ZHU2V0RWxlbWVudC5jcHAKIHN2Zy9TVkdTdG9wRWxlbWVu
dC5jcHAKLXN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAogc3ZnL1NWR1N0eWxlRWxlbWVudC5j
cHAKIHN2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcAogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjk1YjZhY2UwYzEuLjNiZDBjMzA1YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjYsNyArMjY2LDYgQEAKIAkJMDg3
M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3M0I4NkExMzYwNjRFQTAwQTUyMkMyIC8qIEds
eXBoUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA4NzU1OEM2MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODdC
ODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZHQW5pbWF0ZWRBbmdsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3Qjg0OTUxMjcyQ0VDNzAwQTE0NDE3
IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCAqLzsgfTsKLQkJMDg4MEY3MEUxMjgyQjQ2RDAwOTQ4NTA1
IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODBGNzBEMTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdT
dGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi87IH07CiAJCTA4ODUwNjdGMTFEQTA0NUIwMDE4
MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODg1MDY4MDExREEw
NDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhB
MEUwNDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMERGQjEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi87IH07
CkBAIC0yMTM3LDYgKzIxMzYsMTAgQEAKIAkJNzFFQURDRDgyMjA4N0U3MjAwNjVBNDVGIC8qIFBv
aW50ZXJJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzFFQURDRDYyMjA4N0U2RDAwNjVBNDVGIC8qIFBvaW50ZXJJRC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxRUZDRURDMjAyQjM4QTkwMEQ3QzQx
MSAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcxRUZDRUQ3MjAyQjM4OEQwMEQ3QzQxMSAvKiBBbmltYXRpb25FZmZlY3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MUZC
OTY3QjEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVh
ck9mZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFG
Qjk2N0ExMzgzRDY0NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRl
YXJPZmYuaCAqLzsgfTsKKwkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3IC8qIFNWR1ByaW1pdGl2
ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcy
MTQ0MzJDMjIzRUIyMkUwMEYxMkZGNyAvKiBTVkdQcmltaXRpdmVMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNDQzMzIyMjNFQzg1RjAw
RjEyRkY3IC8qIFNWR0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMTQ0MzJFMjIzRUIyRkUwMEYxMkZGNyAvKiBTVkdMaXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNDQzMzMyMjNFQzhC
MDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBGQkE5NDQgLyogU1ZHUHJvcGVydHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjE0
NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0
IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MjRFRDMyQzFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5N
YXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0
RUQzMjkxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCAqLzsgfTsKIAkJNzI0
RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEz
QyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjMzLDcg
KzIyMzYsNiBAQAogCQk3QzMzMEEwMjFERjhGQUM2MDBEMzM5NUMgLyogR3JhcGhpY3NDb250ZXh0
M0RBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzMzMEEwMTFERjhGQUM2MDBEMzM5NUMgLyogR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1
dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0MzMzBBMDgxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzMzMEEwNjFERjlGOTUxMDBE
MzM5NUMgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAqLzsgfTsKIAkJN0MzOUMzNjUxRERBODY1MjAw
RkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMzlDMzYzMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5n
dGhMaXN0VmFsdWVzLmggKi87IH07Ci0JCTdDMzlDMzc3MUREQkUxNzAwMEZFRkIyOSAvKiBTVkdT
dHJpbmdMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzM5QzM2NzFEREI4MkNGMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDM0E5
MUU2MUM5NjNCODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDM0E5MUU1MUM5NjNCODgwMEQx
QTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNCNzk3MTE5MDg3NTdCMDBCNDdBMkQgLyogVXNl
ck1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRsZXIu
Y3BwICovOyB9OwogCQk3QzNCNzk3MjE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5k
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNC
Nzk3MDE5MDg3NTdCMDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU2NDAsNyArNTY0Miw2IEBA
CiAJCTA4NzU1OEMzMTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRl
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Vycm9nYXRl
UGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDg3NTU4QzQxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdXJyb2dhdGVQYWlyQXdhcmVU
ZXh0SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg3Qjg0OTUxMjcy
Q0VDNzAwQTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRBbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwODgwRjcwRDEyODJCNDZEMDA5NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVh
ck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTdGF0aWNMaXN0UHJv
cGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdEMTFE
QTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGFpbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdF
MTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBhaW50UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4
QTBERkIxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1MDUsNiArOTUwNiwx
MCBAQAogCQk3MUZCOTY3QTEzODNENjQ2MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
blByb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdB
bmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyMTQ0MzI5MjIzRTNEQzUwMEYxMkZGNyAvKiBTVkdBbmltYXRpb25EaXNjcmV0
ZUZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIxNDQzMkEyMjNFM0RFNDAwRjEyRkY3
IC8qIFNWR0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0FuaW1hdGlvbkRpc2NyZXRlRnVuY3Rpb25JbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTcyMTQ0MzJDMjIzRUIyMkUwMEYxMkZGNyAvKiBTVkdQcmltaXRpdmVMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR1ByaW1pdGl2ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzIxNDQzMkUyMjNFQjJGRTAwRjEyRkY3IC8qIFNWR0xpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjE0NDMyRjIyM0VC
NkU4MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzIxNDQzMzAyMjNFQjdDNzAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5QWNjZXNzb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHUHJvcGVydHlBY2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjNGOTdCQzIyMzhFRTA4MDA3RjA3OUMgLyogU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250
cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkQyMjM4RUUw
ODAwN0YwNzlDIC8qIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjNGOTdCRTIyMzk1MTJEMDA3RjA3OUMgLyogU1ZHTGVnYWN5QXR0cmli
dXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZWdhY3lB
dHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTk3MzAsOCArOTczNSw2IEBACiAJCTdDMzNGMzYwMUI0QTA1MDQwMDUwMkNBRiAvKiBK
U0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0MzOUMzNjIxRERBODY0OTAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTGVuZ3RoTGlz
dFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzYzMUREQTg2
NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0xlbmd0aExpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0MzOUMzNjYxRERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHU3RyaW5nTGlzdFZh
bHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlDMzY3MUREQjgyQ0Yw
MEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR1N0cmluZ0xpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0MzOUMzNjgxRERCODZEMzAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHTnVtYmVyTGlzdFZhbHVl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzY5MUREQjg2RDMwMEZF
RkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR051bWJlckxpc3RWYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MzOUMzNkExRERCODcxQzAwRkVGQjI5IC8qIFNWR1BvaW50TGlzdFZhbHVlcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQb2ludExpc3RWYWx1ZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYyNDMsMTggKzE2MjQ2LDIxIEBACiAJ
CQkJNTVENzBEMjEyMjNCMDBCQjAwMDQ0QjhFIC8qIFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHku
Y3BwICovLAogCQkJCTU1RDcwRDIwMjIzQjAwOTEwMDA0NEI4RSAvKiBTVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5LmggKi8sCiAJCQkJNTVENzBEMjIyMjNCMDBFQTAwMDQ0QjhFIC8qIFNWR0xlZ2Fj
eVByb3BlcnR5LmggKi8sCisJCQkJNzIxNDQzMkUyMjNFQjJGRTAwRjEyRkY3IC8qIFNWR0xpc3Qu
aCAqLywKIAkJCQkwODEwNzY0MzEyODI4NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5Lmgg
Ki8sCiAJCQkJMDg4QTBFMDAxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaCAqLywKIAkJCQkwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAgLyogU1ZHTWF0cml4VGVhck9m
Zi5oICovLAogCQkJCTU1RUU1MzU0MjIzQjI5RTkwMEZCQTk0NCAvKiBTVkdNZW1iZXJBY2Nlc3Nv
ci5oICovLAogCQkJCTU1QkUwMjVBMjIzQjI5QzIwMDMyRjA4QSAvKiBTVkdQb2ludGVyTWVtYmVy
QWNjZXNzb3IuaCAqLywKKwkJCQk3MjE0NDMyQzIyM0VCMjJFMDBGMTJGRjcgLyogU1ZHUHJpbWl0
aXZlTGlzdC5oICovLAogCQkJCTU1RUU1MzYzMjIzQjJBMjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0
eS5oICovLAorCQkJCTcyMTQ0MzMwMjIzRUI3QzcwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eUFjY2Vz
c29yLmggKi8sCisJCQkJNzIxNDQzMkYyMjNFQjZFODAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5QWNj
ZXNzb3JJbXBsLmggKi8sCiAJCQkJNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3Bl
cnR5T3duZXIuaCAqLywKIAkJCQk1NUJFMDI1QzIyM0IyOUMzMDAzMkYwOEEgLyogU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5LmggKi8sCiAJCQkJNTVCRTAyNTcyMjNCMjlDMDAwMzJGMDhBIC8qIFNW
R1Byb3BlcnR5UmVnaXN0cnkuaCAqLywKIAkJCQkwODhBMEUwMjEyNkVGMURCMDA5NzhGN0EgLyog
U1ZHUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR1Byb3BlcnR5VHJhaXRzLmggKi8sCi0JCQkJMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4NTA1IC8q
IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODEzQTRFOTEyODQxMzI2
MDA5OTI1MTEgLyogU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHByb3BlcnRpZXM7CkBAIC0yNDUxMiw4ICsyNDUxOCw2IEBACiAJCQkJQjIyMjc5MTQwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmlkbCAqLywKIAkJCQlCMjIyNzkxNjBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlzdC5oICovLAogCQkJCUIyMjI3OTE3MEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmlkbCAqLywKLQkJCQk3QzM5QzM2NjFEREI4MkNGMDBG
RUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAgKi8sCi0JCQkJN0MzOUMzNjcxRERCODJD
RjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCAqLywKIAkJCQlCMjIyNzkyMTBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzkyMjBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc5MjMwRDAwQkYy
MTAwNzFCNzgyIC8qIFNWR1N0eWxlRWxlbWVudC5pZGwgKi8sCkBAIC0zMjAxNyw2ICszMjAyMSw3
IEBACiAJCQkJN0NDRUJGQzAxREQ4RjZBQjAwMkM0MEI4IC8qIFNWR0xlbmd0aFZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0EzOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0EzQzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHTGluZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMyMjIzRUM4
NUYwMEYxMkZGNyAvKiBTVkdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODEwNzY0NDEyODI4
NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhB
MEUwOTEyNkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBNDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xvY2F0YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMjA4NCw2ICszMjA4OSw5IEBACiAJCQkJQjIyMjdBOTEwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0E5NDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0E5NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3IC8qIFNWR1By
aW1pdGl2ZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZG
NyAvKiBTVkdQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzIxNDQzMzQyMjNFQzkxNjAw
RjEyRkY3IC8qIFNWR1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEwRTBC
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4OEEwRTBDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjEwMiwxMSArMzIxMTAsOSBAQAogCQkJ
CUIyMjI3QUEzMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyN0FBNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2V0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTRBRkQwMTAwREFGMzM1NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkwODgwRjcwRTEyODJCNDZEMDA5NDg1MDUgLyogU1ZH
U3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxM0E0RUEx
Mjg0MTMyNjAwOTkyNTExIC8qIFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBQTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N0b3BFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0FBQzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3RyaW5nTGlz
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0MzOUMzNzcxRERCRTE3MDAwRkVGQjI5IC8qIFNWR1N0
cmluZ0xpc3RWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUI4MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUJCMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdTVkdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIy
N0FCRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3dpdGNoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYjY2NGQzZDBiMGMuLjBjODY1OTg4MjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC03MjAsMTIgKzcyMCwyNCBAQCB2b2lk
IFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29ucwogICAgIFNWR0VsZW1lbnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0
X2Nhc3Q8U1ZHRWxlbWVudCo+KHRoaXMpOwogICAgIGlmIChuYW1lID09IGFueVFOYW1lKCkpCiAg
ICAgICAgIHN5bmNocm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRyaWJ1dGUobm9uQ29uc3RUaGlzKTsK
LSAgICBlbHNlIGlmIChpc0FuaW1hdGVkUHJvcGVydHlBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICBl
bHNlIHsKICAgICAgICAgLy8gSWYgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBoYXMgY2hhbmdl
ZCwgc2VyaWFsaXplIHRoZSBuZXcgdmFsdWUgdG8gdGhlIGF0dHJpYnV0ZS4KICAgICAgICAgaWYg
KGF1dG8gdmFsdWUgPSBwcm9wZXJ0eVJlZ2lzdHJ5KCkuc3luY2hyb25pemUobmFtZSkpCiAgICAg
ICAgICAgICBub25Db25zdFRoaXMtPnNldFN5bmNocm9uaXplZExhenlBdHRyaWJ1dGUobmFtZSwg
KnZhbHVlKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbm9uQ29uc3RUaGlzLT5zeW5jaHJvbml6ZUF0
dHJpYnV0ZShuYW1lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbm9uQ29uc3RUaGlzLT5z
eW5jaHJvbml6ZUF0dHJpYnV0ZShuYW1lKTsKKyAgICB9Cit9CisgICAgCit2b2lkIFNWR0VsZW1l
bnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5KiBwcm9wZXJ0eSkKK3sKKyAgICAv
LyBXZSB3YW50IHRvIGRpcnR5IHRoZSB0b3AtbGV2ZWwgcHJvcGVydHkgd2hlbiBhIGRlc2NlbmRh
bnQgY2hhbmdlcy4gRm9yIGV4YW1wbGUKKyAgICAvLyBhIGNoYW5nZSBpbiBhbiBTVkdMZW5ndGgg
aXRlbSBpbiBTVkdMZW5ndGhMaXN0IHNob3VsZCBzZXQgdGhlIGRpcnR5IGZsYWcgb24KKyAgICAv
LyBTVkdMZW5ndGhMaXN0IGFuZCBub3QgdGhlIFNWR0xlbmd0aC4KKyAgICBwcm9wZXJ0eS0+c2V0
RGlydHkoKTsKKworICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc3ZnQXR0cmli
dXRlQ2hhbmdlZChwcm9wZXJ0eVJlZ2lzdHJ5KCkucHJvcGVydHlBdHRyaWJ1dGVOYW1lKCpwcm9w
ZXJ0eSkpOwogfQogCiB2b2lkIFNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR0Fu
aW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApp
bmRleCBkOGJmYzJkZjg3Yi4uOGE4ODQ3NDVkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApA
QCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW5pbWF0ZWRQcm9wZXJ0eUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgYm9vbCBpc0FuaW1hdGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAotICAgIHZvaWQgY29tbWl0
UHJvcGVydHlDaGFuZ2UoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNvbW1pdFByb3BlcnR5Q2hh
bmdlKFNWR1Byb3BlcnR5Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5n
ZShTVkdBbmltYXRlZFByb3BlcnR5Jik7CiAKICAgICBjb25zdCBTVkdFbGVtZW50KiBhdHRyaWJ1
dGVDb250ZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCmluZGV4IDdmZTdmMDBmYzUyLi5lZDdlYTQ0OTY4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDMzICsyNSw2MyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1
ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFs
dWVzLmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU1ZHUHJp
bWl0aXZlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR1N0cmluZ0xp
c3QgZmluYWwgOiBwdWJsaWMgU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdM
aXN0VmFsdWVzPiB7CitjbGFzcyBTVkdTdHJpbmdMaXN0IGZpbmFsIDogcHVibGljIFNWR1ByaW1p
dGl2ZUxpc3Q8U3RyaW5nPiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1ByaW1pdGl2ZUxpc3Q8U3Ry
aW5nPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHVzaW5nIEJhc2U6Om1faXRlbXM7CisK
IHB1YmxpYzoKLSAgICB1c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdFZhbHVlcz47Ci0gICAgdXNpbmcg
TGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBw
ZXJDYWNoZTsKKyAgICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xpc3Q+IGNyZWF0ZShTVkdQcm9wZXJ0
eU93bmVyKiBvd25lcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1N0
cmluZ0xpc3Qob3duZXIpKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xpc3Q+
IGNyZWF0ZShTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgU1ZHU3RyaW5nTGlzdFZhbHVlcyYg
dmFsdWVzKQorICAgIHZvaWQgcmVzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdTdHJpbmdMaXN0KCZjb250ZXh0RWxlbWVudCwg
dmFsdWVzKSk7CisgICAgICAgIHBhcnNlKHN0cmluZywgJyAnKTsKKworICAgICAgICAvLyBBZGQg
ZW1wdHkgc3RyaW5nLCBpZiBsaXN0IGlzIGVtcHR5LgorICAgICAgICBpZiAobV9pdGVtcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChlbXB0eVN0cmluZygpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgUmVmPFNWR1N0cmluZ0xpc3Q+IGNyZWF0ZShBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmYmLCBTVkdQcm9wZXJ0eVJvbGUsIFNWR1N0cmluZ0xpc3RWYWx1ZXMmIHZhbHVl
cywgTGlzdFdyYXBwZXJDYWNoZSYpCisgICAgYm9vbCBwYXJzZShjb25zdCBTdHJpbmcmIGRhdGEs
IFVDaGFyIGRlbGltaXRlcikKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRv
IHJlbW92ZSB0aGlzLiBJdCdzIG9ubHkgbmVlZGVkIHRvIGtlZXAgV2luZG93cyBjb21waWxpbmcu
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTVkdTdHJpbmdMaXN0KG51bGxwdHIsIHZhbHVlcykpOworICAgICAgICBjbGVhckl0ZW1z
KCk7CisKKyAgICAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGRh
dGEpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgICAgICBjb25zdCBVQ2hhciogcHRyID0g
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgICAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsg
ZGF0YS5sZW5ndGgoKTsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgeworICAgICAgICAgICAg
Y29uc3QgVUNoYXIqIHN0YXJ0ID0gcHRyOworICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAm
JiAqcHRyICE9IGRlbGltaXRlciAmJiAhaXNTVkdTcGFjZSgqcHRyKSkKKyAgICAgICAgICAgICAg
ICBwdHIrKzsKKyAgICAgICAgICAgIGlmIChwdHIgPT0gc3RhcnQpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChTdHJpbmcoc3RhcnQsIHB0ciAtIHN0
YXJ0KSk7CisgICAgICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIs
IGVuZCwgZGVsaW1pdGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwdHIgPT0gZW5k
OwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBTVkdTdHJpbmdMaXN0KFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50LCBTVkdTdHJpbmdMaXN0VmFsdWVzJiB2YWx1ZXMpCi0gICAgICAgIDogU1ZHU3Rh
dGljTGlzdFByb3BlcnR5VGVhck9mZjxTVkdTdHJpbmdMaXN0VmFsdWVzPihjb250ZXh0RWxlbWVu
dCwgdmFsdWVzKQorICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKworICAgICAgICBmb3IgKGF1dG8g
c3RyaW5nIDogbV9pdGVtcykgeworICAgICAgICAgICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkpCisg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKworICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoc3RyaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0cmluZ0xpc3RWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RW
YWx1ZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmY4OThhOTEyYi4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIgotCi0j
aW5jbHVkZSAiU1ZHRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi12b2lkIFNWR1N0cmluZ0xpc3RWYWx1ZXM6OmNvbW1pdENoYW5nZShTVkdFbGVtZW50JiBj
b250ZXh0RWxlbWVudCkKLXsKLSAgICBjb250ZXh0RWxlbWVudC5pbnZhbGlkYXRlU1ZHQXR0cmli
dXRlcygpOwotICAgIGNvbnRleHRFbGVtZW50LnN2Z0F0dHJpYnV0ZUNoYW5nZWQobV9hdHRyaWJ1
dGVOYW1lKTsKLX0KLQotdm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVzOjpyZXNldChjb25zdCBTdHJp
bmcmIHN0cmluZykKLXsKLSAgICBwYXJzZShzdHJpbmcsICcgJyk7Ci0KLSAgICAvLyBBZGQgZW1w
dHkgc3RyaW5nLCBpZiBsaXN0IGlzIGVtcHR5LgotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAg
IGFwcGVuZChlbXB0eVN0cmluZygpKTsKLX0KLQotdm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVzOjpw
YXJzZShjb25zdCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKLXsKLSAgICAvLyBUT0RP
IDogbW9yZSBlcnJvciBjaGVja2luZy9yZXBvcnRpbmcKLSAgICBjbGVhcigpOwotCi0gICAgYXV0
byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KGRhdGEpLnVwY29udmVydGVkQ2hh
cmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBwdHIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7
Ci0gICAgY29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIGRhdGEubGVuZ3RoKCk7Ci0gICAgd2hpbGUg
KHB0ciA8IGVuZCkgewotICAgICAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBwdHI7Ci0gICAgICAg
IHdoaWxlIChwdHIgPCBlbmQgJiYgKnB0ciAhPSBkZWxpbWl0ZXIgJiYgIWlzU1ZHU3BhY2UoKnB0
cikpCi0gICAgICAgICAgICBwdHIrKzsKLSAgICAgICAgaWYgKHB0ciA9PSBzdGFydCkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBhcHBlbmQoU3RyaW5nKHN0YXJ0LCBwdHIgLSBzdGFydCkp
OwotICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXNPckRlbGltaXRlcihwdHIsIGVuZCwgZGVs
aW1pdGVyKTsKLSAgICB9Ci19Ci0KLVN0cmluZyBTVkdTdHJpbmdMaXN0VmFsdWVzOjp2YWx1ZUFz
U3RyaW5nKCkgY29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0KLSAgICB1bnNp
Z25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgaWYgKGkgPiAwKQotICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoJyAnKTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZChhdChpKSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHJpbmdMaXN0VmFsdWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmOWEyNzQy
MjE5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZh
bHVlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCi0jaW5j
bHVkZSAiU1ZHQXR0cmlidXRlQWNjZXNzb3IuaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0
cy5oIgotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFNWR0VsZW1lbnQ7Ci1jbGFzcyBTVkdTdHJpbmdMaXN0OwotY2xhc3MgU1ZHU3RyaW5n
TGlzdFZhbHVlczsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi1jbGFzcyBTVkdQcm9wZXJ0eVRl
YXJPZmY7Ci0KLXVzaW5nIFNWR1N0cmluZ0xpc3RWYWx1ZXNBdHRyaWJ1dGUgPSBTVkdQcm9wZXJ0
eUF0dHJpYnV0ZTxTVkdTdHJpbmdMaXN0VmFsdWVzPjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgT3du
ZXJUeXBlPgotdXNpbmcgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZUFjY2Vzc29yID0gU1ZH
UHJvcGVydHlBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0cmluZ0xpc3RWYWx1ZXNB
dHRyaWJ1dGU+OwotCi1jbGFzcyBTVkdTdHJpbmdMaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZl
Y3RvcjxTdHJpbmc+IHsKLXB1YmxpYzoKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgICAgIDogbV9hdHRyaWJ1dGVOYW1lKGF0
dHJpYnV0ZU5hbWUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgcmVzZXQoY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmLCBVQ2hhciBkZWxpbWl0ZXIgPSAnLCcp
OwotCi0gICAgLy8gT25seSB1c2VkIGJ5IFNWR1N0cmluZ0xpc3QuCi0gICAgdm9pZCBjb21taXRD
aGFuZ2UoU1ZHRWxlbWVudCYgY29udGV4dEVsZW1lbnQpOwotCi0gICAgU3RyaW5nIHZhbHVlQXNT
dHJpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBtX2F0
dHJpYnV0ZU5hbWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdTdHJpbmdMaXN0VmFsdWVzPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBT
VkdTdHJpbmdMaXN0VmFsdWVzJiBsaXN0KSB7IHJldHVybiBsaXN0LnZhbHVlQXNTdHJpbmcoKTsg
fQotCi0gICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU3RyaW5nOwotICAgIHVzaW5nIExpc3RJdGVt
VGVhck9mZiA9IFNWR1Byb3BlcnR5VGVhck9mZjxTdHJpbmc+OwotICAgIHVzaW5nIExpc3RQcm9w
ZXJ0eVRlYXJPZmYgPSBTVkdTdHJpbmdMaXN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKaW5kZXggNzEzNGNlN2I4ZTYuLmY0NGY5MGUzZmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKQEAgLTEwOSwxOCArMTA5LDE2IEBAIHN0YXRpYyBjb25z
dCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkU1ZH
RmVhdHVyZXMoKQogCiBTVkdUZXN0czo6U1ZHVGVzdHMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiAgICAgOiBtX2NvbnRleHRFbGVtZW50KCpjb250ZXh0RWxlbWVudCkKKyAgICAsIG1fcmVx
dWlyZWRGZWF0dXJlcyhTVkdTdHJpbmdMaXN0OjpjcmVhdGUoY29udGV4dEVsZW1lbnQpKQorICAg
ICwgbV9yZXF1aXJlZEV4dGVuc2lvbnMoU1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKGNvbnRleHRFbGVt
ZW50KSkKKyAgICAsIG1fc3lzdGVtTGFuZ3VhZ2UoU1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKGNvbnRl
eHRFbGVtZW50KSkKIHsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdU
ZXN0czo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJp
YnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cmVxdWlyZWRG
ZWF0dXJlc0F0dHIsICZTVkdUZXN0czo6bV9yZXF1aXJlZEZlYXR1cmVzPigpOwotICAgIHJlZ2lz
dHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLCAm
U1ZHVGVzdHM6Om1fcmVxdWlyZWRFeHRlbnNpb25zPigpOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVy
QXR0cmlidXRlPFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsICZTVkdUZXN0czo6bV9zeXN0
ZW1MYW5ndWFnZT4oKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6
cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIsICZTVkdUZXN0
czo6bV9yZXF1aXJlZEZlYXR1cmVzPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyLCAmU1ZHVGVzdHM6
Om1fcmVxdWlyZWRFeHRlbnNpb25zPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdp
c3RlclByb3BlcnR5PFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIsICZTVkdUZXN0czo6bV9z
eXN0ZW1MYW5ndWFnZT4oKTsKKyAgICB9KTsKIH0KIAogU1ZHVGVzdHM6OkF0dHJpYnV0ZVJlZ2lz
dHJ5JiBTVkdUZXN0czo6YXR0cmlidXRlUmVnaXN0cnkoKQpAQCAtMTMwLDcgKzEyOCw3IEBAIFNW
R1Rlc3RzOjpBdHRyaWJ1dGVSZWdpc3RyeSYgU1ZHVGVzdHM6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCkK
IAogYm9vbCBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQogewotICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOworICAgIHJldHVybiBQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwogfQogCiBib29sIFNWR1Rlc3RzOjpoYXNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCkBAIC0xNDUsMTUgKzE0MywxNSBAQCBi
b29sIFNWR1Rlc3RzOjpoYXNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiAKIGJv
b2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogewotICAgIGZvciAoYXV0byYgZmVhdHVyZSA6
IG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZSgpKSB7CisgICAgZm9yIChhdXRvJiBmZWF0dXJlIDog
bV9yZXF1aXJlZEZlYXR1cmVzLT5pdGVtcygpKSB7CiAgICAgICAgIGlmIChmZWF0dXJlLmlzRW1w
dHkoKSB8fCAhc3VwcG9ydGVkU1ZHRmVhdHVyZXMoKS5jb250YWlucyhmZWF0dXJlKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6IG1f
c3lzdGVtTGFuZ3VhZ2UudmFsdWUoKSkgeworICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBtX3N5
c3RlbUxhbmd1YWdlLT5pdGVtcygpKSB7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSBkZWZhdWx0
TGFuZ3VhZ2UoKS5zdWJzdHJpbmcoMCwgMikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogbV9yZXF1aXJlZEV4dGVuc2lvbnMudmFs
dWUoKSkgeworICAgIGZvciAoYXV0byYgZXh0ZW5zaW9uIDogbV9yZXF1aXJlZEV4dGVuc2lvbnMt
Pml0ZW1zKCkpIHsKICAgICAgICAgaWYgKCFoYXNFeHRlbnNpb24oZXh0ZW5zaW9uKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNjMsMTEgKzE2MSwxMSBAQCBib29sIFNW
R1Rlc3RzOjppc1ZhbGlkKCkgY29uc3QKIHZvaWQgU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVxdWlyZWRGZWF0dXJlc0F0dHIpCi0g
ICAgICAgIG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZSgpLnJlc2V0KHZhbHVlKTsKKyAgICAgICAg
bV9yZXF1aXJlZEZlYXR1cmVzLT5yZXNldCh2YWx1ZSk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUg
PT0gcmVxdWlyZWRFeHRlbnNpb25zQXR0cikKLSAgICAgICAgbV9yZXF1aXJlZEV4dGVuc2lvbnMu
dmFsdWUoKS5yZXNldCh2YWx1ZSk7CisgICAgICAgIG1fcmVxdWlyZWRFeHRlbnNpb25zLT5yZXNl
dCh2YWx1ZSk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gc3lzdGVtTGFuZ3VhZ2VBdHRyKQot
ICAgICAgICBtX3N5c3RlbUxhbmd1YWdlLnZhbHVlKCkucmVzZXQodmFsdWUpOworICAgICAgICBt
X3N5c3RlbUxhbmd1YWdlLT5yZXNldCh2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHVGVzdHM6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xODcsMjQg
KzE4NSw2IEBAIHZvaWQgU1ZHVGVzdHM6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxR
dWFsaWZpZWROYW1lPiYgc3VwcG9ydGVkQXR0cmlidXRlCiAgICAgc3VwcG9ydGVkQXR0cmlidXRl
cy5hZGQoc3lzdGVtTGFuZ3VhZ2VBdHRyKTsKIH0KIAotUmVmPFNWR1N0cmluZ0xpc3Q+IFNWR1Rl
c3RzOjpyZXF1aXJlZEZlYXR1cmVzKCkKLXsKLSAgICBtX3JlcXVpcmVkRmVhdHVyZXMuc2V0U2hv
dWxkU3luY2hyb25pemUodHJ1ZSk7Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNyZWF0ZSht
X2NvbnRleHRFbGVtZW50LCBtX3JlcXVpcmVkRmVhdHVyZXMudmFsdWUoKSk7Ci19Ci0KLVJlZjxT
VkdTdHJpbmdMaXN0PiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKCkKLXsKLSAgICBtX3Jl
cXVpcmVkRXh0ZW5zaW9ucy5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsKLSAgICByZXR1cm4g
U1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKG1fY29udGV4dEVsZW1lbnQsIG1fcmVxdWlyZWRFeHRlbnNp
b25zLnZhbHVlKCkpOwotfQotCi1SZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHVGVzdHM6OnN5c3RlbUxh
bmd1YWdlKCkKLXsKLSAgICBtX3N5c3RlbUxhbmd1YWdlLnNldFNob3VsZFN5bmNocm9uaXplKHRy
dWUpOwotICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUobV9jb250ZXh0RWxlbWVudCwg
bV9zeXN0ZW1MYW5ndWFnZS52YWx1ZSgpKTsKLX0KLQogYm9vbCBTVkdUZXN0czo6aGFzRmVhdHVy
ZUZvckxlZ2FjeUJpbmRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIGhlcmUgb25seSB0byBi
ZSBleHBvc2VkIGluIHRoZSBPYmplY3RpdmUtQyBhbmQgR09iamVjdCBiaW5kaW5ncyBmb3IgYm90
aCBOb2RlIGFuZCBET01JbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXN0cy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgKaW5kZXggNjcx
MzZlZGRiOGUuLjE2MmVjMTI1ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGVzdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaApAQCAtMjEsOCArMjEs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZS5oIgotI2luY2x1
ZGUgIlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksMjEgKzU4LDIwIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBoYXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MoY29u
c3QgU3RyaW5nJiBmZWF0dXJlLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgY2FsbGVkIGZyb20gRE9NIHRocm91Z2ggdGhlIHN1cGVyIGNsYXNzZXMu
Ci0gICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHJlcXVpcmVkRmVhdHVyZXMoKTsKLSAgICBSZWY8U1ZH
U3RyaW5nTGlzdD4gcmVxdWlyZWRFeHRlbnNpb25zKCk7Ci0gICAgUmVmPFNWR1N0cmluZ0xpc3Q+
IHN5c3RlbUxhbmd1YWdlKCk7CisgICAgU1ZHU3RyaW5nTGlzdCYgcmVxdWlyZWRGZWF0dXJlcygp
IHsgcmV0dXJuIG1fcmVxdWlyZWRGZWF0dXJlczsgfQorICAgIFNWR1N0cmluZ0xpc3QmIHJlcXVp
cmVkRXh0ZW5zaW9ucygpIHsgcmV0dXJuIG1fcmVxdWlyZWRFeHRlbnNpb25zOyB9CisgICAgU1ZH
U3RyaW5nTGlzdCYgc3lzdGVtTGFuZ3VhZ2UoKSB7IHJldHVybiBtX3N5c3RlbUxhbmd1YWdlOyB9
CiAKIHByb3RlY3RlZDoKICAgICBTVkdUZXN0cyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7
CiAKIHByaXZhdGU6CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0
ZU93bmVyUHJveHlJbXBsPFNWR1Rlc3RzPjsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKIAogICAgIFNWR0VsZW1lbnQmIG1fY29udGV4dEVsZW1lbnQ7Ci0gICAgU1ZHU3Ry
aW5nTGlzdFZhbHVlc0F0dHJpYnV0ZSBtX3JlcXVpcmVkRmVhdHVyZXMgeyBTVkdOYW1lczo6cmVx
dWlyZWRGZWF0dXJlc0F0dHIgfTsKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRlIG1f
cmVxdWlyZWRFeHRlbnNpb25zIHsgU1ZHTmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIgfTsK
LSAgICBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRlIG1fc3lzdGVtTGFuZ3VhZ2UgeyBTVkdO
YW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyIH07CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fcmVx
dWlyZWRGZWF0dXJlczsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEV4dGVuc2lv
bnM7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fc3lzdGVtTGFuZ3VhZ2U7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVz
dHMuaWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbAppbmRleCBhNDRmMDczZTk0
NC4uM2I3YTljNzg4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmlkbApAQCAtMjgsOSArMjgsOSBA
QAogICAgIE5vSW50ZXJmYWNlT2JqZWN0LAogICAgIFN1cHByZXNzVG9KU09iamVjdCwKIF0gaW50
ZXJmYWNlIFNWR1Rlc3RzIHsKLSAgICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZH
U3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOwotICAgIFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHJlcXVpcmVkRXh0ZW5zaW9uczsKLSAgICBbTmV3T2JqZWN0
XSByZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEZlYXR1cmVzOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBTVkdTdHJpbmdMaXN0IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCBzeXN0ZW1MYW5ndWFnZTsKIAogICAgIC8v
IEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3
cm9uZy4KICAgICBib29sZWFuIGhhc0V4dGVuc2lvbihvcHRpb25hbCBET01TdHJpbmcgZXh0ZW5z
aW9uID0gInVuZGVmaW5lZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmgKaW5kZXggMzNjOWY2NTM2Y2IuLjNmMjhkZmRkN2FlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKQEAgLTYyLDEyICs2
MiwxNSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVy
UHJveHk7IH0KICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKIAorICAgIGNv
bnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KKwogICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7CiAgICAgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVy
UHJveHkgeyAqdGhpcyB9OworICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKICAgICBTVkdBbmltYXRlZExlbmd0aExpc3RBdHRyaWJ1dGUgbV94OwogICAg
IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEF0dHJpYnV0ZSBtX3k7CiAgICAgU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0QXR0cmlidXRlIG1fZHg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcApp
bmRleCA1M2JmNGEzNGZmMS4uMzM5NmM2ZTk4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdF
bGVtZW50LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTM0LDkgKzM0LDEzIEBAIGlubGluZSBTVkdWaWV3RWxlbWVudDo6
U1ZHVmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRv
CiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCh0aGlzKQogICAgICwgU1ZHRml0VG9WaWV3Qm94KHRoaXMpCi0gICAg
LCBtX3ZpZXdUYXJnZXQoU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKFNWR05hbWVzOjp2aWV3VGFnKSk7CisgICAgCisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAg
ICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnZpZXdUYXJn
ZXRBdHRyLCAmU1ZHVmlld0VsZW1lbnQ6Om1fdmlld1RhcmdldD4oKTsKKyAgICB9KTsKIH0KIAog
UmVmPFNWR1ZpZXdFbGVtZW50PiBTVkdWaWV3RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ0LDE1ICs0OCwxMiBAQCBS
ZWY8U1ZHVmlld0VsZW1lbnQ+IFNWR1ZpZXdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1ZpZXdF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdW
aWV3RWxlbWVudDo6dmlld1RhcmdldCgpCi17Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xpc3Q6OmNy
ZWF0ZSgqdGhpcywgbV92aWV3VGFyZ2V0KTsKLX0KLQogdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dmlld1RhcmdldEF0dHIpCi0g
ICAgICAgIG1fdmlld1RhcmdldC5yZXNldCh2YWx1ZSk7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnZpZXdUYXJnZXRBdHRyKSB7CisgICAgICAgIG1fdmlld1RhcmdldC0+cmVzZXQodmFsdWUp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpOwogICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgKaW5k
ZXggZDYzMzM1YmViODkuLmYzZjc5NWQzMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVmlld0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI0LDEyICsyNCwxMSBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHRml0
VG9WaWV3Qm94LmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlNWR1pv
b21BbmRQYW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdTdHJpbmdMaXN0
OwotCiBjbGFzcyBTVkdWaWV3RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJs
aWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgcHVibGljIFNWR0ZpdFRvVmlld0JveCwg
cHVibGljIFNWR1pvb21BbmRQYW4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU1ZHVmll
d0VsZW1lbnQpOwogcHVibGljOgpAQCAtMzgsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
U1ZHRWxlbWVudDo6cmVmOwogICAgIHVzaW5nIFNWR0VsZW1lbnQ6OmRlcmVmOwogCi0gICAgUmVm
PFNWR1N0cmluZ0xpc3Q+IHZpZXdUYXJnZXQoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gdmll
d1RhcmdldCgpIHsgcmV0dXJuIG1fdmlld1RhcmdldC5jb3B5UmVmKCk7IH0KIAogcHJpdmF0ZToK
ICAgICBTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAg
LTU2LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRy
aWJ1dGVPd25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHU3RyaW5nTGlzdFZhbHVlcyBtX3ZpZXdUYXJn
ZXQ7CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNWR1N0cmluZ0xpc3Q6
OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlU
ZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmYuaAppbmRleCA5MDUxMzBmOWFiNC4uMDk3M2QyYmRkYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
TGlzdFByb3BlcnR5VGVhck9mZi5oCkBAIC0yMiw3ICsyMiw2IEBACiAKICNpbmNsdWRlICJTVkdM
ZWdhY3lBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5VGVhck9m
Zi5oIgotI2luY2x1ZGUgIlNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgKaW5kZXggYTBhNDMxMjQ4ZDYu
LmM0MjU2MTkyMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oCkBAIC00OSw3ICs0OSw3IEBA
IHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCYXNlVmFsKGNvbnN0IFByb3BlcnR5
VHlwZSYgYmFzZVZhbCkKICAgICB7CiAgICAgICAgIG1fYmFzZVZhbCA9IGJhc2VWYWw7Ci0gICAg
ICAgIGNvbW1pdFByb3BlcnR5Q2hhbmdlKCk7CisgICAgICAgIGNvbW1pdFByb3BlcnR5Q2hhbmdl
KG51bGxwdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAppbmRleCA0
N2JjNGNiMTQxOS4uZWMyZjNhNDg3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFNW
R1Byb3BlcnR5T3duZXIqIFNWR0FuaW1hdGVkUHJvcGVydHk6Om93bmVyKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jb250ZXh0RWxlbWVudDsKIH0KIAotdm9pZCBTVkdBbmltYXRlZFByb3BlcnR5Ojpj
b21taXRQcm9wZXJ0eUNoYW5nZSgpCit2b2lkIFNWR0FuaW1hdGVkUHJvcGVydHk6OmNvbW1pdFBy
b3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5KikKIHsKICAgICBpZiAoIW1fY29udGV4dEVsZW1lbnQp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHkuaAppbmRleCAwNGM5MzRiMWMxMy4uYzZmOTMyZTZkZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5LmgKQEAgLTI2LDggKzI2LDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNWR1By
b3BlcnR5T3duZXIuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBTVkdFbGVtZW50OwogCiBjbGFzcyBTVkdBbmltYXRl
ZFByb3BlcnR5IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4sIHB1Ymxp
YyBTVkdQcm9wZXJ0eU93bmVyIHsKIHB1YmxpYzoKQEAgLTYyLDcgKzY3LDcgQEAgcHJvdGVjdGVk
OgogICAgIH0KICAgICAKICAgICBTVkdQcm9wZXJ0eU93bmVyKiBvd25lcigpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5Kikgb3ZlcnJpZGU7CiAgICAgCiAgICAg
U1ZHRWxlbWVudCogbV9jb250ZXh0RWxlbWVudCB7IG51bGxwdHIgfTsKICAgICBib29sIG1faXNB
bmltYXRpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKaW5kZXggYjI5NjdkYjU2YTcuLjNiNDY5MzgwMmEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVS
ZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0
ZVJlZ2lzdHJ5LmgKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oIgogI2luY2x1ZGUg
IlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCIKLSNpbmNsdWRlICJTVkdTdHJpbmdMaXN0VmFs
dWVzLmgiCiAjaW5jbHVkZSAiU1ZHWm9vbUFuZFBhblR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogCkBAIC01MiwxMyArNTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtYXA7
CiAgICAgfQogCi0gICAgLy8gTm9uIGFuaW1hdGFibGUgYXR0cmlidXRlcwotICAgIHRlbXBsYXRl
PGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRl
TmFtZSwgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+
Ci0gICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgpCi0gICAgewotICAgICAgICByZWdpc3RlckF0
dHJpYnV0ZShTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6
dGVtcGxhdGUgc2luZ2xldG9uPGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQot
CiAgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5h
bWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdab29tQW5kUGFuVHlwZUF0dHJpYnV0ZSBPd25lclR5cGU6
OiphdHRyaWJ1dGU+CiAgICAgdm9pZCByZWdpc3RlckF0dHJpYnV0ZSgpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdC5oCmluZGV4IDhiMTM3ODkxNzkxLi4yOTNhNTRm
NWQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3QuaApAQCAtMSArMSwx
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwog
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiU1ZH
UHJvcGVydHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
dGVtVHlwZT4KK2NsYXNzIFNWR0xpc3QgOiBwdWJsaWMgU1ZHUHJvcGVydHkgeworcHVibGljOgor
ICAgIHVuc2lnbmVkIG51bWJlck9mSXRlbXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faXRlbXMuc2l6ZSgpOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFyKCkK
KyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KSk7CisKKyAgICAgICAgY2xlYXJJdGVtcygpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gZ2V0
SXRlbSh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuR2V0
SXRlbShpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsK
KyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gaW5pdGlhbGl6ZShJdGVtVHlwZSYm
IG5ld0l0ZW0pCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOwor
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAgICAgLy8gU3BlYzogQ2xlYXJzIGFsbCBl
eGlzdGluZyBjdXJyZW50IGl0ZW1zIGZyb20gdGhlIGxpc3QuCisgICAgICAgIGNsZWFySXRlbXMo
KTsKKworICAgICAgICBhdXRvIGl0ZW0gPSBhcHBlbmQoV1RGTW92ZShuZXdJdGVtKSk7CisgICAg
ICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9
CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gaW5zZXJ0SXRlbUJlZm9yZShJdGVtVHlwZSYm
IG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBj
YW5BbHRlckxpc3QoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQo
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICAvLyBTcGVjOiBJZiB0aGUg
aW5kZXggaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG51bWJlck9mSXRlbXMsCisgICAgICAg
IC8vIHRoZW4gdGhlIG5ldyBpdGVtIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Qu
CisgICAgICAgIGlmIChpbmRleCA+IG51bWJlck9mSXRlbXMoKSkKKyAgICAgICAgICAgIGluZGV4
ID0gbnVtYmVyT2ZJdGVtcygpOworCisgICAgICAgIGF1dG8gaXRlbSA9IGluc2VydChpbmRleCwg
V1RGTW92ZShuZXdJdGVtKSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1
cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gcmVw
bGFjZUl0ZW0oSXRlbVR5cGUmJiBuZXdJdGVtLCB1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gY2FuUmVwbGFjZUl0ZW0oaW5kZXgpOworICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOwor
CisgICAgICAgIGF1dG8gaXRlbSA9IHJlcGxhY2UoaW5kZXgsIFdURk1vdmUobmV3SXRlbSkpOwor
ICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaXRlbSk7Cisg
ICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRlbVR5cGU+IHJlbW92ZUl0ZW0odW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhblJlbW92ZUl0ZW0oaW5kZXgpOwor
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCkpOworCisgICAgICAgIGF1dG8gaXRlbSA9IHJlbW92ZShpbmRleCk7CisgICAg
ICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9
CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gYXBwZW5kSXRlbShJdGVtVHlwZSYmIG5ld0l0
ZW0pCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOworICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCkpOworCisgICAgICAgIGF1dG8gaXRlbSA9IGFwcGVuZChXVEZNb3ZlKG5ld0l0ZW0pKTsK
KyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGl0ZW0pOwor
ICAgIH0KKworICAgIC8vIFBhcnNlcnMgYW5kIGFuaW1hdG9ycyBuZWVkIHRvIGhhdmUgYSBkaXJl
Y3QgYWNjZXNzIHRvIHRoZSBpdGVtcy4KKyAgICBWZWN0b3I8SXRlbVR5cGU+JiBpdGVtcygpIHsg
cmV0dXJuIG1faXRlbXM7IH0KKyAgICBjb25zdCBWZWN0b3I8SXRlbVR5cGU+JiBpdGVtcygpIGNv
bnN0IHsgcmV0dXJuIG1faXRlbXM7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXRlbXMuc2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9p
dGVtcy5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgY2xlYXJJdGVtcygpCisgICAgeworICAgICAg
ICBkZXRhY2hJdGVtcygpOworICAgICAgICBtX2l0ZW1zLmNsZWFyKCk7CisgICAgfQorCitwcm90
ZWN0ZWQ6CisgICAgdXNpbmcgU1ZHUHJvcGVydHk6OlNWR1Byb3BlcnR5OworCisgICAgRXhjZXB0
aW9uT3I8Ym9vbD4gY2FuQWx0ZXJMaXN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1Jl
YWRPbmx5KCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25B
bGxvd2VkRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgRXhjZXB0
aW9uT3I8Ym9vbD4gY2FuR2V0SXRlbSh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGlm
IChpbmRleCA+PSBtX2l0ZW1zLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbmRleFNpemVFcnJvciB9OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBF
eGNlcHRpb25Pcjxib29sPiBjYW5SZXBsYWNlSXRlbSh1bnNpZ25lZCBpbmRleCkKKyAgICB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAg
ICAgICAgaWYgKGluZGV4ID49IG1faXRlbXMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNhblJlbW92ZUl0ZW0odW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgpOworICAgICAgICBpZiAo
cmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkp
OworCisgICAgICAgIGlmIChpbmRleCA+PSBtX2l0ZW1zLnNpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoSXRlbXMoKSB7IH0KKyAgICB2aXJ0dWFs
IEl0ZW1UeXBlIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJdGVt
VHlwZSBpbnNlcnQodW5zaWduZWQgaW5kZXgsIEl0ZW1UeXBlJiYpID0gMDsKKyAgICB2aXJ0dWFs
IEl0ZW1UeXBlIHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIEl0ZW1UeXBlJiYpID0gMDsKKyAgICB2
aXJ0dWFsIEl0ZW1UeXBlIHJlbW92ZSh1bnNpZ25lZCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwg
SXRlbVR5cGUgYXBwZW5kKEl0ZW1UeXBlJiYpID0gMDsKKworICAgIFZlY3RvcjxJdGVtVHlwZT4g
bV9pdGVtczsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR01lbWJlckFjY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdNZW1iZXJBY2Nlc3Nvci5oCmluZGV4IGRiMjEzNGQzNjczLi43ZGM0Y2FhOGJjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oCkBA
IC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0FuaW1hdGVk
UHJvcGVydHk7CitjbGFzcyBTVkdQcm9wZXJ0eTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgT3duZXJU
eXBlPgogY2xhc3MgU1ZHTWVtYmVyQWNjZXNzb3IgewpAQCAtNDIsNiArNDMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQW5pbWF0ZWRMZW5ndGgoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCisgICAgdmlydHVhbCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwg
Y29uc3QgU1ZHUHJvcGVydHkmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBtYXRjaGVzKGNvbnN0IE93bmVyVHlwZSYsIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHkm
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBz
eW5jaHJvbml6ZShjb25zdCBPd25lclR5cGUmKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0
aXZlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlTGlz
dC5oCmluZGV4IDhiMTM3ODkxNzkxLi4xNDZiZmI2N2FkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZUxpc3QuaApAQCAtMSArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCiAKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiU1ZHTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KK2NsYXNzIFNWR1ByaW1pdGl2ZUxpc3QgOiBw
dWJsaWMgU1ZHTGlzdDxQcm9wZXJ0eVR5cGU+IHsKK3Byb3RlY3RlZDoKKyAgICB1c2luZyBCYXNl
ID0gU1ZHTGlzdDxQcm9wZXJ0eVR5cGU+OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdXNp
bmcgQmFzZTo6c2l6ZTsKKyAgICB1c2luZyBCYXNlOjptX2l0ZW1zOworCisgICAgUHJvcGVydHlU
eXBlIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGluZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1faXRlbXMuYXQoaW5kZXgpOwor
ICAgIH0KKworICAgIFByb3BlcnR5VHlwZSBpbnNlcnQodW5zaWduZWQgaW5kZXgsIFByb3BlcnR5
VHlwZSYmIG5ld0l0ZW0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPD0g
c2l6ZSgpKTsKKyAgICAgICAgbV9pdGVtcy5pbnNlcnQoaW5kZXgsIFdURk1vdmUobmV3SXRlbSkp
OworICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgIH0KKworICAgIFByb3BlcnR5VHlwZSBy
ZXBsYWNlKHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVR5cGUmJiBuZXdJdGVtKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgc2l6ZSgpKTsKKyAgICAgICAgbV9pdGVtcy5h
dChpbmRleCkgPSBXVEZNb3ZlKG5ld0l0ZW0pOworICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwor
ICAgIH0KKworICAgIFByb3BlcnR5VHlwZSByZW1vdmUodW5zaWduZWQgaW5kZXgpIG92ZXJyaWRl
CisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBzaXplKCkpOworICAgICAgICBQcm9wZXJ0
eVR5cGUgaXRlbSA9IGF0KGluZGV4KTsKKyAgICAgICAgbV9pdGVtcy5yZW1vdmUoaW5kZXgpOwor
ICAgICAgICByZXR1cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBQcm9wZXJ0eVR5cGUg
YXBwZW5kKFByb3BlcnR5VHlwZSYmIG5ld0l0ZW0pIG92ZXJyaWRlCisgICAgeworICAgICAgICBt
X2l0ZW1zLmFwcGVuZChXVEZNb3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgcmV0dXJuIGF0KHNpemUo
KSAtIDEpOworICAgIH0KK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eS5oCmluZGV4IGZkYTI4MGE3YWRmLi5jY2YxMjYxZTFhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCkBAIC0yMCwxMCArMjAsNzggQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eU93bmVyLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNz
IFNWR1Byb3BlcnR5QWNjZXNzIDogdWludDhfdCB7IFJlYWRXcml0ZSwgUmVhZE9ubHkgfTsKIGVu
dW0gY2xhc3MgU1ZHUHJvcGVydHlTdGF0ZSA6IHVpbnQ4X3QgeyBDbGVhbiwgRGlydHkgfTsKIAor
Y2xhc3MgU1ZHUHJvcGVydHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQcm9wZXJ0eT4geworcHVi
bGljOgorICAgIHZpcnR1YWwgflNWR1Byb3BlcnR5KCkgPSBkZWZhdWx0OworCisgICAgLy8gTWFu
YWdpbmcgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBvd25lci4KKyAgICBib29sIGlzQXR0YWNo
ZWQoKSBjb25zdCB7IHJldHVybiBtX293bmVyOyB9CisgICAgdm9pZCBhdHRhY2goU1ZHUHJvcGVy
dHlPd25lciogb3duZXIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcykKKyAgICB7CisgICAgICAg
IEFTU0VSVCghbV9vd25lcik7CisgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFNWR1Byb3BlcnR5
U3RhdGU6OkNsZWFuKTsKKyAgICAgICAgbV9vd25lciA9IG93bmVyOworICAgICAgICBtX2FjY2Vz
cyA9IGFjY2VzczsKKyAgICB9CisKKyAgICB2b2lkIGRldGFjaCgpCisgICAgeworICAgICAgICBt
X293bmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9hY2Nlc3MgPSBTVkdQcm9wZXJ0eUFjY2Vzczo6
UmVhZFdyaXRlOworICAgICAgICBtX3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47Cisg
ICAgfQorCisgICAgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKCFtX293bmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBtX293bmVyLT5hdHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpOworICAgIH0K
KworICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9vd25lcikK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9vd25lci0+Y29tbWl0UHJvcGVydHlDaGFu
Z2UodGhpcyk7CisgICAgfQorCisgICAgLy8gRE9NIGFjY2Vzcy4KKyAgICBTVkdQcm9wZXJ0eUFj
Y2VzcyBhY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2FjY2VzczsgfQorICAgIGJvb2wgaXNSZWFk
T25seSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZXNzID09IFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFk
T25seTsgfQorCisgICAgLy8gU3luY2hyb25pemluZyB0aGUgU1ZHIGF0dHJpYnV0ZSBhbmQgaXRz
IHJlZmxlY3Rpb24gaGVyZS4KKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiBtX3N0
YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9CisgICAgdm9pZCBzZXREaXJ0eSgpIHsg
bV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkRpcnR5OyB9CisgICAgT3B0aW9uYWw8U3RyaW5n
PiBzeW5jaHJvbml6ZSgpCisgICAgeworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTVkdQcm9wZXJ0
eVN0YXRlOjpDbGVhbikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fc3RhdGUgPSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbjsKKyAgICAgICAgcmV0dXJuIHZhbHVl
QXNTdHJpbmcoKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIHVzZWQgd2hlbiBjYWxsaW5nIHNl
dEF0dHJpYnV0ZSgpLgorICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCB7
IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTVkdQcm9wZXJ0eShT
VkdQcm9wZXJ0eU93bmVyKiBvd25lciA9IG51bGxwdHIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2Vz
cyA9IFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFkV3JpdGUpCisgICAgICAgIDogbV9vd25lcihvd25l
cikKKyAgICAgICAgLCBtX2FjY2VzcyhhY2Nlc3MpCisgICAgeworICAgIH0KKworICAgIFNWR1By
b3BlcnR5T3duZXIqIG1fb3duZXIgeyBudWxscHRyIH07CisgICAgU1ZHUHJvcGVydHlBY2Nlc3Mg
bV9hY2Nlc3MgeyBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlIH07CisgICAgU1ZHUHJvcGVy
dHlTdGF0ZSBtX3N0YXRlIHsgU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW4gfTsKK307CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvci5oCmluZGV4IDhiMTM3ODkxNzkxLi5mZjhjNGNkZTZkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nl
c3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNj
ZXNzb3IuaApAQCAtMSArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCiAKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUG9pbnRlck1l
bWJlckFjY2Vzc29yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgT3duZXJUeXBlLCB0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+CitjbGFzcyBTVkdQcm9wZXJ0eUFj
Y2Vzc29yIDogcHVibGljIFNWR1BvaW50ZXJNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGUsIFByb3Bl
cnR5VHlwZT4geworICAgIHVzaW5nIEJhc2UgPSBTVkdQb2ludGVyTWVtYmVyQWNjZXNzb3I8T3du
ZXJUeXBlLCBQcm9wZXJ0eVR5cGU+OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsK
KworcHJvdGVjdGVkOgorICAgIHVzaW5nIEJhc2U6OnByb3BlcnR5OworICAgIHVzaW5nIEJhc2U6
OnNpbmdsZXRvbjsKKworICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBPd25lclR5cGUmIG93bmVyLCBj
b25zdCBTVkdQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy0+cHJvcGVydHkob3duZXIpLnB0cigpID09ICZwcm9wZXJ0eTsKKyAgICB9
Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eUFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHlBY2Nlc3NvckltcGwuaAppbmRleCA4YjEzNzg5MTc5MS4uMzdkNjMxODQzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNz
b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlB
Y2Nlc3NvckltcGwuaApAQCAtMSArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCiAKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUHJv
cGVydHlBY2Nlc3Nvci5oIgorI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBTVkdTdHJp
bmdMaXN0QWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5
cGUsIFNWR1N0cmluZ0xpc3Q+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHUHJvcGVydHlBY2Nlc3Nv
cjxPd25lclR5cGUsIFNWR1N0cmluZ0xpc3Q+OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6
QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZHU3RyaW5nTGlzdD4gT3duZXJUeXBlOjoqcHJvcGVy
dHk+CisgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5
cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHU3Ry
aW5nTGlzdEFjY2Vzc29yLCBwcm9wZXJ0eT4oKTsgfQorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lci5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lci5oCmluZGV4IGI0MmE1NzhhMTUx
Li5jOTgxOGJlOWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHUHJvcGVydHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5T3duZXIuaApAQCAtMjYsNiArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFNWR0VsZW1lbnQ7CitjbGFzcyBTVkdQcm9wZXJ0
eTsKIAogY2xhc3MgU1ZHUHJvcGVydHlPd25lciB7CiBwdWJsaWM6CkBAIC00MCwxMSArNDMsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3duZXIoKS0+YXR0cmlidXRlQ29udGV4dEVsZW1l
bnQoKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdl
KCkKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHBy
b3BlcnR5KQogICAgIHsKICAgICAgICAgaWYgKCFvd25lcigpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBvd25lcigpLT5jb21taXRQcm9wZXJ0eUNoYW5nZSgpOworICAgICAgICBvd25l
cigpLT5jb21taXRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eSk7CiAgICAgfQogICAgIAogcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnkuaAppbmRleCBkMTJiMzkyYTkzOC4uNTkzNTcwM2MyMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJTVkdBbmltYXRlZFBy
b3BlcnR5QWNjZXNzb3JJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJB
Y2Nlc3NvckltcGwuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIgogI2lu
Y2x1ZGUgIlNWR1Byb3BlcnR5UmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
CkBAIC00Miw2ICs0MywxMiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIHRlbXBsYXRl
PGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1lPiYgYXR0cmlidXRl
TmFtZSwgUmVmPFNWR1N0cmluZ0xpc3Q+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0
eShhdHRyaWJ1dGVOYW1lLCBTVkdTdHJpbmdMaXN0QWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxh
dGUgc2luZ2xldG9uPHByb3BlcnR5PigpKTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTxjb25zdCBM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFJl
ZjxTVkdBbmltYXRlZEJvb2xlYW4+IE93bmVyVHlwZTo6KnByb3BlcnR5PgogICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQogICAgIHsKQEAgLTc3LDYgKzg0LDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGZpbmRBY2Nlc3NvcihhdHRyaWJ1dGVOYW1lKTsKICAgICB9CiAKKyAg
ICBRdWFsaWZpZWROYW1lIHByb3BlcnR5QXR0cmlidXRlTmFtZShjb25zdCBTVkdQcm9wZXJ0eSYg
cHJvcGVydHkpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBRdWFsaWZpZWROYW1lIGF0
dHJpYnV0ZU5hbWUgPSBudWxsUU5hbWUoKTsKKyAgICAgICAgZW51bWVyYXRlUmVjdXJzaXZlbHko
WyZdKGNvbnN0IGF1dG8mIGVudHJ5KSAtPiBib29sIHsKKyAgICAgICAgICAgIGlmICghZW50cnku
dmFsdWUtPm1hdGNoZXMobV9vd25lciwgcHJvcGVydHkpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgYXR0cmlidXRlTmFtZSA9IGVudHJ5LmtleTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVO
YW1lOworICAgIH0KKwogICAgIFF1YWxpZmllZE5hbWUgYW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0
ZU5hbWUoY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkgY29uc3Qg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9IG51
bGxRTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHlSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlSZWdpc3RyeS5oCmluZGV4IDdjMjhmZDdiZDgxLi41M2EwMzQ1NWZhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5UmVnaXN0cnkuaApA
QCAtMzcsNiArMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U1ZHUHJvcGVydHlSZWdpc3Ry
eSgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hBbGxQcm9wZXJ0aWVzKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgUXVhbGlmaWVkTmFtZSBwcm9wZXJ0eUF0dHJpYnV0ZU5h
bWUoY29uc3QgU1ZHUHJvcGVydHkmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRdWFsaWZpZWRO
YW1lIGFuaW1hdGVkUHJvcGVydHlBdHRyaWJ1dGVOYW1lKGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVy
dHkmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXpl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBIYXNoTWFwPFF1
YWxpZmllZE5hbWUsIFN0cmluZz4gc3luY2hyb25pemVBbGxBdHRyaWJ1dGVzKCkgY29uc3QgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlz
dFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3Rh
dGljTGlzdFByb3BlcnR5VGVhck9mZi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
ODY4NzRkY2EwMS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU1ZH
TGlzdFByb3BlcnR5LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgUHJvcGVydHlUeXBlPiAKLWNsYXNzIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYgOiBw
dWJsaWMgU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4gewotcHVibGljOgotICAgIHVzaW5n
IFNlbGYgPSBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT47Ci0gICAg
dXNpbmcgQmFzZSA9IFNWR0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+OwotCi0gICAgdXNpbmcg
TGlzdEl0ZW1UeXBlID0gdHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6
TGlzdEl0ZW1UeXBlOwotICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IHR5cGVuYW1lIFNWR1By
b3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46Okxpc3RJdGVtVGVhck9mZjsKLQotICAgIHVzaW5n
IEJhc2U6Om1fcm9sZTsKLSAgICB1c2luZyBCYXNlOjptX3ZhbHVlczsKLQotICAgIHN0YXRpYyBS
ZWY8U2VsZj4gY3JlYXRlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0eVR5cGUm
IHZhbHVlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGYoY29udGV4
dEVsZW1lbnQsIHZhbHVlcykpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsZWFy
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBCYXNlOjpjbGVhclZhbHVlcygpOwotICAgIH0KLQot
ICAgIEV4Y2VwdGlvbk9yPExpc3RJdGVtVHlwZT4gaW5pdGlhbGl6ZShjb25zdCBMaXN0SXRlbVR5
cGUmIG5ld0l0ZW0pCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6aW5pdGlhbGl6ZVZhbHVl
cyhuZXdJdGVtKTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxMaXN0SXRlbVR5cGU+IGdldEl0
ZW0odW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6Z2V0SXRlbVZh
bHVlcyhpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiBpbnNl
cnRJdGVtQmVmb3JlKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSwgdW5zaWduZWQgaW5kZXgp
Ci0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6aW5zZXJ0SXRlbUJlZm9yZVZhbHVlcyhuZXdJ
dGVtLCBpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiByZXBs
YWNlSXRlbShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OnJlcGxhY2VJdGVtVmFsdWVzKG5ld0l0ZW0sIGluZGV4
KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxMaXN0SXRlbVR5cGU+IHJlbW92ZUl0ZW0odW5z
aWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6cmVtb3ZlSXRlbVZhbHVl
cyhpbmRleCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiBhcHBlbmRJ
dGVtKGNvbnN0IExpc3RJdGVtVHlwZSYgbmV3SXRlbSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBC
YXNlOjphcHBlbmRJdGVtVmFsdWVzKG5ld0l0ZW0pOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAg
IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQs
IFByb3BlcnR5VHlwZSYgdmFsdWVzKQotICAgICAgICA6IEJhc2UoVW5kZWZpbmVkUm9sZSwgdmFs
dWVzLCBudWxscHRyKQotICAgICAgICAsIG1fY29udGV4dEVsZW1lbnQoKmNvbnRleHRFbGVtZW50
KQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcm9sZSA9PSBBbmltVmFsUm9sZTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGNvbW1pdENoYW5nZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBU1NFUlQobV92
YWx1ZXMpOwotICAgICAgICBtX3ZhbHVlcy0+Y29tbWl0Q2hhbmdlKG1fY29udGV4dEVsZW1lbnQp
OwotICAgIH0KLQotICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1WYWx1ZShjb25zdCBM
aXN0SXRlbVR5cGUmLCB1bnNpZ25lZCopIG92ZXJyaWRlCi0gICAgewotICAgICAgICAvLyBuby1v
cCBmb3Igc3RhdGljIGxpc3RzCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJv
b2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1XcmFwcGVyKFJlZjxMaXN0SXRlbVRlYXJPZmY+Jiwg
dW5zaWduZWQqKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFJlZjxTVkdFbGVtZW50PiBtX2Nv
bnRleHRFbGVtZW50OwotfTsKLQotfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365099</attachid>
            <date>2019-03-18 18:31:43 -0700</date>
            <delta_ts>2019-03-18 21:23:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195863-20190318183142.patch</filename>
            <type>text/plain</type>
            <size>67959</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxOS0wMy0xOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgU1ZHIHByb3BlcnR5IHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR1N0cmluZ0xpc3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTg2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBTVkdTdHJpbmdMaXN0IGlz
IG5vdCBhbmltYXRlZCBsaXN0LiBTbyB3ZSBuZWVkIHRvIGludHJvZHVjZSB0d28gbmV3IGNsYXNz
ZXM6CisKKyAgICAgICAgLS0gU1ZHUHJvcGVydHk6IFRoaXMgd2lsbCBiZSB0aGUgYmFzZSBvZiBh
bGwgdGhlIG5vbi1hbmltYXRlZCBwcm9wZXJ0aWVzLgorICAgICAgICAgICBMaWtlIHRoZSBTVkdB
bmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eSB3aWxsIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUK
KyAgICAgICAgICAgYXR0cmlidXRlIG5hbWUgaW4gU1ZHUHJvcGVydHlSZWdpc3RlcnkuIEl0IHdp
bGwgYWxzbyBjb21taXQgY2hhbmdlcworICAgICAgICAgICB0byB0aGUgcmVmbGVjdGluZyBhdHRy
aWJ1dGUuIEFuZCBpdCB3aWxsIHByb3ZpZGUgYSBzeW5jaHJvbml6ZSBzdHJpbmcKKyAgICAgICAg
ICAgZm9yIGxhenkgYXR0cmlidXRlIHVwZGF0ZS4KKworICAgICAgICAtLSBTVkdMaXN0OiBJdCB3
aWxsIGJlIHRoZSBiYXNlIG9mIGFsbCB0aGUgbGlzdCBwcm9wZXJ0aWVzLiBJdCBjYW4gaG9sZAor
ICAgICAgICAgICBwcmltaXRpdmUgdHlwZXMgb3IgU1ZHIHR5cGVzLiBJbiB0aGlzIHBhdGNoIHBy
aW1pdGl2ZSB0eXBlcyB3aWxsIGJlIAorICAgICAgICAgICBzdXBwb3J0ZWQgb25seS4gVG8gZG8g
dGhhdCwgYSBzdXBlcmNsYXNzIGNhbGxlZCBTVkdQcmltaXRpdmVMaXN0IGlzCisgICAgICAgICAg
IGFkZGVkLiBJdHMgaXRlbXMgYXJlIG9mIHByaW1pdGl2ZSB0eXBlIHN1Y2ggYXMgU3RyaW5nIHR5
cGUuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5n
ZSk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3RyaW5n
TGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBzdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5oOiBSZW1vdmVkLgorICAgICAgICAq
IHN2Zy9TVkdUZXN0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6U1ZHVGVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpy
ZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6
OnJlcXVpcmVkRmVhdHVyZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6
OnJlcXVpcmVkRXh0ZW5zaW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0
czo6c3lzdGVtTGFuZ3VhZ2UpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHVGVzdHMuaWRsOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1ZpZXdFbGVtZW50OjpTVkdWaWV3RWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdWaWV3RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Vmlld0VsZW1lbnQ6OnZpZXdUYXJnZXQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdWaWV3
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3Bl
cnR5VGVhck9mZi5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJpbWl0
aXZlUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJpbWl0aXZlUHJv
cGVydHk6OnNldEJhc2VWYWwpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6Y29t
bWl0UHJvcGVydHlDaGFuZ2UpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3Ry
eS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0xpc3QuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTVkdMaXN0OjpudW1iZXJPZkl0ZW1zIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpc3Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmdldEl0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaXN0OjppbnNlcnRJdGVtQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
c3Q6OnJlcGxhY2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OnJlbW92ZUl0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6YXBwZW5kSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaXN0OjppdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjppdGVtcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xpc3Q6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGlzdDo6Y2xlYXJJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0OjpjYW5BbHRlckxp
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlzdDo6Y2FuR2V0SXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMaXN0OjpjYW5SZXBsYWNlSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMaXN0OjpjYW5SZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpc3Q6OmRl
dGFjaEl0ZW1zKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWVtYmVyQWNjZXNzb3I6Om1hdGNoZXMgY29uc3QpOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ByaW1pdGl2ZUxpc3QuaDogQWRkZWQuCisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Byb3BlcnR5Ojppc0F0dGFjaGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3Bl
cnR5OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OmRldGFjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6Y29udGV4dEVsZW1lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OmNvbW1pdENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQcm9wZXJ0eTo6YWNjZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1By
b3BlcnR5Ojppc1JlYWRPbmx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
Ojppc0RpcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5OjpzZXREaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eTo6c3luY2hyb25pemUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUHJvcGVydHk6OnZhbHVlQXNTdHJpbmcgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUHJvcGVydHk6OlNWR1Byb3BlcnR5KToKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29yLmg6IEFkZGVkLgorICAgICAgICAqIHN2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
T3duZXI6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1N0
YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDogUmVtb3ZlZC4KKwogMjAxOS0wMy0xOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0
aGUgU1ZHIHByb3BlcnR5IHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR0FuaW1hdGVkQm9vbGVhbgpJ
bmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI0MzEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMzg0LDcgKzIzODQsNiBAQCBzdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKIHN2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAogc3ZnL1NWR1NldEVsZW1lbnQu
Y3BwCiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCi1zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAK
IHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCiBzdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAKIHN2Zy9T
VkdTeW1ib2xFbGVtZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQzMTIxKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjYsNyArMjY2LDYgQEAKIAkJMDg3M0I4NkIxMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3M0I4
NkExMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4NzU1OEM2MTNCNEE1N0QwMEY0OTMwNyAvKiBT
dXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dh
dGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwODdCODQ5NjEyNzJDRUM4MDBBMTQ0MTcgLyogU1ZHQW5pbWF0
ZWRBbmdsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDg3Qjg0OTUxMjcyQ0VDNzAwQTE0NDE3IC8qIFNWR0FuaW1hdGVkQW5nbGUuaCAqLzsgfTsKLQkJ
MDg4MEY3MEUxMjgyQjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODBGNzBE
MTI4MkI0NkQwMDk0ODUwNSAvKiBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi87IH07
CiAJCTA4ODUwNjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5
OCAvKiBQYWludEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwODg1MDY4MDExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFzZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4NTA2N0UxMURBMDQ1
QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwODhBMEUwNDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODhBMERGQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmLmggKi87IH07CkBAIC0xNzg3LDYgKzE3ODYsOCBAQAogCQk1NUEzMzZG
OTFEODIxRTNDMDAyMkM0QzcgLyogSW1hZ2VCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY4MUQ4MjFFM0MwMDIyQzRDNyAv
KiBJbWFnZUJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTU1QUYxNEU2MUVBQUM1OUIwMDI2RUVBQSAvKiBVVElSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVBRjE0RTQx
RUFBQzU5QjAwMjZFRUFBIC8qIFVUSVJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVENzBEMjMyMjNCMDE3QzAwMDQ0QjhFIC8qIFNW
R0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1RDcwRDIwMjIzQjAwOTEwMDA0NEI4RSAvKiBTVkdMZWdhY3lBbmlt
YXRlZFByb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNTVEQ0M1MjgyMjQwN0IyMDAwQzI2RTMyIC8qIFNWR1ByaW1pdGl2ZUxpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RENDNTI1MjI0
MDc0OUUwMEMyNkUzMiAvKiBTVkdQcmltaXRpdmVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTVEQ0M1MjkyMjQwN0IyQTAwQzI2RTMyIC8q
IFNWR0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1RENDNTIzMjI0MDczRkUwMEMyNkUzMiAvKiBTVkdMaXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTVFQzk1OTkyMDZBQTdBMDAwN0REMEE5
IC8qIFBhaW50RnJlcXVlbmN5VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTVFQzk1OTcyMDY5QzkyRDAwN0REMEE5IC8qIFBhaW50RnJlcXVl
bmN5VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTU1RkE3RkYwMjEwRkEzODYwMDVBRUZFNyAvKiBTVkdBdHRyaWJ1dGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RkE3RkVGMjEwRkEzODYw
MDVBRUZFNyAvKiBTVkdBdHRyaWJ1dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1NUZBN0ZGNTIxMEZCNkIxMDA1QUVGRTcgLyogU1ZHQXR0cmli
dXRlQWNjZXNzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1RkE3RkY0MjEwRkI2ODgwMDVBRUZFNyAvKiBTVkdBdHRyaWJ1dGVBY2Nlc3Nvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTM3LDYg
KzIxMzgsMTAgQEAKIAkJNzFFQURDRDgyMjA4N0U3MjAwNjVBNDVGIC8qIFBvaW50ZXJJRC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFFQURDRDYyMjA4
N0U2RDAwNjVBNDVGIC8qIFBvaW50ZXJJRC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcxRUZDRURDMjAyQjM4QTkwMEQ3QzQxMSAvKiBBbmltYXRp
b25FZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcxRUZDRUQ3MjAyQjM4OEQwMEQ3QzQxMSAvKiBBbmltYXRpb25FZmZlY3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MUZCOTY3QjEzODNENjQ2
MDBBQzhBNEMgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFGQjk2N0ExMzgzRDY0
NjAwQUM4QTRDIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaCAqLzsg
fTsKKwkJNzIxNDQzMzEyMjNFQzg1NDAwRjEyRkY3IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk3MjE0NDMzMjIyM0VDODVGMDBGMTJGRjcgLyogKG51bGwpIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTcyMTQ0MzMzMjIzRUM4QjAwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjMy
MjNCMkEyNDAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzIxNDQzMzQyMjNFQzkxNjAwRjEyRkY3IC8qIFNW
R1Byb3BlcnR5T3duZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMkMx
QTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWluTWF4LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzI5MUEzQTdFNTQwMEY1RjEzQyAvKiBF
WFRCbGVuZE1pbk1heC5jcHAgKi87IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBK
U0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICov
OyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1
QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIzMyw3ICsyMjM4LDYgQEAKIAkJN0MzMzBBMDIxREY4
RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzMzBBMDExREY4RkFDNjAwRDMz
OTVDIC8qIEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMzMwQTA4MURGOUY5NTEwMEQzMzk1QyAv
KiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MzMzBBMDYxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25z
LmggKi87IH07CiAJCTdDMzlDMzY1MUREQTg2NTIwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0VmFs
dWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzM5
QzM2MzFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oICovOyB9OwotCQk3
QzM5QzM3NzFEREJFMTcwMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzOUMzNjcxRERCODJDRjAw
RkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzNBOTFFNjFDOTYzQjg4MDBEMUE3RTMgLyogQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzNBOTFFNTFDOTYzQjg4MDBEMUE3RTMgLyogQ2xpcGJvYXJkQWNjZXNzUG9s
aWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0MzQjc5NzExOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzNCNzk2RjE5MDg3NTdC
MDBCNDdBMkQgLyogVXNlck1lc3NhZ2VIYW5kbGVyLmNwcCAqLzsgfTsKIAkJN0MzQjc5NzIxOTA4
NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MzQjc5NzAxOTA4NzU3QjAwQjQ3QTJEIC8qIFVz
ZXJNZXNzYWdlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01NjQwLDcgKzU2NDQsNiBAQAogCQkwODc1NThDMzEzQjRBNTdEMDBGNDkz
MDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAv
KiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA4N0I4NDk1MTI3MkNFQzcwMEExNDQxNyAvKiBTVkdBbmltYXRl
ZEFuZ2xlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkQW5n
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg4MEY3MEQxMjgyQjQ2RDAwOTQ4
NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODg1MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50SW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQ
aGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWludFBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEEwREZCMTI2RUYxREIwMDk3OEY3QSAvKiBT
VkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NjgwLDYgKzg2ODMsMTAgQEAKIAkJNTVENzBEMjIyMjNCMDBFQTAw
MDQ0QjhFIC8qIFNWR0xlZ2FjeVByb3BlcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0xlZ2FjeVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU1RENDNTFDMjI0MDYwNUUwMEMyNkUzMiAvKiBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9u
SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRpb25EaXNjcmV0ZUZ1bmN0aW9uSW1wbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NURDQzUxRDIyNDA2MTU1MDBDMjZFMzIg
LyogU1ZHQW5pbWF0aW9uRGlzY3JldGVGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmlt
YXRpb25EaXNjcmV0ZUZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1
RENDNTIzMjI0MDczRkUwMEMyNkUzMiAvKiBTVkdMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0xp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVEQ0M1MjUyMjQwNzQ5RTAwQzI2
RTMyIC8qIFNWR1ByaW1pdGl2ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlTGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NURDQzUyNjIyNDA3NEZBMDBDMjZF
MzIgLyogU1ZHUHJvcGVydHlBY2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eUFj
Y2Vzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1RENDNTI3MjI0MDc1MEIw
MEMyNkUzMiAvKiBTVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQ
cm9wZXJ0eUFjY2Vzc29ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NUVD
OTU5NzIwNjlDOTJEMDA3REQwQTkgLyogUGFpbnRGcmVxdWVuY3lUcmFja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhaW50RnJlcXVlbmN5VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NUVFNTM1NDIyM0IyOUU5MDBGQkE5NDQgLyogU1ZHTWVtYmVyQWNjZXNzb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWVtYmVyQWNjZXNzb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTVFRTUzNTYyMjNCMjlGNzAwRkJBOTQ0IC8qIFNWR0Fu
aW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTczMSw4ICs5NzM4LDYgQEAKIAkJN0MzM0YzNjAxQjRBMDUwNDAwNTAy
Q0FGIC8qIEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM2MjFEREE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3Ro
TGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdM
ZW5ndGhMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzOUMz
NjMxRERBODY0OTAwRkVGQjI5IC8qIFNWR0xlbmd0aExpc3RWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QzM5QzM2NjFEREI4MkNGMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlz
dFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdTdHJp
bmdMaXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0MzOUMzNjcx
RERCODJDRjAwRkVGQjI5IC8qIFNWR1N0cmluZ0xpc3RWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHU3RyaW5nTGlzdFZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzM5QzM2ODFEREI4NkQzMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZh
bHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdOdW1iZXJM
aXN0VmFsdWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzOUMzNjkxRERC
ODZEMzAwRkVGQjI5IC8qIFNWR051bWJlckxpc3RWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHTnVtYmVyTGlzdFZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzM5QzM2QTFEREI4NzFDMDBGRUZCMjkgLyogU1ZHUG9pbnRMaXN0VmFsdWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BvaW50TGlzdFZh
bHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjI0MywxOCArMTYyNDgs
MjEgQEAKIAkJCQk1NUQ3MEQyMTIyM0IwMEJCMDAwNDRCOEUgLyogU1ZHTGVnYWN5QW5pbWF0ZWRQ
cm9wZXJ0eS5jcHAgKi8sCiAJCQkJNTVENzBEMjAyMjNCMDA5MTAwMDQ0QjhFIC8qIFNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHkuaCAqLywKIAkJCQk1NUQ3MEQyMjIyM0IwMEVBMDAwNDRCOEUgLyog
U1ZHTGVnYWN5UHJvcGVydHkuaCAqLywKKwkJCQk1NURDQzUyMzIyNDA3M0ZFMDBDMjZFMzIgLyog
U1ZHTGlzdC5oICovLAogCQkJCTA4MTA3NjQzMTI4Mjg1NTYwMDdDNjNCQSAvKiBTVkdMaXN0UHJv
cGVydHkuaCAqLywKIAkJCQkwODhBMEUwMDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3Bl
cnR5VGVhck9mZi5oICovLAogCQkJCTA4Q0EzRDQzMTI4OTRBMzgwMEZGRjI2MCAvKiBTVkdNYXRy
aXhUZWFyT2ZmLmggKi8sCiAJCQkJNTVFRTUzNTQyMjNCMjlFOTAwRkJBOTQ0IC8qIFNWR01lbWJl
ckFjY2Vzc29yLmggKi8sCiAJCQkJNTVCRTAyNUEyMjNCMjlDMjAwMzJGMDhBIC8qIFNWR1BvaW50
ZXJNZW1iZXJBY2Nlc3Nvci5oICovLAorCQkJCTU1RENDNTI1MjI0MDc0OUUwMEMyNkUzMiAvKiBT
VkdQcmltaXRpdmVMaXN0LmggKi8sCiAJCQkJNTVFRTUzNjMyMjNCMkEyNDAwRkJBOTQ0IC8qIFNW
R1Byb3BlcnR5LmggKi8sCisJCQkJNTVEQ0M1MjYyMjQwNzRGQTAwQzI2RTMyIC8qIFNWR1Byb3Bl
cnR5QWNjZXNzb3IuaCAqLywKKwkJCQk1NURDQzUyNzIyNDA3NTBCMDBDMjZFMzIgLyogU1ZHUHJv
cGVydHlBY2Nlc3NvckltcGwuaCAqLywKIAkJCQk1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyog
U1ZHUHJvcGVydHlPd25lci5oICovLAogCQkJCTU1QkUwMjVDMjIzQjI5QzMwMDMyRjA4QSAvKiBT
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaCAqLywKIAkJCQk1NUJFMDI1NzIyM0IyOUMwMDAzMkYw
OEEgLyogU1ZHUHJvcGVydHlSZWdpc3RyeS5oICovLAogCQkJCTA4OEEwRTAyMTI2RUYxREIwMDk3
OEY3QSAvKiBTVkdQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCQkwODhBMEUwMzEyNkVGMURCMDA5
NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCAqLywKLQkJCQkwODgwRjcwRDEyODJCNDZEMDA5
NDg1MDUgLyogU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTA4MTNBNEU5
MTI4NDEzMjYwMDk5MjUxMSAvKiBTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gcHJvcGVydGllczsKQEAgLTI0NTExLDggKzI0NTE5LDYgQEAKIAkJCQlCMjIy
NzkxNDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3RvcEVsZW1lbnQuaWRsICovLAogCQkJCUIyMjI3
OTE2MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHJpbmdMaXN0LmggKi8sCiAJCQkJQjIyMjc5MTcw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1N0cmluZ0xpc3QuaWRsICovLAotCQkJCTdDMzlDMzY2MURE
QjgyQ0YwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmNwcCAqLywKLQkJCQk3QzM5QzM2
NzFEREI4MkNGMDBGRUZCMjkgLyogU1ZHU3RyaW5nTGlzdFZhbHVlcy5oICovLAogCQkJCUIyMjI3
OTIxMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3
OTIyMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdTdHlsZUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzky
MzBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmlkbCAqLywKQEAgLTI4NDM5LDYg
KzI4NDQ1LDggQEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTcyMTQ0MzMyMjIzRUM4NUYw
MEYxMkZGNyAvKiAobnVsbCkgaW4gSGVhZGVycyAqLywKKwkJCQk3MjE0NDMzMTIyM0VDODU0MDBG
MTJGRjcgLyogKG51bGwpIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQjgxRjgwQTQ4MjAwMTZB
NENFIC8qIEFib3J0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NEMEUyQkYxRjgw
QTU2RTAwMTZBNENFIC8qIEFib3J0U2lnbmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkI5NTE5
NTIwN0Q2MzM0MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCBpbiBIZWFkZXJzICovLApA
QCAtMzIwMTcsNiArMzIwMjUsNyBAQAogCQkJCTdDQ0VCRkMwMUREOEY2QUIwMDJDNDBCOCAvKiBT
VkdMZW5ndGhWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMzkwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
MjdBM0MwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0xpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1NURDQzUyOTIyNDA3QjJBMDBDMjZFMzIgLyogU1ZHTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDgxMDc2NDQxMjgyODU1NjAwN0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDg4QTBFMDkxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTQxMEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdMb2NhdGFibGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzIwODQsNiArMzIwOTMsOSBAQAog
CQkJCUIyMjI3QTkxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBOTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8uaCBpbiBIZWFkZXJzICovLAorCQkJCTU1RENDNTI4MjI0MDdC
MjAwMEMyNkUzMiAvKiBTVkdQcmltaXRpdmVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjE0
NDMzMzIyM0VDOEIwMDBGMTJGRjcgLyogU1ZHUHJvcGVydHkuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcyMTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eU93bmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwODhBMEUwQjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUZWFyT2Zm
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwQzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJv
cGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTlBMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzIxMDIs
MTEgKzMyMTE0LDkgQEAKIAkJCQlCMjIyN0FBMzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU2NyaXB0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQTYwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1NldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUZEMDEwMERBRjMzNTUwMEY1
RjU1QyAvKiBTVkdTTUlMRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDg4MEY3MEUxMjgy
QjQ2RDAwOTQ4NTA1IC8qIFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA4MTNBNEVBMTI4NDEzMjYwMDk5MjUxMSAvKiBTVkdTdGF0aWNQcm9wZXJ0eVRl
YXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QUE5MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdTdG9wRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBQUMwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTdDMzlDMzc3MUREQkUx
NzAwMEZFRkIyOSAvKiBTVkdTdHJpbmdMaXN0VmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyN0FCODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU3R5bGVFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0FCQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHU1ZHRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBQkUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1N3aXRjaEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2
aXNpb24gMjQzMTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MjAsMTIgKzcyMCwyNCBAQCB2b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9u
aXplQW5pbWF0ZWRTVkdBCiAgICAgU1ZHRWxlbWVudCogbm9uQ29uc3RUaGlzID0gY29uc3RfY2Fz
dDxTVkdFbGVtZW50Kj4odGhpcyk7CiAgICAgaWYgKG5hbWUgPT0gYW55UU5hbWUoKSkKICAgICAg
ICAgc3luY2hyb25pemVBbGxBbmltYXRlZFNWR0F0dHJpYnV0ZShub25Db25zdFRoaXMpOwotICAg
IGVsc2UgaWYgKGlzQW5pbWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShuYW1lKSkgeworICAgIGVsc2Ug
ewogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGhhcyBjaGFuZ2VkLCBz
ZXJpYWxpemUgdGhlIG5ldyB2YWx1ZSB0byB0aGUgYXR0cmlidXRlLgogICAgICAgICBpZiAoYXV0
byB2YWx1ZSA9IHByb3BlcnR5UmVnaXN0cnkoKS5zeW5jaHJvbml6ZShuYW1lKSkKICAgICAgICAg
ICAgIG5vbkNvbnN0VGhpcy0+c2V0U3luY2hyb25pemVkTGF6eUF0dHJpYnV0ZShuYW1lLCAqdmFs
dWUpOwotICAgIH0gZWxzZQotICAgICAgICBub25Db25zdFRoaXMtPnN5bmNocm9uaXplQXR0cmli
dXRlKG5hbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBub25Db25zdFRoaXMtPnN5bmNo
cm9uaXplQXR0cmlidXRlKG5hbWUpOworICAgIH0KK30KKyAgICAKK3ZvaWQgU1ZHRWxlbWVudDo6
Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3BlcnR5KQoreworICAgIC8vIFdl
IHdhbnQgdG8gZGlydHkgdGhlIHRvcC1sZXZlbCBwcm9wZXJ0eSB3aGVuIGEgZGVzY2VuZGFudCBj
aGFuZ2VzLiBGb3IgZXhhbXBsZQorICAgIC8vIGEgY2hhbmdlIGluIGFuIFNWR0xlbmd0aCBpdGVt
IGluIFNWR0xlbmd0aExpc3Qgc2hvdWxkIHNldCB0aGUgZGlydHkgZmxhZyBvbgorICAgIC8vIFNW
R0xlbmd0aExpc3QgYW5kIG5vdCB0aGUgU1ZHTGVuZ3RoLgorICAgIHByb3BlcnR5LT5zZXREaXJ0
eSgpOworCisgICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKHByb3BlcnR5UmVnaXN0cnkoKS5wcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoKnByb3BlcnR5
KSk7CiB9CiAKIHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAkocmV2aXNpb24gMjQzMTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQW5p
bWF0ZWRQcm9wZXJ0eUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAg
Ym9vbCBpc0FuaW1hdGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAot
ICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNv
bW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21t
aXRQcm9wZXJ0eUNoYW5nZShTVkdBbmltYXRlZFByb3BlcnR5Jik7CiAKICAgICBjb25zdCBTVkdF
bGVtZW50KiBhdHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRoaXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAkocmV2aXNpb24gMjQz
MTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNSwzMyArMjUsNjMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdMaXN0UHJvcGVydHlUZWFyT2Zm
LmgiCi0jaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdFZhbHVlcy5oIgorI2luY2x1ZGUgIlNWR1BhcnNl
clV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlNWR1ByaW1pdGl2ZUxpc3QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTVkdTdHJpbmdMaXN0IGZpbmFsIDogcHVibGljIFNWR1N0YXRp
Y0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdFZhbHVlcz4geworY2xhc3MgU1ZHU3Ry
aW5nTGlzdCBmaW5hbCA6IHB1YmxpYyBTVkdQcmltaXRpdmVMaXN0PFN0cmluZz4geworICAgIHVz
aW5nIEJhc2UgPSBTVkdQcmltaXRpdmVMaXN0PFN0cmluZz47CisgICAgdXNpbmcgQmFzZTo6QmFz
ZTsKKyAgICB1c2luZyBCYXNlOjptX2l0ZW1zOworCiBwdWJsaWM6Ci0gICAgdXNpbmcgQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNW
R1N0cmluZ0xpc3RWYWx1ZXM+OwotICAgIHVzaW5nIExpc3RXcmFwcGVyQ2FjaGUgPSBBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmY6Okxpc3RXcmFwcGVyQ2FjaGU7CisgICAgc3RhdGljIFJlZjxT
VkdTdHJpbmdMaXN0PiBjcmVhdGUoU1ZHUHJvcGVydHlPd25lciogb3duZXIpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdTdHJpbmdMaXN0KG93bmVyKSk7CisgICAgfQog
Ci0gICAgc3RhdGljIFJlZjxTVkdTdHJpbmdMaXN0PiBjcmVhdGUoU1ZHRWxlbWVudCYgY29udGV4
dEVsZW1lbnQsIFNWR1N0cmluZ0xpc3RWYWx1ZXMmIHZhbHVlcykKKyAgICB2b2lkIHJlc2V0KGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U1ZHU3RyaW5nTGlzdCgmY29udGV4dEVsZW1lbnQsIHZhbHVlcykpOworICAgICAgICBwYXJzZShz
dHJpbmcsICcgJyk7CisKKyAgICAgICAgLy8gQWRkIGVtcHR5IHN0cmluZywgaWYgbGlzdCBpcyBl
bXB0eS4KKyAgICAgICAgaWYgKG1faXRlbXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9pdGVt
cy5hcHBlbmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdTdHJp
bmdMaXN0PiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiwgU1ZHUHJvcGVydHlS
b2xlLCBTVkdTdHJpbmdMaXN0VmFsdWVzJiB2YWx1ZXMsIExpc3RXcmFwcGVyQ2FjaGUmKQorICAg
IGJvb2wgcGFyc2UoY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCiAgICAgewot
ICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byByZW1vdmUgdGhpcy4gSXQncyBvbmx5IG5l
ZWRlZCB0byBrZWVwIFdpbmRvd3MgY29tcGlsaW5nLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHU3RyaW5nTGlzdChudWxscHRy
LCB2YWx1ZXMpKTsKKyAgICAgICAgY2xlYXJJdGVtcygpOworCisgICAgICAgIGF1dG8gdXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhkYXRhKS51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KTsKKyAgICAgICAgY29uc3QgVUNoYXIqIHB0ciA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAg
ICAgICAgY29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIGRhdGEubGVuZ3RoKCk7CisgICAgICAgIHdo
aWxlIChwdHIgPCBlbmQpIHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHB0cjsK
KyAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKnB0ciAhPSBkZWxpbWl0ZXIgJiYgIWlz
U1ZHU3BhY2UoKnB0cikpCisgICAgICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICBpZiAo
cHRyID09IHN0YXJ0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV9pdGVt
cy5hcHBlbmQoU3RyaW5nKHN0YXJ0LCBwdHIgLSBzdGFydCkpOworICAgICAgICAgICAgc2tpcE9w
dGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIocHRyLCBlbmQsIGRlbGltaXRlcik7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gcHRyID09IGVuZDsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAg
U1ZHU3RyaW5nTGlzdChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgU1ZHU3RyaW5nTGlzdFZh
bHVlcyYgdmFsdWVzKQotICAgICAgICA6IFNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZH
U3RyaW5nTGlzdFZhbHVlcz4oY29udGV4dEVsZW1lbnQsIHZhbHVlcykKKyAgICBTdHJpbmcgdmFs
dWVBc1N0cmluZygpIGNvbnN0IG92ZXJyaWRlCiAgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CisKKyAgICAgICAgZm9yIChhdXRvIHN0cmluZyA6IG1faXRlbXMpIHsKKyAgICAg
ICAgICAgIGlmIChidWlsZGVyLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJyk7CisKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0cmluZyk7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogICAgIH0KIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdFZhbHVlcy5jcHAJKHJldmlzaW9u
IDI0MzEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcAko
bm9uZXhpc3RlbnQpCkBAIC0xLDc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3RWYWx1ZXMuaCIKLQotI2lu
Y2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdm9pZCBTVkdTdHJpbmdMaXN0VmFsdWVzOjpjb21taXRDaGFuZ2UoU1ZHRWxlbWVudCYgY29u
dGV4dEVsZW1lbnQpCi17Ci0gICAgY29udGV4dEVsZW1lbnQuaW52YWxpZGF0ZVNWR0F0dHJpYnV0
ZXMoKTsKLSAgICBjb250ZXh0RWxlbWVudC5zdmdBdHRyaWJ1dGVDaGFuZ2VkKG1fYXR0cmlidXRl
TmFtZSk7Ci19Ci0KLXZvaWQgU1ZHU3RyaW5nTGlzdFZhbHVlczo6cmVzZXQoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCi17Ci0gICAgcGFyc2Uoc3RyaW5nLCAnICcpOwotCi0gICAgLy8gQWRkIGVtcHR5
IHN0cmluZywgaWYgbGlzdCBpcyBlbXB0eS4KLSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICBh
cHBlbmQoZW1wdHlTdHJpbmcoKSk7Ci19Ci0KLXZvaWQgU1ZHU3RyaW5nTGlzdFZhbHVlczo6cGFy
c2UoY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCi17Ci0gICAgLy8gVE9ETyA6
IG1vcmUgZXJyb3IgY2hlY2tpbmcvcmVwb3J0aW5nCi0gICAgY2xlYXIoKTsKLQotICAgIGF1dG8g
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyhkYXRhKS51cGNvbnZlcnRlZENoYXJh
Y3RlcnMoKTsKLSAgICBjb25zdCBVQ2hhciogcHRyID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwot
ICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIgKyBkYXRhLmxlbmd0aCgpOwotICAgIHdoaWxlIChw
dHIgPCBlbmQpIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gcHRyOwotICAgICAgICB3
aGlsZSAocHRyIDwgZW5kICYmICpwdHIgIT0gZGVsaW1pdGVyICYmICFpc1NWR1NwYWNlKCpwdHIp
KQotICAgICAgICAgICAgcHRyKys7Ci0gICAgICAgIGlmIChwdHIgPT0gc3RhcnQpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgYXBwZW5kKFN0cmluZyhzdGFydCwgcHRyIC0gc3RhcnQpKTsK
LSAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIocHRyLCBlbmQsIGRlbGlt
aXRlcik7Ci0gICAgfQotfQotCi1TdHJpbmcgU1ZHU3RyaW5nTGlzdFZhbHVlczo6dmFsdWVBc1N0
cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotCi0gICAgdW5zaWdu
ZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7Ci0gICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcgJyk7Ci0KLSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXQoaSkpOwotICAgIH0KLQotICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFsdWVzLmNwcApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0VmFs
dWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3RWYWx1
ZXMuaAkocmV2aXNpb24gMjQzMTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xp
c3RWYWx1ZXMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgot
I2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlU
cmFpdHMuaCIKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBTVkdFbGVtZW50OwotY2xhc3MgU1ZHU3RyaW5nTGlzdDsKLWNsYXNzIFNWR1N0
cmluZ0xpc3RWYWx1ZXM7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IAotY2xhc3MgU1ZHUHJvcGVy
dHlUZWFyT2ZmOwotCi11c2luZyBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRlID0gU1ZHUHJv
cGVydHlBdHRyaWJ1dGU8U1ZHU3RyaW5nTGlzdFZhbHVlcz47Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IE93bmVyVHlwZT4KLXVzaW5nIFNWR1N0cmluZ0xpc3RWYWx1ZXNBdHRyaWJ1dGVBY2Nlc3NvciA9
IFNWR1Byb3BlcnR5QXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdTdHJpbmdMaXN0VmFs
dWVzQXR0cmlidXRlPjsKLQotY2xhc3MgU1ZHU3RyaW5nTGlzdFZhbHVlcyBmaW5hbCA6IHB1Ymxp
YyBWZWN0b3I8U3RyaW5nPiB7Ci1wdWJsaWM6Ci0gICAgU1ZHU3RyaW5nTGlzdFZhbHVlcyhjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgICAgICA6IG1fYXR0cmlidXRlTmFt
ZShhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc2V0KGNvbnN0IFN0
cmluZyYpOwotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiwgVUNoYXIgZGVsaW1pdGVyID0g
JywnKTsKLQotICAgIC8vIE9ubHkgdXNlZCBieSBTVkdTdHJpbmdMaXN0LgotICAgIHZvaWQgY29t
bWl0Q2hhbmdlKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50KTsKLQotICAgIFN0cmluZyB2YWx1
ZUFzU3RyaW5nKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgUXVhbGlmaWVkTmFtZSYg
bV9hdHRyaWJ1dGVOYW1lOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHU3RyaW5nTGlzdFZhbHVlcz4gewotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29u
c3QgU1ZHU3RyaW5nTGlzdFZhbHVlcyYgbGlzdCkgeyByZXR1cm4gbGlzdC52YWx1ZUFzU3RyaW5n
KCk7IH0KLQotICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFN0cmluZzsKLSAgICB1c2luZyBMaXN0
SXRlbVRlYXJPZmYgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8U3RyaW5nPjsKLSAgICB1c2luZyBMaXN0
UHJvcGVydHlUZWFyT2ZmID0gU1ZHU3RyaW5nTGlzdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdM
aXN0VmFsdWVzLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXN0cy5jcHAJKHJldmlzaW9uIDI0MzEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxOCArMTA5LDE2IEBAIHN0YXRpYyBj
b25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW4KIAogU1ZHVGVzdHM6OlNWR1Rlc3RzKFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIDogbV9jb250ZXh0RWxlbWVudCgqY29udGV4
dEVsZW1lbnQpCi17Ci0gICAgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci19Ci0KLXZvaWQgU1ZHVGVz
dHM6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1
dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnJlcXVpcmVkRmVh
dHVyZXNBdHRyLCAmU1ZHVGVzdHM6Om1fcmVxdWlyZWRGZWF0dXJlcz4oKTsKLSAgICByZWdpc3Ry
eS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0ciwgJlNW
R1Rlc3RzOjptX3JlcXVpcmVkRXh0ZW5zaW9ucz4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0
dHJpYnV0ZTxTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRyLCAmU1ZHVGVzdHM6Om1fc3lzdGVt
TGFuZ3VhZ2U+KCk7CisgICAgLCBtX3JlcXVpcmVkRmVhdHVyZXMoU1ZHU3RyaW5nTGlzdDo6Y3Jl
YXRlKGNvbnRleHRFbGVtZW50KSkKKyAgICAsIG1fcmVxdWlyZWRFeHRlbnNpb25zKFNWR1N0cmlu
Z0xpc3Q6OmNyZWF0ZShjb250ZXh0RWxlbWVudCkpCisgICAgLCBtX3N5c3RlbUxhbmd1YWdlKFNW
R1N0cmluZ0xpc3Q6OmNyZWF0ZShjb250ZXh0RWxlbWVudCkpCit7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7Cisg
ICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnJlcXVp
cmVkRmVhdHVyZXNBdHRyLCAmU1ZHVGVzdHM6Om1fcmVxdWlyZWRGZWF0dXJlcz4oKTsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cmVxdWlyZWRF
eHRlbnNpb25zQXR0ciwgJlNWR1Rlc3RzOjptX3JlcXVpcmVkRXh0ZW5zaW9ucz4oKTsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6c3lzdGVtTGFu
Z3VhZ2VBdHRyLCAmU1ZHVGVzdHM6Om1fc3lzdGVtTGFuZ3VhZ2U+KCk7CisgICAgfSk7CiB9CiAK
IFNWR1Rlc3RzOjpBdHRyaWJ1dGVSZWdpc3RyeSYgU1ZHVGVzdHM6OmF0dHJpYnV0ZVJlZ2lzdHJ5
KCkKQEAgLTEzMCw3ICsxMjgsNyBAQCBTVkdUZXN0czo6QXR0cmlidXRlUmVnaXN0cnkmIFNWR1Rl
c3RzOjphCiAKIGJvb2wgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKLSAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKKyAgICByZXR1cm4gUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKIH0KIAogYm9vbCBTVkdUZXN0
czo6aGFzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQpAQCAtMTQ1LDE1ICsxNDMs
MTUgQEAgYm9vbCBTVkdUZXN0czo6aGFzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZwogCiBib29sIFNW
R1Rlc3RzOjppc1ZhbGlkKCkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIGZlYXR1cmUgOiBtX3Jl
cXVpcmVkRmVhdHVyZXMudmFsdWUoKSkgeworICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IG1fcmVx
dWlyZWRGZWF0dXJlcy0+aXRlbXMoKSkgewogICAgICAgICBpZiAoZmVhdHVyZS5pc0VtcHR5KCkg
fHwgIXN1cHBvcnRlZFNWR0ZlYXR1cmVzKCkuY29udGFpbnMoZmVhdHVyZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBtX3N5c3Rl
bUxhbmd1YWdlLnZhbHVlKCkpIHsKKyAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogbV9zeXN0ZW1M
YW5ndWFnZS0+aXRlbXMoKSkgewogICAgICAgICBpZiAobGFuZ3VhZ2UgIT0gZGVmYXVsdExhbmd1
YWdlKCkuc3Vic3RyaW5nKDAsIDIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LSAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IG1fcmVxdWlyZWRFeHRlbnNpb25zLnZhbHVlKCkp
IHsKKyAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IG1fcmVxdWlyZWRFeHRlbnNpb25zLT5pdGVt
cygpKSB7CiAgICAgICAgIGlmICghaGFzRXh0ZW5zaW9uKGV4dGVuc2lvbikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTYzLDExICsxNjEsMTEgQEAgYm9vbCBTVkdUZXN0
czo6aXNWYWxpZCgpIGNvbnN0CiB2b2lkIFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IHJlcXVpcmVkRmVhdHVyZXNBdHRyKQotICAgICAg
ICBtX3JlcXVpcmVkRmVhdHVyZXMudmFsdWUoKS5yZXNldCh2YWx1ZSk7CisgICAgICAgIG1fcmVx
dWlyZWRGZWF0dXJlcy0+cmVzZXQodmFsdWUpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IHJl
cXVpcmVkRXh0ZW5zaW9uc0F0dHIpCi0gICAgICAgIG1fcmVxdWlyZWRFeHRlbnNpb25zLnZhbHVl
KCkucmVzZXQodmFsdWUpOworICAgICAgICBtX3JlcXVpcmVkRXh0ZW5zaW9ucy0+cmVzZXQodmFs
dWUpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IHN5c3RlbUxhbmd1YWdlQXR0cikKLSAgICAg
ICAgbV9zeXN0ZW1MYW5ndWFnZS52YWx1ZSgpLnJlc2V0KHZhbHVlKTsKKyAgICAgICAgbV9zeXN0
ZW1MYW5ndWFnZS0+cmVzZXQodmFsdWUpOwogfQogCiB2b2lkIFNWR1Rlc3RzOjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTg3LDI0ICsxODUs
NiBAQCB2b2lkIFNWR1Rlc3RzOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhCiAgICAgc3VwcG9y
dGVkQXR0cmlidXRlcy5hZGQoc3lzdGVtTGFuZ3VhZ2VBdHRyKTsKIH0KIAotUmVmPFNWR1N0cmlu
Z0xpc3Q+IFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmVzKCkKLXsKLSAgICBtX3JlcXVpcmVkRmVh
dHVyZXMuc2V0U2hvdWxkU3luY2hyb25pemUodHJ1ZSk7Ci0gICAgcmV0dXJuIFNWR1N0cmluZ0xp
c3Q6OmNyZWF0ZShtX2NvbnRleHRFbGVtZW50LCBtX3JlcXVpcmVkRmVhdHVyZXMudmFsdWUoKSk7
Ci19Ci0KLVJlZjxTVkdTdHJpbmdMaXN0PiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpb25zKCkK
LXsKLSAgICBtX3JlcXVpcmVkRXh0ZW5zaW9ucy5zZXRTaG91bGRTeW5jaHJvbml6ZSh0cnVlKTsK
LSAgICByZXR1cm4gU1ZHU3RyaW5nTGlzdDo6Y3JlYXRlKG1fY29udGV4dEVsZW1lbnQsIG1fcmVx
dWlyZWRFeHRlbnNpb25zLnZhbHVlKCkpOwotfQotCi1SZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHVGVz
dHM6OnN5c3RlbUxhbmd1YWdlKCkKLXsKLSAgICBtX3N5c3RlbUxhbmd1YWdlLnNldFNob3VsZFN5
bmNocm9uaXplKHRydWUpOwotICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUobV9jb250
ZXh0RWxlbWVudCwgbV9zeXN0ZW1MYW5ndWFnZS52YWx1ZSgpKTsKLX0KLQogYm9vbCBTVkdUZXN0
czo6aGFzRmVhdHVyZUZvckxlZ2FjeUJpbmRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZSwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIGhl
cmUgb25seSB0byBiZSBleHBvc2VkIGluIHRoZSBPYmplY3RpdmUtQyBhbmQgR09iamVjdCBiaW5k
aW5ncyBmb3IgYm90aCBOb2RlIGFuZCBET01JbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXN0cy5oCShyZXZpc2lvbiAyNDMxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVz
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIlNWR0F0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3RWYWx1ZXMu
aCIKKyNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTksMjEgKzU4LDIwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBoYXNGZWF0dXJlRm9yTGVnYWN5QmluZGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIGZy
b20gRE9NIHRocm91Z2ggdGhlIHN1cGVyIGNsYXNzZXMuCi0gICAgUmVmPFNWR1N0cmluZ0xpc3Q+
IHJlcXVpcmVkRmVhdHVyZXMoKTsKLSAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gcmVxdWlyZWRFeHRl
bnNpb25zKCk7Ci0gICAgUmVmPFNWR1N0cmluZ0xpc3Q+IHN5c3RlbUxhbmd1YWdlKCk7CisgICAg
U1ZHU3RyaW5nTGlzdCYgcmVxdWlyZWRGZWF0dXJlcygpIHsgcmV0dXJuIG1fcmVxdWlyZWRGZWF0
dXJlczsgfQorICAgIFNWR1N0cmluZ0xpc3QmIHJlcXVpcmVkRXh0ZW5zaW9ucygpIHsgcmV0dXJu
IG1fcmVxdWlyZWRFeHRlbnNpb25zOyB9CisgICAgU1ZHU3RyaW5nTGlzdCYgc3lzdGVtTGFuZ3Vh
Z2UoKSB7IHJldHVybiBtX3N5c3RlbUxhbmd1YWdlOyB9CiAKIHByb3RlY3RlZDoKICAgICBTVkdU
ZXN0cyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CiAKIHByaXZhdGU6CiAgICAgdXNpbmcg
QXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1Rlc3Rz
PjsKLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKIAogICAgIFNWR0VsZW1l
bnQmIG1fY29udGV4dEVsZW1lbnQ7Ci0gICAgU1ZHU3RyaW5nTGlzdFZhbHVlc0F0dHJpYnV0ZSBt
X3JlcXVpcmVkRmVhdHVyZXMgeyBTVkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIgfTsKLSAg
ICBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRlIG1fcmVxdWlyZWRFeHRlbnNpb25zIHsgU1ZH
TmFtZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIgfTsKLSAgICBTVkdTdHJpbmdMaXN0VmFsdWVz
QXR0cmlidXRlIG1fc3lzdGVtTGFuZ3VhZ2UgeyBTVkdOYW1lczo6c3lzdGVtTGFuZ3VhZ2VBdHRy
IH07CisgICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fcmVxdWlyZWRGZWF0dXJlczsKKyAgICBSZWY8
U1ZHU3RyaW5nTGlzdD4gbV9yZXF1aXJlZEV4dGVuc2lvbnM7CisgICAgUmVmPFNWR1N0cmluZ0xp
c3Q+IG1fc3lzdGVtTGFuZ3VhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHJldmlzaW9uIDI0MzEyMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXN0cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDkgQEAKICAg
ICBOb0ludGVyZmFjZU9iamVjdCwKICAgICBTdXBwcmVzc1RvSlNPYmplY3QsCiBdIGludGVyZmFj
ZSBTVkdUZXN0cyB7Ci0gICAgW05ld09iamVjdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNWR1N0cmlu
Z0xpc3QgcmVxdWlyZWRGZWF0dXJlczsKLSAgICBbTmV3T2JqZWN0XSByZWFkb25seSBhdHRyaWJ1
dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEV4dGVuc2lvbnM7Ci0gICAgW05ld09iamVjdF0gcmVh
ZG9ubHkgYXR0cmlidXRlIFNWR1N0cmluZ0xpc3Qgc3lzdGVtTGFuZ3VhZ2U7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFNWR1N0cmluZ0xpc3QgcmVxdWlyZWRGZWF0dXJlczsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgU1ZHU3RyaW5nTGlzdCByZXF1aXJlZEV4dGVuc2lvbnM7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFNWR1N0cmluZ0xpc3Qgc3lzdGVtTGFuZ3VhZ2U7CiAKICAgICAvLyBGSVhN
RTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3Jvbmcu
CiAgICAgYm9vbGVhbiBoYXNFeHRlbnNpb24ob3B0aW9uYWwgRE9NU3RyaW5nIGV4dGVuc2lvbiA9
ICJ1bmRlZmluZWQiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAko
cmV2aXNpb24gMjQzMTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM0LDkgKzM0LDEzIEBAIGlubGluZSBTVkdWaWV3RWxl
bWVudDo6U1ZHVmlld0VsZW1lbnQoY28KICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKHRoaXMpCiAgICAgLCBTVkdG
aXRUb1ZpZXdCb3godGhpcykKLSAgICAsIG1fdmlld1RhcmdldChTVkdOYW1lczo6dmlld1Rhcmdl
dEF0dHIpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnZpZXdUYWcpKTsKKyAg
ICAKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9w
ZXJ0eTxTVkdOYW1lczo6dmlld1RhcmdldEF0dHIsICZTVkdWaWV3RWxlbWVudDo6bV92aWV3VGFy
Z2V0PigpOworICAgIH0pOwogfQogCiBSZWY8U1ZHVmlld0VsZW1lbnQ+IFNWR1ZpZXdFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQpAQCAtNDQsMTUgKzQ4LDEyIEBAIFJlZjxTVkdWaWV3RWxlbWVudD4gU1ZHVmlld0VsZW1lbnQ6
OmNyZWEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdWaWV3RWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkpOwogfQogCi1SZWY8U1ZHU3RyaW5nTGlzdD4gU1ZHVmlld0VsZW1lbnQ6OnZpZXdU
YXJnZXQoKQotewotICAgIHJldHVybiBTVkdTdHJpbmdMaXN0OjpjcmVhdGUoKnRoaXMsIG1fdmll
d1RhcmdldCk7Ci19Ci0KIHZvaWQgU1ZHVmlld0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyKQotICAgICAgICBtX3ZpZXdUYXJn
ZXQucmVzZXQodmFsdWUpOworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0
cikgeworICAgICAgICBtX3ZpZXdUYXJnZXQtPnJlc2V0KHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAogICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
ICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAkocmV2aXNpb24gMjQz
MTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDEyICsyNCwxMSBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3
Qm94LmgiCisjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIlNWR1pvb21BbmRQ
YW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdTdHJpbmdMaXN0OwotCiBj
bGFzcyBTVkdWaWV3RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJsaWMgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgcHVibGljIFNWR0ZpdFRvVmlld0JveCwgcHVibGlj
IFNWR1pvb21BbmRQYW4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoU1ZHVmlld0VsZW1l
bnQpOwogcHVibGljOgpAQCAtMzgsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgU1ZHRWxl
bWVudDo6cmVmOwogICAgIHVzaW5nIFNWR0VsZW1lbnQ6OmRlcmVmOwogCi0gICAgUmVmPFNWR1N0
cmluZ0xpc3Q+IHZpZXdUYXJnZXQoKTsKKyAgICBSZWY8U1ZHU3RyaW5nTGlzdD4gdmlld1Rhcmdl
dCgpIHsgcmV0dXJuIG1fdmlld1RhcmdldC5jb3B5UmVmKCk7IH0KIAogcHJpdmF0ZToKICAgICBT
VkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTU2LDcg
KzU1LDcgQEAgcHJpdmF0ZToKIAogICAgIEF0dHJpYnV0ZU93bmVyUHJveHkgbV9hdHRyaWJ1dGVP
d25lclByb3h5IHsgKnRoaXMgfTsKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdp
c3RyeSB7ICp0aGlzIH07Ci0gICAgU1ZHU3RyaW5nTGlzdFZhbHVlcyBtX3ZpZXdUYXJnZXQ7Cisg
ICAgUmVmPFNWR1N0cmluZ0xpc3Q+IG1fdmlld1RhcmdldCB7IFNWR1N0cmluZ0xpc3Q6OmNyZWF0
ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0
UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDI0MzEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw3ICsyMiw2IEBACiAKICNpbmNsdWRlICJTVkdMZWdhY3lBbmltYXRlZFByb3Bl
cnR5LmgiCiAjaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNW
R1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVBy
b3BlcnR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcmltaXRpdmVQcm9wZXJ0eS5oCShyZXZpc2lvbiAyNDMxMjEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldEJhc2VWYWwoY29uc3QgUHJvcGVydHlUeXBlJiBiYXNlVmFsKQogICAgIHsKICAgICAg
ICAgbV9iYXNlVmFsID0gYmFzZVZhbDsKLSAgICAgICAgY29tbWl0UHJvcGVydHlDaGFuZ2UoKTsK
KyAgICAgICAgY29tbWl0UHJvcGVydHlDaGFuZ2UobnVsbHB0cik7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmNwcAkocmV2aXNpb24gMjQzMTIxKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgU1ZHUHJvcGVydHlPd25lciogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6bwogICAgIHJldHVybiBtX2NvbnRleHRFbGVtZW50OwogfQogCi12b2lkIFNWR0FuaW1h
dGVkUHJvcGVydHk6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKCkKK3ZvaWQgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eTo6Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqKQogewogICAgIGlmICghbV9j
b250ZXh0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHkuaAkocmV2aXNpb24gMjQz
MTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJTVkdQcm9wZXJ0eU93bmVyLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgU1ZHRWxlbWVudDsKIAogY2xh
c3MgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR0FuaW1hdGVkUHJv
cGVydHk+LCBwdWJsaWMgU1ZHUHJvcGVydHlPd25lciB7CiBwdWJsaWM6CkBAIC02Miw3ICs2Nyw3
IEBAIHByb3RlY3RlZDoKICAgICB9CiAgICAgCiAgICAgU1ZHUHJvcGVydHlPd25lciogb3duZXIo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdQcm9wZXJ0eSopIG92ZXJyaWRl
OwogICAgIAogICAgIFNWR0VsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQgeyBudWxscHRyIH07CiAg
ICAgYm9vbCBtX2lzQW5pbWF0aW5nIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaAkocmV2aXNpb24g
MjQzMTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVn
aXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgi
CiAjaW5jbHVkZSAiU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIlNWR1N0
cmluZ0xpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdab29tQW5kUGFuVHlwZS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTUyLDEzICs1MSw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1hcDsKICAgICB9CiAKLSAgICAvLyBOb24gYW5pbWF0YWJsZSBhdHRyaWJ1dGVzCi0g
ICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+
JiBhdHRyaWJ1dGVOYW1lLCBTVkdTdHJpbmdMaXN0VmFsdWVzQXR0cmlidXRlIE93bmVyVHlwZTo6
KmF0dHJpYnV0ZT4KLSAgICB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlKCkKLSAgICB7Ci0gICAgICAg
IHJlZ2lzdGVyQXR0cmlidXRlKFNWR1N0cmluZ0xpc3RWYWx1ZXNBdHRyaWJ1dGVBY2Nlc3NvcjxP
d25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0cmlidXRlTmFtZSwgYXR0cmlidXRlPigp
KTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
UXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR1pvb21BbmRQYW5UeXBlQXR0cmlidXRl
IE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KICAgICB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlKCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdC5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CisjaW5jbHVkZSAiU1ZHUHJvcGVydHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBJdGVtVHlwZT4KK2NsYXNzIFNWR0xpc3QgOiBwdWJsaWMgU1ZHUHJvcGVy
dHkgeworcHVibGljOgorICAgIHVuc2lnbmVkIG51bWJlck9mSXRlbXMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1faXRlbXMuc2l6ZSgpOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGNsZWFyKCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0
KCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgY2xlYXJJdGVtcygpOworICAgICAgICBjb21t
aXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25P
cjxJdGVtVHlwZT4gZ2V0SXRlbSh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGF1dG8g
cmVzdWx0ID0gY2FuR2V0SXRlbShpbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAg
ICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICAgICAgcmV0
dXJuIGF0KGluZGV4KTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gaW5pdGlh
bGl6ZShJdGVtVHlwZSYmIG5ld0l0ZW0pCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNh
bkFsdGVyTGlzdCgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAgICAgLy8gU3Bl
YzogQ2xlYXJzIGFsbCBleGlzdGluZyBjdXJyZW50IGl0ZW1zIGZyb20gdGhlIGxpc3QuCisgICAg
ICAgIGNsZWFySXRlbXMoKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSBhcHBlbmQoV1RGTW92ZShu
ZXdJdGVtKSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gV1RGTW92
ZShpdGVtKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gaW5zZXJ0SXRlbUJl
Zm9yZShJdGVtVHlwZSYmIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBjYW5BbHRlckxpc3QoKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwor
ICAgICAgICBBU1NFUlQocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgICAgICAv
LyBTcGVjOiBJZiB0aGUgaW5kZXggaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG51bWJlck9m
SXRlbXMsCisgICAgICAgIC8vIHRoZW4gdGhlIG5ldyBpdGVtIGlzIGFwcGVuZGVkIHRvIHRoZSBl
bmQgb2YgdGhlIGxpc3QuCisgICAgICAgIGlmIChpbmRleCA+IG51bWJlck9mSXRlbXMoKSkKKyAg
ICAgICAgICAgIGluZGV4ID0gbnVtYmVyT2ZJdGVtcygpOworCisgICAgICAgIGF1dG8gaXRlbSA9
IGluc2VydChpbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgp
OworICAgICAgICByZXR1cm4gV1RGTW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25P
cjxJdGVtVHlwZT4gcmVwbGFjZUl0ZW0oSXRlbVR5cGUmJiBuZXdJdGVtLCB1bnNpZ25lZCBpbmRl
eCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuUmVwbGFjZUl0ZW0oaW5kZXgpOwor
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCkpOworCisgICAgICAgIGF1dG8gaXRlbSA9IHJlcGxhY2UoaW5kZXgsIFdURk1v
dmUobmV3SXRlbSkpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIFdU
Rk1vdmUoaXRlbSk7CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8SXRlbVR5cGU+IHJlbW92ZUl0
ZW0odW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhblJlbW92
ZUl0ZW0oaW5kZXgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIGF1dG8gaXRlbSA9IHJlbW92
ZShpbmRleCk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gV1RGTW92
ZShpdGVtKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25PcjxJdGVtVHlwZT4gYXBwZW5kSXRlbShJ
dGVtVHlwZSYmIG5ld0l0ZW0pCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVy
TGlzdCgpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIGF1dG8gaXRlbSA9IGFwcGVuZChXVEZN
b3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKGl0ZW0pOworICAgIH0KKworICAgIC8vIFBhcnNlcnMgYW5kIGFuaW1hdG9ycyBuZWVk
IHRvIGhhdmUgYSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBpdGVtcy4KKyAgICBWZWN0b3I8SXRlbVR5
cGU+JiBpdGVtcygpIHsgcmV0dXJuIG1faXRlbXM7IH0KKyAgICBjb25zdCBWZWN0b3I8SXRlbVR5
cGU+JiBpdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXM7IH0KKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXRlbXMuc2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9pdGVtcy5pc0VtcHR5KCk7IH0KKworICAgIHZvaWQgY2xlYXJJdGVtcygp
CisgICAgeworICAgICAgICBkZXRhY2hJdGVtcygpOworICAgICAgICBtX2l0ZW1zLmNsZWFyKCk7
CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdXNpbmcgU1ZHUHJvcGVydHk6OlNWR1Byb3BlcnR5
OworCisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2FuQWx0ZXJMaXN0KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2FuR2V0SXRlbSh1bnNpZ25lZCBpbmRleCkKKyAg
ICB7CisgICAgICAgIGlmIChpbmRleCA+PSBtX2l0ZW1zLnNpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjxib29sPiBjYW5SZXBsYWNlSXRlbSh1bnNpZ25lZCBp
bmRleCkKKyAgICB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0KCk7CisgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKSk7CisKKyAgICAgICAgaWYgKGluZGV4ID49IG1faXRlbXMuc2l6ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNhblJlbW92ZUl0ZW0odW5z
aWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbkFsdGVyTGlzdCgp
OworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIEFTU0VSVChyZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCkpOworCisgICAgICAgIGlmIChpbmRleCA+PSBtX2l0ZW1zLnNpemUoKSkK
KyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoSXRlbXMoKSB7
IH0KKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBJdGVtVHlwZSBpbnNlcnQodW5zaWduZWQgaW5kZXgsIEl0ZW1UeXBlJiYpID0g
MDsKKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIEl0ZW1UeXBl
JiYpID0gMDsKKyAgICB2aXJ0dWFsIEl0ZW1UeXBlIHJlbW92ZSh1bnNpZ25lZCBpbmRleCkgPSAw
OworICAgIHZpcnR1YWwgSXRlbVR5cGUgYXBwZW5kKEl0ZW1UeXBlJiYpID0gMDsKKworICAgIFZl
Y3RvcjxJdGVtVHlwZT4gbV9pdGVtczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaAkocmV2aXNpb24gMjQzMTIx
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBTVkdBbmltYXRlZFByb3BlcnR5OworY2xhc3MgU1ZHUHJvcGVydHk7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE93bmVyVHlwZT4KIGNsYXNzIFNWR01lbWJlckFjY2Vzc29yIHsKQEAgLTQyLDYg
KzQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGVkUHJvcGVydHkoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0FuaW1hdGVkTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzKGNv
bnN0IE93bmVyVHlwZSYsIGNvbnN0IFNWR1Byb3BlcnR5JikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlcyhjb25zdCBPd25lclR5cGUmLCBjb25zdCBTVkdB
bmltYXRlZFByb3BlcnR5JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIE9w
dGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoY29uc3QgT3duZXJUeXBlJikgY29uc3QgeyByZXR1
cm4gV1RGOjpudWxsb3B0OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1ByaW1pdGl2ZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcmltaXRpdmVMaXN0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJpbWl0aXZlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTVkdMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgorY2xhc3MgU1ZHUHJpbWl0
aXZlTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFByb3BlcnR5VHlwZT4geworcHJvdGVjdGVkOgorICAg
IHVzaW5nIEJhc2UgPSBTVkdMaXN0PFByb3BlcnR5VHlwZT47CisgICAgdXNpbmcgQmFzZTo6QmFz
ZTsKKyAgICB1c2luZyBCYXNlOjpzaXplOworICAgIHVzaW5nIEJhc2U6Om1faXRlbXM7CisKKyAg
ICBQcm9wZXJ0eVR5cGUgYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlCisgICAgewor
ICAgICAgICBBU1NFUlQoaW5kZXggPCBzaXplKCkpOworICAgICAgICByZXR1cm4gbV9pdGVtcy5h
dChpbmRleCk7CisgICAgfQorCisgICAgUHJvcGVydHlUeXBlIGluc2VydCh1bnNpZ25lZCBpbmRl
eCwgUHJvcGVydHlUeXBlJiYgbmV3SXRlbSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VS
VChpbmRleCA8PSBzaXplKCkpOworICAgICAgICBtX2l0ZW1zLmluc2VydChpbmRleCwgV1RGTW92
ZShuZXdJdGVtKSk7CisgICAgICAgIHJldHVybiBhdChpbmRleCk7CisgICAgfQorCisgICAgUHJv
cGVydHlUeXBlIHJlcGxhY2UodW5zaWduZWQgaW5kZXgsIFByb3BlcnR5VHlwZSYmIG5ld0l0ZW0p
IG92ZXJyaWRlCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBzaXplKCkpOworICAgICAg
ICBtX2l0ZW1zLmF0KGluZGV4KSA9IFdURk1vdmUobmV3SXRlbSk7CisgICAgICAgIHJldHVybiBh
dChpbmRleCk7CisgICAgfQorCisgICAgUHJvcGVydHlUeXBlIHJlbW92ZSh1bnNpZ25lZCBpbmRl
eCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IHNpemUoKSk7CisgICAg
ICAgIFByb3BlcnR5VHlwZSBpdGVtID0gYXQoaW5kZXgpOworICAgICAgICBtX2l0ZW1zLnJlbW92
ZShpbmRleCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGl0ZW0pOworICAgIH0KKworICAgIFBy
b3BlcnR5VHlwZSBhcHBlbmQoUHJvcGVydHlUeXBlJiYgbmV3SXRlbSkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIG1faXRlbXMuYXBwZW5kKFdURk1vdmUobmV3SXRlbSkpOworICAgICAgICByZXR1
cm4gYXQoc2l6ZSgpIC0gMSk7CisgICAgfQorfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCShyZXZpc2lvbiAyNDMxMjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCwxMCArMjAsNzcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTVkdQcm9wZXJ0
eU93bmVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBlbnVtIGNsYXNzIFNWR1Byb3BlcnR5QWNjZXNzIDogdWludDhfdCB7IFJlYWRXcml0
ZSwgUmVhZE9ubHkgfTsKIGVudW0gY2xhc3MgU1ZHUHJvcGVydHlTdGF0ZSA6IHVpbnQ4X3QgeyBD
bGVhbiwgRGlydHkgfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorY2xhc3MgU1ZHUHJvcGVy
dHkgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQcm9wZXJ0eT4geworcHVibGljOgorICAgIHZpcnR1
YWwgflNWR1Byb3BlcnR5KCkgPSBkZWZhdWx0OworCisgICAgLy8gTWFuYWdpbmcgdGhlIHJlbGF0
aW9uc2hpcCB3aXRoIHRoZSBvd25lci4KKyAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJl
dHVybiBtX293bmVyOyB9CisgICAgdm9pZCBhdHRhY2goU1ZHUHJvcGVydHlPd25lciogb3duZXIs
IFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcykKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9vd25l
cik7CisgICAgICAgIEFTU0VSVChtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuKTsK
KyAgICAgICAgbV9vd25lciA9IG93bmVyOworICAgICAgICBtX2FjY2VzcyA9IGFjY2VzczsKKyAg
ICB9CisKKyAgICB2b2lkIGRldGFjaCgpCisgICAgeworICAgICAgICBtX293bmVyID0gbnVsbHB0
cjsKKyAgICAgICAgbV9hY2Nlc3MgPSBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlOworICAg
ICAgICBtX3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CisgICAgfQorCisgICAgY29u
c3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KCFtX293bmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBt
X293bmVyLT5hdHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpOworICAgIH0KKworICAgIHZvaWQgY29t
bWl0Q2hhbmdlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9vd25lcikKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9vd25lci0+Y29tbWl0UHJvcGVydHlDaGFuZ2UodGhpcyk7CisgICAg
fQogCisgICAgLy8gRE9NIGFjY2Vzcy4KKyAgICBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX2FjY2VzczsgfQorICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsg
cmV0dXJuIG1fYWNjZXNzID09IFNWR1Byb3BlcnR5QWNjZXNzOjpSZWFkT25seTsgfQorCisgICAg
Ly8gU3luY2hyb25pemluZyB0aGUgU1ZHIGF0dHJpYnV0ZSBhbmQgaXRzIHJlZmxlY3Rpb24gaGVy
ZS4KKyAgICBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNWR1Byb3Bl
cnR5U3RhdGU6OkRpcnR5OyB9CisgICAgdm9pZCBzZXREaXJ0eSgpIHsgbV9zdGF0ZSA9IFNWR1By
b3BlcnR5U3RhdGU6OkRpcnR5OyB9CisgICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgp
CisgICAgeworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbikK
KyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fc3RhdGUgPSBTVkdQ
cm9wZXJ0eVN0YXRlOjpDbGVhbjsKKyAgICAgICAgcmV0dXJuIHZhbHVlQXNTdHJpbmcoKTsKKyAg
ICB9CisKKyAgICAvLyBUaGlzIGlzIHVzZWQgd2hlbiBjYWxsaW5nIHNldEF0dHJpYnV0ZSgpLgor
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0
cmluZygpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBTVkdQcm9wZXJ0eShTVkdQcm9wZXJ0eU93bmVy
KiBvd25lciA9IG51bGxwdHIsIFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcyA9IFNWR1Byb3BlcnR5
QWNjZXNzOjpSZWFkV3JpdGUpCisgICAgICAgIDogbV9vd25lcihvd25lcikKKyAgICAgICAgLCBt
X2FjY2VzcyhhY2Nlc3MpCisgICAgeworICAgIH0KKworICAgIFNWR1Byb3BlcnR5T3duZXIqIG1f
b3duZXIgeyBudWxscHRyIH07CisgICAgU1ZHUHJvcGVydHlBY2Nlc3MgbV9hY2Nlc3MgeyBTVkdQ
cm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlIH07CisgICAgU1ZHUHJvcGVydHlTdGF0ZSBtX3N0YXRl
IHsgU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW4gfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNz
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eUFjY2Vzc29yLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3Nvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZSwgdHlwZW5h
bWUgUHJvcGVydHlUeXBlPgorY2xhc3MgU1ZHUHJvcGVydHlBY2Nlc3NvciA6IHB1YmxpYyBTVkdQ
b2ludGVyTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlLCBQcm9wZXJ0eVR5cGU+IHsKKyAgICB1c2lu
ZyBCYXNlID0gU1ZHUG9pbnRlck1lbWJlckFjY2Vzc29yPE93bmVyVHlwZSwgUHJvcGVydHlUeXBl
PjsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisKK3Byb3RlY3RlZDoKKyAgICB1
c2luZyBCYXNlOjpwcm9wZXJ0eTsKKyAgICB1c2luZyBCYXNlOjpzaW5nbGV0b247CisKKyAgICBi
b29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiBvd25lciwgY29uc3QgU1ZHUHJvcGVydHkmIHBy
b3BlcnR5KSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMtPnByb3Bl
cnR5KG93bmVyKS5wdHIoKSA9PSAmcHJvcGVydHk7CisgICAgfQorfTsKKworfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vz
c29ySW1wbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlBY2Nlc3Nvci5oIgorI2luY2x1ZGUg
IlNWR1N0cmluZ0xpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGU+CitjbGFzcyBTVkdTdHJpbmdMaXN0QWNjZXNzb3IgZmluYWwgOiBwdWJs
aWMgU1ZHUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0cmluZ0xpc3Q+IHsKKyAgICB1
c2luZyBCYXNlID0gU1ZHUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1N0cmluZ0xpc3Q+
OworCitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZH
U3RyaW5nTGlzdD4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRpYyBj
b25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBC
YXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHU3RyaW5nTGlzdEFjY2Vzc29yLCBwcm9wZXJ0eT4o
KTsgfQorfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlPd25lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5T3duZXIuaAkocmV2aXNpb24gMjQzMTIxKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlPd25lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw5IEBACiAjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xh
c3MgU1ZHRWxlbWVudDsKK2NsYXNzIFNWR1Byb3BlcnR5OwogCiBjbGFzcyBTVkdQcm9wZXJ0eU93
bmVyIHsKIHB1YmxpYzoKQEAgLTQwLDExICs0MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBvd25lcigpLT5hdHRyaWJ1dGVDb250ZXh0RWxlbWVudCgpOwogICAgIH0KICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoKQorICAgIHZpcnR1YWwgdm9pZCBjb21t
aXRQcm9wZXJ0eUNoYW5nZShTVkdQcm9wZXJ0eSogcHJvcGVydHkpCiAgICAgewogICAgICAgICBp
ZiAoIW93bmVyKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG93bmVyKCktPmNvbW1p
dFByb3BlcnR5Q2hhbmdlKCk7CisgICAgICAgIG93bmVyKCktPmNvbW1pdFByb3BlcnR5Q2hhbmdl
KHByb3BlcnR5KTsKICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnku
aAkocmV2aXNpb24gMjQzMTIxKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
UHJvcGVydHlPd25lclJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaCIKICNpbmNsdWRl
ICJTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oIgorI2luY2x1ZGUgIlNWR1By
b3BlcnR5QWNjZXNzb3JJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlSZWdpc3RyeS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTQyLDYgKzQzLDEyIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHU3RyaW5nTGlzdD4gT3duZXJU
eXBlOjoqcHJvcGVydHk+CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAg
eworICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR1N0cmluZ0xpc3RB
Y2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAg
IH0KKwogICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZp
ZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4gT3duZXJUeXBl
OjoqcHJvcGVydHk+CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCiAgICAgewpA
QCAtNzcsNiArODQsMTggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmluZEFjY2Vzc29yKGF0
dHJpYnV0ZU5hbWUpOwogICAgIH0KIAorICAgIFF1YWxpZmllZE5hbWUgcHJvcGVydHlBdHRyaWJ1
dGVOYW1lKGNvbnN0IFNWR1Byb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZSA9IG51bGxRTmFtZSgpOworICAg
ICAgICBlbnVtZXJhdGVSZWN1cnNpdmVseShbJl0oY29uc3QgYXV0byYgZW50cnkpIC0+IGJvb2wg
eworICAgICAgICAgICAgaWYgKCFlbnRyeS52YWx1ZS0+bWF0Y2hlcyhtX293bmVyLCBwcm9wZXJ0
eSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBhdHRyaWJ1dGVO
YW1lID0gZW50cnkua2V5OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWU7CisgICAgfQorCiAgICAgUXVhbGlmaWVkTmFt
ZSBhbmltYXRlZFByb3BlcnR5QXR0cmlidXRlTmFtZShjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5
JiBhbmltYXRlZFByb3BlcnR5KSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgUXVhbGlm
aWVkTmFtZSBhdHRyaWJ1dGVOYW1lID0gbnVsbFFOYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlSZWdpc3RyeS5oCShyZXZpc2lv
biAyNDMxMjEpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVJl
Z2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgflNWR1Byb3BlcnR5UmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoQWxsUHJvcGVydGllcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFF1YWxpZmll
ZE5hbWUgcHJvcGVydHlBdHRyaWJ1dGVOYW1lKGNvbnN0IFNWR1Byb3BlcnR5JikgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgUXVhbGlmaWVkTmFtZSBhbmltYXRlZFByb3BlcnR5QXR0cmlidXRlTmFt
ZShjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0
aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBTdHJpbmc+IHN5bmNocm9uaXpl
QWxsQXR0cmlidXRlcygpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLmgJ
KHJldmlzaW9uIDI0MzEyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0
YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDExMSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0xpc3RQcm9w
ZXJ0eS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFByb3Bl
cnR5VHlwZT4gCi1jbGFzcyBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmIDogcHVibGljIFNW
R0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IHsKLXB1YmxpYzoKLSAgICB1c2luZyBTZWxmID0g
U1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+OwotICAgIHVzaW5nIEJh
c2UgPSBTVkdMaXN0UHJvcGVydHk8UHJvcGVydHlUeXBlPjsKLQotICAgIHVzaW5nIExpc3RJdGVt
VHlwZSA9IHR5cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46Okxpc3RJdGVt
VHlwZTsKLSAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRy
YWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVRlYXJPZmY7Ci0KLSAgICB1c2luZyBCYXNlOjpt
X3JvbGU7Ci0gICAgdXNpbmcgQmFzZTo6bV92YWx1ZXM7Ci0KLSAgICBzdGF0aWMgUmVmPFNlbGY+
IGNyZWF0ZShTVkdFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgUHJvcGVydHlUeXBlJiB2YWx1ZXMp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWxmKGNvbnRleHRFbGVtZW50
LCB2YWx1ZXMpKTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbGVhcigpCi0gICAg
ewotICAgICAgICByZXR1cm4gQmFzZTo6Y2xlYXJWYWx1ZXMoKTsKLSAgICB9Ci0KLSAgICBFeGNl
cHRpb25PcjxMaXN0SXRlbVR5cGU+IGluaXRpYWxpemUoY29uc3QgTGlzdEl0ZW1UeXBlJiBuZXdJ
dGVtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmluaXRpYWxpemVWYWx1ZXMobmV3SXRl
bSk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiBnZXRJdGVtKHVuc2ln
bmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmdldEl0ZW1WYWx1ZXMoaW5k
ZXgpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPExpc3RJdGVtVHlwZT4gaW5zZXJ0SXRlbUJl
Zm9yZShjb25zdCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0sIHVuc2lnbmVkIGluZGV4KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIEJhc2U6Omluc2VydEl0ZW1CZWZvcmVWYWx1ZXMobmV3SXRlbSwgaW5k
ZXgpOwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPExpc3RJdGVtVHlwZT4gcmVwbGFjZUl0ZW0o
Y29uc3QgTGlzdEl0ZW1UeXBlJiBuZXdJdGVtLCB1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBCYXNlOjpyZXBsYWNlSXRlbVZhbHVlcyhuZXdJdGVtLCBpbmRleCk7Ci0gICAg
fQotCi0gICAgRXhjZXB0aW9uT3I8TGlzdEl0ZW1UeXBlPiByZW1vdmVJdGVtKHVuc2lnbmVkIGlu
ZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEJhc2U6OnJlbW92ZUl0ZW1WYWx1ZXMoaW5kZXgp
OwotICAgIH0KLQotICAgIEV4Y2VwdGlvbk9yPExpc3RJdGVtVHlwZT4gYXBwZW5kSXRlbShjb25z
dCBMaXN0SXRlbVR5cGUmIG5ld0l0ZW0pCi0gICAgewotICAgICAgICByZXR1cm4gQmFzZTo6YXBw
ZW5kSXRlbVZhbHVlcyhuZXdJdGVtKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBTVkdTdGF0
aWNMaXN0UHJvcGVydHlUZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQcm9wZXJ0
eVR5cGUmIHZhbHVlcykKLSAgICAgICAgOiBCYXNlKFVuZGVmaW5lZFJvbGUsIHZhbHVlcywgbnVs
bHB0cikKLSAgICAgICAgLCBtX2NvbnRleHRFbGVtZW50KCpjb250ZXh0RWxlbWVudCkKLSAgICB7
Ci0gICAgfQotCi0gICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX3JvbGUgPT0gQW5pbVZhbFJvbGU7Ci0gICAgfQotCi0gICAgdm9pZCBj
b21taXRDaGFuZ2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzKTsK
LSAgICAgICAgbV92YWx1ZXMtPmNvbW1pdENoYW5nZShtX2NvbnRleHRFbGVtZW50KTsKLSAgICB9
Ci0KLSAgICBib29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1U
eXBlJiwgdW5zaWduZWQqKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgLy8gbm8tb3AgZm9yIHN0
YXRpYyBsaXN0cwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIHByb2Nl
c3NJbmNvbWluZ0xpc3RJdGVtV3JhcHBlcihSZWY8TGlzdEl0ZW1UZWFyT2ZmPiYsIHVuc2lnbmVk
Kikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBSZWY8U1ZHRWxlbWVudD4gbV9jb250ZXh0RWxl
bWVudDsKLX07Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkK
</data>

          </attachment>
      

    </bug>

</bugzilla>