<?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>196086</bug_id>
          
          <creation_ts>2019-03-21 10:19:48 -0700</creation_ts>
          <short_desc>Remove the SVG tear off objects for SVGMatrix, SVGTransfrom, SVGTransformList and SVGAnimatedTransformList</short_desc>
          <delta_ts>2019-04-01 18:32:03 -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>196263</dependson>
          <blocked>191237</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>jonlee</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>1519703</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-21 10:19:48 -0700</bug_when>
    <thetext>This is part of removing the tear off objects of the SVG properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519916</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-21 14:01:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/49122913&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520549</commentid>
    <comment_count>2</comment_count>
      <attachid>365788</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-22 18:20:19 -0700</bug_when>
    <thetext>Created attachment 365788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520954</commentid>
    <comment_count>3</comment_count>
      <attachid>365788</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-25 12:48:24 -0700</bug_when>
    <thetext>Comment on attachment 365788
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +            I think there was a misconception about these functions.
&gt; +
&gt; +            The specs link is 
&gt; +                https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGMatrix.
&gt; +
&gt; +            Notice that the specs does not state that the multiply() method should
&gt; +            raise the exception NO_MODIFICATION_ALLOWED_ERR if the object is read
&gt; +            only. Reading through the specs, it is clear that these methods should
&gt; +            not affect the object but rather create new objects for the resulting
&gt; +            matrix.

That&apos;s a pretty fundamental behavior change, and I think we should do it in a separate patch. I&apos;m amazed that the SVG spec is vague enough to not make it clear what the expected behavior is, and that SVG tests don&apos;t exercise the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520956</commentid>
    <comment_count>4</comment_count>
      <attachid>365788</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-03-25 12:49:45 -0700</bug_when>
    <thetext>Comment on attachment 365788
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +            matrix.
&gt; 
&gt; That&apos;s a pretty fundamental behavior change, and I think we should do it in a separate patch. I&apos;m amazed that the SVG spec is vague enough to not make it clear what the expected behavior is, and that SVG tests don&apos;t exercise the behavior.

Definitely should be a separate patch. I&apos;d also like to know if this has any affect on d3 - do they use SVGMatrix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521373</commentid>
    <comment_count>5</comment_count>
      <attachid>365788</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-03-26 11:45:05 -0700</bug_when>
    <thetext>Comment on attachment 365788
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt;&gt; +            matrix.
&gt;&gt; 
&gt;&gt; That&apos;s a pretty fundamental behavior change, and I think we should do it in a separate patch. I&apos;m amazed that the SVG spec is vague enough to not make it clear what the expected behavior is, and that SVG tests don&apos;t exercise the behavior.
&gt; 
&gt; Definitely should be a separate patch. I&apos;d also like to know if this has any affect on d3 - do they use SVGMatrix?

https://bugs.webkit.org/show_bug.cgi?id=196263</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522958</commentid>
    <comment_count>6</comment_count>
      <attachid>365788</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-01 11:06:48 -0700</bug_when>
    <thetext>Comment on attachment 365788
Patch

This needs to be extracted from the SVGMatrix patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523091</commentid>
    <comment_count>7</comment_count>
      <attachid>366429</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-04-01 15:15:35 -0700</bug_when>
    <thetext>Created attachment 366429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523102</commentid>
    <comment_count>8</comment_count>
      <attachid>366429</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-01 15:37:34 -0700</bug_when>
    <thetext>Comment on attachment 366429
Patch

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:20571
&gt; +		725AB46F225295E700C73CF5 /* Recovered References */ = {
&gt; +			isa = PBXGroup;
&gt; +			children = (
&gt; +				08CA3D4312894A3800FFF260 /* SVGMatrixTearOff.h */,
&gt; +			);
&gt; +			name = &quot;Recovered References&quot;;
&gt; +			sourceTree = &quot;&lt;group&gt;&quot;;
&gt; +		};

I don&apos;t think you want this project change.

&gt; Source/WebCore/svg/SVGTransformValue.h:117
&gt; +    FloatPoint translate() const

I wish this were called &quot;translation&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523155</commentid>
    <comment_count>9</comment_count>
      <attachid>366449</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-04-01 17:31:45 -0700</bug_when>
    <thetext>Created attachment 366449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523163</commentid>
    <comment_count>10</comment_count>
      <attachid>366449</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-01 18:32:01 -0700</bug_when>
    <thetext>Comment on attachment 366449
Patch

Clearing flags on attachment: 366449

Committed r243730: &lt;https://trac.webkit.org/changeset/243730&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523164</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-01 18:32:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365788</attachid>
            <date>2019-03-22 18:20:19 -0700</date>
            <delta_ts>2019-04-01 15:15:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196086-20190322182018.patch</filename>
            <type>text/plain</type>
            <size>154280</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MzQwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3OCBAQAorMjAxOS0wMy0yMiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB0
aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR01hdHJpeCwgU1ZHVHJhbnNmcm9tLCBTVkdU
cmFuc2Zvcm1MaXN0IGFuZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjA4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBJREwgY2hhbmdlczoKKworICAg
ICAgICBTVkdNYXRyaXguaWRsOgorICAgICAgICAgICAgUmVtb3ZlIHRoZSBxdWFsaWZpZXIgTWF5
VGhyb3dFeGNlcHRpb24gZnJvbSBhbGwgdGhlIG1ldGhvZHMgZXhjZXB0CisgICAgICAgICAgICBp
bnZlcnNlKCkgYW5kIHJvdGF0ZUZyb21WZWN0b3IoKSBhbmQgYWRkIE5ld09iamVjdCB0byBhbGwg
b2YgdGhlbS4KKyAgICAgICAgICAgIEkgdGhpbmsgdGhlcmUgd2FzIGEgbWlzY29uY2VwdGlvbiBh
Ym91dCB0aGVzZSBmdW5jdGlvbnMuCisKKyAgICAgICAgICAgIFRoZSBzcGVjcyBsaW5rIGlzIAor
ICAgICAgICAgICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9jb29yZHMuaHRtbCNJ
bnRlcmZhY2VTVkdNYXRyaXguCisKKyAgICAgICAgICAgIE5vdGljZSB0aGF0IHRoZSBzcGVjcyBk
b2VzIG5vdCBzdGF0ZSB0aGF0IHRoZSBtdWx0aXBseSgpIG1ldGhvZCBzaG91bGQKKyAgICAgICAg
ICAgIHJhaXNlIHRoZSBleGNlcHRpb24gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIGlmIHRo
ZSBvYmplY3QgaXMgcmVhZAorICAgICAgICAgICAgb25seS4gUmVhZGluZyB0aHJvdWdoIHRoZSBz
cGVjcywgaXQgaXMgY2xlYXIgdGhhdCB0aGVzZSBtZXRob2RzIHNob3VsZAorICAgICAgICAgICAg
bm90IGFmZmVjdCB0aGUgb2JqZWN0IGJ1dCByYXRoZXIgY3JlYXRlIG5ldyBvYmplY3RzIGZvciB0
aGUgcmVzdWx0aW5nCisgICAgICAgICAgICBtYXRyaXguCisKKyAgICAgICAgU1ZHVHJhbnNmb3Jt
LmlkbDoKKyAgICAgICAgICAgIFJlbW92ZSB0aGUgTmV3T2JqZWN0IHF1YWxpZmllciBmcm9tIG1h
dHJpeCBhdHRyaWJ1dGUuIFRoaXMgbWF0Y2hlcyAKKyAgICAgICAgICAgIHRoZSBzcGVjczogaHR0
cHM6Ly93d3cudzMub3JnL1RSL1NWRzExL2Nvb3Jkcy5odG1sI0ludGVyZmFjZVNWR1RyYW5zZm9y
bS4KKyAgICAgICAgICAgIFNWR1RyYW5zZm9ybSB3aWxsIGludGVybmFsbHkgaG9sZCBhbiBTVkdN
YXRyaXguIEEgY2hhbmdlIGluIHRoaXMKKyAgICAgICAgICAgIFNWR01hdHJpeCB3aWxsIGFmZmVj
dCB0aGUgY29udGFpbmVyIFNWR1RyYW5zZm9ybS4KKworICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0
LmlkbDoKKyAgICAgICAgICAgIFJlbW92ZSB0aGUgTmV3T2JqZWN0IHF1YWxpZmllciBmcm9tIGNv
bnNvbGlkYXRlKCkgbWV0aG9kLiBUaGlzIG1hdGNoZXMKKyAgICAgICAgICAgIHRoZSBzcGVjcwor
ICAgICAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL1NWRzExL2Nvb3Jkcy5odG1sI19fc3Zn
X19TVkdUcmFuc2Zvcm1MaXN0X19jb25zb2xpZGF0ZQorICAgICAgICAgICAgVGhlIG1ldGhvZCBj
b25zb2xpZGF0ZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IGl0ZW0K
KyAgICAgICAgICAgIGluIHRoZSBsaXN0IGFmdGVyIGNvbnNvbGlkYXRpbmcgaXQuCisKKyAgICAg
ICAgQ29kZSBjaGFuZ2VzOgorCisgICAgICAgIC0tIFNWR01hdHJpeCBpcyBub3cgYSBzdXBlcmNs
YXNzIG9mIFNWR1ZhbHVlUHJvcGVydHk8QWZmaW5lVHJhbnNmb3JtPi4KKyAgICAgICAgICAgTm8g
bmVlZCBmb3IgU1ZHTWF0cml4VmFsdWUgc2luY2UgaXQgd2FzIHdyYXBwZXIgZm9ybSBBZmZpbmVU
cmFuc2Zvcm0uCisKKyAgICAgICAgLS0gU1ZHVHJhbnNmb3JtVmFsdWUgaG9sZHMgYSBSZWY8U1ZH
TWF0cml4PiBtZW1iZXIgaW4gYWRkaXRpb24gdG8gdGhlIGFuZ2xlCisgICAgICAgICAgIGFuZCB0
aGUgcm90YXRpb25DZW50ZXIuIFJlZjxTVkdNYXRyaXg+IGlzIHdoYXQgU1ZHVHJhbnNmb3JtLm1h
dHJpeCB3aWxsCisgICAgICAgICAgIHJldHVybi4gU28gYSBjaGFuZ2UgaW4gdGhpcyBtYXRyaXgg
d2lsbCBjaGFuZ2UgdGhlIG93bmVyIFNWR1RyYW5zZm9ybS4KKworICAgICAgICAtLSBTVkdUcmFu
c2Zvcm0gaXMgbm93IHRoZSBvd25lciBvZiBTVkdNYXRyaXggdmlhIGl0cyBTVkdUcmFuc2Zvcm1W
YWx1ZS4KKworICAgICAgICAtLSBTVkdUcmFuc2Zvcm1MaXN0IGlzIG5vdyBhIHN1cGVyY2xhc3Mg
b2YgU1ZHVmFsdWVQcm9wZXJ0eUxpc3Q8U1ZHVHJhbnNmb3JtPi4KKyAgICAgICAgICAgSXQgaXMg
cmVzcG9uc2libGUgZm9yIHBhcnNpbmcgYSBTdHJpbmcgdG8gaXRlbXMgb2YgU1ZHVHJhbnNmb3Jt
LgorCisgICAgICAgIC0tIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCBpcyBub3cgZGVmaW5lZCBh
cyBTVkdBbmltYXRlZFByb3BlcnR5TGlzdDwKKyAgICAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdD4u
CisKKyAgICAgICAgTm90ZSB0aGUgb3duZXJzaGlwIG9mIHRoZXNlIG9iamVjdHMgYXJlIHRoZSBm
b2xsb3dpbmc6CisKKyAgICAgICAgLS0gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IG93bnMgdGhl
IFNWR1RyYW5zZm9ybUxpc3QgdmlhIGl0cyBiYXNlVmFsIAorICAgICAgICAgICBhbmQgYW5pbVZh
bCBtZW1iZXJzLgorCisgICAgICAgIC0tIFNWR1RyYW5zZm9ybUxpc3Qgb3ducyBTVkdUcmFuc2Zv
cm0gdmlhIGl0cyBsaXN0IG9mIGl0ZW1zCisKKyAgICAgICAgLS0gU1ZHVHJhbnNmb3JtIG93bnMg
U1ZHTWF0cml4IHZpYSBpdHMgU1ZHVHJhbnNmb3JtVmFsdWUuCisKKyAgICAgICAgU28gYSBjaGFu
Z2UgaW4gU1ZHTWF0cml4IHdpbGwgcHJvcGFnYXRlIHRvIHRoZSBvd25lciBTVkdFbGVtZW50IHRo
cm91Z2gKKyAgICAgICAgdGhlIGZvbGxvd2luZyBvd25lcnNoaXAgY2hhaW46CisKKyAgICAgICAg
U1ZHTWF0cml4CisgICAgICAgICAgICBTVkdUcmFuc2Zyb20KKyAgICAgICAgICAgICAgICBTVkdU
cmFuc2Zvcm1MaXN0CisgICAgICAgICAgICAgICAgICAgIFNWR0FtaW1hdGVkVHJhbnNmb3JtTGlz
dAorICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRWxlbWVudAorCisgICAgICAgIFRvIGdldCB0
aGUgbWVjaGFuaWNzIG9mIHRoaXMgY2hhbmdlIHJpZ2h0LCBhIG5ldyBhY2Nlc3NvciwgYSBuZXcg
YW5pbWF0b3IKKyAgICAgICAgYW5kIGFuaW1hdGlvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciB0
aGUgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LgorCisgICAgICAgIE5vdGUgdGhhdCB3ZSB1c2Vk
IHRvIGhvbGQgYW4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QXR0cmlidXRlIGZvciB0aGUKKyAg
ICAgICAgbWVtYmVyIG1fdHJhbnNmb3JtIGFsdGhvdWdoIHRoaXMgbWVtYmVyIHNob3VsZCBub3Qg
YmUgYW5pbWF0ZWQuIFNlZSB0aGUKKyAgICAgICAgY29tbWVudCBpbiB0aGUgb2xkIFNWR1ZpZXdT
cGVjOjp0cmFuc2Zvcm0oKS4gVGhpcyBoYXMgYmVlbiBjaGFuZ2VkIGluCisgICAgICAgIHRoaXMg
cGF0Y2guIFNWR1ZpZXdTcGVjIG5vdyBob2xkcyBSZWY8U1ZHVHJhbnNmb3JtTGlzdD4gd2hpY2gg
bWF0Y2hlcworICAgICAgICB0aGUgc3BlY3M6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcxMS90
eXBlcy5odG1sI0ludGVyZmFjZVNWR1ZpZXdTcGVjLgorCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFs
dWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRl
RnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OmFuaW1hdGVSYW5nZVN0
cmluZyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphbmltYXRl
UmFuZ2VTdHJpbmcgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5oOgorICAgICAgICBUaGlzIGNoYW5nZSBpcyBuZWVkZWQgYmVjYXVzZSBhbmltYXRpbmcg
dGhlIHRyYW5zZm9ybSBhdHRyaWJ1dGUgY2FuIGJlCisgICAgICAgIHdyaXR0ZW4gYXMKKyAgICAg
ICAgICAgIDxhbmltYXRlIC4uLiBmcm9tPSJ0cmFuc2xhdGUoMTAwKSIgdG89InRyYW5zbGF0ZSgy
MDApIi8+CisgICAgICAgIG9yCisgICAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPSJ0
cmFuc2xhdGUiIGZyb209IjEwMCIgdG89IjIwMCIvPiIKKyAgICAgICAgU28gd2UgbmVlZCB0byBz
dXJyb3VuZCB0aGUgYW5pbWF0aW9uIHJhbmdlIHN0cmluZyB3aXRoIHRoZSB0eXBlIHF1YWxpZmll
cgorICAgICAgICBmb3IgYW5pbWF0ZVRyYW5zZm9ybS4KKworICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnR5cGUgY29uc3QpOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdG9yRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6U1ZHR3JhZGllbnRF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6cmVnaXN0ZXJB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6Z3JhZGllbnRUcmFuc2Zvcm0gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpncmFkaWVudFRyYW5zZm9ybUFu
aW1hdGVkKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6U1ZHR3JhcGhpY3NFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgIFRoZXJlIGlzIG9uZSBhdHRyaWJ1dGUgZm9yIHRoaXMgZWxlbWVu
dCB3aGljaCBpcyAiU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIiCisgICAgICAgIFNvIHRoZXJlIGlz
IG5vIG5lZWQgdG8gY2hlY2sgZm9yIGl0IHR3aWNlLgorCisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NF
bGVtZW50Ojp0cmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NF
bGVtZW50Ojp0cmFuc2Zvcm1BbmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGlj
c0VsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvU1ZHTWF0cml4Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdN
YXRyaXg6OmEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpzZXRBKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6YiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXRyaXg6OnNldEIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpjIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2V0Qyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXRyaXg6OmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpzZXREKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdNYXRyaXg6OnNldEUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpmIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2V0Rik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdNYXRyaXg6Om11bHRpcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJp
eDo6aW52ZXJzZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OnRyYW5zbGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OnNjYWxlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2NhbGVOb25Vbmlmb3JtIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6cm90YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hdHJpeDo6cm90YXRlRnJvbVZlY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXRyaXg6OmZsaXBYIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6Zmxp
cFkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4Ojpza2V3WCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OnNrZXdZIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR01hdHJpeDo6YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6
OmIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpjKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXRyaXg6OmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4
OjpmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6bXVsdGlwbHkpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjppbnZlcnNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6dHJhbnNsYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTWF0cml4OjpzY2FsZU5vblVuaWZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTWF0cml4Ojpyb3RhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0
cml4Ojpyb3RhdGVGcm9tVmVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR01h
dHJpeDo6ZmxpcFgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpmbGlw
WSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OnNrZXdYKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2tld1kpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpTVkdNYXRyaXgpOiBEZWxldGVkLgorICAgICAgICAqIHN2
Zy9TVkdNYXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdNYXRyaXhWYWx1ZS5oOiBSZW1vdmVk
LgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmNvbGxlY3RQYXR0ZXJuQXR0cmlidXRlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VU
cmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6Om1hdHJp
eFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50
OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHN2Zy9T
VkdUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6YW5p
bWF0ZWRMb2NhbFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVHJhbnNmb3JtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNm
b3JtOjp+U1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybTo6Y2xv
bmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjp0eXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybTo6YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VHJhbnNmb3JtOjptYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpzZXRN
YXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpzZXRUcmFuc2xhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpzZXRTY2FsZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUcmFuc2Zvcm06OnNldFJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFu
c2Zvcm06OnNldFNrZXdYKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybTo6c2V0U2tl
d1kpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm0uaWRsOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1E
aXN0YW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRk
VG9TVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6
CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdU
cmFuc2Zvcm1MaXN0VmFsdWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNm
b3JtTGlzdFZhbHVlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1WYWx1
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6bWF0cml4IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RyYW5zZm9ybVZhbHVlOjpyb3RhdGlvbkNlbnRlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6c2V0TWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RyYW5zZm9ybVZhbHVlOjptYXRyaXhEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VHJhbnNmb3JtVmFsdWU6OnRyYW5zbGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
cmFuc2Zvcm1WYWx1ZTo6c2V0VHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5z
Zm9ybVZhbHVlOjpzY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1W
YWx1ZTo6c2V0U2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OnNl
dFJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6c2V0U2tld1gp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OnNldFNrZXdZKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjpwcmVmaXhGb3JUcmFuc2Zyb21UeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjphcHBlbmROdW1iZXJzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjphcHBlbmRNYXRyaXgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OmFwcGVuZFRyYW5z
bGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6YXBwZW5k
U2NhbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OmFwcGVu
ZFJvdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6YXBw
ZW5kU2tld1ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OmFw
cGVuZFNrZXdZIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjpz
dmdNYXRyaXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1h
YmxlOjpwYXJzZUFuZFNraXBUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQW5kU2tpcFR5
cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VU
cmFuc2Zvcm1BdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICBUaGUgY29kZSBvZiB0aGlzIGZ1
bmN0aW9uIHdhcyBtb3ZlZCB0byBTVkdUcmFuc2Zvcm1MaXN0OjpwYXJzZSgpLgorCisgICAgICAg
ICogc3ZnL1NWR1RyYW5zZm9ybWFibGUuaDoKKyAgICAgICAgVGhlcmUgaXMgbm8gbmVlZCBmb3Ig
ZW51bSBUcmFuc2Zvcm1QYXJzaW5nTW9kZS4gSXQgd2FzIHVzZWQgYnkgCisgICAgICAgIFNWR1Zp
ZXdTcGVjOjpwYXJzZVZpZXdTcGVjKCkgdG8gdGVsbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRy
YW5zZm9ybUF0dHJpYnV0ZSgpCisgICAgICAgIG5vdCB0byBjbGVhciB0aGUgbGlzdC4gU1ZHVHJh
bnNmcm9tTGlzdCBub3cgaGFzIHR3byBwYXJzZSgpIGZ1bmN0aW9uczoKKyAgICAgICAgb25lIHB1
YmxpYyBhbmQgdGhlIHNlY29uZCBpcyBwcml2YXRlLiBUaGUgcHVibGljIG9uZSBjbGVhciB0aGUg
bGlzdAorICAgICAgICBiZWZvcmUgcGFyc2luZyB0aGUgaW5wdXQgU3RyaW5nLiBUaGUgcHJpdmF0
ZSBvbmUganVzdCBkb2VzIHRoZSBwYXJzaW5nLgorICAgICAgICBTVkdWaWV3U3BlYzo6cGFyc2VW
aWV3U3BlYygpIGNhbGxzIHRoZSBwcml2YXRlIG9uY2Ugc2luY2UgaXQgaXMgYSBmcmllbmQKKyAg
ICAgICAgb2YgU1ZHVHJhbnNmcm9tTGlzdC4KKworICAgICAgICAqIHN2Zy9TVkdWYWx1ZS5oOgor
ICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3
U3BlYzo6U1ZHVmlld1NwZWMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnRyYW5zZm9ybSk6IERlbGV0ZWQuCisgICAg
ICAgICogc3ZnL1NWR1ZpZXdTcGVjLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uVHJhbnNmb3JtTGlzdEZ1bmN0aW9uOjpw
cm9ncmVzcyk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnku
aDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdNYXRyaXhUZWFyT2ZmLmg6IFJlbW92ZWQu
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eSk6
CisKIDIwMTktMDMtMjIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgRmxha3kgQVZFbmNvZGVyQml0UmF0ZUtleSBzeW1ib2wgbm90IGZvdW5kIGNyYXNo
IG9uIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZC9N
ZWRpYVJlY29yZGVyLWNvbnN0cnVjdG9yLmh0bWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lv
biAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjI3NCw3ICsyMjc0LDYgQEAgc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwCiBzdmcv
U1ZHQW5pbWF0ZWRMZW5ndGguY3BwCiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAogc3Zn
L1NWR0FuaW1hdGVkUGF0aC5jcHAKLXN2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwCiBz
dmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuY3BwCiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5j
cHAKIHN2Zy9TVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMjM4NiwxMCAr
MjM4NSw3IEBAIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCiBzdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5jcHAKIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCiBzdmcvU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5jcHAKLXN2Zy9TVkdUcmFuc2Zvcm0uY3BwCiBzdmcvU1ZHVHJhbnNmb3JtRGlz
dGFuY2UuY3BwCi1zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAKLXN2Zy9TVkdUcmFuc2Zv
cm1WYWx1ZS5jcHAKIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAogc3ZnL1NWR1VSSVJlZmVyZW5j
ZS5jcHAKIHN2Zy9TVkdVbmtub3duRWxlbWVudC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0MzM4MykK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjQyLDcgKzI0Miw2IEBACiAJCTA4MTY2OERBMTI1NjAzRDUwMDZGMjVE
RSAvKiBTVkdUZXh0TGF5b3V0RW5naW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODE2NjhEODEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExheW91
dEVuZ2luZS5oICovOyB9OwogCQkwODFBQThEQTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVu
dFJhcmVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwODFBQThEOTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggKi87IH07
CiAJCTA4MUVCRjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFFQkYzOTBGRDM0RjQx
MDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oICovOyB9OwotCQkwODI1MDkzOTEyOEJENEQ4
MDBFMkVEOEUgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODI1MDkzODEyOEJENEQ4MDBFMkVEOEUgLyog
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmggKi87IH07CiAJCTA4MkRFNDJEMTI5MjYyMTYwMEQ5
MjNERiAvKiBTVkdQYXRoU2VnV2l0aENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MkRFNDJDMTI5MjYyMTYwMEQ5MjNERiAvKiBTVkdQYXRo
U2VnV2l0aENvbnRleHQuaCAqLzsgfTsKIAkJMDgzREFFQTcwRjAxQTdGQjAwMzQyNzU0IC8qIFJl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODNEQUVBMzBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmUuaCAqLzsgfTsKIAkJMDgzREFFQTkwRjAxQTdGQjAwMzQyNzU0IC8qIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDgzREFFQTUwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5oICovOyB9OwpAQCAtMjU3LDcgKzI1Niw2IEBACiAJCTA4NTRCMDIx
MTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAwRjEyNTVFNEU2MDBCOUNERDAgLyog
U1ZHSW5saW5lVGV4dEJveC5oICovOyB9OwogCQkwODU0QjAyMzEyNTVFNEU2MDBCOUNERDAgLyog
U1ZHUm9vdElubGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg1NEIwMTExMjU1RTRFNjAwQjlDREQwIC8qIFNWR1Jvb3RJbmxpbmVCb3guaCAq
LzsgfTsKIAkJMDg1NEIwMjUxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1RleHRRdWVyeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1NEIwMTMxMjU1RTRF
NjAwQjlDREQwIC8qIFNWR1RleHRRdWVyeS5oICovOyB9OwotCQkwODVBMTU5MzEyODlBOEREMDAy
NzEwRTMgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVBMTU5MjEyODlBOERE
MDAyNzEwRTMgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggKi87
IH07CiAJCTA4NUI5MkJCMEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NUI5MkI5MEVGREU3
M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9ICgpOyB9OyB9OwogCQkwODYzOTUxNjEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQ
YXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODYz
OTUxNDEzQjVGRTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmggKi87IH07CiAJCTA4NjQx
RDQ4MTIxNDJGN0QwMDhERTlGNiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NDFENDYxMjE0
MkY3RDAwOERFOUY2IC8qIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4MSw3ICsyNzksNiBA
QAogCQkwOEE0ODQ3ODBFNTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhBNDg0NzYwRTUyNzJDNTAw
QzNGRTc2IC8qIFNjcmlwdEVsZW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwOEM3QTJDNzEwREM3NDYyMDAyRDM2OEIgLyogU1ZHTmFtZXMu
aCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1NjU4MUU5MDlEMTUwOEQwMDBFNjFENyAvKiBTVkdOYW1lcy5oICovOyB9OwogCQkw
OEM5MjUxQTBGQ0M3QzRBMDA0ODBERUMgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEM5MjUxODBGQ0M3QzRBMDA0ODBERUMg
LyogRmlsdGVyRWZmZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMDhDQTNENDQxMjg5NEEzODAwRkZGMjYwIC8qIFNWR01hdHJpeFRlYXJPZmYu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4Q0EzRDQz
MTI4OTRBMzgwMEZGRjI2MCAvKiBTVkdNYXRyaXhUZWFyT2ZmLmggKi87IH07CiAJCTA4RDQ2Q0Uz
MTI3QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEQ0NkNFMjEyN0FENUZDMDA4OTY5
NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oICovOyB9OwogCQkwOEVERTE5RjEyQTUwQjhF
MDBCOTU3OTcgLyogU1ZHUmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDhFREUxOUUxMkE1MEI4RTAwQjk1Nzk3IC8qIFNWR1JlY3QuaCAqLzsgfTsK
IAkJMDhGMEJGQzMxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGMEJGQkUxMjU1QzUzQzAwMDc1
MTg1IC8qIFNWR1RleHRDaHVuay5oICovOyB9OwpAQCAtMjM2Myw3ICsyMzYwLDYgQEAKIAkJN0NF
NThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNWR1BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U1OEQ0OTFERDY0QTVCMDAxMjg1NTIgLyogU1ZH
UG9pbnQuaCAqLzsgfTsKIAkJN0NFNThENTAxREQ2OUExRTAwMTI4NTUyIC8qIFNWR051bWJlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFNThENEYx
REQ2OUExRTAwMTI4NTUyIC8qIFNWR051bWJlci5oICovOyB9OwogCQk3Q0U1OEQ1ODFERDdEOTZE
MDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTU4RDU2MUREN0Q5NkQwMDEyODU1MiAvKiBTVkdUcmFu
c2Zvcm1WYWx1ZS5oICovOyB9OwotCQk3Q0U1OEQ1QzFERDdFQzlDMDAxMjg1NTIgLyogU1ZHTWF0
cml4VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDRTU4RDVCMUREN0VDOUMwMDEyODU1MiAvKiBTVkdNYXRyaXhWYWx1ZS5oICovOyB9OwogCQk3
Q0U2ODM0NDE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0U2ODM0
MjE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5jcHAgKi87
IH07CiAJCTdDRTY4MzQ1MTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNj
cmlwdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0U2ODM0MzE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDRTY4
MzQ3MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTY4MzQ2
MTkyMTgyMTUwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTYwMCw3
ICs1NTk2LDYgQEAKIAkJMDgxQUE4RDkxMTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJl
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdFbGVtZW50UmFyZURh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRUJGMzgwRkQzNEY0MTAwREE3
NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHRmlsdGVyQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA4MUVCRjM5MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZpbHRlckJ1aWxkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDgyNTA5MzgxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgy
REU0MkMxMjkyNjIxNjAwRDkyM0RGIC8qIFNWR1BhdGhTZWdXaXRoQ29udGV4dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnV2l0aENvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgzREFFQTIwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDgzREFFQTMwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjI1LDcg
KzU2MjAsNiBAQAogCQkwODU0QjAxMTEyNTVFNEU2MDBCOUNERDAgLyogU1ZHUm9vdElubGluZUJv
eC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdSb290SW5saW5lQm94Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NTRCMDEyMTI1NUU0RTYwMEI5Q0REMCAv
KiBTVkdUZXh0UXVlcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHVGV4dFF1ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1NEIwMTMx
MjU1RTRFNjAwQjlDREQwIC8qIFNWR1RleHRRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdUZXh0UXVlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MDg1QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3Bl
cnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDg1QjkyQjgwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtRGF0YUJ1aWxkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJCOTBFRkRFNzNEMDBFNjEyM0MgLyog
Rm9ybURhdGFCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1E
YXRhQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODYzOTUxMzEzQjVG
RTU3MDBCQjM0NEQgLyogU1ZHQW5pbWF0ZWRQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01NjU2LDcgKzU2NTAsNiBAQAogCQkwOEE0ODQ3NjBFNTI3MkM1MDBDM0ZFNzYg
LyogU2NyaXB0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jp
cHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4QzkyNTE3MEZDQzdD
NEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRmlsdGVyRWZmZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMDhDQTNENDMxMjg5NEEzODAwRkZGMjYwIC8qIFNWR01hdHJpeFRlYXJPZmYu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWF0cml4VGVhck9mZi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEQ0NkNFMjEyN0FENUZDMDA4OTY5NEIgLyog
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4RURFMTlFMTJBNTBCOEUwMEI5NTc5NyAvKiBTVkdSZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR1JlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDhGMEJGQkQxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0Q2h1bmsuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTM5Niw3ICs5Mzg5LDYgQEAKIAkJNzE1NTZDQjcxRjlGMDlGQzAw
RTc4RDA4IC8qIEpTS2V5ZnJhbWVFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNLZXlmcmFtZUVmZmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MTU2QkM5RjIxQ0EzNTA2MDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1pbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNFZmZlY3RUaW1pbmcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzE1N0UzRDExREMxRUU0QjAwOTQ1NTBFIC8qIHNjcnViYmluZy1z
dXBwb3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInNjcnVi
YmluZy1zdXBwb3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzE1N0YwNjEx
NTBCNjU2NDAwNkVBQUJEIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTVBRDcxRDIwNTA1MTI0MDBENTkyREMg
LyogRGVjbGFyYXRpdmVBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGVjbGFyYXRpdmVBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzE1QUQ3MUYyMDUwNTEyNDAwRDU5MkRDIC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlY2xhcmF0aXZlQW5pbWF0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE1REE1RDMyMDFCQjkwMjAwMkVGMkIw
IC8qIEpTV2ViQW5pbWF0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV2ViQW5pbWF0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTk3MzMsMTAgKzk3MjUsNiBAQAogCQk3QzMzRjM2MDFCNEEwNTA0MDA1MDJDQUYg
LyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDMzlDMzYyMUREQTg2NDkwMEZFRkIyOSAvKiBTVkdMZW5ndGhMaXN0
VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0xlbmd0
aExpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM2MzFE
REE4NjQ5MDBGRUZCMjkgLyogU1ZHTGVuZ3RoTGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdMZW5ndGhMaXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTdDMzlDMzY4MUREQjg2RDMwMEZFRkIyOSAvKiBTVkdOdW1iZXJMaXN0VmFs
dWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR051bWJlckxp
c3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzM5QzM2OTFEREI4
NkQzMDBGRUZCMjkgLyogU1ZHTnVtYmVyTGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdOdW1iZXJMaXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTdDMzlDMzZDMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFs
dWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RyYW5zZm9y
bUxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzM5QzM2RDFE
REI4QkIwMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMzlDMzZFMUREQkEzRTAwMEZFRkIyOSAvKiBTVkdQYXRoU2Vn
TGlzdFZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQ
YXRoU2VnTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzlD
MzZGMUREQkEzRTAwMEZFRkIyOSAvKiBTVkdQYXRoU2VnTGlzdFZhbHVlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoU2VnTGlzdFZhbHVlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzM5QzM3MDFEREJBNDQwMDBGRUZCMjkgLyogU1ZHUGF0aFNl
Z0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aFNl
Z0xpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTk4OCwxMCArOTk3Niw3
IEBACiAJCTdDRTU4RDUxMUREN0IwOTMwMDEyODU1MiAvKiBTVkdMZW5ndGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVuZ3RoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDRTU4RDUyMUREN0IwOTMwMDEyODU1MiAvKiBTVkdMZW5ndGhWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTU4RDUzMUREN0IwOTMwMDEyODU1MiAv
KiBTVkdMZW5ndGhWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdM
ZW5ndGhWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0U1OEQ1NTFERDdE
OTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHVHJhbnNmb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3Q0U1OEQ1NjFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFs
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVHJhbnNmb3JtVmFsdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFNThENTkxREQ3REU1MjAwMTI4NTUy
IC8qIFNWR1RyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdUcmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0U1OEQ1
QjFERDdFQzlDMDAxMjg1NTIgLyogU1ZHTWF0cml4VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHTWF0cml4VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NFNjgzNDIxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lc3Nh
Z2VIYW5kbGVyRGVzY3JpcHRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
RTY4MzQzMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNjgzNDYxOTIxODIxNTAw
RjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0b3JUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MjI0LDcgKzE2MjA5LDYgQEAKIAkJ
CQkwODhBMERGRjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYu
aCAqLywKIAkJCQk1NUZBN0ZGRTIxMTEwRTZFMDA1QUVGRTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVR5cGUuaCAqLywKIAkJCQkwODUyNUU2MjEyNzhDMDAxMDBBODQ3NzggLyogU1ZHQW5pbWF0ZWRT
dGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCAqLywKLQkJCQkwODVBMTU5MjEyODlBOEREMDAyNzEwRTMg
LyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCiAJCQkJNzIx
NDQzNDUyMjQwQzhCQTAwRjEyRkY3IC8qIFNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oICovLAog
CQkJCTU1QkUwMjVGMjIzQjI5QzUwMDMyRjA4QSAvKiBTVkdBbmltYXRpb25BZGRpdGl2ZUZ1bmN0
aW9uLmggKi8sCiAJCQkJNzI2NkYwMjkyMjQzMTJCMTAwODMzOTc1IC8qIFNWR0FuaW1hdGlvbkFk
ZGl0aXZlTGlzdEZ1bmN0aW9uLmggKi8sCkBAIC0xNjI0OSw3ICsxNjIzMyw2IEBACiAJCQkJNTVE
Q0M1MjMyMjQwNzNGRTAwQzI2RTMyIC8qIFNWR0xpc3QuaCAqLywKIAkJCQkwODEwNzY0MzEyODI4
NTU2MDA3QzYzQkEgLyogU1ZHTGlzdFByb3BlcnR5LmggKi8sCiAJCQkJMDg4QTBFMDAxMjZFRjFE
QjAwOTc4RjdBIC8qIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKLQkJCQkwOENBM0Q0MzEy
ODk0QTM4MDBGRkYyNjAgLyogU1ZHTWF0cml4VGVhck9mZi5oICovLAogCQkJCTU1RUU1MzU0MjIz
QjI5RTkwMEZCQTk0NCAvKiBTVkdNZW1iZXJBY2Nlc3Nvci5oICovLAogCQkJCTU1QkUwMjVBMjIz
QjI5QzIwMDMyRjA4QSAvKiBTVkdQb2ludGVyTWVtYmVyQWNjZXNzb3IuaCAqLywKIAkJCQk1NURD
QzUyNTIyNDA3NDlFMDBDMjZFMzIgLyogU1ZHUHJpbWl0aXZlTGlzdC5oICovLApAQCAtMjQxNDMs
MTYgKzI0MTI2LDEyIEBACiAJCQkJMDg5MDIxQUMxMjZFRjVFOTAwOTJENUVBIC8qIFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdC5oICovLAogCQkJCUIyMjI3N0VCMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdB
bmltYXRlZExlbmd0aExpc3QuaWRsICovLAogCQkJCUIyMjI3N0VDMEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdBbmltYXRlZE51bWJlci5pZGwgKi8sCi0JCQkJNDMzMUFDNzcxM0I2ODcwMDAwQTlFNUFF
IC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgKi8sCi0JCQkJMDhCMzVCMTYxMjdCNkE4ODAw
NTMxNEREIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5oICovLAogCQkJCUIyMjI3N0VEMEQwMEJG
MUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuaWRsICovLAogCQkJCTA4NjM5NTEz
MTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguY3BwICovLAogCQkJCTA4NjM5NTE0
MTNCNUZFNTcwMEJCMzQ0RCAvKiBTVkdBbmltYXRlZFBhdGguaCAqLywKIAkJCQlCMjIyNzdGNDBE
MDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmlkbCAqLywK
IAkJCQlCMjIyNzdGNTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRSZWN0LmlkbCAqLywK
IAkJCQlCMjIyNzdGNjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRTdHJpbmcuaWRsICov
LAotCQkJCTcxNTdGMDYxMTUwQjY1NjQwMDZFQUFCRCAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3QuY3BwICovLAotCQkJCTA4MjUwOTM4MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuaCAqLywKIAkJCQlCMjIyNzdGODBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0LmlkbCAqLywKIAkJCQk0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYg
LyogU1ZHQW5pbWF0ZWRUeXBlLmggKi8sCiAJCQkJODM2RkJDRTkxNzhDMTEzMjAwQjIxQTE1IC8q
IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmNwcCAqLywKQEAgLTI0Mzc0LDcgKzI0MzUzLDYgQEAK
IAkJCQlCMjIyNzhCMjBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTWFza0VsZW1lbnQuaWRsICovLAog
CQkJCTA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLywKIAkJCQlCMjIy
NzhCMzBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTWF0cml4LmlkbCAqLywKLQkJCQk3Q0U1OEQ1QjFE
RDdFQzlDMDAxMjg1NTIgLyogU1ZHTWF0cml4VmFsdWUuaCAqLywKIAkJCQlCMjIyNzhCNDBEMDBC
RjIwMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzhCNTBE
MDBCRjIwMDA3MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc4QjYw
RDAwQkYyMDAwNzFCNzgyIC8qIFNWR01ldGFkYXRhRWxlbWVudC5pZGwgKi8sCkBAIC0yNDU0NCw3
ICsyNDUyMiw2IEBACiAJCQkJQjIyMjc5M0YwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RpdGxlRWxl
bWVudC5pZGwgKi8sCiAJCQkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9u
dENvbnZlcnNpb24uY3BwICovLAogCQkJCTFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdU
b09URkZvbnRDb252ZXJzaW9uLmggKi8sCi0JCQkJN0NFNThENTkxREQ3REU1MjAwMTI4NTUyIC8q
IFNWR1RyYW5zZm9ybS5jcHAgKi8sCiAJCQkJQjIyMjc5NDEwRDAwQkYyMTAwNzFCNzgyIC8qIFNW
R1RyYW5zZm9ybS5oICovLAogCQkJCUIyMjI3OTQyMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFu
c2Zvcm0uaWRsICovLAogCQkJCUIyMjI3OTQzMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zv
cm1hYmxlLmNwcCAqLywKQEAgLTI0NTUzLDkgKzI0NTMwLDYgQEAKIAkJCQlCMjIyNzk0NzBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCAqLywKIAkJCQlCMjIyNzk0OTBE
MDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5oICovLAogCQkJCUIyMjI3OTRBMEQw
MEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmlkbCAqLywKLQkJCQk3QzM5QzM2QzFE
REI4QkIwMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgKi8sCi0JCQkJN0Mz
OUMzNkQxRERCOEJCMDAwRkVGQjI5IC8qIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCAqLywKLQkJ
CQk3Q0U1OEQ1NTFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuY3BwICovLAog
CQkJCTdDRTU4RDU2MUREN0Q5NkQwMDEyODU1MiAvKiBTVkdUcmFuc2Zvcm1WYWx1ZS5oICovLAog
CQkJCUIyMjI3OTRCMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5jcHAgKi8sCiAJ
CQkJQjIyMjc5NEMwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmggKi8sCkBAIC0z
MTkxNiwxNSArMzE4OTAsMTIgQEAKIAkJCQkwODkwMjFBOTEyNkVGNURFMDA5MkQ1RUEgLyogU1ZH
QW5pbWF0ZWRMZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OTAyMUFEMTI2RUY1RTkwMDky
RDVFQSAvKiBTVkdBbmltYXRlZExlbmd0aExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OEEw
RTA0MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCBp
biBIZWFkZXJzICovLAotCQkJCTA4QjM1QjE3MTI3QjZBODgwMDUzMTRERCAvKiBTVkdBbmltYXRl
ZE51bWJlckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NjM5NTE2MTNCNUZFNTcwMEJCMzQ0
RCAvKiBTVkdBbmltYXRlZFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OUE4RTA3MTI4RDhC
M0QwMEU3QTUzNCAvKiBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwODhBMEUwNjEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODhBMEUwODEyNkVGMURC
MDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU1RkE3RkZGMjExMTBFNkUwMDVBRUZFNyAvKiBTVkdBbmltYXRlZFByb3BlcnR5VHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDg1MjVFNjMxMjc4QzAwMTAwQTg0Nzc4IC8qIFNWR0FuaW1h
dGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKLQkJCQkwODI1MDkzOTEy
OEJENEQ4MDBFMkVEOEUgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmggaW4gSGVhZGVycyAq
LywKLQkJCQkwODVBMTU5MzEyODlBOEREMDAyNzEwRTMgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0UHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzlEMzM0MzEzQTY5MTFD
MDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzlEMzM0
NDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OTkwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMjAyMCw4ICszMTk5MSw2IEBACiAJCQkJQjIyMjdBNDQwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR01hcmtlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTQ3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXNrRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDgwNkU1N0ExMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMDhDQTNENDQxMjg5NEEzODAwRkZGMjYwIC8qIFNWR01hdHJpeFRlYXJPZmYuaCBp
biBIZWFkZXJzICovLAotCQkJCTdDRTU4RDVDMUREN0VDOUMwMDEyODU1MiAvKiBTVkdNYXRyaXhW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNEIwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R01ldGFkYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBMUYyQjEwQ0VGMEFCRjAw
NDQyRjZBIC8qIFNWR01pc3NpbmdHbHlwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTRFMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNUGF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAJ
KHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVu
dEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCwyMSArOTAsMjEgQEAgYm9vbCBTVkdBbmlt
YXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZVRvQQogewogICAgIGlmICghdGFyZ2V0RWxlbWVudCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZUFuaW1hdGlvbkNv
bnRyb2xsZXIoKS5jYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKHRvQXRFbmRPZkR1cmF0
aW9uU3RyaW5nKTsKKyAgICByZXR1cm4gYXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcigpLmNh
bGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoYW5pbWF0ZVJhbmdlU3RyaW5nKHRvQXRFbmRP
ZkR1cmF0aW9uU3RyaW5nKSk7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxj
dWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRvU3RyaW5nKQogewogICAgIGlmICghdGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIoKS5jYWxj
dWxhdGVGcm9tQW5kVG9WYWx1ZXMoZnJvbVN0cmluZywgdG9TdHJpbmcpOworICAgIHJldHVybiBh
dHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyKCkuY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGFu
aW1hdGVSYW5nZVN0cmluZyhmcm9tU3RyaW5nKSwgYW5pbWF0ZVJhbmdlU3RyaW5nKHRvU3RyaW5n
KSk7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVGcm9tQW5kQnlW
YWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQog
ewogICAgIGlmICghdGhpcy0+dGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIoKS5jYWxjdWxhdGVGcm9t
QW5kQnlWYWx1ZXMoZnJvbVN0cmluZywgYnlTdHJpbmcpOworICAgIHJldHVybiBhdHRyaWJ1dGVB
bmltYXRpb25Db250cm9sbGVyKCkuY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGFuaW1hdGVSYW5n
ZVN0cmluZyhmcm9tU3RyaW5nKSwgYW5pbWF0ZVJhbmdlU3RyaW5nKGJ5U3RyaW5nKSk7CiB9CiAK
IHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oCShyZXZpc2lvbiAyNDMz
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTYxLDYgKzYxLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0QXR0cmli
dXRlTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldEFu
aW1hdGlvbigpIG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBTdHJpbmcgYW5pbWF0ZVJhbmdlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBzdHJpbmc7IH0KKwogcHJp
dmF0ZToKICAgICBib29sIGhhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlKCkgY29uc3Q7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmNwcAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNCArNjYsOSBAQCB2b2lk
IFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpwYXJzZUF0CiAgICAgU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKK1N0cmluZyBTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudDo6YW5pbWF0ZVJhbmdlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKSBjb25zdAoreworICAgIHJldHVybiBTVkdUcmFuc2Zvcm1WYWx1ZTo6cHJlZml4Rm9yVHJh
bnNmcm9tVHlwZShtX3R5cGUpICsgc3RyaW5nICsgJyknOworfQorCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAkocmV2aXNpb24g
MjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBi
b29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFs
OworICAgIFN0cmluZyBhbmltYXRlUmFuZ2VTdHJpbmcoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7CiAKICAgICBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSBtX3R5cGU7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dC5jcHAJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3QuY3BwCShub25leGlzdGVudCkKQEAgLTEsMTQ2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJp
Y0B3ZWJraXQub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAxMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgIlNWR1RyYW5z
Zm9ybURpc3RhbmNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0QW5pbWF0b3I6OlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yKFNWR0Fu
aW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQotICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LCBhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkKLSAgICAsIG1fdHJhbnNmb3JtVHlw
ZVN0cmluZyhTVkdUcmFuc2Zvcm1WYWx1ZTo6dHJhbnNmb3JtVHlwZVByZWZpeEZvclBhcnNpbmco
ZG93bmNhc3Q8U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ+KGFuaW1hdGlvbkVsZW1lbnQpLT50
cmFuc2Zvcm1UeXBlKCkpKQotewotICAgIC8vIE9ubHkgPGFuaW1hdGVUcmFuc2Zvcm0+IHVzZXMg
dGhpcyBhbmltYXRvciwgYXMgPGFuaW1hdGU+IGRvZXNuJ3QgYWxsb3cgdG8gYW5pbWF0ZSB0cmFu
c2Zvcm0gbGlzdHMgZGlyZWN0bHkuCi0gICAgQVNTRVJUKGFuaW1hdGlvbkVsZW1lbnQtPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpKTsKLX0KLQotc3RkOjp1bmlxdWVf
cHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNv
bnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIFNW
R0FuaW1hdGVkVHlwZTo6Y3JlYXRlKFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RyYW5zZm9ybUxpc3RW
YWx1ZXM+Ojpmcm9tU3RyaW5nKG1fdHJhbnNmb3JtVHlwZVN0cmluZyArIHN0cmluZyArICcpJykp
OwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICByZXR1cm4gY29uc3Ry
dWN0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+KGFuaW1hdGVkVHlwZXMp
OwotfQotCi12b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpzdG9wQW5pbVZh
bEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVk
VHlwZXMpCi17Ci0gICAgc3RvcEFuaW1WYWxBbmltYXRpb25Gb3JUeXBlPFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0QW5pbWF0b3I6OnJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMsIFNWR0FuaW1hdGVkVHlwZSYgdHlwZSkK
LXsKLSAgICByZXNldEZyb21CYXNlVmFsdWU8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Pihhbmlt
YXRlZFR5cGVzLCB0eXBlKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmlt
YXRvcjo6YW5pbVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxXaWxsQ2hhbmdlRm9yVHlwZTxTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3Q+KGFuaW1hdGVkVHlwZXMpOwotfQotCi12b2lkIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjphbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBhbmltVmFsRGlk
Q2hhbmdlRm9yVHlwZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+KGFuaW1hdGVkVHlwZXMpOwot
fQotCi12b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5
cGVzKFNWR0FuaW1hdGVkVHlwZSogZnJvbSwgU1ZHQW5pbWF0ZWRUeXBlKiB0bykKLXsKLSAgICBB
U1NFUlQoZnJvbS0+dHlwZSgpID09IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCk7Ci0gICAgQVNTRVJU
KGZyb20tPnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKLQotICAgIGNvbnN0IGF1dG8mIGZyb21UcmFu
c2Zvcm1MaXN0ID0gZnJvbS0+YXM8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4oKTsKLSAgICBhdXRv
JiB0b1RyYW5zZm9ybUxpc3QgPSB0by0+YXM8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4oKTsKLSAg
ICBhdXRvIGZyb21UcmFuc2Zvcm1MaXN0U2l6ZSA9IGZyb21UcmFuc2Zvcm1MaXN0LnNpemUoKTsK
LSAgICBpZiAoIWZyb21UcmFuc2Zvcm1MaXN0U2l6ZSB8fCBmcm9tVHJhbnNmb3JtTGlzdFNpemUg
IT0gdG9UcmFuc2Zvcm1MaXN0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJU
KGZyb21UcmFuc2Zvcm1MaXN0U2l6ZSA9PSAxKTsKLSAgICBjb25zdCBhdXRvJiBmcm9tVHJhbnNm
b3JtID0gZnJvbVRyYW5zZm9ybUxpc3RbMF07Ci0gICAgYXV0byYgdG9UcmFuc2Zvcm0gPSB0b1Ry
YW5zZm9ybUxpc3RbMF07Ci0KLSAgICBBU1NFUlQoZnJvbVRyYW5zZm9ybS50eXBlKCkgPT0gdG9U
cmFuc2Zvcm0udHlwZSgpKTsKLSAgICB0b1RyYW5zZm9ybSA9IFNWR1RyYW5zZm9ybURpc3RhbmNl
OjphZGRTVkdUcmFuc2Zvcm1zKGZyb21UcmFuc2Zvcm0sIHRvVHJhbnNmb3JtKTsKLX0KLQotdm9p
ZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBl
KiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvLCBTVkdBbmltYXRlZFR5cGUqIHRvQXRFbmRPZkR1
cmF0aW9uLCBTVkdBbmltYXRlZFR5cGUqIGFuaW1hdGVkKQotewotICAgIEFTU0VSVChtX2FuaW1h
dGlvbkVsZW1lbnQpOwotCi0gICAgLy8gU3BlYzogVG8gYW5pbWF0aW9ucyBwcm92aWRlIHNwZWNp
ZmljIGZ1bmN0aW9uYWxpdHkgdG8gZ2V0IGEgc21vb3RoIGNoYW5nZSBmcm9tIHRoZSB1bmRlcmx5
aW5nIHZhbHVlIHRvIHRoZQotICAgIC8vIOKAmHRv4oCZIGF0dHJpYnV0ZSB2YWx1ZSwgd2hpY2gg
Y29uZmxpY3RzIG1hdGhlbWF0aWNhbGx5IHdpdGggdGhlIHJlcXVpcmVtZW50IGZvciBhZGRpdGl2
ZSB0cmFuc2Zvcm0gYW5pbWF0aW9ucwotICAgIC8vIHRvIGJlIHBvc3QtbXVsdGlwbGllZC4gQXMg
YSBjb25zZXF1ZW5jZSwgaW4gU1ZHIDEuMSB0aGUgYmVoYXZpb3Igb2YgdG8gYW5pbWF0aW9ucyBm
b3Ig4oCYYW5pbWF0ZVRyYW5zZm9ybeKAmSBpcyB1bmRlZmluZWQuCi0gICAgY29uc3QgYXV0byYg
ZnJvbVRyYW5zZm9ybUxpc3QgPSBmcm9tLT5hczxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPigpOwot
ICAgIGNvbnN0IGF1dG8mIHRvVHJhbnNmb3JtTGlzdCA9IHRvLT5hczxTVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzPigpOwotICAgIGNvbnN0IGF1dG8mIHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtTGlz
dCA9IHRvQXRFbmRPZkR1cmF0aW9uLT5hczxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPigpOwotICAg
IGF1dG8mIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IGFuaW1hdGVkLT5hczxTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzPigpOwotCi0gICAgLy8gUGFzcyBmYWxzZSB0byAncmVzaXplQW5pbWF0ZWRMaXN0
SWZOZWVkZWQnIGhlcmUsIGFzIHRoZSBzcGVjaWFsIHBvc3QtbXVsdGlwbGljYXRpb24gYmVoYXZp
b3Igb2YgPGFuaW1hdGVUcmFuc2Zvcm0+IG5lZWRzIHRvIGJlIHJlc3BlY3RlZCBiZWxvdy4KLSAg
ICBpZiAoIW1fYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0RnJvbVRvTGlzdFZhbHVlczxTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzPihmcm9tVHJhbnNmb3JtTGlzdCwgdG9UcmFuc2Zvcm1MaXN0LCBhbmlt
YXRlZFRyYW5zZm9ybUxpc3QsIHBlcmNlbnRhZ2UsIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gTmV2ZXIgcmVzaXplIHRoZSBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdG8gdGhlIHRv
VHJhbnNmb3JtTGlzdCBzaXplLCBpbnN0ZWFkIGVpdGhlciBjbGVhciB0aGUgbGlzdCBvciBhcHBl
bmQgdG8gaXQuCi0gICAgaWYgKCFhbmltYXRlZFRyYW5zZm9ybUxpc3QuaXNFbXB0eSgpICYmICgh
bV9hbmltYXRpb25FbGVtZW50LT5pc0FkZGl0aXZlKCkgfHwgbV9hbmltYXRpb25FbGVtZW50LT5h
bmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8pKQotICAgICAgICBhbmltYXRlZFRy
YW5zZm9ybUxpc3QuY2xlYXIoKTsKLQotICAgIGF1dG8gZnJvbVRyYW5zZm9ybUxpc3RTaXplID0g
ZnJvbVRyYW5zZm9ybUxpc3Quc2l6ZSgpOwotICAgIGNvbnN0IGF1dG8mIHRvVHJhbnNmb3JtID0g
dG9UcmFuc2Zvcm1MaXN0WzBdOwotICAgIGNvbnN0IGF1dG8gZWZmZWN0aXZlRnJvbSA9IGZyb21U
cmFuc2Zvcm1MaXN0U2l6ZSA/IGZyb21UcmFuc2Zvcm1MaXN0WzBdIDogU1ZHVHJhbnNmb3JtVmFs
dWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29uc3RydWN0WmVyb1Ry
YW5zZm9ybSk7Ci0gICAgYXV0byBjdXJyZW50VHJhbnNmb3JtID0gU1ZHVHJhbnNmb3JtRGlzdGFu
Y2UoZWZmZWN0aXZlRnJvbSwgdG9UcmFuc2Zvcm0pLnNjYWxlZERpc3RhbmNlKHBlcmNlbnRhZ2Up
LmFkZFRvU1ZHVHJhbnNmb3JtKGVmZmVjdGl2ZUZyb20pOwotICAgIGlmIChtX2FuaW1hdGlvbkVs
ZW1lbnQtPmlzQWNjdW11bGF0ZWQoKSAmJiByZXBlYXRDb3VudCkgewotICAgICAgICBjb25zdCBh
dXRvIGVmZmVjdGl2ZVRvQXRFbmQgPSB0b0F0RW5kT2ZEdXJhdGlvblRyYW5zZm9ybUxpc3Quc2l6
ZSgpID8gdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1MaXN0WzBdIDogU1ZHVHJhbnNmb3JtVmFs
dWUodG9UcmFuc2Zvcm0udHlwZSgpLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6Q29uc3RydWN0WmVyb1Ry
YW5zZm9ybSk7Ci0gICAgICAgIGFuaW1hdGVkVHJhbnNmb3JtTGlzdC5hcHBlbmQoU1ZHVHJhbnNm
b3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9ybXMoY3VycmVudFRyYW5zZm9ybSwgZWZmZWN0aXZl
VG9BdEVuZCwgcmVwZWF0Q291bnQpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgYW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LmFwcGVuZChjdXJyZW50VHJhbnNmb3JtKTsKLX0KLQotZmxvYXQgU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKLXsKLSAgICBBU1NFUlQobV9hbmlt
YXRpb25FbGVtZW50KTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IGluIGFs
bCBjYXNlcy4gVGhlIHNwZWMgZGVtYW5kcyB0aGF0IGVhY2ggY29tcG9uZW50ICh0cmFuc2xhdGUg
eCBhbmQgeSBmb3IgZXhhbXBsZSkKLSAgICAvLyBpcyBwYWNlZCBzZXBhcmF0ZWx5LiBUbyBpbXBs
ZW1lbnQgdGhpcyB3ZSBuZWVkIHRvIHRyZWF0IGVhY2ggY29tcG9uZW50IGFzIGluZGl2aWR1YWwg
YW5pbWF0aW9uIGV2ZXJ5d2hlcmUuCi0gICAgYXV0byBmcm9tID0gY29uc3RydWN0RnJvbVN0cmlu
Zyhmcm9tU3RyaW5nKTsKLSAgICBhdXRvIHRvID0gY29uc3RydWN0RnJvbVN0cmluZyh0b1N0cmlu
Zyk7Ci0KLSAgICBjb25zdCBhdXRvJiBmcm9tVHJhbnNmb3JtTGlzdCA9IGZyb20tPmFzPFNWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXM+KCk7Ci0gICAgY29uc3QgYXV0byYgdG9UcmFuc2Zvcm1MaXN0ID0g
dG8tPmFzPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+KCk7Ci0gICAgdW5zaWduZWQgaXRlbXNDb3Vu
dCA9IGZyb21UcmFuc2Zvcm1MaXN0LnNpemUoKTsKLSAgICBpZiAoIWl0ZW1zQ291bnQgfHwgaXRl
bXNDb3VudCAhPSB0b1RyYW5zZm9ybUxpc3Quc2l6ZSgpKQotICAgICAgICByZXR1cm4gLTE7Ci0K
LSAgICBBU1NFUlQoaXRlbXNDb3VudCA9PSAxKTsKLSAgICBpZiAoZnJvbVRyYW5zZm9ybUxpc3Rb
MF0udHlwZSgpICE9IHRvVHJhbnNmb3JtTGlzdFswXS50eXBlKCkpCi0gICAgICAgIHJldHVybiAt
MTsKLQotICAgIC8vIFNwZWM6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9hbmltYXRlLmh0bWwj
Y29tcGxleERpc3RhbmNlcwotICAgIC8vIFBhY2VkIGFuaW1hdGlvbnMgYXNzdW1lIGEgbm90aW9u
IG9mIGRpc3RhbmNlIGJldHdlZW4gdGhlIHZhcmlvdXMgYW5pbWF0aW9uIHZhbHVlcyBkZWZpbmVk
IGJ5IHRoZSDigJh0b+KAmSwg4oCYZnJvbeKAmSwg4oCYYnnigJkgYW5kIOKAmHZhbHVlc+KAmSBh
dHRyaWJ1dGVzLgotICAgIC8vIERpc3RhbmNlIGlzIGRlZmluZWQgb25seSBmb3Igc2NhbGFyIHR5
cGVzIChzdWNoIGFzIDxsZW5ndGg+KSwgY29sb3JzIGFuZCB0aGUgc3Vic2V0IG9mIHRyYW5zZm9y
bWF0aW9uIHR5cGVzIHRoYXQgYXJlIHN1cHBvcnRlZCBieSDigJhhbmltYXRlVHJhbnNmb3Jt4oCZ
LgotICAgIHJldHVybiBTVkdUcmFuc2Zvcm1EaXN0YW5jZShmcm9tVHJhbnNmb3JtTGlzdFswXSwg
dG9UcmFuc2Zvcm1MaXN0WzBdKS5kaXN0YW5jZSgpOwotfQotCi19CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCShyZXZpc2lvbiAyNDMzODMp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNp
bmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNWR0F0dHJpYnV0
ZUFjY2Vzc29yLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7Ci0KLXVzaW5nIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdCA9IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9m
ZjsKLXVzaW5nIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEF0dHJpYnV0ZSA9IFNWR0FuaW1hdGVk
QXR0cmlidXRlTGlzdDxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBPd25lclR5cGU+Ci11c2luZyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGVB
Y2Nlc3NvciA9IFNWR0FuaW1hdGVkQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdD47Ci0KLWNs
YXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yIHsKLXB1YmxpYzoKLSAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3RBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBz
dGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc2V0QW5pbVZh
bFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmlt
YXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgYW5pbVZh
bERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlk
ZTsKLQotICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmlt
YXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJy
aWRlOwotICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgY29u
c3QgU3RyaW5nJiBtX3RyYW5zZm9ybVR5cGVTdHJpbmc7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0x
ICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3
ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBbmltYXRlZExlbmd0aCwKICAgICAgICAg
ICAgIEFuaW1hdGVkTGVuZ3RoTGlzdCwKICAgICAgICAgICAgIEFuaW1hdGVkUGF0aCwKLSAgICAg
ICAgICAgIEFuaW1hdGVkVHJhbnNmb3JtTGlzdAogICAgICAgICB9OwogCiAgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxzaXplX3Q+KG1fdmFsdWUuaW5kZXgoKSkgPCBzaXplb2YoYW5pbWF0ZWRU
eXBlcykgLyBzaXplb2YoYW5pbWF0ZWRUeXBlc1swXSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2
IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGguaCIKLSNpbmNsdWRlICJT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
OSw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW86CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgICAgICBjYXNlIEFuaW1hdGVk
U3RyaW5nOgorICAgICAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDoKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKQEAgLTYxLDgg
KzYxLDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZH
QW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I+KGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVt
ZW50KTsKICAgICAgICAgY2FzZSBBbmltYXRlZFBhdGg6CiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFBhdGhBbmltYXRvcj4oYW5pbWF0aW9uRWxlbWVudCwg
Y29udGV4dEVsZW1lbnQpOwotICAgICAgICBjYXNlIEFuaW1hdGVkVHJhbnNmb3JtTGlzdDoKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIGNh
c2UgQW5pbWF0ZWRVbmtub3duOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDMz
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
ICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaCIKICNpbmNsdWRlICJTVkdO
YW1lcy5oIgogI2luY2x1ZGUgIlNWR1N0b3BFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNm
b3JtTGlzdFZhbHVlcy5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGUuaCIKICNpbmNsdWRl
ICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAg
LTQ1LDYgKzQ0LDExIEBAIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHR3JhZGllbnRFbGVtZW50KGMK
ICAgICAsIFNWR1VSSVJlZmVyZW5jZSh0aGlzKQogewogICAgIHJlZ2lzdGVyQXR0cmlidXRlcygp
OworCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9v
bmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJv
cGVydHk8U1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ciwgJlNWR0dyYWRpZW50RWxlbWVu
dDo6bV9ncmFkaWVudFRyYW5zZm9ybT4oKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTVkdHcmFkaWVu
dEVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCkBAIC01NCw3ICs1OCw2IEBAIHZvaWQgU1ZH
R3JhZGllbnRFbGVtZW50OjpyZWdpc3RlckF0dHJpYnUKICAgICAgICAgcmV0dXJuOwogICAgIHJl
Z2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLCBTVkdT
cHJlYWRNZXRob2RUeXBlLCAmU1ZHR3JhZGllbnRFbGVtZW50OjptX3NwcmVhZE1ldGhvZD4oKTsK
ICAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0
dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdHcmFkaWVudEVsZW1lbnQ6Om1fZ3Jh
ZGllbnRVbml0cz4oKTsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6
Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLCAmU1ZHR3JhZGllbnRFbGVtZW50OjptX2dyYWRpZW50VHJh
bnNmb3JtPigpOwogfQogCiB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAg
LTY3LDEwICs3MCw3IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSgK
ICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRy
KSB7Ci0gICAgICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgbmV3TGlzdDsKLSAgICAgICAgbmV3
TGlzdC5wYXJzZSh2YWx1ZSk7Ci0gICAgICAgIG1fZ3JhZGllbnRUcmFuc2Zvcm0uZGV0YWNoQW5p
bWF0ZWRMaXN0V3JhcHBlcnMoYXR0cmlidXRlT3duZXJQcm94eSgpLCBuZXdMaXN0LnNpemUoKSk7
Ci0gICAgICAgIG1fZ3JhZGllbnRUcmFuc2Zvcm0uc2V0VmFsdWUoV1RGTW92ZShuZXdMaXN0KSk7
CisgICAgICAgIG1fZ3JhZGllbnRUcmFuc2Zvcm0tPmJhc2VWYWwoKS0+cGFyc2UodmFsdWUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
ZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2lu
Y2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIgot
I2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVk
ZSAiU1ZHTmFtZXMuaCIKQEAgLTkxLDExICs5MCwxMSBAQCBwdWJsaWM6CiAKICAgICBTVkdTcHJl
YWRNZXRob2RUeXBlIHNwcmVhZE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9k
LmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CiAgICAgU1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZSBncmFkaWVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFVu
aXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZH
VHJhbnNmb3JtTGlzdFZhbHVlcyYgZ3JhZGllbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBt
X2dyYWRpZW50VHJhbnNmb3JtLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9
CisgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYgZ3JhZGllbnRUcmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiBtX2dyYWRpZW50VHJhbnNmb3JtLT5jdXJyZW50VmFsdWUoKTsgfQogCiAgICAgUmVm
UHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IHNwcmVhZE1ldGhvZEFuaW1hdGVkKCkgeyByZXR1
cm4gbV9zcHJlYWRNZXRob2QuYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9CiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IGdyYWRpZW50VW5pdHNBbmlt
YXRlZCgpIHsgcmV0dXJuIG1fZ3JhZGllbnRVbml0cy5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KLSAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBn
cmFkaWVudFRyYW5zZm9ybUFuaW1hdGVkKCkgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybS5h
bmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3QmIGdyYWRpZW50VHJhbnNmb3JtQW5pbWF0ZWQoKSB7IHJldHVybiBtX2dy
YWRpZW50VHJhbnNmb3JtOyB9CiAKIHByb3RlY3RlZDoKICAgICBTVkdHcmFkaWVudEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC0xMjEsNyArMTIwLDcgQEAgcHJp
dmF0ZToKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkF0dHJpYnV0ZTxTVkdTcHJlYWRNZXRob2RUeXBl
PiBtX3NwcmVhZE1ldGhvZCB7IFNWR1NwcmVhZE1ldGhvZFBhZCB9OwogICAgIFNWR0FuaW1hdGVk
RW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4gbV9ncmFkaWVu
dFVuaXRzIHsgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YIH07
Ci0gICAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QXR0cmlidXRlIG1fZ3JhZGllbnRUcmFuc2Zv
cm07CisgICAgUmVmPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4gbV9ncmFkaWVudFRyYW5zZm9y
bSB7IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NF
bGVtZW50LmNwcAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dy
YXBoaWNzRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDEwIEBAIFNWR0dy
YXBoaWNzRWxlbWVudDo6U1ZHR3JhcGhpY3NFbGVtZW50KGMKICAgICAsIFNWR1Rlc3RzKHRoaXMp
CiAgICAgLCBtX3Nob3VsZElzb2xhdGVCbGVuZGluZyhmYWxzZSkKIHsKLSAgICByZWdpc3RlckF0
dHJpYnV0ZXMoKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVn
aXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgJlNWR0dyYXBoaWNzRWxlbWVu
dDo6bV90cmFuc2Zvcm0+KCk7CisgICAgfSk7CiB9CiAKIFNWR0dyYXBoaWNzRWxlbWVudDo6flNW
R0dyYXBoaWNzRWxlbWVudCgpID0gZGVmYXVsdDsKQEAgLTEwNiw3ICsxMDksNyBAQCBBZmZpbmVU
cmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltCiAgICAgICAgIH0KIAogICAgIH0gZWxz
ZQotICAgICAgICB0cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZShtYXRyaXgpOworICAgICAgICBtYXRy
aXggPSB0cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOwogCiAgICAgaWYgKG1fc3VwcGxlbWVudGFs
VHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gKm1fc3VwcGxlbWVudGFsVHJhbnNmb3JtICogbWF0
cml4OwpAQCAtMTIwLDIxICsxMjMsMTAgQEAgQWZmaW5lVHJhbnNmb3JtKiBTVkdHcmFwaGljc0Vs
ZW1lbnQ6OnN1cAogICAgIHJldHVybiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5nZXQoKTsKIH0K
IAotdm9pZCBTVkdHcmFwaGljc0VsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAg
YXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVnaXN0cnku
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsICZTVkdHcmFwaGljc0VsZW1lbnQ6Om1fdHJhbnNm
b3JtPigpOwotfQotCiB2b2lkIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikgewotICAgICAgICBTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzIG5ld0xpc3Q7Ci0gICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUpOwot
ICAgICAgICBtX3RyYW5zZm9ybS5kZXRhY2hBbmltYXRlZExpc3RXcmFwcGVycyhhdHRyaWJ1dGVP
d25lclByb3h5KCksIG5ld0xpc3Quc2l6ZSgpKTsKLSAgICAgICAgbV90cmFuc2Zvcm0uc2V0VmFs
dWUobmV3TGlzdCk7CisgICAgICAgIG1fdHJhbnNmb3JtLT5iYXNlVmFsKCktPnBhcnNlKHZhbHVl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ0LDE4ICsxMzYsMTUgQEAgdm9pZCBT
VkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKAogCiB2b2lkIFNWR0dyYXBoaWNzRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
IHsKLSAgICBpZiAoaXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKLSAgICAgICAgYXV0byByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7Cisg
ICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICAg
ICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CiAgICAgICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpyZW5kZXJlcik7Ci0gICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCShyZXZp
c2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCkBA
IC02OCw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICAKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5
ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0dyYXBoaWNzRWxlbWVudCwgU1ZHRWxlbWVu
dCwgU1ZHVGVzdHM+OwogCi0gICAgY29uc3QgYXV0byYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV90cmFuc2Zvcm0uY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KLSAg
ICBhdXRvIHRyYW5zZm9ybUFuaW1hdGVkKCkgeyByZXR1cm4gbV90cmFuc2Zvcm0uYW5pbWF0ZWRQ
cm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHVHJhbnNmb3Jt
TGlzdCYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0tPmN1cnJlbnRWYWx1
ZSgpOyB9CisgICAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0JiB0cmFuc2Zvcm1BbmltYXRlZCgp
IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKIHByb3RlY3RlZDoKICAgICBTVkdHcmFwaGljc0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC04MywxNSArODIsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBh
dHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVP
d25lclByb3h5OyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7Ci0KICAg
ICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBp
c0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAg
ewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpOwotICAgIH0KLQogICAgIC8vIFVzZWQgYnkgPGFuaW1hdGVNb3Rpb24+CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFmZmluZVRyYW5zZm9ybT4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm07
CiAKQEAgLTEwMCw3ICs5Miw3IEBAIHByaXZhdGU6CiAKICAgICBBdHRyaWJ1dGVPd25lclByb3h5
IG1fYXR0cmlidXRlT3duZXJQcm94eSB7ICp0aGlzIH07CiAgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEF0dHJpYnV0ZSBtX3RyYW5zZm9ybTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
PiBtX3RyYW5zZm9ybSB7IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKHRoaXMpIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjQzMzgzKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNywxMSArMTA3LDggQEAgc3RhdGljIHZvaWQgc2V0R3JhZGllbnRBdHRyaWJ1
dGVzKFNWR0dyYQogICAgIGlmICghYXR0cmlidXRlcy5oYXNHcmFkaWVudFVuaXRzKCkgJiYgZWxl
bWVudC5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyKSkKICAgICAgICAg
YXR0cmlidXRlcy5zZXRHcmFkaWVudFVuaXRzKGVsZW1lbnQuZ3JhZGllbnRVbml0cygpKTsKIAot
ICAgIGlmICghYXR0cmlidXRlcy5oYXNHcmFkaWVudFRyYW5zZm9ybSgpICYmIGVsZW1lbnQuaGFz
QXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKSB7Ci0gICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIGVsZW1lbnQuZ3JhZGllbnRUcmFuc2Zv
cm0oKS5jb25jYXRlbmF0ZSh0cmFuc2Zvcm0pOwotICAgICAgICBhdHRyaWJ1dGVzLnNldEdyYWRp
ZW50VHJhbnNmb3JtKHRyYW5zZm9ybSk7Ci0gICAgfQorICAgIGlmICghYXR0cmlidXRlcy5oYXNH
cmFkaWVudFRyYW5zZm9ybSgpICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFk
aWVudFRyYW5zZm9ybUF0dHIpKQorICAgICAgICBhdHRyaWJ1dGVzLnNldEdyYWRpZW50VHJhbnNm
b3JtKGVsZW1lbnQuZ3JhZGllbnRUcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpKTsKIAogICAgIGlm
ICghYXR0cmlidXRlcy5oYXNTdG9wcygpKSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxHcmFkaWVu
dDo6Q29sb3JTdG9wPiYgc3RvcHMoZWxlbWVudC5idWlsZFN0b3BzKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXRyaXguaAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDM0ICsyNSwzOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgIlNWR01hdHJpeFZhbHVlLmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFy
T2ZmLmgiCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiU1ZHVmFsdWVQ
cm9wZXJ0eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBjbGFzcyBvbmNlIFNWR01hdHJpeCBiZWNvbWVzIGFuIGFsaWFzIHRvIERPTU1hdHJpeC4KLWNs
YXNzIFNWR01hdHJpeCA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTWF0cml4VmFsdWU+
IHsKK2NsYXNzIFNWR01hdHJpeCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5PEFmZmluZVRyYW5z
Zm9ybT4geworICAgIHVzaW5nIEJhc2UgPSBTVkdWYWx1ZVByb3BlcnR5PEFmZmluZVRyYW5zZm9y
bT47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZH
TWF0cml4PiBjcmVhdGUoU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0
eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR01hdHJpeFZhbHVlJiB2YWx1ZSkKKyAgICBzdGF0
aWMgUmVmPFNWR01hdHJpeD4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdmFsdWUgPSB7
IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdNYXRyaXgoYW5pbWF0
ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U1ZHTWF0cml4KHZhbHVlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdNYXRyaXg+IGNy
ZWF0ZShjb25zdCBTVkdNYXRyaXhWYWx1ZSYgaW5pdGlhbFZhbHVlID0geyB9KQorICAgIHN0YXRp
YyBSZWY8U1ZHTWF0cml4PiBjcmVhdGUoU1ZHUHJvcGVydHlPd25lciogb3duZXIsIFNWR1Byb3Bl
cnR5QWNjZXNzIGFjY2VzcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB2YWx1ZSA9IHsgfSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR01hdHJpeChpbml0aWFsVmFsdWUp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTWF0cml4KG93bmVyLCBhY2Nlc3Ms
IHZhbHVlKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxTVkdNYXRyaXg+PiBjcmVhdGUoRXhjZXB0aW9uT3I8VD4mJiBpbml0aWFsVmFs
dWUpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PFNWR01hdHJpeD4+IGNyZWF0ZShFeGNlcHRpb25PcjxUPiYmIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgaWYgKGluaXRpYWxWYWx1ZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBp
bml0aWFsVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4gY3JlYXRlKGlu
aXRpYWxWYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAgIGlmICh2YWx1ZS5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCk7
CisgICAgICAgIHJldHVybiBjcmVhdGUodmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwogICAg
IH0KIAotICAgIGRvdWJsZSBhKCkKKyAgICBkb3VibGUgYSgpIGNvbnN0CiAgICAgewotICAgICAg
ICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS5hKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVl
LmEoKTsKICAgICB9CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBKGRvdWJsZSB2YWx1ZSkK
QEAgLTYwLDE1ICs2NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3Ig
fTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldEEodmFsdWUpOworICAgICAgICBt
X3ZhbHVlLnNldEEodmFsdWUpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAotICAgIGRvdWJsZSBiKCkKKyAgICBkb3VibGUgYigpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS5iKCk7CisgICAgICAg
IHJldHVybiBtX3ZhbHVlLmIoKTsKICAgICB9CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRC
KGRvdWJsZSB2YWx1ZSkKQEAgLTc2LDE1ICs3OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChp
c1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRp
b25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldEIodmFs
dWUpOworICAgICAgICBtX3ZhbHVlLnNldEIodmFsdWUpOwogICAgICAgICBjb21taXRDaGFuZ2Uo
KTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGRvdWJsZSBjKCkKKyAgICBk
b3VibGUgYygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2Uo
KS5jKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLmMoKTsKICAgICB9CiAKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRDKGRvdWJsZSB2YWx1ZSkKQEAgLTkyLDE1ICs5NCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVy
ZW5jZSgpLnNldEModmFsdWUpOworICAgICAgICBtX3ZhbHVlLnNldEModmFsdWUpOwogICAgICAg
ICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGRv
dWJsZSBkKCkKKyAgICBkb3VibGUgZCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gcHJv
cGVydHlSZWZlcmVuY2UoKS5kKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLmQoKTsKICAgICB9
CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXREKGRvdWJsZSB2YWx1ZSkKQEAgLTEwOCwxNSAr
MTA5LDE0IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAg
ICAgIHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0RCh2YWx1ZSk7CisgICAgICAgIG1fdmFsdWUuc2V0
RCh2YWx1ZSk7CiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwotCiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCi0gICAgZG91YmxlIGUoKQorICAgIGRvdWJsZSBlKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBwcm9wZXJ0eVJlZmVyZW5jZSgpLmUoKTsKKyAgICAgICAgcmV0dXJuIG1f
dmFsdWUuZSgpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEUoZG91YmxlIHZh
bHVlKQpAQCAtMTI0LDE1ICsxMjQsMTQgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25s
eSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dl
ZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRFKHZhbHVlKTsKKyAg
ICAgICAgbV92YWx1ZS5zZXRFKHZhbHVlKTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBkb3VibGUgZigpCisgICAgZG91YmxlIGYo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkuZigpOwor
ICAgICAgICByZXR1cm4gbV92YWx1ZS5mKCk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0Rihkb3VibGUgdmFsdWUpCkBAIC0xNDAsMTUxICsxMzksODggQEAgcHVibGljOgogICAg
ICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
TW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2Uo
KS5zZXRGKHZhbHVlKTsKKyAgICAgICAgbV92YWx1ZS5zZXRGKHZhbHVlKTsKICAgICAgICAgY29t
bWl0Q2hhbmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBFeGNlcHRp
b25PcjxSZWY8U1ZHTWF0cml4Pj4gbXVsdGlwbHkoU1ZHTWF0cml4JiBzZWNvbmRNYXRyaXgpCi0g
ICAgewotICAgICAgICBpZiAoaXNSZWFkT25seSgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07Ci0KLSAgICAgICAgYXV0byByZXN1
bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpLm11bHRpcGx5KHNlY29uZE1hdHJpeC5wcm9wZXJ0eVJl
ZmVyZW5jZSgpKTsKLSAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KLSAgICAgICAgcmV0dXJuIFNW
R01hdHJpeDo6Y3JlYXRlKHJlc3VsdCk7Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8UmVmPFNW
R01hdHJpeD4+IGludmVyc2UoKQotICAgIHsKLSAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9
OwotCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gcHJvcGVydHlSZWZlcmVuY2UoKS5pbnZlcnNlKCk7
Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICAgICAgCi0gICAgICAgIGNvbW1pdENoYW5n
ZSgpOwotICAgICAgICByZXR1cm4gU1ZHTWF0cml4OjpjcmVhdGUocmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICBFeGNlcHRpb25PcjxSZWY8U1ZHTWF0cml4Pj4gdHJh
bnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCisgICAgUmVmPFNWR01hdHJpeD4gbXVsdGlwbHkoU1ZH
TWF0cml4JiBzZWNvbmRNYXRyaXgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNSZWFkT25s
eSgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dl
ZEVycm9yIH07Ci0KLSAgICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpLnRy
YW5zbGF0ZSh4LCB5KTsgICAgICAgIAotICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQotICAgICAg
ICByZXR1cm4gU1ZHTWF0cml4OjpjcmVhdGUocmVzdWx0KTsKLSAgICB9Ci0KLSAgICBFeGNlcHRp
b25PcjxSZWY8U1ZHTWF0cml4Pj4gc2NhbGUoZmxvYXQgc2NhbGVGYWN0b3IpCi0gICAgewotICAg
ICAgICBpZiAoaXNSZWFkT25seSgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
TW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07Ci0KLSAgICAgICAgYXV0byByZXN1bHQgPSBwcm9w
ZXJ0eVJlZmVyZW5jZSgpLnNjYWxlKHNjYWxlRmFjdG9yKTsgICAgICAgIAotICAgICAgICBjb21t
aXRDaGFuZ2UoKTsKLQotICAgICAgICByZXR1cm4gU1ZHTWF0cml4OjpjcmVhdGUocmVzdWx0KTsK
KyAgICAgICAgYXV0byBjb3B5ID0gbV92YWx1ZTsKKyAgICAgICAgY29weS5tdWx0aXBseShzZWNv
bmRNYXRyaXgudmFsdWUoKSk7CisgICAgICAgIHJldHVybiBTVkdNYXRyaXg6OmNyZWF0ZShjb3B5
KTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8U1ZHTWF0cml4Pj4gc2NhbGVOb25Vbmlm
b3JtKGZsb2F0IHNjYWxlRmFjdG9yWCwgZmxvYXQgc2NhbGVGYWN0b3JZKQorICAgIEV4Y2VwdGlv
bk9yPFJlZjxTVkdNYXRyaXg+PiBpbnZlcnNlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChp
c1JlYWRPbmx5KCkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRp
b25BbGxvd2VkRXJyb3IgfTsKLQotICAgICAgICBhdXRvIHJlc3VsdCA9IHByb3BlcnR5UmVmZXJl
bmNlKCkuc2NhbGVOb25Vbmlmb3JtKHNjYWxlRmFjdG9yWCwgc2NhbGVGYWN0b3JZKTsgICAgICAg
IAotICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQotICAgICAgICByZXR1cm4gU1ZHTWF0cml4Ojpj
cmVhdGUocmVzdWx0KTsKKyAgICAgICAgYXV0byBpbnZlcnNlID0gbV92YWx1ZS5pbnZlcnNlKCk7
CisgICAgICAgIGlmICghaW52ZXJzZSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgIk1hdHJpeCBpcyBub3QgaW52ZXJ0aWJsZSJfcyB9OworICAgICAg
ICByZXR1cm4gU1ZHTWF0cml4OjpjcmVhdGUoKmludmVyc2UpOwogICAgIH0KIAotICAgIEV4Y2Vw
dGlvbk9yPFJlZjxTVkdNYXRyaXg+PiByb3RhdGUoZmxvYXQgYW5nbGUpCisgICAgUmVmPFNWR01h
dHJpeD4gdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0CiAgICAgewotICAgICAgICBp
ZiAoaXNSZWFkT25seSgpKQotICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZp
Y2F0aW9uQWxsb3dlZEVycm9yIH07Ci0KLSAgICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJl
ZmVyZW5jZSgpLnJvdGF0ZShhbmdsZSk7ICAgICAgICAKLSAgICAgICAgY29tbWl0Q2hhbmdlKCk7
Ci0KLSAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKHJlc3VsdCk7CisgICAgICAgIGF1
dG8gY29weSA9IG1fdmFsdWU7CisgICAgICAgIGNvcHkudHJhbnNsYXRlKHgsIHkpOworICAgICAg
ICByZXR1cm4gU1ZHTWF0cml4OjpjcmVhdGUoY29weSk7CiAgICAgfQogCi0gICAgRXhjZXB0aW9u
T3I8UmVmPFNWR01hdHJpeD4+IHJvdGF0ZUZyb21WZWN0b3IoZmxvYXQgeCwgZmxvYXQgeSkKKyAg
ICBSZWY8U1ZHTWF0cml4PiBzY2FsZShmbG9hdCBzY2FsZUZhY3RvcikgY29uc3QKICAgICB7Ci0g
ICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCi0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKLQotICAgICAgICBhdXRvIHJlc3VsdCA9IHBy
b3BlcnR5UmVmZXJlbmNlKCkucm90YXRlRnJvbVZlY3Rvcih4LCB5KTsgICAgICAgIAotICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgICAgIAotICAgICAgICBjb21taXRDaGFuZ2UoKTsKLSAg
ICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KSk7CisgICAgICAgIHJldHVybiBzY2FsZU5vblVuaWZvcm0oc2NhbGVGYWN0b3IsIHNjYWxlRmFj
dG9yKTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8U1ZHTWF0cml4Pj4gZmxpcFgoKQor
ICAgIFJlZjxTVkdNYXRyaXg+IHNjYWxlTm9uVW5pZm9ybShmbG9hdCBzY2FsZUZhY3RvclgsIGZs
b2F0IHNjYWxlRmFjdG9yWSkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc1JlYWRPbmx5KCkp
Ci0gICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJy
b3IgfTsKLQotICAgICAgICBhdXRvIHJlc3VsdCA9IHByb3BlcnR5UmVmZXJlbmNlKCkuZmxpcFgo
KTsgICAgICAgIAotICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQotICAgICAgICByZXR1cm4gU1ZH
TWF0cml4OjpjcmVhdGUocmVzdWx0KTsKKyAgICAgICAgYXV0byBjb3B5ID0gbV92YWx1ZTsKKyAg
ICAgICAgY29weS5zY2FsZShzY2FsZUZhY3RvclgsIHNjYWxlRmFjdG9yWSk7CisgICAgICAgIHJl
dHVybiBTVkdNYXRyaXg6OmNyZWF0ZShjb3B5KTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25PcjxS
ZWY8U1ZHTWF0cml4Pj4gZmxpcFkoKQorICAgIFJlZjxTVkdNYXRyaXg+IHJvdGF0ZShmbG9hdCBh
bmdsZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCi0gICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKLQotICAg
ICAgICBhdXRvIHJlc3VsdCA9IHByb3BlcnR5UmVmZXJlbmNlKCkuZmxpcFkoKTsgICAgICAgIAot
ICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQotICAgICAgICByZXR1cm4gU1ZHTWF0cml4OjpjcmVh
dGUocmVzdWx0KTsKKyAgICAgICAgYXV0byBjb3B5ID0gbV92YWx1ZTsKKyAgICAgICAgY29weS5y
b3RhdGUoYW5nbGUpOworICAgICAgICByZXR1cm4gU1ZHTWF0cml4OjpjcmVhdGUoY29weSk7CiAg
ICAgfQogCi0gICAgRXhjZXB0aW9uT3I8UmVmPFNWR01hdHJpeD4+IHNrZXdYKGZsb2F0IGFuZ2xl
KQorICAgIEV4Y2VwdGlvbk9yPFJlZjxTVkdNYXRyaXg+PiByb3RhdGVGcm9tVmVjdG9yKGZsb2F0
IHgsIGZsb2F0IHkpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaXNSZWFkT25seSgpKQotICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07
Ci0KLSAgICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNrZXdYKGFuZ2xl
KTsgICAgICAgIAotICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgaWYgKCF4IHx8ICF5
KQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogCi0gICAgICAg
IHJldHVybiBTVkdNYXRyaXg6OmNyZWF0ZShyZXN1bHQpOworICAgICAgICBhdXRvIGNvcHkgPSBt
X3ZhbHVlOworICAgICAgICBjb3B5LnJvdGF0ZUZyb21WZWN0b3IoeCwgeSk7CisgICAgICAgIHJl
dHVybiBTVkdNYXRyaXg6OmNyZWF0ZShjb3B5KTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25PcjxS
ZWY8U1ZHTWF0cml4Pj4gc2tld1koZmxvYXQgYW5nbGUpCisgICAgUmVmPFNWR01hdHJpeD4gZmxp
cFgoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKLSAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OwotCi0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gcHJvcGVydHlSZWZlcmVuY2UoKS5za2V3WShhbmdsZSk7ICAgICAg
ICAKLSAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KLSAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6
Y3JlYXRlKHJlc3VsdCk7CisgICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7CisgICAgICAgIGNv
cHkuZmxpcFgoKTsKKyAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAg
IH0KIAotcHJvdGVjdGVkOgotICAgIFNWR01hdHJpeChTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5
JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHTWF0cml4VmFsdWUm
IHZhbHVlKQotICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdNYXRyaXhWYWx1ZT4oJmFu
aW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIFJlZjxTVkdNYXRyaXg+IGZsaXBZKCkg
Y29uc3QKICAgICB7CisgICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7CisgICAgICAgIGNvcHku
ZmxpcFkoKTsKKyAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAgIH0K
IAotICAgIGV4cGxpY2l0IFNWR01hdHJpeChjb25zdCBTVkdNYXRyaXhWYWx1ZSYgaW5pdGlhbFZh
bHVlKQotICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdNYXRyaXhWYWx1ZT4oaW5pdGlh
bFZhbHVlKQorICAgIFJlZjxTVkdNYXRyaXg+IHNrZXdYKGZsb2F0IGFuZ2xlKSBjb25zdAogICAg
IHsKKyAgICAgICAgYXV0byBjb3B5ID0gbV92YWx1ZTsKKyAgICAgICAgY29weS5za2V3WChhbmds
ZSk7CisgICAgICAgIHJldHVybiBTVkdNYXRyaXg6OmNyZWF0ZShjb3B5KTsKICAgICB9CiAKLSAg
ICBleHBsaWNpdCBTVkdNYXRyaXgoY29uc3QgU1ZHTWF0cml4VmFsdWUqIGluaXRpYWxWYWx1ZSkK
LSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTWF0cml4VmFsdWU+KGluaXRpYWxWYWx1
ZSkKKyAgICBSZWY8U1ZHTWF0cml4PiBza2V3WShmbG9hdCBhbmdsZSkgY29uc3QKICAgICB7Cisg
ICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7CisgICAgICAgIGNvcHkuc2tld1koYW5nbGUpOwor
ICAgICAgICByZXR1cm4gU1ZHTWF0cml4OjpjcmVhdGUoY29weSk7CiAgICAgfQogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMTUg
QEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBlOwogICAgIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZG91YmxlIGY7CiAKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01hdHJp
eCBtdWx0aXBseShTVkdNYXRyaXggc2Vjb25kTWF0cml4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIFNWR01hdHJpeCBpbnZlcnNlKCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRy
aXggdHJhbnNsYXRlKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSk7
Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggc2NhbGUodW5yZXN0cmljdGVkIGZs
b2F0IHNjYWxlRmFjdG9yKTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR01hdHJpeCBzY2Fs
ZU5vblVuaWZvcm0odW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yWCwgdW5yZXN0cmljdGVk
IGZsb2F0IHNjYWxlRmFjdG9yWSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXgg
cm90YXRlKHVucmVzdHJpY3RlZCBmbG9hdCBhbmdsZSk7Ci0gICAgW01heVRocm93RXhjZXB0aW9u
XSBTVkdNYXRyaXggcm90YXRlRnJvbVZlY3Rvcih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0
cmljdGVkIGZsb2F0IHkpOwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IGZsaXBY
KCk7Ci0gICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdNYXRyaXggZmxpcFkoKTsKLSAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFNWR01hdHJpeCBza2V3WCh1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGUp
OwotICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU1ZHTWF0cml4IHNrZXdZKHVucmVzdHJpY3RlZCBm
bG9hdCBhbmdsZSk7CisgICAgW05ld09iamVjdF0gU1ZHTWF0cml4IG11bHRpcGx5KFNWR01hdHJp
eCBzZWNvbmRNYXRyaXgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdN
YXRyaXggaW52ZXJzZSgpOworICAgIFtOZXdPYmplY3RdIFNWR01hdHJpeCB0cmFuc2xhdGUodW5y
ZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKKyAgICBbTmV3T2JqZWN0
XSBTVkdNYXRyaXggc2NhbGUodW5yZXN0cmljdGVkIGZsb2F0IHNjYWxlRmFjdG9yKTsKKyAgICBb
TmV3T2JqZWN0XSBTVkdNYXRyaXggc2NhbGVOb25Vbmlmb3JtKHVucmVzdHJpY3RlZCBmbG9hdCBz
Y2FsZUZhY3RvclgsIHVucmVzdHJpY3RlZCBmbG9hdCBzY2FsZUZhY3RvclkpOworICAgIFtOZXdP
YmplY3RdIFNWR01hdHJpeCByb3RhdGUodW5yZXN0cmljdGVkIGZsb2F0IGFuZ2xlKTsKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHTWF0cml4IHJvdGF0ZUZyb21WZWN0b3Io
dW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5KTsKKyAgICBbTmV3T2Jq
ZWN0XSBTVkdNYXRyaXggZmxpcFgoKTsKKyAgICBbTmV3T2JqZWN0XSBTVkdNYXRyaXggZmxpcFko
KTsKKyAgICBbTmV3T2JqZWN0XSBTVkdNYXRyaXggc2tld1godW5yZXN0cmljdGVkIGZsb2F0IGFu
Z2xlKTsKKyAgICBbTmV3T2JqZWN0XSBTVkdNYXRyaXggc2tld1kodW5yZXN0cmljdGVkIGZsb2F0
IGFuZ2xlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4VmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4VmFsdWUuaAkocmV2aXNp
b24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeFZhbHVlLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxMjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR01hdHJpeFZhbHVlIGZpbmFsIDog
cHVibGljIEFmZmluZVRyYW5zZm9ybSB7Ci1wdWJsaWM6Ci0gICAgU1ZHTWF0cml4VmFsdWUoKSA9
IGRlZmF1bHQ7Ci0KLSAgICBTVkdNYXRyaXhWYWx1ZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG90
aGVyKQotICAgICAgICA6IEFmZmluZVRyYW5zZm9ybShvdGhlcikKLSAgICB7Ci0gICAgfQotCi0g
ICAgU1ZHTWF0cml4VmFsdWUoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQs
IGRvdWJsZSBlLCBkb3VibGUgZikKLSAgICAgICAgOiBBZmZpbmVUcmFuc2Zvcm0oYSwgYiwgYywg
ZCwgZSwgZikKLSAgICB7Ci0gICAgfQotCi0gICAgU1ZHTWF0cml4VmFsdWUgdHJhbnNsYXRlKGRv
dWJsZSB0eCwgZG91YmxlIHR5KQotICAgIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGNvcHkg
eyAqdGhpcyB9OwotICAgICAgICBjb3B5LnRyYW5zbGF0ZSh0eCwgdHkpOwotICAgICAgICByZXR1
cm4gU1ZHTWF0cml4VmFsdWUgeyBjb3B5IH07Ci0gICAgfQotCi0gICAgU1ZHTWF0cml4VmFsdWUg
c2NhbGUoZG91YmxlIHMpCi0gICAgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY29weSB7ICp0
aGlzIH07Ci0gICAgICAgIGNvcHkuc2NhbGUocywgcyk7Ci0gICAgICAgIHJldHVybiBTVkdNYXRy
aXhWYWx1ZSB7IGNvcHkgfTsKLSAgICB9Ci0KLSAgICBTVkdNYXRyaXhWYWx1ZSBzY2FsZU5vblVu
aWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpCi0gICAgewotICAgICAgICBBZmZpbmVUcmFuc2Zv
cm0gY29weSB7ICp0aGlzIH07Ci0gICAgICAgIGNvcHkuc2NhbGUoc3gsIHN5KTsKLSAgICAgICAg
cmV0dXJuIFNWR01hdHJpeFZhbHVlIHsgY29weSB9OwotICAgIH0KLQotICAgIFNWR01hdHJpeFZh
bHVlIHJvdGF0ZShkb3VibGUgZCkKLSAgICB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBjb3B5
IHsgKnRoaXMgfTsKLSAgICAgICAgY29weS5yb3RhdGUoZCk7Ci0gICAgICAgIHJldHVybiBTVkdN
YXRyaXhWYWx1ZSB7IGNvcHkgfTsKLSAgICB9Ci0KLSAgICBTVkdNYXRyaXhWYWx1ZSBmbGlwWCgp
Ci0gICAgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY29weSB7ICp0aGlzIH07Ci0gICAgICAg
IGNvcHkuZmxpcFgoKTsKLSAgICAgICAgcmV0dXJuIFNWR01hdHJpeFZhbHVlIHsgY29weSB9Owot
ICAgIH0KLQotICAgIFNWR01hdHJpeFZhbHVlIGZsaXBZKCkKLSAgICB7Ci0gICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSBjb3B5IHsgKnRoaXMgfTsKLSAgICAgICAgY29weS5mbGlwWSgpOwotICAgICAg
ICByZXR1cm4gU1ZHTWF0cml4VmFsdWUgeyBjb3B5IH07Ci0gICAgfQotCi0gICAgU1ZHTWF0cml4
VmFsdWUgc2tld1goZG91YmxlIGFuZ2xlKQotICAgIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IGNvcHkgeyAqdGhpcyB9OwotICAgICAgICBjb3B5LnNrZXdYKGFuZ2xlKTsKLSAgICAgICAgcmV0
dXJuIFNWR01hdHJpeFZhbHVlIHsgY29weSB9OwotICAgIH0KLQotICAgIFNWR01hdHJpeFZhbHVl
IHNrZXdZKGRvdWJsZSBhbmdsZSkKLSAgICB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBjb3B5
IHsgKnRoaXMgfTsKLSAgICAgICAgY29weS5za2V3WShhbmdsZSk7Ci0gICAgICAgIHJldHVybiBT
VkdNYXRyaXhWYWx1ZSB7IGNvcHkgfTsKLSAgICB9Ci0KLSAgICBTVkdNYXRyaXhWYWx1ZSBtdWx0
aXBseShjb25zdCBTVkdNYXRyaXhWYWx1ZSYgb3RoZXIpCi0gICAgewotICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gY29weSB7ICp0aGlzIH07Ci0gICAgICAgIGNvcHkgKj0gc3RhdGljX2Nhc3Q8Y29u
c3QgQWZmaW5lVHJhbnNmb3JtJj4ob3RoZXIpOwotICAgICAgICByZXR1cm4gU1ZHTWF0cml4VmFs
dWUgeyBjb3B5IH07Ci0gICAgfQotCi0gICAgRXhjZXB0aW9uT3I8U1ZHTWF0cml4VmFsdWU+IGlu
dmVyc2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGF1dG8gaW52ZXJzZSA9IEFmZmluZVRy
YW5zZm9ybTo6aW52ZXJzZSgpKQotICAgICAgICAgICAgcmV0dXJuIFNWR01hdHJpeFZhbHVlIHsg
aW52ZXJzZS52YWx1ZSgpIH07Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJNYXRyaXggaXMgbm90IGludmVydGlibGUiX3MgfTsKLSAgICB9
Ci0KLSAgICBFeGNlcHRpb25PcjxTVkdNYXRyaXhWYWx1ZT4gcm90YXRlRnJvbVZlY3Rvcihkb3Vi
bGUgeCwgZG91YmxlIHkpCi0gICAgewotICAgICAgICBpZiAoIXggfHwgIXkpCi0gICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Ci0KLSAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGNvcHkgeyAqdGhpcyB9OwotICAgICAgICBjb3B5LnJvdGF0ZUZyb21WZWN0b3IoeCwgeSk7
Ci0gICAgICAgIHJldHVybiBTVkdNYXRyaXhWYWx1ZSB7IGNvcHkgfTsKLSAgICB9Ci0KLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2JlIFN5c3RlbXMgSW5j
b3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NTQsNiArNTQsMTEgQEAgaW5saW5lIFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxlbQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpwYXR0ZXJuVGFnKSk7CiAgICAgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7CisKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdp
c3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsICZT
VkdQYXR0ZXJuRWxlbWVudDo6bV9wYXR0ZXJuVHJhbnNmb3JtPigpOworICAgIH0pOwogfQogCiBS
ZWY8U1ZHUGF0dGVybkVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNzIsNyArNzcsNiBA
QCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0CiAgICAgcmVnaXN0cnku
cmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdQYXR0ZXJuRWxlbWVu
dDo6bV9oZWlnaHQ+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6
OnBhdHRlcm5Vbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdQYXR0ZXJu
RWxlbWVudDo6bV9wYXR0ZXJuVW5pdHM+KCk7CiAgICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1
dGU8U1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVybkNvbnRlbnRVbml0cz4oKTsKLSAg
ICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0
dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9wYXR0ZXJuVHJhbnNmb3JtPigpOwogfQogCiB2b2lk
IFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtOTAsMTAgKzk0LDcgQEAgdm9pZCBT
VkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0cikgewotICAg
ICAgICBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIG5ld0xpc3Q7Ci0gICAgICAgIG5ld0xpc3QucGFy
c2UodmFsdWUpOwotICAgICAgICBtX3BhdHRlcm5UcmFuc2Zvcm0uZGV0YWNoQW5pbWF0ZWRMaXN0
V3JhcHBlcnMoYXR0cmlidXRlT3duZXJQcm94eSgpLCBuZXdMaXN0LnNpemUoKSk7Ci0gICAgICAg
IG1fcGF0dGVyblRyYW5zZm9ybS5zZXRWYWx1ZShXVEZNb3ZlKG5ld0xpc3QpKTsKKyAgICAgICAg
bV9wYXR0ZXJuVHJhbnNmb3JtLT5iYXNlVmFsKCktPnBhcnNlKHZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTc3LDExICsxNzgsOCBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50
Ojpjb2xsZWN0UGF0dGVybkF0CiAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc1BhdHRlcm5Db250ZW50
VW5pdHMoKSAmJiBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRy
KSkKICAgICAgICAgYXR0cmlidXRlcy5zZXRQYXR0ZXJuQ29udGVudFVuaXRzKHBhdHRlcm5Db250
ZW50VW5pdHMoKSk7CiAKLSAgICBpZiAoIWF0dHJpYnV0ZXMuaGFzUGF0dGVyblRyYW5zZm9ybSgp
ICYmIGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIpKSB7Ci0gICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0o
KS5jb25jYXRlbmF0ZSh0cmFuc2Zvcm0pOwotICAgICAgICBhdHRyaWJ1dGVzLnNldFBhdHRlcm5U
cmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAgICB9CisgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc1BhdHRl
cm5UcmFuc2Zvcm0oKSAmJiBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1B
dHRyKSkKKyAgICAgICAgYXR0cmlidXRlcy5zZXRQYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFu
c2Zvcm0oKS5jb25jYXRlbmF0ZSgpKTsKIAogICAgIGlmICghYXR0cmlidXRlcy5oYXNQYXR0ZXJu
Q29udGVudEVsZW1lbnQoKSAmJiBjaGlsZEVsZW1lbnRDb3VudCgpKQogICAgICAgICBhdHRyaWJ1
dGVzLnNldFBhdHRlcm5Db250ZW50RWxlbWVudCh0aGlzKTsKQEAgLTE4OSw5ICsxODcsNyBAQCB2
b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpjb2xsZWN0UGF0dGVybkF0CiAKIEFmZmluZVRyYW5zZm9y
bSBTVkdQYXR0ZXJuRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9j
YXRhYmxlOjpDVE1TY29wZSkgY29uc3QKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4Owot
ICAgIHBhdHRlcm5UcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZShtYXRyaXgpOwotICAgIHJldHVybiBt
YXRyaXg7CisgICAgcmV0dXJuIHBhdHRlcm5UcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOwogfQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24g
MjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVy
YXRpb24uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5oIgotI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3
Qm94LmgiCkBAIC01MSw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTVkdMZW5ndGhWYWx1
ZSYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQuY3VycmVudFZhbHVlKGF0dHJpYnV0
ZU93bmVyUHJveHkoKSk7IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHBhdHRlcm5V
bml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblVuaXRzLmN1cnJlbnRWYWx1ZShhdHRyaWJ1
dGVPd25lclByb3h5KCkpOyB9CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwYXR0ZXJu
Q29udGVudFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuQ29udGVudFVuaXRzLmN1cnJl
bnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgY29uc3QgU1ZHVHJhbnNmb3Jt
TGlzdFZhbHVlcyYgcGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblRy
YW5zZm9ybS5jdXJyZW50VmFsdWUoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGNvbnN0
IFNWR1RyYW5zZm9ybUxpc3QmIHBhdHRlcm5UcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3Bh
dHRlcm5UcmFuc2Zvcm0tPmN1cnJlbnRWYWx1ZSgpOyB9CiAKICAgICBSZWZQdHI8U1ZHQW5pbWF0
ZWRMZW5ndGg+IHhBbmltYXRlZCgpIHsgcmV0dXJuIG1feC5hbmltYXRlZFByb3BlcnR5KGF0dHJp
YnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRMZW5ndGg+IHlBbmlt
YXRlZCgpIHsgcmV0dXJuIG1feS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KQEAgLTU5LDcgKzU4LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxTVkdBbmltYXRlZExl
bmd0aD4gaGVpZ2h0QW5pbWF0ZWQoKSB7IHJldHVybiBtX2hlaWdodC5hbmltYXRlZFByb3BlcnR5
KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbj4gcGF0dGVyblVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BhdHRlcm5Vbml0cy5hbmlt
YXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KICAgICBSZWZQdHI8U1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbj4gcGF0dGVybkNvbnRlbnRVbml0c0FuaW1hdGVkKCkgeyByZXR1cm4g
bV9wYXR0ZXJuQ29udGVudFVuaXRzLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94
eSgpKTsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+IHBhdHRlcm5UcmFu
c2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9ybS5hbmltYXRlZFByb3Bl
cnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3QmIHBhdHRlcm5UcmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9y
bTsgfQogCiBwcml2YXRlOgogICAgIFNWR1BhdHRlcm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwpAQCAtOTYsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIFNWR0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlIG1faGVpZ2h0IHsgTGVuZ3RoTW9kZUhlaWdodCB9OwogICAgIFNW
R0FuaW1hdGVkRW51bWVyYXRpb25BdHRyaWJ1dGU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4g
bV9wYXR0ZXJuVW5pdHMgeyBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJ
TkdCT1ggfTsKICAgICBTVkdBbmltYXRlZEVudW1lcmF0aW9uQXR0cmlidXRlPFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGU+IG1fcGF0dGVybkNvbnRlbnRVbml0cyB7IFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSB9OwotICAgIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEF0dHJpYnV0ZSBtX3BhdHRlcm5UcmFuc2Zvcm07CisgICAgUmVmPFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdD4gbV9wYXR0ZXJuVHJhbnNmb3JtIHsgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Ojpj
cmVhdGUodGhpcykgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2ludC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICBS
ZWY8U1ZHUG9pbnQ+IG1hdHJpeFRyYW5zZm9ybShTVkdNYXRyaXgmIG1hdHJpeCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIGF1dG8gbmV3UG9pbnQgPSBtX3ZhbHVlLm1hdHJpeFRyYW5zZm9ybShtYXRy
aXgucHJvcGVydHlSZWZlcmVuY2UoKSk7CisgICAgICAgIGF1dG8gbmV3UG9pbnQgPSBtX3ZhbHVl
Lm1hdHJpeFRyYW5zZm9ybShtYXRyaXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNWR1BvaW50KG5ld1BvaW50KSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjQzMzgz
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMywxMSArMTEzLDggQEAgc3RhdGljIHZvaWQgc2V0R3JhZGllbnRB
dHRyaWJ1dGVzKFNWR0dyYQogICAgIGlmICghYXR0cmlidXRlcy5oYXNHcmFkaWVudFVuaXRzKCkg
JiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyKSkKICAg
ICAgICAgYXR0cmlidXRlcy5zZXRHcmFkaWVudFVuaXRzKGVsZW1lbnQuZ3JhZGllbnRVbml0cygp
KTsKIAotICAgIGlmICghYXR0cmlidXRlcy5oYXNHcmFkaWVudFRyYW5zZm9ybSgpICYmIGVsZW1l
bnQuaGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKSB7Ci0gICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIGVsZW1lbnQuZ3JhZGllbnRU
cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSh0cmFuc2Zvcm0pOwotICAgICAgICBhdHRyaWJ1dGVzLnNl
dEdyYWRpZW50VHJhbnNmb3JtKHRyYW5zZm9ybSk7Ci0gICAgfQorICAgIGlmICghYXR0cmlidXRl
cy5oYXNHcmFkaWVudFRyYW5zZm9ybSgpICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKFNWR05hbWVz
OjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKQorICAgICAgICBhdHRyaWJ1dGVzLnNldEdyYWRpZW50
VHJhbnNmb3JtKGVsZW1lbnQuZ3JhZGllbnRUcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpKTsKIAog
ICAgIGlmICghYXR0cmlidXRlcy5oYXNTdG9wcygpKSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxH
cmFkaWVudDo6Q29sb3JTdG9wPiYgc3RvcHMoZWxlbWVudC5idWlsZFN0b3BzKCkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMjQzMzgzKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEs
MTIgKzM5MSwxMiBAQCBSZWY8U1ZHUmVjdD4gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHUmVjCiAK
IFJlZjxTVkdUcmFuc2Zvcm0+IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybSgpCiB7
Ci0gICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKFNWR1RyYW5zZm9ybVZhbHVlIHsgU1ZH
VHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fTUFUUklYIH0pOworICAgIHJldHVybiBTVkdU
cmFuc2Zvcm06OmNyZWF0ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVgp
OwogfQogCiBSZWY8U1ZHVHJhbnNmb3JtPiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zv
cm1Gcm9tTWF0cml4KFNWR01hdHJpeCYgbWF0cml4KQogewotICAgIHJldHVybiBTVkdUcmFuc2Zv
cm06OmNyZWF0ZShTVkdUcmFuc2Zvcm1WYWx1ZSB7IG1hdHJpeC5wcm9wZXJ0eVJlZmVyZW5jZSgp
IH0pOworICAgIHJldHVybiBTVkdUcmFuc2Zvcm06OmNyZWF0ZShtYXRyaXgudmFsdWUoKSk7CiB9
CiAKIEFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50Ojpsb2NhbENvb3JkaW5hdGVTcGFjZVRy
YW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlIG1vZGUpIGNvbnN0CkBAIC02MTMsNyArNjEz
LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OnZpZXdCb3hUbwogICAgICAgICBy
ZXR1cm4gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGN1cnJlbnRWaWV3
Qm94UmVjdCgpLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCksIHZpZXdXaWR0aCwgdmlld0hlaWdodCk7
CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3
Qm94VG9WaWV3VHJhbnNmb3JtKGN1cnJlbnRWaWV3Qm94UmVjdCgpLCBtX3ZpZXdTcGVjLT5wcmVz
ZXJ2ZUFzcGVjdFJhdGlvKCksIHZpZXdXaWR0aCwgdmlld0hlaWdodCk7Ci0gICAgbV92aWV3U3Bl
Yy0+dHJhbnNmb3JtVmFsdWUoKS5jb25jYXRlbmF0ZSh0cmFuc2Zvcm0pOworICAgIHRyYW5zZm9y
bSAqPSBtX3ZpZXdTcGVjLT50cmFuc2Zvcm0oKS0+Y29uY2F0ZW5hdGUoKTsKICAgICByZXR1cm4g
dHJhbnNmb3JtOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1Rl
eHRFbGVtZW50OjphbmltYXRlZAogICAgICAgICAvLyBGbGF0dGVuIGFueSAzRCB0cmFuc2Zvcm0K
ICAgICAgICAgbWF0cml4ID0gdC50b0FmZmluZVRyYW5zZm9ybSgpOwogICAgIH0gZWxzZQotICAg
ICAgICB0cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZShtYXRyaXgpOworICAgICAgICBtYXRyaXggPSB0
cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOwogCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtKiB0
cmFuc2Zvcm0gPSBjb25zdF9jYXN0PFNWR1RleHRFbGVtZW50Kj4odGhpcyktPnN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpOwogICAgIGlmICh0cmFuc2Zvcm0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVHJhbnNmb3JtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VHJhbnNmb3JtLmNwcAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RyYW5zZm9ybS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgotCi0jaW5j
bHVkZSAiU1ZHTWF0cml4VGVhck9mZi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJlZjxT
VkdNYXRyaXg+IFNWR1RyYW5zZm9ybTo6bWF0cml4KCkKLXsKLSAgICByZXR1cm4gU1ZHTWF0cml4
VGVhck9mZjo6Y3JlYXRlKCp0aGlzLCBwcm9wZXJ0eVJlZmVyZW5jZSgpLnN2Z01hdHJpeCgpKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCShyZXZpc2lvbiAyNDMzODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Niw1MCArMjYsNTcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU1ZHTWF0cml4LmgiCi0j
aW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2ZmLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtVmFs
dWUuaCIKKyNpbmNsdWRlICJTVkdWYWx1ZVByb3BlcnR5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU1ZHVHJhbnNmb3JtIDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdU
cmFuc2Zvcm1WYWx1ZT4geworY2xhc3MgU1ZHVHJhbnNmb3JtIDogcHVibGljIFNWR1ZhbHVlUHJv
cGVydHk8U1ZHVHJhbnNmb3JtVmFsdWU+LCBwdWJsaWMgU1ZHUHJvcGVydHlPd25lciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZShTVkdMZWdhY3lBbmltYXRl
ZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHVHJh
bnNmb3JtVmFsdWUmIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGUo
U1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybShhbmltYXRlZFByb3BlcnR5LCByb2xl
LCB2YWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm0odHlw
ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGUoY29uc3Qg
U1ZHVHJhbnNmb3JtVmFsdWUmIGluaXRpYWxWYWx1ZSA9IHsgfSkKKyAgICBzdGF0aWMgUmVmPFNW
R1RyYW5zZm9ybT4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtID0geyB9
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHVHJhbnNmb3JtKGluaXRp
YWxWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm0oU1ZH
VHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fTUFUUklYLCB0cmFuc2Zvcm0pKTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNWR1Ry
YW5zZm9ybT4+IGNyZWF0ZShFeGNlcHRpb25PcjxUPiYmIGluaXRpYWxWYWx1ZSkKKyAgICBzdGF0
aWMgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlKGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJiB2YWx1
ZSkKICAgICB7Ci0gICAgICAgIGlmIChpbml0aWFsVmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICByZXR1cm4gaW5pdGlhbFZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICAgICAg
cmV0dXJuIGNyZWF0ZShpbml0aWFsVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm0odmFsdWUudHlwZSgpLCB2YWx1ZS5t
YXRyaXgoKS0+dmFsdWUoKSwgdmFsdWUuYW5nbGUoKSwgdmFsdWUucm90YXRpb25DZW50ZXIoKSkp
OwogICAgIH0KIAotICAgIHVuc2lnbmVkIHNob3J0IHR5cGUoKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTVkdUcmFuc2Zvcm0+PiBjcmVhdGUo
RXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0eVJl
ZmVyZW5jZSgpLnR5cGUoKTsKKyAgICAgICAgaWYgKHZhbHVlLmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZSh2YWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgfQogCi0gICAgUmVmPFNW
R01hdHJpeD4gbWF0cml4KCk7CisgICAgflNWR1RyYW5zZm9ybSgpCisgICAgeworICAgICAgICBt
X3ZhbHVlLm1hdHJpeCgpLT5kZXRhY2goKTsKKyAgICB9CiAKLSAgICBmbG9hdCBhbmdsZSgpCisg
ICAgUmVmPFNWR1RyYW5zZm9ybT4gY2xvbmUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IHByb3BlcnR5UmVmZXJlbmNlKCkuYW5nbGUoKTsKKyAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9y
bTo6Y3JlYXRlKG1fdmFsdWUpOwogICAgIH0KIAorICAgIHVuc2lnbmVkIHNob3J0IHR5cGUoKSB7
IHJldHVybiBtX3ZhbHVlLnR5cGUoKTsgfQorICAgIGZsb2F0IGFuZ2xlKCkgeyByZXR1cm4gbV92
YWx1ZS5hbmdsZSgpOyB9CisgICAgY29uc3QgUmVmPFNWR01hdHJpeD4mIG1hdHJpeCgpIHsgcmV0
dXJuIG1fdmFsdWUubWF0cml4KCk7IH0KKwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1hdHJp
eChTVkdNYXRyaXgmIG1hdHJpeCkKICAgICB7CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3Ig
fTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldE1hdHJpeChtYXRyaXgucHJvcGVy
dHlSZWZlcmVuY2UoKSk7CisgICAgICAgIG1fdmFsdWUuc2V0TWF0cml4KG1hdHJpeC52YWx1ZSgp
KTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKQEAgLTc4LDkgKzg1LDggQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQog
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9y
IH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRUcmFuc2xhdGUodHgsIHR5KTsK
KyAgICAgICAgbV92YWx1ZS5zZXRUcmFuc2xhdGUodHgsIHR5KTsKICAgICAgICAgY29tbWl0Q2hh
bmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTg5LDkgKzk1LDggQEAg
cHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVy
dHlSZWZlcmVuY2UoKS5zZXRTY2FsZShzeCwgc3kpOworICAgICAgICBtX3ZhbHVlLnNldFNjYWxl
KHN4LCBzeSk7CiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwotCiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCkBAIC0xMDAsOSArMTA1LDggQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFk
T25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxs
b3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRSb3RhdGUoYW5n
bGUsIGN4LCBjeSk7CisgICAgICAgIG1fdmFsdWUuc2V0Um90YXRlKGFuZ2xlLCBjeCwgY3kpOwog
ICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApA
QCAtMTExLDkgKzExNSw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKICAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9
OwogCi0gICAgICAgIHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0U2tld1goYW5nbGUpOworICAgICAg
ICBtX3ZhbHVlLnNldFNrZXdYKGFuZ2xlKTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTEyMiwyMSArMTI1LDMyIEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAgICAgIHByb3BlcnR5UmVmZXJl
bmNlKCkuc2V0U2tld1koYW5nbGUpOworICAgICAgICBtX3ZhbHVlLnNldFNrZXdZKGFuZ2xlKTsK
ICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgU1ZHVHJhbnNmb3JtKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFu
aW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1WYWx1ZSYg
dmFsdWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybVZhbHVlPigm
YW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVl
UHJvcGVydHk8U1ZHVHJhbnNmb3JtVmFsdWU+OworCisgICAgU1ZHVHJhbnNmb3JtKFNWR1RyYW5z
Zm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlIHR5cGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtID0geyB9LCBmbG9hdCBhbmdsZSA9IDAsIGNvbnN0IEZsb2F0UG9pbnQmIHJvdGF0
aW9uQ2VudGVyID0geyB9KQorICAgICAgICA6IEJhc2UoU1ZHVHJhbnNmb3JtVmFsdWUodHlwZSwg
U1ZHTWF0cml4OjpjcmVhdGUodGhpcywgU1ZHUHJvcGVydHlBY2Nlc3M6OlJlYWRXcml0ZSwgdHJh
bnNmb3JtKSwgYW5nbGUsIHJvdGF0aW9uQ2VudGVyKSkKKyAgICB7CisgICAgfQorCisgICAgU1ZH
UHJvcGVydHlPd25lciogb3duZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX293bmVyOyB9
CisKKyAgICB2b2lkIGNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5KiBwcm9wZXJ0eSkg
b3ZlcnJpZGUKICAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHksIHByb3BlcnR5
ID09IG1fdmFsdWUubWF0cml4KCkucHRyKCkpOworICAgICAgICBpZiAob3duZXIoKSkKKyAgICAg
ICAgICAgIG93bmVyKCktPmNvbW1pdFByb3BlcnR5Q2hhbmdlKHRoaXMpOworICAgICAgICBtX3Zh
bHVlLm1hdHJpeERpZENoYW5nZSgpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IFNWR1RyYW5zZm9y
bShjb25zdCBTVkdUcmFuc2Zvcm1WYWx1ZSYgaW5pdGlhbFZhbHVlKQotICAgICAgICA6IFNWR1By
b3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1WYWx1ZT4oaW5pdGlhbFZhbHVlKQorICAgIFN0cmlu
ZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIHJldHVybiBt
X3ZhbHVlLnZhbHVlQXNTdHJpbmcoKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtLmlkbAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFJBTlNGT1JNX1NLRVdZID0gNjsKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCB0eXBlOwotICAgIFtOZXdPYmplY3RdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBTVkdNYXRyaXggbWF0cml4OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBT
VkdNYXRyaXggbWF0cml4OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxv
YXQgYW5nbGU7CiAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWF0cml4KFNWR01h
dHJpeCBtYXRyaXgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3Rh
bmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtRGlz
dGFuY2UuY3BwCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtRGlzdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgU1ZH
VHJhbnNmb3JtVmFsdWUgU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OgogCiBTVkdUcmFuc2Zvcm1WYWx1
ZSBTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRkVG9TVkdUcmFuc2Zvcm0oY29uc3QgU1ZHVHJhbnNm
b3JtVmFsdWUmIHRyYW5zZm9ybSkgY29uc3QKIHsKLSAgICBBU1NFUlQobV90eXBlID09IHRyYW5z
Zm9ybS50eXBlKCkgfHwgdHJhbnNmb3JtID09IFNWR1RyYW5zZm9ybVZhbHVlKCkpOworICAgIEFT
U0VSVChtX3R5cGUgPT0gdHJhbnNmb3JtLnR5cGUoKSB8fCAhdHJhbnNmb3JtLmlzVmFsaWQoKSk7
CiAgICAgCiAgICAgU1ZHVHJhbnNmb3JtVmFsdWUgbmV3VHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHJldmlzaW9uIDI0
MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yMCw1NyArMjEsMTE2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCi0jaW5jbHVkZSAiU1ZHTGlzdFByb3BlcnR5VGVh
ck9mZi5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKKyNpbmNsdWRlICJT
VkdUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCisjaW5jbHVkZSAi
U1ZHVmFsdWVQcm9wZXJ0eUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
VkdUcmFuc2Zvcm1MaXN0IGZpbmFsIDogcHVibGljIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZH
VHJhbnNmb3JtTGlzdFZhbHVlcz4geworY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdCBmaW5hbCA6IHB1
YmxpYyBTVkdWYWx1ZVByb3BlcnR5TGlzdDxTVkdUcmFuc2Zvcm0+IHsKKyAgICBmcmllbmQgY2xh
c3MgU1ZHVmlld1NwZWM7CisgICAgdXNpbmcgQmFzZSA9IFNWR1ZhbHVlUHJvcGVydHlMaXN0PFNW
R1RyYW5zZm9ybT47CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKwogcHVibGljOgotICAgIHVzaW5n
IEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZjxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPjsKLSAgICB1c2luZyBMaXN0V3JhcHBlckNhY2hl
ID0gQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOjpMaXN0V3JhcHBlckNhY2hlOworICAgIHN0
YXRpYyBSZWY8U1ZHVHJhbnNmb3JtTGlzdD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybUxpc3QoKSk7CisgICAgfQogCi0gICAgc3RhdGlj
IFJlZjxTVkdUcmFuc2Zvcm1MaXN0PiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
JiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3JtTGlz
dFZhbHVlcyYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICBzdGF0aWMg
UmVmPFNWR1RyYW5zZm9ybUxpc3Q+IGNyZWF0ZShTVkdQcm9wZXJ0eU93bmVyKiBvd25lciwgU1ZH
UHJvcGVydHlBY2Nlc3MgYWNjZXNzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU1ZHVHJhbnNmb3JtTGlzdChhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdyYXBw
ZXJzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybUxpc3Qob3du
ZXIsIGFjY2VzcykpOwogICAgIH0KIAotICAgIEV4Y2VwdGlvbk9yPFJlZjxTVkdUcmFuc2Zvcm0+
PiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCYgbWF0cml4KQorICAgIHN0
YXRpYyBSZWY8U1ZHVHJhbnNmb3JtTGlzdD4gY3JlYXRlKGNvbnN0IFNWR1RyYW5zZm9ybUxpc3Qm
IG90aGVyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MpCiAgICAgewotICAgICAgICBBU1NFUlQo
bV92YWx1ZXMpOwotICAgICAgICByZXR1cm4gbV92YWx1ZXMtPmNyZWF0ZVNWR1RyYW5zZm9ybUZy
b21NYXRyaXgobWF0cml4KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHVHJhbnNm
b3JtTGlzdChvdGhlciwgYWNjZXNzKSk7CiAgICAgfQogCi0gICAgRXhjZXB0aW9uT3I8UmVmUHRy
PFNWR1RyYW5zZm9ybT4+IGNvbnNvbGlkYXRlKCkKKyAgICBFeGNlcHRpb25PcjxSZWY8U1ZHVHJh
bnNmb3JtPj4gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChjb25zdCBSZWY8U1ZHTWF0cml4
PiYgbWF0cml4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAgICAgICAgQVNT
RVJUKG1fd3JhcHBlcnMpOworICAgICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtOjpjcmVhdGUobWF0
cml4LT52YWx1ZSgpKTsKKyAgICB9CiAKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8U1ZHVHJhbnNm
b3JtPj4gY29uc29saWRhdGUoKQorICAgIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBjYW5BbHRl
ckxpc3QoKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgICAgICBBU1NFUlQocmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKIAotICAgICAgICBBU1NFUlQobV92YWx1ZXMtPnNpemUo
KSA9PSBtX3dyYXBwZXJzLT5zaXplKCkpOwotCiAgICAgICAgIC8vIFNwZWM6IElmIHRoZSBsaXN0
IHdhcyBlbXB0eSwgdGhlbiBhIHZhbHVlIG9mIG51bGwgaXMgcmV0dXJuZWQuCi0gICAgICAgIGlm
IChtX3ZhbHVlcy0+aXNFbXB0eSgpKQorICAgICAgICBpZiAobV9pdGVtcy5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBkZXRhY2hMaXN0V3JhcHBlcnMo
MCk7Ci0gICAgICAgIAotICAgICAgICBSZWZQdHI8U1ZHVHJhbnNmb3JtPiB3cmFwcGVyID0gbV92
YWx1ZXMtPmNvbnNvbGlkYXRlKCk7Ci0gICAgICAgIG1fd3JhcHBlcnMtPmFwcGVuZChtYWtlV2Vh
a1B0cigqd3JhcHBlcikpOworICAgICAgICBpZiAobV9pdGVtcy5zaXplKCkgPT0gMSkKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlUmVmUHRyKGF0KDApLmdldCgpKTsKIAotICAgICAgICBBU1NFUlQo
bV92YWx1ZXMtPnNpemUoKSA9PSBtX3dyYXBwZXJzLT5zaXplKCkpOwotICAgICAgICByZXR1cm4g
d3JhcHBlcjsKKyAgICAgICAgYXV0byBuZXdJdGVtID0gU1ZHVHJhbnNmb3JtOjpjcmVhdGUoY29u
Y2F0ZW5hdGUoKSk7CisgICAgICAgIGNsZWFySXRlbXMoKTsKKworICAgICAgICBhdXRvIGl0ZW0g
PSBhcHBlbmQoV1RGTW92ZShuZXdJdGVtKSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAg
ICAgICByZXR1cm4gbWFrZVJlZlB0cihpdGVtLmdldCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHBh
cnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICBjbGVhckl0ZW1zKCk7CisK
KyAgICAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHZhbHVlKS51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gdXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgICAgICBpZiAoIXBhcnNlKHN0YXJ0LCBzdGFydCArIHZh
bHVlLmxlbmd0aCgpKSkKKyAgICAgICAgICAgIGNsZWFySXRlbXMoKTsKKyAgICB9CisKKyAgICBB
ZmZpbmVUcmFuc2Zvcm0gY29uY2F0ZW5hdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIHJlc3VsdDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2Zvcm0gOiBt
X2l0ZW1zKQorICAgICAgICAgICAgcmVzdWx0ICo9IHRyYW5zZm9ybS0+bWF0cml4KCktPnZhbHVl
KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgU3RyaW5nIHZhbHVlQXNT
dHJpbmcoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYW5zZnJvbSA6IG1faXRlbXMpIHsKKyAg
ICAgICAgICAgIGlmIChidWlsZGVyLmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7CisKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRyYW5zZnJvbS0+dmFs
dWUoKS52YWx1ZUFzU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBidWlsZGVy
LnRvU3RyaW5nKCk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNWR1RyYW5zZm9ybUxpc3QoQW5p
bWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmJiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJv
bGUgcm9sZSwgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hl
JiB3cmFwcGVycykKLSAgICAgICAgOiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9y
bUxpc3RWYWx1ZXM+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpCisg
ICAgYm9vbCBwYXJzZShjb25zdCBVQ2hhciomIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kKQogICAg
IHsKKyAgICAgICAgYm9vbCBkZWxpbVBhcnNlZCA9IGZhbHNlOworICAgICAgICB3aGlsZSAoc3Rh
cnQgPCBlbmQpIHsKKyAgICAgICAgICAgIGRlbGltUGFyc2VkID0gZmFsc2U7CisgICAgICAgICAg
ICBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0eXBlID0gU1ZHVHJhbnNmb3Jt
VmFsdWU6OlNWR19UUkFOU0ZPUk1fVU5LTk9XTjsKKyAgICAgICAgICAgIHNraXBPcHRpb25hbFNW
R1NwYWNlcyhzdGFydCwgZW5kKTsKKworICAgICAgICAgICAgaWYgKCFTVkdUcmFuc2Zvcm1hYmxl
OjpwYXJzZUFuZFNraXBUeXBlKHN0YXJ0LCBlbmQsIHR5cGUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgUmVmPFNWR1RyYW5zZm9ybT4gdHJhbnNmb3JtID0g
U1ZHVHJhbnNmb3JtOjpjcmVhdGUodHlwZSk7CisgICAgICAgICAgICBpZiAoIVNWR1RyYW5zZm9y
bWFibGU6OnBhcnNlVHJhbnNmb3JtVmFsdWUodHlwZSwgc3RhcnQsIGVuZCwgdHJhbnNmb3JtLT52
YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGFw
cGVuZChXVEZNb3ZlKHRyYW5zZm9ybSkpOworICAgICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzKHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgaWYgKHN0YXJ0IDwgZW5kICYmICpzdGFydCA9
PSAnLCcpIHsKKyAgICAgICAgICAgICAgICBkZWxpbVBhcnNlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgKytzdGFydDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2tpcE9wdGlvbmFs
U1ZHU3BhY2VzKHN0YXJ0LCBlbmQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAhZGVsaW1Q
YXJzZWQ7CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bUxpc3QuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1M
aXN0LmlkbAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw1ICszNiw1IEBAIGludGVyZmFjZSBT
VkdUcmFuc2Zvcm1MaXN0IHsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9ybSBh
cHBlbmRJdGVtKFNWR1RyYW5zZm9ybSBpdGVtKTsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwg
TmV3T2JqZWN0XSBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdN
YXRyaXggbWF0cml4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHVHJh
bnNmb3JtIGNvbnNvbGlkYXRlKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zv
cm0gY29uc29saWRhdGUoKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtTGlzdFZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXMuY3BwCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCi0KLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
LSNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5o
IgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1SZWY8U1ZHVHJhbnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpjcmVhdGVT
VkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR01hdHJpeCYgbWF0cml4KSBjb25zdAotewotICAgIHJl
dHVybiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KG1hdHJpeCk7
Ci19Ci0KLVJlZjxTVkdUcmFuc2Zvcm0+IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNvbnNvbGlk
YXRlKCkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4OwotICAgIGlmICghY29uY2F0ZW5h
dGUobWF0cml4KSkKLSAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKCk7Ci0KLSAg
ICBTVkdUcmFuc2Zvcm1WYWx1ZSB0cmFuc2Zvcm0obWF0cml4KTsKLSAgICBjbGVhcigpOwotICAg
IGFwcGVuZCh0cmFuc2Zvcm0pOwotICAgIHJldHVybiBTVkdUcmFuc2Zvcm06OmNyZWF0ZSh0cmFu
c2Zvcm0pOwotfQotCi1ib29sIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OmNvbmNhdGVuYXRlKEFm
ZmluZVRyYW5zZm9ybSYgcmVzdWx0KSBjb25zdAotewotICAgIHVuc2lnbmVkIHNpemUgPSB0aGlz
LT5zaXplKCk7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICByZXN1bHQgKj0gYXQo
aSkubWF0cml4KCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU3RyaW5nIFNWR1RyYW5zZm9y
bUxpc3RWYWx1ZXM6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAotewotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGkgPiAwKQotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZChhdChp
KS52YWx1ZUFzU3RyaW5nKCkpOwotICAgIH0KLQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7Ci19Ci0KLXZvaWQgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6cGFyc2UoY29uc3QgU3RyaW5n
JiB0cmFuc2Zvcm0pCi17Ci0gICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdW
aWV3KHRyYW5zZm9ybSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIq
IHN0YXJ0ID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwotICAgIGlmICghU1ZHVHJhbnNmb3JtYWJs
ZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoKnRoaXMsIHN0YXJ0LCBzdGFydCArIHRyYW5zZm9y
bS5sZW5ndGgoKSkpCi0gICAgICAgIGNsZWFyKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAkocmV2aXNpb24gMjQzMzgz
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5o
IgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgU1ZHTGlzdFByb3BlcnR5VGVhck9mZjsKLQotY2xhc3Mg
U1ZHVHJhbnNmb3JtTGlzdDsKLQotY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyBmaW5hbCA6
IHB1YmxpYyBWZWN0b3I8U1ZHVHJhbnNmb3JtVmFsdWUsIDAsIENyYXNoT25PdmVyZmxvdywgMj4g
ewotcHVibGljOgotICAgIFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21N
YXRyaXgoU1ZHTWF0cml4JikgY29uc3Q7Ci0gICAgUmVmPFNWR1RyYW5zZm9ybT4gY29uc29saWRh
dGUoKTsKLQotICAgIGJvb2wgY29uY2F0ZW5hdGUoQWZmaW5lVHJhbnNmb3JtJiByZXN1bHQpIGNv
bnN0OwotCi0gICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKLSAgICB2b2lkIHBhcnNl
KGNvbnN0IFN0cmluZyYpOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4gewotICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm1MaXN0
VmFsdWVzIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIHN0YXRpYyBTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzIGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi0gICAgewot
ICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIHZhbHVlczsKLSAgICAgICAgdmFsdWVzLnBh
cnNlKHN0cmluZyk7Ci0gICAgICAgIHJldHVybiB2YWx1ZXM7Ci0gICAgfQotICAgIHN0YXRpYyBP
cHRpb25hbDxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxW
YWx1ZSgpOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzJiBsaXN0KSB7IHJldHVybiBsaXN0LnZhbHVlQXNTdHJpbmcoKTsgfQotCi0gICAg
dXNpbmcgTGlzdEl0ZW1UeXBlID0gU1ZHVHJhbnNmb3JtVmFsdWU7Ci0gICAgdXNpbmcgTGlzdEl0
ZW1UZWFyT2ZmID0gU1ZHVHJhbnNmb3JtOwotICAgIHVzaW5nIExpc3RQcm9wZXJ0eVRlYXJPZmYg
PSBTVkdUcmFuc2Zvcm1MaXN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMu
aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybVZhbHVlLmNwcAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDIzNCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3Jt
VmFsdWUuaCIKLQotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkZsb2F0
UG9pbnQuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1TVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVmFsdWUo
KSA9IGRlZmF1bHQ7Ci0KLVNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1WYWx1ZShTVkdU
cmFuc2Zvcm1UeXBlIHR5cGUsIENvbnN0cnVjdGlvbk1vZGUgbW9kZSkKLSAgICA6IG1fdHlwZSh0
eXBlKQotewotICAgIGlmIChtb2RlID09IENvbnN0cnVjdFplcm9UcmFuc2Zvcm0pCi0gICAgICAg
IG1fbWF0cml4ID0gQWZmaW5lVHJhbnNmb3JtKDAsIDAsIDAsIDAsIDAsIDApOwotfQotCi1TVkdU
cmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVmFsdWUoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBt
YXRyaXgpCi0gICAgOiBtX3R5cGUoU1ZHX1RSQU5TRk9STV9NQVRSSVgpCi0gICAgLCBtX21hdHJp
eChtYXRyaXgpCi17Ci19Ci0KLXZvaWQgU1ZHVHJhbnNmb3JtVmFsdWU6OnNldE1hdHJpeChjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKLXsKLSAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JN
X01BVFJJWDsKLSAgICBtX2FuZ2xlID0gMDsKLSAgICBtX21hdHJpeCA9IG1hdHJpeDsKLX0KLQot
dm9pZCBTVkdUcmFuc2Zvcm1WYWx1ZTo6dXBkYXRlU1ZHTWF0cml4KCkKLXsKLSAgICAvLyBUaGUg
dW5kZXJseWluZyBtYXRyaXggaGFzIGJlZW4gY2hhbmdlZCwgYWx0ZXIgdGhlIHRyYW5zZm9ybWF0
aW9uIHR5cGUuCi0gICAgLy8gU3BlYzogSW4gY2FzZSB0aGUgbWF0cml4IG9iamVjdCBpcyBjaGFu
Z2VkIGRpcmVjdGx5IChpLmUuLCB3aXRob3V0IHVzaW5nIHRoZSBtZXRob2RzIG9uIHRoZSBTVkdU
cmFuc2Zvcm0gaW50ZXJmYWNlIGl0c2VsZikKLSAgICAvLyB0aGVuIHRoZSB0eXBlIG9mIHRoZSBT
VkdUcmFuc2Zvcm0gY2hhbmdlcyB0byBTVkdfVFJBTlNGT1JNX01BVFJJWC4KLSAgICBtX3R5cGUg
PSBTVkdfVFJBTlNGT1JNX01BVFJJWDsKLSAgICBtX2FuZ2xlID0gMDsKLX0KLQotdm9pZCBTVkdU
cmFuc2Zvcm1WYWx1ZTo6c2V0VHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSkKLXsKLSAgICBt
X3R5cGUgPSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFURTsKLSAgICBtX2FuZ2xlID0gMDsKLQotICAg
IG1fbWF0cml4Lm1ha2VJZGVudGl0eSgpOwotICAgIG1fbWF0cml4LnRyYW5zbGF0ZSh0eCwgdHkp
OwotfQotCi1GbG9hdFBvaW50IFNWR1RyYW5zZm9ybVZhbHVlOjp0cmFuc2xhdGUoKSBjb25zdAot
ewotICAgIHJldHVybiBGbG9hdFBvaW50OjpuYXJyb3dQcmVjaXNpb24obV9tYXRyaXguZSgpLCBt
X21hdHJpeC5mKCkpOwotfQotCi12b2lkIFNWR1RyYW5zZm9ybVZhbHVlOjpzZXRTY2FsZShmbG9h
dCBzeCwgZmxvYXQgc3kpCi17Ci0gICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9TQ0FMRTsKLSAg
ICBtX2FuZ2xlID0gMDsKLSAgICBtX2NlbnRlciA9IEZsb2F0UG9pbnQoKTsKLQotICAgIG1fbWF0
cml4Lm1ha2VJZGVudGl0eSgpOwotICAgIG1fbWF0cml4LnNjYWxlTm9uVW5pZm9ybShzeCwgc3kp
OwotfQotCi1GbG9hdFNpemUgU1ZHVHJhbnNmb3JtVmFsdWU6OnNjYWxlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24obV9tYXRyaXguYSgpLCBtX21hdHJp
eC5kKCkpOwotfQotCi12b2lkIFNWR1RyYW5zZm9ybVZhbHVlOjpzZXRSb3RhdGUoZmxvYXQgYW5n
bGUsIGZsb2F0IGN4LCBmbG9hdCBjeSkKLXsKLSAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1JP
VEFURTsKLSAgICBtX2FuZ2xlID0gYW5nbGU7Ci0gICAgbV9jZW50ZXIgPSBGbG9hdFBvaW50KGN4
LCBjeSk7Ci0KLSAgICAvLyBUT0RPOiB0b1N0cmluZygpIGltcGxlbWVudGF0aW9uLCB3aGljaCBj
YW4gc2hvdyBjeCwgY3kgKG5lZWQgdG8gYmUgc3RvcmVkPykKLSAgICBtX21hdHJpeC5tYWtlSWRl
bnRpdHkoKTsKLSAgICBtX21hdHJpeC50cmFuc2xhdGUoY3gsIGN5KTsKLSAgICBtX21hdHJpeC5y
b3RhdGUoYW5nbGUpOwotICAgIG1fbWF0cml4LnRyYW5zbGF0ZSgtY3gsIC1jeSk7Ci19Ci0KLXZv
aWQgU1ZHVHJhbnNmb3JtVmFsdWU6OnNldFNrZXdYKGZsb2F0IGFuZ2xlKQotewotICAgIG1fdHlw
ZSA9IFNWR19UUkFOU0ZPUk1fU0tFV1g7Ci0gICAgbV9hbmdsZSA9IGFuZ2xlOwotCi0gICAgbV9t
YXRyaXgubWFrZUlkZW50aXR5KCk7Ci0gICAgbV9tYXRyaXguc2tld1goYW5nbGUpOwotfQotCi12
b2lkIFNWR1RyYW5zZm9ybVZhbHVlOjpzZXRTa2V3WShmbG9hdCBhbmdsZSkKLXsKLSAgICBtX3R5
cGUgPSBTVkdfVFJBTlNGT1JNX1NLRVdZOwotICAgIG1fYW5nbGUgPSBhbmdsZTsKLQotICAgIG1f
bWF0cml4Lm1ha2VJZGVudGl0eSgpOwotICAgIG1fbWF0cml4LnNrZXdZKGFuZ2xlKTsKLX0KLQot
Y29uc3QgU3RyaW5nJiBTVkdUcmFuc2Zvcm1WYWx1ZTo6dHJhbnNmb3JtVHlwZVByZWZpeEZvclBh
cnNpbmcoU1ZHVHJhbnNmb3JtVHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAg
IGNhc2UgU1ZHX1RSQU5TRk9STV9VTktOT1dOOgotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fTUFUUklYOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IG1hdHJpeFN0cmluZyhNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgi
bWF0cml4KCIpKTsKLSAgICAgICAgcmV0dXJuIG1hdHJpeFN0cmluZzsKLSAgICB9Ci0gICAgY2Fz
ZSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFURTogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiB0cmFuc2xhdGVTdHJpbmcoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoInRyYW5z
bGF0ZSgiKSk7Ci0gICAgICAgIHJldHVybiB0cmFuc2xhdGVTdHJpbmc7Ci0gICAgfQotICAgIGNh
c2UgU1ZHX1RSQU5TRk9STV9TQ0FMRTogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBzY2FsZVN0cmluZyhNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgic2NhbGUoIikpOwot
ICAgICAgICByZXR1cm4gc2NhbGVTdHJpbmc7Ci0gICAgfQotICAgIGNhc2UgU1ZHX1RSQU5TRk9S
TV9ST1RBVEU6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gcm90YXRl
U3RyaW5nKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJyb3RhdGUoIikpOwotICAgICAgICByZXR1
cm4gcm90YXRlU3RyaW5nOwotICAgIH0gICAgCi0gICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NLRVdY
OiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNrZXdYU3RyaW5nKE1B
S0VfU1RBVElDX1NUUklOR19JTVBMKCJza2V3WCgiKSk7Ci0gICAgICAgIHJldHVybiBza2V3WFN0
cmluZzsKLSAgICB9Ci0gICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NLRVdZOiB7Ci0gICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNrZXdZU3RyaW5nKE1BS0VfU1RBVElDX1NUUklO
R19JTVBMKCJza2V3WSgiKSk7Ci0gICAgICAgIHJldHVybiBza2V3WVN0cmluZzsKLSAgICB9Ci0g
ICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7Ci19Ci0KLVN0cmluZyBTVkdUcmFuc2Zvcm1WYWx1ZTo6dmFsdWVBc1N0cmluZygpIGNvbnN0
Ci17Ci0gICAgY29uc3QgU3RyaW5nJiBwcmVmaXggPSB0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFy
c2luZyhtX3R5cGUpOwotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBTVkdfVFJBTlNG
T1JNX1VOS05PV046Ci0gICAgICAgIHJldHVybiBwcmVmaXg7Ci0gICAgY2FzZSBTVkdfVFJBTlNG
T1JNX01BVFJJWDogewotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHByZWZpeCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNp
b25OdW1iZXIobV9tYXRyaXguYSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX21hdHJpeC5iKCkpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKG1fbWF0cml4LmMoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9tYXRyaXgu
ZCgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcihtX21hdHJpeC5lKCkpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1f
bWF0cml4LmYoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIHJldHVy
biBidWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9UUkFO
U0xBVEU6IHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVy
LmFwcGVuZChwcmVmaXgpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVt
YmVyKG1fbWF0cml4LmUoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9tYXRyaXguZigpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKLSAgICB9Ci0gICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NDQUxFOiB7Ci0gICAgICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4KTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX21hdHJpeC54U2NhbGUoKSk7
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIobV9tYXRyaXgueVNjYWxlKCkpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZCgnKScpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH0KLSAg
ICBjYXNlIFNWR19UUkFOU0ZPUk1fUk9UQVRFOiB7Ci0gICAgICAgIGRvdWJsZSBhbmdsZUluUmFk
ID0gZGVnMnJhZChtX2FuZ2xlKTsKLSAgICAgICAgZG91YmxlIGNvc0FuZ2xlID0gc3RkOjpjb3Mo
YW5nbGVJblJhZCk7Ci0gICAgICAgIGRvdWJsZSBzaW5BbmdsZSA9IHN0ZDo6c2luKGFuZ2xlSW5S
YWQpOwotICAgICAgICBmbG9hdCBjeCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29zQW5nbGUg
IT0gMSA/IChtX21hdHJpeC5lKCkgKiAoMSAtIGNvc0FuZ2xlKSAtIG1fbWF0cml4LmYoKSAqIHNp
bkFuZ2xlKSAvICgxIC0gY29zQW5nbGUpIC8gMiA6IDApOwotICAgICAgICBmbG9hdCBjeSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoY29zQW5nbGUgIT0gMSA/IChtX21hdHJpeC5lKCkgKiBzaW5B
bmdsZSAvICgxIC0gY29zQW5nbGUpICsgbV9tYXRyaXguZigpKSAvIDIgOiAwKTsKLSAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXgpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fYW5nbGUpOwotICAg
ICAgICBpZiAoY3ggfHwgY3kpIHsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKGN4KTsKLSAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZEZp
eGVkUHJlY2lzaW9uTnVtYmVyKGN5KTsKLSAgICAgICAgfQotICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnKScpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH0KLSAgICBj
YXNlIFNWR19UUkFOU0ZPUk1fU0tFV1g6Ci0gICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NLRVdZOiB7
Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
cHJlZml4KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX2Fu
Z2xlKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5oCShyZXZpc2lvbiAyNDMz
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTIwLDggKzIxLDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRDb252
ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIlNWR01hdHJpeFZh
bHVlLmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMzksNTYgKzQ1LDI0MyBAQCBwdWJsaWM6CiAgICAgICAgIFNWR19UUkFOU0ZPUk1f
U0tFV1kgPSA2CiAgICAgfTsKIAotICAgIGVudW0gQ29uc3RydWN0aW9uTW9kZSB7Ci0gICAgICAg
IENvbnN0cnVjdElkZW50aXR5VHJhbnNmb3JtLAotICAgICAgICBDb25zdHJ1Y3RaZXJvVHJhbnNm
b3JtCi0gICAgfTsKLQotICAgIFNWR1RyYW5zZm9ybVZhbHVlKCk7Ci0gICAgU1ZHVHJhbnNmb3Jt
VmFsdWUoU1ZHVHJhbnNmb3JtVHlwZSwgQ29uc3RydWN0aW9uTW9kZSA9IENvbnN0cnVjdElkZW50
aXR5VHJhbnNmb3JtKTsKLSAgICBleHBsaWNpdCBTVkdUcmFuc2Zvcm1WYWx1ZShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKKyAgICBTVkdUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1UeXBlIHR5
cGUgPSBTVkdfVFJBTlNGT1JNX01BVFJJWCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0gPSB7IH0pCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9tYXRyaXgoU1ZH
TWF0cml4OjpjcmVhdGUodHJhbnNmb3JtKSkKKyAgICB7CisgICAgfQorCisgICAgU1ZHVHJhbnNm
b3JtVmFsdWUoY29uc3QgU1ZHVHJhbnNmb3JtVmFsdWUmIG90aGVyKQorICAgICAgICA6IG1fdHlw
ZShvdGhlci5tX3R5cGUpCisgICAgICAgICwgbV9tYXRyaXgoU1ZHTWF0cml4OjpjcmVhdGUob3Ro
ZXIubWF0cml4KCktPnZhbHVlKCkpKQorICAgICAgICAsIG1fYW5nbGUob3RoZXIubV9hbmdsZSkK
KyAgICAgICAgLCBtX3JvdGF0aW9uQ2VudGVyKG90aGVyLm1fcm90YXRpb25DZW50ZXIpCisgICAg
eworICAgIH0KKworICAgIFNWR1RyYW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9ybVR5cGUgdHlwZSwg
UmVmPFNWR01hdHJpeD4mJiBtYXRyaXgsIGZsb2F0IGFuZ2xlLCBjb25zdCBGbG9hdFBvaW50JiBy
b3RhdGlvbkNlbnRlcikKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX21hdHJp
eChXVEZNb3ZlKG1hdHJpeCkpCisgICAgICAgICwgbV9hbmdsZShhbmdsZSkKKyAgICAgICAgLCBt
X3JvdGF0aW9uQ2VudGVyKHJvdGF0aW9uQ2VudGVyKQorICAgIHsKKyAgICB9CisKKyAgICBTVkdU
cmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZSYmIG90aGVyKQorICAgICAgICA6IG1fdHlw
ZShvdGhlci5tX3R5cGUpCisgICAgICAgICwgbV9tYXRyaXgob3RoZXIubV9tYXRyaXguY29weVJl
ZigpKQorICAgICAgICAsIG1fYW5nbGUob3RoZXIubV9hbmdsZSkKKyAgICAgICAgLCBtX3JvdGF0
aW9uQ2VudGVyKG90aGVyLm1fcm90YXRpb25DZW50ZXIpCisgICAgeworICAgIH0KKworICAgIFNW
R1RyYW5zZm9ybVZhbHVlJiBvcGVyYXRvcj0oY29uc3QgU1ZHVHJhbnNmb3JtVmFsdWUmIG90aGVy
KQorICAgIHsKKyAgICAgICAgbV90eXBlID0gb3RoZXIubV90eXBlOworICAgICAgICBtX21hdHJp
eC0+c2V0VmFsdWUob3RoZXIubV9tYXRyaXgtPnZhbHVlKCkpOworICAgICAgICBtX2FuZ2xlID0g
b3RoZXIubV9hbmdsZTsKKyAgICAgICAgbV9yb3RhdGlvbkNlbnRlciA9IG90aGVyLm1fcm90YXRp
b25DZW50ZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKICAgICBTVkdUcmFuc2Zv
cm1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLQotICAgIFNWR01hdHJpeFZh
bHVlJiBzdmdNYXRyaXgoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTVkdNYXRyaXhWYWx1ZSY+KG1f
bWF0cml4KTsgfQotICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXgoKSBjb25zdCB7IHJldHVybiBt
X21hdHJpeDsgfQotICAgIHZvaWQgdXBkYXRlU1ZHTWF0cml4KCk7Ci0KKyAgICBjb25zdCBSZWY8
U1ZHTWF0cml4PiYgbWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KICAgICBmbG9h
dCBhbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5nbGU7IH0KLSAgICBGbG9hdFBvaW50IHJvdGF0
aW9uQ2VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9jZW50ZXI7IH0KLQotICAgIHZvaWQgc2V0TWF0
cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgIHZvaWQgc2V0VHJhbnNsYXRlKGZsb2F0
IHR4LCBmbG9hdCB0eSk7Ci0gICAgdm9pZCBzZXRTY2FsZShmbG9hdCBzeCwgZmxvYXQgc3kpOwot
ICAgIHZvaWQgc2V0Um90YXRlKGZsb2F0IGFuZ2xlLCBmbG9hdCBjeCwgZmxvYXQgY3kpOwotICAg
IHZvaWQgc2V0U2tld1goZmxvYXQgYW5nbGUpOwotICAgIHZvaWQgc2V0U2tld1koZmxvYXQgYW5n
bGUpOwotICAgIAotICAgIEZsb2F0UG9pbnQgdHJhbnNsYXRlKCkgY29uc3Q7Ci0gICAgRmxvYXRT
aXplIHNjYWxlKCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCByb3RhdGlvbkNlbnRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fcm90YXRpb25DZW50ZXI7IH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSAhPSBTVkdfVFJBTlNGT1JNX1VOS05PV047IH0KLSAgICBTdHJpbmcg
dmFsdWVBc1N0cmluZygpIGNvbnN0OwogCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyYgdHJhbnNm
b3JtVHlwZVByZWZpeEZvclBhcnNpbmcoU1ZHVHJhbnNmb3JtVHlwZSk7CisgICAgdm9pZCBzZXRN
YXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCisgICAgeworICAgICAgICBtX3R5
cGUgPSBTVkdfVFJBTlNGT1JNX01BVFJJWDsKKyAgICAgICAgbV9hbmdsZSA9IDA7CisgICAgICAg
IG1fcm90YXRpb25DZW50ZXIgPSBGbG9hdFBvaW50KCk7CisgICAgICAgIG1fbWF0cml4LT5zZXRW
YWx1ZShtYXRyaXgpOworICAgIH0KKworICAgIHZvaWQgbWF0cml4RGlkQ2hhbmdlKCkKKyAgICB7
CisgICAgICAgIC8vIFRoZSB1bmRlcmx5aW5nIG1hdHJpeCBoYXMgYmVlbiBjaGFuZ2VkLCBhbHRl
ciB0aGUgdHJhbnNmb3JtYXRpb24gdHlwZS4KKyAgICAgICAgLy8gU3BlYzogSW4gY2FzZSB0aGUg
bWF0cml4IG9iamVjdCBpcyBjaGFuZ2VkIGRpcmVjdGx5IChpLmUuLCB3aXRob3V0IHVzaW5nIHRo
ZSBtZXRob2RzIG9uIHRoZSBTVkdUcmFuc2Zvcm0gaW50ZXJmYWNlIGl0c2VsZikKKyAgICAgICAg
Ly8gdGhlbiB0aGUgdHlwZSBvZiB0aGUgU1ZHVHJhbnNmb3JtIGNoYW5nZXMgdG8gU1ZHX1RSQU5T
Rk9STV9NQVRSSVguCisgICAgICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fTUFUUklYOworICAg
ICAgICBtX2FuZ2xlID0gMDsKKyAgICAgICAgbV9yb3RhdGlvbkNlbnRlciA9IEZsb2F0UG9pbnQo
KTsKKyAgICB9CisKKyAgICBGbG9hdFBvaW50IHRyYW5zbGF0ZSgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gRmxvYXRQb2ludDo6bmFycm93UHJlY2lzaW9uKG1fbWF0cml4LT5lKCksIG1f
bWF0cml4LT5mKCkpOworICAgIH0KKworICAgIHZvaWQgc2V0VHJhbnNsYXRlKGZsb2F0IHR4LCBm
bG9hdCB0eSkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fVFJBTlNMQVRF
OworICAgICAgICBtX2FuZ2xlID0gMDsKKyAgICAgICAgbV9yb3RhdGlvbkNlbnRlciA9IEZsb2F0
UG9pbnQoKTsKKworICAgICAgICBtX21hdHJpeC0+dmFsdWUoKS5tYWtlSWRlbnRpdHkoKTsKKyAg
ICAgICAgbV9tYXRyaXgtPnZhbHVlKCkudHJhbnNsYXRlKHR4LCB0eSk7CisgICAgfQorCisgICAg
RmxvYXRTaXplIHNjYWxlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBGbG9hdFNpemU6
Om5hcnJvd1ByZWNpc2lvbihtX21hdHJpeC0+YSgpLCBtX21hdHJpeC0+ZCgpKTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHN4LCBmbG9hdCBzeSkKKyAgICB7CisgICAgICAgIG1f
dHlwZSA9IFNWR19UUkFOU0ZPUk1fU0NBTEU7CisgICAgICAgIG1fYW5nbGUgPSAwOworICAgICAg
ICBtX3JvdGF0aW9uQ2VudGVyID0gRmxvYXRQb2ludCgpOworCisgICAgICAgIG1fbWF0cml4LT52
YWx1ZSgpLm1ha2VJZGVudGl0eSgpOworICAgICAgICBtX21hdHJpeC0+dmFsdWUoKS5zY2FsZU5v
blVuaWZvcm0oc3gsIHN5KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFJvdGF0ZShmbG9hdCBhbmds
ZSwgZmxvYXQgY3gsIGZsb2F0IGN5KQorICAgIHsKKyAgICAgICAgbV90eXBlID0gU1ZHX1RSQU5T
Rk9STV9ST1RBVEU7CisgICAgICAgIG1fYW5nbGUgPSBhbmdsZTsKKyAgICAgICAgbV9yb3RhdGlv
bkNlbnRlciA9IEZsb2F0UG9pbnQoY3gsIGN5KTsKKworICAgICAgICAvLyBUT0RPOiB0b1N0cmlu
ZygpIGltcGxlbWVudGF0aW9uLCB3aGljaCBjYW4gc2hvdyBjeCwgY3kgKG5lZWQgdG8gYmUgc3Rv
cmVkPykKKyAgICAgICAgbV9tYXRyaXgtPnZhbHVlKCkubWFrZUlkZW50aXR5KCk7CisgICAgICAg
IG1fbWF0cml4LT52YWx1ZSgpLnRyYW5zbGF0ZShjeCwgY3kpOworICAgICAgICBtX21hdHJpeC0+
dmFsdWUoKS5yb3RhdGUoYW5nbGUpOworICAgICAgICBtX21hdHJpeC0+dmFsdWUoKS50cmFuc2xh
dGUoLWN4LCAtY3kpOworICAgIH0KKworICAgIHZvaWQgc2V0U2tld1goZmxvYXQgYW5nbGUpCisg
ICAgeworICAgICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NLRVdYOworICAgICAgICBtX2Fu
Z2xlID0gYW5nbGU7CisgICAgICAgIG1fcm90YXRpb25DZW50ZXIgPSBGbG9hdFBvaW50KCk7CisK
KyAgICAgICAgbV9tYXRyaXgtPnZhbHVlKCkubWFrZUlkZW50aXR5KCk7CisgICAgICAgIG1fbWF0
cml4LT52YWx1ZSgpLnNrZXdYKGFuZ2xlKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFNrZXdZKGZs
b2F0IGFuZ2xlKQorICAgIHsKKyAgICAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9TS0VXWTsK
KyAgICAgICAgbV9hbmdsZSA9IGFuZ2xlOworICAgICAgICBtX3JvdGF0aW9uQ2VudGVyID0gRmxv
YXRQb2ludCgpOworCisgICAgICAgIG1fbWF0cml4LT52YWx1ZSgpLm1ha2VJZGVudGl0eSgpOwor
ICAgICAgICBtX21hdHJpeC0+dmFsdWUoKS5za2V3WShhbmdsZSk7CisgICAgfQorCisgICAgU3Ry
aW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXhGb3JUcmFuc2Zyb21UeXBlKG1f
dHlwZSkpOworICAgICAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgICAgICBjYXNlIFNWR19UUkFO
U0ZPUk1fVU5LTk9XTjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNWR19UUkFO
U0ZPUk1fTUFUUklYOgorICAgICAgICAgICAgYXBwZW5kTWF0cml4KGJ1aWxkZXIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU6CisgICAg
ICAgICAgICBhcHBlbmRUcmFuc2xhdGUoYnVpbGRlcik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NDQUxFOgorICAgICAgICAgICAgYXBwZW5kU2NhbGUo
YnVpbGRlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTVkdfVFJBTlNGT1JN
X1JPVEFURToKKyAgICAgICAgICAgIGFwcGVuZFJvdGF0ZShidWlsZGVyKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1g6CisgICAgICAgICAgICBh
cHBlbmRTa2V3WChidWlsZGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNW
R19UUkFOU0ZPUk1fU0tFV1k6CisgICAgICAgICAgICBhcHBlbmRTa2V3WShidWlsZGVyKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBwcmVmaXhGb3JUcmFuc2Zyb21UeXBl
KFNWR1RyYW5zZm9ybVR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgewor
ICAgICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKKyAgICAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOworICAgICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fTUFUUklYOgorICAgICAg
ICAgICAgcmV0dXJuICJtYXRyaXgoIl9zOworICAgICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fVFJB
TlNMQVRFOgorICAgICAgICAgICAgcmV0dXJuICJ0cmFuc2xhdGUoIl9zOworICAgICAgICBjYXNl
IFNWR19UUkFOU0ZPUk1fU0NBTEU6CisgICAgICAgICAgICByZXR1cm4gInNjYWxlKCJfczsKKyAg
ICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1JPVEFURToKKyAgICAgICAgICAgIHJldHVybiAicm90
YXRlKCJfczsKKyAgICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NLRVdYOgorICAgICAgICAgICAg
cmV0dXJuICJza2V3WCgiX3M7CisgICAgICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWToKKyAg
ICAgICAgICAgIHJldHVybiAic2tld1koIl9zOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdUcmFuc2Zvcm1WYWx1
ZSYsIGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJik7CisgICAgdm9pZCBhcHBlbmROdW1iZXJzKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CisgICAgeworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnKScpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE51bWJlciwgdHlwZW5hbWUu
Li4gTnVtYmVycz4KKyAgICB2b2lkIGFwcGVuZE51bWJlcnMoU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgTnVtYmVyIG51bWJlciwgTnVtYmVycy4uLiBudW1iZXJzKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKGJ1aWxkZXIubGVuZ3RoKCkgJiYgYnVpbGRlcltidWlsZGVyLmxlbmd0aCgpIC0gMV0g
IT0gJygnKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmROdW1iZXIobnVtYmVyKTsKKyAgICAgICAgYXBwZW5kTnVtYmVycyhidWlsZGVyLCBu
dW1iZXJzLi4uKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZE1hdHJpeChTdHJpbmdCdWlsZGVy
JiBidWlsZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgYXBwZW5kTnVtYmVycyhidWlsZGVyLCBt
X21hdHJpeC0+YSgpLCBtX21hdHJpeC0+YigpLCBtX21hdHJpeC0+YygpLCBtX21hdHJpeC0+ZCgp
LCBtX21hdHJpeC0+ZSgpLCBtX21hdHJpeC0+ZigpKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVu
ZFRyYW5zbGF0ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
YXBwZW5kTnVtYmVycyhidWlsZGVyLCBtX21hdHJpeC0+ZSgpLCBtX21hdHJpeC0+ZigpKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFwcGVuZFNjYWxlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0
CisgICAgeworICAgICAgICBhcHBlbmROdW1iZXJzKGJ1aWxkZXIsIG1fbWF0cml4LT52YWx1ZSgp
LnhTY2FsZSgpLCBtX21hdHJpeC0+dmFsdWUoKS55U2NhbGUoKSk7CisgICAgfQorCisgICAgdm9p
ZCBhcHBlbmRSb3RhdGUoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIGRvdWJsZSBhbmdsZUluUmFkID0gZGVnMnJhZChtX2FuZ2xlKTsKKyAgICAgICAgZG91Ymxl
IGNvc0FuZ2xlID0gc3RkOjpjb3MoYW5nbGVJblJhZCk7CisgICAgICAgIGRvdWJsZSBzaW5Bbmds
ZSA9IHN0ZDo6c2luKGFuZ2xlSW5SYWQpOworCisgICAgICAgIGZsb2F0IGN4ID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChjb3NBbmdsZSAhPSAxID8gKG1fbWF0cml4LT5lKCkgKiAoMSAtIGNvc0Fu
Z2xlKSAtIG1fbWF0cml4LT5mKCkgKiBzaW5BbmdsZSkgLyAoMSAtIGNvc0FuZ2xlKSAvIDIgOiAw
KTsKKyAgICAgICAgZmxvYXQgY3kgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvc0FuZ2xlICE9
IDEgPyAobV9tYXRyaXgtPmUoKSAqIHNpbkFuZ2xlIC8gKDEgLSBjb3NBbmdsZSkgKyBtX21hdHJp
eC0+ZigpKSAvIDIgOiAwKTsKKworICAgICAgICBpZiAoY3ggfHwgY3kpCisgICAgICAgICAgICBh
cHBlbmROdW1iZXJzKGJ1aWxkZXIsIG1fYW5nbGUsIGN4LCBjeSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGFwcGVuZE51bWJlcnMoYnVpbGRlciwgbV9hbmdsZSk7CisgICAgfQorCisgICAg
dm9pZCBhcHBlbmRTa2V3WChTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgYXBwZW5kTnVtYmVycyhidWlsZGVyLCBtX2FuZ2xlKTsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZFNrZXdZKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBhcHBlbmROdW1iZXJzKGJ1aWxkZXIsIG1fYW5nbGUpOworICAgIH0KIAogICAgIFNWR1RyYW5z
Zm9ybVR5cGUgbV90eXBlIHsgU1ZHX1RSQU5TRk9STV9VTktOT1dOIH07CisgICAgUmVmPFNWR01h
dHJpeD4gbV9tYXRyaXg7CiAgICAgZmxvYXQgbV9hbmdsZSB7IDAgfTsKLSAgICBGbG9hdFBvaW50
IG1fY2VudGVyOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX21hdHJpeDsKKyAgICBGbG9hdFBvaW50
IG1fcm90YXRpb25DZW50ZXI7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNW
R1RyYW5zZm9ybVZhbHVlJiBhLCBjb25zdCBTVkdUcmFuc2Zvcm1WYWx1ZSYgYikKLXsKLSAgICBy
ZXR1cm4gYS5tX3R5cGUgPT0gYi5tX3R5cGUgJiYgYS5tX2FuZ2xlID09IGIubV9hbmdsZSAmJiBh
Lm1fbWF0cml4ID09IGIubV9tYXRyaXg7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgU1ZHVHJhbnNmb3JtVmFsdWUmIGEsIGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJiBiKQotewot
ICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAJKHJldmlzaW9uIDI0MzM4MykK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNW
R1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0NCw3ICsxNDMsNyBAQCBzdGF0aWMgY29uc3Qg
VUNoYXIgdHJhbnNsYXRlRGVzY1tdID0gIHsnCiBzdGF0aWMgY29uc3QgVUNoYXIgcm90YXRlRGVz
Y1tdID0gIHsncicsICdvJywgJ3QnLCAnYScsICd0JywgJ2UnfTsKIHN0YXRpYyBjb25zdCBVQ2hh
ciBtYXRyaXhEZXNjW10gPSAgeydtJywgJ2EnLCAndCcsICdyJywgJ2knLCAneCd9OwogCi1zdGF0
aWMgaW5saW5lIGJvb2wgcGFyc2VBbmRTa2lwVHlwZShjb25zdCBVQ2hhciomIGN1cnJUcmFuc2Zv
cm0sIGNvbnN0IFVDaGFyKiBlbmQsIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBl
JiB0eXBlKQorYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZUFuZFNraXBUeXBlKGNvbnN0IFVD
aGFyKiYgY3VyclRyYW5zZm9ybSwgY29uc3QgVUNoYXIqIGVuZCwgU1ZHVHJhbnNmb3JtVmFsdWU6
OlNWR1RyYW5zZm9ybVR5cGUmIHR5cGUpCiB7CiAgICAgaWYgKGN1cnJUcmFuc2Zvcm0gPj0gZW5k
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzksMzQgKzE3OCw0IEBAIFNWR1RyYW5zZm9y
bVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlIFNWR1QKICAgICByZXR1cm4gdHlwZTsKIH0KIAotYm9v
bCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzJiBsaXN0LCBjb25zdCBVQ2hhciomIGN1cnJUcmFuc2Zvcm0sIGNvbnN0IFVDaGFy
KiBlbmQsIFRyYW5zZm9ybVBhcnNpbmdNb2RlIG1vZGUpCi17Ci0gICAgaWYgKG1vZGUgPT0gQ2xl
YXJMaXN0KQotICAgICAgICBsaXN0LmNsZWFyKCk7Ci0KLSAgICBib29sIGRlbGltUGFyc2VkID0g
ZmFsc2U7Ci0gICAgd2hpbGUgKGN1cnJUcmFuc2Zvcm0gPCBlbmQpIHsKLSAgICAgICAgZGVsaW1Q
YXJzZWQgPSBmYWxzZTsKLSAgICAgICAgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5
cGUgdHlwZSA9IFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX1VOS05PV047Ci0gICAg
ICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXJyVHJhbnNmb3JtLCBlbmQpOwotCi0gICAgICAg
IGlmICghcGFyc2VBbmRTa2lwVHlwZShjdXJyVHJhbnNmb3JtLCBlbmQsIHR5cGUpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIFNWR1RyYW5zZm9ybVZhbHVlIHRyYW5zZm9y
bTsKLSAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9ybVZhbHVlKHR5cGUsIGN1cnJUcmFuc2Zvcm0s
IGVuZCwgdHJhbnNmb3JtKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBs
aXN0LmFwcGVuZCh0cmFuc2Zvcm0pOwotICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3Vy
clRyYW5zZm9ybSwgZW5kKTsKLSAgICAgICAgaWYgKGN1cnJUcmFuc2Zvcm0gPCBlbmQgJiYgKmN1
cnJUcmFuc2Zvcm0gPT0gJywnKSB7Ci0gICAgICAgICAgICBkZWxpbVBhcnNlZCA9IHRydWU7Ci0g
ICAgICAgICAgICArK2N1cnJUcmFuc2Zvcm07Ci0gICAgICAgIH0KLSAgICAgICAgc2tpcE9wdGlv
bmFsU1ZHU3BhY2VzKGN1cnJUcmFuc2Zvcm0sIGVuZCk7Ci0gICAgfQotCi0gICAgcmV0dXJuICFk
ZWxpbVBhcnNlZDsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bWFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJs
ZS5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsMTQgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLWNsYXNzIFNWR1RyYW5zZm9ybUxp
c3RWYWx1ZXM7CiAKIGNsYXNzIFNWR1RyYW5zZm9ybWFibGUgOiBwdWJsaWMgU1ZHTG9jYXRhYmxl
IHsKIHB1YmxpYzoKLSAgICBlbnVtIFRyYW5zZm9ybVBhcnNpbmdNb2RlIHsKLSAgICAgICAgQ2xl
YXJMaXN0LAotICAgICAgICBEb05vdENsZWFyTGlzdAotICAgIH07Ci0KICAgICB2aXJ0dWFsIH5T
VkdUcmFuc2Zvcm1hYmxlKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybUF0dHJp
YnV0ZShTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiwgY29uc3QgVUNoYXIqJiBwdHIsIGNvbnN0IFVD
aGFyKiBlbmQsIFRyYW5zZm9ybVBhcnNpbmdNb2RlID0gQ2xlYXJMaXN0KTsKICAgICBzdGF0aWMg
Ym9vbCBwYXJzZVRyYW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1U
eXBlLCBjb25zdCBVQ2hhciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgU1ZHVHJhbnNmb3JtVmFs
dWUmKTsKICAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgcGFy
c2VUcmFuc2Zvcm1UeXBlKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBib29sIHBhcnNlQW5k
U2tpcFR5cGUoY29uc3QgVUNoYXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciogZW5kLCBT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSYpOwogCiAgICAgQWZmaW5lVHJhbnNm
b3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsgfQogICAg
IHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdCA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIgogCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4K
IApAQCAtNDUsOCArNDQsNyBAQCB1c2luZyBTVkdWYWx1ZVZhcmlhbnQgPSBWYXJpYW50PAogICAg
IHVuc2lnbmVkKiwKICAgICBTVkdMZW5ndGhWYWx1ZSosCiAgICAgU1ZHTGVuZ3RoTGlzdFZhbHVl
cyosCi0gICAgU1ZHUGF0aEJ5dGVTdHJlYW0qLAotICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMq
CisgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qCiA+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHJldmlzaW9uIDI0MzM4MykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcg
KzIyLDYgQEAKICNpbmNsdWRlICJTVkdWaWV3U3BlYy5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94LmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKQEAgLTM2LDE2ICszNSwxMiBAQCBTVkdWaWV3U3BlYzo6U1ZHVmlld1NwZWMoU1ZHRWxl
bWVudCYgY29uCiAgICAgOiBTVkdGaXRUb1ZpZXdCb3goJmNvbnRleHRFbGVtZW50LCBTVkdQcm9w
ZXJ0eUFjY2Vzczo6UmVhZE9ubHkpCiAgICAgLCBtX2NvbnRleHRFbGVtZW50KG1ha2VXZWFrUHRy
KGNvbnRleHRFbGVtZW50KSkKICAgICAsIG1fYXR0cmlidXRlT3duZXJQcm94eSgqdGhpcywgY29u
dGV4dEVsZW1lbnQpCisgICAgLCBtX3RyYW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGUo
JmNvbnRleHRFbGVtZW50LCBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZE9ubHkpKQogewotICAgIHJl
Z2lzdGVyQXR0cmlidXRlcygpOwotfQotCi12b2lkIFNWR1ZpZXdTcGVjOjpyZWdpc3RlckF0dHJp
YnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAg
ICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5
LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCAmU1ZHVmlld1NwZWM6
Om1fdHJhbnNmb3JtPigpOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCAmU1ZHVmlld1NwZWM6
Om1fdHJhbnNmb3JtPigpOworICAgIH0pOwogfQogCiBTVkdFbGVtZW50KiBTVkdWaWV3U3BlYzo6
dmlld1RhcmdldCgpIGNvbnN0CkBAIC01OCwxOCArNTMsMTAgQEAgU1ZHRWxlbWVudCogU1ZHVmll
d1NwZWM6OnZpZXdUYXJnZXQoKSBjbwogICAgIHJldHVybiBkb3duY2FzdDxTVkdFbGVtZW50Pihl
bGVtZW50KTsKIH0KIAotUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3Q+IFNWR1ZpZXdTcGVjOjp0cmFu
c2Zvcm0oKQotewotICAgIGlmICghbV9jb250ZXh0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgLy8gUmV0dXJuIHRoZSBhbmltVmFsIGhlcmUsIGFzIGl0cyByZWFkb25seSBi
eSBkZWZhdWx0IC0gd2hpY2ggaXMgZXhhY3RseSB3aGF0IHdlIHdhbnQgaGVyZS4KLSAgICByZXR1
cm4gbV90cmFuc2Zvcm0uYW5pbWF0ZWRQcm9wZXJ0eShtX2F0dHJpYnV0ZU93bmVyUHJveHkpLT5h
bmltVmFsKCk7Ci19Ci0KIHZvaWQgU1ZHVmlld1NwZWM6OnJlc2V0KCkKIHsKICAgICBtX3ZpZXdU
YXJnZXRTdHJpbmcgPSBlbXB0eVN0cmluZygpOwotICAgIG1fdHJhbnNmb3JtLnJlc2V0VmFsdWUo
KTsKKyAgICBtX3RyYW5zZm9ybS0+Y2xlYXJJdGVtcygpOwogICAgIFNWR0ZpdFRvVmlld0JveDo6
cmVzZXQoKTsKICAgICBTVkdab29tQW5kUGFuOjpyZXNldCgpOwogfQpAQCAtMTUyLDcgKzEzOSw3
IEBAIGJvb2wgU1ZHVmlld1NwZWM6OnBhcnNlVmlld1NwZWMoY29uc3QgU3QKICAgICAgICAgICAg
IGlmIChjdXJyVmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0gJygnKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGN1cnJWaWV3U3BlYysrOwotICAg
ICAgICAgICAgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUobV90cmFu
c2Zvcm0udmFsdWUoKSwgY3VyclZpZXdTcGVjLCBlbmQsIFNWR1RyYW5zZm9ybWFibGU6OkRvTm90
Q2xlYXJMaXN0KTsKKyAgICAgICAgICAgIG1fdHJhbnNmb3JtLT5wYXJzZShjdXJyVmlld1NwZWMs
IGVuZCk7CiAgICAgICAgICAgICBpZiAoY3VyclZpZXdTcGVjID49IGVuZCB8fCAqY3VyclZpZXdT
cGVjICE9ICcpJykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBj
dXJyVmlld1NwZWMrKzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCShyZXZpc2lvbiAy
NDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNyArMjEsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdGaXRUb1Zp
ZXdCb3guaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSAi
U1ZHWm9vbUFuZFBhbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw5ICs0Miw4IEBA
IHB1YmxpYzoKICAgICBTVkdFbGVtZW50KiB2aWV3VGFyZ2V0KCkgY29uc3Q7CiAgICAgY29uc3Qg
U3RyaW5nJiB2aWV3VGFyZ2V0U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV92aWV3VGFyZ2V0U3Ry
aW5nOyB9CiAKLSAgICBTdHJpbmcgdHJhbnNmb3JtU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV90
cmFuc2Zvcm0udG9TdHJpbmcoKTsgfQotICAgIFJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiB0cmFu
c2Zvcm0oKTsKLSAgICBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIHRyYW5zZm9ybVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV90cmFuc2Zvcm0udmFsdWUoKTsgfQorICAgIFN0cmluZyB0cmFuc2Zvcm1T
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybS0+dmFsdWVBc1N0cmluZygpOyB9Cisg
ICAgUmVmPFNWR1RyYW5zZm9ybUxpc3Q+JiB0cmFuc2Zvcm0oKSB7IHJldHVybiBtX3RyYW5zZm9y
bTsgfQogCiAgICAgY29uc3QgV2Vha1B0cjxTVkdFbGVtZW50PiYgY29udGV4dEVsZW1lbnRDb25j
dXJyZW50bHkoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRFbGVtZW50OyB9CiAKQEAgLTUzLDE3
ICs1MSwxMiBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNWR1ZpZXdTcGVjKFNWR0VsZW1lbnQm
KTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclBy
b3h5SW1wbDxTVkdWaWV3U3BlYywgU1ZHRml0VG9WaWV3Qm94PjsKLSAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpB
dHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVP
d25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBB
dHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9Ci0K
ICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNW
R1ZpZXdTcGVjLCBTVkdGaXRUb1ZpZXdCb3g+OwogCiAgICAgV2Vha1B0cjxTVkdFbGVtZW50PiBt
X2NvbnRleHRFbGVtZW50OwogICAgIFN0cmluZyBtX3ZpZXdUYXJnZXRTdHJpbmc7CiAgICAgQXR0
cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHk7Ci0gICAgU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0QXR0cmlidXRlIG1fdHJhbnNmb3JtOworICAgIFJlZjxTVkdUcmFuc2Zvcm1M
aXN0PiBtX3RyYW5zZm9ybTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3Nvcklt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMjA4LDQgKzIwOCwyNiBAQCBwcml2YXRlOgogICAgIH0KIH07CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIE93bmVyVHlwZT4KK2NsYXNzIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEFjY2Vzc29yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvcjxP
d25lclR5cGUsIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4geworICAgIHVzaW5nIEJhc2UgPSBT
VkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3Q+OworICAgIHVzaW5nIEJhc2U6OnByb3BlcnR5OworCitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBP
d25lclR5cGU6Oipwcm9wZXJ0eT4KKyAgICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJl
ckFjY2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRvbigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRl
IHNpbmdsZXRvbjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBY2Nlc3NvciwgcHJvcGVydHk+KCk7
IH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+
IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01v
ZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBjb25zdCBmaW5hbAorICAg
IHsKKyAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjcmVh
dGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9k
ZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRB
bmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJiBh
bmltYXRvcikgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yJj4oYW5pbWF0b3IpLmFwcGVuZEFuaW1hdGVkSW5zdGFu
Y2UocHJvcGVydHkob3duZXIpKTsKKyAgICB9Cit9OworCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9ySW1wbC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NCw0ICsxODQsMjEgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCitjbGFzcyBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFBy
b3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdBbmltYXRpb25UcmFu
c2Zvcm1MaXN0RnVuY3Rpb24+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCwgU1ZHQW5pbWF0aW9uVHJhbnNmb3Jt
TGlzdEZ1bmN0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCitwdWJsaWM6CisgICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlv
bk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9h
dCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAgICB7CisgICAgICAg
IG1fZnVuY3Rpb24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291
bnQsIG1fYW5pbWF0ZWQtPmFuaW1WYWwoKSk7CisgICAgfQorfTsKKwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
SW1wbC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMiArMzEs
MTIgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZFByaW1pdGl2ZVByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUxpc3QuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRl
ICJTVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdOdW1iZXJMaXN0Lmgi
CiAjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RS
YXRpby5oIgogI2luY2x1ZGUgIlNWR1JlY3QuaCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsNSArNTAsNiBAQCB1c2luZyBTVkdB
bmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBTCiAKIHVzaW5nIFNWR0FuaW1hdGVkTnVtYmVy
TGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0PFNWR051bWJlckxpc3Q+OwogdXNpbmcgU1ZH
QW5pbWF0ZWRQb2ludExpc3QgPSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdDxTVkdQb2ludExpc3Q+
OwordXNpbmcgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxp
c3Q8U1ZHVHJhbnNmb3JtTGlzdD47CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCi0j
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZiBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4g
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVy
dHlUZWFyT2ZmPiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJv
cGVydHlUeXBlLCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiB2YWx1ZXMpCi0gICAgewotICAgICAg
ICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYoY29udGV4dEVsZW1lbnQsIGF0
dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCB2YWx1ZXMpKTsKLSAgICB9Ci0KLSAg
ICBSZWY8TGlzdFByb3BlcnR5VGVhck9mZj4gYmFzZVZhbCgpIGZpbmFsCi0gICAgewotICAgICAg
ICBpZiAobV9iYXNlVmFsKQotICAgICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxMaXN0UHJv
cGVydHlUZWFyT2ZmKj4obV9iYXNlVmFsLmdldCgpKTsKLQotICAgICAgICBhdXRvIHByb3BlcnR5
ID0gU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKCp0aGlzLCBCYXNlVmFsUm9sZSwgbV92YWx1ZXMs
IG1fd3JhcHBlcnMpOwotICAgICAgICBtX2Jhc2VWYWwgPSBtYWtlV2Vha1B0cihwcm9wZXJ0eS5n
ZXQoKSk7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0eTsKLSAgICB9Ci0KLSAgICBSZWY8TGlzdFBy
b3BlcnR5VGVhck9mZj4gYW5pbVZhbCgpIGZpbmFsCi0gICAgewotICAgICAgICBpZiAobV9hbmlt
VmFsKQotICAgICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxMaXN0UHJvcGVydHlUZWFyT2Zm
Kj4obV9hbmltVmFsLmdldCgpKTsKLQotICAgICAgICBhdXRvIHByb3BlcnR5ID0gU1ZHVHJhbnNm
b3JtTGlzdDo6Y3JlYXRlKCp0aGlzLCBBbmltVmFsUm9sZSwgbV92YWx1ZXMsIG1fd3JhcHBlcnMp
OwotICAgICAgICBtX2FuaW1WYWwgPSBtYWtlV2Vha1B0cihwcm9wZXJ0eS5nZXQoKSk7Ci0gICAg
ICAgIHJldHVybiBwcm9wZXJ0eTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBh
bmltYXRlZFByb3BlcnR5VHlwZSwgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyYgdmFsdWVzKQotICAg
ICAgICA6IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0VmFs
dWVzPihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUs
IHZhbHVlcykKLSAgICB7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmgKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25B
ZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaAkocmV2
aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDEwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgogI2luY2x1ZGUgIlNWR1Bv
aW50TGlzdC5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybURpc3RhbmNlLmgiCisjaW5jbHVkZSAi
U1ZHVHJhbnNmb3JtTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzNSw0ICsx
MzgsNzMgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCitjbGFzcyBTVkdBbmltYXRpb25UcmFuc2Zv
cm1MaXN0RnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb248
U1ZHVHJhbnNmb3JtTGlzdD4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRp
b25BZGRpdGl2ZUxpc3RGdW5jdGlvbjxTVkdUcmFuc2Zvcm1MaXN0PjsKKyAgICB1c2luZyBCYXNl
OjpCYXNlOworCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0
IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IG1fZnJvbS0+cGFyc2UoZnJvbSk7CisgICAgICAgIG1fdG8tPnBhcnNlKHRvKTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5k
T2ZEdXJhdGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fdG9BdEVuZE9mRHVyYXRpb24t
PnBhcnNlKHRvQXRFbmRPZkR1cmF0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHByb2dyZXNzKFNW
R0VsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgUmVmUHRy
PFNWR1RyYW5zZm9ybUxpc3Q+JiBhbmltYXRlZCkKKyAgICB7CisgICAgICAgIC8vIFBhc3MgZmFs
c2UgdG8gJ3Jlc2l6ZUFuaW1hdGVkSWZOZWVkZWQnLCBhcyB0aGUgc3BlY2lhbCBwb3N0LW11bHRp
cGxpY2F0aW9uIGJlaGF2aW9yIG9mIDxhbmltYXRlVHJhbnNmb3JtPiBuZWVkcyB0byBiZSByZXNw
ZWN0ZWQgYmVsb3cuCisgICAgICAgIGlmICghYWRqdXN0QW5pbWF0ZWRMaXN0KG1fYW5pbWF0aW9u
TW9kZSwgcGVyY2VudGFnZSwgYW5pbWF0ZWQsIGZhbHNlKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAvLyBTcGVjOiBUbyBhbmltYXRpb25zIHByb3ZpZGUgc3BlY2lmaWMgZnVuY3Rp
b25hbGl0eSB0byBnZXQgYSBzbW9vdGggY2hhbmdlIGZyb20gdGhlIHVuZGVybHlpbmcKKyAgICAg
ICAgLy8gdmFsdWUgdG8gdGhlIMOiwoDCmHRvw6LCgMKZIGF0dHJpYnV0ZSB2YWx1ZSwgd2hpY2gg
Y29uZmxpY3RzIG1hdGhlbWF0aWNhbGx5IHdpdGggdGhlIHJlcXVpcmVtZW50IGZvcgorICAgICAg
ICAvLyBhZGRpdGl2ZSB0cmFuc2Zvcm0gYW5pbWF0aW9ucyB0byBiZSBwb3N0LW11bHRpcGxpZWQu
IEFzIGEgY29uc2VxdWVuY2UsIGluIFNWRyAxLjEgdGhlIGJlaGF2aW9yCisgICAgICAgIC8vIG9m
IHRvIGFuaW1hdGlvbnMgZm9yIMOiwoDCmGFuaW1hdGVUcmFuc2Zvcm3DosKAwpkgaXMgdW5kZWZp
bmVkLgorICAgICAgICBjb25zdCBWZWN0b3I8UmVmPFNWR1RyYW5zZm9ybT4+JiBmcm9tSXRlbXMg
PSBtX2Zyb20tPml0ZW1zKCk7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWY8U1ZHVHJhbnNmb3Jt
Pj4mIHRvSXRlbXMgPSBtX3RvLT5pdGVtcygpOworICAgICAgICBjb25zdCBWZWN0b3I8UmVmPFNW
R1RyYW5zZm9ybT4+JiB0b0F0RW5kT2ZEdXJhdGlvbkl0ZW1zID0gdG9BdEVuZE9mRHVyYXRpb24o
KS0+aXRlbXMoKTsKKyAgICAgICAgVmVjdG9yPFJlZjxTVkdUcmFuc2Zvcm0+PiYgYW5pbWF0ZWRJ
dGVtcyA9IGFuaW1hdGVkLT5pdGVtcygpOworCisgICAgICAgIC8vIE5ldmVyIHJlc2l6ZSB0aGUg
YW5pbWF0ZWRMaXN0IHRvIHRoZSBtX3RvIHNpemUsIGluc3RlYWQgZWl0aGVyIGNsZWFyIHRoZSBs
aXN0CisgICAgICAgIC8vIG9yIGFwcGVuZCB0byBpdC4KKyAgICAgICAgaWYgKCFhbmltYXRlZEl0
ZW1zLmlzRW1wdHkoKSAmJiAoIW1faXNBZGRpdGl2ZSB8fCBtX2FuaW1hdGlvbk1vZGUgPT0gQW5p
bWF0aW9uTW9kZTo6VG8pKQorICAgICAgICAgICAgYW5pbWF0ZWRJdGVtcy5jbGVhcigpOworCisg
ICAgICAgIGF1dG8gZnJvbUl0ZW1zU2l6ZSA9IGZyb21JdGVtcy5zaXplKCk7CisKKyAgICAgICAg
c3RhdGljIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB6ZXJvc0FmZmluZVRyYW5zZm9ybSA9IHsgMCwg
MCwgMCwgMCwgMCwgMCB9OworICAgICAgICBjb25zdCBTVkdUcmFuc2Zvcm1WYWx1ZSYgdG8gPSB0
b0l0ZW1zWzBdLT52YWx1ZSgpOworICAgICAgICBjb25zdCBTVkdUcmFuc2Zvcm1WYWx1ZSB6ZXJv
c1RyYW5zZm9ybSA9IFNWR1RyYW5zZm9ybVZhbHVlKHRvLnR5cGUoKSwgemVyb3NBZmZpbmVUcmFu
c2Zvcm0pOworCisgICAgICAgIGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJiBmcm9tID0gZnJvbUl0
ZW1zU2l6ZSA/IGZyb21JdGVtc1swXS0+dmFsdWUoKSA6IHplcm9zVHJhbnNmb3JtOworICAgICAg
ICBTVkdUcmFuc2Zvcm1WYWx1ZSBjdXJyZW50ID0gU1ZHVHJhbnNmb3JtRGlzdGFuY2UoZnJvbSwg
dG8pLnNjYWxlZERpc3RhbmNlKHBlcmNlbnRhZ2UpLmFkZFRvU1ZHVHJhbnNmb3JtKGZyb20pOwor
CisgICAgICAgIGlmIChtX2lzQWNjdW11bGF0ZWQgJiYgcmVwZWF0Q291bnQpIHsKKyAgICAgICAg
ICAgIGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJiB0b0F0RW5kT2ZEdXJhdGlvbiA9IHRvQXRFbmRP
ZkR1cmF0aW9uSXRlbXMuc2l6ZSgpID8gdG9BdEVuZE9mRHVyYXRpb25JdGVtc1swXS0+dmFsdWUo
KSA6IHplcm9zVHJhbnNmb3JtOworICAgICAgICAgICAgYW5pbWF0ZWRJdGVtcy5hcHBlbmQoU1ZH
VHJhbnNmb3JtOjpjcmVhdGUoU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9ybXMo
Y3VycmVudCwgdG9BdEVuZE9mRHVyYXRpb24sIHJlcGVhdENvdW50KSkpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIGFuaW1hdGVkSXRlbXMuYXBwZW5kKFNWR1RyYW5zZm9ybTo6Y3JlYXRl
KGN1cnJlbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRGcm9tQW5kVG9WYWx1
ZXMoU1ZHRWxlbWVudCopIG92ZXJyaWRlCisgICAgeworICAgICAgICBjb25zdCBWZWN0b3I8UmVm
PFNWR1RyYW5zZm9ybT4+JiBmcm9tSXRlbXMgPSBtX2Zyb20tPml0ZW1zKCk7CisgICAgICAgIFZl
Y3RvcjxSZWY8U1ZHVHJhbnNmb3JtPj4mIHRvSXRlbXMgPSBtX3RvLT5pdGVtcygpOworCisgICAg
ICAgIGlmICghZnJvbUl0ZW1zLnNpemUoKSB8fCBmcm9tSXRlbXMuc2l6ZSgpICE9IHRvSXRlbXMu
c2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVChmcm9tSXRlbXMu
c2l6ZSgpID09IDEpOworICAgICAgICBjb25zdCBSZWY8U1ZHVHJhbnNmb3JtPiYgZnJvbSA9IGZy
b21JdGVtc1swXTsKKyAgICAgICAgUmVmPFNWR1RyYW5zZm9ybT4mIHRvID0gdG9JdGVtc1swXTsK
KworICAgICAgICB0by0+c2V0VmFsdWUoU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5z
Zm9ybXMoZnJvbS0+dmFsdWUoKSwgdG8tPnZhbHVlKCkpKTsKKyAgICB9Cit9OworCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJl
Z2lzdHJ5LmgJKHJldmlzaW9uIDI0MzM4MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYg
QEAKICNpbmNsdWRlICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3QuaCIKLSNpbmNs
dWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVB
Y2Nlc3Nvci5oIgogI2luY2x1ZGUgIlNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkuaCIKICNpbmNs
dWRlICJTVkdab29tQW5kUGFuVHlwZS5oIgpAQCAtNzAsMTIgKzY5LDYgQEAgcHVibGljOgogICAg
ICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdBbmltYXRlZExlbmd0aExpc3RBdHRyaWJ1dGVBY2Nl
c3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248YXR0cmlidXRlTmFtZSwgYXR0cmli
dXRlPigpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEF0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+Ci0gICAgdm9pZCByZWdpc3RlckF0
dHJpYnV0ZSgpCi0gICAgewotICAgICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0
b248YXR0cmlidXRlTmFtZSwgYXR0cmlidXRlPigpKTsKLSAgICB9Ci0KICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX21hcC5pc0VtcHR5KCk7IH0KIAogICAgIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWF0cml4VGVhck9mZi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01hdHJpeFRlYXJPZmYu
aAkocmV2aXNpb24gMjQzMzgzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
TWF0cml4VGVhck9mZi5oCShub25leGlzdGVudCkKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdNYXRyaXguaCIKLSNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTVkdNYXRy
aXhUZWFyT2ZmIGZpbmFsIDogcHVibGljIFNWR01hdHJpeCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxTVkdNYXRyaXhUZWFyT2ZmPiBjcmVhdGUoU1ZHVHJhbnNmb3JtJiBwYXJlbnQsIFNWR01h
dHJpeFZhbHVlJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsICZw
YXJlbnQucHJvcGVydHlSZWZlcmVuY2UoKS5zdmdNYXRyaXgoKSA9PSAmdmFsdWUpOwotICAgICAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgU1ZHTWF0cml4VGVhck9mZihwYXJlbnQpKTsK
LSAgICAgICAgcGFyZW50LmFkZENoaWxkKG1ha2VXZWFrUHRyKHJlc3VsdC5nZXQoKSkpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIFNWR01hdHJpeFZhbHVlJiBwcm9wZXJ0
eVJlZmVyZW5jZSgpIGZpbmFsIHsgcmV0dXJuIG1fcGFyZW50LT5wcm9wZXJ0eVJlZmVyZW5jZSgp
LnN2Z01hdHJpeCgpOyB9Ci0KLSAgICB2b2lkIHNldFZhbHVlKFNWR01hdHJpeFZhbHVlJiB2YWx1
ZSkgZmluYWwgeyBtX3BhcmVudC0+cHJvcGVydHlSZWZlcmVuY2UoKS5zZXRNYXRyaXgodmFsdWUp
OyB9Ci0KLSAgICB2b2lkIGNvbW1pdENoYW5nZSgpIGZpbmFsCi0gICAgewotICAgICAgICBtX3Bh
cmVudC0+cHJvcGVydHlSZWZlcmVuY2UoKS51cGRhdGVTVkdNYXRyaXgoKTsKLSAgICAgICAgbV9w
YXJlbnQtPmNvbW1pdENoYW5nZSgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTVkdNYXRyaXhU
ZWFyT2ZmKFNWR1RyYW5zZm9ybSYgcGFyZW50KQotICAgICAgICA6IFNWR01hdHJpeChudWxscHRy
KQotICAgICAgICAsIG1fcGFyZW50KCZwYXJlbnQpCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0
cjxTVkdUcmFuc2Zvcm0+IG1fcGFyZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWF0
cml4VGVhck9mZi5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29y
SW1wbC5oCShyZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw0ICs0MCwx
NCBAQCBwdWJsaWM6CiAgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3Nv
cjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0
b248U1ZHU3RyaW5nTGlzdEFjY2Vzc29yLCBwcm9wZXJ0eT4oKTsgfQogfTsKIAordGVtcGxhdGU8
dHlwZW5hbWUgT3duZXJUeXBlPgorY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdEFjY2Vzc29yIGZpbmFs
IDogcHVibGljIFNWR1Byb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdUcmFuc2Zvcm1MaXN0
PiB7CisgICAgdXNpbmcgQmFzZSA9IFNWR1Byb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdU
cmFuc2Zvcm1MaXN0PjsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdGVt
cGxhdGU8UmVmPFNWR1RyYW5zZm9ybUxpc3Q+IE93bmVyVHlwZTo6KnByb3BlcnR5PgorICAgIGNv
bnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYgc2luZ2xl
dG9uKCkgeyByZXR1cm4gQmFzZTo6dGVtcGxhdGUgc2luZ2xldG9uPFNWR1RyYW5zZm9ybUxpc3RB
Y2Nlc3NvciwgcHJvcGVydHk+KCk7IH0KK307CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCShy
ZXZpc2lvbiAyNDMzODMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksMTIgQEAgcHVi
bGljOgogICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR1N0cmluZ0xp
c3RBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOwog
ICAgIH0KIAorICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFs
aWZpZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1RyYW5zZm9ybUxpc3Q+IE93bmVyVHlw
ZTo6KnByb3BlcnR5PgorICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQorICAgIHsK
KyAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdUcmFuc2Zvcm1MaXN0
QWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPHByb3BlcnR5PigpKTsKKyAg
ICB9CisKICAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlm
aWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+IE93bmVyVHlw
ZTo6KnByb3BlcnR5PgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQogICAgIHsK
QEAgLTk2LDcgKzEwMiwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWdpc3RlclByb3Bl
cnR5KGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkU3RyaW5nQWNjZXNzb3I8T3duZXJUeXBlPjo6
dGVtcGxhdGUgc2luZ2xldG9uPHByb3BlcnR5PigpKTsKICAgICB9Ci0gICAgCisKKyAgICB0ZW1w
bGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJp
YnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+IE93bmVyVHlwZTo6KnByb3Bl
cnR5PgorICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAg
cmVnaXN0ZXJQcm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RB
Y2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAg
IH0KKwogICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZp
ZWROYW1lPiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4gT3duZXJUeXBl
OjoqcHJvcGVydHkxLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBPd25lclR5cGU6Oipwcm9wZXJ0
eTI+CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCiAgICAgewpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjQzMzgzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDMtMjIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdGhlIFNWRyB0ZWFyIG9mZiBvYmpl
Y3RzIGZvciBTVkdNYXRyaXgsIFNWR1RyYW5zZnJvbSwgU1ZHVHJhbnNmb3JtTGlzdCBhbmQgU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTYwODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHN2Zy9kb20vU1ZHVHJhbnNmb3JtTGlzdC1iYXNpY3MtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN2Zy9kb20vU1ZHVHJhbnNmb3JtTGlzdC1iYXNpY3MueGh0bWw6Cisg
ICAgICAgIFRoZXNlIGNoYW5nZXMgYXJlIHJlcXVpcmVkIGJlY2F1c2UgU1ZHVHJhbnNmcm9tTGlz
dCB3aWxsIGJlIGZvbGxvd2luZyB0aGUKKyAgICAgICAgU1ZHMiBzcGVjcyByZWdhcmRpbmcgYWRk
aW5nIG5ldyBpdGVtcyB0byB0aGUgbGlzdC4gCisKKyAgICAgICAgU2VlIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi9TVkcvdHlwZXMuaHRtbCNUZXJtTGlzdEludGVyZmFjZS4KKwogMjAxOS0wMy0yMiAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjQzMzU2LgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdUcmFu
c2Zvcm1MaXN0LWJhc2ljcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
c3ZnL2RvbS9TVkdUcmFuc2Zvcm1MaXN0LWJhc2ljcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0
MzM4MykKKysrIExheW91dFRlc3RzL3N2Zy9kb20vU1ZHVHJhbnNmb3JtTGlzdC1iYXNpY3MtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMSArMjcsMjUgQEAgUEFTUyBjaXJjbGUx
LnRyYW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZQogUEFTUyBjaXJjbGUxLnRyYW5zZm9ybS5iYXNl
VmFsLmluc2VydEl0ZW1CZWZvcmUoY2lyY2xlMSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
Tm90IGVub3VnaCBhcmd1bWVudHMuCiBQQVNTIGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuaW5z
ZXJ0SXRlbUJlZm9yZShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cy4KIFBBU1MgY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVtQmVm
b3JlKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSwgJ2FTdHJpbmcnKSBpcyBj
aXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkKK1BBU1MgZHVtcFRyYW5zZm9ybShj
aXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLnJlbW92ZUl0ZW0oMikpIGlzICJ0eXBlPVNWR19UUkFO
U0ZPUk1fVFJBTlNMQVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iCiBQQVNT
IGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyAyCiBQQVNTIGR1bXBU
cmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApKSBpcyAidHlwZT1T
VkdfVFJBTlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9WzEuMCAwLjAgMC4wIDEuMCAxMC4wIDEwLjBd
IgogUEFTUyBkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgx
KSkgaXMgInR5cGU9U1ZHX1RSQU5TRk9STV9TQ0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAw
LjAgMC4wXSIKIFBBU1MgY2lyY2xlMS5nZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScpIGlzICJ0cmFu
c2xhdGUoMTAgMTApIHNjYWxlKDIgMikiCiBQQVNTIGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwu
aW5zZXJ0SXRlbUJlZm9yZShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSksIGNp
cmNsZTEpIGlzIGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKQorUEFTUyBkdW1w
VHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwucmVtb3ZlSXRlbSgyKSkgaXMgInR5
cGU9U1ZHX1RSQU5TRk9STV9TQ0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAwLjAgMC4wXSIK
IFBBU1MgY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDIKIFBBU1Mg
ZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkpIGlzICJ0
eXBlPVNWR19UUkFOU0ZPUk1fU0NBTEUgbWF0cml4PVsyLjAgMC4wIDAuMCAyLjAgMC4wIDAuMF0i
CiBQQVNTIGR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEp
KSBpcyAidHlwZT1TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9WzEuMCAwLjAgMC4wIDEu
MCAxMC4wIDEwLjBdIgogUEFTUyBjaXJjbGUxLmdldEF0dHJpYnV0ZSgndHJhbnNmb3JtJykgaXMg
InNjYWxlKDIgMikgdHJhbnNsYXRlKDEwIDEwKSIKIFBBU1MgY2lyY2xlMS50cmFuc2Zvcm0uYmFz
ZVZhbC5pbnNlcnRJdGVtQmVmb3JlKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgx
KSwgbnVsbCkgaXMgY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApCitQQVNTIGR1
bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5yZW1vdmVJdGVtKDIpKSBpcyAi
dHlwZT1TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9WzEuMCAwLjAgMC4wIDEuMCAxMC4w
IDEwLjBdIgogUEFTUyBjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLm51bWJlck9mSXRlbXMgaXMg
MgogUEFTUyBkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgw
KSkgaXMgInR5cGU9U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUgbWF0cml4PVsxLjAgMC4wIDAuMCAx
LjAgMTAuMCAxMC4wXSIKIFBBU1MgZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNl
VmFsLmdldEl0ZW0oMSkpIGlzICJ0eXBlPVNWR19UUkFOU0ZPUk1fU0NBTEUgbWF0cml4PVsyLjAg
MC4wIDAuMCAyLjAgMC4wIDAuMF0iCiBQQVNTIGNpcmNsZTEuZ2V0QXR0cmlidXRlKCd0cmFuc2Zv
cm0nKSBpcyAidHJhbnNsYXRlKDEwIDEwKSBzY2FsZSgyIDIpIgogUEFTUyBjaXJjbGUxLnRyYW5z
Zm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUoY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5n
ZXRJdGVtKDEpLCAwKSBpcyBjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkKK1BB
U1MgZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLnJlbW92ZUl0ZW0oMikp
IGlzICJ0eXBlPVNWR19UUkFOU0ZPUk1fU0NBTEUgbWF0cml4PVsyLjAgMC4wIDAuMCAyLjAgMC4w
IDAuMF0iCiBQQVNTIGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyAy
CiBQQVNTIGR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDAp
KSBpcyAidHlwZT1TVkdfVFJBTlNGT1JNX1NDQUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAu
MCAwLjBdIgogUEFTUyBkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0
SXRlbSgxKSkgaXMgInR5cGU9U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUgbWF0cml4PVsxLjAgMC4w
IDAuMCAxLjAgMTAuMCAxMC4wXSIKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9kb20vU1ZHVHJhbnNm
b3JtTGlzdC1iYXNpY3MueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2RvbS9T
VkdUcmFuc2Zvcm1MaXN0LWJhc2ljcy54aHRtbAkocmV2aXNpb24gMjQzMzgzKQorKysgTGF5b3V0
VGVzdHMvc3ZnL2RvbS9TVkdUcmFuc2Zvcm1MaXN0LWJhc2ljcy54aHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNzQsMjQgKzc0LDI4IEBACiAgICAgc2hvdWxkVGhyb3coImNpcmNsZTEudHJhbnNmb3Jt
LmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZShudWxsKSIpOwogIAogICAgIHNob3VsZEJlKCJjaXJj
bGUxLnRyYW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUoY2lyY2xlMS50cmFuc2Zvcm0u
YmFzZVZhbC5nZXRJdGVtKDEpLCAnYVN0cmluZycpIiwgImNpcmNsZTEudHJhbnNmb3JtLmJhc2VW
YWwuZ2V0SXRlbSgwKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFRyYW5zZm9y
bShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLnJlbW92ZUl0ZW0oMikpIiwgInR5cGU9U1ZHX1RS
QU5TRk9STV9UUkFOU0xBVEUgbWF0cml4PVsxLjAgMC4wIDAuMCAxLjAgMTAuMCAxMC4wXSIpOwog
ICAgIHNob3VsZEJlKCJjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLm51bWJlck9mSXRlbXMiLCAi
MiIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRy
YW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkpIiwgInR5cGU9U1ZHX1RSQU5TRk9STV9UUkFOU0xB
VEUgbWF0cml4PVsxLjAgMC4wIDAuMCAxLjAgMTAuMCAxMC4wXSIpOwogICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0
ZW0oMSkpIiwgInR5cGU9U1ZHX1RSQU5TRk9STV9TQ0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIu
MCAwLjAgMC4wXSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2lyY2xlMS5nZXRBdHRy
aWJ1dGUoJ3RyYW5zZm9ybScpIiwgInRyYW5zbGF0ZSgxMCAxMCkgc2NhbGUoMiAyKSIpOwogCiAg
ICAgc2hvdWxkQmUoImNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZShj
aXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSksIGNpcmNsZTEpIiwgImNpcmNsZTEu
dHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLnJlbW92ZUl0ZW0oMikp
IiwgInR5cGU9U1ZHX1RSQU5TRk9STV9TQ0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAwLjAg
MC4wXSIpOwogICAgIHNob3VsZEJlKCJjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLm51bWJlck9m
SXRlbXMiLCAiMiIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFRyYW5zZm9ybShj
aXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkpIiwgInR5cGU9U1ZHX1RSQU5TRk9S
TV9TQ0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAwLjAgMC4wXSIpOwogICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdl
dEl0ZW0oMSkpIiwgInR5cGU9U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUgbWF0cml4PVsxLjAgMC4w
IDAuMCAxLjAgMTAuMCAxMC4wXSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY2lyY2xl
MS5nZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScpIiwgInNjYWxlKDIgMikgdHJhbnNsYXRlKDEwIDEw
KSIpOwogCiAgICAgc2hvdWxkQmUoImNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuaW5zZXJ0SXRl
bUJlZm9yZShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSksIG51bGwpIiwgImNp
cmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKSIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLnJlbW92ZUl0
ZW0oMikpIiwgInR5cGU9U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUgbWF0cml4PVsxLjAgMC4wIDAu
MCAxLjAgMTAuMCAxMC4wXSIpOwogICAgIHNob3VsZEJlKCJjaXJjbGUxLnRyYW5zZm9ybS5iYXNl
VmFsLm51bWJlck9mSXRlbXMiLCAiMiIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVt
cFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkpIiwgInR5cGU9
U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUgbWF0cml4PVsxLjAgMC4wIDAuMCAxLjAgMTAuMCAxMC4w
XSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRy
YW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSkpIiwgInR5cGU9U1ZHX1RSQU5TRk9STV9TQ0FMRSBt
YXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAwLjAgMC4wXSIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY2lyY2xlMS5nZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScpIiwgInRyYW5zbGF0ZSgxMCAx
MCkgc2NhbGUoMiAyKSIpOwogCiAgICAgc2hvdWxkQmUoImNpcmNsZTEudHJhbnNmb3JtLmJhc2VW
YWwuaW5zZXJ0SXRlbUJlZm9yZShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSks
IDApIiwgImNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKSIpOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFs
LnJlbW92ZUl0ZW0oMikpIiwgInR5cGU9U1ZHX1RSQU5TRk9STV9TQ0FMRSBtYXRyaXg9WzIuMCAw
LjAgMC4wIDIuMCAwLjAgMC4wXSIpOwogICAgIHNob3VsZEJlKCJjaXJjbGUxLnRyYW5zZm9ybS5i
YXNlVmFsLm51bWJlck9mSXRlbXMiLCAiMiIpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkpIiwgInR5
cGU9U1ZHX1RSQU5TRk9STV9TQ0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAwLjAgMC4wXSIp
OwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5z
Zm9ybS5iYXNlVmFsLmdldEl0ZW0oMSkpIiwgInR5cGU9U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUg
bWF0cml4PVsxLjAgMC4wIDAuMCAxLjAgMTAuMCAxMC4wXSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366429</attachid>
            <date>2019-04-01 15:15:35 -0700</date>
            <delta_ts>2019-04-01 17:31:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196086-20190401151535.patch</filename>
            <type>text/plain</type>
            <size>209779</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQwNjFhNzVjYzYxYTk4
OWM2ZjJiZDU5N2MyZWY5NjI5NmIwZjU5OC4uMjM0NGFhYTY0MTIzNTM4ZDUzOWI0MjY3OWM2ODdi
ZDFmYjdmYmFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MiBAQAorMjAxOS0wNC0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR01hdHJpeCwgU1ZHVHJhbnNmcm9tLCBT
VkdUcmFuc2Zvcm1MaXN0IGFuZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjA4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBJREwgY2hhbmdlczoKKwor
ICAgICAgICBTVkdUcmFuc2Zvcm0uaWRsOgorICAgICAgICAgICAgUmVtb3ZlIHRoZSBOZXdPYmpl
Y3QgcXVhbGlmaWVyIGZyb20gbWF0cml4IGF0dHJpYnV0ZS4gVGhpcyBtYXRjaGVzIAorICAgICAg
ICAgICAgdGhlIHNwZWNzOiBodHRwczovL3d3dy53My5vcmcvVFIvU1ZHMTEvY29vcmRzLmh0bWwj
SW50ZXJmYWNlU1ZHVHJhbnNmb3JtLgorICAgICAgICAgICAgU1ZHVHJhbnNmb3JtIHdpbGwgaW50
ZXJuYWxseSBob2xkIGFuIFNWR01hdHJpeC4gQSBjaGFuZ2UgaW4gdGhpcworICAgICAgICAgICAg
U1ZHTWF0cml4IHdpbGwgYWZmZWN0IHRoZSBjb250YWluZXIgU1ZHVHJhbnNmb3JtLgorCisgICAg
ICAgIFNWR1RyYW5zZm9ybUxpc3QuaWRsOgorICAgICAgICAgICAgUmVtb3ZlIHRoZSBOZXdPYmpl
Y3QgcXVhbGlmaWVyIGZyb20gY29uc29saWRhdGUoKSBtZXRob2QuIFRoaXMgbWF0Y2hlcworICAg
ICAgICAgICAgdGhlIHNwZWNzOgorICAgICAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL1NW
RzExL2Nvb3Jkcy5odG1sI19fc3ZnX19TVkdUcmFuc2Zvcm1MaXN0X19jb25zb2xpZGF0ZQorICAg
ICAgICAgICAgVGhlIG1ldGhvZCBjb25zb2xpZGF0ZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVu
Y2UgdG8gdGhlIGZpcnN0IGl0ZW0KKyAgICAgICAgICAgIGluIHRoZSBsaXN0IGFmdGVyIGNvbnNv
bGlkYXRpbmcgaXQuCisKKyAgICAgICAgQ29kZSBjaGFuZ2VzOgorCisgICAgICAgIC0tIFNWR01h
dHJpeCBpcyBub3cgYSBzdXBlcmNsYXNzIG9mIFNWR1ZhbHVlUHJvcGVydHk8QWZmaW5lVHJhbnNm
b3JtPi4KKyAgICAgICAgICAgTm8gbmVlZCBmb3IgU1ZHTWF0cml4VmFsdWUgc2luY2UgaXQgd2Fz
IHdyYXBwZXIgb2YgQWZmaW5lVHJhbnNmb3JtLgorCisgICAgICAgIC0tIFNWR1RyYW5zZm9ybVZh
bHVlIG5vdyBob2xkcyBhIFJlZjxTVkdNYXRyaXg+IG1lbWJlciBpbiBhZGRpdGlvbiB0byB0aGUK
KyAgICAgICAgICAgYW5nbGUgYW5kIHRoZSByb3RhdGlvbkNlbnRlci4gUmVmPFNWR01hdHJpeD4g
aXMgd2hhdCBTVkdUcmFuc2Zvcm0ubWF0cml4CisgICAgICAgICAgIHdpbGwgcmV0dXJuLiBTbyBh
IGNoYW5nZSBpbiB0aGlzIG1hdHJpeCB3aWxsIGNoYW5nZSB0aGUgb3duZXIgU1ZHVHJhbnNmb3Jt
LgorCisgICAgICAgIC0tIFNWR1RyYW5zZm9ybSBpcyBub3cgdGhlIG93bmVyIG9mIFNWR01hdHJp
eCB2aWEgaXRzIFNWR1RyYW5zZm9ybVZhbHVlLgorCisgICAgICAgIC0tIFNWR1RyYW5zZm9ybUxp
c3QgaXMgbm93IGEgc3VwZXJjbGFzcyBvZiBTVkdWYWx1ZVByb3BlcnR5TGlzdDxTVkdUcmFuc2Zv
cm0+LgorICAgICAgICAgICBJdCBpcyByZXNwb25zaWJsZSBmb3IgcGFyc2luZyBhIFN0cmluZyB0
byBpdGVtcyBvZiBTVkdUcmFuc2Zvcm0uCisKKyAgICAgICAgLS0gU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0IGlzIG5vdyBkZWZpbmVkIGFzIFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0PAorICAgICAg
ICAgICBTVkdUcmFuc2Zvcm1MaXN0Pi4KKworICAgICAgICBOb3RlIHRoZSBvd25lcnNoaXAgY2hh
aW4gb2YgdGhlc2Ugb2JqZWN0cyBpcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIFNWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdCBvd25zIHRoZSBTVkdUcmFuc2Zvcm1MaXN0IHZpYSBpdHMgYmFz
ZVZhbCAKKyAgICAgICAgICAgYW5kIGFuaW1WYWwgbWVtYmVycy4KKworICAgICAgICAtLSBTVkdU
cmFuc2Zvcm1MaXN0IG93bnMgU1ZHVHJhbnNmb3JtIHZpYSBpdHMgbGlzdCBvZiBpdGVtcworCisg
ICAgICAgIC0tIFNWR1RyYW5zZm9ybSBvd25zIFNWR01hdHJpeCB2aWEgaXRzIFNWR1RyYW5zZm9y
bVZhbHVlLgorCisgICAgICAgICAgIFNvIGEgY2hhbmdlIGluIFNWR01hdHJpeCB3aWxsIHByb3Bh
Z2F0ZSB0byB0aGUgb3duZXIgU1ZHRWxlbWVudCB0aHJvdWdoCisgICAgICAgICAgIHRoZSBmb2xs
b3dpbmcgb3duZXJzaGlwIGNoYWluOgorCisgICAgICAgICAgIFNWR01hdHJpeAorICAgICAgICAg
ICAgIHxfIFNWR1RyYW5zZnJvbQorICAgICAgICAgICAgICAgICAgfF8gU1ZHVHJhbnNmb3JtTGlz
dAorICAgICAgICAgICAgICAgICAgICAgICB8XyBTVkdBbWltYXRlZFRyYW5zZm9ybUxpc3QKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8XyBTVkdFbGVtZW50CisKKyAgICAgICAgVG8gZ2V0
IHRoZSBtZWNoYW5pY3Mgb2YgdGhpcyBjaGFuZ2UgcmlnaHQsIGEgbmV3IGFjY2Vzc29yLCBhIG5l
dyBhbmltYXRvcgorICAgICAgICBhbmQgYW5pbWF0aW9uIGZ1bmN0aW9ucyBhcmUgYWRkZWQgZm9y
IHRoZSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuCisKKyAgICAgICAgLS0gU1ZHVmlld1NwZWMg
dXNlZCB0byBob2xkIGFuIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEF0dHJpYnV0ZSBmb3IgdGhl
CisgICAgICAgIG1lbWJlciBtX3RyYW5zZm9ybSBhbHRob3VnaCB0aGlzIG1lbWJlciBzaG91bGQg
bm90IGJlIGFuaW1hdGVkLiBTZWUgdGhlCisgICAgICAgIGNvbW1lbnQgaW4gdGhlIG9sZCBTVkdW
aWV3U3BlYzo6dHJhbnNmb3JtKCkuIFRoaXMgaGFzIGJlZW4gY2hhbmdlZCBpbiB0aGlzCisgICAg
ICAgIHBhdGNoLiBTVkdWaWV3U3BlYyBub3cgaG9sZHMgUmVmPFNWR1RyYW5zZm9ybUxpc3Q+IHdo
aWNoIG1hdGNoZXMgdGhlIHNwZWNzOgorICAgICAgICBodHRwczovL3d3dy53My5vcmcvVFIvU1ZH
MTEvdHlwZXMuaHRtbCNJbnRlcmZhY2VTVkdWaWV3U3BlYy4KKworICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVFbGVtZW50QmFzZTo6YXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6Omhhc1ZhbGlkQXR0cmlidXRlVHlw
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1
bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVFbGVtZW50QmFzZTo6YW5pbWF0ZVJhbmdlU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmFuaW1hdGVSYW5nZVN0cmluZyBjb25zdCk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Lmg6CisgICAgICAgICAgICAg
ICAgVGhpcyBjaGFuZ2UgaXMgbmVlZGVkIGJlY2F1c2UgYW5pbWF0aW5nIHRoZSB0cmFuc2Zvcm0g
YXR0cmlidXRlIGNhbiBiZQorICAgICAgICB3cml0dGVuIGFzCisgICAgICAgICAgICA8YW5pbWF0
ZSAuLi4gZnJvbT0idHJhbnNsYXRlKDEwMCkiIHRvPSJ0cmFuc2xhdGUoMjAwKSIvPgorICAgICAg
ICBvcgorICAgICAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT0idHJhbnNsYXRlIiBmcm9t
PSIxMDAiIHRvPSIyMDAiLz4iCisgICAgICAgIFNvIHdlIG5lZWQgdG8gc3Vycm91bmQgdGhlIGFu
aW1hdGlvbiByYW5nZSBzdHJpbmcgd2l0aCB0aGUgdHlwZSBxdWFsaWZpZXIKKyAgICAgICAgZm9y
IGFuaW1hdGVUcmFuc2Zvcm0uCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
Lmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
aW9uRWxlbWVudDo6YWRqdXN0Rm9ySW5oZXJpdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25F
bGVtZW50OjphZGp1c3RGb3JJbmhlcml0YW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRpb25FbGVtZW50OjphZGp1c3RGcm9tVG9MaXN0VmFsdWVzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1lbnQ6OmFuaW1hdGVEaXNjcmV0ZVR5
cGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRvckZhY3RvcnkuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBzdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0
ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OlNW
R0dyYWRpZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6
cmVnaXN0ZXJBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRF
bGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OmdyYWRpZW50
VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6
Z3JhZGllbnRUcmFuc2Zvcm1BbmltYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVu
dEVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpTVkdHcmFw
aGljc0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50Ojphbmlt
YXRlZExvY2FsVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNz
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgVGhlcmUgaXMgb25lIGF0dHJp
YnV0ZSBmb3IgdGhpcyBlbGVtZW50IHdoaWNoIGlzICJTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciIK
KyAgICAgICAgU28gdGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayBmb3IgaXQgdHdpY2UuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6cmVnaXN0ZXJBdHRyaWJ1dGVzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnRyYW5zZm9ybUFuaW1hdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogc3ZnL1NWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250
cm9sbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXRyaXguaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R01hdHJpeDo6YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OnNldEEpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpiIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hdHJpeDo6c2V0Qik6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OmMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpzZXRDKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hdHJpeDo6ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OnNldEQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjplIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR01hdHJpeDo6c2V0RSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OmYgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpzZXRGKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR01hdHJpeDo6bXVsdGlwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0
cml4OjppbnZlcnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6dHJhbnNs
YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2NhbGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpzY2FsZU5vblVuaWZvcm0gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4Ojpyb3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hdHJpeDo6ZmxpcFggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4Ojpm
bGlwWSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OnNrZXdYIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2tld1kgY29uc3QpOgorICAgICAgICAqIHN2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxl
bWVudDo6U1ZHUGF0dGVybkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5F
bGVtZW50Ojpjb2xsZWN0UGF0dGVybkF0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0
ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnQ6Om1hdHJpeFRy
YW5zZm9ybSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRHcmFkaWVudEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm1G
cm9tTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnZpZXdCb3hUb1Zp
ZXdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSBj
b25zdCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL1NWR1RyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjp+U1ZHVHJhbnNmb3JtKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybTo6Y2xvbmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5z
Zm9ybTo6YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjptYXRyaXgpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpzZXRNYXRyaXgpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVHJhbnNmb3JtOjpzZXRUcmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VHJhbnNmb3JtOjpzZXRTY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm06OnNl
dFJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm06OnNldFNrZXdYKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybTo6c2V0U2tld1kpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zv
cm0uaWRsOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6CisgICAgICAgICogc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuaWRsOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFs
dWVzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5o
OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1WYWx1ZS5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVHJhbnNmb3JtVmFsdWU6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFu
c2Zvcm1WYWx1ZTo6bWF0cml4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9y
bVZhbHVlOjpyb3RhdGlvbkNlbnRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFu
c2Zvcm1WYWx1ZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zv
cm1WYWx1ZTo6c2V0TWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVl
OjptYXRyaXhEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6
OnRyYW5zbGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6
c2V0VHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjpzY2Fs
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6c2V0U2NhbGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OnNldFJvdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6c2V0U2tld1gpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OnNldFNrZXdZKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RyYW5zZm9ybVZhbHVlOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RyYW5zZm9ybVZhbHVlOjpwcmVmaXhGb3JUcmFuc2Zyb21UeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjphcHBlbmROdW1iZXJzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjphcHBlbmRNYXRyaXggY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OmFwcGVuZFRyYW5zbGF0ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6YXBwZW5kU2NhbGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OmFwcGVuZFJvdGF0ZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6YXBwZW5kU2tld1ggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OmFwcGVuZFNrZXdZIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjptYXRyaXgpOiBEZWxldGVk
LgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RyYW5zZm9ybWFibGU6OnBhcnNlQW5kU2tpcFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VBbmRTa2lwVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zv
cm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIFRoZSBj
b2RlIG9mIHRoaXMgZnVuY3Rpb24gd2FzIG1vdmVkIHRvIFNWR1RyYW5zZm9ybUxpc3Q6OnBhcnNl
KCkuCisKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5oOgorICAgICAgICBUaGVyZSBp
cyBubyBuZWVkIGZvciBlbnVtIFRyYW5zZm9ybVBhcnNpbmdNb2RlLiBJdCB3YXMgdXNlZCBieSAK
KyAgICAgICAgU1ZHVmlld1NwZWM6OnBhcnNlVmlld1NwZWMoKSB0byB0ZWxsIFNWR1RyYW5zZm9y
bWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKCkKKyAgICAgICAgbm90IHRvIGNsZWFyIHRo
ZSBsaXN0LiBTVkdUcmFuc2Zyb21MaXN0IG5vdyBoYXMgdHdvIHBhcnNlKCkgZnVuY3Rpb25zOgor
ICAgICAgICBvbmUgcHVibGljIGFuZCB0aGUgc2Vjb25kIGlzIHByaXZhdGUuIFRoZSBwdWJsaWMg
b25lIGNsZWFyIHRoZSBsaXN0CisgICAgICAgIGJlZm9yZSBwYXJzaW5nIHRoZSBpbnB1dCBTdHJp
bmcuIFRoZSBwcml2YXRlIG9uZSBqdXN0IGRvZXMgdGhlIHBhcnNpbmcuCisgICAgICAgIFNWR1Zp
ZXdTcGVjOjpwYXJzZVZpZXdTcGVjKCkgY2FsbHMgdGhlIHByaXZhdGUgb25jZSBzaW5jZSBpdCBp
cyBhIGZyaWVuZAorICAgICAgICBvZiBTVkdUcmFuc2Zyb21MaXN0LgorCisgICAgICAgICogc3Zn
L1NWR1ZhbHVlLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpTVkdWaWV3U3BlYyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdWaWV3U3BlYzo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6
OnBhcnNlVmlld1NwZWMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnJlZ2lzdGVy
QXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6dHJh
bnNmb3JtKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmg6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oOgor
ICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmg6CisgICAg
ICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFy
T2ZmLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25U
cmFuc2Zvcm1MaXN0RnVuY3Rpb246OnByb2dyZXNzKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmg6CisgICAgICAgICogc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVy
dGllcy9TVkdNYXRyaXhUZWFyT2ZmLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eSk6CisKIDIwMTktMDQtMDEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBTVkdNYXRyaXgu
SURMIG1ldGhvZHMgZG8gbm90IGNvbmZvcm0gdG8gdGhlIHNwZWNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IDUwNDM4YmJkYzZjNTdkNjE4MDkyMDg3ZmJiMTJhMjM1N2E1M2M2ZjYuLmVhMzhmZDMwM2M4YmYz
ODFhOWRjZmFmMTEyNWY3MWZlZDlhOGM2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMjI5LDggKzIy
MjksNiBAQCBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlLmNwcAogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAogc3ZnL1NWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50LmNwcAotc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKLXN2
Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHAKIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cAogc3ZnL1NWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCiBzdmcvU1ZHQXR0cmli
dXRlQW5pbWF0aW9uQ29udHJvbGxlckJhc2UuY3BwCkBAIC0yMjkxLDcgKzIyODksNiBAQCBzdmcv
U1ZHSEtlcm5FbGVtZW50LmNwcAogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKIHN2Zy9TVkdJbWFn
ZUxvYWRlci5jcHAKIHN2Zy9TVkdMYW5nU3BhY2UuY3BwCi1zdmcvU1ZHTGVnYWN5QXR0cmlidXRl
QW5pbWF0aW9uQ29udHJvbGxlci5jcHAKIHN2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcAogc3ZnL1NW
R0xlbmd0aFZhbHVlLmNwcAogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcApAQCAtMjMzOCwxMCArMjMz
NSw3IEBAIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5jcHAKIHN2Zy9TVkdUaXRsZUVsZW1lbnQuY3BwCiBzdmcvU1ZHVG9PVEZGb250Q29u
dmVyc2lvbi5jcHAKLXN2Zy9TVkdUcmFuc2Zvcm0uY3BwCiBzdmcvU1ZHVHJhbnNmb3JtRGlzdGFu
Y2UuY3BwCi1zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAKLXN2Zy9TVkdUcmFuc2Zvcm1W
YWx1ZS5jcHAKIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAogc3ZnL1NWR1VSSVJlZmVyZW5jZS5j
cHAKIHN2Zy9TVkdVbmtub3duRWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMzI2OWY0ZjY1MDg3NThkMjI1NzU1
ODgyNGJlMmFjMzJkOGViODM2Li43NjFjODIyN2JhZjBkZDRhZTQwOTY3ZTQxMTY0OGI0MzBkOWIz
ZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yNDEsNyArMjQxLDYgQEAKIAkJMDgxNjY4REExMjU2MDNENTAwNkYyNURFIC8q
IFNWR1RleHRMYXlvdXRFbmdpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4MTY2OEQ4MTI1NjAzRDUwMDZGMjVERSAvKiBTVkdUZXh0TGF5b3V0RW5n
aW5lLmggKi87IH07CiAJCTA4MUFBOERBMTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFy
ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
MUFBOEQ5MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCAqLzsgfTsKIAkJ
MDgxRUJGM0IwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUVCRjM5MEZEMzRGNDEwMERB
NzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggKi87IH07Ci0JCTA4MjUwOTM5MTI4QkQ0RDgwMEUy
RUQ4RSAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MjUwOTM4MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QuaCAqLzsgfTsKIAkJMDgzREFFQTcwRjAxQTdGQjAwMzQyNzU0
IC8qIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODNEQUVBMzBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmUuaCAqLzsgfTsKIAkJMDgzREFFQTkwRjAxQTdGQjAwMzQyNzU0
IC8qIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgzREFFQTUwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5oICovOyB9OwogCQkwODQ1NjgwODEyQjkwREE2MDA5NjBB
OUYgLyogRm9udE1ldHJpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4NDU2ODA3MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250TWV0cmljcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNTQsNyArMjUz
LDYgQEAKIAkJMDg1NEIwMjExMjU1RTRFNjAwQjlDREQwIC8qIFNWR0lubGluZVRleHRCb3guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NTRCMDBGMTI1
NUU0RTYwMEI5Q0REMCAvKiBTVkdJbmxpbmVUZXh0Qm94LmggKi87IH07CiAJCTA4NTRCMDIzMTI1
NUU0RTYwMEI5Q0REMCAvKiBTVkdSb290SW5saW5lQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODU0QjAxMTEyNTVFNEU2MDBCOUNERDAgLyogU1ZH
Um9vdElubGluZUJveC5oICovOyB9OwogCQkwODU0QjAyNTEyNTVFNEU2MDBCOUNERDAgLyogU1ZH
VGV4dFF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwODU0QjAxMzEyNTVFNEU2MDBCOUNERDAgLyogU1ZHVGV4dFF1ZXJ5LmggKi87IH07Ci0JCTA4
NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0
eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4NUExNTkyMTI4OUE4REQwMDI3MTBFMyAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9w
ZXJ0eVRlYXJPZmYuaCAqLzsgfTsKIAkJMDg1QjkyQkIwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1E
YXRhQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg1QjkyQjkwRUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCTA4NjQxRDQ4MTIxNDJGN0QwMDhERTlG
NiAvKiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg2NDFENDYxMjE0MkY3RDAwOERFOUY2IC8qIFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg2QkJEMEYxMzYwMzlDMjAwOEIxNUQ4IC8qIEdseXBo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODZCQkQw
RTEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE4NSw5ICsxMTgzLDYgQEAKIAkJNDM5MDQ2RUExMkRB
MjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2RDYxMkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVy
YXRvci5oICovOyB9OwogCQk0MzkwNDZFQzEyREEyNUU4MDBBRjgwQTkgLyogUmVuZGVyTWF0aE1M
VG9rZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
OTA0NkQ4MTJEQTI1RTgwMEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oICovOyB9OwogCQk0
MzkxNzZFMDEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTE3NkNDMTJEQTI1RTE3QkFGODBBMiAv
KiBNYXRoTUxTdHlsZS5oICovOyB9OwotCQk0MzlEMzM0MzEzQTY5MTFDMDBDMjBGNEYgLyogU1ZH
QW5pbWF0ZWRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi87IH07
Ci0JCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5RDMzNDEx
M0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi87IH07Ci0JCTQz
OUQzMzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQyMTNBNjkxMUMwMEMy
MEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAqLzsgfTsKIAkJNDNCODVFRDQxOENCRUM1MjAw
RTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0I4NUVE
MjE4Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlF
bGVtZW50TWFwLmNwcCAqLzsgfTsKIAkJNDNDMDkyQkMxMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRl
clNWR0ZvcmVpZ25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQzQzA5MkJBMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmggKi87IH07CiAJCTQzRURENjdGMUI0ODVEQkYwMDY0MEU3NSAvKiBDb21iaW5lZEZpbHRl
cnNBbHBoYWJldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDNFREQ2N0QxQjQ4NURCRjAwNjQwRTc1IC8qIENvbWJpbmVkRmlsdGVyc0FscGhhYmV0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU1NDcs
NyArNTU0Miw2IEBACiAJCTA4MUFBOEQ5MTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFy
ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRWxlbWVudFJhcmVE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUVCRjM4MEZEMzRGNDEwMERB
NzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNWR0ZpbHRlckJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODFFQkYzOTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdGaWx0ZXJCdWlsZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4MjUwOTM4MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4
M0RBRUEyMEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4M0RBRUEzMEYwMUE3
RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwODNEQUVBNDBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01NTcwLDcgKzU1NjQsNiBAQAogCQkwODU0QjAxMTEyNTVFNEU2MDBCOUNE
RDAgLyogU1ZHUm9vdElubGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdSb290SW5saW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NTRC
MDEyMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdUZXh0UXVlcnkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dFF1ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDg1NEIwMTMxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1RleHRRdWVyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0UXVlcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg1QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg1QjkyQjgwRUZERTczRDAwRTYxMjNDIC8qIEZv
cm1EYXRhQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
b3JtRGF0YUJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJC
OTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwODY0MUQ0NTEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VSZXNvdXJjZVN0
eWxlSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVy
SW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzUyNSw5ICs3NTE4LDYgQEAKIAkJNDM5MDQ2RDgxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRl
ck1hdGhNTFRva2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1h
dGhNTFRva2VuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTE3NkNCMTJEQTI1
RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNYXRoTUxTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzOTE3NkNDMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxTdHlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MzlEMzM0MDEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MzlEMzM0MTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDM5
RDMzNDIxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdG9yRmFjdG9yeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRvckZhY3RvcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDNCODVFRDAxOENCRUFDRTAwRTMxQUY0IC8qIG1ha2VTZWxlY3Rv
clBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAucHkgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5weXRob247IHBhdGggPSBtYWtlU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGli
aWxpdHlFbGVtZW50TWFwLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0I4NUVE
MjE4Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlF
bGVtZW50TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNlbGVj
dG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL1NlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxl
bWVudE1hcC5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQzQjg1
RUQzMThDQkVDNTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0
eUVsZW1lbnRNYXAuZ3BlcmYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU2VsZWN0b3JQc2V1ZG9D
bGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLmdwZXJmOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9TZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAu
Z3BlcmY7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC04NTAwLDcgKzg0
OTAsNiBAQAogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBR
dWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTU1MTM3QjJDMjAzNzlFNTUwMDAxMDA0QiAvKiBTVkdNYXJrZXJU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNYXJrZXJUeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NTEzN0IzNDIwM0NFQjcxMDAwMTAwNEIg
LyogU1ZHVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTUzNDZBRjAyMTE1MEZBRjAwNTlCQ0REIC8qIFNWR0F0dHJpYnV0ZU93
bmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRlT3duZXJQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTM0NkFGQTIxMTdGRkFGMDA1OUJDREQgLyogU1ZH
QXR0cmlidXRlT3duZXJQcm94eUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRlT3du
ZXJQcm94eUltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU0Njc1NzcxRkQx
RkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkyODMsNyArOTI3Miw2
IEBACiAJCTcxNTU2Q0I3MUY5RjA5RkMwMEU3OEQwOCAvKiBKU0tleWZyYW1lRWZmZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTS2V5ZnJhbWVFZmZlY3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE1NkJDOUYyMUNBMzUwNjAwNTM0Mzk3IC8qIEJhc2lj
RWZmZWN0VGltaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2ljRWZm
ZWN0VGltaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNTdFM0QxMURDMUVF
NEIwMDk0NTUwRSAvKiBzY3J1YmJpbmctc3VwcG9ydC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9ICJzY3J1YmJpbmctc3VwcG9ydC5qcyI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTcxNTdGMDYxMTUwQjY1NjQwMDZFQUFCRCAvKiBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzE1QUQ3MUQyMDUwNTEyNDAwRDU5MkRDIC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY2xhcmF0aXZlQW5pbWF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNUFENzFGMjA1MDUxMjQwMEQ1OTJEQyAvKiBEZWNs
YXJhdGl2ZUFuaW1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcxNURBNUQzMjAxQkI5MDIwMDJFRjJCMCAvKiBKU1dlYkFuaW1hdGlvbkN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkFuaW1hdGlvbkN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mzg1LDggKzkzNzMsNiBAQAogCQk3
MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQcm9wZXJ0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdWYWx1ZVByb3BlcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
M0Y5N0JDMjIzOEVFMDgwMDdGMDc5QyAvKiBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjNGOTdCRDIyMzhFRTA4MDA3RjA3
OUMgLyogU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTcyM0Y5N0JFMjIzOTUxMkQwMDdGMDc5QyAvKiBTVkdMZWdhY3lBdHRyaWJ1dGVBbmlt
YXRpb25Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0xlZ2FjeUF0dHJpYnV0
ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MjNGOTdCRjIyMzk1MTJEMDA3RjA3OUMgLyogU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyM0Y5N0MwMjIzOTZCODgw
MDdGMDc5QyAvKiBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyQmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjNGOTdDMTIyMzk3NzI1MDA3RjA3OUMgLyogU1ZHQXR0cmli
dXRlQW5pbWF0aW9uQ29udHJvbGxlckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQXR0
cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjRFRDMyOTFBM0E3RTU0MDBGNUYxM0MgLyogRVhUQmxlbmRNaW5NYXguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUQmxlbmRNaW5NYXguY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYyMSw4ICs5NjA3LDYgQEAKIAkJN0MzMzBB
MDUxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzMzBBMDYxREY5Rjk1MTAwRDMzOTVDIC8qIEpTUG9zaXRp
b25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25P
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzNGMzYwMUI0QTA1MDQw
MDUwMkNBRiAvKiBKU0RvY3VtZW50RnJhZ21lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0MzOUMzNkMxRERCOEJCMDAwRkVGQjI5IC8qIFNWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTdDMzlDMzZEMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQTkxRTUxQzk2M0I4ODAwRDFBN0Uz
IC8qIENsaXBib2FyZEFjY2Vzc1BvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0MzQjc5NkYxOTA4NzU3QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNCNzk3MDE5MDg3NTdCMDBCNDdBMkQg
LyogVXNlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVzZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg3
MSw5ICs5ODU1LDcgQEAKIAkJN0NFNThENTExREQ3QjA5MzAwMTI4NTUyIC8qIFNWR0xlbmd0aC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMZW5ndGguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNThENTIxREQ3QjA5MzAwMTI4NTUyIC8qIFNWR0xlbmd0
aFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0xlbmd0
aFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNThENTMxREQ3QjA5
MzAwMTI4NTUyIC8qIFNWR0xlbmd0aFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0xlbmd0aFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdD
RTU4RDU1MUREN0Q5NkQwMDEyODU1MiAvKiBTVkdUcmFuc2Zvcm1WYWx1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUcmFuc2Zvcm1WYWx1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTU4RDU2MUREN0Q5NkQwMDEyODU1MiAvKiBTVkdU
cmFuc2Zvcm1WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUcmFu
c2Zvcm1WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0U1OEQ1OTFERDdE
RTUyMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNWR1RyYW5zZm9ybS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDRTY4MzQyMTkyMTQzQTgwMEY0RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZXNzYWdl
SGFuZGxlckRlc2NyaXB0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0U2
ODM0MzE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTY4MzQ2MTkyMTgyMTUwMEY0
RDkyOCAvKiBVc2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDA0NCw3ICsxMDAyNiw2IEBACiAJCTgz
NkQwMzJEMURBOEExMzIwMEZGRDk2QiAvKiBKU0NsaXBib2FyZEV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2xpcGJvYXJkRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzZEMDMyRTFEQThBMTMyMDBGRkQ5NkIgLyogSlNDbGlw
Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NsaXBib2Fy
ZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNkRBQTA1MUNFQUI3Q0Qw
MEEyQjcwNyAvKiBSZW5kZXJEZXNjZW5kYW50SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTgzNkZCQ0U5MTc4QzExMzIwMEIyMUExNSAvKiBTVkdBbmltYXRlZFR5
cGVBbmltYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdB
bmltYXRlZFR5cGVBbmltYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
NzA1Njg4MUY1MDkxNTAwMEQ5MzQyNSAvKiBKU0ZpbGVDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpbGVDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzNzA1Njg5MUY1MDkxNTAwMEQ5MzQyNSAvKiBKU0ZpbGVTeXN0
ZW1FbnRyeUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmls
ZVN5c3RlbUVudHJ5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3
MDU2OEExRjUwOTE1MDAwRDkzNDI1IC8qIEpTRmlsZVN5c3RlbUVudHJ5Q2FsbGJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlU3lzdGVtRW50cnlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg2Niw3ICsxMzg0Nyw3
IEBACiAJCUQwMEQ3N0ZEMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29k
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMEQ3N0ZFMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwRDc3RkYyMjQy
RUQ0NTAwNDNGMTJDIC8qIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgCQlE
MDBGNTk0MDIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTVdpbmRvd1dlYkdQVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDBG
NTk0MDIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTVdpbmRvd1dlYkdQVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDBGNTk0
MTIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTVdpbmRvd1dlYkdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
MEY1OTQyMjE2RUNDN0EwMDBENzFEQiAvKiBET01XaW5kb3dXZWJHUFUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdp
bmRvd1dlYkdQVS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMEY1OTQ2MjE2
RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjAyMyw3ICsxNjAwNCw2IEBACiAJCQkJNTVFRTUz
NUIyMjNCMkEwQzAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQW5pbWF0b3JJbXBs
LmggKi8sCiAJCQkJMDg4QTBERkYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVy
dHlUZWFyT2ZmLmggKi8sCiAJCQkJNTVGQTdGRkUyMTExMEU2RTAwNUFFRkU3IC8qIFNWR0FuaW1h
dGVkUHJvcGVydHlUeXBlLmggKi8sCi0JCQkJMDg1QTE1OTIxMjg5QThERDAwMjcxMEUzIC8qIFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTcyMTQ0MzQ1
MjI0MEM4QkEwMEYxMkZGNyAvKiBTVkdBbmltYXRlZFZhbHVlUHJvcGVydHkuaCAqLywKIAkJCQk1
NUJFMDI1RjIyM0IyOUM1MDAzMkYwOEEgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVGdW5jdGlvbi5o
ICovLAogCQkJCTcyNjZGMDI5MjI0MzEyQjEwMDgzMzk3NSAvKiBTVkdBbmltYXRpb25BZGRpdGl2
ZUxpc3RGdW5jdGlvbi5oICovLApAQCAtMTYwNTEsNyArMTYwMzEsNiBAQAogCQkJCTU1RENDNTIz
MjI0MDczRkUwMEMyNkUzMiAvKiBTVkdMaXN0LmggKi8sCiAJCQkJMDgxMDc2NDMxMjgyODU1NjAw
N0M2M0JBIC8qIFNWR0xpc3RQcm9wZXJ0eS5oICovLAogCQkJCTA4OEEwRTAwMTI2RUYxREIwMDk3
OEY3QSAvKiBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmggKi8sCi0JCQkJMDhDQTNENDMxMjg5NEEz
ODAwRkZGMjYwIC8qIFNWR01hdHJpeFRlYXJPZmYuaCAqLywKIAkJCQk1NUVFNTM1NDIyM0IyOUU5
MDBGQkE5NDQgLyogU1ZHTWVtYmVyQWNjZXNzb3IuaCAqLywKIAkJCQk1NUJFMDI1QTIyM0IyOUMy
MDAzMkYwOEEgLyogU1ZHUG9pbnRlck1lbWJlckFjY2Vzc29yLmggKi8sCiAJCQkJNTVEQ0M1MjUy
MjQwNzQ5RTAwQzI2RTMyIC8qIFNWR1ByaW1pdGl2ZUxpc3QuaCAqLywKQEAgLTE2MTI1LDYgKzE2
MTA0LDcgQEAKIAkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRnJhbWV3b3JrcyAqLywK
IAkJCQkwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCiAJCQkJMUNERDQ0
NjYwQkE5QzgwMDAwRjkwMTQ3IC8qIENvbmZpZ3VyYXRpb25zICovLAorCQkJCTcyNUFCNDZGMjI1
Mjk1RTcwMEM3M0NGNSAvKiBSZWNvdmVyZWQgUmVmZXJlbmNlcyAqLywKIAkJCSk7CiAJCQluYW1l
ID0gV2ViQ29yZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMDU4MSw2ICsyMDU2
MSwxNCBAQAogCQkJcGF0aCA9IG1hY09TOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJNzI1QUI0NkYyMjUyOTVFNzAwQzczQ0Y1IC8qIFJlY292ZXJlZCBSZWZlcmVuY2VzICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwOENBM0Q0MzEy
ODk0QTM4MDBGRkYyNjAgLyogU1ZHTWF0cml4VGVhck9mZi5oICovLAorCQkJKTsKKwkJCW5hbWUg
PSAiUmVjb3ZlcmVkIFJlZmVyZW5jZXMiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJN0MzMzBBMDQxREY5RjkzQjAwRDMzOTVDIC8qIEdlb2xvY2F0aW9uICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIzODA3LDEyICsyMzc5NSw3IEBA
CiAJCQkJQjIyMjc3RjQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpby5pZGwgKi8sCiAJCQkJQjIyMjc3RjUwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1h
dGVkUmVjdC5pZGwgKi8sCiAJCQkJQjIyMjc3RjYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1h
dGVkU3RyaW5nLmlkbCAqLywKLQkJCQk3MTU3RjA2MTE1MEI2NTY0MDA2RUFBQkQgLyogU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCAqLywKLQkJCQkwODI1MDkzODEyOEJENEQ4MDBFMkVEOEUg
LyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmggKi8sCiAJCQkJQjIyMjc3RjgwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5pZGwgKi8sCi0JCQkJNDM5RDMzNDAx
M0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oICovLAotCQkJCTgzNkZCQ0U5MTc4
QzExMzIwMEIyMUExNSAvKiBTVkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHAgKi8sCi0JCQkJNDM5
RDMzNDExM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi8sCiAJ
CQkJQjIyMjc3RjkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVFbGVtZW50LmNwcCAqLywK
IAkJCQlCMjIyNzdGQTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1lbnQuaCAqLywK
IAkJCQlCMjIyNzdGQjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1lbnQuaWRsICov
LApAQCAtMjM4MjcsNyArMjM4MTAsNiBAQAogCQkJCUIyMjI3ODAxMEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdBbmltYXRpb25FbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzgwMjBEMDBCRjFGMDA3MUI3
ODIgLyogU1ZHQW5pbWF0aW9uRWxlbWVudC5oICovLAogCQkJCUIyMjI3ODAzMEQwMEJGMUYwMDcx
Qjc4MiAvKiBTVkdBbmltYXRpb25FbGVtZW50LmlkbCAqLywKLQkJCQk0MzlEMzM0MjEzQTY5MTFD
MDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggKi8sCiAJCQkJNzIzRjk3QkMyMjM4RUUw
ODAwN0YwNzlDIC8qIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovLAogCQkJ
CTcyM0Y5N0JEMjIzOEVFMDgwMDdGMDc5QyAvKiBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9s
bGVyLmggKi8sCiAJCQkJNzIzRjk3QzEyMjM5NzcyNTAwN0YwNzlDIC8qIFNWR0F0dHJpYnV0ZUFu
aW1hdGlvbkNvbnRyb2xsZXJCYXNlLmNwcCAqLywKQEAgLTI0MDAxLDggKzIzOTgzLDYgQEAKIAkJ
CQlCMjhDNkEyMTBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZHSW1hZ2VMb2FkZXIuaCAqLywKIAkJCQlC
MjIyNzg5OTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmNwcCAqLywKIAkJCQlCMjIy
Nzg5QTBEMDBCRjIwMDA3MUI3ODIgLyogU1ZHTGFuZ1NwYWNlLmggKi8sCi0JCQkJNzIzRjk3QkUy
MjM5NTEyRDAwN0YwNzlDIC8qIFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIu
Y3BwICovLAotCQkJCTcyM0Y5N0JGMjIzOTUxMkQwMDdGMDc5QyAvKiBTVkdMZWdhY3lBdHRyaWJ1
dGVBbmltYXRpb25Db250cm9sbGVyLmggKi8sCiAJCQkJN0NFNThENTExREQ3QjA5MzAwMTI4NTUy
IC8qIFNWR0xlbmd0aC5oICovLAogCQkJCUIyMjI3ODlFMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdM
ZW5ndGguaWRsICovLAogCQkJCTcxMzQ0OTZCMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhD
b250ZXh0LmNwcCAqLywKQEAgLTI0MTY5LDcgKzI0MTQ5LDYgQEAKIAkJCQlCMjIyNzkzRjBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHVGl0bGVFbGVtZW50LmlkbCAqLywKIAkJCQkxQ0NERjVCQjE5OTAz
MzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgKi8sCiAJCQkJMUNDREY1
QkMxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAqLywKLQkJCQk3
Q0U1OEQ1OTFERDdERTUyMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtLmNwcCAqLywKIAkJCQlCMjIy
Nzk0MTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVHJhbnNmb3JtLmggKi8sCiAJCQkJQjIyMjc5NDIw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybS5pZGwgKi8sCiAJCQkJQjIyMjc5NDMwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybWFibGUuY3BwICovLApAQCAtMjQxNzgsOSArMjQx
NTcsNiBAQAogCQkJCUIyMjI3OTQ3MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1EaXN0
YW5jZS5oICovLAogCQkJCUIyMjI3OTQ5MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1M
aXN0LmggKi8sCiAJCQkJQjIyMjc5NEEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybUxp
c3QuaWRsICovLAotCQkJCTdDMzlDMzZDMUREQjhCQjAwMEZFRkIyOSAvKiBTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzLmNwcCAqLywKLQkJCQk3QzM5QzM2RDFEREI4QkIwMDBGRUZCMjkgLyogU1ZHVHJh
bnNmb3JtTGlzdFZhbHVlcy5oICovLAotCQkJCTdDRTU4RDU1MUREN0Q5NkQwMDEyODU1MiAvKiBT
VkdUcmFuc2Zvcm1WYWx1ZS5jcHAgKi8sCiAJCQkJN0NFNThENTYxREQ3RDk2RDAwMTI4NTUyIC8q
IFNWR1RyYW5zZm9ybVZhbHVlLmggKi8sCiAJCQkJQjIyMjc5NEIwRDAwQkYyMTAwNzFCNzgyIC8q
IFNWR1RSZWZFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzk0QzBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHVFJlZkVsZW1lbnQuaCAqLywKQEAgLTI0MTk4LDcgKzI0MTc0LDYgQEAKIAkJCQlCMjIyNzk1
NjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHVXNlRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc5NTcw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1VzZUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzk1ODBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHVXNlRWxlbWVudC5pZGwgKi8sCi0JCQkJNTUxMzdCMzQyMDNDRUI3
MTAwMDEwMDRCIC8qIFNWR1ZhbHVlLmggKi8sCiAJCQkJQjIyMjc5NTkwRDAwQkYyMTAwNzFCNzgy
IC8qIFNWR1ZpZXdFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzk1QTBEMDBCRjIxMDA3MUI3ODIg
LyogU1ZHVmlld0VsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzk1QjBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHVmlld0VsZW1lbnQuaWRsICovLApAQCAtMjU4ODYsNyArMjU4NjEsNiBAQAogCQkJCUQwNUE5
OUU0MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5oICovLAogCQkJCUQw
NUE5OUU2MjFDOUJGMkMwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dC5pZGwgKi8sCiAJ
CQkJRDAwNDg3RDIyMjQ1N0JFQTAwRUVEN0Q5IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvci5jcHAgKi8sCi0JCQkJRDAwNDg3RDIyMjQ1N0JFQTAwRUVEN0Q5IC8qIFdlYkdQVVBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvci5jcHAgKi8sCiAJCQkJRDA1QTk5RTEyMUM5QjUwRjAwMDMyQjc1
IC8qIFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oICovLAogCQkJCUQwNUE5OUUyMjFD
OUI1MEYwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaWRsICovLAog
CQkJCUQwODkwMzM3MjI0MDYxQUMwMEYzRjQ0MCAvKiBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3Jp
cHRvci5jcHAgKi8sCkBAIC0zMTU0MCwxNiArMzE1MTQsMTEgQEAKIAkJCQkwODhBMEUwNjEyNkVG
MURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwODhBMEUwODEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0
eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1RkE3RkZGMjExMTBFNkUwMDVBRUZFNyAv
KiBTVkdBbmltYXRlZFByb3BlcnR5VHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDgyNTA5Mzkx
MjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMDg1QTE1OTMxMjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDM5RDMzNDMxM0E2OTEx
QzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDM5RDMz
NDQxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyNzk5MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmlt
YXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTkzMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdBbmltYXRlTW90aW9uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
Mjc5OTUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyNzk5ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0aW9u
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDM5RDMzNDUxM0E2OTExQzAwQzIwRjRGIC8q
IFNWR0FuaW1hdG9yRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVGQTdGRjAyMTBGQTM4
NjAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVGQTdGRjUy
MTBGQjZCMTAwNUFFRkU3IC8qIFNWR0F0dHJpYnV0ZUFjY2Vzc29yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NTM0NkFGMTIxMTUwRkFGMDA1OUJDREQgLyogU1ZHQXR0cmlidXRlT3duZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJh
c2UuY3BwCmluZGV4IDgzNGE5MjkyMmE4ZWQ1ZGM2ZmEyOGEwMTliZmMzY2VjZmFjYzNhMWQuLjhl
NzgwMTJmYzVkMTQ4NWYxZDg0NzNlNmU3ZGQ5MWVmY2Q0OGRkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0yNSwxMCArMjUsOCBAQAogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFt
ZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdG9yRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR0F0dHJp
YnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5j
bHVkZSAiU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNDks
MTIgKzQ3LDggQEAgU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlckJhc2UmIFNWR0FuaW1h
dGVFbGVtZW50QmFzZTo6YXR0cmlidXRlQW5pbWF0aW9uQ28KICAgICBBU1NFUlQodGFyZ2V0RWxl
bWVudCgpKTsKICAgICBBU1NFUlQoIWhhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlKCkpOwogCi0g
ICAgaWYgKCFtX2F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIpIHsKLSAgICAgICAgaWYgKHRh
cmdldEVsZW1lbnQoKS0+aXNBbmltYXRlZEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKCkpKQotICAg
ICAgICAgICAgbV9hdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyPigqdGhpcywgKnRhcmdldEVsZW1lbnQo
KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXR0cmlidXRlQW5pbWF0aW9uQ29udHJv
bGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJv
bGxlcj4oKnRoaXMsICp0YXJnZXRFbGVtZW50KCkpOwotICAgIH0KKyAgICBpZiAoIW1fYXR0cmli
dXRlQW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAgbV9hdHRyaWJ1dGVBbmltYXRpb25Db250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVy
PigqdGhpcywgKnRhcmdldEVsZW1lbnQoKSk7CiAKICAgICByZXR1cm4gKm1fYXR0cmlidXRlQW5p
bWF0aW9uQ29udHJvbGxlcjsKIH0KQEAgLTY0LDkgKzU4LDYgQEAgYm9vbCBTVkdBbmltYXRlRWxl
bWVudEJhc2U6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0CiAgICAgaWYgKCF0YXJnZXRF
bGVtZW50KCkgfHwgaGFzSW52YWxpZENTU0F0dHJpYnV0ZVR5cGUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKFNWR0FuaW1hdG9yRmFjdG9yeTo6aXNTdXBwb3J0ZWRBdHRyaWJ1
dGVUeXBlKGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKCp0YXJnZXRFbGVtZW50KCkpKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICByZXR1cm4gdGFyZ2V0RWxlbWVudCgpLT5pc0Fu
aW1hdGVkQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSk7CiB9CiAKQEAgLTkxLDIxICs4MiwyMSBA
QCBib29sIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25W
YWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbgogewogICAgIGlmICghdGFyZ2V0RWxlbWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRy
b2xsZXIoKS5jYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKHRvQXRFbmRPZkR1cmF0aW9u
U3RyaW5nKTsKKyAgICByZXR1cm4gYXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcigpLmNhbGN1
bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoYW5pbWF0ZVJhbmdlU3RyaW5nKHRvQXRFbmRPZkR1
cmF0aW9uU3RyaW5nKSk7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxh
dGVGcm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRvU3RyaW5nKQogewogICAgIGlmICghdGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIoKS5jYWxjdWxh
dGVGcm9tQW5kVG9WYWx1ZXMoZnJvbVN0cmluZywgdG9TdHJpbmcpOworICAgIHJldHVybiBhdHRy
aWJ1dGVBbmltYXRpb25Db250cm9sbGVyKCkuY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGFuaW1h
dGVSYW5nZVN0cmluZyhmcm9tU3RyaW5nKSwgYW5pbWF0ZVJhbmdlU3RyaW5nKHRvU3RyaW5nKSk7
CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1
ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQogewog
ICAgIGlmICghdGhpcy0+dGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIGF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIoKS5jYWxjdWxhdGVGcm9tQW5k
QnlWYWx1ZXMoZnJvbVN0cmluZywgYnlTdHJpbmcpOworICAgIHJldHVybiBhdHRyaWJ1dGVBbmlt
YXRpb25Db250cm9sbGVyKCkuY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGFuaW1hdGVSYW5nZVN0
cmluZyhmcm9tU3RyaW5nKSwgYW5pbWF0ZVJhbmdlU3RyaW5nKGJ5U3RyaW5nKSk7CiB9CiAKIHZv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgKaW5kZXggYjA3Y2RjM2FmZGFjOTE4MTdm
ODZlZjAyNDdkMWI0NmVkMjI0Nzg4My4uNzcyMmNkZmIxOTk0ODVlMWQ1ZWZiY2RlYjg0ZDk3ZjZl
NzBkYTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaApA
QCAtNjEsNiArNjEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVOYW1lKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkg
b3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBhbmltYXRlUmFuZ2VTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIHN0cmluZzsgfQorCiBwcml2YXRlOgogICAg
IGJvb2wgaGFzSW52YWxpZENTU0F0dHJpYnV0ZVR5cGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKaW5kZXggNzQ1Mzky
ZTM3OTE3YTkwMzc4ZTYzZWViZjRkYWJiY2RlMGFmZTNjYi4uYWQ3NTBhZWY3ODc5NjZkY2Q2NTM5
ZTI3Njg5MjRhOWIyN2ZhOTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCkBAIC02Niw0ICs2Niw5IEBAIHZvaWQgU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpwYXJzZUF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSk7CiB9CiAKK1N0cmluZyBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6YW5pbWF0
ZVJhbmdlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBT
VkdUcmFuc2Zvcm1WYWx1ZTo6cHJlZml4Rm9yVHJhbnNmcm9tVHlwZShtX3R5cGUpICsgc3RyaW5n
ICsgJyknOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudC5oCmluZGV4IDIwMzEwM2FhNmZkNGMyYTdhM2UyNTAzMzJjNzU2NmY4Y2Y4ZDBm
ZTguLjMwMWVhODhhYjQ2NWQ1NDdiMTJkYjgxYjNhMWI2NTUzN2U1MjliN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCkBAIC00MSw2ICs0
MSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICBTdHJpbmcgYW5pbWF0ZVJhbmdlU3Ry
aW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgU1ZHVHJhbnNmb3JtVmFsdWU6
OlNWR1RyYW5zZm9ybVR5cGUgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDA0ODYxMWI5MzVhZTk4ZDRkMTA3MmY1ZjAzYjdiNmY5MzRmNTQzYTguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVs
IDxlcmljQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCi0KLSNpbmNsdWRlICJTVkdBbmltYXRl
VHJhbnNmb3JtRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZH
VHJhbnNmb3JtRGlzdGFuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3Io
U1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpCi0gICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZFRyYW5zZm9y
bUxpc3QsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQotICAgICwgbV90cmFuc2Zv
cm1UeXBlU3RyaW5nKFNWR1RyYW5zZm9ybVZhbHVlOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFy
c2luZyhkb3duY2FzdDxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudD4oYW5pbWF0aW9uRWxlbWVu
dCktPnRyYW5zZm9ybVR5cGUoKSkpCi17Ci0gICAgLy8gT25seSA8YW5pbWF0ZVRyYW5zZm9ybT4g
dXNlcyB0aGlzIGFuaW1hdG9yLCBhcyA8YW5pbWF0ZT4gZG9lc24ndCBhbGxvdyB0byBhbmltYXRl
IHRyYW5zZm9ybSBsaXN0cyBkaXJlY3RseS4KLSAgICBBU1NFUlQoYW5pbWF0aW9uRWxlbWVudC0+
aGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOwotfQotCi1zdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRv
cjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICByZXR1
cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGUoU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3Jt
TGlzdFZhbHVlcz46OmZyb21TdHJpbmcobV90cmFuc2Zvcm1UeXBlU3RyaW5nICsgc3RyaW5nICsg
JyknKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIHJldHVybiBj
b25zdHJ1Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4oYW5pbWF0ZWRU
eXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OnN0b3BB
bmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5p
bWF0ZWRUeXBlcykKLXsKLSAgICBzdG9wQW5pbVZhbEFuaW1hdGlvbkZvclR5cGU8U1ZHQW5pbWF0
ZWRUcmFuc2Zvcm1MaXN0PihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZHQW5pbWF0ZWRUeXBlJiB0
eXBlKQotewotICAgIHJlc2V0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+
KGFuaW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEFuaW1hdG9yOjphbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgYW5pbVZhbFdpbGxDaGFuZ2VGb3JUeXBl
PFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1W
YWxEaWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4oYW5pbWF0ZWRUeXBl
cyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFkZEFuaW1h
dGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvKQotewot
ICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKLSAgICBB
U1NFUlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwotCi0gICAgY29uc3QgYXV0byYgZnJv
bVRyYW5zZm9ybUxpc3QgPSBmcm9tLT5hczxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPigpOwotICAg
IGF1dG8mIHRvVHJhbnNmb3JtTGlzdCA9IHRvLT5hczxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPigp
OwotICAgIGF1dG8gZnJvbVRyYW5zZm9ybUxpc3RTaXplID0gZnJvbVRyYW5zZm9ybUxpc3Quc2l6
ZSgpOwotICAgIGlmICghZnJvbVRyYW5zZm9ybUxpc3RTaXplIHx8IGZyb21UcmFuc2Zvcm1MaXN0
U2l6ZSAhPSB0b1RyYW5zZm9ybUxpc3Quc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBB
U1NFUlQoZnJvbVRyYW5zZm9ybUxpc3RTaXplID09IDEpOwotICAgIGNvbnN0IGF1dG8mIGZyb21U
cmFuc2Zvcm0gPSBmcm9tVHJhbnNmb3JtTGlzdFswXTsKLSAgICBhdXRvJiB0b1RyYW5zZm9ybSA9
IHRvVHJhbnNmb3JtTGlzdFswXTsKLQotICAgIEFTU0VSVChmcm9tVHJhbnNmb3JtLnR5cGUoKSA9
PSB0b1RyYW5zZm9ybS50eXBlKCkpOwotICAgIHRvVHJhbnNmb3JtID0gU1ZHVHJhbnNmb3JtRGlz
dGFuY2U6OmFkZFNWR1RyYW5zZm9ybXMoZnJvbVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm0pOwotfQot
Ci12b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRl
ZFR5cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVu
ZE9mRHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCi17Ci0gICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7Ci0KLSAgICAvLyBTcGVjOiBUbyBhbmltYXRpb25zIHByb3ZpZGUg
c3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB0byBnZXQgYSBzbW9vdGggY2hhbmdlIGZyb20gdGhlIHVu
ZGVybHlpbmcgdmFsdWUgdG8gdGhlCi0gICAgLy8g4oCYdG/igJkgYXR0cmlidXRlIHZhbHVlLCB3
aGljaCBjb25mbGljdHMgbWF0aGVtYXRpY2FsbHkgd2l0aCB0aGUgcmVxdWlyZW1lbnQgZm9yIGFk
ZGl0aXZlIHRyYW5zZm9ybSBhbmltYXRpb25zCi0gICAgLy8gdG8gYmUgcG9zdC1tdWx0aXBsaWVk
LiBBcyBhIGNvbnNlcXVlbmNlLCBpbiBTVkcgMS4xIHRoZSBiZWhhdmlvciBvZiB0byBhbmltYXRp
b25zIGZvciDigJhhbmltYXRlVHJhbnNmb3Jt4oCZIGlzIHVuZGVmaW5lZC4KLSAgICBjb25zdCBh
dXRvJiBmcm9tVHJhbnNmb3JtTGlzdCA9IGZyb20tPmFzPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+
KCk7Ci0gICAgY29uc3QgYXV0byYgdG9UcmFuc2Zvcm1MaXN0ID0gdG8tPmFzPFNWR1RyYW5zZm9y
bUxpc3RWYWx1ZXM+KCk7Ci0gICAgY29uc3QgYXV0byYgdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zv
cm1MaXN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPmFzPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+KCk7
Ci0gICAgYXV0byYgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gYW5pbWF0ZWQtPmFzPFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXM+KCk7Ci0KLSAgICAvLyBQYXNzIGZhbHNlIHRvICdyZXNpemVBbmltYXRl
ZExpc3RJZk5lZWRlZCcgaGVyZSwgYXMgdGhlIHNwZWNpYWwgcG9zdC1tdWx0aXBsaWNhdGlvbiBi
ZWhhdmlvciBvZiA8YW5pbWF0ZVRyYW5zZm9ybT4gbmVlZHMgdG8gYmUgcmVzcGVjdGVkIGJlbG93
LgotICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNW
R1RyYW5zZm9ybUxpc3RWYWx1ZXM+KGZyb21UcmFuc2Zvcm1MaXN0LCB0b1RyYW5zZm9ybUxpc3Qs
IGFuaW1hdGVkVHJhbnNmb3JtTGlzdCwgcGVyY2VudGFnZSwgZmFsc2UpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBOZXZlciByZXNpemUgdGhlIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0byB0
aGUgdG9UcmFuc2Zvcm1MaXN0IHNpemUsIGluc3RlYWQgZWl0aGVyIGNsZWFyIHRoZSBsaXN0IG9y
IGFwcGVuZCB0byBpdC4KLSAgICBpZiAoIWFuaW1hdGVkVHJhbnNmb3JtTGlzdC5pc0VtcHR5KCkg
JiYgKCFtX2FuaW1hdGlvbkVsZW1lbnQtPmlzQWRkaXRpdmUoKSB8fCBtX2FuaW1hdGlvbkVsZW1l
bnQtPmFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpUbykpCi0gICAgICAgIGFuaW1h
dGVkVHJhbnNmb3JtTGlzdC5jbGVhcigpOwotCi0gICAgYXV0byBmcm9tVHJhbnNmb3JtTGlzdFNp
emUgPSBmcm9tVHJhbnNmb3JtTGlzdC5zaXplKCk7Ci0gICAgY29uc3QgYXV0byYgdG9UcmFuc2Zv
cm0gPSB0b1RyYW5zZm9ybUxpc3RbMF07Ci0gICAgY29uc3QgYXV0byBlZmZlY3RpdmVGcm9tID0g
ZnJvbVRyYW5zZm9ybUxpc3RTaXplID8gZnJvbVRyYW5zZm9ybUxpc3RbMF0gOiBTVkdUcmFuc2Zv
cm1WYWx1ZSh0b1RyYW5zZm9ybS50eXBlKCksIFNWR1RyYW5zZm9ybVZhbHVlOjpDb25zdHJ1Y3Ra
ZXJvVHJhbnNmb3JtKTsKLSAgICBhdXRvIGN1cnJlbnRUcmFuc2Zvcm0gPSBTVkdUcmFuc2Zvcm1E
aXN0YW5jZShlZmZlY3RpdmVGcm9tLCB0b1RyYW5zZm9ybSkuc2NhbGVkRGlzdGFuY2UocGVyY2Vu
dGFnZSkuYWRkVG9TVkdUcmFuc2Zvcm0oZWZmZWN0aXZlRnJvbSk7Ci0gICAgaWYgKG1fYW5pbWF0
aW9uRWxlbWVudC0+aXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdENvdW50KSB7Ci0gICAgICAgIGNv
bnN0IGF1dG8gZWZmZWN0aXZlVG9BdEVuZCA9IHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtTGlz
dC5zaXplKCkgPyB0b0F0RW5kT2ZEdXJhdGlvblRyYW5zZm9ybUxpc3RbMF0gOiBTVkdUcmFuc2Zv
cm1WYWx1ZSh0b1RyYW5zZm9ybS50eXBlKCksIFNWR1RyYW5zZm9ybVZhbHVlOjpDb25zdHJ1Y3Ra
ZXJvVHJhbnNmb3JtKTsKLSAgICAgICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmFwcGVuZChTVkdU
cmFuc2Zvcm1EaXN0YW5jZTo6YWRkU1ZHVHJhbnNmb3JtcyhjdXJyZW50VHJhbnNmb3JtLCBlZmZl
Y3RpdmVUb0F0RW5kLCByZXBlYXRDb3VudCkpOwotICAgIH0gZWxzZQotICAgICAgICBhbmltYXRl
ZFRyYW5zZm9ybUxpc3QuYXBwZW5kKGN1cnJlbnRUcmFuc2Zvcm0pOwotfQotCi1mbG9hdCBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQotewotICAgIEFTU0VSVCht
X2FuaW1hdGlvbkVsZW1lbnQpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3Qg
aW4gYWxsIGNhc2VzLiBUaGUgc3BlYyBkZW1hbmRzIHRoYXQgZWFjaCBjb21wb25lbnQgKHRyYW5z
bGF0ZSB4IGFuZCB5IGZvciBleGFtcGxlKQotICAgIC8vIGlzIHBhY2VkIHNlcGFyYXRlbHkuIFRv
IGltcGxlbWVudCB0aGlzIHdlIG5lZWQgdG8gdHJlYXQgZWFjaCBjb21wb25lbnQgYXMgaW5kaXZp
ZHVhbCBhbmltYXRpb24gZXZlcnl3aGVyZS4KLSAgICBhdXRvIGZyb20gPSBjb25zdHJ1Y3RGcm9t
U3RyaW5nKGZyb21TdHJpbmcpOwotICAgIGF1dG8gdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRv
U3RyaW5nKTsKLQotICAgIGNvbnN0IGF1dG8mIGZyb21UcmFuc2Zvcm1MaXN0ID0gZnJvbS0+YXM8
U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4oKTsKLSAgICBjb25zdCBhdXRvJiB0b1RyYW5zZm9ybUxp
c3QgPSB0by0+YXM8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4oKTsKLSAgICB1bnNpZ25lZCBpdGVt
c0NvdW50ID0gZnJvbVRyYW5zZm9ybUxpc3Quc2l6ZSgpOwotICAgIGlmICghaXRlbXNDb3VudCB8
fCBpdGVtc0NvdW50ICE9IHRvVHJhbnNmb3JtTGlzdC5zaXplKCkpCi0gICAgICAgIHJldHVybiAt
MTsKLQotICAgIEFTU0VSVChpdGVtc0NvdW50ID09IDEpOwotICAgIGlmIChmcm9tVHJhbnNmb3Jt
TGlzdFswXS50eXBlKCkgIT0gdG9UcmFuc2Zvcm1MaXN0WzBdLnR5cGUoKSkKLSAgICAgICAgcmV0
dXJuIC0xOwotCi0gICAgLy8gU3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUu
aHRtbCNjb21wbGV4RGlzdGFuY2VzCi0gICAgLy8gUGFjZWQgYW5pbWF0aW9ucyBhc3N1bWUgYSBu
b3Rpb24gb2YgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdmFyaW91cyBhbmltYXRpb24gdmFsdWVzIGRl
ZmluZWQgYnkgdGhlIOKAmHRv4oCZLCDigJhmcm9t4oCZLCDigJhieeKAmSBhbmQg4oCYdmFsdWVz
4oCZIGF0dHJpYnV0ZXMuCi0gICAgLy8gRGlzdGFuY2UgaXMgZGVmaW5lZCBvbmx5IGZvciBzY2Fs
YXIgdHlwZXMgKHN1Y2ggYXMgPGxlbmd0aD4pLCBjb2xvcnMgYW5kIHRoZSBzdWJzZXQgb2YgdHJh
bnNmb3JtYXRpb24gdHlwZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IOKAmGFuaW1hdGVUcmFuc2Zv
cm3igJkuCi0gICAgcmV0dXJuIFNWR1RyYW5zZm9ybURpc3RhbmNlKGZyb21UcmFuc2Zvcm1MaXN0
WzBdLCB0b1RyYW5zZm9ybUxpc3RbMF0pLmRpc3RhbmNlKCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMGIxNjlmNWM5YmE0MmVjNjAyNDBkMDFkNTljZTc4OTQwNzZiNTJmZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRl
ZFR5cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCi0jaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFNWR0FuaW1hdGlvbkVsZW1lbnQ7Ci0KLXVzaW5nIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCA9
IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZjsKLXVzaW5nIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdEF0dHJpYnV0ZSA9IFNWR0FuaW1hdGVkQXR0cmlidXRlTGlzdDxTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3Q+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci11
c2luZyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGVBY2Nlc3NvciA9IFNWR0FuaW1h
dGVkQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RB
dHRyaWJ1dGUsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdD47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
IHsKLXB1YmxpYzoKLSAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcihTVkdBbmlt
YXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRp
b24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRk
QW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5z
aWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIGZsb2F0IGNh
bGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZykgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgU3RyaW5nJiBtX3RyYW5z
Zm9ybVR5cGVTdHJpbmc7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MzBi
NGRmMzFhODQzNDNhNzdlODk4Y2VjYzhkOGYzOGQ5OTM0MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHlwZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR1ZhbHVlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgU1ZHQW5pbWF0ZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KFNWR1Byb3BlcnR5
VHJhaXRzPFByb3BlcnR5VHlwZT46OmluaXRpYWxWYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
VkdBbmltYXRlZFR5cGU+IGNyZWF0ZShjb25zdCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihwcm9w
ZXJ0eSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGUoUHJvcGVydHlU
eXBlJiYgcHJvcGVydHkpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBbmltYXRlZFR5cGU+KFdURk1vdmUocHJvcGVydHkpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlKGNvbnN0IFByb3Bl
cnR5VHlwZSYgcHJvcGVydHkpCi0gICAgICAgIDogbV92YWx1ZShzdGQ6Om1ha2VfdW5pcXVlPFBy
b3BlcnR5VHlwZT4ocHJvcGVydHkpLnJlbGVhc2UoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgotICAgIFNWR0FuaW1hdGVkVHlwZShQcm9wZXJ0
eVR5cGUmJiBwcm9wZXJ0eSkKLSAgICAgICAgOiBtX3ZhbHVlKHN0ZDo6bWFrZV91bmlxdWU8UHJv
cGVydHlUeXBlPihXVEZNb3ZlKHByb3BlcnR5KSkucmVsZWFzZSgpKQotICAgIHsKLSAgICB9Ci0K
LSAgICB+U1ZHQW5pbWF0ZWRUeXBlKCkKLSAgICB7Ci0gICAgICAgIFdURjo6dmlzaXQoW10oYXV0
byYgdmFsdWUpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZTsKLSAgICAgICAgfSwgbV92YWx1
ZSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFByb3BlcnR5VHlwZT4KLSAgICBjb25z
dCBQcm9wZXJ0eVR5cGUmIGFzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPFByb3BlcnR5VHlwZSo+KG1fdmFsdWUpKTsKLSAgICAgICAgcmV0dXJu
ICpXVEY6OmdldDxQcm9wZXJ0eVR5cGUqPihtX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgUHJvcGVydHlUeXBlPgotICAgIFByb3BlcnR5VHlwZSYgYXMoKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UHJvcGVydHlUeXBlKj4obV92YWx1
ZSkpOwotICAgICAgICByZXR1cm4gKldURjo6Z2V0PFByb3BlcnR5VHlwZSo+KG1fdmFsdWUpOwot
ICAgIH0KLQotICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKCFtX3ZhbHVlLmluZGV4KCkpOwotICAgICAgICByZXR1cm4gQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0OwotICAgIH0KLQotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGF1dG8mIHZhbHVlKSB7Ci0gICAg
ICAgICAgICB1c2luZyBQcm9wZXJ0eVR5cGUgPSBzdGQ6OmRlY2F5X3Q8ZGVjbHR5cGUoKnZhbHVl
KT47Ci0gICAgICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6
dG9TdHJpbmcoKnZhbHVlKTsKLSAgICAgICAgfSwgbV92YWx1ZSk7Ci0gICAgfQotCi0gICAgYm9v
bCBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBT
dHJpbmcmIHN0cmluZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFsmXShhdXRv
JiB2YWx1ZSkgewotICAgICAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gc3RkOjpkZWNheV90
PGRlY2x0eXBlKCp2YWx1ZSk+OwotICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gU1ZHUHJv
cGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6cGFyc2UoYXR0ck5hbWUsIHN0cmluZykpIHsKLSAg
ICAgICAgICAgICAgICAqdmFsdWUgPSAqcmVzdWx0OwotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
LCBtX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FuaW1WYWwoQW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIC8vIEFuaW1hdGVkQ29sb3Ig
aXMgb25seSB1c2VkIGZvciBDU1MgcHJvcGVydHkgYW5pbWF0aW9ucy4KLSAgICAgICAgcmV0dXJu
IHR5cGUgIT0gQW5pbWF0ZWRVbmtub3duICYmIHR5cGUgIT0gQW5pbWF0ZWRDb2xvcjsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgU1ZHVmFsdWVWYXJpYW50IG1fdmFsdWU7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRUeXBlQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNmOWM0NGI2Y2IxMjI4
Mzg0MmRiOGE5ZTZhYWE2NWNmYjc5Nzc2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS0yMDEyLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yLmgiCi0KLSNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OlNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yKEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUsIFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1h
dGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQotICAgIDogbV90eXBlKHR5
cGUpCi0gICAgLCBtX2FuaW1hdGlvbkVsZW1lbnQoYW5pbWF0aW9uRWxlbWVudCkKLSAgICAsIG1f
Y29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCi17Ci19Ci0KLVNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yOjp+U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJp
bmcpCi17Ci0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAg
dG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdBbmltYXRl
ZFR5cGVBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKHN0ZDo6dW5pcXVlX3B0cjxT
VkdBbmltYXRlZFR5cGU+JiBmcm9tLCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
dG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKLXsK
LSAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9IGNv
bnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOwotICAgIGFkZEFuaW1hdGVkVHlwZXMoZnJvbS5n
ZXQoKSwgdG8uZ2V0KCkpOwotfQotCi1TVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QgU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3I6OmZpbmRBbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGVO
YW1lKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCi17Ci0gICAgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0IHJlc3VsdDsK
LQotICAgIGlmICghU1ZHQW5pbWF0ZWRUeXBlOjpzdXBwb3J0c0FuaW1WYWwobV90eXBlKSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIGF1dG8gdGFyZ2V0UHJvcGVydGllcyA9IHRhcmdl
dEVsZW1lbnQubG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMoYXR0cmlidXRlTmFtZSk7
Ci0gICAgaWYgKHRhcmdldFByb3BlcnRpZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVz
dWx0OwotCi0gICAgcmVzdWx0LmFwcGVuZChTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzIHsg
JnRhcmdldEVsZW1lbnQsIFdURk1vdmUodGFyZ2V0UHJvcGVydGllcykgfSk7Ci0KLSAgICBmb3Ig
KFNWR0VsZW1lbnQqIGluc3RhbmNlIDogdGFyZ2V0RWxlbWVudC5pbnN0YW5jZXMoKSkKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZChTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzIHsgaW5zdGFuY2Us
IGluc3RhbmNlLT5sb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllcyhhdHRyaWJ1dGVOYW1l
KSB9KTsKLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBmb3IgKGF1dG8mIGFuaW1hdGVkUHJv
cGVydGllcyA6IHJlc3VsdCkgewotICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogYW5pbWF0
ZWRQcm9wZXJ0aWVzLnByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eS0+YW5p
bWF0ZWRQcm9wZXJ0eVR5cGUoKSAhPSBtX3R5cGUpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
bV90eXBlID09IEFuaW1hdGVkQW5nbGUpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0
eS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSA9PSBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotdm9pZCBTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6c2V0SW5zdGFuY2VVcGRhdGVzQmxv
Y2tlZChTVkdFbGVtZW50JiBlbGVtZW50LCBib29sIGJsb2NrZWQpCi17Ci0gICAgZWxlbWVudC5z
ZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGJsb2NrZWQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjBhNGY1MTMwOGI5OTllYWMyMjRmZWM5MTEw
ZjQ0Mzc1ZTMwZDc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCisrKyAvZGV2
L251bGwKQEAgLTEsMjMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMTEtMjAxMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGUuaCIKLSNpbmNsdWRlICJTVkdM
ZWdhY3lBbmltYXRlZFByb3BlcnR5LmgiCi0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
aWVzIHsKLSAgICBTVkdFbGVtZW50KiBlbGVtZW50OwotICAgIFZlY3RvcjxSZWZQdHI8U1ZHTGVn
YWN5QW5pbWF0ZWRQcm9wZXJ0eT4+IHByb3BlcnRpZXM7Ci19OwotdHlwZWRlZiBWZWN0b3I8U1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydGllcz4gU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
OwotCi1jbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwotCi1jbGFzcyBTVkdBbmltYXRlZFR5cGVB
bmltYXRvciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoKTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikg
PSAwOwotCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFy
dEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0QW5p
bVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdB
bmltYXRlZFR5cGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBl
KiwgU1ZHQW5pbWF0ZWRUeXBlKikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1h
dGVkVHlwZSopID0gMDsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwotCi0gICAg
dm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4mLCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYsIGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7Ci0gICAgdm9pZCBjYWxjdWxhdGVG
cm9tQW5kQnlWYWx1ZXMoc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4mLCBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiBieVN0cmluZyk7Ci0KLSAgICB2b2lkIHNldENvbnRleHRFbGVtZW50KFNWR0Vs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KSB7IG1fY29udGV4dEVsZW1lbnQgPSBjb250ZXh0RWxlbWVu
dDsgfQotICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KLQotICAgIFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCBmaW5kQW5pbWF0ZWRQ
cm9wZXJ0aWVzRm9yQXR0cmlidXRlTmFtZShTVkdFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUsIFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7Ci0KLSAgICAv
LyBIZWxwZXJzIGZvciBhbmltYXRvcnMgdGhhdCBvcGVyYXRlIG9uIHNpbmdsZSB0eXBlcywgZWcu
IGp1c3Qgb25lIFNWR0FuaW1hdGVkSW50ZWdlci4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmlt
VmFsVHlwZT4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RG
cm9tQmFzZVZhbHVlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0
ZWRQcm9wZXJ0aWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydGllc1sw
XS5wcm9wZXJ0aWVzLnNpemUoKSA9PSAxKTsKLSAgICAgICAgY29uc3QgYXV0byogYW5pbWF0ZWRQ
cm9wZXJ0eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlPihh
bmltYXRlZFByb3BlcnRpZXNbMF0ucHJvcGVydGllc1swXS5nZXQoKSk7Ci0KLSAgICAgICAgYXV0
byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZShhbmltYXRlZFByb3BlcnR5
LT5jdXJyZW50QmFzZVZhbHVlKCkpOwotICAgICAgICBhdXRvJiBhbmltYXRlZFZhbHVlID0gYW5p
bWF0ZWRUeXBlLT50ZW1wbGF0ZSBhczx0eXBlbmFtZSBBbmltVmFsVHlwZTo6Q29udGVudFR5cGU+
KCk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5cGU+KFN0YXJ0QW5pbWF0aW9uQWN0
aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDAsICZhbmltYXRlZFZhbHVlKTsKLSAgICAgICAgcmV0
dXJuIGFuaW1hdGVkVHlwZTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltVmFs
VHlwZT4KLSAgICB2b2lkIHJlc2V0RnJvbUJhc2VWYWx1ZShjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkUHJvcGVydGllcywgU1ZHQW5pbWF0ZWRUeXBlJiBhbmlt
YXRlZFR5cGUpCi0gICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0aWVzWzBdLnBy
b3BlcnRpZXMuc2l6ZSgpID09IDEpOwotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRUeXBlLnR5cGUo
KSA9PSBtX3R5cGUpOwotICAgICAgICBhdXRvKiBhbmltYXRlZFByb3BlcnR5ID0gY2FzdEFuaW1h
dGVkUHJvcGVydHlUb0FjdHVhbFR5cGU8QW5pbVZhbFR5cGU+KGFuaW1hdGVkUHJvcGVydGllc1sw
XS5wcm9wZXJ0aWVzWzBdLmdldCgpKTsKLSAgICAgICAgYW5pbWF0ZWRQcm9wZXJ0eS0+c3luY2hy
b25pemVXcmFwcGVyc0lmTmVlZGVkKCk7Ci0KLSAgICAgICAgYXV0byYgYW5pbWF0ZWRWYWx1ZSA9
IGFuaW1hdGVkVHlwZS5hczx0eXBlbmFtZSBBbmltVmFsVHlwZTo6Q29udGVudFR5cGU+KCk7Ci0g
ICAgICAgIGFuaW1hdGVkVmFsdWUgPSBhbmltYXRlZFByb3BlcnR5LT5jdXJyZW50QmFzZVZhbHVl
KCk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5cGU+KFN0YXJ0QW5pbWF0aW9uQWN0
aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDAsICZhbmltYXRlZFZhbHVlKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltVmFsVHlwZT4KLSAgICB2b2lkIHN0b3BBbmltVmFsQW5p
bWF0aW9uRm9yVHlwZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1h
dGVkUHJvcGVydGllcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnRpZXNb
MF0ucHJvcGVydGllcy5zaXplKCkgPT0gMSk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZh
bFR5cGU+KFN0b3BBbmltYXRpb25BY3Rpb24sIGFuaW1hdGVkUHJvcGVydGllcywgMCk7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbVZhbFR5cGU+Ci0gICAgdm9pZCBhbmltVmFs
RGlkQ2hhbmdlRm9yVHlwZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFu
aW1hdGVkUHJvcGVydGllcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnRp
ZXNbMF0ucHJvcGVydGllcy5zaXplKCkgPT0gMSk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5p
bVZhbFR5cGU+KEFuaW1WYWxEaWRDaGFuZ2VBY3Rpb24sIGFuaW1hdGVkUHJvcGVydGllcywgMCk7
Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbVZhbFR5cGU+Ci0gICAgdm9pZCBh
bmltVmFsV2lsbENoYW5nZUZvclR5cGUoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0JiBhbmltYXRlZFByb3BlcnRpZXMpCi0gICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQ
cm9wZXJ0aWVzWzBdLnByb3BlcnRpZXMuc2l6ZSgpID09IDEpOwotICAgICAgICBleGVjdXRlQWN0
aW9uPEFuaW1WYWxUeXBlPihBbmltVmFsV2lsbENoYW5nZUFjdGlvbiwgYW5pbWF0ZWRQcm9wZXJ0
aWVzLCAwKTsKLSAgICB9Ci0KLSAgICAvLyBIZWxwZXJzIGZvciBhbmltYXRvcnMgdGhhdCBvcGVy
YXRlIG9uIHBhaXIgdHlwZXMsIGVnLiBhIHBhaXIgb2YgU1ZHQW5pbWF0ZWRJbnRlZ2Vycy4KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltVmFsVHlwZTEsIHR5cGVuYW1lIEFuaW1WYWxUeXBlMj4K
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tQmFzZVZh
bHVlcyhjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkUHJvcGVy
dGllcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnRpZXNbMF0ucHJvcGVy
dGllcy5zaXplKCkgPT0gMik7Ci0gICAgICAgIGNvbnN0IGF1dG8qIGZpcnN0QW5pbWF0ZWRQcm9w
ZXJ0eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlMT4oYW5p
bWF0ZWRQcm9wZXJ0aWVzWzBdLnByb3BlcnRpZXNbMF0uZ2V0KCkpOwotICAgICAgICBjb25zdCBh
dXRvKiBzZWNvbmRBbmltYXRlZFByb3BlcnR5ID0gY2FzdEFuaW1hdGVkUHJvcGVydHlUb0FjdHVh
bFR5cGU8QW5pbVZhbFR5cGUyPihhbmltYXRlZFByb3BlcnRpZXNbMF0ucHJvcGVydGllc1sxXS5n
ZXQoKSk7Ci0KLSAgICAgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNy
ZWF0ZShzdGQ6Om1ha2VfcGFpcihmaXJzdEFuaW1hdGVkUHJvcGVydHktPmN1cnJlbnRCYXNlVmFs
dWUoKSwgc2Vjb25kQW5pbWF0ZWRQcm9wZXJ0eS0+Y3VycmVudEJhc2VWYWx1ZSgpKSk7Ci0gICAg
ICAgIGF1dG8mIEFuaW1hdGVkVmFsdWUgPSBhbmltYXRlZFR5cGUtPnRlbXBsYXRlIGFzPHN0ZDo6
cGFpcjx0eXBlbmFtZSBBbmltVmFsVHlwZTE6OkNvbnRlbnRUeXBlLCB0eXBlbmFtZSBBbmltVmFs
VHlwZTI6OkNvbnRlbnRUeXBlPj4oKTsKLSAgICAgICAgZXhlY3V0ZUFjdGlvbjxBbmltVmFsVHlw
ZTE+KFN0YXJ0QW5pbWF0aW9uQWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDAsICZBbmltYXRl
ZFZhbHVlLmZpcnN0KTsKLSAgICAgICAgZXhlY3V0ZUFjdGlvbjxBbmltVmFsVHlwZTI+KFN0YXJ0
QW5pbWF0aW9uQWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDEsICZBbmltYXRlZFZhbHVlLnNl
Y29uZCk7Ci0gICAgICAgIHJldHVybiBhbmltYXRlZFR5cGU7Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgQW5pbVZhbFR5cGUxLCB0eXBlbmFtZSBBbmltVmFsVHlwZTI+Ci0gICAgdm9p
ZCByZXNldEZyb21CYXNlVmFsdWVzKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYgYW5pbWF0ZWRQcm9wZXJ0aWVzLCBTVkdBbmltYXRlZFR5cGUmIGFuaW1hdGVkVHlwZSkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnRpZXNbMF0ucHJvcGVydGllcy5zaXpl
KCkgPT0gMik7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFR5cGUudHlwZSgpID09IG1fdHlwZSk7
Ci0gICAgICAgIGF1dG8qIGZpcnN0QW5pbWF0ZWRQcm9wZXJ0eSA9IGNhc3RBbmltYXRlZFByb3Bl
cnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlMT4oYW5pbWF0ZWRQcm9wZXJ0aWVzWzBdLnByb3Bl
cnRpZXNbMF0uZ2V0KCkpOwotICAgICAgICBhdXRvKiBzZWNvbmRBbmltYXRlZFByb3BlcnR5ID0g
IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlMj4oYW5pbWF0ZWRQ
cm9wZXJ0aWVzWzBdLnByb3BlcnRpZXNbMV0uZ2V0KCkpOwotICAgICAgICBmaXJzdEFuaW1hdGVk
UHJvcGVydHktPnN5bmNocm9uaXplV3JhcHBlcnNJZk5lZWRlZCgpOwotICAgICAgICBzZWNvbmRB
bmltYXRlZFByb3BlcnR5LT5zeW5jaHJvbml6ZVdyYXBwZXJzSWZOZWVkZWQoKTsKLQotICAgICAg
ICBhdXRvJiBhbmltYXRlZFZhbHVlID0gYW5pbWF0ZWRUeXBlLmFzPHN0ZDo6cGFpcjx0eXBlbmFt
ZSBBbmltVmFsVHlwZTE6OkNvbnRlbnRUeXBlLCB0eXBlbmFtZSBBbmltVmFsVHlwZTI6OkNvbnRl
bnRUeXBlPj4oKTsKLSAgICAgICAgYW5pbWF0ZWRWYWx1ZS5maXJzdCA9IGZpcnN0QW5pbWF0ZWRQ
cm9wZXJ0eS0+Y3VycmVudEJhc2VWYWx1ZSgpOwotICAgICAgICBhbmltYXRlZFZhbHVlLnNlY29u
ZCA9IHNlY29uZEFuaW1hdGVkUHJvcGVydHktPmN1cnJlbnRCYXNlVmFsdWUoKTsKLSAgICAgICAg
ZXhlY3V0ZUFjdGlvbjxBbmltVmFsVHlwZTE+KFN0YXJ0QW5pbWF0aW9uQWN0aW9uLCBhbmltYXRl
ZFByb3BlcnRpZXMsIDAsICZhbmltYXRlZFZhbHVlLmZpcnN0KTsKLSAgICAgICAgZXhlY3V0ZUFj
dGlvbjxBbmltVmFsVHlwZTI+KFN0YXJ0QW5pbWF0aW9uQWN0aW9uLCBhbmltYXRlZFByb3BlcnRp
ZXMsIDEsICZhbmltYXRlZFZhbHVlLnNlY29uZCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQW5pbVZhbFR5cGUxLCB0eXBlbmFtZSBBbmltVmFsVHlwZTI+Ci0gICAgdm9pZCBzdG9w
QW5pbVZhbEFuaW1hdGlvbkZvclR5cGVzKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYgYW5pbWF0ZWRQcm9wZXJ0aWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVk
UHJvcGVydGllc1swXS5wcm9wZXJ0aWVzLnNpemUoKSA9PSAyKTsKLSAgICAgICAgZXhlY3V0ZUFj
dGlvbjxBbmltVmFsVHlwZTE+KFN0b3BBbmltYXRpb25BY3Rpb24sIGFuaW1hdGVkUHJvcGVydGll
cywgMCk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5cGUyPihTdG9wQW5pbWF0aW9u
QWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEFuaW1WYWxUeXBlMSwgdHlwZW5hbWUgQW5pbVZhbFR5cGUyPgotICAgIHZvaWQgYW5p
bVZhbERpZENoYW5nZUZvclR5cGVzKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYgYW5pbWF0ZWRQcm9wZXJ0aWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJv
cGVydGllc1swXS5wcm9wZXJ0aWVzLnNpemUoKSA9PSAyKTsKLSAgICAgICAgZXhlY3V0ZUFjdGlv
bjxBbmltVmFsVHlwZTE+KEFuaW1WYWxEaWRDaGFuZ2VBY3Rpb24sIGFuaW1hdGVkUHJvcGVydGll
cywgMCk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5cGUyPihBbmltVmFsRGlkQ2hh
bmdlQWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDEpOwotICAgIH0KLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEFuaW1WYWxUeXBlMSwgdHlwZW5hbWUgQW5pbVZhbFR5cGUyPgotICAgIHZvaWQg
YW5pbVZhbFdpbGxDaGFuZ2VGb3JUeXBlcyhjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmIGFuaW1hdGVkUHJvcGVydGllcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRl
ZFByb3BlcnRpZXNbMF0ucHJvcGVydGllcy5zaXplKCkgPT0gMik7Ci0gICAgICAgIGV4ZWN1dGVB
Y3Rpb248QW5pbVZhbFR5cGUxPihBbmltVmFsV2lsbENoYW5nZUFjdGlvbiwgYW5pbWF0ZWRQcm9w
ZXJ0aWVzLCAwKTsKLSAgICAgICAgZXhlY3V0ZUFjdGlvbjxBbmltVmFsVHlwZTI+KEFuaW1WYWxX
aWxsQ2hhbmdlQWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDEpOwotICAgIH0KLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEFuaW1WYWxUeXBlPgotICAgIEFuaW1WYWxUeXBlKiBjYXN0QW5pbWF0
ZWRQcm9wZXJ0eVRvQWN0dWFsVHlwZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5KiBwcm9wZXJ0
eSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7Ci0gICAgICAgIEFTU0VSVChwcm9w
ZXJ0eS0+Y29udGV4dEVsZW1lbnQoKSk7Ci0gICAgICAgIC8vIFdlIGNhbid0IGFzc2VydCBwcm9w
ZXJ0eS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSA9PSBtX3R5cGUsIGFzIHRoZXJlJ3MgYW4gZXhj
ZXB0aW9uIGZvciBTVkdNYXJrZXJFbGVtZW50cyBvcmllbnQgYXR0cmlidXRlLgotICAgICAgICBp
ZiAocHJvcGVydHktPmFuaW1hdGVkUHJvcGVydHlUeXBlKCkgIT0gbV90eXBlKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQW5nbGUpOwotICAgICAgICAgICAgQVNTRVJU
KHByb3BlcnR5LT5hbmltYXRlZFByb3BlcnR5VHlwZSgpID09IEFuaW1hdGVkRW51bWVyYXRpb24p
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBbmltVmFsVHlwZSo+KHBy
b3BlcnR5KTsKLSAgICB9Ci0KLSAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7Ci0gICAg
U1ZHQW5pbWF0aW9uRWxlbWVudCogbV9hbmltYXRpb25FbGVtZW50OwotICAgIFNWR0VsZW1lbnQq
IG1fY29udGV4dEVsZW1lbnQ7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBBbmltYXRpb25BY3Rpb24g
ewotICAgICAgICBTdGFydEFuaW1hdGlvbkFjdGlvbiwKLSAgICAgICAgU3RvcEFuaW1hdGlvbkFj
dGlvbiwKLSAgICAgICAgQW5pbVZhbFdpbGxDaGFuZ2VBY3Rpb24sCi0gICAgICAgIEFuaW1WYWxE
aWRDaGFuZ2VBY3Rpb24KLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbVZhbFR5
cGU+Ci0gICAgdm9pZCBleGVjdXRlQWN0aW9uKEFuaW1hdGlvbkFjdGlvbiBhY3Rpb24sIGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRQcm9wZXJ0aWVzLCB1bnNp
Z25lZCB3aGljaFByb3BlcnR5LCB0eXBlbmFtZSBBbmltVmFsVHlwZTo6Q29udGVudFR5cGUqIGFu
aW1hdGVkVmFsdWUgPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IENhbid0IHVz
ZSBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmVjYXVzZSBvZiBjaXJjdWxhciBo
ZWFkZXIgZGVwZW5kZW5jeS4gV291bGQgYmUgbmljZSB0byB1bnRhbmdsZSB0aGlzLgotICAgICAg
ICBzZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCphbmltYXRlZFByb3BlcnRpZXNbMF0uZWxlbWVu
dCwgdHJ1ZSk7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBhbmltYXRlZFByb3BlcnR5IDogYW5pbWF0
ZWRQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKHdoaWNoUHJvcGVydHkgPCBhbmltYXRlZFByb3BlcnR5LnByb3BlcnRpZXMu
c2l6ZSgpKTsKLSAgICAgICAgICAgIEFuaW1WYWxUeXBlKiBwcm9wZXJ0eSA9IGNhc3RBbmltYXRl
ZFByb3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlPihhbmltYXRlZFByb3BlcnR5LnByb3Bl
cnRpZXNbd2hpY2hQcm9wZXJ0eV0uZ2V0KCkpOwotCi0gICAgICAgICAgICBzd2l0Y2ggKGFjdGlv
bikgewotICAgICAgICAgICAgY2FzZSBTdGFydEFuaW1hdGlvbkFjdGlvbjoKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoYW5pbWF0ZWRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0
eS0+aXNBbmltYXRpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHktPmFuaW1hdGlv
blN0YXJ0ZWQoYW5pbWF0ZWRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFN0b3BBbmltYXRpb25BY3Rpb246Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFh
bmltYXRlZFZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAocHJvcGVydHktPmlzQW5pbWF0aW5n
KCkpCi0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5LT5hbmltYXRpb25FbmRlZCgpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBbmltVmFsV2lsbENoYW5nZUFj
dGlvbjoKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWFuaW1hdGVkVmFsdWUpOwotICAgICAgICAg
ICAgICAgIHByb3BlcnR5LT5hbmltVmFsV2lsbENoYW5nZSgpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBBbmltVmFsRGlkQ2hhbmdlQWN0aW9uOgotICAgICAgICAg
ICAgICAgIEFTU0VSVCghYW5pbWF0ZWRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHkt
PmFuaW1WYWxEaWRDaGFuZ2UoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIHNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKmFuaW1h
dGVkUHJvcGVydGllc1swXS5lbGVtZW50LCBmYWxzZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZv
aWQgc2V0SW5zdGFuY2VVcGRhdGVzQmxvY2tlZChTVkdFbGVtZW50JiwgYm9vbCk7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxl
bWVudC5jcHAKaW5kZXggMjZkZDNhNGZmYjQwYTRmMDEyNmY2ZDQ4YzMxY2VmNzZmMzAzOTIzMS4u
YTA2ZmJlZTAxNWQ0MTg3YzM3M2E2ZWI1ZjYwNGY1NzY2OTlmOTRiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcApAQCAtNjI3LDIwICs2MjcsNiBAQCB2b2lk
IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OmNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlKFNWR0VsZW1lbnQq
IGVsZW1lbnQsIENTU1Byb3BlcgogICAgIGVsZW1lbnQtPnNldFVzZU92ZXJyaWRlQ29tcHV0ZWRT
dHlsZShmYWxzZSk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YWRqdXN0Rm9ySW5o
ZXJpdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSwgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICAvLyBGSVhNRTogQXQgdGhlIG1v
bWVudCB0aGUgY29tcHV0ZWQgc3R5bGUgZ2V0cyByZXR1cm5lZCBhcyBhIFN0cmluZyBhbmQgbmVl
ZHMgdG8gZ2V0IHBhcnNlZCBhZ2Fpbi4KLSAgICAvLyBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IHdh
bnQgdG8gd29yayB3aXRoIHRoZSB2YWx1ZSB0eXBlIGRpcmVjdGx5IHRvIGF2b2lkIHRoZSBTdHJp
bmcgcGFyc2luZy4KLSAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7Ci0KLSAgICBhdXRvIHBhcmVu
dCA9IG1ha2VSZWZQdHIodGFyZ2V0RWxlbWVudC0+cGFyZW50RWxlbWVudCgpKTsKLSAgICBpZiAo
IXBhcmVudCB8fCAhcGFyZW50LT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgU1ZHRWxlbWVudCYgc3ZnUGFyZW50ID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudCk7
Ci0gICAgY29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUoJnN2Z1BhcmVudCwgY3NzUHJvcGVydHlJRChh
dHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSwgdmFsdWUpOwotfQotCiBzdGF0aWMgYm9vbCBpbmhl
cml0c0Zyb21Qcm9wZXJ0eShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGluaGVyaXQoImluaGVyaXQiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5oCmluZGV4IDc3MzA4OGI2N2IxNDE3ZTM2NTkxNjlmOThiYjBkMmJj
ZmJhYWM3ZWIuLjQ2NTZmNDc0MWM4NjZkOGM1NThmYzZmMjQzMTQ1MDc0M2M4ZjI0ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaApAQCAtMzIsNyArMzIsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb25kaXRpb25FdmVudExpc3RlbmVyOwotY2xh
c3MgU1ZHQW5pbWF0ZWRUeXBlOwogY2xhc3MgVGltZUNvbnRhaW5lcjsKIAogLy8gSWYgd2UgaGF2
ZSAnY3VycmVudENvbG9yJyBvciAnaW5oZXJpdCcgYXMgYW5pbWF0aW9uIHZhbHVlLCB3ZSBuZWVk
IHRvIGdyYWIKQEAgLTcwLDUyICs2OSw2IEBAIHB1YmxpYzoKICAgICBBbmltYXRlZFByb3BlcnR5
VmFsdWVUeXBlIGZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbVBy
b3BlcnR5VmFsdWVUeXBlOyB9CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSB0b1Byb3Bl
cnR5VmFsdWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90b1Byb3BlcnR5VmFsdWVUeXBlOyB9CiAK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+IHZvaWQgYWRqdXN0Rm9ySW5oZXJp
dGFuY2UoQW5pbWF0ZWRUeXBlICgqcGFyc2VUeXBlRnJvbVN0cmluZykoU1ZHQW5pbWF0aW9uRWxl
bWVudCosIGNvbnN0IFN0cmluZyYpLCBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIHZhbHVlVHlw
ZSwgQW5pbWF0ZWRUeXBlJiBhbmltYXRlZFR5cGUsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KQotICAgIHsKLSAgICAgICAgaWYgKHZhbHVlVHlwZSAhPSBJbmhlcml0VmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIC8vIFJlcGxhY2UgJ2luaGVyaXQnIGJ5IGl0cyBjb21wdXRl
ZCBwcm9wZXJ0eSB2YWx1ZS4KLSAgICAgICAgQVNTRVJUKHBhcnNlVHlwZUZyb21TdHJpbmcpOwot
ICAgICAgICBTdHJpbmcgdHlwZVN0cmluZzsKLSAgICAgICAgYWRqdXN0Rm9ySW5oZXJpdGFuY2Uo
Y29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgdHlwZVN0cmluZyk7Ci0gICAgICAgIGFu
aW1hdGVkVHlwZSA9ICgqcGFyc2VUeXBlRnJvbVN0cmluZykodGhpcywgdHlwZVN0cmluZyk7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPiBib29sIGFkanVzdEZy
b21Ub0xpc3RWYWx1ZXMoY29uc3QgQW5pbWF0ZWRUeXBlJiBmcm9tTGlzdCwgY29uc3QgQW5pbWF0
ZWRUeXBlJiB0b0xpc3QsIEFuaW1hdGVkVHlwZSYgYW5pbWF0ZWRMaXN0LCBmbG9hdCBwZXJjZW50
YWdlLCBib29sIHJlc2l6ZUFuaW1hdGVkTGlzdElmTmVlZGVkID0gdHJ1ZSkKLSAgICB7Ci0gICAg
ICAgIC8vIElmIG5vICd0bycgdmFsdWUgaXMgZ2l2ZW4sIG5vdGhpbmcgdG8gYW5pbWF0ZS4KLSAg
ICAgICAgdW5zaWduZWQgdG9MaXN0U2l6ZSA9IHRvTGlzdC5zaXplKCk7Ci0gICAgICAgIGlmICgh
dG9MaXN0U2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAvLyBJZiB0
aGUgJ2Zyb20nIHZhbHVlIGlzIGdpdmVuIGFuZCBpdCdzIGxlbmd0aCBkb2Vzbid0IG1hdGNoIHRo
ZSAndG8nIHZhbHVlIGxpc3QgbGVuZ3RoLCBmYWxsYmFjayB0byBhIGRpc2NyZXRlIGFuaW1hdGlv
bi4KLSAgICAgICAgdW5zaWduZWQgZnJvbUxpc3RTaXplID0gZnJvbUxpc3Quc2l6ZSgpOwotICAg
ICAgICBpZiAoZnJvbUxpc3RTaXplICE9IHRvTGlzdFNpemUgJiYgZnJvbUxpc3RTaXplKSB7Ci0g
ICAgICAgICAgICBpZiAocGVyY2VudGFnZSA8IDAuNSkgewotICAgICAgICAgICAgICAgIGlmIChh
bmltYXRpb25Nb2RlKCkgIT0gQW5pbWF0aW9uTW9kZTo6VG8pCi0gICAgICAgICAgICAgICAgICAg
IGFuaW1hdGVkTGlzdCA9IEFuaW1hdGVkVHlwZShmcm9tTGlzdCk7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBhbmltYXRlZExpc3QgPSBBbmltYXRlZFR5cGUodG9MaXN0KTsK
LQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJU
KCFmcm9tTGlzdFNpemUgfHwgZnJvbUxpc3RTaXplID09IHRvTGlzdFNpemUpOwotICAgICAgICBp
ZiAocmVzaXplQW5pbWF0ZWRMaXN0SWZOZWVkZWQgJiYgYW5pbWF0ZWRMaXN0LnNpemUoKSA8IHRv
TGlzdFNpemUpCi0gICAgICAgICAgICBhbmltYXRlZExpc3QucmVzaXplKHRvTGlzdFNpemUpOwot
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFu
aW1hdGVkVHlwZT4gdm9pZCBhbmltYXRlRGlzY3JldGVUeXBlKGZsb2F0IHBlcmNlbnRhZ2UsIGNv
bnN0IEFuaW1hdGVkVHlwZSYgZnJvbVR5cGUsIGNvbnN0IEFuaW1hdGVkVHlwZSYgdG9UeXBlLCBB
bmltYXRlZFR5cGUmIGFuaW1hdGVkVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICgoYW5pbWF0aW9u
TW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OkZyb21UbyAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBh
bmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gfHwgcGVyY2VudGFnZSA9PSAxKSB7
Ci0gICAgICAgICAgICBhbmltYXRlZFR5cGUgPSBBbmltYXRlZFR5cGUodG9UeXBlKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBhbmltYXRlZFR5cGUgPSBBbmltYXRl
ZFR5cGUoZnJvbVR5cGUpOwotICAgIH0KLQogICAgIHZvaWQgYW5pbWF0ZUFkZGl0aXZlTnVtYmVy
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBmbG9hdCBmcm9tTnVtYmVy
LCBmbG9hdCB0b051bWJlciwgZmxvYXQgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXIsIGZsb2F0JiBh
bmltYXRlZE51bWJlcikKICAgICB7CiAgICAgICAgIGZsb2F0IG51bWJlcjsKQEAgLTE5Miw5ICsx
NDUsNiBAQCBwcml2YXRlOgogICAgIGZsb2F0IGNhbGN1bGF0ZVBlcmNlbnRGb3JGcm9tVG8oZmxv
YXQgcGVyY2VudCkgY29uc3Q7CiAgICAgdW5zaWduZWQgY2FsY3VsYXRlS2V5VGltZXNJbmRleChm
bG9hdCBwZXJjZW50KSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlBbmltYXRlZFZhbHVlKFNob3Vs
ZEFwcGx5QW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZFR5cGUqKTsKLSAgICB2b2lkIGFkanVz
dEZvckluaGVyaXRhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFN0cmluZyYpOwotCiAgICAgdm9pZCBzZXRDYWxjTW9kZShj
b25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGJvb2wgbV9hbmltYXRpb25WYWxpZCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJjZDhhYzA0YzMzYjgzYzU2NzI2YzE4ZjRmM2FjMzRhMWNhODYzNGQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAx
MSwgMjAxMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBTVkdBbmltYXRpb25FbGVtZW50OwotCi1jbGFzcyBTVkdBbmltYXRvckZhY3RvcnkgewotcHVi
bGljOgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlVHlwZShBbmltYXRlZFBy
b3BlcnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0
ZVR5cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OwotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IGNyZWF0ZShTVkdBbmltYXRpb25F
bGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgQW5p
bWF0ZWRQcm9wZXJ0eVR5cGUgYXR0cmlidXRlVHlwZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChh
bmltYXRpb25FbGVtZW50KTsKLSAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICAg
ICAgQVNTRVJUKGF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChhdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCkK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTVkdBbmltYXRvckZhY3Rv
cnkoKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCmluZGV4IGVhZWIyMmFhYmVi
ZWQ5YmUzOGNhOGNmMGIzZDRiNmNmNWE2MTkwYmMuLmUyY2VhMGYwYzFiOTY5ZjJjNWFmNDA4ZGYx
MThhNGYwMzRjN2M4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQuaApAQCAtNTYsMTAgKzU2LDcgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQpOwogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93
bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9CisgICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KSB7IHJldHVybiBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KGJvb2wpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc1BhcnNlckluc2VydGVkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggZTVkMTBiM2Zm
YWE1MGEyMThmMzkwZmJmMzAxMzBhZjVmYzg2N2Q4MC4uMzk0MDk1MDA4YjQ4MmRjZTQ3NDkwMTYw
YzA4ODRmNTE3ZmM0MjM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgK
QEAgLTUxLDExICs1MSw2IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9
IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdGRUltYWdlRWxlbWVudCwgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBT
VkdVUklSZWZlcmVuY2U+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5
UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAot
ICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKaW5k
ZXggODJiN2Q1NjZiNDk1Nzk4ZGM1OWVkZTI5ZDI0YjFlY2JiNzIyYzliNi4uNjEyMmU1NGM0ZjI5
YzYzYjIzNTc3ODFkZjhjOWQzYzc4MWY1OWExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5oCkBAIC03NSwxOCArNzUsMTEgQEAgcHJpdmF0ZToKICAgICBT
VkdGRU1vcnBob2xvZ3lFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
CiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJ
bXBsPFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcz47Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lz
dHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0
dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMo
KTsKICAgICBjb25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1
c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAg
ICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAppbmRleCA4YWVlMmJlYmJkZDIyNDMwZTJkYmRkOGI1YzZi
MzlkZTcyYjM2MmU0Li4wMjkyZmMwYTliNTE4NTQ1OGRiMGJhMDE1NmU1NTdmNTRkMWUwNGM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKQEAgLTQyLDExICs0Miw2IEBAIHBy
aXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdp
c3RyeTxTVkdGRVRpbGVFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCmluZGV4IDNiMGM0MzQwNjIwMThiMTYwZTNlNzU5
Nzk0Zjk4NWQ0ZGY5ZmIzNmQuLmEyMDkxNWFhNjcxNDhmNGE2NGNkOGY1NjdmZWI2OWIwMmUyNjZk
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKQEAgLTY2LDEwICs2Niw3IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTVkdGaXRUb1ZpZXdCb3goU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIFNWR1Byb3BlcnR5QWNjZXNzID0gU1ZHUHJvcGVydHlBY2Nlc3M6OlJlYWRX
cml0ZSk7CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3du
ZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KKyAgICBzdGF0aWMg
Ym9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
IHsgcmV0dXJuIFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSk7IH0KIAogICAgIHZvaWQgcmVzZXQoKTsKICAgICBib29sIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggMGI0MGQ0MjAyMzMwOGRjOTZkMTU0NThhOTNm
MDBhN2U5ZjdiODVjZC4uYmNiNjc1ZWY3ZjBkOWIxNzM0OWNmZDAzNWFkYjJlNDZhMDUyNmU5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKQEAgLTIsNyArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNv
dXJjZVJhZGlhbEdyYWRpZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdTdG9wRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKICNp
bmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00NCwyMyArNDMsMTQgQEAgU1ZH
R3JhZGllbnRFbGVtZW50OjpTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGQKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
dGhpcykKICAgICAsIFNWR1VSSVJlZmVyZW5jZSh0aGlzKQogewotICAgIHJlZ2lzdGVyQXR0cmli
dXRlcygpOwotCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lz
dGVyUHJvcGVydHk8U1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIFNWR1NwcmVhZE1ldGhvZFR5
cGUsICZTVkdHcmFkaWVudEVsZW1lbnQ6Om1fc3ByZWFkTWV0aG9kPigpOwogICAgICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0
ciwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgJlNWR0dyYWRpZW50RWxlbWVudDo6bV9ncmFk
aWVudFVuaXRzPigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5
PFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsICZTVkdHcmFkaWVudEVsZW1lbnQ6Om1f
Z3JhZGllbnRUcmFuc2Zvcm0+KCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgU1ZHR3JhZGllbnRFbGVt
ZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmli
dXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpncmFkaWVudFRy
YW5zZm9ybUF0dHIsICZTVkdHcmFkaWVudEVsZW1lbnQ6Om1fZ3JhZGllbnRUcmFuc2Zvcm0+KCk7
Ci19Ci0KIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikgewpAQCAtNzEsMTAgKzYxLDcgQEAg
dm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1MKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1
ZXMgbmV3TGlzdDsKLSAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSk7Ci0gICAgICAgIG1fZ3Jh
ZGllbnRUcmFuc2Zvcm0uZGV0YWNoQW5pbWF0ZWRMaXN0V3JhcHBlcnMoYXR0cmlidXRlT3duZXJQ
cm94eSgpLCBuZXdMaXN0LnNpemUoKSk7Ci0gICAgICAgIG1fZ3JhZGllbnRUcmFuc2Zvcm0uc2V0
VmFsdWUoV1RGTW92ZShuZXdMaXN0KSk7CisgICAgICAgIG1fZ3JhZGllbnRUcmFuc2Zvcm0tPmJh
c2VWYWwoKS0+cGFyc2UodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKaW5kZXggOGQ4NTdkM2FhODhmMTFjOWYxMGVl
NDJhMjgxN2Y4YzBjZmIwYjgyMC4uMjkwOGE3ZWJkODQwYzVlOTVlMGNhYTllMzU1NTc4MWVjNzM1
NGM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaApAQCAtMjIsNyAr
MjIsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFkaWVudC5oIgotI2luY2x1ZGUg
IlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKQEAgLTkwLDE5ICs4OSwxNiBAQCBwdWJsaWM6CiAKICAgICBTVkdTcHJlYWRNZXRob2RU
eXBlIHNwcmVhZE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9kLT5jdXJyZW50
VmFsdWU8U1ZHU3ByZWFkTWV0aG9kVHlwZT4oKTsgfQogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5p
dFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRVbml0cy0+Y3Vy
cmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0KLSAgICBjb25zdCBTVkdU
cmFuc2Zvcm1MaXN0VmFsdWVzJiBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z3JhZGllbnRUcmFuc2Zvcm0uY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0K
KyAgICBjb25zdCBTVkdUcmFuc2Zvcm1MaXN0JiBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0IHsg
cmV0dXJuIG1fZ3JhZGllbnRUcmFuc2Zvcm0tPmN1cnJlbnRWYWx1ZSgpOyB9CiAKICAgICBTVkdB
bmltYXRlZEVudW1lcmF0aW9uJiBzcHJlYWRNZXRob2RBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3By
ZWFkTWV0aG9kOyB9CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgZ3JhZGllbnRVbml0c0Fu
aW1hdGVkKCkgeyByZXR1cm4gbV9ncmFkaWVudFVuaXRzOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdD4gZ3JhZGllbnRUcmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1f
Z3JhZGllbnRUcmFuc2Zvcm0uYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkp
OyB9CisgICAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0JiBncmFkaWVudFRyYW5zZm9ybUFuaW1h
dGVkKCkgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAg
U1ZHR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0g
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9CisgICAgc3RhdGljIGJvb2wgaXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAKICAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwpAQCAtMTEyLDE1ICsxMDgsMTMgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCiAg
ICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdp
c3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVy
dHlSZWdpc3RyeTsgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVy
UHJveHkgeyAqdGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9zcHJlYWRNZXRo
b2QgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHU3ByZWFkTWV0aG9k
UGFkKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX2dyYWRpZW50VW5pdHMg
eyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB9OwotICAgIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdEF0dHJpYnV0ZSBtX2dyYWRpZW50VHJhbnNmb3JtOworICAgIFJlZjxTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3Q+IG1fZ3JhZGllbnRUcmFuc2Zvcm0geyBTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3Q6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBjNTk2MzZjZjc5MjBhYzhj
MTEyN2YyY2ZhZjc5YmE3ZmMxYzcxYzJmLi5mNzJlMTRiMTQwMmU1MmQ3OTQyNDRiN2I0NmJkYzUy
ZTQ5YTU3ZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApA
QCAtNDIsNyArNDIsMTAgQEAgU1ZHR3JhcGhpY3NFbGVtZW50OjpTVkdHcmFwaGljc0VsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGQKICAgICAsIFNWR1Rlc3Rz
KHRoaXMpCiAgICAgLCBtX3Nob3VsZElzb2xhdGVCbGVuZGluZyhmYWxzZSkKIHsKLSAgICByZWdp
c3RlckF0dHJpYnV0ZXMoKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Cisg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3Ry
eTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgJlNWR0dyYXBoaWNz
RWxlbWVudDo6bV90cmFuc2Zvcm0+KCk7CisgICAgfSk7CiB9CiAKIFNWR0dyYXBoaWNzRWxlbWVu
dDo6flNWR0dyYXBoaWNzRWxlbWVudCgpID0gZGVmYXVsdDsKQEAgLTEwNiw3ICsxMDksNyBAQCBB
ZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3Jt
KCkgY29uc3QKICAgICAgICAgfQogCiAgICAgfSBlbHNlCi0gICAgICAgIHRyYW5zZm9ybSgpLmNv
bmNhdGVuYXRlKG1hdHJpeCk7CisgICAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybSgpLmNvbmNhdGVu
YXRlKCk7CiAKICAgICBpZiAobV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVy
biAqbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gKiBtYXRyaXg7CkBAIC0xMjAsMjEgKzEyMywxMCBA
QCBBZmZpbmVUcmFuc2Zvcm0qIFNWR0dyYXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNm
b3JtKCkKICAgICByZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9CiAKLXZv
aWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8m
IHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNW
R05hbWVzOjp0cmFuc2Zvcm1BdHRyLCAmU1ZHR3JhcGhpY3NFbGVtZW50OjptX3RyYW5zZm9ybT4o
KTsKLX0KLQogdm9pZCBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKLSAgICAgICAgU1ZHVHJhbnNmb3Jt
TGlzdFZhbHVlcyBuZXdMaXN0OwotICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlKTsKLSAgICAg
ICAgbV90cmFuc2Zvcm0uZGV0YWNoQW5pbWF0ZWRMaXN0V3JhcHBlcnMoYXR0cmlidXRlT3duZXJQ
cm94eSgpLCBuZXdMaXN0LnNpemUoKSk7Ci0gICAgICAgIG1fdHJhbnNmb3JtLnNldFZhbHVlKG5l
d0xpc3QpOworICAgICAgICBtX3RyYW5zZm9ybS0+YmFzZVZhbCgpLT5wYXJzZSh2YWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0NCwxOCArMTM2LDE1IEBAIHZvaWQgU1ZHR3Jh
cGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTCiAKIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChpc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNm
b3JtQXR0cikgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlz
KTsKIAotICAgICAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICAgICAg
aWYgKCFyZW5kZXJlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVy
ZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNU
cmFuc2Zvcm1VcGRhdGUoKTsKICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBT
VkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAppbmRleCA1M2FhZmFkZTM2ZmZmYjkzOTBlNTc2NjM4YzY4
YWVkZDQwMDMyNTg4Li41ZDVmNGJhMjM1MTgxNjg2MTMwMTIxMzA5ODE2ZTNlZmQxOWUwZWZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Lmgi
CiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCiAjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgpAQCAtNjgsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdH
cmFwaGljc0VsZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1Rlc3RzPjsKIAotICAgIGNvbnN0IGF1dG8m
IHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtLmN1cnJlbnRWYWx1ZShhdHRy
aWJ1dGVPd25lclByb3h5KCkpOyB9Ci0gICAgYXV0byB0cmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0
dXJuIG1fdHJhbnNmb3JtLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsg
fQorICAgIGNvbnN0IFNWR1RyYW5zZm9ybUxpc3QmIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNmb3JtLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdCYgdHJhbnNmb3JtQW5pbWF0ZWQoKSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwpAQCAtODMsMTUgKzgyLDggQEAgcHJpdmF0ZToKICAgICBib29sIGlzU1ZHR3JhcGhp
Y3NFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgY29uc3Qg
U1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQotICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Ry
eTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICAvLyBVc2Vk
IGJ5IDxhbmltYXRlTW90aW9uPgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBZmZpbmVUcmFuc2Zvcm0+
IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOwogCkBAIC0xMDAsNyArOTIsNyBAQCBwcml2YXRlOgog
CiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9
OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAg
ICBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUgbV90cmFuc2Zvcm07CisgICAgUmVm
PFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4gbV90cmFuc2Zvcm0geyBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3Q6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlZ2FjeUF0dHJpYnV0ZUFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2I0
OTJmODg3MWUyZWNiMWU3NDc5M2IxNmRmOTJhNWMxNjlhZmRkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZWdhY3lB
dHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1h
dGlvbkNvbnRyb2xsZXIuaCIKLQotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNs
dWRlICJDU1NQcm9wZXJ0eVBhcnNlci5oIgotI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKLSNp
bmNsdWRlICJTVkdBbmltYXRlRWxlbWVudEJhc2UuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRpb25F
bGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0b3JGYWN0b3J5LmgiCi0jaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU3R5bGVQcm9wZXJ0
aWVzLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1TVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyOjpTVkdMZWdh
Y3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyKFNWR0FuaW1hdGlvbkVsZW1lbnQmIGFuaW1h
dGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQpCi0gICAgOiBTVkdBdHRyaWJ1
dGVBbmltYXRpb25Db250cm9sbGVyQmFzZShhbmltYXRpb25FbGVtZW50LCB0YXJnZXRFbGVtZW50
KQotICAgICwgbV9hbmltYXRlZFByb3BlcnR5VHlwZShkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5
VHlwZShhbmltYXRpb25FbGVtZW50LCB0YXJnZXRFbGVtZW50LCBhbmltYXRpb25FbGVtZW50LmF0
dHJpYnV0ZU5hbWUoKSkpCi17Ci19Ci0KLVNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yJiBTVkdMZWdh
Y3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyOjphbmltYXRlZFR5cGVBbmltYXRvcigpCi17
Ci0gICAgaWYgKCFtX2FuaW1hdG9yKQotICAgICAgICBtX2FuaW1hdG9yID0gU1ZHQW5pbWF0b3JG
YWN0b3J5OjpjcmVhdGUoJm1fYW5pbWF0aW9uRWxlbWVudCwgJm1fdGFyZ2V0RWxlbWVudCwgbV9h
bmltYXRlZFByb3BlcnR5VHlwZSk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUg
PT0gbV9hbmltYXRvci0+dHlwZSgpKTsKLSAgICByZXR1cm4gKm1fYW5pbWF0b3I7Ci19Ci0KLWJv
b2wgU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNBZGRpdGl2ZSgpIGNv
bnN0Ci17Ci0gICAgLy8gU3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUuaHRt
bCNBbmltYXRpb25BdHRyaWJ1dGVzQW5kUHJvcGVydGllcy4KLSAgICBzd2l0Y2ggKG1fYW5pbWF0
ZWRQcm9wZXJ0eVR5cGUpIHsKLSAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKLSAgICBjYXNlIEFu
aW1hdGVkRW51bWVyYXRpb246Ci0gICAgY2FzZSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW86
Ci0gICAgY2FzZSBBbmltYXRlZFN0cmluZzoKLSAgICBjYXNlIEFuaW1hdGVkVW5rbm93bjoKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKLSAgICBjYXNlIEFu
aW1hdGVkQ29sb3I6Ci0gICAgY2FzZSBBbmltYXRlZEludGVnZXI6Ci0gICAgY2FzZSBBbmltYXRl
ZEludGVnZXJPcHRpb25hbEludGVnZXI6Ci0gICAgY2FzZSBBbmltYXRlZExlbmd0aDoKLSAgICBj
YXNlIEFuaW1hdGVkTGVuZ3RoTGlzdDoKLSAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgotICAgIGNh
c2UgQW5pbWF0ZWROdW1iZXJMaXN0OgotICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51
bWJlcjoKLSAgICBjYXNlIEFuaW1hdGVkUGF0aDoKLSAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgot
ICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgotICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Ogot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wg
U1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6aGFzVmFsaWRBdHRyaWJ1dGVU
eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmlt
YXRlZFVua25vd247Ci19Ci0KLWJvb2wgU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJv
bGxlcjo6aXNEaXNjcmV0ZUFuaW1hdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9hbmltYXRl
ZFByb3BlcnR5VHlwZSA9PSBBbmltYXRlZEJvb2xlYW4KLSAgICAgICAgfHwgbV9hbmltYXRlZFBy
b3BlcnR5VHlwZSA9PSBBbmltYXRlZEVudW1lcmF0aW9uCi0gICAgICAgIHx8IG1fYW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUgPT0gQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvCi0gICAgICAgIHx8IG1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmc7Ci19Ci0KLWJvb2wgU1ZHTGVn
YWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVz
KGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKLXsKLSAg
ICBtX2FuaW1hdGlvbkVsZW1lbnQuZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJp
bmcsIHRvU3RyaW5nKTsKLSAgICBhbmltYXRlZFR5cGVBbmltYXRvcigpLmNhbGN1bGF0ZUZyb21B
bmRUb1ZhbHVlcyhtX2Zyb21UeXBlLCBtX3RvVHlwZSwgZnJvbVN0cmluZywgdG9TdHJpbmcpOwot
ICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlID09IG1fYW5pbWF0b3ItPnR5cGUoKSk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9u
Q29udHJvbGxlcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0
cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKLXsKLSAgICBpZiAobV9hbmltYXRpb25FbGVt
ZW50LmFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpCeSAmJiAhaXNBZGRpdGl2ZSgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBmcm9tLWJ5IGFuaW1hdGlvbiBtYXkg
b25seSBiZSB1c2VkIHdpdGggYXR0cmlidXRlcyB0aGF0IHN1cHBvcnQgYWRkaXRpb24gKGUuZy4g
bW9zdCBudW1lcmljIGF0dHJpYnV0ZXMpLgotICAgIGlmIChtX2FuaW1hdGlvbkVsZW1lbnQuYW5p
bWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OkZyb21CeSAmJiAhaXNBZGRpdGl2ZSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQuZGV0ZXJtaW5l
UHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsKLSAgICBhbmltYXRlZFR5
cGVBbmltYXRvcigpLmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhtX2Zyb21UeXBlLCBtX3RvVHlw
ZSwgZnJvbVN0cmluZywgYnlTdHJpbmcpOwotICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlU
eXBlID09IG1fYW5pbWF0b3ItPnR5cGUoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
U1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FsY3VsYXRlVG9BdEVuZE9m
RHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKQotewot
ICAgIGlmICh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBtX3RvQXRFbmRPZkR1cmF0aW9uVHlwZSA9IGFuaW1hdGVkVHlwZUFuaW1h
dG9yKCkuY29uc3RydWN0RnJvbVN0cmluZyh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZyk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi1zdGF0aWMgaW5saW5lIGJvb2wgcHJv
cGVydHlUeXBlc0FyZUNvbnNpc3RlbnQoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgZXhwZWN0ZWRQcm9w
ZXJ0eVR5cGUsIGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRU
eXBlcykKLXsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiBhbmltYXRlZFR5cGVzKSB7Ci0gICAgICAg
IGZvciAoYXV0byYgcHJvcGVydHkgOiB0eXBlLnByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGlm
IChleHBlY3RlZFByb3BlcnR5VHlwZSAhPSBwcm9wZXJ0eS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGUo
KSkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgYWxsb3dlZCBpbmNvbnNp
c3RlbmN5LiBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IgaGFuZGxlcyBib3RoIFNWR0FuaW1hdGVk
QW5nbGUgJiBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGZvciBtYXJrZXJzIG9yaWVudCBhdHRyaWJ1
dGUuCi0gICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkUHJvcGVydHlUeXBlID09IEFuaW1hdGVk
QW5nbGUgJiYgcHJvcGVydHktPmFuaW1hdGVkUHJvcGVydHlUeXBlKCkgPT0gQW5pbWF0ZWRFbnVt
ZXJhdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYKLQotdm9pZCBTVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRp
b25Db250cm9sbGVyOjpyZXNldEFuaW1hdGVkVHlwZSgpCi17Ci0gICAgU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3ImIGFuaW1hdG9yID0gYW5pbWF0ZWRUeXBlQW5pbWF0b3IoKTsKLSAgICBBU1NFUlQo
bV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBhbmltYXRvci50eXBlKCkpOwotCi0gICAgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSA9IG1fYW5pbWF0aW9uRWxlbWVudC5hdHRyaWJ1
dGVOYW1lKCk7Ci0gICAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6U2hvdWxkQXBwbHlBbmltYXRpb24g
c2hvdWxkQXBwbHkgPSBtX2FuaW1hdGlvbkVsZW1lbnQuc2hvdWxkQXBwbHlBbmltYXRpb24oJm1f
dGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7Ci0KLSAgICBpZiAoc2hvdWxkQXBwbHkgPT0g
U1ZHQW5pbWF0aW9uRWxlbWVudDo6RG9udEFwcGx5QW5pbWF0aW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoc2hvdWxkQXBwbHkgPT0gU1ZHQW5pbWF0aW9uRWxlbWVudDo6QXBwbHlYTUxB
bmltYXRpb24gfHwgc2hvdWxkQXBwbHkgPT0gU1ZHQW5pbWF0aW9uRWxlbWVudDo6QXBwbHlYTUxh
bmRDU1NBbmltYXRpb24pIHsKLSAgICAgICAgLy8gU1ZHIERPTSBhbmltVmFsIGFuaW1hdGlvbiBj
b2RlLXBhdGguCi0gICAgICAgIG1fYW5pbWF0ZWRQcm9wZXJ0aWVzID0gYW5pbWF0b3IuZmluZEFu
aW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0ZU5hbWUobV90YXJnZXRFbGVtZW50LCBhdHRyaWJ1
dGVOYW1lKTsKLSAgICAgICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBBU1NFUlQocHJvcGVydHlUeXBlc0FyZUNvbnNp
c3RlbnQobV9hbmltYXRlZFByb3BlcnR5VHlwZSwgbV9hbmltYXRlZFByb3BlcnRpZXMpKTsKLSAg
ICAgICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKLSAgICAgICAgICAgIG1fYW5pbWF0ZWRUeXBlID0g
YW5pbWF0b3Iuc3RhcnRBbmltVmFsQW5pbWF0aW9uKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhbmltYXRvci5yZXNldEFuaW1WYWxUb0Jhc2VWYWwo
bV9hbmltYXRlZFByb3BlcnRpZXMsICptX2FuaW1hdGVkVHlwZSk7Ci0gICAgICAgICAgICBhbmlt
YXRvci5hbmltVmFsRGlkQ2hhbmdlKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQ1NTIHByb3BlcnRpZXMgYW5pbWF0aW9u
IGNvZGUtcGF0aC4KLSAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnRpZXMuaXNFbXB0eSgpKTsK
LSAgICBTdHJpbmcgYmFzZVZhbHVlOwotCi0gICAgaWYgKHNob3VsZEFwcGx5ID09IFNWR0FuaW1h
dGlvbkVsZW1lbnQ6OkFwcGx5Q1NTQW5pbWF0aW9uKSB7Ci0gICAgICAgIEFTU0VSVChTVkdBbmlt
YXRpb25FbGVtZW50Ojppc1RhcmdldEF0dHJpYnV0ZUNTU1Byb3BlcnR5KCZtX3RhcmdldEVsZW1l
bnQsIGF0dHJpYnV0ZU5hbWUpKTsKLSAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LmNvbXB1dGVD
U1NQcm9wZXJ0eVZhbHVlKCZtX3RhcmdldEVsZW1lbnQsIGNzc1Byb3BlcnR5SUQoYXR0cmlidXRl
TmFtZS5sb2NhbE5hbWUoKSksIGJhc2VWYWx1ZSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2FuaW1h
dGVkVHlwZSkKLSAgICAgICAgbV9hbmltYXRlZFR5cGUgPSBhbmltYXRvci5jb25zdHJ1Y3RGcm9t
U3RyaW5nKGJhc2VWYWx1ZSk7Ci0gICAgZWxzZQotICAgICAgICBtX2FuaW1hdGVkVHlwZS0+c2V0
VmFsdWVBc1N0cmluZyhhdHRyaWJ1dGVOYW1lLCBiYXNlVmFsdWUpOwotfQotCi12b2lkIFNWR0xl
Z2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUo
ZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KiBy
ZXN1bHRFbGVtZW50KQotewotICAgIEFTU0VSVChyZXN1bHRFbGVtZW50KTsKLQotICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUgPSBtX2FuaW1hdGlvbkVsZW1lbnQuYXR0cmli
dXRlTmFtZSgpOwotICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OlNob3VsZEFwcGx5QW5pbWF0aW9u
IHNob3VsZEFwcGx5ID0gbV9hbmltYXRpb25FbGVtZW50LnNob3VsZEFwcGx5QW5pbWF0aW9uKCZt
X3RhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpOwotICAgIAotICAgIGlmIChzaG91bGRBcHBs
eSA9PSBTVkdBbmltYXRpb25FbGVtZW50OjpEb250QXBwbHlBbmltYXRpb24pCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlID09IGRldGVybWluZUFu
aW1hdGVkUHJvcGVydHlUeXBlKG1fYW5pbWF0aW9uRWxlbWVudCwgbV90YXJnZXRFbGVtZW50LCBh
dHRyaWJ1dGVOYW1lKSk7Ci0KLSAgICBBU1NFUlQocGVyY2VudGFnZSA+PSAwICYmIHBlcmNlbnRh
Z2UgPD0gMSk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0IHx8IG1fYW5pbWF0aW9uRWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjph
bmltYXRlVHJhbnNmb3JtVGFnKSk7Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUg
IT0gQW5pbWF0ZWRVbmtub3duKTsKLSAgICBBU1NFUlQobV9hbmltYXRvcik7Ci0gICAgQVNTRVJU
KG1fYW5pbWF0b3ItPnR5cGUoKSA9PSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKTsKLSAgICBBU1NF
UlQobV9mcm9tVHlwZSk7Ci0gICAgQVNTRVJUKG1fZnJvbVR5cGUtPnR5cGUoKSA9PSBtX2FuaW1h
dGVkUHJvcGVydHlUeXBlKTsKLSAgICBBU1NFUlQobV90b1R5cGUpOwotCi0gICAgaWYgKHNob3Vs
ZEFwcGx5ID09IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OkFwcGx5WE1MQW5pbWF0aW9uIHx8IHNob3Vs
ZEFwcGx5ID09IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OkFwcGx5WE1MYW5kQ1NTQW5pbWF0aW9uKSB7
Ci0gICAgICAgIC8vIFNWRyBET00gYW5pbVZhbCBhbmltYXRpb24gY29kZS1wYXRoLgotICAgICAg
ICBpZiAobV9hbmltYXRvci0+ZmluZEFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0ZU5hbWUo
bV90YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlJiByZXN1bHRBbmltYXRp
b25FbGVtZW50ID0gZG93bmNhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlPigqcmVzdWx0RWxlbWVu
dCk7Ci0gICAgU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlciYgcmVzdWx0QW5p
bWF0aW9uQ29udHJvbGxlciA9IHN0YXRpY19jYXN0PFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlv
bkNvbnRyb2xsZXImPihyZXN1bHRBbmltYXRpb25FbGVtZW50LmF0dHJpYnV0ZUFuaW1hdGlvbkNv
bnRyb2xsZXIoKSk7Ci0gICAgCi0gICAgQVNTRVJUKHJlc3VsdEFuaW1hdGlvbkNvbnRyb2xsZXIu
bV9hbmltYXRlZFR5cGUpOwotICAgIEFTU0VSVChyZXN1bHRBbmltYXRpb25Db250cm9sbGVyLm1f
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0gbV9hbmltYXRlZFByb3BlcnR5VHlwZSk7Ci0KLSAgICBp
ZiAobV9hbmltYXRpb25FbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykpCi0gICAg
ICAgIHBlcmNlbnRhZ2UgPSAxOwotCi0gICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC5jYWxjTW9k
ZSgpID09IENhbGNNb2RlOjpEaXNjcmV0ZSkKLSAgICAgICAgcGVyY2VudGFnZSA9IHBlcmNlbnRh
Z2UgPCAwLjUgPyAwIDogMTsKLQotICAgIC8vIFRhcmdldCBlbGVtZW50IG1pZ2h0IGhhdmUgY2hh
bmdlZC4KLSAgICBtX2FuaW1hdG9yLT5zZXRDb250ZXh0RWxlbWVudCgmbV90YXJnZXRFbGVtZW50
KTsKLQotICAgIC8vIEJlIHN1cmUgdG8gZGV0YWNoIGxpc3Qgd3JhcHBlcnMgYmVmb3JlIHdlIG1v
ZGZpeSB0aGVpciB1bmRlcmx5aW5nIHZhbHVlLiBJZiB3ZSdkIGRvCi0gICAgLy8gaWYgYWZ0ZXIg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSgpIHJhbiB0aGUgY2FjaGVkIHBvaW50ZXJzIGluIHRoZSBs
aXN0IHByb3BlcnkgdGVhcgotICAgIC8vIG9mZnMgd291bGQgcG9pbnQgbm93aGVyZSwgYW5kIHdl
IGNvdWxkbid0IGNyZWF0ZSBjb3BpZXMgb2YgdGhvc2UgdmFsdWVzIGFueW1vcmUsCi0gICAgLy8g
d2hpbGUgZGV0YWNoaW5nLiBUaGlzIGlzIGNvdmVyZWQgYnkgYXNzZXJ0aW9ucywgbW92aW5nIHRo
aXMgZG93biB3b3VsZCBmaXJlIHRoZW0uCi0gICAgaWYgKCFtX2FuaW1hdGVkUHJvcGVydGllcy5p
c0VtcHR5KCkpCi0gICAgICAgIG1fYW5pbWF0b3ItPmFuaW1WYWxXaWxsQ2hhbmdlKG1fYW5pbWF0
ZWRQcm9wZXJ0aWVzKTsKLQotICAgIC8vIFZhbHVlcy1hbmltYXRpb24gYWNjdW11bGF0ZXMgdXNp
bmcgdGhlIGxhc3QgdmFsdWVzIGVudHJ5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVuZCBvZiBkdXJh
dGlvbiB0aW1lLgotICAgIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9mRHVyYXRpb25UeXBlID0g
bV90b0F0RW5kT2ZEdXJhdGlvblR5cGUgPyBtX3RvQXRFbmRPZkR1cmF0aW9uVHlwZS5nZXQoKSA6
IG1fdG9UeXBlLmdldCgpOwotICAgIG1fYW5pbWF0b3ItPmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUo
cGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fZnJvbVR5cGUuZ2V0KCksIG1fdG9UeXBlLmdldCgp
LCB0b0F0RW5kT2ZEdXJhdGlvblR5cGUsIHJlc3VsdEFuaW1hdGlvbkNvbnRyb2xsZXIubV9hbmlt
YXRlZFR5cGUuZ2V0KCkpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlDU1NQcm9wZXJ0
eVRvVGFyZ2V0KFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIENTU1Byb3BlcnR5SUQgaWQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgQVNTRVJUKCF0YXJnZXRFbGVtZW50Lm1fZGVsZXRp
b25IYXNCZWd1bik7Ci0KLSAgICBpZiAoIXRhcmdldEVsZW1lbnQuZW5zdXJlQW5pbWF0ZWRTTUlM
U3R5bGVQcm9wZXJ0aWVzKCkuc2V0UHJvcGVydHkoaWQsIHZhbHVlLCBmYWxzZSkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIHRhcmdldEVsZW1lbnQuaW52YWxpZGF0ZVN0eWxlKCk7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVDU1NQcm9wZXJ0eUZyb21UYXJnZXQoU1ZHRWxlbWVudCYg
dGFyZ2V0RWxlbWVudCwgQ1NTUHJvcGVydHlJRCBpZCkKLXsKLSAgICBBU1NFUlQoIXRhcmdldEVs
ZW1lbnQubV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICB0YXJnZXRFbGVtZW50LmVuc3VyZUFuaW1h
dGVkU01JTFN0eWxlUHJvcGVydGllcygpLnJlbW92ZVByb3BlcnR5KGlkKTsKLSAgICB0YXJnZXRF
bGVtZW50LmludmFsaWRhdGVTdHlsZSgpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlD
U1NQcm9wZXJ0eVRvVGFyZ2V0QW5kSW5zdGFuY2VzKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWVB
c1N0cmluZykKLXsKLSAgICAvLyBGSVhNRTogRG8gd2UgcmVhbGx5IG5lZWQgdG8gY2hlY2sgYm90
aCBpc0Nvbm5lY3RlZCBhbmQgIXBhcmVudE5vZGU/Ci0gICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0g
YW55UU5hbWUoKSB8fCAhdGFyZ2V0RWxlbWVudC5pc0Nvbm5lY3RlZCgpIHx8ICF0YXJnZXRFbGVt
ZW50LnBhcmVudE5vZGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJvcGVydHlJRCBp
ZCA9IGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7Ci0KLSAgICBTVkdF
bGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmxvY2tlcih0YXJnZXRFbGVtZW50KTsKLSAg
ICBhcHBseUNTU1Byb3BlcnR5VG9UYXJnZXQodGFyZ2V0RWxlbWVudCwgaWQsIHZhbHVlQXNTdHJp
bmcpOwotCi0gICAgLy8gSWYgdGhlIHRhcmdldCBlbGVtZW50IGhhcyBpbnN0YW5jZXMsIHVwZGF0
ZSB0aGVtIGFzIHdlbGwsIHcvbyByZXF1aXJpbmcgdGhlIDx1c2U+IHRyZWUgdG8gYmUgcmVidWls
dC4KLSAgICBmb3IgKGF1dG8qIGluc3RhbmNlIDogdGFyZ2V0RWxlbWVudC5pbnN0YW5jZXMoKSkK
LSAgICAgICAgYXBwbHlDU1NQcm9wZXJ0eVRvVGFyZ2V0KCppbnN0YW5jZSwgaWQsIHZhbHVlQXNT
dHJpbmcpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVtb3ZlQ1NTUHJvcGVydHlGcm9tVGFy
Z2V0QW5kSW5zdGFuY2VzKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi17Ci0gICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBuZWVk
IHRvIGNoZWNrIGJvdGggaXNDb25uZWN0ZWQgYW5kICFwYXJlbnROb2RlPwotICAgIGlmIChhdHRy
aWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRhcmdldEVsZW1lbnQuaXNDb25uZWN0ZWQoKSB8
fCAhdGFyZ2V0RWxlbWVudC5wYXJlbnROb2RlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENT
U1Byb3BlcnR5SUQgaWQgPSBjc3NQcm9wZXJ0eUlEKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkp
OwotCi0gICAgU1ZHRWxlbWVudDo6SW5zdGFuY2VVcGRhdGVCbG9ja2VyIGJsb2NrZXIodGFyZ2V0
RWxlbWVudCk7Ci0gICAgcmVtb3ZlQ1NTUHJvcGVydHlGcm9tVGFyZ2V0KHRhcmdldEVsZW1lbnQs
IGlkKTsKLQotICAgIC8vIElmIHRoZSB0YXJnZXQgZWxlbWVudCBoYXMgaW5zdGFuY2VzLCB1cGRh
dGUgdGhlbSBhcyB3ZWxsLCB3L28gcmVxdWlyaW5nIHRoZSA8dXNlPiB0cmVlIHRvIGJlIHJlYnVp
bHQuCi0gICAgZm9yIChhdXRvKiBpbnN0YW5jZSA6IHRhcmdldEVsZW1lbnQuaW5zdGFuY2VzKCkp
Ci0gICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5RnJvbVRhcmdldCgqaW5zdGFuY2UsIGlkKTsKLX0K
LQotc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeVRhcmdldEFib3V0QW5pbVZhbENoYW5nZShTVkdF
bGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQotewotICAgIEFTU0VSVCghdGFyZ2V0RWxlbWVudC5tX2RlbGV0aW9uSGFzQmVndW4pOwotICAg
IHRhcmdldEVsZW1lbnQuc3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVOYW1lKTsKLX0KLQot
c3RhdGljIGlubGluZSB2b2lkIG5vdGlmeVRhcmdldEFuZEluc3RhbmNlc0Fib3V0QW5pbVZhbENo
YW5nZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQotewotICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRh
cmdldEVsZW1lbnQuaXNDb25uZWN0ZWQoKSB8fCAhdGFyZ2V0RWxlbWVudC5wYXJlbnROb2RlKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFNWR0VsZW1lbnQ6Okluc3RhbmNlVXBkYXRlQmxvY2tl
ciBibG9ja2VyKHRhcmdldEVsZW1lbnQpOwotICAgIG5vdGlmeVRhcmdldEFib3V0QW5pbVZhbENo
YW5nZSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKTsKLQotICAgIC8vIElmIHRoZSB0YXJn
ZXQgZWxlbWVudCBoYXMgaW5zdGFuY2VzLCB1cGRhdGUgdGhlbSBhcyB3ZWxsLCB3L28gcmVxdWly
aW5nIHRoZSA8dXNlPiB0cmVlIHRvIGJlIHJlYnVpbHQuCi0gICAgZm9yIChhdXRvKiBpbnN0YW5j
ZSA6IHRhcmdldEVsZW1lbnQuaW5zdGFuY2VzKCkpCi0gICAgICAgIG5vdGlmeVRhcmdldEFib3V0
QW5pbVZhbENoYW5nZSgqaW5zdGFuY2UsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi12b2lkIFNWR0xl
Z2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXI6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkK
LXsKLSAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFRyYW5zZm9y
bUxpc3QgfHwgbV9hbmltYXRpb25FbGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVU
cmFuc2Zvcm1UYWcpKTsKLSAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmlt
YXRlZFVua25vd24pOwotICAgIEFTU0VSVChtX2FuaW1hdG9yKTsKLQotICAgIC8vIEVhcmx5IGV4
aXQgaWYgb3VyIGFuaW1hdGVkIHR5cGUgZ290IGRlc3Ryb3llZCBieSBhIHByZXZpb3VzIGVuZGVk
QWN0aXZlSW50ZXJ2YWwoKS4KLSAgICBpZiAoIW1fYW5pbWF0ZWRUeXBlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gbV9hbmltYXRp
b25FbGVtZW50LmF0dHJpYnV0ZU5hbWUoKTsKLQotICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydGll
cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gQ1NTIHByb3BlcnRpZXMgYW5pbWF0aW9uIGNvZGUt
cGF0aC4KLSAgICAgICAgLy8gQ29udmVydCB0aGUgcmVzdWx0IG9mIHRoZSBhbmltYXRpb24gdG8g
YSBTdHJpbmcgYW5kIGFwcGx5IGl0IGFzIENTUyBwcm9wZXJ0eSBvbiB0aGUgdGFyZ2V0ICYgYWxs
IGluc3RhbmNlcy4KLSAgICAgICAgYXBwbHlDU1NQcm9wZXJ0eVRvVGFyZ2V0QW5kSW5zdGFuY2Vz
KG1fdGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgbV9hbmltYXRlZFR5cGUtPnZhbHVlQXNT
dHJpbmcoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBXZSBkbyB1cGRhdGUg
dGhlIHN0eWxlIGFuZCB0aGUgYW5pbWF0aW9uIHByb3BlcnR5IGluZGVwZW5kZW50IG9mIGVhY2gg
b3RoZXIuCi0gICAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6U2hvdWxkQXBwbHlBbmltYXRpb24gc2hv
dWxkQXBwbHkgPSBtX2FuaW1hdGlvbkVsZW1lbnQuc2hvdWxkQXBwbHlBbmltYXRpb24oJm1fdGFy
Z2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7Ci0gICAgaWYgKHNob3VsZEFwcGx5ID09IFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OkFwcGx5WE1MYW5kQ1NTQW5pbWF0aW9uKQotICAgICAgICBhcHBseUNT
U1Byb3BlcnR5VG9UYXJnZXRBbmRJbnN0YW5jZXMobV90YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVO
YW1lLCBtX2FuaW1hdGVkVHlwZS0+dmFsdWVBc1N0cmluZygpKTsKLQotICAgIC8vIFNWRyBET00g
YW5pbVZhbCBhbmltYXRpb24gY29kZS1wYXRoLgotICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIFNW
RyBET00gdmFsdWVzIGFyZSBhbHJlYWR5IGNoYW5nZWQsIHVubGlrZSBmb3IgQ1NTLgotICAgIC8v
IFdlIG9ubHkgaGF2ZSB0byB0cmlnZ2VyIHVwZGF0ZSBub3RpZmljYXRpb25zIGhlcmUuCi0gICAg
bV9hbmltYXRvci0+YW5pbVZhbERpZENoYW5nZShtX2FuaW1hdGVkUHJvcGVydGllcyk7Ci0gICAg
bm90aWZ5VGFyZ2V0QW5kSW5zdGFuY2VzQWJvdXRBbmltVmFsQ2hhbmdlKG1fdGFyZ2V0RWxlbWVu
dCwgYXR0cmlidXRlTmFtZSk7Ci19Ci0KLXZvaWQgU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9u
Q29udHJvbGxlcjo6Y2xlYXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkK
LXsKLSAgICBpZiAoIW1fYW5pbWF0ZWRUeXBlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJ
ZiB0aGUgU1ZHQW5pbWF0ZWRUeXBlIGlzIGEgbGlzdCB0eXBlLCBlLmcuIFNWR0xlbmd0aExpc3RW
YWx1ZXMsIHRoZSB3cmFwcGVycyBvZiB0aGUKLSAgICAvLyBhbmltYXRlZCBwcm9wZXJ0aWVzIGhh
dmUgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgaXRlbXMgaW4gdGhlIGxpc3QgYmVmb3JlIGl0J3Mg
ZGVsZXRlZC4KLSAgICBpZiAoIW1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgbV9hbmltYXRvci0+YW5pbVZhbFdpbGxDaGFuZ2UobV9hbmltYXRlZFByb3BlcnRpZXMpOwot
Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50KSB7Ci0gICAgICAgIG1fYW5pbWF0ZWRUeXBlID0gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUgPSBtX2FuaW1hdGlvbkVsZW1lbnQuYXR0cmlidXRlTmFtZSgpOwotCi0g
ICAgaWYgKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBDU1Mg
cHJvcGVydGllcyBhbmltYXRpb24gY29kZS1wYXRoLgotICAgICAgICByZW1vdmVDU1NQcm9wZXJ0
eUZyb21UYXJnZXRBbmRJbnN0YW5jZXMoKnRhcmdldEVsZW1lbnQsIG1fYW5pbWF0aW9uRWxlbWVu
dC5hdHRyaWJ1dGVOYW1lKCkpOwotICAgICAgICBtX2FuaW1hdGVkVHlwZSA9IG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBTVkdBbmltYXRpb25FbGVtZW50OjpTaG91bGRB
cHBseUFuaW1hdGlvbiBzaG91bGRBcHBseSA9IG1fYW5pbWF0aW9uRWxlbWVudC5zaG91bGRBcHBs
eUFuaW1hdGlvbih0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKTsKLSAgICBpZiAoc2hvdWxk
QXBwbHkgPT0gU1ZHQW5pbWF0aW9uRWxlbWVudDo6QXBwbHlYTUxhbmRDU1NBbmltYXRpb24pCi0g
ICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5RnJvbVRhcmdldEFuZEluc3RhbmNlcygqdGFyZ2V0RWxl
bWVudCwgYXR0cmlidXRlTmFtZSk7Ci0KLSAgICAvLyBTVkcgRE9NIGFuaW1WYWwgYW5pbWF0aW9u
IGNvZGUtcGF0aC4KLSAgICBpZiAobV9hbmltYXRvcikgewotICAgICAgICBtX2FuaW1hdG9yLT5z
dG9wQW5pbVZhbEFuaW1hdGlvbihtX2FuaW1hdGVkUHJvcGVydGllcyk7Ci0gICAgICAgIG5vdGlm
eVRhcmdldEFuZEluc3RhbmNlc0Fib3V0QW5pbVZhbENoYW5nZSgqdGFyZ2V0RWxlbWVudCwgYXR0
cmlidXRlTmFtZSk7Ci0gICAgfQotCi0gICAgbV9hbmltYXRlZFByb3BlcnRpZXMuY2xlYXIoKTsK
LSAgICBtX2FuaW1hdGVkVHlwZSA9IG51bGxwdHI7Ci19Ci0KLWZsb2F0IFNWR0xlZ2FjeUF0dHJp
YnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKLXsKLSAgICByZXR1cm4gYW5pbWF0
ZWRUeXBlQW5pbWF0b3IoKS5jYWxjdWxhdGVEaXN0YW5jZShmcm9tU3RyaW5nLCB0b1N0cmluZyk7
Ci19Ci0KLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlZ2FjeUF0dHJp
YnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZWdhY3lB
dHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGNjMjRkOTVhODljMmU5ZTk5ZjAxYTIwODQyN2EzZGQ2NGIwZGNkMTguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZS5oIgotI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgiCi0jaW5jbHVkZSAiU1ZHQXR0cmlidXRl
QW5pbWF0aW9uQ29udHJvbGxlckJhc2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBTVkdBbmltYXRpb25FbGVtZW50OwotY2xhc3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNWR1NNSUxF
bGVtZW50OwotCi1jbGFzcyBTVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyIDog
cHVibGljIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXJCYXNlIHsKLXB1YmxpYzoKLSAg
ICBTVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyKFNWR0FuaW1hdGlvbkVsZW1l
bnQmLCBTVkdFbGVtZW50Jik7Ci0KLXByaXZhdGU6Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3ImIGFuaW1hdGVkVHlwZUFuaW1hdG9yKCk7Ci0KLSAgICB2b2lkIHJlc2V0QW5pbWF0ZWRUeXBl
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhckFuaW1hdGVkVHlwZShTVkdFbGVtZW50KiB0YXJn
ZXRFbGVtZW50KSBvdmVycmlkZTsKLSAgICAKLSAgICBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1Zh
bHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92
ZXJyaWRlOwotICAgIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgb3ZlcnJpZGU7Ci0gICAgYm9vbCBj
YWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVy
YXRpb25TdHJpbmcpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxlbWVudCog
cmVzdWx0RWxlbWVudCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0
KCkgb3ZlcnJpZGU7Ci0gICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKLSAgICAKLSAgICBi
b29sIGlzQWRkaXRpdmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGhhc1ZhbGlkQXR0cmli
dXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNEaXNjcmV0ZUFuaW1hdG9yKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBjb25zdCBBbmltYXRlZFByb3BlcnR5VHlwZSBtX2FuaW1h
dGVkUHJvcGVydHlUeXBlOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
bV9mcm9tVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3RvVHlw
ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3RvQXRFbmRPZkR1cmF0
aW9uVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX2FuaW1hdGVk
VHlwZTsKLQotICAgIFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCBtX2FuaW1hdGVkUHJv
cGVydGllczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IG1f
YW5pbWF0b3I7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDcxYjk1ZTNjMjlhZmY3
YjIyYzFkMThiYzhmNzQ3YzFmYjM2YTE2NzUuLjBjOTgwODJjNDY3ODJjZTM1ZTc5ZTQyNzcxNTM0
ZTg3YzgyMmI3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwCkBAIC0xMDMsMTEgKzEwMyw4IEBAIHN0YXRpYyB2b2lkIHNldEdyYWRpZW50
QXR0cmlidXRlcyhTVkdHcmFkaWVudEVsZW1lbnQmIGVsZW1lbnQsIExpbmVhckdyYWRpZW50QXR0
CiAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dyYWRpZW50VW5pdHMoKSAmJiBlbGVtZW50Lmhhc0F0
dHJpYnV0ZShTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIpKQogICAgICAgICBhdHRyaWJ1dGVz
LnNldEdyYWRpZW50VW5pdHMoZWxlbWVudC5ncmFkaWVudFVuaXRzKCkpOwogCi0gICAgaWYgKCFh
dHRyaWJ1dGVzLmhhc0dyYWRpZW50VHJhbnNmb3JtKCkgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybTsKLSAgICAgICAgZWxlbWVudC5ncmFkaWVudFRyYW5zZm9ybSgpLmNvbmNh
dGVuYXRlKHRyYW5zZm9ybSk7Ci0gICAgICAgIGF0dHJpYnV0ZXMuc2V0R3JhZGllbnRUcmFuc2Zv
cm0odHJhbnNmb3JtKTsKLSAgICB9CisgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dyYWRpZW50VHJh
bnNmb3JtKCkgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNm
b3JtQXR0cikpCisgICAgICAgIGF0dHJpYnV0ZXMuc2V0R3JhZGllbnRUcmFuc2Zvcm0oZWxlbWVu
dC5ncmFkaWVudFRyYW5zZm9ybSgpLmNvbmNhdGVuYXRlKCkpOwogCiAgICAgaWYgKCFhdHRyaWJ1
dGVzLmhhc1N0b3BzKCkpIHsKICAgICAgICAgY29uc3QgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0
b3A+JiBzdG9wcyhlbGVtZW50LmJ1aWxkU3RvcHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxl
bWVudC5oCmluZGV4IGFiMTc2MGIxYTFmOGJiMmY2ZDAxNmFlOWJkODIwZTM2MmRlMzg4NWMuLjJl
YTdlYjQwMTk3ZmZiNjEzMTkyOWVlZDY4OTFmODY0MjU3NGMyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXNrRWxlbWVudC5oCkBAIC01MSwxOCArNTEsMTEgQEAgcHJpdmF0ZToKICAgICBTVkdNYXNr
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0
dHJpYnV0ZU93bmVyUHJveHkgPSBTVkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdNYXNrRWxl
bWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVGVzdHM+
OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0
cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVS
ZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAg
Y29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJv
cGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdNYXNrRWxlbWVudCwg
U1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVGVzdHM+OwogICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5oCmluZGV4
IDM0Yzc5ODJkNjBkMWE4ZmFhYzRmYTY3ODQwMTc4NjllNWJmMTdmOTkuLjk5OWY2OGE4YWZjYTI0
MzNjMWMzZjJhNDIzY2FjYzFjZjNjMmQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmgKQEAgLTI2
LDM2ICsyNiwzNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdWYWx1ZVBy
b3BlcnR5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IFJlbW92ZSB0aGlz
IGNsYXNzIG9uY2UgU1ZHTWF0cml4IGJlY29tZXMgYW4gYWxpYXMgdG8gRE9NTWF0cml4LgotY2xh
c3MgU1ZHTWF0cml4IDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxBZmZpbmVUcmFuc2Zvcm0+
IHsKLSAgICB1c2luZyBCYXNlID0gU1ZHUHJvcGVydHlUZWFyT2ZmPEFmZmluZVRyYW5zZm9ybT47
CitjbGFzcyBTVkdNYXRyaXggOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eTxBZmZpbmVUcmFuc2Zv
cm0+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHVmFsdWVQcm9wZXJ0eTxBZmZpbmVUcmFuc2Zvcm0+
OwogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR01h
dHJpeD4gY3JlYXRlKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHks
IFNWR1Byb3BlcnR5Um9sZSByb2xlLCBBZmZpbmVUcmFuc2Zvcm0mIHZhbHVlKQorICAgIHN0YXRp
YyBSZWY8U1ZHTWF0cml4PiBjcmVhdGUoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB2YWx1ZSA9IHsg
fSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR01hdHJpeCgmYW5pbWF0
ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U1ZHTWF0cml4KHZhbHVlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdNYXRyaXg+IGNy
ZWF0ZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxWYWx1ZSA9IHsgfSkKKyAgICBzdGF0
aWMgUmVmPFNWR01hdHJpeD4gY3JlYXRlKFNWR1Byb3BlcnR5T3duZXIqIG93bmVyLCBTVkdQcm9w
ZXJ0eUFjY2VzcyBhY2Nlc3MsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdmFsdWUgPSB7IH0pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdNYXRyaXgoaW5pdGlhbFZhbHVl
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR01hdHJpeChvd25lciwgYWNjZXNz
LCB2YWx1ZSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBFeGNl
cHRpb25PcjxSZWY8U1ZHTWF0cml4Pj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFQ+JiYgaW5pdGlhbFZh
bHVlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxTVkdNYXRyaXg+PiBjcmVhdGUoRXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKICAgICB7Ci0gICAg
ICAgIGlmIChpbml0aWFsVmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4g
aW5pdGlhbFZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShp
bml0aWFsVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgICAgICBpZiAodmFsdWUuaGFz
RXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZUV4Y2VwdGlvbigp
OworICAgICAgICByZXR1cm4gY3JlYXRlKHZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAg
ICB9CiAKICAgICBkb3VibGUgYSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVy
dHlSZWZlcmVuY2UoKS5hKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLmEoKTsKICAgICB9CiAK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBKGRvdWJsZSB2YWx1ZSkKQEAgLTYzLDE1ICs2NCwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBw
cm9wZXJ0eVJlZmVyZW5jZSgpLnNldEEodmFsdWUpOworICAgICAgICBtX3ZhbHVlLnNldEEodmFs
dWUpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KIAogICAgIGRvdWJsZSBiKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0
eVJlZmVyZW5jZSgpLmIoKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUuYigpOwogICAgIH0KIAog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEIoZG91YmxlIHZhbHVlKQpAQCAtNzksMTUgKzc5LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAgICAgIHBy
b3BlcnR5UmVmZXJlbmNlKCkuc2V0Qih2YWx1ZSk7CisgICAgICAgIG1fdmFsdWUuc2V0Qih2YWx1
ZSk7CiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwotCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCiAgICAgZG91YmxlIGMoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5
UmVmZXJlbmNlKCkuYygpOworICAgICAgICByZXR1cm4gbV92YWx1ZS5jKCk7CiAgICAgfQogCiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Qyhkb3VibGUgdmFsdWUpCkBAIC05NSwxNSArOTQsMTQg
QEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJv
cGVydHlSZWZlcmVuY2UoKS5zZXRDKHZhbHVlKTsKKyAgICAgICAgbV92YWx1ZS5zZXRDKHZhbHVl
KTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKICAgICBkb3VibGUgZCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlS
ZWZlcmVuY2UoKS5kKCk7CisgICAgICAgIHJldHVybiBtX3ZhbHVlLmQoKTsKICAgICB9CiAKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXREKGRvdWJsZSB2YWx1ZSkKQEAgLTExMSwxNSArMTA5LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAgICAgIHBy
b3BlcnR5UmVmZXJlbmNlKCkuc2V0RCh2YWx1ZSk7CisgICAgICAgIG1fdmFsdWUuc2V0RCh2YWx1
ZSk7CiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwotCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCiAgICAgZG91YmxlIGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5
UmVmZXJlbmNlKCkuZSgpOworICAgICAgICByZXR1cm4gbV92YWx1ZS5lKCk7CiAgICAgfQogCiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RShkb3VibGUgdmFsdWUpCkBAIC0xMjcsMTUgKzEyNCwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBw
cm9wZXJ0eVJlZmVyZW5jZSgpLnNldEUodmFsdWUpOworICAgICAgICBtX3ZhbHVlLnNldEUodmFs
dWUpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KIAogICAgIGRvdWJsZSBmKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0
eVJlZmVyZW5jZSgpLmYoKTsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUuZigpOwogICAgIH0KIAog
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEYoZG91YmxlIHZhbHVlKQpAQCAtMTQzLDUyICsxMzks
NTAgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAg
cHJvcGVydHlSZWZlcmVuY2UoKS5zZXRGKHZhbHVlKTsKKyAgICAgICAgbV92YWx1ZS5zZXRGKHZh
bHVlKTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKICAgICBSZWY8U1ZHTWF0cml4PiBtdWx0aXBseShTVkdNYXRyaXgmIHNlY29uZE1hdHJp
eCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7
Ci0gICAgICAgIGNvcHkubXVsdGlwbHkoc2Vjb25kTWF0cml4LnByb3BlcnR5UmVmZXJlbmNlKCkp
OworICAgICAgICBhdXRvIGNvcHkgPSBtX3ZhbHVlOworICAgICAgICBjb3B5Lm11bHRpcGx5KHNl
Y29uZE1hdHJpeC52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNv
cHkpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPFJlZjxTVkdNYXRyaXg+PiBpbnZlcnNlKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gaW52ZXJzZSA9IHByb3BlcnR5UmVmZXJlbmNlKCku
aW52ZXJzZSgpOworICAgICAgICBhdXRvIGludmVyc2UgPSBtX3ZhbHVlLmludmVyc2UoKTsKICAg
ICAgICAgaWYgKCFpbnZlcnNlKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiTWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlIl9zIH07Ci0KICAgICAgICAg
cmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKCppbnZlcnNlKTsKICAgICB9CiAKICAgICBSZWY8U1ZH
TWF0cml4PiB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKICAgICB7Ci0gICAgICAg
IGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29weSA9IG1f
dmFsdWU7CiAgICAgICAgIGNvcHkudHJhbnNsYXRlKHgsIHkpOwogICAgICAgICByZXR1cm4gU1ZH
TWF0cml4OjpjcmVhdGUoY29weSk7CiAgICAgfQogCiAgICAgUmVmPFNWR01hdHJpeD4gc2NhbGUo
ZmxvYXQgc2NhbGVGYWN0b3IpIGNvbnN0CiAgICAgewotICAgICAgICBhdXRvIGNvcHkgPSBwcm9w
ZXJ0eVJlZmVyZW5jZSgpOworICAgICAgICBhdXRvIGNvcHkgPSBtX3ZhbHVlOwogICAgICAgICBj
b3B5LnNjYWxlKHNjYWxlRmFjdG9yKTsKICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRl
KGNvcHkpOwogICAgIH0KIAogICAgIFJlZjxTVkdNYXRyaXg+IHNjYWxlTm9uVW5pZm9ybShmbG9h
dCBzY2FsZUZhY3RvclgsIGZsb2F0IHNjYWxlRmFjdG9yWSkgY29uc3QKICAgICB7Ci0gICAgICAg
IGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29weSA9IG1f
dmFsdWU7CiAgICAgICAgIGNvcHkuc2NhbGVOb25Vbmlmb3JtKHNjYWxlRmFjdG9yWCwgc2NhbGVG
YWN0b3JZKTsKICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAgIH0K
IAogICAgIFJlZjxTVkdNYXRyaXg+IHJvdGF0ZShmbG9hdCBhbmdsZSkgY29uc3QKICAgICB7Ci0g
ICAgICAgIGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29w
eSA9IG1fdmFsdWU7CiAgICAgICAgIGNvcHkucm90YXRlKGFuZ2xlKTsKICAgICAgICAgcmV0dXJu
IFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAgIH0KQEAgLTE5OCwzNSArMTkyLDM1IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKCF4IHx8ICF5KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciB9OwogCi0gICAgICAgIGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNl
KCk7CisgICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7CiAgICAgICAgIGNvcHkucm90YXRlRnJv
bVZlY3Rvcih4LCB5KTsKICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwog
ICAgIH0KIAogICAgIFJlZjxTVkdNYXRyaXg+IGZsaXBYKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29weSA9IG1f
dmFsdWU7CiAgICAgICAgIGNvcHkuZmxpcFgoKTsKICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6
Y3JlYXRlKGNvcHkpOwogICAgIH0KIAogICAgIFJlZjxTVkdNYXRyaXg+IGZsaXBZKCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAg
IGF1dG8gY29weSA9IG1fdmFsdWU7CiAgICAgICAgIGNvcHkuZmxpcFkoKTsKICAgICAgICAgcmV0
dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAgIH0KIAogICAgIFJlZjxTVkdNYXRyaXg+
IHNrZXdYKGZsb2F0IGFuZ2xlKSBjb25zdAogICAgIHsKLSAgICAgICAgYXV0byBjb3B5ID0gcHJv
cGVydHlSZWZlcmVuY2UoKTsKKyAgICAgICAgYXV0byBjb3B5ID0gbV92YWx1ZTsKICAgICAgICAg
Y29weS5za2V3WChhbmdsZSk7CiAgICAgICAgIHJldHVybiBTVkdNYXRyaXg6OmNyZWF0ZShjb3B5
KTsKICAgICB9CiAKICAgICBSZWY8U1ZHTWF0cml4PiBza2V3WShmbG9hdCBhbmdsZSkgY29uc3QK
ICAgICB7Ci0gICAgICAgIGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAg
IGF1dG8gY29weSA9IG1fdmFsdWU7CiAgICAgICAgIGNvcHkuc2tld1koYW5nbGUpOwogICAgICAg
ICByZXR1cm4gU1ZHTWF0cml4OjpjcmVhdGUoY29weSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKaW5kZXggYTA1NTNjNjFlZTBhYzIzNTIxOGZlOTg1MTVl
ZjM2ZDQ3ZTkwYTk1OC4uZjllODIwNzk3ZTk4MjMwYzRkZDBlYjkxZTZkN2Q1ZDE2MmY0YThjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw2
IEBAIGlubGluZSBTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAgICAgLCBTVkdVUklSZWZlcmVuY2UodGhpcykK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6cGF0dGVyblRhZykpOwotICAgIHJl
Z2lzdGVyQXR0cmlidXRlcygpOwogCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CkBAIC02Myw2ICs2Miw3IEBAIGlu
bGluZSBTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVy
UHJvcGVydHk8U1ZHTmFtZXM6OmhlaWdodEF0dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9oZWln
aHQ+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFt
ZXM6OnBhdHRlcm5Vbml0c0F0dHIsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdQYXR0
ZXJuRWxlbWVudDo6bV9wYXR0ZXJuVW5pdHM+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6
OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVybkNvbnRl
bnRVbml0cz4oKTsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxT
VkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9wYXR0
ZXJuVHJhbnNmb3JtPigpOwogICAgIH0pOwogfQogCkBAIC03MSwxNCArNzEsNiBAQCBSZWY8U1ZH
UGF0dGVybkVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BhdHRlcm5FbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLXZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnJl
Z2lzdGVyQXR0cmlidXRlcygpCi17Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdp
c3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGU8U1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1B
dHRyLCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVyblRyYW5zZm9ybT4oKTsKLX0KLQogdm9p
ZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6cGF0dGVyblVuaXRzQXR0cikgewpAQCAtOTQsMTAgKzg2LDcgQEAgdm9pZCBTVkdQYXR0
ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIpIHsKLSAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdFZh
bHVlcyBuZXdMaXN0OwotICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlKTsKLSAgICAgICAgbV9w
YXR0ZXJuVHJhbnNmb3JtLmRldGFjaEFuaW1hdGVkTGlzdFdyYXBwZXJzKGF0dHJpYnV0ZU93bmVy
UHJveHkoKSwgbmV3TGlzdC5zaXplKCkpOwotICAgICAgICBtX3BhdHRlcm5UcmFuc2Zvcm0uc2V0
VmFsdWUoV1RGTW92ZShuZXdMaXN0KSk7CisgICAgICAgIG1fcGF0dGVyblRyYW5zZm9ybS0+YmFz
ZVZhbCgpLT5wYXJzZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyOSw3
ICsxMTgsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKGlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0ZpdFRvVmlld0JveDo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSB8fCBTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKICAgICAgICAgICAg
IG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTgxLDExICsx
NzAsOCBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpjb2xsZWN0UGF0dGVybkF0dHJpYnV0ZXMo
UGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc1Bh
dHRlcm5Db250ZW50VW5pdHMoKSAmJiBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnBhdHRlcm5Db250
ZW50VW5pdHNBdHRyKSkKICAgICAgICAgYXR0cmlidXRlcy5zZXRQYXR0ZXJuQ29udGVudFVuaXRz
KHBhdHRlcm5Db250ZW50VW5pdHMoKSk7CiAKLSAgICBpZiAoIWF0dHJpYnV0ZXMuaGFzUGF0dGVy
blRyYW5zZm9ybSgpICYmIGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0
dHIpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIHBhdHRl
cm5UcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSh0cmFuc2Zvcm0pOwotICAgICAgICBhdHRyaWJ1dGVz
LnNldFBhdHRlcm5UcmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAgICB9CisgICAgaWYgKCFhdHRyaWJ1
dGVzLmhhc1BhdHRlcm5UcmFuc2Zvcm0oKSAmJiBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnBhdHRl
cm5UcmFuc2Zvcm1BdHRyKSkKKyAgICAgICAgYXR0cmlidXRlcy5zZXRQYXR0ZXJuVHJhbnNmb3Jt
KHBhdHRlcm5UcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpKTsKIAogICAgIGlmICghYXR0cmlidXRl
cy5oYXNQYXR0ZXJuQ29udGVudEVsZW1lbnQoKSAmJiBjaGlsZEVsZW1lbnRDb3VudCgpKQogICAg
ICAgICBhdHRyaWJ1dGVzLnNldFBhdHRlcm5Db250ZW50RWxlbWVudCh0aGlzKTsKQEAgLTE5Myw5
ICsxNzksNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpjb2xsZWN0UGF0dGVybkF0dHJpYnV0
ZXMoUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCiAKIEFmZmluZVRyYW5zZm9ybSBTVkdQ
YXR0ZXJuRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxl
OjpDVE1TY29wZSkgY29uc3QKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4OwotICAgIHBh
dHRlcm5UcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZShtYXRyaXgpOwotICAgIHJldHVybiBtYXRyaXg7
CisgICAgcmV0dXJuIHBhdHRlcm5UcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCmluZGV4IGZkYzI2ZTU0YThlNWIxYzZl
NzZhOGMyYjcwZjFkNzQ3M2RiOTVmNTguLmMxODhkMGQ2MmIxYWVlODEzMWUzNjRjYWIxMDhhODg2
OGJhYWEyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCkBAIC0yMSw3
ICsyMSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKQEAgLTQ5
LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX2hlaWdodC0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTVkdVbml0VHlw
ZXM6OlNWR1VuaXRUeXBlIHBhdHRlcm5Vbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblVu
aXRzLT5jdXJyZW50VmFsdWU8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT4oKTsgfQogICAgIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcGF0dGVybkNvbnRlbnRVbml0cygpIGNvbnN0IHsgcmV0
dXJuIG1fcGF0dGVybkNvbnRlbnRVbml0cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZH
VW5pdFR5cGU+KCk7IH0KLSAgICBjb25zdCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiBwYXR0ZXJu
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuVHJhbnNmb3JtLmN1cnJlbnRWYWx1
ZShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYg
cGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9ybS0+Y3Vy
cmVudFZhbHVlKCk7IH0KIAogICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiB4QW5pbWF0ZWQoKSB7IHJl
dHVybiBtX3g7IH0KICAgICBTVkdBbmltYXRlZExlbmd0aCYgeUFuaW1hdGVkKCkgeyByZXR1cm4g
bV95OyB9CkBAIC01NywyNCArNTYsMTcgQEAgcHVibGljOgogICAgIFNWR0FuaW1hdGVkTGVuZ3Ro
JiBoZWlnaHRBbmltYXRlZCgpIHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbiYgcGF0dGVyblVuaXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BhdHRlcm5Vbml0
czsgfQogICAgIFNWR0FuaW1hdGVkRW51bWVyYXRpb24mIHBhdHRlcm5Db250ZW50VW5pdHNBbmlt
YXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVybkNvbnRlbnRVbml0czsgfQotICAgIFJlZlB0cjxTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3Q+IHBhdHRlcm5UcmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJu
IG1fcGF0dGVyblRyYW5zZm9ybS5hbmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHko
KSk7IH0KKyAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QmIHBhdHRlcm5UcmFuc2Zvcm1Bbmlt
YXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9ybTsgfQogCiBwcml2YXRlOgogICAgIFNW
R1BhdHRlcm5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAg
dXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdFbGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBTVkdGaXRUb1ZpZXdCb3gsIFNWR1Rlc3RzLCBTVkdVUklSZWZlcmVuY2U+OwotICAgIHN0YXRp
YyBBdHRyaWJ1dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0
cnkoKSB7IHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9
Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0
cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3Ry
eSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHRWxlbWVu
dCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94LCBTVkdUZXN0
cywgU1ZHVVJJUmVmZXJlbmNlPjsKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9w
ZXJ0eVJlZ2lzdHJ5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9
CiAKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFs
OwogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmlu
YWw7CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsK
QEAgLTkzLDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
aGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3BhdHRlcm5Vbml0cyB7IFNW
R0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRp
b24+IG1fcGF0dGVybkNvbnRlbnRVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0
ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07Ci0g
ICAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QXR0cmlidXRlIG1fcGF0dGVyblRyYW5zZm9ybTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBtX3BhdHRlcm5UcmFuc2Zvcm0geyBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAppbmRleCAyZGQ1ZTJlYjM4ZTAwN2UxYWQ1
ZThmYTJkYTJhOWRkNjY3NDdjNTMyLi43NzQ0NWI5ZmNiMWZiNDBiNTEzOTZlMTkyZTczNDU4NmM2
MzU0YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAK
ICAgICBSZWY8U1ZHUG9pbnQ+IG1hdHJpeFRyYW5zZm9ybShTVkdNYXRyaXgmIG1hdHJpeCkgY29u
c3QKICAgICB7Ci0gICAgICAgIGF1dG8gbmV3UG9pbnQgPSBtX3ZhbHVlLm1hdHJpeFRyYW5zZm9y
bShtYXRyaXgucHJvcGVydHlSZWZlcmVuY2UoKSk7CisgICAgICAgIGF1dG8gbmV3UG9pbnQgPSBt
X3ZhbHVlLm1hdHJpeFRyYW5zZm9ybShtYXRyaXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR1BvaW50KG5ld1BvaW50KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQb2x5RWxlbWVudC5oCmluZGV4IDZlMzU0MjVjMWYwOWUxOTg2OTJjZjhiYjdiMTFjZDEwMDVj
ZDY5MTEuLjIyN2Q1OWNkMTdjZGRiOGUwY2QwZGM4ZWQ0MDVkOTBmM2NiZTE2MDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCkBAIC00NywxMSArNDcsNiBAQCBwcml2YXRlOgogICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHUG9s
eUVsZW1lbnQsIFNWR0dlb21ldHJ5RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZD47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJv
b2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsgCiAgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCAy
YjZhODkzZmI2ODViZjVmM2QzODliMGQ1ODYwOTBmYzJhOTJkMjc1Li45YWEyM2FlMGJkNmI5MGQ5
ODZkMzFkY2VjNjM0NGY1NTdkMWM4OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMTA5LDExICsxMDksOCBAQCBzdGF0aWMgdm9p
ZCBzZXRHcmFkaWVudEF0dHJpYnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBSYWRp
YWxHcmFkaWVudEF0dAogICAgIGlmICghYXR0cmlidXRlcy5oYXNHcmFkaWVudFVuaXRzKCkgJiYg
ZWxlbWVudC5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyKSkKICAgICAg
ICAgYXR0cmlidXRlcy5zZXRHcmFkaWVudFVuaXRzKGVsZW1lbnQuZ3JhZGllbnRVbml0cygpKTsK
IAotICAgIGlmICghYXR0cmlidXRlcy5oYXNHcmFkaWVudFRyYW5zZm9ybSgpICYmIGVsZW1lbnQu
aGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKSB7Ci0gICAgICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIGVsZW1lbnQuZ3JhZGllbnRUcmFu
c2Zvcm0oKS5jb25jYXRlbmF0ZSh0cmFuc2Zvcm0pOwotICAgICAgICBhdHRyaWJ1dGVzLnNldEdy
YWRpZW50VHJhbnNmb3JtKHRyYW5zZm9ybSk7Ci0gICAgfQorICAgIGlmICghYXR0cmlidXRlcy5o
YXNHcmFkaWVudFRyYW5zZm9ybSgpICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKFNWR05hbWVzOjpn
cmFkaWVudFRyYW5zZm9ybUF0dHIpKQorICAgICAgICBhdHRyaWJ1dGVzLnNldEdyYWRpZW50VHJh
bnNmb3JtKGVsZW1lbnQuZ3JhZGllbnRUcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpKTsKIAogICAg
IGlmICghYXR0cmlidXRlcy5oYXNTdG9wcygpKSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxHcmFk
aWVudDo6Q29sb3JTdG9wPiYgc3RvcHMoZWxlbWVudC5idWlsZFN0b3BzKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IDZjN2RlMDJhZWI5Njk5ZDljNDRjOGY3ZjdlZWMw
OTk0YTI1MTViMDMuLjliZjAzNDIzMzJhZWI0NGRjZGI0OWJhOTQzMmIxMWNiY2UwMjZiYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTM4NiwxMiArMzg2LDEyIEBAIFJl
ZjxTVkdSZWN0PiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdSZWN0KCkKIAogUmVmPFNWR1RyYW5z
Zm9ybT4gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtKCkKIHsKLSAgICByZXR1cm4g
U1ZHVHJhbnNmb3JtOjpjcmVhdGUoU1ZHVHJhbnNmb3JtVmFsdWUgeyBTVkdUcmFuc2Zvcm1WYWx1
ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVggfSk7CisgICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3Jl
YXRlKFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX01BVFJJWCk7CiB9CiAKIFJlZjxT
VkdUcmFuc2Zvcm0+IFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgo
U1ZHTWF0cml4JiBtYXRyaXgpCiB7Ci0gICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKFNW
R1RyYW5zZm9ybVZhbHVlIHsgbWF0cml4LnByb3BlcnR5UmVmZXJlbmNlKCkgfSk7CisgICAgcmV0
dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKG1hdHJpeC52YWx1ZSgpKTsKIH0KIAogQWZmaW5lVHJh
bnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xv
Y2F0YWJsZTo6Q1RNU2NvcGUgbW9kZSkgY29uc3QKQEAgLTYwOCw3ICs2MDgsNyBAQCBBZmZpbmVU
cmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3
V2lkdGgsIGZsb2F0IHZpZQogICAgICAgICByZXR1cm4gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94
VG9WaWV3VHJhbnNmb3JtKGN1cnJlbnRWaWV3Qm94UmVjdCgpLCBwcmVzZXJ2ZUFzcGVjdFJhdGlv
KCksIHZpZXdXaWR0aCwgdmlld0hlaWdodCk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtID0gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGN1cnJlbnRWaWV3
Qm94UmVjdCgpLCBtX3ZpZXdTcGVjLT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCksIHZpZXdXaWR0aCwg
dmlld0hlaWdodCk7Ci0gICAgbV92aWV3U3BlYy0+dHJhbnNmb3JtVmFsdWUoKS5jb25jYXRlbmF0
ZSh0cmFuc2Zvcm0pOworICAgIHRyYW5zZm9ybSAqPSBtX3ZpZXdTcGVjLT50cmFuc2Zvcm0oKS0+
Y29uY2F0ZW5hdGUoKTsKICAgICByZXR1cm4gdHJhbnNmb3JtOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRFbGVtZW50LmNwcAppbmRleCA2ZDIwNWUzY2Y5YTVhNzViMjhkZjYwNmE3ZGI2MDA3
ODNjZjk5NDI1Li5jYjkzODBjZWNmNWE0ZTRiYjkyZDdiM2ZjOWFiNzA0NTg4MGFiNGEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgQWZmaW5l
VHJhbnNmb3JtIFNWR1RleHRFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QK
ICAgICAgICAgLy8gRmxhdHRlbiBhbnkgM0QgdHJhbnNmb3JtCiAgICAgICAgIG1hdHJpeCA9IHQu
dG9BZmZpbmVUcmFuc2Zvcm0oKTsKICAgICB9IGVsc2UKLSAgICAgICAgdHJhbnNmb3JtKCkuY29u
Y2F0ZW5hdGUobWF0cml4KTsKKyAgICAgICAgbWF0cml4ID0gdHJhbnNmb3JtKCkuY29uY2F0ZW5h
dGUoKTsKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0gY29uc3RfY2Fz
dDxTVkdUZXh0RWxlbWVudCo+KHRoaXMpLT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKICAgICBp
ZiAodHJhbnNmb3JtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMjcyNDhlMDUyOTczMDFmNTQzMDM0NzMzYWEwNTBjZjk2MTRiMDFk
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNm
b3JtLmgiCi0KLSNpbmNsdWRlICJTVkdNYXRyaXhUZWFyT2ZmLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotUmVmPFNWR01hdHJpeD4gU1ZHVHJhbnNmb3JtOjptYXRyaXgoKQotewotICAgIHJl
dHVybiBTVkdNYXRyaXhUZWFyT2ZmOjpjcmVhdGUoKnRoaXMsIHByb3BlcnR5UmVmZXJlbmNlKCku
bWF0cml4KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtLmgKaW5kZXggYzAwZDQxZGI2MjA4YWNkMTY1ZGZhNjdiZjUyZTdlNGRhNmQ0MWJlZS4u
NmEyOWM3MmNmM2U3ZjMxM2Y3MDk2NTdhNDAxMjQ4MWMyMjNiOGRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm0uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDUwICsyNiw1NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJTVkdNYXRyaXguaCIKLSNpbmNsdWRlICJTVkdQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNs
dWRlICJTVkdUcmFuc2Zvcm1WYWx1ZS5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdUcmFuc2Zvcm0gOiBwdWJsaWMgU1ZH
UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybVZhbHVlPiB7CitjbGFzcyBTVkdUcmFuc2Zvcm0g
OiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eTxTVkdUcmFuc2Zvcm1WYWx1ZT4sIHB1YmxpYyBTVkdQ
cm9wZXJ0eU93bmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR1RyYW5zZm9ybT4gY3Jl
YXRlKFNWR0xlZ2FjeUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3Bl
cnR5Um9sZSByb2xlLCBTVkdUcmFuc2Zvcm1WYWx1ZSYgdmFsdWUpCisgICAgc3RhdGljIFJlZjxT
VkdUcmFuc2Zvcm0+IGNyZWF0ZShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0
eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHVHJhbnNmb3JtKGFu
aW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR1RyYW5zZm9ybSh0eXBlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdUcmFu
c2Zvcm0+IGNyZWF0ZShjb25zdCBTVkdUcmFuc2Zvcm1WYWx1ZSYgaW5pdGlhbFZhbHVlID0geyB9
KQorICAgIHN0YXRpYyBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGUoY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0gPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTVkdUcmFuc2Zvcm0oaW5pdGlhbFZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR1RyYW5zZm9ybShTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVgs
IHRyYW5zZm9ybSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8U1ZHVHJhbnNmb3JtPj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFQ+JiYgaW5p
dGlhbFZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGUoY29uc3QgU1ZH
VHJhbnNmb3JtVmFsdWUmIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5o
YXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWUucmVsZWFzZUV4
Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4gY3JlYXRlKGluaXRpYWxWYWx1ZS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybSh2
YWx1ZS50eXBlKCksIHZhbHVlLm1hdHJpeCgpLT52YWx1ZSgpLCB2YWx1ZS5hbmdsZSgpLCB2YWx1
ZS5yb3RhdGlvbkNlbnRlcigpKSk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgc2hvcnQgdHlwZSgp
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNW
R1RyYW5zZm9ybT4+IGNyZWF0ZShFeGNlcHRpb25PcjxUPiYmIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkudHlwZSgpOworICAgICAgICBpZiAodmFsdWUu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZUV4Y2VwdGlv
bigpOworICAgICAgICByZXR1cm4gY3JlYXRlKHZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsK
ICAgICB9CiAKLSAgICBSZWY8U1ZHTWF0cml4PiBtYXRyaXgoKTsKKyAgICB+U1ZHVHJhbnNmb3Jt
KCkKKyAgICB7CisgICAgICAgIG1fdmFsdWUubWF0cml4KCktPmRldGFjaCgpOworICAgIH0KIAot
ICAgIGZsb2F0IGFuZ2xlKCkKKyAgICBSZWY8U1ZHVHJhbnNmb3JtPiBjbG9uZSgpIGNvbnN0CiAg
ICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS5hbmdsZSgpOworICAgICAg
ICByZXR1cm4gU1ZHVHJhbnNmb3JtOjpjcmVhdGUobV92YWx1ZSk7CiAgICAgfQogCisgICAgdW5z
aWduZWQgc2hvcnQgdHlwZSgpIHsgcmV0dXJuIG1fdmFsdWUudHlwZSgpOyB9CisgICAgZmxvYXQg
YW5nbGUoKSB7IHJldHVybiBtX3ZhbHVlLmFuZ2xlKCk7IH0KKyAgICBjb25zdCBSZWY8U1ZHTWF0
cml4PiYgbWF0cml4KCkgeyByZXR1cm4gbV92YWx1ZS5tYXRyaXgoKTsgfQorCiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0TWF0cml4KFNWR01hdHJpeCYgbWF0cml4KQogICAgIHsKICAgICAgICAg
aWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlm
aWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAgICAgIHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0
TWF0cml4KG1hdHJpeC5wcm9wZXJ0eVJlZmVyZW5jZSgpKTsKKyAgICAgICAgbV92YWx1ZS5zZXRN
YXRyaXgobWF0cml4LnZhbHVlKCkpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNzgsOSArODUsOCBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2Rp
ZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNl
dFRyYW5zbGF0ZSh0eCwgdHkpOworICAgICAgICBtX3ZhbHVlLnNldFRyYW5zbGF0ZSh0eCwgdHkp
OwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IApAQCAtODksOSArOTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3Ig
fTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldFNjYWxlKHN4LCBzeSk7CisgICAg
ICAgIG1fdmFsdWUuc2V0U2NhbGUoc3gsIHN5KTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0K
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTEwMCw5ICsxMDUsOCBAQCBwdWJsaWM6
CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVy
ZW5jZSgpLnNldFJvdGF0ZShhbmdsZSwgY3gsIGN5KTsKKyAgICAgICAgbV92YWx1ZS5zZXRSb3Rh
dGUoYW5nbGUsIGN4LCBjeSk7CiAgICAgICAgIGNvbW1pdENoYW5nZSgpOwotCiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCkBAIC0xMTEsOSArMTE1LDggQEAgcHVibGljOgogICAgICAgICBp
ZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZp
Y2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRT
a2V3WChhbmdsZSk7CisgICAgICAgIG1fdmFsdWUuc2V0U2tld1goYW5nbGUpOwogICAgICAgICBj
b21taXRDaGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTIyLDIx
ICsxMjUsMzIgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAg
ICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRTa2V3WShhbmdsZSk7CisgICAgICAgIG1fdmFs
dWUuc2V0U2tld1koYW5nbGUpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdUcmFuc2Zvcm0oU1ZHTGVnYWN5
QW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUs
IFNWR1RyYW5zZm9ybVZhbHVlJiB2YWx1ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8
U1ZHVHJhbnNmb3JtVmFsdWU+KCZhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKKyAgICB1
c2luZyBCYXNlID0gU1ZHVmFsdWVQcm9wZXJ0eTxTVkdUcmFuc2Zvcm1WYWx1ZT47CisKKyAgICBT
VkdUcmFuc2Zvcm0oU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSB7IH0sIGZsb2F0IGFuZ2xlID0gMCwgY29u
c3QgRmxvYXRQb2ludCYgcm90YXRpb25DZW50ZXIgPSB7IH0pCisgICAgICAgIDogQmFzZShTVkdU
cmFuc2Zvcm1WYWx1ZSh0eXBlLCBTVkdNYXRyaXg6OmNyZWF0ZSh0aGlzLCBTVkdQcm9wZXJ0eUFj
Y2Vzczo6UmVhZFdyaXRlLCB0cmFuc2Zvcm0pLCBhbmdsZSwgcm90YXRpb25DZW50ZXIpKQorICAg
IHsKKyAgICB9CisKKyAgICBTVkdQcm9wZXJ0eU93bmVyKiBvd25lcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fb3duZXI7IH0KKworICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZH
UHJvcGVydHkqIHByb3BlcnR5KSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChwcm9wZXJ0eSwgcHJvcGVydHkgPT0gbV92YWx1ZS5tYXRyaXgoKS5wdHIoKSk7CisgICAgICAg
IGlmIChvd25lcigpKQorICAgICAgICAgICAgb3duZXIoKS0+Y29tbWl0UHJvcGVydHlDaGFuZ2Uo
dGhpcyk7CisgICAgICAgIG1fdmFsdWUubWF0cml4RGlkQ2hhbmdlKCk7CiAgICAgfQogCi0gICAg
ZXhwbGljaXQgU1ZHVHJhbnNmb3JtKGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJiBpbml0aWFsVmFs
dWUpCi0gICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybVZhbHVlPihpbml0
aWFsVmFsdWUpCisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZQogICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUudmFsdWVBc1N0cmluZygpOwogICAgIH0KIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaWRsIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5pZGwKaW5kZXggMTE5NzQwNTkzOThiODQ5ZDA0Zjg2
ZmNmYmZjN2VkMGUyNWMxYTkwMi4uNTI5YjBlZDUwYWQzYWQ1ZWE3ZjhhM2M2ZTU5YTU5YTU4ZDlj
MzI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5pZGwKQEAgLTMyLDcgKzMyLDcgQEAK
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFJBTlNGT1JNX1NLRVdZID0gNjsKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCB0eXBlOwotICAgIFtOZXdPYmplY3Rd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdNYXRyaXggbWF0cml4OworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBTVkdNYXRyaXggbWF0cml4OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZmxvYXQgYW5nbGU7CiAKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWF0cml4
KFNWR01hdHJpeCBtYXRyaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKaW5k
ZXggM2NiZDViZjA2MDU4YjFkZmU3ZjRmM2U0ZTZiNzQ5MGFkYWFkOTRhZS4uNTQ0ZDYwYjJlNjM1
YzFjMjA5OTM0ZWU0MzVjZjQxMjVlNmE3MWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtTGlzdC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjAsNTcgKzIxLDExNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCisjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgorI2luY2x1
ZGUgIlNWR1ZhbHVlUHJvcGVydHlMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU1ZHVHJhbnNmb3JtTGlzdCBmaW5hbCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHlUZWFyT2Zm
PFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+IHsKK2NsYXNzIFNWR1RyYW5zZm9ybUxpc3QgZmluYWwg
OiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUxpc3Q8U1ZHVHJhbnNmb3JtPiB7CisgICAgZnJpZW5k
IGNsYXNzIFNWR1ZpZXdTcGVjOworICAgIHVzaW5nIEJhc2UgPSBTVkdWYWx1ZVByb3BlcnR5TGlz
dDxTVkdUcmFuc2Zvcm0+OworICAgIHVzaW5nIEJhc2U6OkJhc2U7CisKIHB1YmxpYzoKLSAgICB1
c2luZyBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz47Ci0gICAgdXNpbmcgTGlzdFdyYXBwZXJD
YWNoZSA9IEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKKyAg
ICBzdGF0aWMgUmVmPFNWR1RyYW5zZm9ybUxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm1MaXN0KCkpOworICAgIH0KIAotICAgIHN0
YXRpYyBSZWY8U1ZHVHJhbnNmb3JtTGlzdD4gY3JlYXRlKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9y
bUxpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgc3Rh
dGljIFJlZjxTVkdUcmFuc2Zvcm1MaXN0PiBjcmVhdGUoU1ZHUHJvcGVydHlPd25lciogb3duZXIs
IFNWR1Byb3BlcnR5QWNjZXNzIGFjY2VzcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNWR1RyYW5zZm9ybUxpc3QoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3
cmFwcGVycykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm1MaXN0
KG93bmVyLCBhY2Nlc3MpKTsKICAgICB9CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8U1ZHVHJhbnNm
b3JtPj4gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgmIG1hdHJpeCkKKyAg
ICBzdGF0aWMgUmVmPFNWR1RyYW5zZm9ybUxpc3Q+IGNyZWF0ZShjb25zdCBTVkdUcmFuc2Zvcm1M
aXN0JiBvdGhlciwgU1ZHUHJvcGVydHlBY2Nlc3MgYWNjZXNzKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fdmFsdWVzKTsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWVzLT5jcmVhdGVTVkdUcmFuc2Zv
cm1Gcm9tTWF0cml4KG1hdHJpeCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1Ry
YW5zZm9ybUxpc3Qob3RoZXIsIGFjY2VzcykpOwogICAgIH0KIAotICAgIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxTVkdUcmFuc2Zvcm0+PiBjb25zb2xpZGF0ZSgpCisgICAgRXhjZXB0aW9uT3I8UmVmPFNW
R1RyYW5zZm9ybT4+IGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgUmVmPFNWR01h
dHJpeD4mIG1hdHJpeCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgICAg
IEFTU0VSVChtX3dyYXBwZXJzKTsKKyAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRl
KG1hdHJpeC0+dmFsdWUoKSk7CisgICAgfQogCisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFNWR1Ry
YW5zZm9ybT4+IGNvbnNvbGlkYXRlKCkKKyAgICB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gY2Fu
QWx0ZXJMaXN0KCk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgQVNTRVJUKHJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzLT5z
aXplKCkgPT0gbV93cmFwcGVycy0+c2l6ZSgpKTsKLQogICAgICAgICAvLyBTcGVjOiBJZiB0aGUg
bGlzdCB3YXMgZW1wdHksIHRoZW4gYSB2YWx1ZSBvZiBudWxsIGlzIHJldHVybmVkLgotICAgICAg
ICBpZiAobV92YWx1ZXMtPmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKG1faXRlbXMuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgZGV0YWNoTGlzdFdyYXBw
ZXJzKDApOwotICAgICAgICAKLSAgICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gd3JhcHBlciA9
IG1fdmFsdWVzLT5jb25zb2xpZGF0ZSgpOwotICAgICAgICBtX3dyYXBwZXJzLT5hcHBlbmQobWFr
ZVdlYWtQdHIoKndyYXBwZXIpKTsKKyAgICAgICAgaWYgKG1faXRlbXMuc2l6ZSgpID09IDEpCisg
ICAgICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihhdCgwKS5nZXQoKSk7CisKKyAgICAgICAgYXV0
byBuZXdJdGVtID0gU1ZHVHJhbnNmb3JtOjpjcmVhdGUoY29uY2F0ZW5hdGUoKSk7CisgICAgICAg
IGNsZWFySXRlbXMoKTsKKworICAgICAgICBhdXRvIGl0ZW0gPSBhcHBlbmQoV1RGTW92ZShuZXdJ
dGVtKSk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gbWFrZVJlZlB0
cihpdGVtLmdldCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFs
dWUpCisgICAgeworICAgICAgICBjbGVhckl0ZW1zKCk7CisKKyAgICAgICAgYXV0byB1cGNvbnZl
cnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KTsKKyAgICAgICAgY29uc3QgVUNoYXIqIHN0YXJ0ID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOwor
ICAgICAgICBpZiAoIXBhcnNlKHN0YXJ0LCBzdGFydCArIHZhbHVlLmxlbmd0aCgpKSkKKyAgICAg
ICAgICAgIGNsZWFySXRlbXMoKTsKKyAgICB9CisKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY29uY2F0
ZW5hdGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHJlc3VsdDsKKyAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2Zvcm0gOiBtX2l0ZW1zKQorICAgICAgICAgICAg
cmVzdWx0ICo9IHRyYW5zZm9ybS0+bWF0cml4KCktPnZhbHVlKCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQogCi0gICAgICAgIEFTU0VSVChtX3ZhbHVlcy0+c2l6ZSgpID09IG1fd3Jh
cHBlcnMtPnNpemUoKSk7Ci0gICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIFN0cmluZyB2YWx1
ZUFzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2Zyb20gOiBtX2l0ZW1zKSB7
CisgICAgICAgICAgICBpZiAoYnVpbGRlci5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidWls
ZGVyLmFwcGVuZCgnICcpOworCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0cmFuc2Zyb20t
PnZhbHVlKCkudmFsdWVBc1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdUcmFuc2Zvcm1MaXN0
KEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVy
dHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJD
YWNoZSYgd3JhcHBlcnMpCi0gICAgICAgIDogU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzPihhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdyYXBwZXJz
KQorICAgIGJvb2wgcGFyc2UoY29uc3QgVUNoYXIqJiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCkK
ICAgICB7CisgICAgICAgIGJvb2wgZGVsaW1QYXJzZWQgPSBmYWxzZTsKKyAgICAgICAgd2hpbGUg
KHN0YXJ0IDwgZW5kKSB7CisgICAgICAgICAgICBkZWxpbVBhcnNlZCA9IGZhbHNlOworICAgICAg
ICAgICAgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSA9IFNWR1RyYW5z
Zm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX1VOS05PV047CisgICAgICAgICAgICBza2lwT3B0aW9u
YWxTVkdTcGFjZXMoc3RhcnQsIGVuZCk7CisKKyAgICAgICAgICAgIGlmICghU1ZHVHJhbnNmb3Jt
YWJsZTo6cGFyc2VBbmRTa2lwVHlwZShzdGFydCwgZW5kLCB0eXBlKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIFJlZjxTVkdUcmFuc2Zvcm0+IHRyYW5zZm9y
bSA9IFNWR1RyYW5zZm9ybTo6Y3JlYXRlKHR5cGUpOworICAgICAgICAgICAgaWYgKCFTVkdUcmFu
c2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybVZhbHVlKHR5cGUsIHN0YXJ0LCBlbmQsIHRyYW5zZm9y
bS0+dmFsdWUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICBhcHBlbmQoV1RGTW92ZSh0cmFuc2Zvcm0pKTsKKyAgICAgICAgICAgIHNraXBPcHRpb25hbFNW
R1NwYWNlcyhzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGlmIChzdGFydCA8IGVuZCAmJiAqc3Rh
cnQgPT0gJywnKSB7CisgICAgICAgICAgICAgICAgZGVsaW1QYXJzZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNraXBPcHRp
b25hbFNWR1NwYWNlcyhzdGFydCwgZW5kKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIWRl
bGltUGFyc2VkOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm1MaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0
LmlkbAppbmRleCAzZTgxZDYyYTM1YWU4YzM2MTI5NjJkNzU4MWYzMDhkZGRhMTgzODc1Li4yNTYz
MDUyOGRlOWE3NDkzYmJlZDFhMjU0MmMyNWQzMDFhN2VjNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybUxpc3QuaWRsCkBAIC0zNiw1ICszNiw1IEBAIGludGVyZmFjZSBTVkdUcmFu
c2Zvcm1MaXN0IHsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9ybSBhcHBlbmRJ
dGVtKFNWR1RyYW5zZm9ybSBpdGVtKTsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2Jq
ZWN0XSBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgg
bWF0cml4KTsKLSAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHVHJhbnNmb3Jt
IGNvbnNvbGlkYXRlKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gY29u
c29saWRhdGUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtTGlzdFZhbHVlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZh
bHVlcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1YjNjMzE2ZjJlZDc3OWM5
NDZjOGU4ZTIyNzY5YzFkODFmZTVlMjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIgotCi0j
aW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgot
I2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFNWR1RyYW5zZm9ybT4gU1ZH
VHJhbnNmb3JtTGlzdFZhbHVlczo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRy
aXgmIG1hdHJpeCkgY29uc3QKLXsKLSAgICByZXR1cm4gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZH
VHJhbnNmb3JtRnJvbU1hdHJpeChtYXRyaXgpOwotfQotCi1SZWY8U1ZHVHJhbnNmb3JtPiBTVkdU
cmFuc2Zvcm1MaXN0VmFsdWVzOjpjb25zb2xpZGF0ZSgpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3Jt
IG1hdHJpeDsKLSAgICBpZiAoIWNvbmNhdGVuYXRlKG1hdHJpeCkpCi0gICAgICAgIHJldHVybiBT
VkdUcmFuc2Zvcm06OmNyZWF0ZSgpOwotCi0gICAgU1ZHVHJhbnNmb3JtVmFsdWUgdHJhbnNmb3Jt
KG1hdHJpeCk7Ci0gICAgY2xlYXIoKTsKLSAgICBhcHBlbmQodHJhbnNmb3JtKTsKLSAgICByZXR1
cm4gU1ZHVHJhbnNmb3JtOjpjcmVhdGUodHJhbnNmb3JtKTsKLX0KLQotYm9vbCBTVkdUcmFuc2Zv
cm1MaXN0VmFsdWVzOjpjb25jYXRlbmF0ZShBZmZpbmVUcmFuc2Zvcm0mIHJlc3VsdCkgY29uc3QK
LXsKLSAgICB1bnNpZ25lZCBzaXplID0gdGhpcy0+c2l6ZSgpOwotICAgIGlmICghc2l6ZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgcmVzdWx0ICo9IGF0KGkpLm1hdHJpeCgpOwotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLVN0cmluZyBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nKCkg
Y29uc3QKLXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgdW5zaWduZWQgc2l6ZSA9
IHRoaXMtPnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIGlmIChpID4gMCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0K
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoYXQoaSkudmFsdWVBc1N0cmluZygpKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi12b2lkIFNWR1RyYW5zZm9ybUxp
c3RWYWx1ZXM6OnBhcnNlKGNvbnN0IFN0cmluZyYgdHJhbnNmb3JtKQotewotICAgIGF1dG8gdXBj
b252ZXJ0ZWRDaGFyYWN0ZXJzID0gU3RyaW5nVmlldyh0cmFuc2Zvcm0pLnVwY29udmVydGVkQ2hh
cmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHVwY29udmVydGVkQ2hhcmFjdGVy
czsKLSAgICBpZiAoIVNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKCp0
aGlzLCBzdGFydCwgc3RhcnQgKyB0cmFuc2Zvcm0ubGVuZ3RoKCkpKQotICAgICAgICBjbGVhcigp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVjYzQ0
MWUzNzE1NmNhMGU2YTQ3YzQ4OGQyM2U5NzAzNzE2YTk4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
TGlzdFZhbHVlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmOwotCi1jbGFzcyBTVkdUcmFuc2Zvcm1MaXN0OwotCi1jbGFzcyBTVkdUcmFuc2Zv
cm1MaXN0VmFsdWVzIGZpbmFsIDogcHVibGljIFZlY3RvcjxTVkdUcmFuc2Zvcm1WYWx1ZSwgMCwg
Q3Jhc2hPbk92ZXJmbG93LCAyPiB7Ci1wdWJsaWM6Ci0gICAgUmVmPFNWR1RyYW5zZm9ybT4gY3Jl
YXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgmKSBjb25zdDsKLSAgICBSZWY8U1ZH
VHJhbnNmb3JtPiBjb25zb2xpZGF0ZSgpOwotCi0gICAgYm9vbCBjb25jYXRlbmF0ZShBZmZpbmVU
cmFuc2Zvcm0mIHJlc3VsdCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNv
bnN0OwotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0
cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPiB7Ci0gICAgc3Rh
dGljIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9
Ci0gICAgc3RhdGljIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgZnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKLSAgICB7Ci0gICAgICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgdmFsdWVz
OwotICAgICAgICB2YWx1ZXMucGFyc2Uoc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlczsK
LSAgICB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+IHBhcnNl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KGNvbnN0IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIGxpc3QpIHsgcmV0dXJuIGxpc3QudmFsdWVB
c1N0cmluZygpOyB9Ci0KLSAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSBTVkdUcmFuc2Zvcm1WYWx1
ZTsKLSAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdUcmFuc2Zvcm07Ci0gICAgdXNpbmcg
TGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR1RyYW5zZm9ybUxpc3Q7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYxNGFjMmU3M2ViMTFhYjE0ODE1ODQwMzdhNmY0
MDlkZjc0NDMzYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMjM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm1WYWx1ZS5oIgotCi0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0j
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgotI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNWR1RyYW5zZm9ybVZhbHVlOjpTVkdU
cmFuc2Zvcm1WYWx1ZSgpID0gZGVmYXVsdDsKLQotU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5z
Zm9ybVZhbHVlKFNWR1RyYW5zZm9ybVR5cGUgdHlwZSwgQ29uc3RydWN0aW9uTW9kZSBtb2RlKQot
ICAgIDogbV90eXBlKHR5cGUpCi17Ci0gICAgaWYgKG1vZGUgPT0gQ29uc3RydWN0WmVyb1RyYW5z
Zm9ybSkKLSAgICAgICAgbV9tYXRyaXggPSBBZmZpbmVUcmFuc2Zvcm0oMCwgMCwgMCwgMCwgMCwg
MCk7Ci19Ci0KLVNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1WYWx1ZShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIG1hdHJpeCkKLSAgICA6IG1fdHlwZShTVkdfVFJBTlNGT1JNX01BVFJJWCkK
LSAgICAsIG1fbWF0cml4KG1hdHJpeCkKLXsKLX0KLQotdm9pZCBTVkdUcmFuc2Zvcm1WYWx1ZTo6
c2V0TWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KQotewotICAgIG1fdHlwZSA9
IFNWR19UUkFOU0ZPUk1fTUFUUklYOwotICAgIG1fYW5nbGUgPSAwOwotICAgIG1fbWF0cml4ID0g
bWF0cml4OwotfQotCi12b2lkIFNWR1RyYW5zZm9ybVZhbHVlOjp1cGRhdGVTVkdNYXRyaXgoKQot
ewotICAgIC8vIFRoZSB1bmRlcmx5aW5nIG1hdHJpeCBoYXMgYmVlbiBjaGFuZ2VkLCBhbHRlciB0
aGUgdHJhbnNmb3JtYXRpb24gdHlwZS4KLSAgICAvLyBTcGVjOiBJbiBjYXNlIHRoZSBtYXRyaXgg
b2JqZWN0IGlzIGNoYW5nZWQgZGlyZWN0bHkgKGkuZS4sIHdpdGhvdXQgdXNpbmcgdGhlIG1ldGhv
ZHMgb24gdGhlIFNWR1RyYW5zZm9ybSBpbnRlcmZhY2UgaXRzZWxmKQotICAgIC8vIHRoZW4gdGhl
IHR5cGUgb2YgdGhlIFNWR1RyYW5zZm9ybSBjaGFuZ2VzIHRvIFNWR19UUkFOU0ZPUk1fTUFUUklY
LgotICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fTUFUUklYOwotICAgIG1fYW5nbGUgPSAwOwot
fQotCi12b2lkIFNWR1RyYW5zZm9ybVZhbHVlOjpzZXRUcmFuc2xhdGUoZmxvYXQgdHgsIGZsb2F0
IHR5KQotewotICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFOwotICAgIG1fYW5n
bGUgPSAwOwotCi0gICAgbV9tYXRyaXgubWFrZUlkZW50aXR5KCk7Ci0gICAgbV9tYXRyaXgudHJh
bnNsYXRlKHR4LCB0eSk7Ci19Ci0KLUZsb2F0UG9pbnQgU1ZHVHJhbnNmb3JtVmFsdWU6OnRyYW5z
bGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEZsb2F0UG9pbnQ6Om5hcnJvd1ByZWNpc2lvbiht
X21hdHJpeC5lKCksIG1fbWF0cml4LmYoKSk7Ci19Ci0KLXZvaWQgU1ZHVHJhbnNmb3JtVmFsdWU6
OnNldFNjYWxlKGZsb2F0IHN4LCBmbG9hdCBzeSkKLXsKLSAgICBtX3R5cGUgPSBTVkdfVFJBTlNG
T1JNX1NDQUxFOwotICAgIG1fYW5nbGUgPSAwOwotICAgIG1fY2VudGVyID0gRmxvYXRQb2ludCgp
OwotCi0gICAgbV9tYXRyaXgubWFrZUlkZW50aXR5KCk7Ci0gICAgbV9tYXRyaXguc2NhbGVOb25V
bmlmb3JtKHN4LCBzeSk7Ci19Ci0KLUZsb2F0U2l6ZSBTVkdUcmFuc2Zvcm1WYWx1ZTo6c2NhbGUo
KSBjb25zdAotewotICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihtX21hdHJp
eC5hKCksIG1fbWF0cml4LmQoKSk7Ci19Ci0KLXZvaWQgU1ZHVHJhbnNmb3JtVmFsdWU6OnNldFJv
dGF0ZShmbG9hdCBhbmdsZSwgZmxvYXQgY3gsIGZsb2F0IGN5KQotewotICAgIG1fdHlwZSA9IFNW
R19UUkFOU0ZPUk1fUk9UQVRFOwotICAgIG1fYW5nbGUgPSBhbmdsZTsKLSAgICBtX2NlbnRlciA9
IEZsb2F0UG9pbnQoY3gsIGN5KTsKLQotICAgIC8vIFRPRE86IHRvU3RyaW5nKCkgaW1wbGVtZW50
YXRpb24sIHdoaWNoIGNhbiBzaG93IGN4LCBjeSAobmVlZCB0byBiZSBzdG9yZWQ/KQotICAgIG1f
bWF0cml4Lm1ha2VJZGVudGl0eSgpOwotICAgIG1fbWF0cml4LnRyYW5zbGF0ZShjeCwgY3kpOwot
ICAgIG1fbWF0cml4LnJvdGF0ZShhbmdsZSk7Ci0gICAgbV9tYXRyaXgudHJhbnNsYXRlKC1jeCwg
LWN5KTsKLX0KLQotdm9pZCBTVkdUcmFuc2Zvcm1WYWx1ZTo6c2V0U2tld1goZmxvYXQgYW5nbGUp
Ci17Ci0gICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9TS0VXWDsKLSAgICBtX2FuZ2xlID0gYW5n
bGU7Ci0KLSAgICBtX21hdHJpeC5tYWtlSWRlbnRpdHkoKTsKLSAgICBtX21hdHJpeC5za2V3WChh
bmdsZSk7Ci19Ci0KLXZvaWQgU1ZHVHJhbnNmb3JtVmFsdWU6OnNldFNrZXdZKGZsb2F0IGFuZ2xl
KQotewotICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fU0tFV1k7Ci0gICAgbV9hbmdsZSA9IGFu
Z2xlOwotCi0gICAgbV9tYXRyaXgubWFrZUlkZW50aXR5KCk7Ci0gICAgbV9tYXRyaXguc2tld1ko
YW5nbGUpOwotfQotCi1jb25zdCBTdHJpbmcmIFNWR1RyYW5zZm9ybVZhbHVlOjp0cmFuc2Zvcm1U
eXBlUHJlZml4Rm9yUGFyc2luZyhTVkdUcmFuc2Zvcm1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgY2FzZSBTVkdfVFJBTlNGT1JNX1VOS05PV046Ci0gICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9NQVRSSVg6IHsKLSAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbWF0cml4U3RyaW5nKE1BS0VfU1RBVElD
X1NUUklOR19JTVBMKCJtYXRyaXgoIikpOwotICAgICAgICByZXR1cm4gbWF0cml4U3RyaW5nOwot
ICAgIH0KLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFOiB7Ci0gICAgICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHRyYW5zbGF0ZVN0cmluZyhNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgidHJhbnNsYXRlKCIpKTsKLSAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZVN0cmluZzsK
LSAgICB9Ci0gICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NDQUxFOiB7Ci0gICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNjYWxlU3RyaW5nKE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJzY2FsZSgiKSk7Ci0gICAgICAgIHJldHVybiBzY2FsZVN0cmluZzsKLSAgICB9Ci0gICAgY2Fz
ZSBTVkdfVFJBTlNGT1JNX1JPVEFURTogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiByb3RhdGVTdHJpbmcoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoInJvdGF0ZSgiKSk7
Ci0gICAgICAgIHJldHVybiByb3RhdGVTdHJpbmc7Ci0gICAgfSAgICAKLSAgICBjYXNlIFNWR19U
UkFOU0ZPUk1fU0tFV1g6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
c2tld1hTdHJpbmcoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoInNrZXdYKCIpKTsKLSAgICAgICAg
cmV0dXJuIHNrZXdYU3RyaW5nOwotICAgIH0KLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1k6
IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2tld1lTdHJpbmcoTUFL
RV9TVEFUSUNfU1RSSU5HX0lNUEwoInNrZXdZKCIpKTsKLSAgICAgICAgcmV0dXJuIHNrZXdZU3Ry
aW5nOwotICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQotU3RyaW5nIFNWR1RyYW5zZm9ybVZhbHVlOjp2YWx1ZUFz
U3RyaW5nKCkgY29uc3QKLXsKLSAgICBjb25zdCBTdHJpbmcmIHByZWZpeCA9IHRyYW5zZm9ybVR5
cGVQcmVmaXhGb3JQYXJzaW5nKG1fdHlwZSk7Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBj
YXNlIFNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKLSAgICAgICAgcmV0dXJuIHByZWZpeDsKLSAgICBj
YXNlIFNWR19UUkFOU0ZPUk1fTUFUUklYOiB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4KTsKLSAgICAgICAgYnVpbGRlci5hcHBl
bmRGaXhlZFByZWNpc2lvbk51bWJlcihtX21hdHJpeC5hKCkpOwotICAgICAgICBidWlsZGVyLmFw
cGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1f
bWF0cml4LmIoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGJ1aWxk
ZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9tYXRyaXguYygpKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51
bWJlcihtX21hdHJpeC5kKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAg
ICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fbWF0cml4LmUoKSk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIobV9tYXRyaXguZigpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsK
LSAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgY2FzZSBTVkdf
VFJBTlNGT1JNX1RSQU5TTEFURTogewotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0g
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHByZWZpeCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4
ZWRQcmVjaXNpb25OdW1iZXIobV9tYXRyaXguZSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
JyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX21hdHJp
eC5mKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwotICAgIH0KLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0NBTEU6IHsK
LSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZChw
cmVmaXgpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fbWF0
cml4LnhTY2FsZSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX21hdHJpeC55U2NhbGUoKSk7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7Ci0gICAgfQotICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9ST1RBVEU6IHsKLSAgICAgICAgZG91
YmxlIGFuZ2xlSW5SYWQgPSBkZWcycmFkKG1fYW5nbGUpOwotICAgICAgICBkb3VibGUgY29zQW5n
bGUgPSBzdGQ6OmNvcyhhbmdsZUluUmFkKTsKLSAgICAgICAgZG91YmxlIHNpbkFuZ2xlID0gc3Rk
OjpzaW4oYW5nbGVJblJhZCk7Ci0gICAgICAgIGZsb2F0IGN4ID0gbmFycm93UHJlY2lzaW9uVG9G
bG9hdChjb3NBbmdsZSAhPSAxID8gKG1fbWF0cml4LmUoKSAqICgxIC0gY29zQW5nbGUpIC0gbV9t
YXRyaXguZigpICogc2luQW5nbGUpIC8gKDEgLSBjb3NBbmdsZSkgLyAyIDogMCk7Ci0gICAgICAg
IGZsb2F0IGN5ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb3NBbmdsZSAhPSAxID8gKG1fbWF0
cml4LmUoKSAqIHNpbkFuZ2xlIC8gKDEgLSBjb3NBbmdsZSkgKyBtX21hdHJpeC5mKCkpIC8gMiA6
IDApOwotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHByZWZpeCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIo
bV9hbmdsZSk7Ci0gICAgICAgIGlmIChjeCB8fCBjeSkgewotICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1i
ZXIoY3gpOwotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoY3kpOwotICAgICAgICB9Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcpJyk7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7
Ci0gICAgfQotICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWDoKLSAgICBjYXNlIFNWR19UUkFO
U0ZPUk1fU0tFV1k6IHsKLSAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZChwcmVmaXgpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lz
aW9uTnVtYmVyKG1fYW5nbGUpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAppbmRleCA0
OTkxOWJiM2RjYTFlYjJjOTAxN2M1M2NkZTE0Y2NlNWM1ZGUzZWJhLi40YTMyYmJhMDc3ZmIzN2Iw
OGQxNzFiNjQ4MjhmZDVkMjRiMzRhZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
VmFsdWUuaApAQCAtMjEsOCArMjEsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRl
ICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiU1ZHTWF0
cml4LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDUsMzkgKzUwLDI0MyBAQCBwdWJsaWM6CiAgICAgICAgIENvbnN0
cnVjdFplcm9UcmFuc2Zvcm0KICAgICB9OwogCi0gICAgU1ZHVHJhbnNmb3JtVmFsdWUoKTsKLSAg
ICBTVkdUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1UeXBlLCBDb25zdHJ1Y3Rpb25Nb2RlID0g
Q29uc3RydWN0SWRlbnRpdHlUcmFuc2Zvcm0pOwotICAgIGV4cGxpY2l0IFNWR1RyYW5zZm9ybVZh
bHVlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIFNWR1RyYW5zZm9ybVZhbHVlKFNWR1Ry
YW5zZm9ybVR5cGUgdHlwZSA9IFNWR19UUkFOU0ZPUk1fTUFUUklYLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSA9IHsgfSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAg
LCBtX21hdHJpeChTVkdNYXRyaXg6OmNyZWF0ZSh0cmFuc2Zvcm0pKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgU1ZHVHJhbnNmb3JtVmFsdWUoY29uc3QgU1ZHVHJhbnNmb3JtVmFsdWUmIG90aGVy
KQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisgICAgICAgICwgbV9tYXRyaXgoU1ZH
TWF0cml4OjpjcmVhdGUob3RoZXIubWF0cml4KCktPnZhbHVlKCkpKQorICAgICAgICAsIG1fYW5n
bGUob3RoZXIubV9hbmdsZSkKKyAgICAgICAgLCBtX3JvdGF0aW9uQ2VudGVyKG90aGVyLm1fcm90
YXRpb25DZW50ZXIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBTVkdUcmFuc2Zvcm1WYWx1ZShT
VkdUcmFuc2Zvcm1UeXBlIHR5cGUsIFJlZjxTVkdNYXRyaXg+JiYgbWF0cml4LCBmbG9hdCBhbmds
ZSwgY29uc3QgRmxvYXRQb2ludCYgcm90YXRpb25DZW50ZXIpCisgICAgICAgIDogbV90eXBlKHR5
cGUpCisgICAgICAgICwgbV9tYXRyaXgoV1RGTW92ZShtYXRyaXgpKQorICAgICAgICAsIG1fYW5n
bGUoYW5nbGUpCisgICAgICAgICwgbV9yb3RhdGlvbkNlbnRlcihyb3RhdGlvbkNlbnRlcikKKyAg
ICB7CisgICAgfQorICAgIAorICAgIFNWR1RyYW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9ybVZhbHVl
JiYgb3RoZXIpCisgICAgICAgIDogbV90eXBlKG90aGVyLm1fdHlwZSkKKyAgICAgICAgLCBtX21h
dHJpeChvdGhlci5tX21hdHJpeC5jb3B5UmVmKCkpCisgICAgICAgICwgbV9hbmdsZShvdGhlci5t
X2FuZ2xlKQorICAgICAgICAsIG1fcm90YXRpb25DZW50ZXIob3RoZXIubV9yb3RhdGlvbkNlbnRl
cikKKyAgICB7CisgICAgfQorICAgIAorICAgIFNWR1RyYW5zZm9ybVZhbHVlJiBvcGVyYXRvcj0o
Y29uc3QgU1ZHVHJhbnNmb3JtVmFsdWUmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV90eXBlID0g
b3RoZXIubV90eXBlOworICAgICAgICBtX21hdHJpeC0+c2V0VmFsdWUob3RoZXIubV9tYXRyaXgt
PnZhbHVlKCkpOworICAgICAgICBtX2FuZ2xlID0gb3RoZXIubV9hbmdsZTsKKyAgICAgICAgbV9y
b3RhdGlvbkNlbnRlciA9IG90aGVyLm1fcm90YXRpb25DZW50ZXI7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CiAKICAgICBTVkdUcmFuc2Zvcm1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KLQotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KCkgY29uc3Qg
eyByZXR1cm4gbV9tYXRyaXg7IH0KLSAgICBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCgpIHsgcmV0
dXJuIG1fbWF0cml4OyB9Ci0gICAgdm9pZCB1cGRhdGVTVkdNYXRyaXgoKTsKLQorICAgIGNvbnN0
IFJlZjxTVkdNYXRyaXg+JiBtYXRyaXgoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeDsgfQogICAg
IGZsb2F0IGFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9hbmdsZTsgfQotICAgIEZsb2F0UG9pbnQg
cm90YXRpb25DZW50ZXIoKSBjb25zdCB7IHJldHVybiBtX2NlbnRlcjsgfQotCi0gICAgdm9pZCBz
ZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgdm9pZCBzZXRUcmFuc2xhdGUo
ZmxvYXQgdHgsIGZsb2F0IHR5KTsKLSAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHN4LCBmbG9hdCBz
eSk7Ci0gICAgdm9pZCBzZXRSb3RhdGUoZmxvYXQgYW5nbGUsIGZsb2F0IGN4LCBmbG9hdCBjeSk7
Ci0gICAgdm9pZCBzZXRTa2V3WChmbG9hdCBhbmdsZSk7Ci0gICAgdm9pZCBzZXRTa2V3WShmbG9h
dCBhbmdsZSk7Ci0gICAgCi0gICAgRmxvYXRQb2ludCB0cmFuc2xhdGUoKSBjb25zdDsKLSAgICBG
bG9hdFNpemUgc2NhbGUoKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IHJvdGF0aW9uQ2VudGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yb3RhdGlvbkNlbnRlcjsgfQogCiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlICE9IFNWR19UUkFOU0ZPUk1fVU5LTk9XTjsgfQotICAgIFN0
cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiB0
cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyhTVkdUcmFuc2Zvcm1UeXBlKTsKKyAgICB2b2lk
IHNldE1hdHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKKyAgICB7CisgICAgICAg
IG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fTUFUUklYOworICAgICAgICBtX2FuZ2xlID0gMDsKKyAg
ICAgICAgbV9yb3RhdGlvbkNlbnRlciA9IEZsb2F0UG9pbnQoKTsKKyAgICAgICAgbV9tYXRyaXgt
PnNldFZhbHVlKG1hdHJpeCk7CisgICAgfQorICAgIAorICAgIHZvaWQgbWF0cml4RGlkQ2hhbmdl
KCkKKyAgICB7CisgICAgICAgIC8vIFRoZSB1bmRlcmx5aW5nIG1hdHJpeCBoYXMgYmVlbiBjaGFu
Z2VkLCBhbHRlciB0aGUgdHJhbnNmb3JtYXRpb24gdHlwZS4KKyAgICAgICAgLy8gU3BlYzogSW4g
Y2FzZSB0aGUgbWF0cml4IG9iamVjdCBpcyBjaGFuZ2VkIGRpcmVjdGx5IChpLmUuLCB3aXRob3V0
IHVzaW5nIHRoZSBtZXRob2RzIG9uIHRoZSBTVkdUcmFuc2Zvcm0gaW50ZXJmYWNlIGl0c2VsZikK
KyAgICAgICAgLy8gdGhlbiB0aGUgdHlwZSBvZiB0aGUgU1ZHVHJhbnNmb3JtIGNoYW5nZXMgdG8g
U1ZHX1RSQU5TRk9STV9NQVRSSVguCisgICAgICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fTUFU
UklYOworICAgICAgICBtX2FuZ2xlID0gMDsKKyAgICAgICAgbV9yb3RhdGlvbkNlbnRlciA9IEZs
b2F0UG9pbnQoKTsKKyAgICB9CisgICAgCisgICAgRmxvYXRQb2ludCB0cmFuc2xhdGUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQ6Om5hcnJvd1ByZWNpc2lvbihtX21h
dHJpeC0+ZSgpLCBtX21hdHJpeC0+ZigpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRUcmFu
c2xhdGUoZmxvYXQgdHgsIGZsb2F0IHR5KQorICAgIHsKKyAgICAgICAgbV90eXBlID0gU1ZHX1RS
QU5TRk9STV9UUkFOU0xBVEU7CisgICAgICAgIG1fYW5nbGUgPSAwOworICAgICAgICBtX3JvdGF0
aW9uQ2VudGVyID0gRmxvYXRQb2ludCgpOworICAgICAgICAKKyAgICAgICAgbV9tYXRyaXgtPnZh
bHVlKCkubWFrZUlkZW50aXR5KCk7CisgICAgICAgIG1fbWF0cml4LT52YWx1ZSgpLnRyYW5zbGF0
ZSh0eCwgdHkpOworICAgIH0KKyAgICAKKyAgICBGbG9hdFNpemUgc2NhbGUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKG1fbWF0cml4LT5h
KCksIG1fbWF0cml4LT5kKCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFNjYWxlKGZsb2F0
IHN4LCBmbG9hdCBzeSkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fU0NB
TEU7CisgICAgICAgIG1fYW5nbGUgPSAwOworICAgICAgICBtX3JvdGF0aW9uQ2VudGVyID0gRmxv
YXRQb2ludCgpOworICAgICAgICAKKyAgICAgICAgbV9tYXRyaXgtPnZhbHVlKCkubWFrZUlkZW50
aXR5KCk7CisgICAgICAgIG1fbWF0cml4LT52YWx1ZSgpLnNjYWxlTm9uVW5pZm9ybShzeCwgc3kp
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFJvdGF0ZShmbG9hdCBhbmdsZSwgZmxvYXQgY3gs
IGZsb2F0IGN5KQorICAgIHsKKyAgICAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9ST1RBVEU7
CisgICAgICAgIG1fYW5nbGUgPSBhbmdsZTsKKyAgICAgICAgbV9yb3RhdGlvbkNlbnRlciA9IEZs
b2F0UG9pbnQoY3gsIGN5KTsKKyAgICAgICAgCisgICAgICAgIC8vIFRPRE86IHRvU3RyaW5nKCkg
aW1wbGVtZW50YXRpb24sIHdoaWNoIGNhbiBzaG93IGN4LCBjeSAobmVlZCB0byBiZSBzdG9yZWQ/
KQorICAgICAgICBtX21hdHJpeC0+dmFsdWUoKS5tYWtlSWRlbnRpdHkoKTsKKyAgICAgICAgbV9t
YXRyaXgtPnZhbHVlKCkudHJhbnNsYXRlKGN4LCBjeSk7CisgICAgICAgIG1fbWF0cml4LT52YWx1
ZSgpLnJvdGF0ZShhbmdsZSk7CisgICAgICAgIG1fbWF0cml4LT52YWx1ZSgpLnRyYW5zbGF0ZSgt
Y3gsIC1jeSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0U2tld1goZmxvYXQgYW5nbGUpCisg
ICAgeworICAgICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NLRVdYOworICAgICAgICBtX2Fu
Z2xlID0gYW5nbGU7CisgICAgICAgIG1fcm90YXRpb25DZW50ZXIgPSBGbG9hdFBvaW50KCk7Cisg
ICAgICAgIAorICAgICAgICBtX21hdHJpeC0+dmFsdWUoKS5tYWtlSWRlbnRpdHkoKTsKKyAgICAg
ICAgbV9tYXRyaXgtPnZhbHVlKCkuc2tld1goYW5nbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHNldFNrZXdZKGZsb2F0IGFuZ2xlKQorICAgIHsKKyAgICAgICAgbV90eXBlID0gU1ZHX1RSQU5T
Rk9STV9TS0VXWTsKKyAgICAgICAgbV9hbmdsZSA9IGFuZ2xlOworICAgICAgICBtX3JvdGF0aW9u
Q2VudGVyID0gRmxvYXRQb2ludCgpOworICAgICAgICAKKyAgICAgICAgbV9tYXRyaXgtPnZhbHVl
KCkubWFrZUlkZW50aXR5KCk7CisgICAgICAgIG1fbWF0cml4LT52YWx1ZSgpLnNrZXdZKGFuZ2xl
KTsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdAorICAgIHsK
KyAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZChw
cmVmaXhGb3JUcmFuc2Zyb21UeXBlKG1fdHlwZSkpOworICAgICAgICBzd2l0Y2ggKG1fdHlwZSkg
eworICAgICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fTUFUUklYOgorICAgICAgICAgICAgYXBwZW5k
TWF0cml4KGJ1aWxkZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHX1RS
QU5TRk9STV9UUkFOU0xBVEU6CisgICAgICAgICAgICBhcHBlbmRUcmFuc2xhdGUoYnVpbGRlcik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NDQUxFOgor
ICAgICAgICAgICAgYXBwZW5kU2NhbGUoYnVpbGRlcik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1JPVEFURToKKyAgICAgICAgICAgIGFwcGVuZFJvdGF0
ZShidWlsZGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNWR19UUkFOU0ZP
Uk1fU0tFV1g6CisgICAgICAgICAgICBhcHBlbmRTa2V3WChidWlsZGVyKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1k6CisgICAgICAgICAgICBh
cHBlbmRTa2V3WShidWlsZGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBT
dHJpbmcgcHJlZml4Rm9yVHJhbnNmcm9tVHlwZShTVkdUcmFuc2Zvcm1UeXBlIHR5cGUpCisgICAg
eworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1VO
S05PV046CisgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAgICAgY2FzZSBT
VkdfVFJBTlNGT1JNX01BVFJJWDoKKyAgICAgICAgICAgIHJldHVybiAibWF0cml4KCJfczsKKyAg
ICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFURToKKyAgICAgICAgICAgIHJldHVybiAi
dHJhbnNsYXRlKCJfczsKKyAgICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NDQUxFOgorICAgICAg
ICAgICAgcmV0dXJuICJzY2FsZSgiX3M7CisgICAgICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9ST1RB
VEU6CisgICAgICAgICAgICByZXR1cm4gInJvdGF0ZSgiX3M7CisgICAgICAgIGNhc2UgU1ZHX1RS
QU5TRk9STV9TS0VXWDoKKyAgICAgICAgICAgIHJldHVybiAic2tld1goIl9zOworICAgICAgICBj
YXNlIFNWR19UUkFOU0ZPUk1fU0tFV1k6CisgICAgICAgICAgICByZXR1cm4gInNrZXdZKCJfczsK
KyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CisgICAgfQogCiBwcml2YXRlOgorICAgIHZvaWQgYXBwZW5kTnVtYmVy
cyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoJyknKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTnVtYmVyLCB0
eXBlbmFtZS4uLiBOdW1iZXJzPgorICAgIHZvaWQgYXBwZW5kTnVtYmVycyhTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBOdW1iZXIgbnVtYmVyLCBOdW1iZXJzLi4uIG51bWJlcnMpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoYnVpbGRlci5sZW5ndGgoKSAmJiBidWlsZGVyW2J1aWxkZXIubGVuZ3Ro
KCkgLSAxXSAhPSAnKCcpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZE51bWJlcihudW1iZXIpOworICAgICAgICBhcHBlbmROdW1iZXJzKGJ1
aWxkZXIsIG51bWJlcnMuLi4pOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZE1hdHJpeChT
dHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgYXBwZW5kTnVtYmVy
cyhidWlsZGVyLCBtX21hdHJpeC0+YSgpLCBtX21hdHJpeC0+YigpLCBtX21hdHJpeC0+YygpLCBt
X21hdHJpeC0+ZCgpLCBtX21hdHJpeC0+ZSgpLCBtX21hdHJpeC0+ZigpKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBhcHBlbmRUcmFuc2xhdGUoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGFwcGVuZE51bWJlcnMoYnVpbGRlciwgbV9tYXRyaXgtPmUoKSwgbV9t
YXRyaXgtPmYoKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYXBwZW5kU2NhbGUoU3RyaW5nQnVp
bGRlciYgYnVpbGRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGFwcGVuZE51bWJlcnMoYnVpbGRl
ciwgbV9tYXRyaXgtPnZhbHVlKCkueFNjYWxlKCksIG1fbWF0cml4LT52YWx1ZSgpLnlTY2FsZSgp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhcHBlbmRSb3RhdGUoU3RyaW5nQnVpbGRlciYgYnVp
bGRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGRvdWJsZSBhbmdsZUluUmFkID0gZGVnMnJhZCht
X2FuZ2xlKTsKKyAgICAgICAgZG91YmxlIGNvc0FuZ2xlID0gc3RkOjpjb3MoYW5nbGVJblJhZCk7
CisgICAgICAgIGRvdWJsZSBzaW5BbmdsZSA9IHN0ZDo6c2luKGFuZ2xlSW5SYWQpOworICAgICAg
ICAKKyAgICAgICAgZmxvYXQgY3ggPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvc0FuZ2xlICE9
IDEgPyAobV9tYXRyaXgtPmUoKSAqICgxIC0gY29zQW5nbGUpIC0gbV9tYXRyaXgtPmYoKSAqIHNp
bkFuZ2xlKSAvICgxIC0gY29zQW5nbGUpIC8gMiA6IDApOworICAgICAgICBmbG9hdCBjeSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQoY29zQW5nbGUgIT0gMSA/IChtX21hdHJpeC0+ZSgpICogc2lu
QW5nbGUgLyAoMSAtIGNvc0FuZ2xlKSArIG1fbWF0cml4LT5mKCkpIC8gMiA6IDApOworICAgICAg
ICAKKyAgICAgICAgaWYgKGN4IHx8IGN5KQorICAgICAgICAgICAgYXBwZW5kTnVtYmVycyhidWls
ZGVyLCBtX2FuZ2xlLCBjeCwgY3kpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmRO
dW1iZXJzKGJ1aWxkZXIsIG1fYW5nbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZFNr
ZXdYKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CisgICAgeworICAgICAgICBhcHBlbmRO
dW1iZXJzKGJ1aWxkZXIsIG1fYW5nbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFwcGVuZFNr
ZXdZKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CisgICAgeworICAgICAgICBhcHBlbmRO
dW1iZXJzKGJ1aWxkZXIsIG1fYW5nbGUpOworICAgIH0KKyAgICAKICAgICBTVkdUcmFuc2Zvcm1U
eXBlIG1fdHlwZSB7IFNWR19UUkFOU0ZPUk1fVU5LTk9XTiB9OworICAgIFJlZjxTVkdNYXRyaXg+
IG1fbWF0cml4OwogICAgIGZsb2F0IG1fYW5nbGUgeyAwIH07Ci0gICAgRmxvYXRQb2ludCBtX2Nl
bnRlcjsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9tYXRyaXg7CisgICAgRmxvYXRQb2ludCBtX3Jv
dGF0aW9uQ2VudGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCmluZGV4IGI4YzBiZWRhZTA0YzMyYWE1NTE4ZDI5N2U3
ZGY4OWNmZGEzZWIxNWUuLjA2ZDdhNjIzNWI1NDdkZmM1OGQ4NTYzNWJiYjYzMWRkMTI4Nzg2ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKQEAgLTI3LDcgKzI3LDYg
QEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNs
dWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFs
dWVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xNDQsNyArMTQzLDcgQEAgc3RhdGljIGNvbnN0IFVDaGFyIHRyYW5zbGF0ZURl
c2NbXSA9ICB7J3QnLCAncicsICdhJywgJ24nLCAncycsICdsJywgJ2EnLCAndCcsICcKIHN0YXRp
YyBjb25zdCBVQ2hhciByb3RhdGVEZXNjW10gPSAgeydyJywgJ28nLCAndCcsICdhJywgJ3QnLCAn
ZSd9Owogc3RhdGljIGNvbnN0IFVDaGFyIG1hdHJpeERlc2NbXSA9ICB7J20nLCAnYScsICd0Jywg
J3InLCAnaScsICd4J307CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUFuZFNraXBUeXBlKGNv
bnN0IFVDaGFyKiYgY3VyclRyYW5zZm9ybSwgY29uc3QgVUNoYXIqIGVuZCwgU1ZHVHJhbnNmb3Jt
VmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUmIHR5cGUpCitib29sIFNWR1RyYW5zZm9ybWFibGU6OnBh
cnNlQW5kU2tpcFR5cGUoY29uc3QgVUNoYXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciog
ZW5kLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSYgdHlwZSkKIHsKICAgICBp
ZiAoY3VyclRyYW5zZm9ybSA+PSBlbmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3OSwz
NCArMTc4LDQgQEAgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgU1ZHVHJhbnNm
b3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKGNvbnN0IFMKICAgICByZXR1cm4gdHlwZTsKIH0K
IAotYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFu
c2Zvcm1MaXN0VmFsdWVzJiBsaXN0LCBjb25zdCBVQ2hhciomIGN1cnJUcmFuc2Zvcm0sIGNvbnN0
IFVDaGFyKiBlbmQsIFRyYW5zZm9ybVBhcnNpbmdNb2RlIG1vZGUpCi17Ci0gICAgaWYgKG1vZGUg
PT0gQ2xlYXJMaXN0KQotICAgICAgICBsaXN0LmNsZWFyKCk7Ci0KLSAgICBib29sIGRlbGltUGFy
c2VkID0gZmFsc2U7Ci0gICAgd2hpbGUgKGN1cnJUcmFuc2Zvcm0gPCBlbmQpIHsKLSAgICAgICAg
ZGVsaW1QYXJzZWQgPSBmYWxzZTsKLSAgICAgICAgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5z
Zm9ybVR5cGUgdHlwZSA9IFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX1VOS05PV047
Ci0gICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXJyVHJhbnNmb3JtLCBlbmQpOwotCi0g
ICAgICAgIGlmICghcGFyc2VBbmRTa2lwVHlwZShjdXJyVHJhbnNmb3JtLCBlbmQsIHR5cGUpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIFNWR1RyYW5zZm9ybVZhbHVlIHRy
YW5zZm9ybTsKLSAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9ybVZhbHVlKHR5cGUsIGN1cnJUcmFu
c2Zvcm0sIGVuZCwgdHJhbnNmb3JtKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICBsaXN0LmFwcGVuZCh0cmFuc2Zvcm0pOwotICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFj
ZXMoY3VyclRyYW5zZm9ybSwgZW5kKTsKLSAgICAgICAgaWYgKGN1cnJUcmFuc2Zvcm0gPCBlbmQg
JiYgKmN1cnJUcmFuc2Zvcm0gPT0gJywnKSB7Ci0gICAgICAgICAgICBkZWxpbVBhcnNlZCA9IHRy
dWU7Ci0gICAgICAgICAgICArK2N1cnJUcmFuc2Zvcm07Ci0gICAgICAgIH0KLSAgICAgICAgc2tp
cE9wdGlvbmFsU1ZHU3BhY2VzKGN1cnJUcmFuc2Zvcm0sIGVuZCk7Ci0gICAgfQotCi0gICAgcmV0
dXJuICFkZWxpbVBhcnNlZDsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybWFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxl
LmgKaW5kZXggYjVlMDcxNzVhNWJiMGVkZTRhYmY5N2Y3M2VkZDYzMWE4YzQzNjdlNy4uYjcwY2Y4
YzJmNWJmZmY2YTIxN2JiMGFmNjYyMWQ0MTNmOTFmN2E4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VHJhbnNmb3JtYWJsZS5oCkBAIC0yNywyMCArMjcsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKLWNsYXNzIFNWR1RyYW5zZm9ybUxpc3RWYWx1
ZXM7CiAKIGNsYXNzIFNWR1RyYW5zZm9ybWFibGUgOiBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsKIHB1
YmxpYzoKLSAgICBlbnVtIFRyYW5zZm9ybVBhcnNpbmdNb2RlIHsKLSAgICAgICAgQ2xlYXJMaXN0
LAotICAgICAgICBEb05vdENsZWFyTGlzdAotICAgIH07Ci0KICAgICB2aXJ0dWFsIH5TVkdUcmFu
c2Zvcm1hYmxlKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShT
VkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiwgY29uc3QgVUNoYXIqJiBwdHIsIGNvbnN0IFVDaGFyKiBl
bmQsIFRyYW5zZm9ybVBhcnNpbmdNb2RlID0gQ2xlYXJMaXN0KTsKICAgICBzdGF0aWMgYm9vbCBw
YXJzZVRyYW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlLCBj
b25zdCBVQ2hhciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgU1ZHVHJhbnNmb3JtVmFsdWUmKTsK
ICAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgcGFyc2VUcmFu
c2Zvcm1UeXBlKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBib29sIHBhcnNlQW5kU2tpcFR5
cGUoY29uc3QgVUNoYXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciogZW5kLCBTVkdUcmFu
c2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSYpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGxv
Y2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsgfQogICAgIHZpcnR1
YWwgQWZmaW5lVHJhbnNmb3JtIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWYWx1ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTA3NGI5NThh
MGZkMTgxMzU0YzY0ZDVmMTdmZDE5YWNkOTcwYzJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxp
c3RWYWx1ZXMuaCIKLQotI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotdXNpbmcgU1ZHVmFsdWVWYXJpYW50ID0gVmFyaWFudDwKLSAgICBTVkdUcmFuc2Zv
cm1MaXN0VmFsdWVzKgotPjsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3U3BlYy5jcHAKaW5kZXggMTBkOTI0M2E3M2ZmYmM1YjA4MjM4NmIwNDQ1YzM0MmVkNmEy
NGZhYS4uOGYyOTcwZGM0NWZlZGI3YzZhOWE3OTM2OThhY2ZlNmVmZTcyNzI0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVmlld1NwZWMuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiU1ZHVmll
d1NwZWMuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0Zp
dFRvVmlld0JveC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC0zNiwxNiArMzUsMTIgQEAg
U1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVjKFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50KQogICAg
IDogU1ZHRml0VG9WaWV3Qm94KCZjb250ZXh0RWxlbWVudCwgU1ZHUHJvcGVydHlBY2Nlc3M6OlJl
YWRPbmx5KQogICAgICwgbV9jb250ZXh0RWxlbWVudChtYWtlV2Vha1B0cihjb250ZXh0RWxlbWVu
dCkpCiAgICAgLCBtX2F0dHJpYnV0ZU93bmVyUHJveHkoKnRoaXMsIGNvbnRleHRFbGVtZW50KQor
ICAgICwgbV90cmFuc2Zvcm0oU1ZHVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKCZjb250ZXh0RWxlbWVu
dCwgU1ZHUHJvcGVydHlBY2Nlc3M6OlJlYWRPbmx5KSkKIHsKLSAgICByZWdpc3RlckF0dHJpYnV0
ZXMoKTsKLX0KLQotdm9pZCBTVkdWaWV3U3BlYzo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAg
ICBhdXRvJiByZWdpc3RyeSA9IGF0dHJpYnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3Ry
eS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJp
YnV0ZTxTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgJlNWR1ZpZXdTcGVjOjptX3RyYW5zZm9ybT4o
KTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9w
ZXJ0eTxTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgJlNWR1ZpZXdTcGVjOjptX3RyYW5zZm9ybT4o
KTsKKyAgICB9KTsKIH0KIAogU1ZHRWxlbWVudCogU1ZHVmlld1NwZWM6OnZpZXdUYXJnZXQoKSBj
b25zdApAQCAtNTgsMTggKzUzLDEwIEBAIFNWR0VsZW1lbnQqIFNWR1ZpZXdTcGVjOjp2aWV3VGFy
Z2V0KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8U1ZHRWxlbWVudD4oZWxlbWVudCk7CiB9
CiAKLVJlZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiBTVkdWaWV3U3BlYzo6dHJhbnNmb3JtKCkKLXsK
LSAgICBpZiAoIW1fY29udGV4dEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IC8vIFJldHVybiB0aGUgYW5pbVZhbCBoZXJlLCBhcyBpdHMgcmVhZG9ubHkgYnkgZGVmYXVsdCAt
IHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB3ZSB3YW50IGhlcmUuCi0gICAgcmV0dXJuIG1fdHJhbnNm
b3JtLmFuaW1hdGVkUHJvcGVydHkobV9hdHRyaWJ1dGVPd25lclByb3h5KS0+YW5pbVZhbCgpOwot
fQotCiB2b2lkIFNWR1ZpZXdTcGVjOjpyZXNldCgpCiB7CiAgICAgbV92aWV3VGFyZ2V0U3RyaW5n
ID0gZW1wdHlTdHJpbmcoKTsKLSAgICBtX3RyYW5zZm9ybS5yZXNldFZhbHVlKCk7CisgICAgbV90
cmFuc2Zvcm0tPmNsZWFySXRlbXMoKTsKICAgICBTVkdGaXRUb1ZpZXdCb3g6OnJlc2V0KCk7CiAg
ICAgU1ZHWm9vbUFuZFBhbjo6cmVzZXQoKTsKIH0KQEAgLTE1Miw3ICsxMzksNyBAQCBib29sIFNW
R1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmlld1NwZWMpCiAgICAgICAg
ICAgICBpZiAoY3VyclZpZXdTcGVjID49IGVuZCB8fCAqY3VyclZpZXdTcGVjICE9ICcoJykKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjdXJyVmlld1NwZWMrKzsK
LSAgICAgICAgICAgIFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKG1f
dHJhbnNmb3JtLnZhbHVlKCksIGN1cnJWaWV3U3BlYywgZW5kLCBTVkdUcmFuc2Zvcm1hYmxlOjpE
b05vdENsZWFyTGlzdCk7CisgICAgICAgICAgICBtX3RyYW5zZm9ybS0+cGFyc2UoY3VyclZpZXdT
cGVjLCBlbmQpOwogICAgICAgICAgICAgaWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJW
aWV3U3BlYyAhPSAnKScpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgY3VyclZpZXdTcGVjKys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmll
d1NwZWMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCmluZGV4IGQxYTIxNzNm
ZWY3MTgxOTkyMDBjMGUwNTI2MGMxZGU5OWMwN2Q5YTQuLmNhNGFmNWYwYWJiN2M2ZGZjYmYwOTll
NmRmNjY5MGVlZWM1Zjk3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
U3BlYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCkBAIC0yMSw3ICsy
MSw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgotI2lu
Y2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJTVkdab29tQW5kUGFu
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQzLDkgKzQyLDggQEAgcHVibGljOgogICAg
IFNWR0VsZW1lbnQqIHZpZXdUYXJnZXQoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHZpZXdU
YXJnZXRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdUYXJnZXRTdHJpbmc7IH0KIAotICAg
IFN0cmluZyB0cmFuc2Zvcm1TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybS50b1N0
cmluZygpOyB9Ci0gICAgUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3Q+IHRyYW5zZm9ybSgpOwotICAg
IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgdHJhbnNmb3JtVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3RyYW5zZm9ybS52YWx1ZSgpOyB9CisgICAgU3RyaW5nIHRyYW5zZm9ybVN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhbnNmb3JtLT52YWx1ZUFzU3RyaW5nKCk7IH0KKyAgICBSZWY8U1ZHVHJh
bnNmb3JtTGlzdD4mIHRyYW5zZm9ybSgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKICAgICBj
b25zdCBXZWFrUHRyPFNWR0VsZW1lbnQ+JiBjb250ZXh0RWxlbWVudENvbmN1cnJlbnRseSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dEVsZW1lbnQ7IH0KIApAQCAtNTMsMTcgKzUxLDEyIEBAIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgU1ZHVmlld1NwZWMoU1ZHRWxlbWVudCYpOwogCiAgICAgdXNp
bmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1Zp
ZXdTcGVjLCBTVkdGaXRUb1ZpZXdCb3g+OwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmli
dXRlcygpOwotCi0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lz
dHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0
dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVy
UHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KLQogICAgIHVzaW5nIFBy
b3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVmlld1NwZWMsIFNW
R0ZpdFRvVmlld0JveD47CiAKICAgICBXZWFrUHRyPFNWR0VsZW1lbnQ+IG1fY29udGV4dEVsZW1l
bnQ7CiAgICAgU3RyaW5nIG1fdmlld1RhcmdldFN0cmluZzsKICAgICBBdHRyaWJ1dGVPd25lclBy
b3h5IG1fYXR0cmlidXRlT3duZXJQcm94eTsKLSAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RB
dHRyaWJ1dGUgbV90cmFuc2Zvcm07CisgICAgUmVmPFNWR1RyYW5zZm9ybUxpc3Q+IG1fdHJhbnNm
b3JtOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29y
SW1wbC5oCmluZGV4IDk1MmYxN2IwMzZjZTYxN2IzMTJmYTgyNmM4ZjQ2MjA4NzU3MzU5N2EuLmQz
MjY3OGMxY2QwZTNlMGQyMzIzODBkZmIwMjRlMzMyOWE3NjRiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
QWNjZXNzb3JJbXBsLmgKQEAgLTMxOSw0ICszMTksMjYgQEAgcHJpdmF0ZToKICAgICB9CiB9Owog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+CitjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3RBY2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8
T3duZXJUeXBlLCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+IHsKKyAgICB1c2luZyBCYXNlID0g
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0PjsKKyAgICB1c2luZyBCYXNlOjpwcm9wZXJ0eTsKKworcHVibGljOgorICAgIHVzaW5n
IEJhc2U6OkJhc2U7CisgICAgdGVtcGxhdGU8UmVmPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4g
T3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1i
ZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0
ZSBzaW5nbGV0b248U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QWNjZXNzb3IsIHByb3BlcnR5Pigp
OyB9CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9y
PiBjcmVhdGVBbmltYXRvcihPd25lclR5cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKKyAg
ICB7CisgICAgICAgIHJldHVybiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y3Jl
YXRlKGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5KG93bmVyKSwgYW5pbWF0aW9uTW9kZSwgY2FsY01v
ZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5k
QW5pbWF0ZWRJbnN0YW5jZShPd25lclR5cGUmIG93bmVyLCBTVkdBdHRyaWJ1dGVBbmltYXRvciYg
YW5pbWF0b3IpIGNvbnN0IGZpbmFsCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciY+KGFuaW1hdG9yKS5hcHBlbmRBbmltYXRlZEluc3Rh
bmNlKHByb3BlcnR5KG93bmVyKSk7CisgICAgfQorfTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1h
dG9ySW1wbC5oCmluZGV4IDU2MzZmNzE1ZTRlMDYwZjIyOTE0NjVhZWM3Nzc1ODQ5ODEyZGZjNjYu
LmRiZDQ0MzRjZDg5Y2FmMDMxOTk0NDFlYmQwMTdkZmM2OTNjZGRkMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5QW5pbWF0b3JJbXBsLmgKQEAgLTMwOCw0ICszMDgsMjEgQEAgcHJpdmF0ZToKICAgICB9CiB9
OwogCitjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3I8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBT
VkdBbmltYXRpb25UcmFuc2Zvcm1MaXN0RnVuY3Rpb24+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9yPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCwgU1ZHQW5p
bWF0aW9uVHJhbnNmb3JtTGlzdEZ1bmN0aW9uPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCitw
dWJsaWM6CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxh
dGVkLCBib29sIGlzQWRkaXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5p
bWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJn
ZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwK
KyAgICB7CisgICAgICAgIG1fZnVuY3Rpb24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2Vu
dGFnZSwgcmVwZWF0Q291bnQsIG1fYW5pbWF0ZWQtPmFuaW1WYWwoKSk7CisgICAgfQorfTsKKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlJbXBsLmgKaW5kZXggOWViNmFmYjc0NWU0YmZiYzE3YjdjYjkxOTEzYjBiYWExMGY4
N2NiNi4uNTA3MDdmOGJjODgyZDY5MmVmOWUwNDYwOWQwODIzNmM0NzJkNjZjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
SW1wbC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQ
cm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oIgog
I2luY2x1ZGUgIlNWR0RlY29yYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3Ro
LmgiCkBAIC00MCw2ICszOSw3IEBACiAjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCiAjaW5jbHVk
ZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgogI2luY2x1ZGUgIlNWR1JlY3QuaCIKKyNpbmNs
dWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTgs
NiArNTgsNyBAQCB1c2luZyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBTVkdBbmlt
YXRlZFZhbHVlUHJvcGVydHk8U1ZHUHJlc2VydmVBc3BlYwogdXNpbmcgU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q8U1ZHTGVuZ3RoTGlzdD47CiB1c2luZyBT
VkdBbmltYXRlZE51bWJlckxpc3QgPSBTVkdBbmltYXRlZFByb3BlcnR5TGlzdDxTVkdOdW1iZXJM
aXN0PjsKIHVzaW5nIFNWR0FuaW1hdGVkUG9pbnRMaXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxp
c3Q8U1ZHUG9pbnRMaXN0PjsKK3VzaW5nIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IFNWR0Fu
aW1hdGVkUHJvcGVydHlMaXN0PFNWR1RyYW5zZm9ybUxpc3Q+OwogCiBjbGFzcyBTVkdBbmltYXRl
ZE9yaWVudFR5cGUgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzMzk3MjAyNDY5MWZjYjczMzRhMTE0MGU2MzU2YTU5ODI1YzU5ZTQ5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVh
ck9mZi5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
Ci0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYu
aCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0VmFs
dWVzPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQ
cm9wZXJ0eVRlYXJPZmY+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0
ZWRQcm9wZXJ0eVR5cGUsIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHZhbHVlcykKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZihjb250ZXh0RWxlbWVu
dCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHZhbHVlcykpOwotICAgIH0K
LQotICAgIFJlZjxMaXN0UHJvcGVydHlUZWFyT2ZmPiBiYXNlVmFsKCkgZmluYWwKLSAgICB7Ci0g
ICAgICAgIGlmIChtX2Jhc2VWYWwpCi0gICAgICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PExp
c3RQcm9wZXJ0eVRlYXJPZmYqPihtX2Jhc2VWYWwuZ2V0KCkpOwotCi0gICAgICAgIGF1dG8gcHJv
cGVydHkgPSBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGUoKnRoaXMsIEJhc2VWYWxSb2xlLCBtX3Zh
bHVlcywgbV93cmFwcGVycyk7Ci0gICAgICAgIG1fYmFzZVZhbCA9IG1ha2VXZWFrUHRyKHByb3Bl
cnR5LmdldCgpKTsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5OwotICAgIH0KLQotICAgIFJlZjxM
aXN0UHJvcGVydHlUZWFyT2ZmPiBhbmltVmFsKCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmICht
X2FuaW1WYWwpCi0gICAgICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PExpc3RQcm9wZXJ0eVRl
YXJPZmYqPihtX2FuaW1WYWwuZ2V0KCkpOwotCi0gICAgICAgIGF1dG8gcHJvcGVydHkgPSBTVkdU
cmFuc2Zvcm1MaXN0OjpjcmVhdGUoKnRoaXMsIEFuaW1WYWxSb2xlLCBtX3ZhbHVlcywgbV93cmFw
cGVycyk7Ci0gICAgICAgIG1fYW5pbVZhbCA9IG1ha2VXZWFrUHRyKHByb3BlcnR5LmdldCgpKTsK
LSAgICAgICAgcmV0dXJuIHByb3BlcnR5OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlU
eXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiB2YWx1ZXMp
Ci0gICAgICAgIDogU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxp
c3RWYWx1ZXM+KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5
VHlwZSwgdmFsdWVzKQotICAgIHsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25B
ZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oCmluZGV4IDhmZDk1NDM0MDNh
ZDczMDViNGU1ZWM2YjA5MDI4YjlkNWFhYmY2YzAuLmFjMWY1ODcyYTU0NDJmZWRiYjg2YjJlZWQ2
MzI0NDI2MWI3NjM4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5o
CkBAIC0yNyw3ICsyNywxMCBAQAogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCisjaW5jbHVkZSAiU1ZHTnVt
YmVyTGlzdC5oIgogI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgorI2luY2x1ZGUgIlNWR1RyYW5z
Zm9ybURpc3RhbmNlLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTE5OSw0ICsyMDIsNzMgQEAgcHJpdmF0ZToKICAgICB9CiB9Owog
CitjbGFzcyBTVkdBbmltYXRpb25UcmFuc2Zvcm1MaXN0RnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5p
bWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb248U1ZHVHJhbnNmb3JtTGlzdD4geworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBTVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbjxTVkdUcmFu
c2Zvcm1MaXN0PjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCisgICAgdm9pZCBzZXRGcm9tQW5k
VG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0
bykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fZnJvbS0+cGFyc2UoZnJvbSk7CisgICAgICAg
IG1fdG8tPnBhcnNlKHRvKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFRvQXRFbmRPZkR1cmF0aW9u
VmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvbikgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIG1fdG9BdEVuZE9mRHVyYXRpb24tPnBhcnNlKHRvQXRFbmRPZkR1cmF0aW9uKTsKKyAg
ICB9CisKKyAgICB2b2lkIHByb2dyZXNzKFNWR0VsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1
bnNpZ25lZCByZXBlYXRDb3VudCwgUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3Q+JiBhbmltYXRlZCkK
KyAgICB7CisgICAgICAgIC8vIFBhc3MgZmFsc2UgdG8gJ3Jlc2l6ZUFuaW1hdGVkSWZOZWVkZWQn
LCBhcyB0aGUgc3BlY2lhbCBwb3N0LW11bHRpcGxpY2F0aW9uIGJlaGF2aW9yIG9mIDxhbmltYXRl
VHJhbnNmb3JtPiBuZWVkcyB0byBiZSByZXNwZWN0ZWQgYmVsb3cuCisgICAgICAgIGlmICghYWRq
dXN0QW5pbWF0ZWRMaXN0KG1fYW5pbWF0aW9uTW9kZSwgcGVyY2VudGFnZSwgYW5pbWF0ZWQsIGZh
bHNlKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBTcGVjOiBUbyBhbmltYXRp
b25zIHByb3ZpZGUgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB0byBnZXQgYSBzbW9vdGggY2hhbmdl
IGZyb20gdGhlIHVuZGVybHlpbmcKKyAgICAgICAgLy8gdmFsdWUgdG8gdGhlIMOiwoDCmHRvw6LC
gMKZIGF0dHJpYnV0ZSB2YWx1ZSwgd2hpY2ggY29uZmxpY3RzIG1hdGhlbWF0aWNhbGx5IHdpdGgg
dGhlIHJlcXVpcmVtZW50IGZvcgorICAgICAgICAvLyBhZGRpdGl2ZSB0cmFuc2Zvcm0gYW5pbWF0
aW9ucyB0byBiZSBwb3N0LW11bHRpcGxpZWQuIEFzIGEgY29uc2VxdWVuY2UsIGluIFNWRyAxLjEg
dGhlIGJlaGF2aW9yCisgICAgICAgIC8vIG9mIHRvIGFuaW1hdGlvbnMgZm9yIMOiwoDCmGFuaW1h
dGVUcmFuc2Zvcm3DosKAwpkgaXMgdW5kZWZpbmVkLgorICAgICAgICBjb25zdCBWZWN0b3I8UmVm
PFNWR1RyYW5zZm9ybT4+JiBmcm9tSXRlbXMgPSBtX2Zyb20tPml0ZW1zKCk7CisgICAgICAgIGNv
bnN0IFZlY3RvcjxSZWY8U1ZHVHJhbnNmb3JtPj4mIHRvSXRlbXMgPSBtX3RvLT5pdGVtcygpOwor
ICAgICAgICBjb25zdCBWZWN0b3I8UmVmPFNWR1RyYW5zZm9ybT4+JiB0b0F0RW5kT2ZEdXJhdGlv
bkl0ZW1zID0gdG9BdEVuZE9mRHVyYXRpb24oKS0+aXRlbXMoKTsKKyAgICAgICAgVmVjdG9yPFJl
ZjxTVkdUcmFuc2Zvcm0+PiYgYW5pbWF0ZWRJdGVtcyA9IGFuaW1hdGVkLT5pdGVtcygpOworCisg
ICAgICAgIC8vIE5ldmVyIHJlc2l6ZSB0aGUgYW5pbWF0ZWRMaXN0IHRvIHRoZSBtX3RvIHNpemUs
IGluc3RlYWQgZWl0aGVyIGNsZWFyIHRoZSBsaXN0CisgICAgICAgIC8vIG9yIGFwcGVuZCB0byBp
dC4KKyAgICAgICAgaWYgKCFhbmltYXRlZEl0ZW1zLmlzRW1wdHkoKSAmJiAoIW1faXNBZGRpdGl2
ZSB8fCBtX2FuaW1hdGlvbk1vZGUgPT0gQW5pbWF0aW9uTW9kZTo6VG8pKQorICAgICAgICAgICAg
YW5pbWF0ZWRJdGVtcy5jbGVhcigpOworCisgICAgICAgIGF1dG8gZnJvbUl0ZW1zU2l6ZSA9IGZy
b21JdGVtcy5zaXplKCk7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB6
ZXJvc0FmZmluZVRyYW5zZm9ybSA9IHsgMCwgMCwgMCwgMCwgMCwgMCB9OworICAgICAgICBjb25z
dCBTVkdUcmFuc2Zvcm1WYWx1ZSYgdG8gPSB0b0l0ZW1zWzBdLT52YWx1ZSgpOworICAgICAgICBj
b25zdCBTVkdUcmFuc2Zvcm1WYWx1ZSB6ZXJvc1RyYW5zZm9ybSA9IFNWR1RyYW5zZm9ybVZhbHVl
KHRvLnR5cGUoKSwgemVyb3NBZmZpbmVUcmFuc2Zvcm0pOworCisgICAgICAgIGNvbnN0IFNWR1Ry
YW5zZm9ybVZhbHVlJiBmcm9tID0gZnJvbUl0ZW1zU2l6ZSA/IGZyb21JdGVtc1swXS0+dmFsdWUo
KSA6IHplcm9zVHJhbnNmb3JtOworICAgICAgICBTVkdUcmFuc2Zvcm1WYWx1ZSBjdXJyZW50ID0g
U1ZHVHJhbnNmb3JtRGlzdGFuY2UoZnJvbSwgdG8pLnNjYWxlZERpc3RhbmNlKHBlcmNlbnRhZ2Up
LmFkZFRvU1ZHVHJhbnNmb3JtKGZyb20pOworCisgICAgICAgIGlmIChtX2lzQWNjdW11bGF0ZWQg
JiYgcmVwZWF0Q291bnQpIHsKKyAgICAgICAgICAgIGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJiB0
b0F0RW5kT2ZEdXJhdGlvbiA9IHRvQXRFbmRPZkR1cmF0aW9uSXRlbXMuc2l6ZSgpID8gdG9BdEVu
ZE9mRHVyYXRpb25JdGVtc1swXS0+dmFsdWUoKSA6IHplcm9zVHJhbnNmb3JtOworICAgICAgICAg
ICAgYW5pbWF0ZWRJdGVtcy5hcHBlbmQoU1ZHVHJhbnNmb3JtOjpjcmVhdGUoU1ZHVHJhbnNmb3Jt
RGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9ybXMoY3VycmVudCwgdG9BdEVuZE9mRHVyYXRpb24sIHJl
cGVhdENvdW50KSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFuaW1hdGVkSXRlbXMu
YXBwZW5kKFNWR1RyYW5zZm9ybTo6Y3JlYXRlKGN1cnJlbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgdm9pZCBhZGRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCopIG92ZXJyaWRlCisgICAg
eworICAgICAgICBjb25zdCBWZWN0b3I8UmVmPFNWR1RyYW5zZm9ybT4+JiBmcm9tSXRlbXMgPSBt
X2Zyb20tPml0ZW1zKCk7CisgICAgICAgIFZlY3RvcjxSZWY8U1ZHVHJhbnNmb3JtPj4mIHRvSXRl
bXMgPSBtX3RvLT5pdGVtcygpOworCisgICAgICAgIGlmICghZnJvbUl0ZW1zLnNpemUoKSB8fCBm
cm9tSXRlbXMuc2l6ZSgpICE9IHRvSXRlbXMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIEFTU0VSVChmcm9tSXRlbXMuc2l6ZSgpID09IDEpOworICAgICAgICBjb25zdCBS
ZWY8U1ZHVHJhbnNmb3JtPiYgZnJvbSA9IGZyb21JdGVtc1swXTsKKyAgICAgICAgUmVmPFNWR1Ry
YW5zZm9ybT4mIHRvID0gdG9JdGVtc1swXTsKKworICAgICAgICB0by0+c2V0VmFsdWUoU1ZHVHJh
bnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9ybXMoZnJvbS0+dmFsdWUoKSwgdG8tPnZhbHVl
KCkpKTsKKyAgICB9Cit9OworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25J
bXBsLmgKaW5kZXggMmFhNDYyOWRkOGY1NDJhYjY0NTBhY2I0MGU5Mjc3MTdkN2U3ZDVmMS4uNzdj
MDIwNmYyMmZmZDZmMzUyMjNjMTU0YWVkMjJlYTM3YzAwM2U2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9u
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFk
ZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaApAQCAtMjUsNyArMjUsMTEgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1
ZGUgIlNWR0FuZ2xlVmFsdWUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVl
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1Bh
dGhCeXRlU3RyZWFtLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgK
aW5kZXggMTk0ZjYzOWRmYTM1YWViNTVmZDg4NWEzNTVmZDVmMDk1MDViMGJmZC4uMTBlYTNhNTQ2
MDZlZDYyMDc4MGYwNDUxOTVlMjU1MGFkMDQ4ZjFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oCkBAIC0yNSw3ICsyNSw2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmgiCiAjaW5jbHVkZSAiU1ZHQXR0cmlidXRlQWNjZXNzb3IuaCIKICNpbmNsdWRlICJTVkdMZWdh
Y3lBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHWm9vbUFuZFBhblR5cGUuaCIKQEAg
LTQ4LDEzICs0Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHWm9v
bUFuZFBhblR5cGVBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0
b248YXR0cmlidXRlTmFtZSwgYXR0cmlidXRlPigpKTsKICAgICB9CiAKLSAgICAvLyBBbmltYXRh
YmxlIGF0dHJpYnV0ZXMKLSAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEF0dHJpYnV0ZSBPd25lclR5cGU6OiphdHRyaWJ1dGU+Ci0gICAgdm9pZCByZWdpc3RlckF0dHJp
YnV0ZSgpCi0gICAgewotICAgICAgICByZWdpc3RlckF0dHJpYnV0ZShTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RBdHRyaWJ1dGVBY2Nlc3NvcjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248
YXR0cmlidXRlTmFtZSwgYXR0cmlidXRlPigpKTsKLSAgICB9Ci0KICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX21hcC5pc0VtcHR5KCk7IH0KIAogICAgIGJvb2wgaXNLbm93bkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWF0cml4VGVhck9mZi5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWF0cml4VGVhck9mZi5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjMzYzAwODI1YmU2MzRkMGY0NmIzNzQ3ZTMyNDZiMjRi
ZDg4YTcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01hdHJpeFRlYXJPZmYuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiU1ZHTWF0cml4LmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHTWF0cml4VGVhck9mZiBmaW5hbCA6IHB1YmxpYyBT
VkdNYXRyaXggewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHTWF0cml4VGVhck9mZj4gY3Jl
YXRlKFNWR1RyYW5zZm9ybSYgcGFyZW50LCBBZmZpbmVUcmFuc2Zvcm0mIHZhbHVlKQotICAgIHsK
LSAgICAgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZSwgJnBhcmVudC5wcm9wZXJ0eVJlZmVyZW5jZSgp
Lm1hdHJpeCgpID09ICZ2YWx1ZSk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5l
dyBTVkdNYXRyaXhUZWFyT2ZmKHBhcmVudCkpOwotICAgICAgICBwYXJlbnQuYWRkQ2hpbGQobWFr
ZVdlYWtQdHIocmVzdWx0LmdldCgpKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
Ci0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwcm9wZXJ0eVJlZmVyZW5jZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcGFyZW50LT5wcm9wZXJ0eVJlZmVyZW5jZSgpLm1hdHJpeCgpOyB9Ci0g
ICAgQWZmaW5lVHJhbnNmb3JtJiBwcm9wZXJ0eVJlZmVyZW5jZSgpIGZpbmFsIHsgcmV0dXJuIG1f
cGFyZW50LT5wcm9wZXJ0eVJlZmVyZW5jZSgpLm1hdHJpeCgpOyB9Ci0KLSAgICB2b2lkIHNldFZh
bHVlKEFmZmluZVRyYW5zZm9ybSYgdmFsdWUpIGZpbmFsIHsgbV9wYXJlbnQtPnByb3BlcnR5UmVm
ZXJlbmNlKCkuc2V0TWF0cml4KHZhbHVlKTsgfQotCi0gICAgdm9pZCBjb21taXRDaGFuZ2UoKSBm
aW5hbAotICAgIHsKLSAgICAgICAgbV9wYXJlbnQtPnByb3BlcnR5UmVmZXJlbmNlKCkudXBkYXRl
U1ZHTWF0cml4KCk7Ci0gICAgICAgIG1fcGFyZW50LT5jb21taXRDaGFuZ2UoKTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgU1ZHTWF0cml4VGVhck9mZihTVkdUcmFuc2Zvcm0mIHBhcmVudCkKLSAg
ICAgICAgOiBTVkdNYXRyaXgobnVsbHB0cikKLSAgICAgICAgLCBtX3BhcmVudCgmcGFyZW50KQot
ICAgIHsKLSAgICB9Ci0KLSAgICBSZWZQdHI8U1ZHVHJhbnNmb3JtPiBtX3BhcmVudDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCmluZGV4IDM3ZDYzMTg0Mzc1YjI4
YmEzY2E5NTkzNWViYTA2YzYxMThjOWI1YWQuLjYxODk4NjYzYzBkZGUzNTE1ZmQxZmI3ZmQyNDBm
ODJlMjU0Yjg1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5QWNjZXNzb3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaApAQCAtNDAsNCArNDAsMTQgQEAgcHVibGljOgog
ICAgIGNvbnN0ZXhwciBzdGF0aWMgY29uc3QgU1ZHTWVtYmVyQWNjZXNzb3I8T3duZXJUeXBlPiYg
c2luZ2xldG9uKCkgeyByZXR1cm4gQmFzZTo6dGVtcGxhdGUgc2luZ2xldG9uPFNWR1N0cmluZ0xp
c3RBY2Nlc3NvciwgcHJvcGVydHk+KCk7IH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE93bmVy
VHlwZT4KK2NsYXNzIFNWR1RyYW5zZm9ybUxpc3RBY2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBTVkdQ
cm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHVHJhbnNmb3JtTGlzdD4geworICAgIHVzaW5n
IEJhc2UgPSBTVkdQcm9wZXJ0eUFjY2Vzc29yPE93bmVyVHlwZSwgU1ZHVHJhbnNmb3JtTGlzdD47
CisKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlOjpCYXNlOworICAgIHRlbXBsYXRlPFJlZjxTVkdU
cmFuc2Zvcm1MaXN0PiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAgICBjb25zdGV4cHIgc3RhdGlj
IGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNpbmdsZXRvbigpIHsgcmV0dXJu
IEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdUcmFuc2Zvcm1MaXN0QWNjZXNzb3IsIHByb3Bl
cnR5PigpOyB9Cit9OworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCmluZGV4IGU3ZjMwMzdiNGU5OGM0NGI1
NjE4YWQxZDc1YTUzMDk2ZjdkNTc3NjEuLjEyY2U2OTY2NjE5YWQ1MzI2ZjA0YzI2N2VkMjE0NmVm
ZWYzOWRkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5T3duZXJSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oCkBAIC00OSw2ICs0OSwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJlZ2lzdGVyUHJvcGVydHkoYXR0cmlidXRlTmFtZSwgU1ZHU3RyaW5nTGlzdEFjY2Vz
c29yPE93bmVyVHlwZT46OnRlbXBsYXRlIHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7CiAgICAgfQog
CisgICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5h
bWU+JiBhdHRyaWJ1dGVOYW1lLCBSZWY8U1ZHVHJhbnNmb3JtTGlzdD4gT3duZXJUeXBlOjoqcHJv
cGVydHk+CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCisgICAgeworICAgICAg
ICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR1RyYW5zZm9ybUxpc3RBY2Nlc3Nv
cjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1l
PiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkQm9vbGVhbj4gT3duZXJUeXBlOjoqcHJv
cGVydHk+CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCiAgICAgewpAQCAtMTI2
LDcgKzEzMiwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZWdpc3RlclByb3BlcnR5KGF0
dHJpYnV0ZU5hbWUsIFNWR0FuaW1hdGVkU3RyaW5nQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxh
dGUgc2luZ2xldG9uPHByb3BlcnR5PigpKTsKICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTxj
b25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+IE93bmVyVHlwZTo6KnByb3BlcnR5Pgor
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAgcmVnaXN0
ZXJQcm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBY2Nlc3Nv
cjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1l
PiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4gT3duZXJUeXBlOjoqcHJv
cGVydHkxLCBSZWY8U1ZHQW5pbWF0ZWRJbnRlZ2VyPiBPd25lclR5cGU6Oipwcm9wZXJ0eTI+CiAg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJQcm9wZXJ0eSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMxOTUyMjc0
NTYxMTliYzQ0MjAyZmJiMDA3ZmMzZWZiMzM4OTQzOGUuLjcxMDU2NWJlMDUwOGE0ZWRhYjhkYTkx
Y2ZiODIyOWFiY2Q0M2I3MWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wNC0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR01hdHJpeCwgU1ZHVHJhbnNmcm9tLCBT
VkdUcmFuc2Zvcm1MaXN0IGFuZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjA4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2RvbS9TVkdUcmFuc2Zv
cm1MaXN0LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3ZnL2RvbS9TVkdUcmFuc2Zv
cm1MaXN0LWJhc2ljcy54aHRtbDoKKyAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgcmVxdWlyZWQg
YmVjYXVzZSBTVkdUcmFuc2Zyb21MaXN0IHdpbGwgYmUgZm9sbG93aW5nIHRoZQorICAgICAgICBT
VkcyIHNwZWNzIHJlZ2FyZGluZyBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBsaXN0LiAKKworICAg
ICAgICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL1NWRy90eXBlcy5odG1sI1Rlcm1MaXN0SW50
ZXJmYWNlLgorCiAyMDE5LTA0LTAxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgU1ZHTWF0cml4LklETCBtZXRob2RzIGRvIG5vdCBjb25mb3Jt
IHRvIHRoZSBzcGVjcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdUcmFuc2Zv
cm1MaXN0LWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1RyYW5z
Zm9ybUxpc3QtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCAzY2UwMDVlYWE0ZDU4MDA5ZWE3MDBk
NjU3NmY4ZTI0NGY2NDU2NzY2Li5mMjM0ZGFmNWMwMGJjMzc5MzU1MGYxZDdlOTEzMWEwZDhlMGI1
MjE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1RyYW5zZm9ybUxpc3QtYmFz
aWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1RyYW5zZm9ybUxp
c3QtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMjcsMjEgKzI3LDI1IEBAIFBBU1MgY2lyY2xlMS50
cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKCdhU3RyaW5nJykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFCiBQQVNTIGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9y
ZShjaXJjbGUxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cy4KIFBBU1MgY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKG51bGwp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBj
aXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUoY2lyY2xlMS50cmFuc2Zv
cm0uYmFzZVZhbC5nZXRJdGVtKDEpLCAnYVN0cmluZycpIGlzIGNpcmNsZTEudHJhbnNmb3JtLmJh
c2VWYWwuZ2V0SXRlbSgwKQorUEFTUyBkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJh
c2VWYWwucmVtb3ZlSXRlbSgyKSkgaXMgInR5cGU9U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUgbWF0
cml4PVsxLjAgMC4wIDAuMCAxLjAgMTAuMCAxMC4wXSIKIFBBU1MgY2lyY2xlMS50cmFuc2Zvcm0u
YmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDIKIFBBU1MgZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRy
YW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkpIGlzICJ0eXBlPVNWR19UUkFOU0ZPUk1fVFJBTlNM
QVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iCiBQQVNTIGR1bXBUcmFuc2Zv
cm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEpKSBpcyAidHlwZT1TVkdfVFJB
TlNGT1JNX1NDQUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAuMCAwLjBdIgogUEFTUyBjaXJj
bGUxLmdldEF0dHJpYnV0ZSgndHJhbnNmb3JtJykgaXMgInRyYW5zbGF0ZSgxMCAxMCkgc2NhbGUo
MiAyKSIKIFBBU1MgY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKGNp
cmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSwgY2lyY2xlMSkgaXMgY2lyY2xlMS50
cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApCitQQVNTIGR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50
cmFuc2Zvcm0uYmFzZVZhbC5yZW1vdmVJdGVtKDIpKSBpcyAidHlwZT1TVkdfVFJBTlNGT1JNX1ND
QUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAuMCAwLjBdIgogUEFTUyBjaXJjbGUxLnRyYW5z
Zm9ybS5iYXNlVmFsLm51bWJlck9mSXRlbXMgaXMgMgogUEFTUyBkdW1wVHJhbnNmb3JtKGNpcmNs
ZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKSkgaXMgInR5cGU9U1ZHX1RSQU5TRk9STV9T
Q0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAwLjAgMC4wXSIKIFBBU1MgZHVtcFRyYW5zZm9y
bShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSkpIGlzICJ0eXBlPVNWR19UUkFO
U0ZPUk1fVFJBTlNMQVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iCiBQQVNT
IGNpcmNsZTEuZ2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nKSBpcyAic2NhbGUoMiAyKSB0cmFuc2xh
dGUoMTAgMTApIgogUEFTUyBjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZv
cmUoY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEpLCBudWxsKSBpcyBjaXJjbGUx
LnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkKK1BBU1MgZHVtcFRyYW5zZm9ybShjaXJjbGUx
LnRyYW5zZm9ybS5iYXNlVmFsLnJlbW92ZUl0ZW0oMikpIGlzICJ0eXBlPVNWR19UUkFOU0ZPUk1f
VFJBTlNMQVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iCiBQQVNTIGNpcmNs
ZTEudHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyAyCiBQQVNTIGR1bXBUcmFuc2Zv
cm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApKSBpcyAidHlwZT1TVkdfVFJB
TlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9WzEuMCAwLjAgMC4wIDEuMCAxMC4wIDEwLjBdIgogUEFT
UyBkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSkgaXMg
InR5cGU9U1ZHX1RSQU5TRk9STV9TQ0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAwLjAgMC4w
XSIKIFBBU1MgY2lyY2xlMS5nZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScpIGlzICJ0cmFuc2xhdGUo
MTAgMTApIHNjYWxlKDIgMikiCiBQQVNTIGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuaW5zZXJ0
SXRlbUJlZm9yZShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSksIDApIGlzIGNp
cmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKQorUEFTUyBkdW1wVHJhbnNmb3JtKGNp
cmNsZTEudHJhbnNmb3JtLmJhc2VWYWwucmVtb3ZlSXRlbSgyKSkgaXMgInR5cGU9U1ZHX1RSQU5T
Rk9STV9TQ0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAwLjAgMC4wXSIKIFBBU1MgY2lyY2xl
MS50cmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDIKIFBBU1MgZHVtcFRyYW5zZm9y
bShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkpIGlzICJ0eXBlPVNWR19UUkFO
U0ZPUk1fU0NBTEUgbWF0cml4PVsyLjAgMC4wIDAuMCAyLjAgMC4wIDAuMF0iCiBQQVNTIGR1bXBU
cmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEpKSBpcyAidHlwZT1T
VkdfVFJBTlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9WzEuMCAwLjAgMC4wIDEuMCAxMC4wIDEwLjBd
IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdUcmFuc2Zvcm1MaXN0LWJhc2lj
cy54aHRtbCBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHVHJhbnNmb3JtTGlzdC1iYXNpY3MueGh0
bWwKaW5kZXggZmQyY2FmYTY4OWI5Y2E1ZmUyY2I4ZTcwZDRmYWJlZDFiNWJlYmZjNS4uMWY5MzJj
MWUwN2Y1ZWQ1ZTVlN2JkMjUzYzBmMGUyMDczN2ViNDI2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3ZnL2RvbS9TVkdUcmFuc2Zvcm1MaXN0LWJhc2ljcy54aHRtbAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvZG9tL1NWR1RyYW5zZm9ybUxpc3QtYmFzaWNzLnhodG1sCkBAIC03NCwyNCArNzQsMjgg
QEAKICAgICBzaG91bGRUaHJvdygiY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVt
QmVmb3JlKG51bGwpIik7CiAgCiAgICAgc2hvdWxkQmUoImNpcmNsZTEudHJhbnNmb3JtLmJhc2VW
YWwuaW5zZXJ0SXRlbUJlZm9yZShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSks
ICdhU3RyaW5nJykiLCAiY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3Jt
LmJhc2VWYWwucmVtb3ZlSXRlbSgyKSkiLCAidHlwZT1TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSBt
YXRyaXg9WzEuMCAwLjAgMC4wIDEuMCAxMC4wIDEwLjBdIik7CiAgICAgc2hvdWxkQmUoImNpcmNs
ZTEudHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICIyIik7CiAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0
SXRlbSgwKSkiLCAidHlwZT1TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9WzEuMCAwLjAg
MC4wIDEuMCAxMC4wIDEwLjBdIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wVHJh
bnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSkiLCAidHlwZT1TVkdf
VFJBTlNGT1JNX1NDQUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAuMCAwLjBdIik7CiAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaXJjbGUxLmdldEF0dHJpYnV0ZSgndHJhbnNmb3JtJyki
LCAidHJhbnNsYXRlKDEwIDEwKSBzY2FsZSgyIDIpIik7CiAKICAgICBzaG91bGRCZSgiY2lyY2xl
MS50cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKGNpcmNsZTEudHJhbnNmb3JtLmJh
c2VWYWwuZ2V0SXRlbSgxKSwgY2lyY2xlMSkiLCAiY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5n
ZXRJdGVtKDApIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wVHJhbnNmb3JtKGNp
cmNsZTEudHJhbnNmb3JtLmJhc2VWYWwucmVtb3ZlSXRlbSgyKSkiLCAidHlwZT1TVkdfVFJBTlNG
T1JNX1NDQUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAuMCAwLjBdIik7CiAgICAgc2hvdWxk
QmUoImNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIsICIyIik7CiAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJh
c2VWYWwuZ2V0SXRlbSgwKSkiLCAidHlwZT1TVkdfVFJBTlNGT1JNX1NDQUxFIG1hdHJpeD1bMi4w
IDAuMCAwLjAgMi4wIDAuMCAwLjBdIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1w
VHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSkiLCAidHlwZT1T
VkdfVFJBTlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9WzEuMCAwLjAgMC4wIDEuMCAxMC4wIDEwLjBd
Iik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaXJjbGUxLmdldEF0dHJpYnV0ZSgndHJh
bnNmb3JtJykiLCAic2NhbGUoMiAyKSB0cmFuc2xhdGUoMTAgMTApIik7CiAKICAgICBzaG91bGRC
ZSgiY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKGNpcmNsZTEudHJh
bnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSwgbnVsbCkiLCAiY2lyY2xlMS50cmFuc2Zvcm0uYmFz
ZVZhbC5nZXRJdGVtKDApIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wVHJhbnNm
b3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwucmVtb3ZlSXRlbSgyKSkiLCAidHlwZT1TVkdf
VFJBTlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9WzEuMCAwLjAgMC4wIDEuMCAxMC4wIDEwLjBdIik7
CiAgICAgc2hvdWxkQmUoImNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVtcyIs
ICIyIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wVHJhbnNmb3JtKGNpcmNsZTEu
dHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKSkiLCAidHlwZT1TVkdfVFJBTlNGT1JNX1RSQU5T
TEFURSBtYXRyaXg9WzEuMCAwLjAgMC4wIDEuMCAxMC4wIDEwLjBdIik7CiAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0
SXRlbSgxKSkiLCAidHlwZT1TVkdfVFJBTlNGT1JNX1NDQUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAg
Mi4wIDAuMCAwLjBdIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjaXJjbGUxLmdldEF0
dHJpYnV0ZSgndHJhbnNmb3JtJykiLCAidHJhbnNsYXRlKDEwIDEwKSBzY2FsZSgyIDIpIik7CiAK
ICAgICBzaG91bGRCZSgiY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3Jl
KGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSwgMCkiLCAiY2lyY2xlMS50cmFu
c2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
dW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwucmVtb3ZlSXRlbSgyKSkiLCAi
dHlwZT1TVkdfVFJBTlNGT1JNX1NDQUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAuMCAwLjBd
Iik7CiAgICAgc2hvdWxkQmUoImNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwubnVtYmVyT2ZJdGVt
cyIsICIyIik7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkdW1wVHJhbnNmb3JtKGNpcmNs
ZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKSkiLCAidHlwZT1TVkdfVFJBTlNGT1JNX1ND
QUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAuMCAwLjBdIik7CiAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRl
bSgxKSkiLCAidHlwZT1TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9WzEuMCAwLjAgMC4w
IDEuMCAxMC4wIDEwLjBdIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366449</attachid>
            <date>2019-04-01 17:31:45 -0700</date>
            <delta_ts>2019-04-01 18:32:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196086-20190401173144.patch</filename>
            <type>text/plain</type>
            <size>219009</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQwNjFhNzVjYzYxYTk4
OWM2ZjJiZDU5N2MyZWY5NjI5NmIwZjU5OC4uMDk3ZmU1YzY3NDU2ZTUyZDZlY2NjNDQ1YzA0YzEw
ZDUxMTBiZTFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3NiBAQAorMjAxOS0wNC0wMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92
ZSB0aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgZm9yIFNWR01hdHJpeCwgU1ZHVHJhbnNmcm9tLCBT
VkdUcmFuc2Zvcm1MaXN0IGFuZCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjA4NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBUaGUgSURMIGNoYW5nZXM6CisKKyAg
ICAgICAgU1ZHVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgICAgIFJlbW92ZSB0aGUgTmV3T2JqZWN0
IHF1YWxpZmllciBmcm9tIG1hdHJpeCBhdHRyaWJ1dGUuIFRoaXMgbWF0Y2hlcyAKKyAgICAgICAg
ICAgIHRoZSBzcGVjczogaHR0cHM6Ly93d3cudzMub3JnL1RSL1NWRzExL2Nvb3Jkcy5odG1sI0lu
dGVyZmFjZVNWR1RyYW5zZm9ybS4KKyAgICAgICAgICAgIFNWR1RyYW5zZm9ybSB3aWxsIGludGVy
bmFsbHkgaG9sZCBhbiBTVkdNYXRyaXguIEEgY2hhbmdlIGluIHRoaXMKKyAgICAgICAgICAgIFNW
R01hdHJpeCB3aWxsIGFmZmVjdCB0aGUgY29udGFpbmVyIFNWR1RyYW5zZm9ybS4KKworICAgICAg
ICBTVkdUcmFuc2Zvcm1MaXN0LmlkbDoKKyAgICAgICAgICAgIFJlbW92ZSB0aGUgTmV3T2JqZWN0
IHF1YWxpZmllciBmcm9tIGNvbnNvbGlkYXRlKCkgbWV0aG9kLiBUaGlzIG1hdGNoZXMKKyAgICAg
ICAgICAgIHRoZSBzcGVjczoKKyAgICAgICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcx
MS9jb29yZHMuaHRtbCNfX3N2Z19fU1ZHVHJhbnNmb3JtTGlzdF9fY29uc29saWRhdGUKKyAgICAg
ICAgICAgIFRoZSBtZXRob2QgY29uc29saWRhdGUoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNl
IHRvIHRoZSBmaXJzdCBpdGVtCisgICAgICAgICAgICBpbiB0aGUgbGlzdCBhZnRlciBjb25zb2xp
ZGF0aW5nIGl0LgorCisgICAgICAgIENvZGUgY2hhbmdlczoKKworICAgICAgICAtLSBTVkdNYXRy
aXggaXMgbm93IGEgc3VwZXJjbGFzcyBvZiBTVkdWYWx1ZVByb3BlcnR5PEFmZmluZVRyYW5zZm9y
bT4uCisgICAgICAgICAgIE5vIG5lZWQgZm9yIFNWR01hdHJpeFZhbHVlIHNpbmNlIGl0IHdhcyB3
cmFwcGVyIG9mIEFmZmluZVRyYW5zZm9ybS4KKworICAgICAgICAtLSBTVkdUcmFuc2Zvcm1WYWx1
ZSBub3cgaG9sZHMgYSBSZWY8U1ZHTWF0cml4PiBtZW1iZXIgaW4gYWRkaXRpb24gdG8gdGhlCisg
ICAgICAgICAgIGFuZ2xlIGFuZCB0aGUgcm90YXRpb25DZW50ZXIuIFJlZjxTVkdNYXRyaXg+IGlz
IHdoYXQgU1ZHVHJhbnNmb3JtLm1hdHJpeAorICAgICAgICAgICB3aWxsIHJldHVybi4gU28gYSBj
aGFuZ2UgaW4gdGhpcyBtYXRyaXggd2lsbCBjaGFuZ2UgdGhlIG93bmVyIFNWR1RyYW5zZm9ybS4K
KworICAgICAgICAtLSBTVkdUcmFuc2Zvcm0gaXMgbm93IHRoZSBvd25lciBvZiBTVkdNYXRyaXgg
dmlhIGl0cyBTVkdUcmFuc2Zvcm1WYWx1ZS4KKworICAgICAgICAtLSBTVkdUcmFuc2Zvcm1MaXN0
IGlzIG5vdyBhIHN1cGVyY2xhc3Mgb2YgU1ZHVmFsdWVQcm9wZXJ0eUxpc3Q8U1ZHVHJhbnNmb3Jt
Pi4KKyAgICAgICAgICAgSXQgaXMgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgYSBTdHJpbmcgdG8g
aXRlbXMgb2YgU1ZHVHJhbnNmb3JtLgorCisgICAgICAgIC0tIFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdCBpcyBub3cgZGVmaW5lZCBhcyBTVkdBbmltYXRlZFByb3BlcnR5TGlzdDwKKyAgICAgICAg
ICAgU1ZHVHJhbnNmb3JtTGlzdD4uCisKKyAgICAgICAgTm90ZSB0aGUgb3duZXJzaGlwIGNoYWlu
IG9mIHRoZXNlIG9iamVjdHMgaXMgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAtLSBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3Qgb3ducyB0aGUgU1ZHVHJhbnNmb3JtTGlzdCB2aWEgaXRzIGJhc2VW
YWwgCisgICAgICAgICAgIGFuZCBhbmltVmFsIG1lbWJlcnMuCisKKyAgICAgICAgLS0gU1ZHVHJh
bnNmb3JtTGlzdCBvd25zIFNWR1RyYW5zZm9ybSB2aWEgaXRzIGxpc3Qgb2YgaXRlbXMKKworICAg
ICAgICAtLSBTVkdUcmFuc2Zvcm0gb3ducyBTVkdNYXRyaXggdmlhIGl0cyBTVkdUcmFuc2Zvcm1W
YWx1ZS4KKworICAgICAgICAgICBTbyBhIGNoYW5nZSBpbiBTVkdNYXRyaXggd2lsbCBwcm9wYWdh
dGUgdG8gdGhlIG93bmVyIFNWR0VsZW1lbnQgdGhyb3VnaAorICAgICAgICAgICB0aGUgZm9sbG93
aW5nIG93bmVyc2hpcCBjaGFpbjoKKworICAgICAgICAgICBTVkdNYXRyaXgKKyAgICAgICAgICAg
ICB8XyBTVkdUcmFuc2Zyb20KKyAgICAgICAgICAgICAgICAgIHxfIFNWR1RyYW5zZm9ybUxpc3QK
KyAgICAgICAgICAgICAgICAgICAgICAgfF8gU1ZHQW1pbWF0ZWRUcmFuc2Zvcm1MaXN0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfF8gU1ZHRWxlbWVudAorCisgICAgICAgIFRvIGdldCB0
aGUgbWVjaGFuaWNzIG9mIHRoaXMgY2hhbmdlIHJpZ2h0LCBhIG5ldyBhY2Nlc3NvciwgYSBuZXcg
YW5pbWF0b3IKKyAgICAgICAgYW5kIGFuaW1hdGlvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciB0
aGUgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LgorCisgICAgICAgIC0tIFNWR1ZpZXdTcGVjIHVz
ZWQgdG8gaG9sZCBhbiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUgZm9yIHRoZQor
ICAgICAgICBtZW1iZXIgbV90cmFuc2Zvcm0gYWx0aG91Z2ggdGhpcyBtZW1iZXIgc2hvdWxkIG5v
dCBiZSBhbmltYXRlZC4gU2VlIHRoZQorICAgICAgICBjb21tZW50IGluIHRoZSBvbGQgU1ZHVmll
d1NwZWM6OnRyYW5zZm9ybSgpLiBUaGlzIGhhcyBiZWVuIGNoYW5nZWQgaW4gdGhpcworICAgICAg
ICBwYXRjaC4gU1ZHVmlld1NwZWMgbm93IGhvbGRzIFJlZjxTVkdUcmFuc2Zvcm1MaXN0PiB3aGlj
aCBtYXRjaGVzIHRoZSBzcGVjczoKKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL1NWRzEx
L3R5cGVzLmh0bWwjSW50ZXJmYWNlU1ZHVmlld1NwZWMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlRWxlbWVudEJhc2U6OmF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxh
dGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVF
bGVtZW50QmFzZTo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlRWxlbWVudEJhc2U6OmFuaW1hdGVSYW5nZVN0cmluZyBjb25zdCk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjphbmltYXRlUmFuZ2VTdHJpbmcgY29uc3QpOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oOgorICAgICAgICAgICAgICAg
IFRoaXMgY2hhbmdlIGlzIG5lZWRlZCBiZWNhdXNlIGFuaW1hdGluZyB0aGUgdHJhbnNmb3JtIGF0
dHJpYnV0ZSBjYW4gYmUKKyAgICAgICAgd3JpdHRlbiBhcworICAgICAgICAgICAgPGFuaW1hdGUg
Li4uIGZyb209InRyYW5zbGF0ZSgxMDApIiB0bz0idHJhbnNsYXRlKDIwMCkiLz4KKyAgICAgICAg
b3IKKyAgICAgICAgICAgIDxhbmltYXRlVHJhbnNmb3JtIHR5cGU9InRyYW5zbGF0ZSIgZnJvbT0i
MTAwIiB0bz0iMjAwIi8+IgorICAgICAgICBTbyB3ZSBuZWVkIHRvIHN1cnJvdW5kIHRoZSBhbmlt
YXRpb24gcmFuZ2Ugc3RyaW5nIHdpdGggdGhlIHR5cGUgcXVhbGlmaWVyCisgICAgICAgIGZvciBh
bmltYXRlVHJhbnNmb3JtLgorCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5o
OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2
Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlv
bkVsZW1lbnQ6OmFkanVzdEZvckluaGVyaXRhbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxl
bWVudDo6YWRqdXN0Rm9ySW5oZXJpdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0aW9uRWxlbWVudDo6YWRqdXN0RnJvbVRvTGlzdFZhbHVlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjphbmltYXRlRGlzY3JldGVUeXBl
KTogRGVsZXRlZC4KKyAgICAgICAgVGhlc2UgZnVuY3Rpb25zIHdlcmUgdXNlZCBieSBTVkdMZWdh
Y3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLgorCisgICAgICAgICogc3ZnL1NWR0FuaW1h
dG9yRmFjdG9yeS5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0dyYWRpZW50RWxlbWVudDo6U1ZHR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHR3JhZGllbnRFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAg
ICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRp
ZW50RWxlbWVudDo6Z3JhZGllbnRUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHR3JhZGllbnRFbGVtZW50OjpncmFkaWVudFRyYW5zZm9ybUFuaW1hdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAg
ICogc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFw
aGljc0VsZW1lbnQ6OlNWR0dyYXBoaWNzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICBUaGVyZSBpcyBvbmUgYXR0cmlidXRlIGZvciB0aGlzIGVsZW1lbnQgd2hpY2ggaXMgIlNWR05h
bWVzOjp0cmFuc2Zvcm1BdHRyIgorICAgICAgICBTbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNr
IGZvciBpdCB0d2ljZS4KKworICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50Ojpy
ZWdpc3RlckF0dHJpYnV0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0Vs
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6dHJhbnNmb3Jt
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6dHJhbnNmb3Jt
QW5pbWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50Ojppc0tub3du
QXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGFuZ1NwYWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xhbmdTcGFjZTo6U1ZHTGFuZ1NwYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xhbmdTcGFjZTo6eG1sc3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xh
bmdTcGFjZTo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMYW5n
U3BhY2U6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0xh
bmdTcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGFuZ1NwYWNlOjp4bWxsYW5nIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xhbmdTcGFjZTo6c2V0WG1sbGFuZyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OnNldFhtbHNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xhbmdTcGFjZTo6YXR0cmlidXRlUmVnaXN0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBzdmcvU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogc3ZnL1NWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NW
R01hc2tFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hdHJpeC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTWF0cml4OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4Ojph
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2V0QSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNYXRyaXg6OmIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4
OjpzZXRCKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6YyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdNYXRyaXg6OnNldEMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4
OjpkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2V0RCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdNYXRyaXg6OmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0
cml4OjpzZXRFKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6ZiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OnNldEYpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0
cml4OjptdWx0aXBseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OmludmVy
c2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4Ojp0cmFuc2xhdGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4OjpzY2FsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNYXRyaXg6OnNjYWxlTm9uVW5pZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXRyaXg6OnJvdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRy
aXg6OnJvdGF0ZUZyb21WZWN0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWF0cml4
OjpmbGlwWCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXRyaXg6OmZsaXBZIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hdHJpeDo6c2tld1ggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWF0cml4Ojpza2V3WSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpTVkdQ
YXR0ZXJuRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmNv
bGxlY3RQYXR0ZXJuQXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0
ZXJuRWxlbWVudDo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcyk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1BvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludDo6bWF0cml4VHJhbnNmb3JtIGNv
bnN0KToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BvbHlFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEdy
YWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6dmlld0JveFRvVmlld1RyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZH
VHJhbnNmb3JtLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm06OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm06On5TVkdUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpjbG9uZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUcmFuc2Zvcm06OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjphbmds
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm06Om1hdHJpeCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUcmFuc2Zvcm06OnNldE1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
cmFuc2Zvcm06OnNldFRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm06
OnNldFNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybTo6c2V0Um90YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybTo6c2V0U2tld1gpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVHJhbnNmb3JtOjpzZXRTa2V3WSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFu
c2Zvcm06OlNWR1RyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5pZGw6Cisg
ICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNm
b3JtTGlzdC5pZGw6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmg6IFJlbW92ZWQu
CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBzdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9y
bVZhbHVlOjpTVkdUcmFuc2Zvcm1WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zv
cm1WYWx1ZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVl
OjptYXRyaXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OnJv
dGF0aW9uQ2VudGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVl
Ojppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjpz
ZXRNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6Om1hdHJpeERp
ZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6dHJhbnNsYXRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjpzZXRUcmFuc2xh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6OnNjYWxlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjpzZXRTY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6c2V0Um90YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RyYW5zZm9ybVZhbHVlOjpzZXRTa2V3WCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
cmFuc2Zvcm1WYWx1ZTo6c2V0U2tld1kpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3Jt
VmFsdWU6OnZhbHVlQXNTdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNm
b3JtVmFsdWU6OnByZWZpeEZvclRyYW5zZnJvbVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VHJhbnNmb3JtVmFsdWU6OmFwcGVuZE51bWJlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVHJhbnNmb3JtVmFsdWU6OmFwcGVuZE1hdHJpeCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUcmFuc2Zvcm1WYWx1ZTo6YXBwZW5kVHJhbnNsYXRlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjphcHBlbmRTY2FsZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6YXBwZW5kUm90YXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RyYW5zZm9ybVZhbHVlOjphcHBlbmRTa2V3WCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1WYWx1ZTo6YXBwZW5kU2tld1kgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtVmFsdWU6Om1hdHJpeCk6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNm
b3JtYWJsZTo6cGFyc2VBbmRTa2lwVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUFuZFNr
aXBUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybWFibGU6OnBh
cnNlVHJhbnNmb3JtQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgVGhlIGNvZGUgb2YgdGhp
cyBmdW5jdGlvbiB3YXMgbW92ZWQgdG8gU1ZHVHJhbnNmb3JtTGlzdDo6cGFyc2UoKS4KKworICAg
ICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmg6CisgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQg
Zm9yIGVudW0gVHJhbnNmb3JtUGFyc2luZ01vZGUuIEl0IHdhcyB1c2VkIGJ5IAorICAgICAgICBT
VkdWaWV3U3BlYzo6cGFyc2VWaWV3U3BlYygpIHRvIHRlbGwgU1ZHVHJhbnNmb3JtYWJsZTo6cGFy
c2VUcmFuc2Zvcm1BdHRyaWJ1dGUoKQorICAgICAgICBub3QgdG8gY2xlYXIgdGhlIGxpc3QuIFNW
R1RyYW5zZnJvbUxpc3Qgbm93IGhhcyB0d28gcGFyc2UoKSBmdW5jdGlvbnM6CisgICAgICAgIG9u
ZSBwdWJsaWMgYW5kIHRoZSBzZWNvbmQgaXMgcHJpdmF0ZS4gVGhlIHB1YmxpYyBvbmUgY2xlYXIg
dGhlIGxpc3QKKyAgICAgICAgYmVmb3JlIHBhcnNpbmcgdGhlIGlucHV0IFN0cmluZy4gVGhlIHBy
aXZhdGUgb25lIGp1c3QgZG9lcyB0aGUgcGFyc2luZy4KKyAgICAgICAgU1ZHVmlld1NwZWM6OnBh
cnNlVmlld1NwZWMoKSBjYWxscyB0aGUgcHJpdmF0ZSBvbmNlIHNpbmNlIGl0IGlzIGEgZnJpZW5k
CisgICAgICAgIG9mIFNWR1RyYW5zZnJvbUxpc3QuCisKKyAgICAgICAgKiBzdmcvU1ZHVmFsdWUu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVjKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zp
ZXdTcGVjOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cGFyc2VWaWV3
U3BlYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cmVnaXN0ZXJBdHRyaWJ1dGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm0pOiBE
ZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5oOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaDoKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RG
dW5jdGlvbkltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvblRyYW5zZm9ybUxp
c3RGdW5jdGlvbjo6cHJvZ3Jlc3MpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBdHRyaWJ1dGVSZWdpc3RyeS5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR01h
dHJpeFRlYXJPZmYuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eUFjY2Vzc29ySW1wbC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
T3duZXJSZWdpc3RyeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlPd25lclJlZ2lz
dHJ5OjpyZWdpc3RlclByb3BlcnR5KToKKwogMjAxOS0wNC0wMSAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFNWR01hdHJpeC5JREwgbWV0aG9k
cyBkbyBub3QgY29uZm9ybSB0byB0aGUgc3BlY3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNTA0MzhiYmRj
NmM1N2Q2MTgwOTIwODdmYmIxMmEyMzU3YTUzYzZmNi4uZWEzOGZkMzAzYzhiZjM4MWE5ZGNmYWYx
MTI1ZjcxZmVkOWE4YzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIyMjksOCArMjIyOSw2IEBAIHN2
Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKIHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCiBz
dmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQuY3BwCi1zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcAotc3ZnL1NWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yLmNwcAogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCiBzdmcvU1ZH
QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKIHN2Zy9TVkdBdHRyaWJ1dGVBbmltYXRp
b25Db250cm9sbGVyQmFzZS5jcHAKQEAgLTIyOTEsNyArMjI4OSw2IEBAIHN2Zy9TVkdIS2VybkVs
ZW1lbnQuY3BwCiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAogc3ZnL1NWR0ltYWdlTG9hZGVyLmNw
cAogc3ZnL1NWR0xhbmdTcGFjZS5jcHAKLXN2Zy9TVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25D
b250cm9sbGVyLmNwcAogc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCiBzdmcvU1ZHTGVuZ3RoVmFs
dWUuY3BwCiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwCkBAIC0yMzM4LDEwICsyMzM1LDcgQEAgc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5jcHAKIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNw
cAogc3ZnL1NWR1RpdGxlRWxlbWVudC5jcHAKIHN2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cAotc3ZnL1NWR1RyYW5zZm9ybS5jcHAKIHN2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAKLXN2
Zy9TVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcAotc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmNwcAog
c3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAogc3ZnL1NW
R1Vua25vd25FbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEzMjY5ZjRmNjUwODc1OGQyMjU3NTU4ODI0YmUyYWMz
MmQ4ZWI4MzYuLmRmZDg2Nzg3MmM2YjUyODNmNzQ2OTcxNWRlNjRjMGIxZWM0M2YyOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI0MSw3ICsyNDEsNiBAQAogCQkwODE2NjhEQTEyNTYwM0Q1MDA2RjI1REUgLyogU1ZHVGV4dExh
eW91dEVuZ2luZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDgxNjY4RDgxMjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuaCAqLzsg
fTsKIAkJMDgxQUE4REExMTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxQUE4RDkxMTEx
MjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oICovOyB9OwogCQkwODFFQkYzQjBG
RDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxRUJGMzkwRkQzNEY0MTAwREE3NTU5IC8qIFNW
R0ZpbHRlckJ1aWxkZXIuaCAqLzsgfTsKLQkJMDgyNTA5MzkxMjhCRDREODAwRTJFRDhFIC8qIFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDgyNTA5MzgxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdC5oICovOyB9OwogCQkwODNEQUVBNzBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4M0RBRUEzMEYwMUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5oICovOyB9OwogCQkwODNEQUVBOTBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODNEQUVBNTBGMDFBN0ZCMDAzNDI3NTQgLyogUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmggKi87IH07CiAJCTA4NDU2ODA4MTJCOTBEQTYwMDk2MEE5RiAvKiBGb250
TWV0cmljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDg0NTY4MDcxMkI5MERBNjAwOTYwQTlGIC8qIEZvbnRNZXRyaWNzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI1NCw3ICsyNTMsNiBAQAogCQkw
ODU0QjAyMTEyNTVFNEU2MDBCOUNERDAgLyogU1ZHSW5saW5lVGV4dEJveC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1NEIwMEYxMjU1RTRFNjAwQjlD
REQwIC8qIFNWR0lubGluZVRleHRCb3guaCAqLzsgfTsKIAkJMDg1NEIwMjMxMjU1RTRFNjAwQjlD
REQwIC8qIFNWR1Jvb3RJbmxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4NTRCMDExMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdSb290SW5saW5l
Qm94LmggKi87IH07CiAJCTA4NTRCMDI1MTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdUZXh0UXVlcnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NTRCMDEz
MTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdUZXh0UXVlcnkuaCAqLzsgfTsKLQkJMDg1QTE1OTMxMjg5
QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg1QTE1OTIx
Mjg5QThERDAwMjcxMEUzIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9m
Zi5oICovOyB9OwogCQkwODVCOTJCQjBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODVCOTJC
OTBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMDg2NDFENDgxMjE0MkY3RDAwOERFOUY2IC8qIFJlbmRl
ckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODY0MUQ0NjEyMTQyRjdEMDA4REU5RjYgLyogUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwODZCQkQwRjEzNjAzOUMyMDA4QjE1RDggLyogR2x5cGguaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4NkJCRDBFMTM2MDM5QzIw
MDhCMTVEOCAvKiBHbHlwaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0yNzMsNyArMjcxLDYgQEAKIAkJMDhBNDg0NzgwRTUyNzJDNTAwQzNGRTc2
IC8qIFNjcmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4QTQ4NDc2MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhDN0EyQzcx
MERDNzQ2MjAwMkQzNjhCIC8qIFNWR05hbWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFFOTA5RDE1MDhEMDAwRTYx
RDcgLyogU1ZHTmFtZXMuaCAqLzsgfTsKIAkJMDhDOTI1MUEwRkNDN0M0QTAwNDgwREVDIC8qIEZp
bHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTA4Q0EzRDQ0MTI4OTRBMzgw
MEZGRjI2MCAvKiBTVkdNYXRyaXhUZWFyT2ZmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOENBM0Q0MzEyODk0QTM4MDBGRkYyNjAgLyogU1ZHTWF0cml4
VGVhck9mZi5oICovOyB9OwogCQkwOEVERTE5RjEyQTUwQjhFMDBCOTU3OTcgLyogU1ZHUmVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFREUxOUUx
MkE1MEI4RTAwQjk1Nzk3IC8qIFNWR1JlY3QuaCAqLzsgfTsKIAkJMDhGMEJGQzMxMjU1QzUzQzAw
MDc1MTg1IC8qIFNWR1RleHRDaHVuay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDhGMEJGQkUxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5o
ICovOyB9OwogCQkwOEYwQkZDNDEyNTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dEZyYWdtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEYwQkZCRjEy
NTVDNTNDMDAwNzUxODUgLyogU1ZHVGV4dEZyYWdtZW50LmggKi87IH07CkBAIC0xMTg1LDkgKzEx
ODIsNiBAQAogCQk0MzkwNDZFQTEyREEyNUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZENjEyREEy
NUU4MTJBRjgwQUMgLyogTWF0aE9wZXJhdG9yLmggKi87IH07CiAJCTQzOTA0NkVDMTJEQTI1RTgw
MEFGODBBOSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5MDQ2RDgxMkRBMjVFODAwQUY4MEE5IC8qIFJlbmRlck1h
dGhNTFRva2VuLmggKi87IH07CiAJCTQzOTE3NkUwMTJEQTI1RTE3QkFGODBBMiAvKiBNYXRoTUxT
dHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM5
MTc2Q0MxMkRBMjVFMTdCQUY4MEEyIC8qIE1hdGhNTFN0eWxlLmggKi87IH07Ci0JCTQzOUQzMzQz
MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBT
VkdBbmltYXRlZFR5cGUuaCAqLzsgfTsKLQkJNDM5RDMzNDQxM0E2OTExQzAwQzIwRjRGIC8qIFNW
R0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MzlEMzM0MTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3IuaCAqLzsgfTsKLQkJNDM5RDMzNDUxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1h
dG9yRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDM5RDMzNDIxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdG9yRmFjdG9yeS5oICovOyB9
OwogCQk0M0I4NUVENDE4Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENv
bXBhdGliaWxpdHlFbGVtZW50TWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQzQjg1RUQyMThDQkVDNTIwMEUzMUFGNCAvKiBTZWxlY3RvclBzZXVk
b0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuY3BwICovOyB9OwogCQk0M0MwOTJCQzEy
RDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNDMDkyQkExMkQ5RTRFRTAwQTk4OUMz
IC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCAqLzsgfTsKIAkJNDNFREQ2N0YxQjQ4NURCRjAw
NjQwRTc1IC8qIENvbWJpbmVkRmlsdGVyc0FscGhhYmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0VERDY3RDFCNDg1REJGMDA2NDBFNzUgLyogQ29t
YmluZWRGaWx0ZXJzQWxwaGFiZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNTU0Nyw3ICs1NTQxLDYgQEAKIAkJMDgxQUE4RDkxMTExMjM3RTAw
MkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdFbGVtZW50UmFyZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDgxRUJGMzgwRkQzNEY0MTAwREE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHRmlsdGVyQnVpbGRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUVCRjM5MEZEMzRGNDEwMERBNzU1OSAvKiBT
VkdGaWx0ZXJCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0Zp
bHRlckJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDgyNTA5MzgxMjhC
RDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgzREFFQTIwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDgzREFFQTMwRjAxQTdGQjAwMzQyNzU0IC8qIFJlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4M0RBRUE0MEYw
MUE3RkIwMDM0Mjc1NCAvKiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1NzAsNyArNTU2Myw2IEBACiAJ
CTA4NTRCMDExMTI1NUU0RTYwMEI5Q0REMCAvKiBTVkdSb290SW5saW5lQm94LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1Jvb3RJbmxpbmVCb3guaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDg1NEIwMTIxMjU1RTRFNjAwQjlDREQwIC8qIFNWR1RleHRRdWVy
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0UXVlcnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODU0QjAxMzEyNTVFNEU2MDBCOUNE
RDAgLyogU1ZHVGV4dFF1ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1RleHRRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwODVBMTU5MjEyODlB
OEREMDAyNzEwRTMgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODVCOTJC
ODBFRkRFNzNEMDBFNjEyM0MgLyogRm9ybURhdGFCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA4NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAvKiBGb3JtRGF0YUJ1aWxk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybURhdGFCdWlsZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4NjQxRDQ1MTIxNDJGN0QwMDhERTlGNiAv
KiBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTk1LDcgKzU1ODcsNiBAQAogCQkwOEE0ODQ3NjBF
NTI3MkM1MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4QzkyNTE3MEZDQzdDNEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsdGVyRWZmZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDhDOTI1MTgwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXJFZmZlY3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDhDQTNENDMxMjg5NEEzODAwRkZGMjYwIC8qIFNW
R01hdHJpeFRlYXJPZmYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWF0
cml4VGVhck9mZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEVERTE5RTEyQTUw
QjhFMDBCOTU3OTcgLyogU1ZHUmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdSZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RjBCRkJEMTI1NUM1
M0MwMDA3NTE4NSAvKiBTVkdUZXh0Q2h1bmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHVGV4dENodW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDhGMEJGQkUxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRDaHVuay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUZXh0Q2h1bmsuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc1MjUsOSArNzUxNiw2IEBACiAJCTQzOTA0NkQ4MTJEQTI1RTgwMEFGODBB
OSAvKiBSZW5kZXJNYXRoTUxUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJNYXRoTUxUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Mzkx
NzZDQjEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MU3R5bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MzkxNzZDQzEyREEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MU3R5bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDM5RDMzNDAxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdGVk
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDM5RDMzNDExM0E2OTExQzAwQzIwRjRG
IC8qIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0b3JGYWN0b3J5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQjg1RUQwMThDQkVBQ0UwMEUzMUFGNCAvKiBt
YWtlU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlFbGVtZW50TWFwLnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gbWFrZVNlbGVjdG9yUHNldWRvQ2xhc3NB
bmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDNCODVFRDIxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21w
YXRpYmlsaXR5RWxlbWVudE1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBTZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0aWJpbGl0eUVsZW1lbnRNYXAuY3BwOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TZWxlY3RvclBzZXVkb0NsYXNzQW5kQ29tcGF0
aWJpbGl0eUVsZW1lbnRNYXAuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk0M0I4NUVEMzE4Q0JFQzUyMDBFMzFBRjQgLyogU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENv
bXBhdGliaWxpdHlFbGVtZW50TWFwLmdwZXJmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNlbGVj
dG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5ncGVyZjsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvU2VsZWN0b3JQc2V1ZG9DbGFzc0FuZENvbXBhdGliaWxpdHlF
bGVtZW50TWFwLmdwZXJmOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAt
ODUwMCw3ICs4NDg4LDYgQEAKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmll
ZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyog
UXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTEzN0IyQzIwMzc5RTU1MDAwMTAwNEIgLyog
U1ZHTWFya2VyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTWFy
a2VyVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTUxMzdCMzQyMDNDRUI3
MTAwMDEwMDRCIC8qIFNWR1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1MzQ2QUYwMjExNTBGQUYwMDU5QkNERCAvKiBTVkdB
dHRyaWJ1dGVPd25lclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZU93bmVyUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUzNDZBRkEyMTE3RkZBRjAwNTlC
Q0REIC8qIFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0
dHJpYnV0ZU93bmVyUHJveHlJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1
NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mjgz
LDcgKzkyNzAsNiBAQAogCQk3MTU1NkNCNzFGOUYwOUZDMDBFNzhEMDggLyogSlNLZXlmcmFtZUVm
ZmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0tleWZyYW1lRWZmZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNTZCQzlGMjFDQTM1MDYwMDUzNDM5
NyAvKiBCYXNpY0VmZmVjdFRpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCYXNpY0VmZmVjdFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTU3
RTNEMTFEQzFFRTRCMDA5NDU1MEUgLyogc2NydWJiaW5nLXN1cHBvcnQuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAic2NydWJiaW5nLXN1cHBvcnQuanMiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MTU3RjA2MTE1MEI2NTY0MDA2RUFBQkQgLyogU1ZH
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcxNUFENzFEMjA1MDUxMjQwMEQ1OTJEQyAvKiBEZWNsYXJhdGl2ZUFuaW1hdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWNsYXJhdGl2ZUFuaW1hdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTVBRDcxRjIwNTA1MTI0MDBENTky
REMgLyogRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MTVEQTVEMzIwMUJCOTAyMDAyRUYyQjAgLyogSlNXZWJBbmltYXRpb25DdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJBbmltYXRp
b25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTM4NSw4ICs5Mzcx
LDYgQEAKIAkJNzIxNDQzNDYyMjQwQ0FEMjAwRjEyRkY3IC8qIFNWR1ZhbHVlUHJvcGVydHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1ZHVmFsdWVQcm9wZXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MjNGOTdCQzIyMzhFRTA4MDA3RjA3OUMgLyogU1ZHQXR0cmlidXRlQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBdHRyaWJ1dGVBbmltYXRpb25D
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QkQyMjM4
RUUwODAwN0YwNzlDIC8qIFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3MjNGOTdCRTIyMzk1MTJEMDA3RjA3OUMgLyogU1ZHTGVnYWN5QXR0
cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZWdh
Y3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNzIzRjk3QkYyMjM5NTEyRDAwN0YwNzlDIC8qIFNWR0xlZ2FjeUF0dHJpYnV0ZUFu
aW1hdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVnYWN5QXR0cmlidXRlQW5p
bWF0aW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjNGOTdD
MDIyMzk2Qjg4MDA3RjA3OUMgLyogU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlckJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlckJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzIzRjk3QzEyMjM5NzcyNTAwN0YwNzlDIC8q
IFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXJCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNWR0F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXJCYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI0RUQzMjkxQTNBN0U1NDAwRjVGMTNDIC8qIEVYVEJsZW5kTWlu
TWF4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVEJsZW5kTWlu
TWF4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk2MjEsOCArOTYwNSw2IEBA
CiAJCTdDMzMwQTA1MURGOUY5NTEwMEQzMzk1QyAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uT3B0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMzMwQTA2MURGOUY5NTEwMEQzMzk1QyAv
KiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1Bvc2l0aW9uT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzMzRjM2
MDFCNEEwNTA0MDA1MDJDQUYgLyogSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDMzlDMzZDMUREQjhCQjAwMEZFRkIy
OSAvKiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3QzM5QzM2RDFEREI4QkIwMDBGRUZCMjkgLyogU1ZHVHJhbnNmb3JtTGlz
dFZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0E5MUU1MUM5NjNC
ODgwMEQxQTdFMyAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2xpcGJvYXJkQWNjZXNzUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDM0I3OTZGMTkwODc1N0IwMEI0N0EyRCAvKiBVc2VyTWVzc2FnZUhhbmRs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lc3NhZ2VI
YW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzQjc5NzAxOTA4NzU3
QjAwQjQ3QTJEIC8qIFVzZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVc2VyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTk4NzEsOSArOTg1Myw3IEBACiAJCTdDRTU4RDUxMUREN0IwOTMwMDEyODU1MiAvKiBT
VkdMZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVuZ3RoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTU4RDUyMUREN0IwOTMwMDEyODU1MiAv
KiBTVkdMZW5ndGhWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdMZW5ndGhWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRTU4
RDUzMUREN0IwOTMwMDEyODU1MiAvKiBTVkdMZW5ndGhWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdMZW5ndGhWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3Q0U1OEQ1NTFERDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVHJhbnNmb3JtVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0U1OEQ1NjFERDdEOTZEMDAxMjg1
NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHVHJhbnNmb3JtVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NF
NThENTkxREQ3REU1MjAwMTI4NTUyIC8qIFNWR1RyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUcmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3Q0U2ODM0MjE5MjE0M0E4MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBV
c2VyTWVzc2FnZUhhbmRsZXJEZXNjcmlwdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0NFNjgzNDMxOTIxNDNBODAwRjREOTI4IC8qIFVzZXJNZXNzYWdlSGFuZGxlckRlc2Ny
aXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lc3NhZ2VIYW5k
bGVyRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0U2ODM0NjE5
MjE4MjE1MDBGNEQ5MjggLyogVXNlck1lc3NhZ2VIYW5kbGVyRGVzY3JpcHRvclR5cGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJNZXNzYWdlSGFuZGxlckRlc2NyaXB0
b3JUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwNDQsNyArMTAwMjQs
NiBAQAogCQk4MzZEMDMyRDFEQThBMTMyMDBGRkQ5NkIgLyogSlNDbGlwYm9hcmRFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NsaXBib2FyZEV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2RDAzMkUxREE4QTEzMjAwRkZEOTZC
IC8qIEpTQ2xpcGJvYXJkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDbGlwYm9hcmRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzZEQUEw
NTFDRUFCN0NEMDBBMkI3MDcgLyogUmVuZGVyRGVzY2VuZGFudEl0ZXJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckRlc2NlbmRhbnRJdGVyYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4MzZGQkNFOTE3OEMxMTMyMDBCMjFBMTUgLyogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzcwNTY4ODFGNTA5MTUwMDBEOTM0MjUgLyogSlNGaWxlQ2FsbGJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaWxlQ2FsbGJhY2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzcwNTY4OTFGNTA5MTUwMDBEOTM0MjUgLyog
SlNGaWxlU3lzdGVtRW50cnlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0ZpbGVTeXN0ZW1FbnRyeUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNzA1NjhBMUY1MDkxNTAwMEQ5MzQyNSAvKiBKU0ZpbGVTeXN0ZW1FbnRyeUNhbGxi
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmlsZVN5c3Rl
bUVudHJ5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4NjYs
NyArMTM4NDUsNyBAQAogCQlEMDBENzdGRDIyNDJFRDQ1MDA0M0YxMkMgLyogV2ViR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDBENzdGRTIyNDJFRDQ1MDA0M0YxMkMg
LyogV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQ
VUNvbXB1dGVQYXNzRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
MEQ3N0ZGMjI0MkVENDUwMDQzRjEyQyAvKiBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0gIAkJRDAwRjU5NDAyMTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01XaW5kb3dXZWJHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRDAwRjU5NDAyMTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01XaW5kb3dXZWJHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDAwRjU5NDEyMTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBET01XaW5kb3dXZWJHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDBGNTk0MjIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBET01XaW5kb3dXZWJHUFUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDBGNTk0NjIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYwMjMsNyArMTYwMDIsNiBAQAog
CQkJCTU1RUU1MzVCMjIzQjJBMEMwMEZCQTk0NCAvKiBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFu
aW1hdG9ySW1wbC5oICovLAogCQkJCTA4OEEwREZGMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmlt
YXRlZFByb3BlcnR5VGVhck9mZi5oICovLAogCQkJCTU1RkE3RkZFMjExMTBFNkUwMDVBRUZFNyAv
KiBTVkdBbmltYXRlZFByb3BlcnR5VHlwZS5oICovLAotCQkJCTA4NUExNTkyMTI4OUE4REQwMDI3
MTBFMyAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCAqLywKIAkJ
CQk3MjE0NDM0NTIyNDBDOEJBMDBGMTJGRjcgLyogU1ZHQW5pbWF0ZWRWYWx1ZVByb3BlcnR5Lmgg
Ki8sCiAJCQkJNTVCRTAyNUYyMjNCMjlDNTAwMzJGMDhBIC8qIFNWR0FuaW1hdGlvbkFkZGl0aXZl
RnVuY3Rpb24uaCAqLywKIAkJCQk3MjY2RjAyOTIyNDMxMkIxMDA4MzM5NzUgLyogU1ZHQW5pbWF0
aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCAqLywKQEAgLTE2MDUxLDcgKzE2MDI5LDYgQEAKIAkJ
CQk1NURDQzUyMzIyNDA3M0ZFMDBDMjZFMzIgLyogU1ZHTGlzdC5oICovLAogCQkJCTA4MTA3NjQz
MTI4Mjg1NTYwMDdDNjNCQSAvKiBTVkdMaXN0UHJvcGVydHkuaCAqLywKIAkJCQkwODhBMEUwMDEy
NkVGMURCMDA5NzhGN0EgLyogU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oICovLAotCQkJCTA4Q0Ez
RDQzMTI4OTRBMzgwMEZGRjI2MCAvKiBTVkdNYXRyaXhUZWFyT2ZmLmggKi8sCiAJCQkJNTVFRTUz
NTQyMjNCMjlFOTAwRkJBOTQ0IC8qIFNWR01lbWJlckFjY2Vzc29yLmggKi8sCiAJCQkJNTVCRTAy
NUEyMjNCMjlDMjAwMzJGMDhBIC8qIFNWR1BvaW50ZXJNZW1iZXJBY2Nlc3Nvci5oICovLAogCQkJ
CTU1RENDNTI1MjI0MDc0OUUwMEMyNkUzMiAvKiBTVkdQcmltaXRpdmVMaXN0LmggKi8sCkBAIC0y
MzgwNywxMiArMjM3ODQsNyBAQAogCQkJCUIyMjI3N0Y0MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdB
bmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaWRsICovLAogCQkJCUIyMjI3N0Y1MEQwMEJGMUYw
MDcxQjc4MiAvKiBTVkdBbmltYXRlZFJlY3QuaWRsICovLAogCQkJCUIyMjI3N0Y2MEQwMEJGMUYw
MDcxQjc4MiAvKiBTVkdBbmltYXRlZFN0cmluZy5pZGwgKi8sCi0JCQkJNzE1N0YwNjExNTBCNjU2
NDAwNkVBQUJEIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAgKi8sCi0JCQkJMDgyNTA5
MzgxMjhCRDREODAwRTJFRDhFIC8qIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oICovLAogCQkJ
CUIyMjI3N0Y4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaWRs
ICovLAotCQkJCTQzOUQzMzQwMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCAq
LywKLQkJCQk4MzZGQkNFOTE3OEMxMTMyMDBCMjFBMTUgLyogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IuY3BwICovLAotCQkJCTQzOUQzMzQxMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5
cGVBbmltYXRvci5oICovLAogCQkJCUIyMjI3N0Y5MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmlt
YXRlRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc3RkEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0Fu
aW1hdGVFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc3RkIwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0Fu
aW1hdGVFbGVtZW50LmlkbCAqLywKQEAgLTIzODI3LDcgKzIzNzk5LDYgQEAKIAkJCQlCMjIyNzgw
MTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIy
Mjc4MDIwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGlvbkVsZW1lbnQuaCAqLywKIAkJCQlC
MjIyNzgwMzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0aW9uRWxlbWVudC5pZGwgKi8sCi0J
CQkJNDM5RDMzNDIxM0E2OTExQzAwQzIwRjRGIC8qIFNWR0FuaW1hdG9yRmFjdG9yeS5oICovLAog
CQkJCTcyM0Y5N0JDMjIzOEVFMDgwMDdGMDc5QyAvKiBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250
cm9sbGVyLmNwcCAqLywKIAkJCQk3MjNGOTdCRDIyMzhFRTA4MDA3RjA3OUMgLyogU1ZHQXR0cmli
dXRlQW5pbWF0aW9uQ29udHJvbGxlci5oICovLAogCQkJCTcyM0Y5N0MxMjIzOTc3MjUwMDdGMDc5
QyAvKiBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyQmFzZS5jcHAgKi8sCkBAIC0yNDAw
MSw4ICsyMzk3Miw2IEBACiAJCQkJQjI4QzZBMjEwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdl
TG9hZGVyLmggKi8sCiAJCQkJQjIyMjc4OTkwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xhbmdTcGFj
ZS5jcHAgKi8sCiAJCQkJQjIyMjc4OUEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR0xhbmdTcGFjZS5o
ICovLAotCQkJCTcyM0Y5N0JFMjIzOTUxMkQwMDdGMDc5QyAvKiBTVkdMZWdhY3lBdHRyaWJ1dGVB
bmltYXRpb25Db250cm9sbGVyLmNwcCAqLywKLQkJCQk3MjNGOTdCRjIyMzk1MTJEMDA3RjA3OUMg
LyogU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5oICovLAogCQkJCTdDRTU4
RDUxMUREN0IwOTMwMDEyODU1MiAvKiBTVkdMZW5ndGguaCAqLywKIAkJCQlCMjIyNzg5RTBEMDBC
RjIwMDA3MUI3ODIgLyogU1ZHTGVuZ3RoLmlkbCAqLywKIAkJCQk3MTM0NDk2QjE0Njk0MUIzMDA3
MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgKi8sCkBAIC0yNDE2OSw3ICsyNDEzOCw2IEBA
CiAJCQkJQjIyMjc5M0YwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RpdGxlRWxlbWVudC5pZGwgKi8s
CiAJCQkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24u
Y3BwICovLAogCQkJCTFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252
ZXJzaW9uLmggKi8sCi0JCQkJN0NFNThENTkxREQ3REU1MjAwMTI4NTUyIC8qIFNWR1RyYW5zZm9y
bS5jcHAgKi8sCiAJCQkJQjIyMjc5NDEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RyYW5zZm9ybS5o
ICovLAogCQkJCUIyMjI3OTQyMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm0uaWRsICov
LAogCQkJCUIyMjI3OTQzMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUcmFuc2Zvcm1hYmxlLmNwcCAq
LywKQEAgLTI0MTc4LDkgKzI0MTQ2LDYgQEAKIAkJCQlCMjIyNzk0NzBEMDBCRjIxMDA3MUI3ODIg
LyogU1ZHVHJhbnNmb3JtRGlzdGFuY2UuaCAqLywKIAkJCQlCMjIyNzk0OTBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHVHJhbnNmb3JtTGlzdC5oICovLAogCQkJCUIyMjI3OTRBMEQwMEJGMjEwMDcxQjc4
MiAvKiBTVkdUcmFuc2Zvcm1MaXN0LmlkbCAqLywKLQkJCQk3QzM5QzM2QzFEREI4QkIwMDBGRUZC
MjkgLyogU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgKi8sCi0JCQkJN0MzOUMzNkQxRERCOEJC
MDAwRkVGQjI5IC8qIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCAqLywKLQkJCQk3Q0U1OEQ1NTFE
RDdEOTZEMDAxMjg1NTIgLyogU1ZHVHJhbnNmb3JtVmFsdWUuY3BwICovLAogCQkJCTdDRTU4RDU2
MUREN0Q5NkQwMDEyODU1MiAvKiBTVkdUcmFuc2Zvcm1WYWx1ZS5oICovLAogCQkJCUIyMjI3OTRC
MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdUUmVmRWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc5NEMw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1RSZWZFbGVtZW50LmggKi8sCkBAIC0yNDE5OCw3ICsyNDE2
Myw2IEBACiAJCQkJQjIyMjc5NTYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1VzZUVsZW1lbnQuY3Bw
ICovLAogCQkJCUIyMjI3OTU3MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdVc2VFbGVtZW50LmggKi8s
CiAJCQkJQjIyMjc5NTgwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1VzZUVsZW1lbnQuaWRsICovLAot
CQkJCTU1MTM3QjM0MjAzQ0VCNzEwMDAxMDA0QiAvKiBTVkdWYWx1ZS5oICovLAogCQkJCUIyMjI3
OTU5MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdWaWV3RWxlbWVudC5jcHAgKi8sCiAJCQkJQjIyMjc5
NUEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1ZpZXdFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc5NUIw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1ZpZXdFbGVtZW50LmlkbCAqLywKQEAgLTI1ODg2LDcgKzI1
ODUwLDYgQEAKIAkJCQlEMDVBOTlFNDIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVM
YXlvdXQuaCAqLywKIAkJCQlEMDVBOTlFNjIxQzlCRjJDMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxp
bmVMYXlvdXQuaWRsICovLAogCQkJCUQwMDQ4N0QyMjI0NTdCRUEwMEVFRDdEOSAvKiBXZWJHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwICovLAotCQkJCUQwMDQ4N0QyMjI0NTdCRUEwMEVF
RDdEOSAvKiBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwICovLAogCQkJCUQwNUE5
OUUxMjFDOUI1MEYwMDAzMkI3NSAvKiBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuaCAq
LywKIAkJCQlEMDVBOTlFMjIxQzlCNTBGMDAwMzJCNzUgLyogV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmlkbCAqLywKIAkJCQlEMDg5MDMzNzIyNDA2MUFDMDBGM0Y0NDAgLyogV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuY3BwICovLApAQCAtMzE1NDAsMTYgKzMxNTAzLDExIEBA
CiAJCQkJMDg4QTBFMDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNj
cmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg4QTBFMDgxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUZBN0ZG
RjIxMTEwRTZFMDA1QUVGRTcgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eVR5cGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTA4MjUwOTM5MTI4QkQ0RDgwMEUyRUQ4RSAvKiBTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4NUExNTkzMTI4OUE4REQwMDI3MTBFMyAvKiBT
VkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCBpbiBIZWFkZXJzICovLAot
CQkJCTQzOUQzMzQzMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTQzOUQzMzQ0MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRlZFR5cGVB
bmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTAwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0FuaW1hdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzJCODQzNDE5RDhFNTUx
MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyNzk5MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3OTk1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTgwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0FuaW1hdGlvbkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQzOUQzMzQ1
MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU1RkE3RkYwMjEwRkEzODYwMDVBRUZFNyAvKiBTVkdBdHRyaWJ1dGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU1RkE3RkY1MjEwRkI2QjEwMDVBRUZFNyAvKiBTVkdBdHRyaWJ1dGVBY2Nlc3Nv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUzNDZBRjEyMTE1MEZBRjAwNTlCQ0REIC8qIFNWR0F0
dHJpYnV0ZU93bmVyUHJveHkuaCBpbiBIZWFkZXJzICovLApAQCAtMzE2MzYsNyArMzE1OTQsNiBA
QAogCQkJCUIyMjI3QTQ0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdNYXJrZXJFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0E0NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTWFza0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MDZFNTdBMTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdN
YXRyaXguaCBpbiBIZWFkZXJzICovLAotCQkJCTA4Q0EzRDQ0MTI4OTRBMzgwMEZGRjI2MCAvKiBT
VkdNYXRyaXhUZWFyT2ZmLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E0QjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHTWV0YWRhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkExRjJC
MTBDRUYwQUJGMDA0NDJGNkEgLyogU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjdBNEUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR01QYXRoRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2Uu
Y3BwCmluZGV4IDgzNGE5MjkyMmE4ZWQ1ZGM2ZmEyOGEwMTliZmMzY2VjZmFjYzNhMWQuLjhlNzgw
MTJmYzVkMTQ4NWYxZDg0NzNlNmU3ZGQ5MWVmY2Q0OGRkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkBAIC0yNSwxMCArMjUsOCBAQAogI2luY2x1
ZGUgIlNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIgogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5o
IgotI2luY2x1ZGUgIlNWR0FuaW1hdG9yRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR0F0dHJpYnV0
ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNDksMTIg
KzQ3LDggQEAgU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlckJhc2UmIFNWR0FuaW1hdGVF
bGVtZW50QmFzZTo6YXR0cmlidXRlQW5pbWF0aW9uQ28KICAgICBBU1NFUlQodGFyZ2V0RWxlbWVu
dCgpKTsKICAgICBBU1NFUlQoIWhhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlKCkpOwogCi0gICAg
aWYgKCFtX2F0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIpIHsKLSAgICAgICAgaWYgKHRhcmdl
dEVsZW1lbnQoKS0+aXNBbmltYXRlZEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKCkpKQotICAgICAg
ICAgICAgbV9hdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyPigqdGhpcywgKnRhcmdldEVsZW1lbnQoKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxl
cj4oKnRoaXMsICp0YXJnZXRFbGVtZW50KCkpOwotICAgIH0KKyAgICBpZiAoIW1fYXR0cmlidXRl
QW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAgbV9hdHRyaWJ1dGVBbmltYXRpb25Db250cm9s
bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyPigq
dGhpcywgKnRhcmdldEVsZW1lbnQoKSk7CiAKICAgICByZXR1cm4gKm1fYXR0cmlidXRlQW5pbWF0
aW9uQ29udHJvbGxlcjsKIH0KQEAgLTY0LDkgKzU4LDYgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVu
dEJhc2U6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0CiAgICAgaWYgKCF0YXJnZXRFbGVt
ZW50KCkgfHwgaGFzSW52YWxpZENTU0F0dHJpYnV0ZVR5cGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgaWYgKFNWR0FuaW1hdG9yRmFjdG9yeTo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGVU
eXBlKGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKCp0YXJnZXRFbGVtZW50KCkpKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICByZXR1cm4gdGFyZ2V0RWxlbWVudCgpLT5pc0FuaW1h
dGVkQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUoKSk7CiB9CiAKQEAgLTkxLDIxICs4MiwyMSBAQCBi
b29sIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1
ZShjb25zdCBTdHJpbmcmIHRvQXRFbgogewogICAgIGlmICghdGFyZ2V0RWxlbWVudCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xs
ZXIoKS5jYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKHRvQXRFbmRPZkR1cmF0aW9uU3Ry
aW5nKTsKKyAgICByZXR1cm4gYXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcigpLmNhbGN1bGF0
ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoYW5pbWF0ZVJhbmdlU3RyaW5nKHRvQXRFbmRPZkR1cmF0
aW9uU3RyaW5nKSk7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVG
cm9tQW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRv
U3RyaW5nKQogewogICAgIGlmICghdGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIoKS5jYWxjdWxhdGVG
cm9tQW5kVG9WYWx1ZXMoZnJvbVN0cmluZywgdG9TdHJpbmcpOworICAgIHJldHVybiBhdHRyaWJ1
dGVBbmltYXRpb25Db250cm9sbGVyKCkuY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGFuaW1hdGVS
YW5nZVN0cmluZyhmcm9tU3RyaW5nKSwgYW5pbWF0ZVJhbmdlU3RyaW5nKHRvU3RyaW5nKSk7CiB9
CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQogewogICAg
IGlmICghdGhpcy0+dGFyZ2V0RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIGF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIoKS5jYWxjdWxhdGVGcm9tQW5kQnlW
YWx1ZXMoZnJvbVN0cmluZywgYnlTdHJpbmcpOworICAgIHJldHVybiBhdHRyaWJ1dGVBbmltYXRp
b25Db250cm9sbGVyKCkuY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGFuaW1hdGVSYW5nZVN0cmlu
Zyhmcm9tU3RyaW5nKSwgYW5pbWF0ZVJhbmdlU3RyaW5nKGJ5U3RyaW5nKSk7CiB9CiAKIHZvaWQg
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgKaW5kZXggYjA3Y2RjM2FmZGFjOTE4MTdmODZl
ZjAyNDdkMWI0NmVkMjI0Nzg4My4uNzcyMmNkZmIxOTk0ODVlMWQ1ZWZiY2RlYjg0ZDk3ZjZlNzBk
YTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaApAQCAt
NjEsNiArNjEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3Zl
cnJpZGU7CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBhbmltYXRlUmFuZ2VTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIHN0cmluZzsgfQorCiBwcml2YXRlOgogICAgIGJv
b2wgaGFzSW52YWxpZENTU0F0dHJpYnV0ZVR5cGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKaW5kZXggNzQ1MzkyZTM3
OTE3YTkwMzc4ZTYzZWViZjRkYWJiY2RlMGFmZTNjYi4uYWQ3NTBhZWY3ODc5NjZkY2Q2NTM5ZTI3
Njg5MjRhOWIyN2ZhOTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVUcmFuc2Zvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCkBAIC02Niw0ICs2Niw5IEBAIHZvaWQgU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSk7CiB9CiAKK1N0cmluZyBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6YW5pbWF0ZVJh
bmdlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBTVkdU
cmFuc2Zvcm1WYWx1ZTo6cHJlZml4Rm9yVHJhbnNmcm9tVHlwZShtX3R5cGUpICsgc3RyaW5nICsg
JyknOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRy
YW5zZm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudC5oCmluZGV4IDIwMzEwM2FhNmZkNGMyYTdhM2UyNTAzMzJjNzU2NmY4Y2Y4ZDBmZTgu
LjMwMWVhODhhYjQ2NWQ1NDdiMTJkYjgxYjNhMWI2NTUzN2U1MjliN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCkBAIC00MSw2ICs0MSw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBmaW5hbDsKKyAgICBTdHJpbmcgYW5pbWF0ZVJhbmdlU3RyaW5n
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgU1ZHVHJhbnNmb3JtVmFsdWU6OlNW
R1RyYW5zZm9ybVR5cGUgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHJhbnNmb3JtTGlzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0
ODYxMWI5MzVhZTk4ZDRkMTA3MmY1ZjAzYjdiNmY5MzRmNTQzYTguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlVHJh
bnNmb3JtRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHVHJh
bnNmb3JtRGlzdGFuY2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IoU1ZH
QW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQpCi0gICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZFRyYW5zZm9ybUxp
c3QsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQotICAgICwgbV90cmFuc2Zvcm1U
eXBlU3RyaW5nKFNWR1RyYW5zZm9ybVZhbHVlOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2lu
Zyhkb3duY2FzdDxTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudD4oYW5pbWF0aW9uRWxlbWVudCkt
PnRyYW5zZm9ybVR5cGUoKSkpCi17Ci0gICAgLy8gT25seSA8YW5pbWF0ZVRyYW5zZm9ybT4gdXNl
cyB0aGlzIGFuaW1hdG9yLCBhcyA8YW5pbWF0ZT4gZG9lc24ndCBhbGxvdyB0byBhbmltYXRlIHRy
YW5zZm9ybSBsaXN0cyBkaXJlY3RseS4KLSAgICBBU1NFUlQoYW5pbWF0aW9uRWxlbWVudC0+aGFz
VGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRyYW5zZm9ybVRhZykpOwotfQotCi1zdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICByZXR1cm4g
U1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGUoU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVHJhbnNmb3JtTGlz
dFZhbHVlcz46OmZyb21TdHJpbmcobV90cmFuc2Zvcm1UeXBlU3RyaW5nICsgc3RyaW5nICsgJykn
KSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIHJldHVybiBjb25z
dHJ1Y3RGcm9tQmFzZVZhbHVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4oYW5pbWF0ZWRUeXBl
cyk7Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OnN0b3BBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0
ZWRUeXBlcykKLXsKLSAgICBzdG9wQW5pbVZhbEFuaW1hdGlvbkZvclR5cGU8U1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0PihhbmltYXRlZFR5cGVzKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3RBbmltYXRvcjo6cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcywgU1ZHQW5pbWF0ZWRUeXBlJiB0eXBl
KQotewotICAgIHJlc2V0RnJvbUJhc2VWYWx1ZTxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+KGFu
aW1hdGVkVHlwZXMsIHR5cGUpOwotfQotCi12b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFu
aW1hdG9yOjphbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmIGFuaW1hdGVkVHlwZXMpCi17Ci0gICAgYW5pbVZhbFdpbGxDaGFuZ2VGb3JUeXBlPFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4oYW5pbWF0ZWRUeXBlcyk7Ci19Ci0KLXZvaWQgU1ZHQW5p
bWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiBhbmltYXRlZFR5cGVzKQotewotICAgIGFuaW1WYWxE
aWRDaGFuZ2VGb3JUeXBlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4oYW5pbWF0ZWRUeXBlcyk7
Ci19Ci0KLXZvaWQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVk
VHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYXRlZFR5cGUqIHRvKQotewotICAg
IEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKLSAgICBBU1NF
UlQoZnJvbS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwotCi0gICAgY29uc3QgYXV0byYgZnJvbVRy
YW5zZm9ybUxpc3QgPSBmcm9tLT5hczxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPigpOwotICAgIGF1
dG8mIHRvVHJhbnNmb3JtTGlzdCA9IHRvLT5hczxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPigpOwot
ICAgIGF1dG8gZnJvbVRyYW5zZm9ybUxpc3RTaXplID0gZnJvbVRyYW5zZm9ybUxpc3Quc2l6ZSgp
OwotICAgIGlmICghZnJvbVRyYW5zZm9ybUxpc3RTaXplIHx8IGZyb21UcmFuc2Zvcm1MaXN0U2l6
ZSAhPSB0b1RyYW5zZm9ybUxpc3Quc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NF
UlQoZnJvbVRyYW5zZm9ybUxpc3RTaXplID09IDEpOwotICAgIGNvbnN0IGF1dG8mIGZyb21UcmFu
c2Zvcm0gPSBmcm9tVHJhbnNmb3JtTGlzdFswXTsKLSAgICBhdXRvJiB0b1RyYW5zZm9ybSA9IHRv
VHJhbnNmb3JtTGlzdFswXTsKLQotICAgIEFTU0VSVChmcm9tVHJhbnNmb3JtLnR5cGUoKSA9PSB0
b1RyYW5zZm9ybS50eXBlKCkpOwotICAgIHRvVHJhbnNmb3JtID0gU1ZHVHJhbnNmb3JtRGlzdGFu
Y2U6OmFkZFNWR1RyYW5zZm9ybXMoZnJvbVRyYW5zZm9ybSwgdG9UcmFuc2Zvcm0pOwotfQotCi12
b2lkIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5
cGUqIGZyb20sIFNWR0FuaW1hdGVkVHlwZSogdG8sIFNWR0FuaW1hdGVkVHlwZSogdG9BdEVuZE9m
RHVyYXRpb24sIFNWR0FuaW1hdGVkVHlwZSogYW5pbWF0ZWQpCi17Ci0gICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7Ci0KLSAgICAvLyBTcGVjOiBUbyBhbmltYXRpb25zIHByb3ZpZGUgc3Bl
Y2lmaWMgZnVuY3Rpb25hbGl0eSB0byBnZXQgYSBzbW9vdGggY2hhbmdlIGZyb20gdGhlIHVuZGVy
bHlpbmcgdmFsdWUgdG8gdGhlCi0gICAgLy8g4oCYdG/igJkgYXR0cmlidXRlIHZhbHVlLCB3aGlj
aCBjb25mbGljdHMgbWF0aGVtYXRpY2FsbHkgd2l0aCB0aGUgcmVxdWlyZW1lbnQgZm9yIGFkZGl0
aXZlIHRyYW5zZm9ybSBhbmltYXRpb25zCi0gICAgLy8gdG8gYmUgcG9zdC1tdWx0aXBsaWVkLiBB
cyBhIGNvbnNlcXVlbmNlLCBpbiBTVkcgMS4xIHRoZSBiZWhhdmlvciBvZiB0byBhbmltYXRpb25z
IGZvciDigJhhbmltYXRlVHJhbnNmb3Jt4oCZIGlzIHVuZGVmaW5lZC4KLSAgICBjb25zdCBhdXRv
JiBmcm9tVHJhbnNmb3JtTGlzdCA9IGZyb20tPmFzPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+KCk7
Ci0gICAgY29uc3QgYXV0byYgdG9UcmFuc2Zvcm1MaXN0ID0gdG8tPmFzPFNWR1RyYW5zZm9ybUxp
c3RWYWx1ZXM+KCk7Ci0gICAgY29uc3QgYXV0byYgdG9BdEVuZE9mRHVyYXRpb25UcmFuc2Zvcm1M
aXN0ID0gdG9BdEVuZE9mRHVyYXRpb24tPmFzPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+KCk7Ci0g
ICAgYXV0byYgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0ID0gYW5pbWF0ZWQtPmFzPFNWR1RyYW5zZm9y
bUxpc3RWYWx1ZXM+KCk7Ci0KLSAgICAvLyBQYXNzIGZhbHNlIHRvICdyZXNpemVBbmltYXRlZExp
c3RJZk5lZWRlZCcgaGVyZSwgYXMgdGhlIHNwZWNpYWwgcG9zdC1tdWx0aXBsaWNhdGlvbiBiZWhh
dmlvciBvZiA8YW5pbWF0ZVRyYW5zZm9ybT4gbmVlZHMgdG8gYmUgcmVzcGVjdGVkIGJlbG93Lgot
ICAgIGlmICghbV9hbmltYXRpb25FbGVtZW50LT5hZGp1c3RGcm9tVG9MaXN0VmFsdWVzPFNWR1Ry
YW5zZm9ybUxpc3RWYWx1ZXM+KGZyb21UcmFuc2Zvcm1MaXN0LCB0b1RyYW5zZm9ybUxpc3QsIGFu
aW1hdGVkVHJhbnNmb3JtTGlzdCwgcGVyY2VudGFnZSwgZmFsc2UpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBOZXZlciByZXNpemUgdGhlIGFuaW1hdGVkVHJhbnNmb3JtTGlzdCB0byB0aGUg
dG9UcmFuc2Zvcm1MaXN0IHNpemUsIGluc3RlYWQgZWl0aGVyIGNsZWFyIHRoZSBsaXN0IG9yIGFw
cGVuZCB0byBpdC4KLSAgICBpZiAoIWFuaW1hdGVkVHJhbnNmb3JtTGlzdC5pc0VtcHR5KCkgJiYg
KCFtX2FuaW1hdGlvbkVsZW1lbnQtPmlzQWRkaXRpdmUoKSB8fCBtX2FuaW1hdGlvbkVsZW1lbnQt
PmFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpUbykpCi0gICAgICAgIGFuaW1hdGVk
VHJhbnNmb3JtTGlzdC5jbGVhcigpOwotCi0gICAgYXV0byBmcm9tVHJhbnNmb3JtTGlzdFNpemUg
PSBmcm9tVHJhbnNmb3JtTGlzdC5zaXplKCk7Ci0gICAgY29uc3QgYXV0byYgdG9UcmFuc2Zvcm0g
PSB0b1RyYW5zZm9ybUxpc3RbMF07Ci0gICAgY29uc3QgYXV0byBlZmZlY3RpdmVGcm9tID0gZnJv
bVRyYW5zZm9ybUxpc3RTaXplID8gZnJvbVRyYW5zZm9ybUxpc3RbMF0gOiBTVkdUcmFuc2Zvcm1W
YWx1ZSh0b1RyYW5zZm9ybS50eXBlKCksIFNWR1RyYW5zZm9ybVZhbHVlOjpDb25zdHJ1Y3RaZXJv
VHJhbnNmb3JtKTsKLSAgICBhdXRvIGN1cnJlbnRUcmFuc2Zvcm0gPSBTVkdUcmFuc2Zvcm1EaXN0
YW5jZShlZmZlY3RpdmVGcm9tLCB0b1RyYW5zZm9ybSkuc2NhbGVkRGlzdGFuY2UocGVyY2VudGFn
ZSkuYWRkVG9TVkdUcmFuc2Zvcm0oZWZmZWN0aXZlRnJvbSk7Ci0gICAgaWYgKG1fYW5pbWF0aW9u
RWxlbWVudC0+aXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdENvdW50KSB7Ci0gICAgICAgIGNvbnN0
IGF1dG8gZWZmZWN0aXZlVG9BdEVuZCA9IHRvQXRFbmRPZkR1cmF0aW9uVHJhbnNmb3JtTGlzdC5z
aXplKCkgPyB0b0F0RW5kT2ZEdXJhdGlvblRyYW5zZm9ybUxpc3RbMF0gOiBTVkdUcmFuc2Zvcm1W
YWx1ZSh0b1RyYW5zZm9ybS50eXBlKCksIFNWR1RyYW5zZm9ybVZhbHVlOjpDb25zdHJ1Y3RaZXJv
VHJhbnNmb3JtKTsKLSAgICAgICAgYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmFwcGVuZChTVkdUcmFu
c2Zvcm1EaXN0YW5jZTo6YWRkU1ZHVHJhbnNmb3JtcyhjdXJyZW50VHJhbnNmb3JtLCBlZmZlY3Rp
dmVUb0F0RW5kLCByZXBlYXRDb3VudCkpOwotICAgIH0gZWxzZQotICAgICAgICBhbmltYXRlZFRy
YW5zZm9ybUxpc3QuYXBwZW5kKGN1cnJlbnRUcmFuc2Zvcm0pOwotfQotCi1mbG9hdCBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQotewotICAgIEFTU0VSVChtX2Fu
aW1hdGlvbkVsZW1lbnQpOwotCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3QgaW4g
YWxsIGNhc2VzLiBUaGUgc3BlYyBkZW1hbmRzIHRoYXQgZWFjaCBjb21wb25lbnQgKHRyYW5zbGF0
ZSB4IGFuZCB5IGZvciBleGFtcGxlKQotICAgIC8vIGlzIHBhY2VkIHNlcGFyYXRlbHkuIFRvIGlt
cGxlbWVudCB0aGlzIHdlIG5lZWQgdG8gdHJlYXQgZWFjaCBjb21wb25lbnQgYXMgaW5kaXZpZHVh
bCBhbmltYXRpb24gZXZlcnl3aGVyZS4KLSAgICBhdXRvIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3Ry
aW5nKGZyb21TdHJpbmcpOwotICAgIGF1dG8gdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3Ry
aW5nKTsKLQotICAgIGNvbnN0IGF1dG8mIGZyb21UcmFuc2Zvcm1MaXN0ID0gZnJvbS0+YXM8U1ZH
VHJhbnNmb3JtTGlzdFZhbHVlcz4oKTsKLSAgICBjb25zdCBhdXRvJiB0b1RyYW5zZm9ybUxpc3Qg
PSB0by0+YXM8U1ZHVHJhbnNmb3JtTGlzdFZhbHVlcz4oKTsKLSAgICB1bnNpZ25lZCBpdGVtc0Nv
dW50ID0gZnJvbVRyYW5zZm9ybUxpc3Quc2l6ZSgpOwotICAgIGlmICghaXRlbXNDb3VudCB8fCBp
dGVtc0NvdW50ICE9IHRvVHJhbnNmb3JtTGlzdC5zaXplKCkpCi0gICAgICAgIHJldHVybiAtMTsK
LQotICAgIEFTU0VSVChpdGVtc0NvdW50ID09IDEpOwotICAgIGlmIChmcm9tVHJhbnNmb3JtTGlz
dFswXS50eXBlKCkgIT0gdG9UcmFuc2Zvcm1MaXN0WzBdLnR5cGUoKSkKLSAgICAgICAgcmV0dXJu
IC0xOwotCi0gICAgLy8gU3BlYzogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUuaHRt
bCNjb21wbGV4RGlzdGFuY2VzCi0gICAgLy8gUGFjZWQgYW5pbWF0aW9ucyBhc3N1bWUgYSBub3Rp
b24gb2YgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdmFyaW91cyBhbmltYXRpb24gdmFsdWVzIGRlZmlu
ZWQgYnkgdGhlIOKAmHRv4oCZLCDigJhmcm9t4oCZLCDigJhieeKAmSBhbmQg4oCYdmFsdWVz4oCZ
IGF0dHJpYnV0ZXMuCi0gICAgLy8gRGlzdGFuY2UgaXMgZGVmaW5lZCBvbmx5IGZvciBzY2FsYXIg
dHlwZXMgKHN1Y2ggYXMgPGxlbmd0aD4pLCBjb2xvcnMgYW5kIHRoZSBzdWJzZXQgb2YgdHJhbnNm
b3JtYXRpb24gdHlwZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IOKAmGFuaW1hdGVUcmFuc2Zvcm3i
gJkuCi0gICAgcmV0dXJuIFNWR1RyYW5zZm9ybURpc3RhbmNlKGZyb21UcmFuc2Zvcm1MaXN0WzBd
LCB0b1RyYW5zZm9ybUxpc3RbMF0pLmRpc3RhbmNlKCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMGIxNjlmNWM5YmE0MmVjNjAyNDBkMDFkNTljZTc4OTQwNzZiNTJmZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlZFR5
cGVBbmltYXRvci5oIgotI2luY2x1ZGUgIlNWR0F0dHJpYnV0ZUFjY2Vzc29yLmgiCi0jaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNW
R0FuaW1hdGlvbkVsZW1lbnQ7Ci0KLXVzaW5nIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IFNW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZjsKLXVzaW5nIFNWR0FuaW1hdGVk
VHJhbnNmb3JtTGlzdEF0dHJpYnV0ZSA9IFNWR0FuaW1hdGVkQXR0cmlidXRlTGlzdDxTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3Q+OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5cGU+Ci11c2lu
ZyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGVBY2Nlc3NvciA9IFNWR0FuaW1hdGVk
QXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRy
aWJ1dGUsIEFuaW1hdGVkVHJhbnNmb3JtTGlzdD47Ci0KLWNsYXNzIFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsK
LXB1YmxpYzoKLSAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcihTVkdBbmltYXRp
b25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1h
dGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZvaWQgYWRkQW5p
bWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIGZsb2F0IGNhbGN1
bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgU3RyaW5nJiBtX3RyYW5zZm9y
bVR5cGVTdHJpbmc7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRUeXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MzBiNGRm
MzFhODQzNDNhNzdlODk4Y2VjYzhkOGYzOGQ5OTM0MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlw
ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIlNWR1ZhbHVlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgU1ZHQW5pbWF0ZWRUeXBlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZSgpCi0gICAgewotICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KFNWR1Byb3BlcnR5VHJh
aXRzPFByb3BlcnR5VHlwZT46OmluaXRpYWxWYWx1ZSgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IGNyZWF0ZShjb25zdCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihwcm9wZXJ0
eSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGUoUHJvcGVydHlUeXBl
JiYgcHJvcGVydHkpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdB
bmltYXRlZFR5cGU+KFdURk1vdmUocHJvcGVydHkpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBQcm9wZXJ0eVR5cGU+Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlKGNvbnN0IFByb3BlcnR5
VHlwZSYgcHJvcGVydHkpCi0gICAgICAgIDogbV92YWx1ZShzdGQ6Om1ha2VfdW5pcXVlPFByb3Bl
cnR5VHlwZT4ocHJvcGVydHkpLnJlbGVhc2UoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgotICAgIFNWR0FuaW1hdGVkVHlwZShQcm9wZXJ0eVR5
cGUmJiBwcm9wZXJ0eSkKLSAgICAgICAgOiBtX3ZhbHVlKHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVy
dHlUeXBlPihXVEZNb3ZlKHByb3BlcnR5KSkucmVsZWFzZSgpKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB+U1ZHQW5pbWF0ZWRUeXBlKCkKLSAgICB7Ci0gICAgICAgIFdURjo6dmlzaXQoW10oYXV0byYg
dmFsdWUpIHsKLSAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZTsKLSAgICAgICAgfSwgbV92YWx1ZSk7
Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFByb3BlcnR5VHlwZT4KLSAgICBjb25zdCBQ
cm9wZXJ0eVR5cGUmIGFzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPFByb3BlcnR5VHlwZSo+KG1fdmFsdWUpKTsKLSAgICAgICAgcmV0dXJuICpX
VEY6OmdldDxQcm9wZXJ0eVR5cGUqPihtX3ZhbHVlKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8
Y2xhc3MgUHJvcGVydHlUeXBlPgotICAgIFByb3BlcnR5VHlwZSYgYXMoKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UHJvcGVydHlUeXBlKj4obV92YWx1ZSkp
OwotICAgICAgICByZXR1cm4gKldURjo6Z2V0PFByb3BlcnR5VHlwZSo+KG1fdmFsdWUpOwotICAg
IH0KLQotICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgQVNTRVJUKCFtX3ZhbHVlLmluZGV4KCkpOwotICAgICAgICByZXR1cm4gQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0OwotICAgIH0KLQotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGF1dG8mIHZhbHVlKSB7Ci0gICAgICAg
ICAgICB1c2luZyBQcm9wZXJ0eVR5cGUgPSBzdGQ6OmRlY2F5X3Q8ZGVjbHR5cGUoKnZhbHVlKT47
Ci0gICAgICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6dG9T
dHJpbmcoKnZhbHVlKTsKLSAgICAgICAgfSwgbV92YWx1ZSk7Ci0gICAgfQotCi0gICAgYm9vbCBz
ZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBTdHJp
bmcmIHN0cmluZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnZpc2l0KFsmXShhdXRvJiB2
YWx1ZSkgewotICAgICAgICAgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gc3RkOjpkZWNheV90PGRl
Y2x0eXBlKCp2YWx1ZSk+OwotICAgICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gU1ZHUHJvcGVy
dHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6cGFyc2UoYXR0ck5hbWUsIHN0cmluZykpIHsKLSAgICAg
ICAgICAgICAgICAqdmFsdWUgPSAqcmVzdWx0OwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9LCBt
X3ZhbHVlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0FuaW1WYWwoQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIC8vIEFuaW1hdGVkQ29sb3IgaXMg
b25seSB1c2VkIGZvciBDU1MgcHJvcGVydHkgYW5pbWF0aW9ucy4KLSAgICAgICAgcmV0dXJuIHR5
cGUgIT0gQW5pbWF0ZWRVbmtub3duICYmIHR5cGUgIT0gQW5pbWF0ZWRDb2xvcjsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgU1ZHVmFsdWVWYXJpYW50IG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRU
eXBlQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNmOWM0NGI2Y2IxMjI4Mzg0
MmRiOGE5ZTZhYWE2NWNmYjc5Nzc2My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Iu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS0yMDEyLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yLmgiCi0KLSNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
KEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUsIFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlv
bkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQotICAgIDogbV90eXBlKHR5cGUp
Ci0gICAgLCBtX2FuaW1hdGlvbkVsZW1lbnQoYW5pbWF0aW9uRWxlbWVudCkKLSAgICAsIG1fY29u
dGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQpCi17Ci19Ci0KLVNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yOjp+U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoKSA9IGRlZmF1bHQ7Ci0KLXZvaWQgU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhzdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
Ci17Ci0gICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgdG8g
PSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKLX0KLQotdm9pZCBTVkdBbmltYXRlZFR5
cGVBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tLCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8s
IGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKLXsKLSAg
ICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICB0byA9IGNvbnN0
cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOwotICAgIGFkZEFuaW1hdGVkVHlwZXMoZnJvbS5nZXQo
KSwgdG8uZ2V0KCkpOwotfQotCi1TVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QgU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3I6OmZpbmRBbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGVOYW1l
KFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUpCi17Ci0gICAgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0IHJlc3VsdDsKLQot
ICAgIGlmICghU1ZHQW5pbWF0ZWRUeXBlOjpzdXBwb3J0c0FuaW1WYWwobV90eXBlKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIGF1dG8gdGFyZ2V0UHJvcGVydGllcyA9IHRhcmdldEVs
ZW1lbnQubG9va3VwT3JDcmVhdGVBbmltYXRlZFByb3BlcnRpZXMoYXR0cmlidXRlTmFtZSk7Ci0g
ICAgaWYgKHRhcmdldFByb3BlcnRpZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotCi0gICAgcmVzdWx0LmFwcGVuZChTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzIHsgJnRh
cmdldEVsZW1lbnQsIFdURk1vdmUodGFyZ2V0UHJvcGVydGllcykgfSk7Ci0KLSAgICBmb3IgKFNW
R0VsZW1lbnQqIGluc3RhbmNlIDogdGFyZ2V0RWxlbWVudC5pbnN0YW5jZXMoKSkKLSAgICAgICAg
cmVzdWx0LmFwcGVuZChTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzIHsgaW5zdGFuY2UsIGlu
c3RhbmNlLT5sb29rdXBPckNyZWF0ZUFuaW1hdGVkUHJvcGVydGllcyhhdHRyaWJ1dGVOYW1lKSB9
KTsKLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBmb3IgKGF1dG8mIGFuaW1hdGVkUHJvcGVy
dGllcyA6IHJlc3VsdCkgewotICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogYW5pbWF0ZWRQ
cm9wZXJ0aWVzLnByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eS0+YW5pbWF0
ZWRQcm9wZXJ0eVR5cGUoKSAhPSBtX3R5cGUpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV90
eXBlID09IEFuaW1hdGVkQW5nbGUpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0eS0+
YW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSA9PSBBbmltYXRlZEVudW1lcmF0aW9uKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdm9pZCBTVkdBbmltYXRlZFR5cGVBbmltYXRvcjo6c2V0SW5zdGFuY2VVcGRhdGVzQmxvY2tl
ZChTVkdFbGVtZW50JiBlbGVtZW50LCBib29sIGJsb2NrZWQpCi17Ci0gICAgZWxlbWVudC5zZXRJ
bnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGJsb2NrZWQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjBhNGY1MTMwOGI5OTllYWMyMjRmZWM5MTEwZjQ0
Mzc1ZTMwZDc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMjMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkIDIwMTEtMjAxMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGUuaCIKLSNpbmNsdWRlICJTVkdMZWdh
Y3lBbmltYXRlZFByb3BlcnR5LmgiCi0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVz
IHsKLSAgICBTVkdFbGVtZW50KiBlbGVtZW50OwotICAgIFZlY3RvcjxSZWZQdHI8U1ZHTGVnYWN5
QW5pbWF0ZWRQcm9wZXJ0eT4+IHByb3BlcnRpZXM7Ci19OwotdHlwZWRlZiBWZWN0b3I8U1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydGllcz4gU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Owot
Ci1jbGFzcyBTVkdBbmltYXRpb25FbGVtZW50OwotCi1jbGFzcyBTVkdBbmltYXRlZFR5cGVBbmlt
YXRvciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoKTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgPSAw
OwotCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFu
aW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbVZh
bFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmlt
YXRlZFR5cGUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
YW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1h
dGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSopID0gMDsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgPSAwOwotCi0gICAgdm9p
ZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4mLCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYsIGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7Ci0gICAgdm9pZCBjYWxjdWxhdGVGcm9t
QW5kQnlWYWx1ZXMoc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4mLCBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiYsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiBieVN0cmluZyk7Ci0KLSAgICB2b2lkIHNldENvbnRleHRFbGVtZW50KFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KSB7IG1fY29udGV4dEVsZW1lbnQgPSBjb250ZXh0RWxlbWVudDsg
fQotICAgIEFuaW1hdGVkUHJvcGVydHlUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KLQotICAgIFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCBmaW5kQW5pbWF0ZWRQcm9w
ZXJ0aWVzRm9yQXR0cmlidXRlTmFtZShTVkdFbGVtZW50JiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRQcm9w
ZXJ0eVR5cGUsIFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7Ci0KLSAgICAvLyBI
ZWxwZXJzIGZvciBhbmltYXRvcnMgdGhhdCBvcGVyYXRlIG9uIHNpbmdsZSB0eXBlcywgZWcuIGp1
c3Qgb25lIFNWR0FuaW1hdGVkSW50ZWdlci4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltVmFs
VHlwZT4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9t
QmFzZVZhbHVlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRQ
cm9wZXJ0aWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydGllc1swXS5w
cm9wZXJ0aWVzLnNpemUoKSA9PSAxKTsKLSAgICAgICAgY29uc3QgYXV0byogYW5pbWF0ZWRQcm9w
ZXJ0eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlPihhbmlt
YXRlZFByb3BlcnRpZXNbMF0ucHJvcGVydGllc1swXS5nZXQoKSk7Ci0KLSAgICAgICAgYXV0byBh
bmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZShhbmltYXRlZFByb3BlcnR5LT5j
dXJyZW50QmFzZVZhbHVlKCkpOwotICAgICAgICBhdXRvJiBhbmltYXRlZFZhbHVlID0gYW5pbWF0
ZWRUeXBlLT50ZW1wbGF0ZSBhczx0eXBlbmFtZSBBbmltVmFsVHlwZTo6Q29udGVudFR5cGU+KCk7
Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5cGU+KFN0YXJ0QW5pbWF0aW9uQWN0aW9u
LCBhbmltYXRlZFByb3BlcnRpZXMsIDAsICZhbmltYXRlZFZhbHVlKTsKLSAgICAgICAgcmV0dXJu
IGFuaW1hdGVkVHlwZTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltVmFsVHlw
ZT4KLSAgICB2b2lkIHJlc2V0RnJvbUJhc2VWYWx1ZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmIGFuaW1hdGVkUHJvcGVydGllcywgU1ZHQW5pbWF0ZWRUeXBlJiBhbmltYXRl
ZFR5cGUpCi0gICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0aWVzWzBdLnByb3Bl
cnRpZXMuc2l6ZSgpID09IDEpOwotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRUeXBlLnR5cGUoKSA9
PSBtX3R5cGUpOwotICAgICAgICBhdXRvKiBhbmltYXRlZFByb3BlcnR5ID0gY2FzdEFuaW1hdGVk
UHJvcGVydHlUb0FjdHVhbFR5cGU8QW5pbVZhbFR5cGU+KGFuaW1hdGVkUHJvcGVydGllc1swXS5w
cm9wZXJ0aWVzWzBdLmdldCgpKTsKLSAgICAgICAgYW5pbWF0ZWRQcm9wZXJ0eS0+c3luY2hyb25p
emVXcmFwcGVyc0lmTmVlZGVkKCk7Ci0KLSAgICAgICAgYXV0byYgYW5pbWF0ZWRWYWx1ZSA9IGFu
aW1hdGVkVHlwZS5hczx0eXBlbmFtZSBBbmltVmFsVHlwZTo6Q29udGVudFR5cGU+KCk7Ci0gICAg
ICAgIGFuaW1hdGVkVmFsdWUgPSBhbmltYXRlZFByb3BlcnR5LT5jdXJyZW50QmFzZVZhbHVlKCk7
Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5cGU+KFN0YXJ0QW5pbWF0aW9uQWN0aW9u
LCBhbmltYXRlZFByb3BlcnRpZXMsIDAsICZhbmltYXRlZFZhbHVlKTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBBbmltVmFsVHlwZT4KLSAgICB2b2lkIHN0b3BBbmltVmFsQW5pbWF0
aW9uRm9yVHlwZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVk
UHJvcGVydGllcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnRpZXNbMF0u
cHJvcGVydGllcy5zaXplKCkgPT0gMSk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5
cGU+KFN0b3BBbmltYXRpb25BY3Rpb24sIGFuaW1hdGVkUHJvcGVydGllcywgMCk7Ci0gICAgfQot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbVZhbFR5cGU+Ci0gICAgdm9pZCBhbmltVmFsRGlk
Q2hhbmdlRm9yVHlwZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1h
dGVkUHJvcGVydGllcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnRpZXNb
MF0ucHJvcGVydGllcy5zaXplKCkgPT0gMSk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZh
bFR5cGU+KEFuaW1WYWxEaWRDaGFuZ2VBY3Rpb24sIGFuaW1hdGVkUHJvcGVydGllcywgMCk7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbVZhbFR5cGU+Ci0gICAgdm9pZCBhbmlt
VmFsV2lsbENoYW5nZUZvclR5cGUoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
JiBhbmltYXRlZFByb3BlcnRpZXMpCi0gICAgewotICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9w
ZXJ0aWVzWzBdLnByb3BlcnRpZXMuc2l6ZSgpID09IDEpOwotICAgICAgICBleGVjdXRlQWN0aW9u
PEFuaW1WYWxUeXBlPihBbmltVmFsV2lsbENoYW5nZUFjdGlvbiwgYW5pbWF0ZWRQcm9wZXJ0aWVz
LCAwKTsKLSAgICB9Ci0KLSAgICAvLyBIZWxwZXJzIGZvciBhbmltYXRvcnMgdGhhdCBvcGVyYXRl
IG9uIHBhaXIgdHlwZXMsIGVnLiBhIHBhaXIgb2YgU1ZHQW5pbWF0ZWRJbnRlZ2Vycy4KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBBbmltVmFsVHlwZTEsIHR5cGVuYW1lIEFuaW1WYWxUeXBlMj4KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tQmFzZVZhbHVl
cyhjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmIGFuaW1hdGVkUHJvcGVydGll
cykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnRpZXNbMF0ucHJvcGVydGll
cy5zaXplKCkgPT0gMik7Ci0gICAgICAgIGNvbnN0IGF1dG8qIGZpcnN0QW5pbWF0ZWRQcm9wZXJ0
eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlMT4oYW5pbWF0
ZWRQcm9wZXJ0aWVzWzBdLnByb3BlcnRpZXNbMF0uZ2V0KCkpOwotICAgICAgICBjb25zdCBhdXRv
KiBzZWNvbmRBbmltYXRlZFByb3BlcnR5ID0gY2FzdEFuaW1hdGVkUHJvcGVydHlUb0FjdHVhbFR5
cGU8QW5pbVZhbFR5cGUyPihhbmltYXRlZFByb3BlcnRpZXNbMF0ucHJvcGVydGllc1sxXS5nZXQo
KSk7Ci0KLSAgICAgICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0
ZShzdGQ6Om1ha2VfcGFpcihmaXJzdEFuaW1hdGVkUHJvcGVydHktPmN1cnJlbnRCYXNlVmFsdWUo
KSwgc2Vjb25kQW5pbWF0ZWRQcm9wZXJ0eS0+Y3VycmVudEJhc2VWYWx1ZSgpKSk7Ci0gICAgICAg
IGF1dG8mIEFuaW1hdGVkVmFsdWUgPSBhbmltYXRlZFR5cGUtPnRlbXBsYXRlIGFzPHN0ZDo6cGFp
cjx0eXBlbmFtZSBBbmltVmFsVHlwZTE6OkNvbnRlbnRUeXBlLCB0eXBlbmFtZSBBbmltVmFsVHlw
ZTI6OkNvbnRlbnRUeXBlPj4oKTsKLSAgICAgICAgZXhlY3V0ZUFjdGlvbjxBbmltVmFsVHlwZTE+
KFN0YXJ0QW5pbWF0aW9uQWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDAsICZBbmltYXRlZFZh
bHVlLmZpcnN0KTsKLSAgICAgICAgZXhlY3V0ZUFjdGlvbjxBbmltVmFsVHlwZTI+KFN0YXJ0QW5p
bWF0aW9uQWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDEsICZBbmltYXRlZFZhbHVlLnNlY29u
ZCk7Ci0gICAgICAgIHJldHVybiBhbmltYXRlZFR5cGU7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQW5pbVZhbFR5cGUxLCB0eXBlbmFtZSBBbmltVmFsVHlwZTI+Ci0gICAgdm9pZCBy
ZXNldEZyb21CYXNlVmFsdWVzKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYg
YW5pbWF0ZWRQcm9wZXJ0aWVzLCBTVkdBbmltYXRlZFR5cGUmIGFuaW1hdGVkVHlwZSkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnRpZXNbMF0ucHJvcGVydGllcy5zaXplKCkg
PT0gMik7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFR5cGUudHlwZSgpID09IG1fdHlwZSk7Ci0g
ICAgICAgIGF1dG8qIGZpcnN0QW5pbWF0ZWRQcm9wZXJ0eSA9IGNhc3RBbmltYXRlZFByb3BlcnR5
VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlMT4oYW5pbWF0ZWRQcm9wZXJ0aWVzWzBdLnByb3BlcnRp
ZXNbMF0uZ2V0KCkpOwotICAgICAgICBhdXRvKiBzZWNvbmRBbmltYXRlZFByb3BlcnR5ID0gIGNh
c3RBbmltYXRlZFByb3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlMj4oYW5pbWF0ZWRQcm9w
ZXJ0aWVzWzBdLnByb3BlcnRpZXNbMV0uZ2V0KCkpOwotICAgICAgICBmaXJzdEFuaW1hdGVkUHJv
cGVydHktPnN5bmNocm9uaXplV3JhcHBlcnNJZk5lZWRlZCgpOwotICAgICAgICBzZWNvbmRBbmlt
YXRlZFByb3BlcnR5LT5zeW5jaHJvbml6ZVdyYXBwZXJzSWZOZWVkZWQoKTsKLQotICAgICAgICBh
dXRvJiBhbmltYXRlZFZhbHVlID0gYW5pbWF0ZWRUeXBlLmFzPHN0ZDo6cGFpcjx0eXBlbmFtZSBB
bmltVmFsVHlwZTE6OkNvbnRlbnRUeXBlLCB0eXBlbmFtZSBBbmltVmFsVHlwZTI6OkNvbnRlbnRU
eXBlPj4oKTsKLSAgICAgICAgYW5pbWF0ZWRWYWx1ZS5maXJzdCA9IGZpcnN0QW5pbWF0ZWRQcm9w
ZXJ0eS0+Y3VycmVudEJhc2VWYWx1ZSgpOwotICAgICAgICBhbmltYXRlZFZhbHVlLnNlY29uZCA9
IHNlY29uZEFuaW1hdGVkUHJvcGVydHktPmN1cnJlbnRCYXNlVmFsdWUoKTsKLSAgICAgICAgZXhl
Y3V0ZUFjdGlvbjxBbmltVmFsVHlwZTE+KFN0YXJ0QW5pbWF0aW9uQWN0aW9uLCBhbmltYXRlZFBy
b3BlcnRpZXMsIDAsICZhbmltYXRlZFZhbHVlLmZpcnN0KTsKLSAgICAgICAgZXhlY3V0ZUFjdGlv
bjxBbmltVmFsVHlwZTI+KFN0YXJ0QW5pbWF0aW9uQWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMs
IDEsICZhbmltYXRlZFZhbHVlLnNlY29uZCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgQW5pbVZhbFR5cGUxLCB0eXBlbmFtZSBBbmltVmFsVHlwZTI+Ci0gICAgdm9pZCBzdG9wQW5p
bVZhbEFuaW1hdGlvbkZvclR5cGVzKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYgYW5pbWF0ZWRQcm9wZXJ0aWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJv
cGVydGllc1swXS5wcm9wZXJ0aWVzLnNpemUoKSA9PSAyKTsKLSAgICAgICAgZXhlY3V0ZUFjdGlv
bjxBbmltVmFsVHlwZTE+KFN0b3BBbmltYXRpb25BY3Rpb24sIGFuaW1hdGVkUHJvcGVydGllcywg
MCk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5cGUyPihTdG9wQW5pbWF0aW9uQWN0
aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEFuaW1WYWxUeXBlMSwgdHlwZW5hbWUgQW5pbVZhbFR5cGUyPgotICAgIHZvaWQgYW5pbVZh
bERpZENoYW5nZUZvclR5cGVzKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYg
YW5pbWF0ZWRQcm9wZXJ0aWVzKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVy
dGllc1swXS5wcm9wZXJ0aWVzLnNpemUoKSA9PSAyKTsKLSAgICAgICAgZXhlY3V0ZUFjdGlvbjxB
bmltVmFsVHlwZTE+KEFuaW1WYWxEaWRDaGFuZ2VBY3Rpb24sIGFuaW1hdGVkUHJvcGVydGllcywg
MCk7Ci0gICAgICAgIGV4ZWN1dGVBY3Rpb248QW5pbVZhbFR5cGUyPihBbmltVmFsRGlkQ2hhbmdl
QWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEFuaW1WYWxUeXBlMSwgdHlwZW5hbWUgQW5pbVZhbFR5cGUyPgotICAgIHZvaWQgYW5p
bVZhbFdpbGxDaGFuZ2VGb3JUeXBlcyhjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmIGFuaW1hdGVkUHJvcGVydGllcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmltYXRlZFBy
b3BlcnRpZXNbMF0ucHJvcGVydGllcy5zaXplKCkgPT0gMik7Ci0gICAgICAgIGV4ZWN1dGVBY3Rp
b248QW5pbVZhbFR5cGUxPihBbmltVmFsV2lsbENoYW5nZUFjdGlvbiwgYW5pbWF0ZWRQcm9wZXJ0
aWVzLCAwKTsKLSAgICAgICAgZXhlY3V0ZUFjdGlvbjxBbmltVmFsVHlwZTI+KEFuaW1WYWxXaWxs
Q2hhbmdlQWN0aW9uLCBhbmltYXRlZFByb3BlcnRpZXMsIDEpOwotICAgIH0KLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEFuaW1WYWxUeXBlPgotICAgIEFuaW1WYWxUeXBlKiBjYXN0QW5pbWF0ZWRQ
cm9wZXJ0eVRvQWN0dWFsVHlwZShTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5KiBwcm9wZXJ0eSkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7Ci0gICAgICAgIEFTU0VSVChwcm9wZXJ0
eS0+Y29udGV4dEVsZW1lbnQoKSk7Ci0gICAgICAgIC8vIFdlIGNhbid0IGFzc2VydCBwcm9wZXJ0
eS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSA9PSBtX3R5cGUsIGFzIHRoZXJlJ3MgYW4gZXhjZXB0
aW9uIGZvciBTVkdNYXJrZXJFbGVtZW50cyBvcmllbnQgYXR0cmlidXRlLgotICAgICAgICBpZiAo
cHJvcGVydHktPmFuaW1hdGVkUHJvcGVydHlUeXBlKCkgIT0gbV90eXBlKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQW5nbGUpOwotICAgICAgICAgICAgQVNTRVJUKHBy
b3BlcnR5LT5hbmltYXRlZFByb3BlcnR5VHlwZSgpID09IEFuaW1hdGVkRW51bWVyYXRpb24pOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBbmltVmFsVHlwZSo+KHByb3Bl
cnR5KTsKLSAgICB9Ci0KLSAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX3R5cGU7Ci0gICAgU1ZH
QW5pbWF0aW9uRWxlbWVudCogbV9hbmltYXRpb25FbGVtZW50OwotICAgIFNWR0VsZW1lbnQqIG1f
Y29udGV4dEVsZW1lbnQ7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBBbmltYXRpb25BY3Rpb24gewot
ICAgICAgICBTdGFydEFuaW1hdGlvbkFjdGlvbiwKLSAgICAgICAgU3RvcEFuaW1hdGlvbkFjdGlv
biwKLSAgICAgICAgQW5pbVZhbFdpbGxDaGFuZ2VBY3Rpb24sCi0gICAgICAgIEFuaW1WYWxEaWRD
aGFuZ2VBY3Rpb24KLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbVZhbFR5cGU+
Ci0gICAgdm9pZCBleGVjdXRlQWN0aW9uKEFuaW1hdGlvbkFjdGlvbiBhY3Rpb24sIGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRQcm9wZXJ0aWVzLCB1bnNpZ25l
ZCB3aGljaFByb3BlcnR5LCB0eXBlbmFtZSBBbmltVmFsVHlwZTo6Q29udGVudFR5cGUqIGFuaW1h
dGVkVmFsdWUgPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IENhbid0IHVzZSBT
VkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0ZUJsb2NrZXIgYmVjYXVzZSBvZiBjaXJjdWxhciBoZWFk
ZXIgZGVwZW5kZW5jeS4gV291bGQgYmUgbmljZSB0byB1bnRhbmdsZSB0aGlzLgotICAgICAgICBz
ZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCphbmltYXRlZFByb3BlcnRpZXNbMF0uZWxlbWVudCwg
dHJ1ZSk7Ci0KLSAgICAgICAgZm9yIChhdXRvJiBhbmltYXRlZFByb3BlcnR5IDogYW5pbWF0ZWRQ
cm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKHdoaWNoUHJvcGVydHkgPCBhbmltYXRlZFByb3BlcnR5LnByb3BlcnRpZXMuc2l6
ZSgpKTsKLSAgICAgICAgICAgIEFuaW1WYWxUeXBlKiBwcm9wZXJ0eSA9IGNhc3RBbmltYXRlZFBy
b3BlcnR5VG9BY3R1YWxUeXBlPEFuaW1WYWxUeXBlPihhbmltYXRlZFByb3BlcnR5LnByb3BlcnRp
ZXNbd2hpY2hQcm9wZXJ0eV0uZ2V0KCkpOwotCi0gICAgICAgICAgICBzd2l0Y2ggKGFjdGlvbikg
ewotICAgICAgICAgICAgY2FzZSBTdGFydEFuaW1hdGlvbkFjdGlvbjoKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoYW5pbWF0ZWRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eS0+
aXNBbmltYXRpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgcHJvcGVydHktPmFuaW1hdGlvblN0
YXJ0ZWQoYW5pbWF0ZWRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIFN0b3BBbmltYXRpb25BY3Rpb246Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCFhbmlt
YXRlZFZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAocHJvcGVydHktPmlzQW5pbWF0aW5nKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHByb3BlcnR5LT5hbmltYXRpb25FbmRlZCgpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBbmltVmFsV2lsbENoYW5nZUFjdGlv
bjoKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWFuaW1hdGVkVmFsdWUpOwotICAgICAgICAgICAg
ICAgIHByb3BlcnR5LT5hbmltVmFsV2lsbENoYW5nZSgpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBBbmltVmFsRGlkQ2hhbmdlQWN0aW9uOgotICAgICAgICAgICAg
ICAgIEFTU0VSVCghYW5pbWF0ZWRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHktPmFu
aW1WYWxEaWRDaGFuZ2UoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIHNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKmFuaW1hdGVk
UHJvcGVydGllc1swXS5lbGVtZW50LCBmYWxzZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
c2V0SW5zdGFuY2VVcGRhdGVzQmxvY2tlZChTVkdFbGVtZW50JiwgYm9vbCk7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVu
dC5jcHAKaW5kZXggMjZkZDNhNGZmYjQwYTRmMDEyNmY2ZDQ4YzMxY2VmNzZmMzAzOTIzMS4uYTA2
ZmJlZTAxNWQ0MTg3YzM3M2E2ZWI1ZjYwNGY1NzY2OTlmOTRiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcApAQCAtNjI3LDIwICs2MjcsNiBAQCB2b2lkIFNW
R0FuaW1hdGlvbkVsZW1lbnQ6OmNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlKFNWR0VsZW1lbnQqIGVs
ZW1lbnQsIENTU1Byb3BlcgogICAgIGVsZW1lbnQtPnNldFVzZU92ZXJyaWRlQ29tcHV0ZWRTdHls
ZShmYWxzZSk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6YWRqdXN0Rm9ySW5oZXJp
dGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSwgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICAvLyBGSVhNRTogQXQgdGhlIG1vbWVu
dCB0aGUgY29tcHV0ZWQgc3R5bGUgZ2V0cyByZXR1cm5lZCBhcyBhIFN0cmluZyBhbmQgbmVlZHMg
dG8gZ2V0IHBhcnNlZCBhZ2Fpbi4KLSAgICAvLyBJbiB0aGUgZnV0dXJlIHdlIG1pZ2h0IHdhbnQg
dG8gd29yayB3aXRoIHRoZSB2YWx1ZSB0eXBlIGRpcmVjdGx5IHRvIGF2b2lkIHRoZSBTdHJpbmcg
cGFyc2luZy4KLSAgICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7Ci0KLSAgICBhdXRvIHBhcmVudCA9
IG1ha2VSZWZQdHIodGFyZ2V0RWxlbWVudC0+cGFyZW50RWxlbWVudCgpKTsKLSAgICBpZiAoIXBh
cmVudCB8fCAhcGFyZW50LT5pc1NWR0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
U1ZHRWxlbWVudCYgc3ZnUGFyZW50ID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudCk7Ci0g
ICAgY29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUoJnN2Z1BhcmVudCwgY3NzUHJvcGVydHlJRChhdHRy
aWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSwgdmFsdWUpOwotfQotCiBzdGF0aWMgYm9vbCBpbmhlcml0
c0Zyb21Qcm9wZXJ0eShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGluaGVyaXQoImluaGVyaXQiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0aW9uRWxlbWVudC5oCmluZGV4IDc3MzA4OGI2N2IxNDE3ZTM2NTkxNjlmOThiYjBkMmJjZmJh
YWM3ZWIuLjQ2NTZmNDc0MWM4NjZkOGM1NThmYzZmMjQzMTQ1MDc0M2M4ZjI0ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaApAQCAtMzIsNyArMzIsNiBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb25kaXRpb25FdmVudExpc3RlbmVyOwotY2xhc3Mg
U1ZHQW5pbWF0ZWRUeXBlOwogY2xhc3MgVGltZUNvbnRhaW5lcjsKIAogLy8gSWYgd2UgaGF2ZSAn
Y3VycmVudENvbG9yJyBvciAnaW5oZXJpdCcgYXMgYW5pbWF0aW9uIHZhbHVlLCB3ZSBuZWVkIHRv
IGdyYWIKQEAgLTcwLDUyICs2OSw2IEBAIHB1YmxpYzoKICAgICBBbmltYXRlZFByb3BlcnR5VmFs
dWVUeXBlIGZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbVByb3Bl
cnR5VmFsdWVUeXBlOyB9CiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSB0b1Byb3BlcnR5
VmFsdWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90b1Byb3BlcnR5VmFsdWVUeXBlOyB9CiAKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbmltYXRlZFR5cGU+IHZvaWQgYWRqdXN0Rm9ySW5oZXJpdGFu
Y2UoQW5pbWF0ZWRUeXBlICgqcGFyc2VUeXBlRnJvbVN0cmluZykoU1ZHQW5pbWF0aW9uRWxlbWVu
dCosIGNvbnN0IFN0cmluZyYpLCBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIHZhbHVlVHlwZSwg
QW5pbWF0ZWRUeXBlJiBhbmltYXRlZFR5cGUsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQot
ICAgIHsKLSAgICAgICAgaWYgKHZhbHVlVHlwZSAhPSBJbmhlcml0VmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIC8vIFJlcGxhY2UgJ2luaGVyaXQnIGJ5IGl0cyBjb21wdXRlZCBw
cm9wZXJ0eSB2YWx1ZS4KLSAgICAgICAgQVNTRVJUKHBhcnNlVHlwZUZyb21TdHJpbmcpOwotICAg
ICAgICBTdHJpbmcgdHlwZVN0cmluZzsKLSAgICAgICAgYWRqdXN0Rm9ySW5oZXJpdGFuY2UoY29u
dGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgdHlwZVN0cmluZyk7Ci0gICAgICAgIGFuaW1h
dGVkVHlwZSA9ICgqcGFyc2VUeXBlRnJvbVN0cmluZykodGhpcywgdHlwZVN0cmluZyk7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQW5pbWF0ZWRUeXBlPiBib29sIGFkanVzdEZyb21U
b0xpc3RWYWx1ZXMoY29uc3QgQW5pbWF0ZWRUeXBlJiBmcm9tTGlzdCwgY29uc3QgQW5pbWF0ZWRU
eXBlJiB0b0xpc3QsIEFuaW1hdGVkVHlwZSYgYW5pbWF0ZWRMaXN0LCBmbG9hdCBwZXJjZW50YWdl
LCBib29sIHJlc2l6ZUFuaW1hdGVkTGlzdElmTmVlZGVkID0gdHJ1ZSkKLSAgICB7Ci0gICAgICAg
IC8vIElmIG5vICd0bycgdmFsdWUgaXMgZ2l2ZW4sIG5vdGhpbmcgdG8gYW5pbWF0ZS4KLSAgICAg
ICAgdW5zaWduZWQgdG9MaXN0U2l6ZSA9IHRvTGlzdC5zaXplKCk7Ci0gICAgICAgIGlmICghdG9M
aXN0U2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAvLyBJZiB0aGUg
J2Zyb20nIHZhbHVlIGlzIGdpdmVuIGFuZCBpdCdzIGxlbmd0aCBkb2Vzbid0IG1hdGNoIHRoZSAn
dG8nIHZhbHVlIGxpc3QgbGVuZ3RoLCBmYWxsYmFjayB0byBhIGRpc2NyZXRlIGFuaW1hdGlvbi4K
LSAgICAgICAgdW5zaWduZWQgZnJvbUxpc3RTaXplID0gZnJvbUxpc3Quc2l6ZSgpOwotICAgICAg
ICBpZiAoZnJvbUxpc3RTaXplICE9IHRvTGlzdFNpemUgJiYgZnJvbUxpc3RTaXplKSB7Ci0gICAg
ICAgICAgICBpZiAocGVyY2VudGFnZSA8IDAuNSkgewotICAgICAgICAgICAgICAgIGlmIChhbmlt
YXRpb25Nb2RlKCkgIT0gQW5pbWF0aW9uTW9kZTo6VG8pCi0gICAgICAgICAgICAgICAgICAgIGFu
aW1hdGVkTGlzdCA9IEFuaW1hdGVkVHlwZShmcm9tTGlzdCk7Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBhbmltYXRlZExpc3QgPSBBbmltYXRlZFR5cGUodG9MaXN0KTsKLQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKCFm
cm9tTGlzdFNpemUgfHwgZnJvbUxpc3RTaXplID09IHRvTGlzdFNpemUpOwotICAgICAgICBpZiAo
cmVzaXplQW5pbWF0ZWRMaXN0SWZOZWVkZWQgJiYgYW5pbWF0ZWRMaXN0LnNpemUoKSA8IHRvTGlz
dFNpemUpCi0gICAgICAgICAgICBhbmltYXRlZExpc3QucmVzaXplKHRvTGlzdFNpemUpOwotCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFuaW1h
dGVkVHlwZT4gdm9pZCBhbmltYXRlRGlzY3JldGVUeXBlKGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0
IEFuaW1hdGVkVHlwZSYgZnJvbVR5cGUsIGNvbnN0IEFuaW1hdGVkVHlwZSYgdG9UeXBlLCBBbmlt
YXRlZFR5cGUmIGFuaW1hdGVkVHlwZSkKLSAgICB7Ci0gICAgICAgIGlmICgoYW5pbWF0aW9uTW9k
ZSgpID09IEFuaW1hdGlvbk1vZGU6OkZyb21UbyAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmlt
YXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6VG8gfHwgcGVyY2VudGFnZSA9PSAxKSB7Ci0g
ICAgICAgICAgICBhbmltYXRlZFR5cGUgPSBBbmltYXRlZFR5cGUodG9UeXBlKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBhbmltYXRlZFR5cGUgPSBBbmltYXRlZFR5
cGUoZnJvbVR5cGUpOwotICAgIH0KLQogICAgIHZvaWQgYW5pbWF0ZUFkZGl0aXZlTnVtYmVyKGZs
b2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBmbG9hdCBmcm9tTnVtYmVyLCBm
bG9hdCB0b051bWJlciwgZmxvYXQgdG9BdEVuZE9mRHVyYXRpb25OdW1iZXIsIGZsb2F0JiBhbmlt
YXRlZE51bWJlcikKICAgICB7CiAgICAgICAgIGZsb2F0IG51bWJlcjsKQEAgLTE5Miw5ICsxNDUs
NiBAQCBwcml2YXRlOgogICAgIGZsb2F0IGNhbGN1bGF0ZVBlcmNlbnRGb3JGcm9tVG8oZmxvYXQg
cGVyY2VudCkgY29uc3Q7CiAgICAgdW5zaWduZWQgY2FsY3VsYXRlS2V5VGltZXNJbmRleChmbG9h
dCBwZXJjZW50KSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlBbmltYXRlZFZhbHVlKFNob3VsZEFw
cGx5QW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZFR5cGUqKTsKLSAgICB2b2lkIGFkanVzdEZv
ckluaGVyaXRhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIFN0cmluZyYpOwotCiAgICAgdm9pZCBzZXRDYWxjTW9kZShjb25z
dCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGJvb2wgbV9hbmltYXRpb25WYWxpZCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDJjZDhhYzA0YzMzYjgzYzU2NzI2YzE4ZjRmM2FjMzRhMWNhODYzNGQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMSwg
MjAxMi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBT
VkdBbmltYXRpb25FbGVtZW50OwotCi1jbGFzcyBTVkdBbmltYXRvckZhY3RvcnkgewotcHVibGlj
OgotICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlVHlwZShBbmltYXRlZFByb3Bl
cnR5VHlwZSBhdHRyaWJ1dGVUeXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVR5
cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OwotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IGNyZWF0ZShTVkdBbmltYXRpb25FbGVt
ZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUgYXR0cmlidXRlVHlwZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhbmlt
YXRpb25FbGVtZW50KTsKLSAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAg
QVNTRVJUKGF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0KTsKLSAgICAgICAg
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkVHJhbnNmb3JtTGlzdCkKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEFuaW1hdG9yPihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCk7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTVkdBbmltYXRvckZhY3Rvcnko
KSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5o
CmluZGV4IGU4MmJkYmFmODMyZGFjYTZjOWIxZWFlOWRmNDVkZWJkZjg0NGE3OWIuLmYyMDI1MDRm
ZThhMjQ2ODYzODkwMTY5NDgyZGViNGYyODkxMWQwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aApAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwu
aCIKICNpbmNsdWRlICJTVkdBdHRyaWJ1dGVPd25lclByb3h5LmgiCisjaW5jbHVkZSAiU1ZHQXR0
cmlidXRlT3duZXJQcm94eUltcGwuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKICNpbmNs
dWRlICJTVkdMb2NhdGFibGUuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMTM1LDExICsx
MzYsMTIgQEAgcHVibGljOgogICAgIGNsYXNzIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQ7CiAK
ICAgICAvLyBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgb3duZXIgcHJveHkgaGFzIHRvIG1hdGNoIHRo
ZSBjbGFzcyBpbmhlcml0YW5jZSBidXQgd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIFNWRyBvYmpl
Y3RzIG9ubHkuCi0gICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93
bmVyUHJveHlJbXBsPFNWR0VsZW1lbnQsIFNWR0xhbmdTcGFjZT47CisgICAgdXNpbmcgQXR0cmli
dXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0VsZW1lbnQ+Owog
CiAgICAgLy8gQSBzdXBlciBjbGFzcyB3aWxsIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gcmV0
dXJuIGl0cyBvd25lciBwcm94eS4gVGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHN1cGVyIGNsYXNzIHdp
bGwKICAgICAvLyBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIHJlZ2lzdHJ5IG9mIHRoZSBvd25l
ciBwcm94eS4KICAgICB2aXJ0dWFsIGNvbnN0IFNWR0F0dHJpYnV0ZU93bmVyUHJveHkmIGF0dHJp
YnV0ZU93bmVyUHJveHkoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZU93bmVyUHJveHk7IH0K
KyAgICBzdGF0aWMgQXR0cmlidXRlT3duZXJQcm94eTo6QXR0cmlidXRlUmVnaXN0cnkmIGF0dHJp
YnV0ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVn
aXN0cnkoKTsgfQogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucyB3aGljaCByZXR1cm4gaW5mbyBm
b3IgdGhlIHN1cGVyIGNsYXNzJyBhdHRyaWJ1dGVzLgogICAgIHZvaWQgc3luY2hyb25pemVBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgeyBhdHRyaWJ1dGVPd25lclByb3h5KCku
c3luY2hyb25pemVBdHRyaWJ1dGUobmFtZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCmluZGV4IGVhZWIyMmFhYmViZWQ5YmUzOGNh
OGNmMGIzZDRiNmNmNWE2MTkwYmMuLmUyY2VhMGYwYzFiOTY5ZjJjNWFmNDA4ZGYxMThhNGYwMzRj
N2M4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaApAQCAtNTYsMTAgKzU2LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwog
Ci0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9CisgICAgc3RhdGljIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVy
biBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KGJvb2wpIHsgfQogICAgIHZp
cnR1YWwgYm9vbCBpc1BhcnNlckluc2VydGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggZTVkMTBiM2ZmYWE1MGEyMThm
MzkwZmJmMzAxMzBhZjVmYzg2N2Q4MC4uMzk0MDk1MDA4YjQ4MmRjZTQ3NDkwMTYwYzA4ODRmNTE3
ZmM0MjM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTUxLDEx
ICs1MSw2IEBAIHByaXZhdGU6CiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3Bl
cnR5T3duZXJSZWdpc3RyeTxTVkdGRUltYWdlRWxlbWVudCwgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdVUklSZWZl
cmVuY2U+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRp
YyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFt
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgKaW5kZXggODJiN2Q1
NjZiNDk1Nzk4ZGM1OWVkZTI5ZDI0YjFlY2JiNzIyYzliNi4uNjEyMmU1NGM0ZjI5YzYzYjIzNTc3
ODFkZjhjOWQzYzc4MWY1OWExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5oCkBAIC03NSwxOCArNzUsMTEgQEAgcHJpdmF0ZToKICAgICBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNp
bmcgQXR0cmlidXRlT3duZXJQcm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR0ZF
TW9ycGhvbG9neUVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47
Ci0gICAgc3RhdGljIEF0dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRy
aWJ1dGVSZWdpc3RyeSgpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJl
Z2lzdHJ5KCk7IH0KLSAgICBzdGF0aWMgdm9pZCByZWdpc3RlckF0dHJpYnV0ZXMoKTsKICAgICBj
b25zdCBTVkdBdHRyaWJ1dGVPd25lclByb3h5JiBhdHRyaWJ1dGVPd25lclByb3h5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9hdHRyaWJ1dGVPd25lclByb3h5OyB9CiAKICAgICB1c2luZyBQcm9w
ZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAgICAgY29uc3Qg
U1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFt
ZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsK
LSAgICB9Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuaAppbmRleCA4YWVlMmJlYmJkZDIyNDMwZTJkYmRkOGI1YzZiMzlkZTcyYjM2
MmU0Li4wMjkyZmMwYTliNTE4NTQ1OGRiMGJhMDE1NmU1NTdmNTRkMWUwNGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKQEAgLTQyLDExICs0Miw2IEBAIHByaXZhdGU6CiAg
ICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdG
RVRpbGVFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBBdHRyaWJ1dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpIHx8IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRl
TmFtZSk7Ci0gICAgfQotCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpdFRvVmlld0JveC5oCmluZGV4IDNiMGM0MzQwNjIwMThiMTYwZTNlNzU5Nzk0Zjk4NWQ0
ZGY5ZmIzNmQuLmEyMDkxNWFhNjcxNDhmNGE2NGNkOGY1NjdmZWI2OWIwMmUyNjZkNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKQEAgLTY2LDEwICs2Niw3IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBTVkdGaXRUb1ZpZXdCb3goU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQsIFNWR1Byb3BlcnR5QWNjZXNzID0gU1ZHUHJvcGVydHlBY2Nlc3M6OlJlYWRXcml0ZSk7CiAK
LSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOwotICAgIH0KKyAgICBzdGF0aWMgYm9vbCBpc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJu
IFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7IH0KIAog
ICAgIHZvaWQgcmVzZXQoKTsKICAgICBib29sIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAKaW5kZXggMGI0MGQ0MjAyMzMwOGRjOTZkMTU0NThhOTNmMDBhN2U5Zjdi
ODVjZC4uYmNiNjc1ZWY3ZjBkOWIxNzM0OWNmZDAzNWFkYjJlNDZhMDUyNmU5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKQEAgLTIsNyArMiw3IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZVJhZGlh
bEdyYWRpZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdTdG9wRWxl
bWVudC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKICNpbmNsdWRlICJT
VkdUcmFuc2Zvcm1hYmxlLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC00NCwyMyArNDMsMTQgQEAgU1ZHR3JhZGllbnRF
bGVtZW50OjpTVkdHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGQKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQodGhpcykKICAg
ICAsIFNWR1VSSVJlZmVyZW5jZSh0aGlzKQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwot
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVy
dHk8U1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIFNWR1NwcmVhZE1ldGhvZFR5cGUsICZTVkdH
cmFkaWVudEVsZW1lbnQ6Om1fc3ByZWFkTWV0aG9kPigpOwogICAgICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciwgU1ZHVW5p
dFR5cGVzOjpTVkdVbml0VHlwZSwgJlNWR0dyYWRpZW50RWxlbWVudDo6bV9ncmFkaWVudFVuaXRz
PigpOworICAgICAgICBQcm9wZXJ0eVJlZ2lzdHJ5OjpyZWdpc3RlclByb3BlcnR5PFNWR05hbWVz
OjpncmFkaWVudFRyYW5zZm9ybUF0dHIsICZTVkdHcmFkaWVudEVsZW1lbnQ6Om1fZ3JhZGllbnRU
cmFuc2Zvcm0+KCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpyZWdp
c3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5ID0gYXR0cmlidXRlUmVnaXN0
cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0
dHIsICZTVkdHcmFkaWVudEVsZW1lbnQ6Om1fZ3JhZGllbnRUcmFuc2Zvcm0+KCk7Ci19Ci0KIHZv
aWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikgewpAQCAtNzEsMTAgKzYxLDcgQEAgdm9pZCBTVkdH
cmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1MKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Z3JhZGll
bnRUcmFuc2Zvcm1BdHRyKSB7Ci0gICAgICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgbmV3TGlz
dDsKLSAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSk7Ci0gICAgICAgIG1fZ3JhZGllbnRUcmFu
c2Zvcm0uZGV0YWNoQW5pbWF0ZWRMaXN0V3JhcHBlcnMoYXR0cmlidXRlT3duZXJQcm94eSgpLCBu
ZXdMaXN0LnNpemUoKSk7Ci0gICAgICAgIG1fZ3JhZGllbnRUcmFuc2Zvcm0uc2V0VmFsdWUoV1RG
TW92ZShuZXdMaXN0KSk7CisgICAgICAgIG1fZ3JhZGllbnRUcmFuc2Zvcm0tPmJhc2VWYWwoKS0+
cGFyc2UodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmgKaW5kZXggOGQ4NTdkM2FhODhmMTFjOWYxMGVlNDJhMjgxN2Y4
YzBjZmIwYjgyMC4uMjkwOGE3ZWJkODQwYzVlOTVlMGNhYTllMzU1NTc4MWVjNzM1NGM3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaApAQCAtMjIsNyArMjIsNiBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJHcmFkaWVudC5oIgotI2luY2x1ZGUgIlNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAg
LTkwLDE5ICs4OSwxNiBAQCBwdWJsaWM6CiAKICAgICBTVkdTcHJlYWRNZXRob2RUeXBlIHNwcmVh
ZE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9kLT5jdXJyZW50VmFsdWU8U1ZH
U3ByZWFkTWV0aG9kVHlwZT4oKTsgfQogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3Jh
ZGllbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRVbml0cy0+Y3VycmVudFZhbHVl
PFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0KLSAgICBjb25zdCBTVkdUcmFuc2Zvcm1M
aXN0VmFsdWVzJiBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRU
cmFuc2Zvcm0uY3VycmVudFZhbHVlKGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBjb25z
dCBTVkdUcmFuc2Zvcm1MaXN0JiBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z3JhZGllbnRUcmFuc2Zvcm0tPmN1cnJlbnRWYWx1ZSgpOyB9CiAKICAgICBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uJiBzcHJlYWRNZXRob2RBbmltYXRlZCgpIHsgcmV0dXJuIG1fc3ByZWFkTWV0aG9k
OyB9CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgZ3JhZGllbnRVbml0c0FuaW1hdGVkKCkg
eyByZXR1cm4gbV9ncmFkaWVudFVuaXRzOyB9Ci0gICAgUmVmUHRyPFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdD4gZ3JhZGllbnRUcmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fZ3JhZGllbnRU
cmFuc2Zvcm0uYW5pbWF0ZWRQcm9wZXJ0eShhdHRyaWJ1dGVPd25lclByb3h5KCkpOyB9CisgICAg
U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0JiBncmFkaWVudFRyYW5zZm9ybUFuaW1hdGVkKCkgeyBy
ZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHR3JhZGll
bnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgc3RhdGlj
IGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9CisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CiAKICAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwpAQCAtMTEyLDE1ICsxMDgsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCiAgICAgY29uc3Qg
U1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQotICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyQXR0cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJv
cGVydHlSZWdpc3RyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3Ry
eTsgfQogCiAgICAgQXR0cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAq
dGhpcyB9OwogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9zcHJlYWRNZXRob2QgeyBTVkdB
bmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHU3ByZWFkTWV0aG9kUGFkKSB9Owog
ICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX2dyYWRpZW50VW5pdHMgeyBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBF
X09CSkVDVEJPVU5ESU5HQk9YKSB9OwotICAgIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEF0dHJp
YnV0ZSBtX2dyYWRpZW50VHJhbnNmb3JtOworICAgIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3Q+IG1fZ3JhZGllbnRUcmFuc2Zvcm0geyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q6OmNyZWF0
ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBjNTk2MzZjZjc5MjBhYzhjMTEyN2YyY2Zh
Zjc5YmE3ZmMxYzcxYzJmLi5mNzJlMTRiMTQwMmU1MmQ3OTQyNDRiN2I0NmJkYzUyZTQ5YTU3ZTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtNDIsNyAr
NDIsMTAgQEAgU1ZHR3JhcGhpY3NFbGVtZW50OjpTVkdHcmFwaGljc0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGQKICAgICAsIFNWR1Rlc3RzKHRoaXMpCiAg
ICAgLCBtX3Nob3VsZElzb2xhdGVCbGVuZGluZyhmYWxzZSkKIHsKLSAgICByZWdpc3RlckF0dHJp
YnV0ZXMoKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0
ZXJQcm9wZXJ0eTxTVkdOYW1lczo6dHJhbnNmb3JtQXR0ciwgJlNWR0dyYXBoaWNzRWxlbWVudDo6
bV90cmFuc2Zvcm0+KCk7CisgICAgfSk7CiB9CiAKIFNWR0dyYXBoaWNzRWxlbWVudDo6flNWR0dy
YXBoaWNzRWxlbWVudCgpID0gZGVmYXVsdDsKQEAgLTEwNiw3ICsxMDksNyBAQCBBZmZpbmVUcmFu
c2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QK
ICAgICAgICAgfQogCiAgICAgfSBlbHNlCi0gICAgICAgIHRyYW5zZm9ybSgpLmNvbmNhdGVuYXRl
KG1hdHJpeCk7CisgICAgICAgIG1hdHJpeCA9IHRyYW5zZm9ybSgpLmNvbmNhdGVuYXRlKCk7CiAK
ICAgICBpZiAobV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiAqbV9zdXBw
bGVtZW50YWxUcmFuc2Zvcm0gKiBtYXRyaXg7CkBAIC0xMjAsMjEgKzEyMywxMCBAQCBBZmZpbmVU
cmFuc2Zvcm0qIFNWR0dyYXBoaWNzRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkKICAg
ICByZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9CiAKLXZvaWQgU1ZHR3Jh
cGhpY3NFbGVtZW50OjpyZWdpc3RlckF0dHJpYnV0ZXMoKQotewotICAgIGF1dG8mIHJlZ2lzdHJ5
ID0gYXR0cmlidXRlUmVnaXN0cnkoKTsKLSAgICBpZiAoIXJlZ2lzdHJ5LmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyQXR0cmlidXRlPFNWR05hbWVzOjp0
cmFuc2Zvcm1BdHRyLCAmU1ZHR3JhcGhpY3NFbGVtZW50OjptX3RyYW5zZm9ybT4oKTsKLX0KLQog
dm9pZCBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKLSAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVl
cyBuZXdMaXN0OwotICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlKTsKLSAgICAgICAgbV90cmFu
c2Zvcm0uZGV0YWNoQW5pbWF0ZWRMaXN0V3JhcHBlcnMoYXR0cmlidXRlT3duZXJQcm94eSgpLCBu
ZXdMaXN0LnNpemUoKSk7Ci0gICAgICAgIG1fdHJhbnNmb3JtLnNldFZhbHVlKG5ld0xpc3QpOwor
ICAgICAgICBtX3RyYW5zZm9ybS0+YmFzZVZhbCgpLT5wYXJzZSh2YWx1ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE0NCwxOCArMTM2LDE1IEBAIHZvaWQgU1ZHR3JhcGhpY3NFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTCiAKIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChpc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgeworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikg
ewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAotICAg
ICAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1V
cGRhdGUoKTsKICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBTVkdFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuaAppbmRleCA1M2FhZmFkZTM2ZmZmYjkzOTBlNTc2NjM4YzY4YWVkZDQwMDMy
NTg4Li41ZDVmNGJhMjM1MTgxNjg2MTMwMTIxMzA5ODE2ZTNlZmQxOWUwZWZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCiAjaW5jbHVkZSAiU1ZHVHJh
bnNmb3JtYWJsZS5oIgpAQCAtNjgsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdXNpbmcg
UHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeTxTVkdHcmFwaGljc0Vs
ZW1lbnQsIFNWR0VsZW1lbnQsIFNWR1Rlc3RzPjsKIAotICAgIGNvbnN0IGF1dG8mIHRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25l
clByb3h5KCkpOyB9Ci0gICAgYXV0byB0cmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fdHJh
bnNmb3JtLmFuaW1hdGVkUHJvcGVydHkoYXR0cmlidXRlT3duZXJQcm94eSgpKTsgfQorICAgIGNv
bnN0IFNWR1RyYW5zZm9ybUxpc3QmIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNm
b3JtLT5jdXJyZW50VmFsdWUoKTsgfQorICAgIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCYgdHJh
bnNmb3JtQW5pbWF0ZWQoKSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgU1ZHR3JhcGhpY3NFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpA
QCAtODMsMTUgKzgyLDggQEAgcHJpdmF0ZToKICAgICBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgY29uc3QgU1ZHQXR0cmli
dXRlT3duZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fYXR0cmlidXRlT3duZXJQcm94eTsgfQotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0
cmlidXRlcygpOwotCiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdp
c3RyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0g
ICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwgUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KICAgICAvLyBVc2VkIGJ5IDxhbmlt
YXRlTW90aW9uPgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fc3VwcGxl
bWVudGFsVHJhbnNmb3JtOwogCkBAIC0xMDAsNyArOTIsNyBAQCBwcml2YXRlOgogCiAgICAgQXR0
cmlidXRlT3duZXJQcm94eSBtX2F0dHJpYnV0ZU93bmVyUHJveHkgeyAqdGhpcyB9OwogICAgIFBy
b3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBTVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUgbV90cmFuc2Zvcm07CisgICAgUmVmPFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdD4gbV90cmFuc2Zvcm0geyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q6
OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGFuZ1NwYWNlLmNwcAppbmRleCA4YjlkODBkZjZmNTkyNzE0YzE4YjA5ODU3NGUzYWJj
YWJlNWE4NWM5Li45MjYxNzVhMjM0NWY1NDFmNDAxYWMxNGMxNTk4MGQ1OTllYjBiZDA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMzLDI1ICszMywyMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTVkdMYW5nU3BhY2U6OlNWR0xhbmdTcGFjZShTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCkKICAgICA6IG1fY29udGV4dEVsZW1lbnQoKmNvbnRleHRFbGVt
ZW50KQogewotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwogfQogCi12b2lkIFNWR0xhbmdTcGFj
ZTo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKK2NvbnN0IEF0b21pY1N0cmluZyYgU1ZHTGFuZ1NwYWNl
Ojp4bWxzcGFjZSgpIGNvbnN0CiB7Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdp
c3RyeSgpOwotICAgIGlmICghcmVnaXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHU3RyaW5nQXR0cmlidXRlQWNjZXNzb3I6
OnNpbmdsZXRvbjxYTUxOYW1lczo6bGFuZ0F0dHIsICZTVkdMYW5nU3BhY2U6Om1fbGFuZz4oKSk7
Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHU3RyaW5nQXR0cmlidXRlQWNjZXNz
b3I6OnNpbmdsZXRvbjxYTUxOYW1lczo6c3BhY2VBdHRyLCAmU1ZHTGFuZ1NwYWNlOjptX3NwYWNl
PigpKTsKLX0KLQotY29uc3QgU3RyaW5nJiBTVkdMYW5nU3BhY2U6OnhtbHNwYWNlKCkgY29uc3QK
LXsKLSAgICBpZiAoIW1fc3BhY2UudmFsdWUoKSkgewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBkZWZhdWx0U3RyaW5nKCJkZWZhdWx0Iik7CisgICAgaWYgKCFtX3NwYWNl
KSB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGRl
ZmF1bHRTdHJpbmcoImRlZmF1bHQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHJpbmc7CiAgICAgfQotICAgIHJldHVybiBtX3Nw
YWNlLnZhbHVlKCk7CisgICAgcmV0dXJuIG1fc3BhY2U7Cit9CisgICAgCitib29sIFNWR0xhbmdT
cGFjZTo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1l
KQoreworICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRy
KSB8fCBhdHRyaWJ1dGVOYW1lLm1hdGNoZXMoWE1MTmFtZXM6OnNwYWNlQXR0cik7CiB9CiAKIHZv
aWQgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpAQCAtNjIsOSArNTcsOSBAQCB2b2lkIFNWR0xh
bmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJgogICAgICAgICBzZXRYbWxzcGFjZSh2YWx1ZSk7CiB9CiAKLXZvaWQgU1ZH
TGFuZ1NwYWNlOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQordm9pZCBTVkdMYW5nU3BhY2U6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKLSAgICBpZiAoIWlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKQorICAgIGlmICghaXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byogcmVuZGVyZXIgPSBtX2NvbnRleHRFbGVtZW50LnJlbmRl
cmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmgKaW5kZXggODc3NTgyMjIyMWU5Y2MyZGUx
ZTJiNmE2YTAwNTVjZGM0YmFjMDNjNC4uNGVmZjdmYjM0NGQ1MTc1ODE1YTNlMWQzYjJlMjA4OTFk
YTRmNmMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuaApAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDcg
KzIyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgotI2lu
Y2x1ZGUgIlNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzEsMzIgKzMwLDI1IEBAIGNsYXNzIFNW
R0VsZW1lbnQ7CiAKIGNsYXNzIFNWR0xhbmdTcGFjZSB7CiBwdWJsaWM6Ci0gICAgY29uc3QgU3Ry
aW5nJiB4bWxsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYW5nLnZhbHVlKCk7IH0KLSAgICB2b2lk
IHNldFhtbGxhbmcoY29uc3QgQXRvbWljU3RyaW5nJiB4bWxMYW5nKSB7IG1fbGFuZy5zZXRWYWx1
ZSh4bWxMYW5nKTsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sbGFuZygpIGNvbnN0IHsg
cmV0dXJuIG1fbGFuZzsgfQorICAgIHZvaWQgc2V0WG1sbGFuZyhjb25zdCBBdG9taWNTdHJpbmcm
IHhtbExhbmcpIHsgbV9sYW5nID0geG1sTGFuZzsgfQogCi0gICAgY29uc3QgU3RyaW5nJiB4bWxz
cGFjZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0WG1sc3BhY2UoY29uc3QgQXRvbWljU3RyaW5nJiB4
bWxTcGFjZSkgeyBtX3NwYWNlLnNldFZhbHVlKHhtbFNwYWNlKTsgfQorICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgeG1sc3BhY2UoKSBjb25zdDsKKyAgICB2b2lkIHNldFhtbHNwYWNlKGNvbnN0IEF0
b21pY1N0cmluZyYgeG1sU3BhY2UpIHsgbV9zcGFjZSA9IHhtbFNwYWNlOyB9CiAKICAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KTsKIAogICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKLSAgICB1c2luZyBBdHRyaWJ1dGVPd25lclByb3h5ID0gU1ZHQXR0cmlidXRlT3duZXJQcm94
eUltcGw8U1ZHTGFuZ1NwYWNlPjsKLSAgICB1c2luZyBBdHRyaWJ1dGVSZWdpc3RyeSA9IFNWR0F0
dHJpYnV0ZVJlZ2lzdHJ5PFNWR0xhbmdTcGFjZT47Ci0gICAgc3RhdGljIGF1dG8mIGF0dHJpYnV0
ZVJlZ2lzdHJ5KCkgeyByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6YXR0cmlidXRlUmVnaXN0
cnkoKTsgfQotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkgeyByZXR1cm4gYXR0cmlidXRlUmVnaXN0cnkoKS5pc0tub3du
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKIHByb3RlY3RlZDoKICAgICBTVkdMYW5nU3Bh
Y2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwogCiBwcml2YXRlOgotICAgIHVzaW5nIFNW
R1N0cmluZ0F0dHJpYnV0ZSA9IFNWR1Byb3BlcnR5QXR0cmlidXRlPFN0cmluZz47Ci0gICAgdXNp
bmcgU1ZHU3RyaW5nQXR0cmlidXRlQWNjZXNzb3IgPSBTVkdQcm9wZXJ0eUF0dHJpYnV0ZUFjY2Vz
c29yPFNWR0xhbmdTcGFjZSwgU1ZHU3RyaW5nQXR0cmlidXRlPjsKLSAgICBzdGF0aWMgdm9pZCBy
ZWdpc3RlckF0dHJpYnV0ZXMoKTsKLQogICAgIFNWR0VsZW1lbnQmIG1fY29udGV4dEVsZW1lbnQ7
Ci0gICAgU1ZHU3RyaW5nQXR0cmlidXRlIG1fbGFuZzsKLSAgICBTVkdTdHJpbmdBdHRyaWJ1dGUg
bV9zcGFjZTsKKyAgICBBdG9taWNTdHJpbmcgbV9sYW5nOworICAgIEF0b21pY1N0cmluZyBtX3Nw
YWNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2I0OTJmODg3MWUyZWNiMWU3NDc5M2Ix
NmRmOTJhNWMxNjlhZmRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250
cm9sbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIlNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKLQot
I2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNl
ci5oIgotI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRlRWxl
bWVudEJhc2UuaCIKLSNpbmNsdWRlICJTVkdBbmltYXRpb25FbGVtZW50LmgiCi0jaW5jbHVkZSAi
U1ZHQW5pbWF0b3JGYWN0b3J5LmgiCi0jaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgotI2luY2x1ZGUg
IlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCi0jaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1TVkdMZWdhY3lB
dHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyOjpTVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25D
b250cm9sbGVyKFNWR0FuaW1hdGlvbkVsZW1lbnQmIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1l
bnQmIHRhcmdldEVsZW1lbnQpCi0gICAgOiBTVkdBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVy
QmFzZShhbmltYXRpb25FbGVtZW50LCB0YXJnZXRFbGVtZW50KQotICAgICwgbV9hbmltYXRlZFBy
b3BlcnR5VHlwZShkZXRlcm1pbmVBbmltYXRlZFByb3BlcnR5VHlwZShhbmltYXRpb25FbGVtZW50
LCB0YXJnZXRFbGVtZW50LCBhbmltYXRpb25FbGVtZW50LmF0dHJpYnV0ZU5hbWUoKSkpCi17Ci19
Ci0KLVNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yJiBTVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25D
b250cm9sbGVyOjphbmltYXRlZFR5cGVBbmltYXRvcigpCi17Ci0gICAgaWYgKCFtX2FuaW1hdG9y
KQotICAgICAgICBtX2FuaW1hdG9yID0gU1ZHQW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUoJm1fYW5p
bWF0aW9uRWxlbWVudCwgJm1fdGFyZ2V0RWxlbWVudCwgbV9hbmltYXRlZFByb3BlcnR5VHlwZSk7
Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0gbV9hbmltYXRvci0+dHlwZSgp
KTsKLSAgICByZXR1cm4gKm1fYW5pbWF0b3I7Ci19Ci0KLWJvb2wgU1ZHTGVnYWN5QXR0cmlidXRl
QW5pbWF0aW9uQ29udHJvbGxlcjo6aXNBZGRpdGl2ZSgpIGNvbnN0Ci17Ci0gICAgLy8gU3BlYzog
aHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2FuaW1hdGUuaHRtbCNBbmltYXRpb25BdHRyaWJ1dGVz
QW5kUHJvcGVydGllcy4KLSAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUpIHsKLSAg
ICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKLSAgICBjYXNlIEFuaW1hdGVkRW51bWVyYXRpb246Ci0g
ICAgY2FzZSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW86Ci0gICAgY2FzZSBBbmltYXRlZFN0
cmluZzoKLSAgICBjYXNlIEFuaW1hdGVkVW5rbm93bjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKLSAgICBjYXNlIEFuaW1hdGVkQ29sb3I6Ci0gICAgY2Fz
ZSBBbmltYXRlZEludGVnZXI6Ci0gICAgY2FzZSBBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVn
ZXI6Ci0gICAgY2FzZSBBbmltYXRlZExlbmd0aDoKLSAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoTGlz
dDoKLSAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgotICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0
OgotICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlcjoKLSAgICBjYXNlIEFuaW1h
dGVkUGF0aDoKLSAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgotICAgIGNhc2UgQW5pbWF0ZWRSZWN0
OgotICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OgotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wgU1ZHTGVnYWN5QXR0cmlidXRlQW5p
bWF0aW9uQ29udHJvbGxlcjo6aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFVua25vd247Ci19Ci0KLWJv
b2wgU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNEaXNjcmV0ZUFuaW1h
dG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBBbmlt
YXRlZEJvb2xlYW4KLSAgICAgICAgfHwgbV9hbmltYXRlZFByb3BlcnR5VHlwZSA9PSBBbmltYXRl
ZEVudW1lcmF0aW9uCi0gICAgICAgIHx8IG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0gQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvCi0gICAgICAgIHx8IG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUg
PT0gQW5pbWF0ZWRTdHJpbmc7Ci19Ci0KLWJvb2wgU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9u
Q29udHJvbGxlcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0
cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKLXsKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQu
ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKLSAgICBh
bmltYXRlZFR5cGVBbmltYXRvcigpLmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhtX2Zyb21UeXBl
LCBtX3RvVHlwZSwgZnJvbVN0cmluZywgdG9TdHJpbmcpOwotICAgIEFTU0VSVChtX2FuaW1hdGVk
UHJvcGVydHlUeXBlID09IG1fYW5pbWF0b3ItPnR5cGUoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6Y2FsY3VsYXRl
RnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBi
eVN0cmluZykKLXsKLSAgICBpZiAobV9hbmltYXRpb25FbGVtZW50LmFuaW1hdGlvbk1vZGUoKSA9
PSBBbmltYXRpb25Nb2RlOjpCeSAmJiAhaXNBZGRpdGl2ZSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAvLyBmcm9tLWJ5IGFuaW1hdGlvbiBtYXkgb25seSBiZSB1c2VkIHdpdGggYXR0
cmlidXRlcyB0aGF0IHN1cHBvcnQgYWRkaXRpb24gKGUuZy4gbW9zdCBudW1lcmljIGF0dHJpYnV0
ZXMpLgotICAgIGlmIChtX2FuaW1hdGlvbkVsZW1lbnQuYW5pbWF0aW9uTW9kZSgpID09IEFuaW1h
dGlvbk1vZGU6OkZyb21CeSAmJiAhaXNBZGRpdGl2ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQuZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZy
b21TdHJpbmcsIGJ5U3RyaW5nKTsKLSAgICBhbmltYXRlZFR5cGVBbmltYXRvcigpLmNhbGN1bGF0
ZUZyb21BbmRCeVZhbHVlcyhtX2Zyb21UeXBlLCBtX3RvVHlwZSwgZnJvbVN0cmluZywgYnlTdHJp
bmcpOwotICAgIEFTU0VSVChtX2FuaW1hdGVkUHJvcGVydHlUeXBlID09IG1fYW5pbWF0b3ItPnR5
cGUoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU1ZHTGVnYWN5QXR0cmlidXRlQW5p
bWF0aW9uQ29udHJvbGxlcjo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBT
dHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKQotewotICAgIGlmICh0b0F0RW5kT2ZEdXJh
dGlvblN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX3RvQXRF
bmRPZkR1cmF0aW9uVHlwZSA9IGFuaW1hdGVkVHlwZUFuaW1hdG9yKCkuY29uc3RydWN0RnJvbVN0
cmluZyh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNp
Zm5kZWYgTkRFQlVHCi1zdGF0aWMgaW5saW5lIGJvb2wgcHJvcGVydHlUeXBlc0FyZUNvbnNpc3Rl
bnQoQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgZXhwZWN0ZWRQcm9wZXJ0eVR5cGUsIGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKLXsKLSAgICBmb3IgKGF1
dG8mIHR5cGUgOiBhbmltYXRlZFR5cGVzKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcHJvcGVydHkg
OiB0eXBlLnByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGlmIChleHBlY3RlZFByb3BlcnR5VHlw
ZSAhPSBwcm9wZXJ0eS0+YW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSkgewotICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIG9ubHkgYWxsb3dlZCBpbmNvbnNpc3RlbmN5LiBTVkdBbmltYXRlZEFu
Z2xlQW5pbWF0b3IgaGFuZGxlcyBib3RoIFNWR0FuaW1hdGVkQW5nbGUgJiBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uIGZvciBtYXJrZXJzIG9yaWVudCBhdHRyaWJ1dGUuCi0gICAgICAgICAgICAgICAg
aWYgKGV4cGVjdGVkUHJvcGVydHlUeXBlID09IEFuaW1hdGVkQW5nbGUgJiYgcHJvcGVydHktPmFu
aW1hdGVkUHJvcGVydHlUeXBlKCkgPT0gQW5pbWF0ZWRFbnVtZXJhdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5k
aWYKLQotdm9pZCBTVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyOjpyZXNldEFu
aW1hdGVkVHlwZSgpCi17Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3ImIGFuaW1hdG9yID0g
YW5pbWF0ZWRUeXBlQW5pbWF0b3IoKTsKLSAgICBBU1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlw
ZSA9PSBhbmltYXRvci50eXBlKCkpOwotCi0gICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSA9IG1fYW5pbWF0aW9uRWxlbWVudC5hdHRyaWJ1dGVOYW1lKCk7Ci0gICAgU1ZHQW5p
bWF0aW9uRWxlbWVudDo6U2hvdWxkQXBwbHlBbmltYXRpb24gc2hvdWxkQXBwbHkgPSBtX2FuaW1h
dGlvbkVsZW1lbnQuc2hvdWxkQXBwbHlBbmltYXRpb24oJm1fdGFyZ2V0RWxlbWVudCwgYXR0cmli
dXRlTmFtZSk7Ci0KLSAgICBpZiAoc2hvdWxkQXBwbHkgPT0gU1ZHQW5pbWF0aW9uRWxlbWVudDo6
RG9udEFwcGx5QW5pbWF0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc2hvdWxkQXBw
bHkgPT0gU1ZHQW5pbWF0aW9uRWxlbWVudDo6QXBwbHlYTUxBbmltYXRpb24gfHwgc2hvdWxkQXBw
bHkgPT0gU1ZHQW5pbWF0aW9uRWxlbWVudDo6QXBwbHlYTUxhbmRDU1NBbmltYXRpb24pIHsKLSAg
ICAgICAgLy8gU1ZHIERPTSBhbmltVmFsIGFuaW1hdGlvbiBjb2RlLXBhdGguCi0gICAgICAgIG1f
YW5pbWF0ZWRQcm9wZXJ0aWVzID0gYW5pbWF0b3IuZmluZEFuaW1hdGVkUHJvcGVydGllc0ZvckF0
dHJpYnV0ZU5hbWUobV90YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKTsKLSAgICAgICAgaWYg
KG1fYW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBBU1NFUlQocHJvcGVydHlUeXBlc0FyZUNvbnNpc3RlbnQobV9hbmltYXRlZFByb3Bl
cnR5VHlwZSwgbV9hbmltYXRlZFByb3BlcnRpZXMpKTsKLSAgICAgICAgaWYgKCFtX2FuaW1hdGVk
VHlwZSkKLSAgICAgICAgICAgIG1fYW5pbWF0ZWRUeXBlID0gYW5pbWF0b3Iuc3RhcnRBbmltVmFs
QW5pbWF0aW9uKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBhbmltYXRvci5yZXNldEFuaW1WYWxUb0Jhc2VWYWwobV9hbmltYXRlZFByb3BlcnRpZXMs
ICptX2FuaW1hdGVkVHlwZSk7Ci0gICAgICAgICAgICBhbmltYXRvci5hbmltVmFsRGlkQ2hhbmdl
KG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gQ1NTIHByb3BlcnRpZXMgYW5pbWF0aW9uIGNvZGUtcGF0aC4KLSAgICBBU1NF
UlQobV9hbmltYXRlZFByb3BlcnRpZXMuaXNFbXB0eSgpKTsKLSAgICBTdHJpbmcgYmFzZVZhbHVl
OwotCi0gICAgaWYgKHNob3VsZEFwcGx5ID09IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OkFwcGx5Q1NT
QW5pbWF0aW9uKSB7Ci0gICAgICAgIEFTU0VSVChTVkdBbmltYXRpb25FbGVtZW50Ojppc1Rhcmdl
dEF0dHJpYnV0ZUNTU1Byb3BlcnR5KCZtX3RhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpKTsK
LSAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LmNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlKCZtX3Rh
cmdldEVsZW1lbnQsIGNzc1Byb3BlcnR5SUQoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSksIGJh
c2VWYWx1ZSk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2FuaW1hdGVkVHlwZSkKLSAgICAgICAgbV9h
bmltYXRlZFR5cGUgPSBhbmltYXRvci5jb25zdHJ1Y3RGcm9tU3RyaW5nKGJhc2VWYWx1ZSk7Ci0g
ICAgZWxzZQotICAgICAgICBtX2FuaW1hdGVkVHlwZS0+c2V0VmFsdWVBc1N0cmluZyhhdHRyaWJ1
dGVOYW1lLCBiYXNlVmFsdWUpOwotfQotCi12b2lkIFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlv
bkNvbnRyb2xsZXI6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5z
aWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KQotewotICAg
IEFTU0VSVChyZXN1bHRFbGVtZW50KTsKLQotICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUgPSBtX2FuaW1hdGlvbkVsZW1lbnQuYXR0cmlidXRlTmFtZSgpOwotICAgIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ6OlNob3VsZEFwcGx5QW5pbWF0aW9uIHNob3VsZEFwcGx5ID0gbV9hbmlt
YXRpb25FbGVtZW50LnNob3VsZEFwcGx5QW5pbWF0aW9uKCZtX3RhcmdldEVsZW1lbnQsIGF0dHJp
YnV0ZU5hbWUpOwotICAgIAotICAgIGlmIChzaG91bGRBcHBseSA9PSBTVkdBbmltYXRpb25FbGVt
ZW50OjpEb250QXBwbHlBbmltYXRpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCht
X2FuaW1hdGVkUHJvcGVydHlUeXBlID09IGRldGVybWluZUFuaW1hdGVkUHJvcGVydHlUeXBlKG1f
YW5pbWF0aW9uRWxlbWVudCwgbV90YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7Ci0KLSAg
ICBBU1NFUlQocGVyY2VudGFnZSA+PSAwICYmIHBlcmNlbnRhZ2UgPD0gMSk7Ci0gICAgQVNTRVJU
KG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHx8IG1fYW5p
bWF0aW9uRWxlbWVudC5oYXNUYWdOYW1lKFNWR05hbWVzOjphbmltYXRlVHJhbnNmb3JtVGFnKSk7
Ci0gICAgQVNTRVJUKG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgIT0gQW5pbWF0ZWRVbmtub3duKTsK
LSAgICBBU1NFUlQobV9hbmltYXRvcik7Ci0gICAgQVNTRVJUKG1fYW5pbWF0b3ItPnR5cGUoKSA9
PSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKTsKLSAgICBBU1NFUlQobV9mcm9tVHlwZSk7Ci0gICAg
QVNTRVJUKG1fZnJvbVR5cGUtPnR5cGUoKSA9PSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlKTsKLSAg
ICBBU1NFUlQobV90b1R5cGUpOwotCi0gICAgaWYgKHNob3VsZEFwcGx5ID09IFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OkFwcGx5WE1MQW5pbWF0aW9uIHx8IHNob3VsZEFwcGx5ID09IFNWR0FuaW1hdGlv
bkVsZW1lbnQ6OkFwcGx5WE1MYW5kQ1NTQW5pbWF0aW9uKSB7Ci0gICAgICAgIC8vIFNWRyBET00g
YW5pbVZhbCBhbmltYXRpb24gY29kZS1wYXRoLgotICAgICAgICBpZiAobV9hbmltYXRvci0+Zmlu
ZEFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0ZU5hbWUobV90YXJnZXRFbGVtZW50LCBhdHRy
aWJ1dGVOYW1lKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlJiByZXN1bHRBbmltYXRpb25FbGVtZW50ID0gZG93bmNhc3Q8
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlPigqcmVzdWx0RWxlbWVudCk7Ci0gICAgU1ZHTGVnYWN5QXR0
cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlciYgcmVzdWx0QW5pbWF0aW9uQ29udHJvbGxlciA9IHN0
YXRpY19jYXN0PFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXImPihyZXN1bHRB
bmltYXRpb25FbGVtZW50LmF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xsZXIoKSk7Ci0gICAgCi0g
ICAgQVNTRVJUKHJlc3VsdEFuaW1hdGlvbkNvbnRyb2xsZXIubV9hbmltYXRlZFR5cGUpOwotICAg
IEFTU0VSVChyZXN1bHRBbmltYXRpb25Db250cm9sbGVyLm1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUg
PT0gbV9hbmltYXRlZFByb3BlcnR5VHlwZSk7Ci0KLSAgICBpZiAobV9hbmltYXRpb25FbGVtZW50
Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykpCi0gICAgICAgIHBlcmNlbnRhZ2UgPSAxOwot
Ci0gICAgaWYgKG1fYW5pbWF0aW9uRWxlbWVudC5jYWxjTW9kZSgpID09IENhbGNNb2RlOjpEaXNj
cmV0ZSkKLSAgICAgICAgcGVyY2VudGFnZSA9IHBlcmNlbnRhZ2UgPCAwLjUgPyAwIDogMTsKLQot
ICAgIC8vIFRhcmdldCBlbGVtZW50IG1pZ2h0IGhhdmUgY2hhbmdlZC4KLSAgICBtX2FuaW1hdG9y
LT5zZXRDb250ZXh0RWxlbWVudCgmbV90YXJnZXRFbGVtZW50KTsKLQotICAgIC8vIEJlIHN1cmUg
dG8gZGV0YWNoIGxpc3Qgd3JhcHBlcnMgYmVmb3JlIHdlIG1vZGZpeSB0aGVpciB1bmRlcmx5aW5n
IHZhbHVlLiBJZiB3ZSdkIGRvCi0gICAgLy8gaWYgYWZ0ZXIgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZSgpIHJhbiB0aGUgY2FjaGVkIHBvaW50ZXJzIGluIHRoZSBsaXN0IHByb3BlcnkgdGVhcgotICAg
IC8vIG9mZnMgd291bGQgcG9pbnQgbm93aGVyZSwgYW5kIHdlIGNvdWxkbid0IGNyZWF0ZSBjb3Bp
ZXMgb2YgdGhvc2UgdmFsdWVzIGFueW1vcmUsCi0gICAgLy8gd2hpbGUgZGV0YWNoaW5nLiBUaGlz
IGlzIGNvdmVyZWQgYnkgYXNzZXJ0aW9ucywgbW92aW5nIHRoaXMgZG93biB3b3VsZCBmaXJlIHRo
ZW0uCi0gICAgaWYgKCFtX2FuaW1hdGVkUHJvcGVydGllcy5pc0VtcHR5KCkpCi0gICAgICAgIG1f
YW5pbWF0b3ItPmFuaW1WYWxXaWxsQ2hhbmdlKG1fYW5pbWF0ZWRQcm9wZXJ0aWVzKTsKLQotICAg
IC8vIFZhbHVlcy1hbmltYXRpb24gYWNjdW11bGF0ZXMgdXNpbmcgdGhlIGxhc3QgdmFsdWVzIGVu
dHJ5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVuZCBvZiBkdXJhdGlvbiB0aW1lLgotICAgIFNWR0Fu
aW1hdGVkVHlwZSogdG9BdEVuZE9mRHVyYXRpb25UeXBlID0gbV90b0F0RW5kT2ZEdXJhdGlvblR5
cGUgPyBtX3RvQXRFbmRPZkR1cmF0aW9uVHlwZS5nZXQoKSA6IG1fdG9UeXBlLmdldCgpOwotICAg
IG1fYW5pbWF0b3ItPmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUocGVyY2VudGFnZSwgcmVwZWF0Q291
bnQsIG1fZnJvbVR5cGUuZ2V0KCksIG1fdG9UeXBlLmdldCgpLCB0b0F0RW5kT2ZEdXJhdGlvblR5
cGUsIHJlc3VsdEFuaW1hdGlvbkNvbnRyb2xsZXIubV9hbmltYXRlZFR5cGUuZ2V0KCkpOwotfQot
Ci1zdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlDU1NQcm9wZXJ0eVRvVGFyZ2V0KFNWR0VsZW1lbnQm
IHRhcmdldEVsZW1lbnQsIENTU1Byb3BlcnR5SUQgaWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi17
Ci0gICAgQVNTRVJUKCF0YXJnZXRFbGVtZW50Lm1fZGVsZXRpb25IYXNCZWd1bik7Ci0KLSAgICBp
ZiAoIXRhcmdldEVsZW1lbnQuZW5zdXJlQW5pbWF0ZWRTTUlMU3R5bGVQcm9wZXJ0aWVzKCkuc2V0
UHJvcGVydHkoaWQsIHZhbHVlLCBmYWxzZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHRhcmdl
dEVsZW1lbnQuaW52YWxpZGF0ZVN0eWxlKCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCByZW1v
dmVDU1NQcm9wZXJ0eUZyb21UYXJnZXQoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCwgQ1NTUHJv
cGVydHlJRCBpZCkKLXsKLSAgICBBU1NFUlQoIXRhcmdldEVsZW1lbnQubV9kZWxldGlvbkhhc0Jl
Z3VuKTsKLSAgICB0YXJnZXRFbGVtZW50LmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGll
cygpLnJlbW92ZVByb3BlcnR5KGlkKTsKLSAgICB0YXJnZXRFbGVtZW50LmludmFsaWRhdGVTdHls
ZSgpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXBwbHlDU1NQcm9wZXJ0eVRvVGFyZ2V0QW5k
SW5zdGFuY2VzKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZykKLXsKLSAgICAvLyBG
SVhNRTogRG8gd2UgcmVhbGx5IG5lZWQgdG8gY2hlY2sgYm90aCBpc0Nvbm5lY3RlZCBhbmQgIXBh
cmVudE5vZGU/Ci0gICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gYW55UU5hbWUoKSB8fCAhdGFyZ2V0
RWxlbWVudC5pc0Nvbm5lY3RlZCgpIHx8ICF0YXJnZXRFbGVtZW50LnBhcmVudE5vZGUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJvcGVydHlJRCBpZCA9IGNzc1Byb3BlcnR5SUQoYXR0
cmlidXRlTmFtZS5sb2NhbE5hbWUoKSk7Ci0KLSAgICBTVkdFbGVtZW50OjpJbnN0YW5jZVVwZGF0
ZUJsb2NrZXIgYmxvY2tlcih0YXJnZXRFbGVtZW50KTsKLSAgICBhcHBseUNTU1Byb3BlcnR5VG9U
YXJnZXQodGFyZ2V0RWxlbWVudCwgaWQsIHZhbHVlQXNTdHJpbmcpOwotCi0gICAgLy8gSWYgdGhl
IHRhcmdldCBlbGVtZW50IGhhcyBpbnN0YW5jZXMsIHVwZGF0ZSB0aGVtIGFzIHdlbGwsIHcvbyBy
ZXF1aXJpbmcgdGhlIDx1c2U+IHRyZWUgdG8gYmUgcmVidWlsdC4KLSAgICBmb3IgKGF1dG8qIGlu
c3RhbmNlIDogdGFyZ2V0RWxlbWVudC5pbnN0YW5jZXMoKSkKLSAgICAgICAgYXBwbHlDU1NQcm9w
ZXJ0eVRvVGFyZ2V0KCppbnN0YW5jZSwgaWQsIHZhbHVlQXNTdHJpbmcpOwotfQotCi1zdGF0aWMg
aW5saW5lIHZvaWQgcmVtb3ZlQ1NTUHJvcGVydHlGcm9tVGFyZ2V0QW5kSW5zdGFuY2VzKFNWR0Vs
ZW1lbnQmIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
Ci17Ci0gICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBuZWVkIHRvIGNoZWNrIGJvdGggaXNDb25u
ZWN0ZWQgYW5kICFwYXJlbnROb2RlPwotICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IGFueVFOYW1l
KCkgfHwgIXRhcmdldEVsZW1lbnQuaXNDb25uZWN0ZWQoKSB8fCAhdGFyZ2V0RWxlbWVudC5wYXJl
bnROb2RlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1Byb3BlcnR5SUQgaWQgPSBjc3NQ
cm9wZXJ0eUlEKGF0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpOwotCi0gICAgU1ZHRWxlbWVudDo6
SW5zdGFuY2VVcGRhdGVCbG9ja2VyIGJsb2NrZXIodGFyZ2V0RWxlbWVudCk7Ci0gICAgcmVtb3Zl
Q1NTUHJvcGVydHlGcm9tVGFyZ2V0KHRhcmdldEVsZW1lbnQsIGlkKTsKLQotICAgIC8vIElmIHRo
ZSB0YXJnZXQgZWxlbWVudCBoYXMgaW5zdGFuY2VzLCB1cGRhdGUgdGhlbSBhcyB3ZWxsLCB3L28g
cmVxdWlyaW5nIHRoZSA8dXNlPiB0cmVlIHRvIGJlIHJlYnVpbHQuCi0gICAgZm9yIChhdXRvKiBp
bnN0YW5jZSA6IHRhcmdldEVsZW1lbnQuaW5zdGFuY2VzKCkpCi0gICAgICAgIHJlbW92ZUNTU1By
b3BlcnR5RnJvbVRhcmdldCgqaW5zdGFuY2UsIGlkKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lk
IG5vdGlmeVRhcmdldEFib3V0QW5pbVZhbENoYW5nZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotewotICAgIEFTU0VSVCghdGFy
Z2V0RWxlbWVudC5tX2RlbGV0aW9uSGFzQmVndW4pOwotICAgIHRhcmdldEVsZW1lbnQuc3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVOYW1lKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIG5v
dGlmeVRhcmdldEFuZEluc3RhbmNlc0Fib3V0QW5pbVZhbENoYW5nZShTVkdFbGVtZW50JiB0YXJn
ZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotewotICAgIGlm
IChhdHRyaWJ1dGVOYW1lID09IGFueVFOYW1lKCkgfHwgIXRhcmdldEVsZW1lbnQuaXNDb25uZWN0
ZWQoKSB8fCAhdGFyZ2V0RWxlbWVudC5wYXJlbnROb2RlKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFNWR0VsZW1lbnQ6Okluc3RhbmNlVXBkYXRlQmxvY2tlciBibG9ja2VyKHRhcmdldEVsZW1l
bnQpOwotICAgIG5vdGlmeVRhcmdldEFib3V0QW5pbVZhbENoYW5nZSh0YXJnZXRFbGVtZW50LCBh
dHRyaWJ1dGVOYW1lKTsKLQotICAgIC8vIElmIHRoZSB0YXJnZXQgZWxlbWVudCBoYXMgaW5zdGFu
Y2VzLCB1cGRhdGUgdGhlbSBhcyB3ZWxsLCB3L28gcmVxdWlyaW5nIHRoZSA8dXNlPiB0cmVlIHRv
IGJlIHJlYnVpbHQuCi0gICAgZm9yIChhdXRvKiBpbnN0YW5jZSA6IHRhcmdldEVsZW1lbnQuaW5z
dGFuY2VzKCkpCi0gICAgICAgIG5vdGlmeVRhcmdldEFib3V0QW5pbVZhbENoYW5nZSgqaW5zdGFu
Y2UsIGF0dHJpYnV0ZU5hbWUpOwotfQotCi12b2lkIFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlv
bkNvbnRyb2xsZXI6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKLXsKLSAgICBBU1NFUlQobV9hbmlt
YXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFRyYW5zZm9ybUxpc3QgfHwgbV9hbmltYXRpb25F
bGVtZW50Lmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmFuaW1hdGVUcmFuc2Zvcm1UYWcpKTsKLSAgICBB
U1NFUlQobV9hbmltYXRlZFByb3BlcnR5VHlwZSAhPSBBbmltYXRlZFVua25vd24pOwotICAgIEFT
U0VSVChtX2FuaW1hdG9yKTsKLQotICAgIC8vIEVhcmx5IGV4aXQgaWYgb3VyIGFuaW1hdGVkIHR5
cGUgZ290IGRlc3Ryb3llZCBieSBhIHByZXZpb3VzIGVuZGVkQWN0aXZlSW50ZXJ2YWwoKS4KLSAg
ICBpZiAoIW1fYW5pbWF0ZWRUeXBlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gbV9hbmltYXRpb25FbGVtZW50LmF0dHJpYnV0ZU5h
bWUoKTsKLQotICAgIGlmIChtX2FuaW1hdGVkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgLy8gQ1NTIHByb3BlcnRpZXMgYW5pbWF0aW9uIGNvZGUtcGF0aC4KLSAgICAgICAgLy8gQ29u
dmVydCB0aGUgcmVzdWx0IG9mIHRoZSBhbmltYXRpb24gdG8gYSBTdHJpbmcgYW5kIGFwcGx5IGl0
IGFzIENTUyBwcm9wZXJ0eSBvbiB0aGUgdGFyZ2V0ICYgYWxsIGluc3RhbmNlcy4KLSAgICAgICAg
YXBwbHlDU1NQcm9wZXJ0eVRvVGFyZ2V0QW5kSW5zdGFuY2VzKG1fdGFyZ2V0RWxlbWVudCwgYXR0
cmlidXRlTmFtZSwgbV9hbmltYXRlZFR5cGUtPnZhbHVlQXNTdHJpbmcoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICAvLyBXZSBkbyB1cGRhdGUgdGhlIHN0eWxlIGFuZCB0aGUgYW5p
bWF0aW9uIHByb3BlcnR5IGluZGVwZW5kZW50IG9mIGVhY2ggb3RoZXIuCi0gICAgU1ZHQW5pbWF0
aW9uRWxlbWVudDo6U2hvdWxkQXBwbHlBbmltYXRpb24gc2hvdWxkQXBwbHkgPSBtX2FuaW1hdGlv
bkVsZW1lbnQuc2hvdWxkQXBwbHlBbmltYXRpb24oJm1fdGFyZ2V0RWxlbWVudCwgYXR0cmlidXRl
TmFtZSk7Ci0gICAgaWYgKHNob3VsZEFwcGx5ID09IFNWR0FuaW1hdGlvbkVsZW1lbnQ6OkFwcGx5
WE1MYW5kQ1NTQW5pbWF0aW9uKQotICAgICAgICBhcHBseUNTU1Byb3BlcnR5VG9UYXJnZXRBbmRJ
bnN0YW5jZXMobV90YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBtX2FuaW1hdGVkVHlwZS0+
dmFsdWVBc1N0cmluZygpKTsKLQotICAgIC8vIFNWRyBET00gYW5pbVZhbCBhbmltYXRpb24gY29k
ZS1wYXRoLgotICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIFNWRyBET00gdmFsdWVzIGFyZSBhbHJl
YWR5IGNoYW5nZWQsIHVubGlrZSBmb3IgQ1NTLgotICAgIC8vIFdlIG9ubHkgaGF2ZSB0byB0cmln
Z2VyIHVwZGF0ZSBub3RpZmljYXRpb25zIGhlcmUuCi0gICAgbV9hbmltYXRvci0+YW5pbVZhbERp
ZENoYW5nZShtX2FuaW1hdGVkUHJvcGVydGllcyk7Ci0gICAgbm90aWZ5VGFyZ2V0QW5kSW5zdGFu
Y2VzQWJvdXRBbmltVmFsQ2hhbmdlKG1fdGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7Ci19
Ci0KLXZvaWQgU1ZHTGVnYWN5QXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlcjo6Y2xlYXJBbmlt
YXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkKLXsKLSAgICBpZiAoIW1fYW5pbWF0
ZWRUeXBlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiB0aGUgU1ZHQW5pbWF0ZWRUeXBl
IGlzIGEgbGlzdCB0eXBlLCBlLmcuIFNWR0xlbmd0aExpc3RWYWx1ZXMsIHRoZSB3cmFwcGVycyBv
ZiB0aGUKLSAgICAvLyBhbmltYXRlZCBwcm9wZXJ0aWVzIGhhdmUgdG8gYmUgZGV0YWNoZWQgZnJv
bSB0aGUgaXRlbXMgaW4gdGhlIGxpc3QgYmVmb3JlIGl0J3MgZGVsZXRlZC4KLSAgICBpZiAoIW1f
YW5pbWF0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9hbmltYXRvci0+YW5pbVZh
bFdpbGxDaGFuZ2UobV9hbmltYXRlZFByb3BlcnRpZXMpOwotCi0gICAgaWYgKCF0YXJnZXRFbGVt
ZW50KSB7Ci0gICAgICAgIG1fYW5pbWF0ZWRUeXBlID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUgPSBtX2Fu
aW1hdGlvbkVsZW1lbnQuYXR0cmlidXRlTmFtZSgpOwotCi0gICAgaWYgKG1fYW5pbWF0ZWRQcm9w
ZXJ0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBDU1MgcHJvcGVydGllcyBhbmltYXRpb24g
Y29kZS1wYXRoLgotICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eUZyb21UYXJnZXRBbmRJbnN0YW5j
ZXMoKnRhcmdldEVsZW1lbnQsIG1fYW5pbWF0aW9uRWxlbWVudC5hdHRyaWJ1dGVOYW1lKCkpOwot
ICAgICAgICBtX2FuaW1hdGVkVHlwZSA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBTVkdBbmltYXRpb25FbGVtZW50OjpTaG91bGRBcHBseUFuaW1hdGlvbiBzaG91bGRB
cHBseSA9IG1fYW5pbWF0aW9uRWxlbWVudC5zaG91bGRBcHBseUFuaW1hdGlvbih0YXJnZXRFbGVt
ZW50LCBhdHRyaWJ1dGVOYW1lKTsKLSAgICBpZiAoc2hvdWxkQXBwbHkgPT0gU1ZHQW5pbWF0aW9u
RWxlbWVudDo6QXBwbHlYTUxhbmRDU1NBbmltYXRpb24pCi0gICAgICAgIHJlbW92ZUNTU1Byb3Bl
cnR5RnJvbVRhcmdldEFuZEluc3RhbmNlcygqdGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7
Ci0KLSAgICAvLyBTVkcgRE9NIGFuaW1WYWwgYW5pbWF0aW9uIGNvZGUtcGF0aC4KLSAgICBpZiAo
bV9hbmltYXRvcikgewotICAgICAgICBtX2FuaW1hdG9yLT5zdG9wQW5pbVZhbEFuaW1hdGlvbiht
X2FuaW1hdGVkUHJvcGVydGllcyk7Ci0gICAgICAgIG5vdGlmeVRhcmdldEFuZEluc3RhbmNlc0Fi
b3V0QW5pbVZhbENoYW5nZSgqdGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSk7Ci0gICAgfQot
Ci0gICAgbV9hbmltYXRlZFByb3BlcnRpZXMuY2xlYXIoKTsKLSAgICBtX2FuaW1hdGVkVHlwZSA9
IG51bGxwdHI7Ci19Ci0KLWZsb2F0IFNWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xs
ZXI6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZykKLXsKLSAgICByZXR1cm4gYW5pbWF0ZWRUeXBlQW5pbWF0b3IoKS5jYWxj
dWxhdGVEaXN0YW5jZShmcm9tU3RyaW5nLCB0b1N0cmluZyk7Ci19Ci0KLX0KLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1hdGlvbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250
cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMjRkOTVhODljMmU5ZTk5
ZjAxYTIwODQyN2EzZGQ2NGIwZGNkMTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlZ2FjeUF0dHJpYnV0ZUFuaW1h
dGlvbkNvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yLmgiCi0jaW5jbHVkZSAiU1ZHQXR0cmlidXRlQW5pbWF0aW9uQ29udHJvbGxlckJh
c2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTVkdBbmltYXRpb25FbGVtZW50
OwotY2xhc3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNWR1NNSUxFbGVtZW50OwotCi1jbGFzcyBTVkdM
ZWdhY3lBdHRyaWJ1dGVBbmltYXRpb25Db250cm9sbGVyIDogcHVibGljIFNWR0F0dHJpYnV0ZUFu
aW1hdGlvbkNvbnRyb2xsZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBTVkdMZWdhY3lBdHRyaWJ1dGVB
bmltYXRpb25Db250cm9sbGVyKFNWR0FuaW1hdGlvbkVsZW1lbnQmLCBTVkdFbGVtZW50Jik7Ci0K
LXByaXZhdGU6Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3ImIGFuaW1hdGVkVHlwZUFuaW1h
dG9yKCk7Ci0KLSAgICB2b2lkIHJlc2V0QW5pbWF0ZWRUeXBlKCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGVhckFuaW1hdGVkVHlwZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZTsK
LSAgICAKLSAgICBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwotICAgIGJvb2wgY2Fs
Y3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiBieVN0cmluZykgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjYWxjdWxhdGVUb0F0RW5kT2ZEdXJh
dGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVu
c2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkgb3ZlcnJp
ZGU7Ci0KLSAgICB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkgb3ZlcnJpZGU7Ci0gICAgZmxv
YXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKLSAgICAKLSAgICBib29sIGlzQWRkaXRpdmUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBib29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIGJvb2wgaXNEaXNjcmV0ZUFuaW1hdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAg
ICBjb25zdCBBbmltYXRlZFByb3BlcnR5VHlwZSBtX2FuaW1hdGVkUHJvcGVydHlUeXBlOwotCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gbV9mcm9tVHlwZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3RvVHlwZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3RvQXRFbmRPZkR1cmF0aW9uVHlwZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX2FuaW1hdGVkVHlwZTsKLQotICAgIFNWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnR5TGlzdCBtX2FuaW1hdGVkUHJvcGVydGllczsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IG1fYW5pbWF0b3I7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuY3BwCmluZGV4IDcxYjk1ZTNjMjlhZmY3YjIyYzFkMThiYzhmNzQ3YzFmYjM2
YTE2NzUuLjBjOTgwODJjNDY3ODJjZTM1ZTc5ZTQyNzcxNTM0ZTg3YzgyMmI3ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xMDMs
MTEgKzEwMyw4IEBAIHN0YXRpYyB2b2lkIHNldEdyYWRpZW50QXR0cmlidXRlcyhTVkdHcmFkaWVu
dEVsZW1lbnQmIGVsZW1lbnQsIExpbmVhckdyYWRpZW50QXR0CiAgICAgaWYgKCFhdHRyaWJ1dGVz
Lmhhc0dyYWRpZW50VW5pdHMoKSAmJiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShTVkdOYW1lczo6Z3Jh
ZGllbnRVbml0c0F0dHIpKQogICAgICAgICBhdHRyaWJ1dGVzLnNldEdyYWRpZW50VW5pdHMoZWxl
bWVudC5ncmFkaWVudFVuaXRzKCkpOwogCi0gICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dyYWRpZW50
VHJhbnNmb3JtKCkgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJh
bnNmb3JtQXR0cikpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICAg
ICAgZWxlbWVudC5ncmFkaWVudFRyYW5zZm9ybSgpLmNvbmNhdGVuYXRlKHRyYW5zZm9ybSk7Ci0g
ICAgICAgIGF0dHJpYnV0ZXMuc2V0R3JhZGllbnRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAgICB9
CisgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc0dyYWRpZW50VHJhbnNmb3JtKCkgJiYgZWxlbWVudC5o
YXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikpCisgICAgICAgIGF0
dHJpYnV0ZXMuc2V0R3JhZGllbnRUcmFuc2Zvcm0oZWxlbWVudC5ncmFkaWVudFRyYW5zZm9ybSgp
LmNvbmNhdGVuYXRlKCkpOwogCiAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc1N0b3BzKCkpIHsKICAg
ICAgICAgY29uc3QgVmVjdG9yPEdyYWRpZW50OjpDb2xvclN0b3A+JiBzdG9wcyhlbGVtZW50LmJ1
aWxkU3RvcHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCmluZGV4IGFiMTc2MGIx
YTFmOGJiMmY2ZDAxNmFlOWJkODIwZTM2MmRlMzg4NWMuLjJlYTdlYjQwMTk3ZmZiNjEzMTkyOWVl
ZDY4OTFmODY0MjU3NGMyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNr
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCkBAIC01
MSwxOCArNTEsMTEgQEAgcHJpdmF0ZToKICAgICBTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEF0dHJpYnV0ZU93bmVyUHJveHkgPSBT
VkdBdHRyaWJ1dGVPd25lclByb3h5SW1wbDxTVkdNYXNrRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVGVzdHM+OwotICAgIHN0YXRpYyBBdHRyaWJ1
dGVPd25lclByb3h5OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJl
dHVybiBBdHRyaWJ1dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3du
ZXJQcm94eSYgYXR0cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0
cmlidXRlT3duZXJQcm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1By
b3BlcnR5T3duZXJSZWdpc3RyeTxTVkdNYXNrRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgU1ZHVGVzdHM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVn
aXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5
UmVnaXN0cnk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5Ojppc0tub3duQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHx8IFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgZmluYWw7CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBmaW5hbDsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5oCmluZGV4IDM0Yzc5ODJkNjBkMWE4ZmFhYzRm
YTY3ODQwMTc4NjllNWJmMTdmOTkuLjk5OWY2OGE4YWZjYTI0MzNjMWMzZjJhNDIzY2FjYzFjZjNj
MmQ1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmgKQEAgLTI2LDM2ICsyNiwzNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJTVkdQcm9w
ZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdWYWx1ZVByb3BlcnR5LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIG9uY2UgU1ZHTWF0cml4
IGJlY29tZXMgYW4gYWxpYXMgdG8gRE9NTWF0cml4LgotY2xhc3MgU1ZHTWF0cml4IDogcHVibGlj
IFNWR1Byb3BlcnR5VGVhck9mZjxBZmZpbmVUcmFuc2Zvcm0+IHsKLSAgICB1c2luZyBCYXNlID0g
U1ZHUHJvcGVydHlUZWFyT2ZmPEFmZmluZVRyYW5zZm9ybT47CitjbGFzcyBTVkdNYXRyaXggOiBw
dWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eTxBZmZpbmVUcmFuc2Zvcm0+IHsKKyAgICB1c2luZyBCYXNl
ID0gU1ZHVmFsdWVQcm9wZXJ0eTxBZmZpbmVUcmFuc2Zvcm0+OwogICAgIHVzaW5nIEJhc2U6OkJh
c2U7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR01hdHJpeD4gY3JlYXRlKFNWR0xlZ2Fj
eUFuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xl
LCBBZmZpbmVUcmFuc2Zvcm0mIHZhbHVlKQorICAgIHN0YXRpYyBSZWY8U1ZHTWF0cml4PiBjcmVh
dGUoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB2YWx1ZSA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR01hdHJpeCgmYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFs
dWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTWF0cml4KHZhbHVlKSk7CiAg
ICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdNYXRyaXg+IGNyZWF0ZShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIGluaXRpYWxWYWx1ZSA9IHsgfSkKKyAgICBzdGF0aWMgUmVmPFNWR01hdHJpeD4gY3Jl
YXRlKFNWR1Byb3BlcnR5T3duZXIqIG93bmVyLCBTVkdQcm9wZXJ0eUFjY2VzcyBhY2Nlc3MsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdmFsdWUgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdNYXRyaXgoaW5pdGlhbFZhbHVlKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNWR01hdHJpeChvd25lciwgYWNjZXNzLCB2YWx1ZSkpOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U1ZHTWF0cml4
Pj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFQ+JiYgaW5pdGlhbFZhbHVlKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTVkdNYXRyaXg+PiBjcmVhdGUo
RXhjZXB0aW9uT3I8VD4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmIChpbml0aWFsVmFsdWUu
aGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gaW5pdGlhbFZhbHVlLnJlbGVhc2VF
eGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShpbml0aWFsVmFsdWUucmVsZWFzZVJl
dHVyblZhbHVlKCkpOworICAgICAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICByZXR1cm4gdmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gY3Jl
YXRlKHZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICB9CiAKICAgICBkb3VibGUgYSgp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS5hKCk7Cisg
ICAgICAgIHJldHVybiBtX3ZhbHVlLmEoKTsKICAgICB9CiAKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRBKGRvdWJsZSB2YWx1ZSkKQEAgLTYzLDE1ICs2NCwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2Rp
ZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNl
dEEodmFsdWUpOworICAgICAgICBtX3ZhbHVlLnNldEEodmFsdWUpOwogICAgICAgICBjb21taXRD
aGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGRvdWJsZSBiKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0eVJlZmVyZW5jZSgpLmIoKTsKKyAg
ICAgICAgcmV0dXJuIG1fdmFsdWUuYigpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldEIoZG91YmxlIHZhbHVlKQpAQCAtNzksMTUgKzc5LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlm
aWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAgICAgIHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0
Qih2YWx1ZSk7CisgICAgICAgIG1fdmFsdWUuc2V0Qih2YWx1ZSk7CiAgICAgICAgIGNvbW1pdENo
YW5nZSgpOwotCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgZG91YmxlIGMoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkuYygpOworICAg
ICAgICByZXR1cm4gbV92YWx1ZS5jKCk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0Qyhkb3VibGUgdmFsdWUpCkBAIC05NSwxNSArOTQsMTQgQEAgcHVibGljOgogICAgICAgICBp
ZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZp
Y2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRD
KHZhbHVlKTsKKyAgICAgICAgbV92YWx1ZS5zZXRDKHZhbHVlKTsKICAgICAgICAgY29tbWl0Q2hh
bmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBkb3VibGUgZCgpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS5kKCk7CisgICAg
ICAgIHJldHVybiBtX3ZhbHVlLmQoKTsKICAgICB9CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXREKGRvdWJsZSB2YWx1ZSkKQEAgLTExMSwxNSArMTA5LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKGlzUmVhZE9ubHkoKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlm
aWNhdGlvbkFsbG93ZWRFcnJvciB9OwogCi0gICAgICAgIHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0
RCh2YWx1ZSk7CisgICAgICAgIG1fdmFsdWUuc2V0RCh2YWx1ZSk7CiAgICAgICAgIGNvbW1pdENo
YW5nZSgpOwotCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgZG91YmxlIGUoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkuZSgpOworICAg
ICAgICByZXR1cm4gbV92YWx1ZS5lKCk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0RShkb3VibGUgdmFsdWUpCkBAIC0xMjcsMTUgKzEyNCwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2Rp
ZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNl
dEUodmFsdWUpOworICAgICAgICBtX3ZhbHVlLnNldEUodmFsdWUpOwogICAgICAgICBjb21taXRD
aGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGRvdWJsZSBmKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0eVJlZmVyZW5jZSgpLmYoKTsKKyAg
ICAgICAgcmV0dXJuIG1fdmFsdWUuZigpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldEYoZG91YmxlIHZhbHVlKQpAQCAtMTQzLDUyICsxMzksNTAgQEAgcHVibGljOgogICAgICAg
ICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9k
aWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5z
ZXRGKHZhbHVlKTsKKyAgICAgICAgbV92YWx1ZS5zZXRGKHZhbHVlKTsKICAgICAgICAgY29tbWl0
Q2hhbmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBSZWY8U1ZHTWF0
cml4PiBtdWx0aXBseShTVkdNYXRyaXgmIHNlY29uZE1hdHJpeCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7Ci0gICAgICAgIGNvcHkubXVsdGlw
bHkoc2Vjb25kTWF0cml4LnByb3BlcnR5UmVmZXJlbmNlKCkpOworICAgICAgICBhdXRvIGNvcHkg
PSBtX3ZhbHVlOworICAgICAgICBjb3B5Lm11bHRpcGx5KHNlY29uZE1hdHJpeC52YWx1ZSgpKTsK
ICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAgIH0KIAogICAgIEV4
Y2VwdGlvbk9yPFJlZjxTVkdNYXRyaXg+PiBpbnZlcnNlKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGF1dG8gaW52ZXJzZSA9IHByb3BlcnR5UmVmZXJlbmNlKCkuaW52ZXJzZSgpOworICAgICAgICBh
dXRvIGludmVyc2UgPSBtX3ZhbHVlLmludmVyc2UoKTsKICAgICAgICAgaWYgKCFpbnZlcnNlKQog
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTWF0cml4
IGlzIG5vdCBpbnZlcnRpYmxlIl9zIH07Ci0KICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3Jl
YXRlKCppbnZlcnNlKTsKICAgICB9CiAKICAgICBSZWY8U1ZHTWF0cml4PiB0cmFuc2xhdGUoZmxv
YXQgeCwgZmxvYXQgeSkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gY29weSA9IHByb3BlcnR5
UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7CiAgICAgICAgIGNvcHku
dHJhbnNsYXRlKHgsIHkpOwogICAgICAgICByZXR1cm4gU1ZHTWF0cml4OjpjcmVhdGUoY29weSk7
CiAgICAgfQogCiAgICAgUmVmPFNWR01hdHJpeD4gc2NhbGUoZmxvYXQgc2NhbGVGYWN0b3IpIGNv
bnN0CiAgICAgewotICAgICAgICBhdXRvIGNvcHkgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpOworICAg
ICAgICBhdXRvIGNvcHkgPSBtX3ZhbHVlOwogICAgICAgICBjb3B5LnNjYWxlKHNjYWxlRmFjdG9y
KTsKICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAgIH0KIAogICAg
IFJlZjxTVkdNYXRyaXg+IHNjYWxlTm9uVW5pZm9ybShmbG9hdCBzY2FsZUZhY3RvclgsIGZsb2F0
IHNjYWxlRmFjdG9yWSkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gY29weSA9IHByb3BlcnR5
UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7CiAgICAgICAgIGNvcHku
c2NhbGVOb25Vbmlmb3JtKHNjYWxlRmFjdG9yWCwgc2NhbGVGYWN0b3JZKTsKICAgICAgICAgcmV0
dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAgIH0KIAogICAgIFJlZjxTVkdNYXRyaXg+
IHJvdGF0ZShmbG9hdCBhbmdsZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gY29weSA9IHBy
b3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7CiAgICAgICAg
IGNvcHkucm90YXRlKGFuZ2xlKTsKICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNv
cHkpOwogICAgIH0KQEAgLTE5OCwzNSArMTkyLDM1IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF4
IHx8ICF5KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogCi0g
ICAgICAgIGF1dG8gY29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29w
eSA9IG1fdmFsdWU7CiAgICAgICAgIGNvcHkucm90YXRlRnJvbVZlY3Rvcih4LCB5KTsKICAgICAg
ICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAgIH0KIAogICAgIFJlZjxTVkdN
YXRyaXg+IGZsaXBYKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8gY29weSA9IHByb3BlcnR5
UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7CiAgICAgICAgIGNvcHku
ZmxpcFgoKTsKICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRlKGNvcHkpOwogICAgIH0K
IAogICAgIFJlZjxTVkdNYXRyaXg+IGZsaXBZKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8g
Y29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7
CiAgICAgICAgIGNvcHkuZmxpcFkoKTsKICAgICAgICAgcmV0dXJuIFNWR01hdHJpeDo6Y3JlYXRl
KGNvcHkpOwogICAgIH0KIAogICAgIFJlZjxTVkdNYXRyaXg+IHNrZXdYKGZsb2F0IGFuZ2xlKSBj
b25zdAogICAgIHsKLSAgICAgICAgYXV0byBjb3B5ID0gcHJvcGVydHlSZWZlcmVuY2UoKTsKKyAg
ICAgICAgYXV0byBjb3B5ID0gbV92YWx1ZTsKICAgICAgICAgY29weS5za2V3WChhbmdsZSk7CiAg
ICAgICAgIHJldHVybiBTVkdNYXRyaXg6OmNyZWF0ZShjb3B5KTsKICAgICB9CiAKICAgICBSZWY8
U1ZHTWF0cml4PiBza2V3WShmbG9hdCBhbmdsZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1dG8g
Y29weSA9IHByb3BlcnR5UmVmZXJlbmNlKCk7CisgICAgICAgIGF1dG8gY29weSA9IG1fdmFsdWU7
CiAgICAgICAgIGNvcHkuc2tld1koYW5nbGUpOwogICAgICAgICByZXR1cm4gU1ZHTWF0cml4Ojpj
cmVhdGUoY29weSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAKaW5kZXggYTA1NTNjNjFlZTBhYzIzNTIxOGZlOTg1MTVlZjM2ZDQ3ZTkwYTk1OC4uZjllODIw
Nzk3ZTk4MjMwYzRkZDBlYjkxZTZkN2Q1ZDE2MmY0YThjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw2IEBAIGlubGluZSBTVkdQYXR0ZXJu
RWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lCiAgICAgLCBTVkdVUklSZWZlcmVuY2UodGhpcykKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShTVkdOYW1lczo6cGF0dGVyblRhZykpOwotICAgIHJlZ2lzdGVyQXR0cmlidXRlcygpOwog
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CkBAIC02Myw2ICs2Miw3IEBAIGlubGluZSBTVkdQYXR0ZXJuRWxlbWVu
dDo6U1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6Omhl
aWdodEF0dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9oZWlnaHQ+KCk7CiAgICAgICAgIFByb3Bl
cnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIs
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9wYXR0ZXJu
VW5pdHM+KCk7CiAgICAgICAgIFByb3BlcnR5UmVnaXN0cnk6OnJlZ2lzdGVyUHJvcGVydHk8U1ZH
TmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBl
LCAmU1ZHUGF0dGVybkVsZW1lbnQ6Om1fcGF0dGVybkNvbnRlbnRVbml0cz4oKTsKKyAgICAgICAg
UHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6cGF0dGVyblRyYW5z
Zm9ybUF0dHIsICZTVkdQYXR0ZXJuRWxlbWVudDo6bV9wYXR0ZXJuVHJhbnNmb3JtPigpOwogICAg
IH0pOwogfQogCkBAIC03MSwxNCArNzEsNiBAQCBSZWY8U1ZHUGF0dGVybkVsZW1lbnQ+IFNWR1Bh
dHRlcm5FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BhdHRlcm5FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CiAKLXZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnJlZ2lzdGVyQXR0cmlidXRlcygpCi17
Ci0gICAgYXV0byYgcmVnaXN0cnkgPSBhdHRyaWJ1dGVSZWdpc3RyeSgpOwotICAgIGlmICghcmVn
aXN0cnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cnkucmVnaXN0ZXJB
dHRyaWJ1dGU8U1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLCAmU1ZHUGF0dGVybkVsZW1l
bnQ6Om1fcGF0dGVyblRyYW5zZm9ybT4oKTsKLX0KLQogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0
cikgewpAQCAtOTQsMTAgKzg2LDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9y
bUF0dHIpIHsKLSAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcyBuZXdMaXN0OwotICAgICAg
ICBuZXdMaXN0LnBhcnNlKHZhbHVlKTsKLSAgICAgICAgbV9wYXR0ZXJuVHJhbnNmb3JtLmRldGFj
aEFuaW1hdGVkTGlzdFdyYXBwZXJzKGF0dHJpYnV0ZU93bmVyUHJveHkoKSwgbmV3TGlzdC5zaXpl
KCkpOwotICAgICAgICBtX3BhdHRlcm5UcmFuc2Zvcm0uc2V0VmFsdWUoV1RGTW92ZShuZXdMaXN0
KSk7CisgICAgICAgIG1fcGF0dGVyblRyYW5zZm9ybS0+YmFzZVZhbCgpLT5wYXJzZSh2YWx1ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyOSw3ICsxMTgsNyBAQCB2b2lkIFNWR1Bh
dHRlcm5FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpIHx8IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdG
aXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5j
ZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKICAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlv
dXQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTgxLDExICsxNzAsOCBAQCB2b2lkIFNWR1BhdHRl
cm5FbGVtZW50Ojpjb2xsZWN0UGF0dGVybkF0dHJpYnV0ZXMoUGF0dGVybkF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMpCiAgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc1BhdHRlcm5Db250ZW50VW5pdHMoKSAm
JiBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyKSkKICAgICAg
ICAgYXR0cmlidXRlcy5zZXRQYXR0ZXJuQ29udGVudFVuaXRzKHBhdHRlcm5Db250ZW50VW5pdHMo
KSk7CiAKLSAgICBpZiAoIWF0dHJpYnV0ZXMuaGFzUGF0dGVyblRyYW5zZm9ybSgpICYmIGhhc0F0
dHJpYnV0ZShTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIpKSB7Ci0gICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0oKS5jb25jYXRl
bmF0ZSh0cmFuc2Zvcm0pOwotICAgICAgICBhdHRyaWJ1dGVzLnNldFBhdHRlcm5UcmFuc2Zvcm0o
dHJhbnNmb3JtKTsKLSAgICB9CisgICAgaWYgKCFhdHRyaWJ1dGVzLmhhc1BhdHRlcm5UcmFuc2Zv
cm0oKSAmJiBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyKSkKKyAg
ICAgICAgYXR0cmlidXRlcy5zZXRQYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0oKS5j
b25jYXRlbmF0ZSgpKTsKIAogICAgIGlmICghYXR0cmlidXRlcy5oYXNQYXR0ZXJuQ29udGVudEVs
ZW1lbnQoKSAmJiBjaGlsZEVsZW1lbnRDb3VudCgpKQogICAgICAgICBhdHRyaWJ1dGVzLnNldFBh
dHRlcm5Db250ZW50RWxlbWVudCh0aGlzKTsKQEAgLTE5Myw5ICsxNzksNyBAQCB2b2lkIFNWR1Bh
dHRlcm5FbGVtZW50Ojpjb2xsZWN0UGF0dGVybkF0dHJpYnV0ZXMoUGF0dGVybkF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMpCiAKIEFmZmluZVRyYW5zZm9ybSBTVkdQYXR0ZXJuRWxlbWVudDo6bG9jYWxD
b29yZGluYXRlU3BhY2VUcmFuc2Zvcm0oU1ZHTG9jYXRhYmxlOjpDVE1TY29wZSkgY29uc3QKIHsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4OwotICAgIHBhdHRlcm5UcmFuc2Zvcm0oKS5jb25j
YXRlbmF0ZShtYXRyaXgpOwotICAgIHJldHVybiBtYXRyaXg7CisgICAgcmV0dXJuIHBhdHRlcm5U
cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5oCmluZGV4IGZkYzI2ZTU0YThlNWIxYzZlNzZhOGMyYjcwZjFkNzQ3M2RiOTVm
NTguLmMxODhkMGQ2MmIxYWVlODEzMWUzNjRjYWIxMDhhODg2OGJhYWEyNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCkBAIC0yMSw3ICsyMSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAi
U1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIK
ICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKQEAgLTQ5LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdo
dC0+Y3VycmVudFZhbHVlKCk7IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHBhdHRl
cm5Vbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblVuaXRzLT5jdXJyZW50VmFsdWU8U1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZT4oKTsgfQogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUgcGF0dGVybkNvbnRlbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybkNvbnRlbnRV
bml0cy0+Y3VycmVudFZhbHVlPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+KCk7IH0KLSAgICBj
b25zdCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiBwYXR0ZXJuVHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXR0ZXJuVHJhbnNmb3JtLmN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVPd25lclByb3h5
KCkpOyB9CisgICAgY29uc3QgU1ZHVHJhbnNmb3JtTGlzdCYgcGF0dGVyblRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9ybS0+Y3VycmVudFZhbHVlKCk7IH0KIAogICAg
IFNWR0FuaW1hdGVkTGVuZ3RoJiB4QW5pbWF0ZWQoKSB7IHJldHVybiBtX3g7IH0KICAgICBTVkdB
bmltYXRlZExlbmd0aCYgeUFuaW1hdGVkKCkgeyByZXR1cm4gbV95OyB9CkBAIC01NywyNCArNTYs
MTcgQEAgcHVibGljOgogICAgIFNWR0FuaW1hdGVkTGVuZ3RoJiBoZWlnaHRBbmltYXRlZCgpIHsg
cmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiYgcGF0dGVyblVu
aXRzQW5pbWF0ZWQoKSB7IHJldHVybiBtX3BhdHRlcm5Vbml0czsgfQogICAgIFNWR0FuaW1hdGVk
RW51bWVyYXRpb24mIHBhdHRlcm5Db250ZW50VW5pdHNBbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0
dGVybkNvbnRlbnRVbml0czsgfQotICAgIFJlZlB0cjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+
IHBhdHRlcm5UcmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9ybS5h
bmltYXRlZFByb3BlcnR5KGF0dHJpYnV0ZU93bmVyUHJveHkoKSk7IH0KKyAgICBTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3QmIHBhdHRlcm5UcmFuc2Zvcm1BbmltYXRlZCgpIHsgcmV0dXJuIG1fcGF0
dGVyblRyYW5zZm9ybTsgfQogCiBwcml2YXRlOgogICAgIFNWR1BhdHRlcm5FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQ
cm94eSA9IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1BhdHRlcm5FbGVtZW50LCBTVkdF
bGVtZW50LCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdGaXRUb1ZpZXdCb3gsIFNW
R1Rlc3RzLCBTVkdVUklSZWZlcmVuY2U+OwotICAgIHN0YXRpYyBBdHRyaWJ1dGVPd25lclByb3h5
OjpBdHRyaWJ1dGVSZWdpc3RyeSYgYXR0cmlidXRlUmVnaXN0cnkoKSB7IHJldHVybiBBdHRyaWJ1
dGVPd25lclByb3h5OjphdHRyaWJ1dGVSZWdpc3RyeSgpOyB9Ci0gICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJBdHRyaWJ1dGVzKCk7CiAgICAgY29uc3QgU1ZHQXR0cmlidXRlT3duZXJQcm94eSYgYXR0
cmlidXRlT3duZXJQcm94eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXR0cmlidXRlT3duZXJQ
cm94eTsgfQogCiAgICAgdXNpbmcgUHJvcGVydHlSZWdpc3RyeSA9IFNWR1Byb3BlcnR5T3duZXJS
ZWdpc3RyeTxTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHRWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgU1ZHRml0VG9WaWV3Qm94LCBTVkdUZXN0cywgU1ZHVVJJUmVmZXJlbmNlPjsK
ICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBp
c0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAg
ewotICAgICAgICByZXR1cm4gQXR0cmlidXRlT3duZXJQcm94eTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyaWJ1dGVOYW1lKSB8fCBQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpOwotICAgIH0KLQogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgZmluYWw7CiAgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBmaW5hbDsKQEAgLTkzLDcgKzg1LDcgQEAgcHJp
dmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwogICAgIFJlZjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uPiBtX3BhdHRlcm5Vbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246
OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdC
T1gpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fcGF0dGVybkNvbnRlbnRV
bml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07Ci0gICAgU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0QXR0cmlidXRlIG1fcGF0dGVyblRyYW5zZm9ybTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0PiBtX3BhdHRlcm5UcmFuc2Zvcm0geyBTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3Q6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9pbnQuaAppbmRleCAyZGQ1ZTJlYjM4ZTAwN2UxYWQ1ZThmYTJkYTJhOWRkNjY3NDdjNTMy
Li43NzQ0NWI5ZmNiMWZiNDBiNTEzOTZlMTkyZTczNDU4NmM2MzU0YjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9pbnQuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWY8U1ZHUG9pbnQ+IG1h
dHJpeFRyYW5zZm9ybShTVkdNYXRyaXgmIG1hdHJpeCkgY29uc3QKICAgICB7Ci0gICAgICAgIGF1
dG8gbmV3UG9pbnQgPSBtX3ZhbHVlLm1hdHJpeFRyYW5zZm9ybShtYXRyaXgucHJvcGVydHlSZWZl
cmVuY2UoKSk7CisgICAgICAgIGF1dG8gbmV3UG9pbnQgPSBtX3ZhbHVlLm1hdHJpeFRyYW5zZm9y
bShtYXRyaXgudmFsdWUoKSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1BvaW50
KG5ld1BvaW50KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9seUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCmluZGV4
IDZlMzU0MjVjMWYwOWUxOTg2OTJjZjhiYjdiMTFjZDEwMDVjZDY5MTEuLjIyN2Q1OWNkMTdjZGRi
OGUwY2QwZGM4ZWQ0MDVkOTBmM2NiZTE2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQb2x5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5oCkBAIC00NywxMSArNDcsNiBAQCBwcml2YXRlOgogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0
cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHUG9seUVsZW1lbnQsIFNWR0dlb21ldHJ5
RWxlbWVudCwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZD47CiAgICAgY29uc3QgU1ZHUHJv
cGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgfHwg
UHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKLSAgICB9
Ci0KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsgCiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCAyYjZhODkzZmI2ODViZjVmM2QzODli
MGQ1ODYwOTBmYzJhOTJkMjc1Li45YWEyM2FlMGJkNmI5MGQ5ODZkMzFkY2VjNjM0NGY1NTdkMWM4
OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmNwcApAQCAtMTA5LDExICsxMDksOCBAQCBzdGF0aWMgdm9pZCBzZXRHcmFkaWVudEF0dHJpYnV0
ZXMoU1ZHR3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBSYWRpYWxHcmFkaWVudEF0dAogICAgIGlm
ICghYXR0cmlidXRlcy5oYXNHcmFkaWVudFVuaXRzKCkgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyKSkKICAgICAgICAgYXR0cmlidXRlcy5zZXRHcmFk
aWVudFVuaXRzKGVsZW1lbnQuZ3JhZGllbnRVbml0cygpKTsKIAotICAgIGlmICghYXR0cmlidXRl
cy5oYXNHcmFkaWVudFRyYW5zZm9ybSgpICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKFNWR05hbWVz
OjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07Ci0gICAgICAgIGVsZW1lbnQuZ3JhZGllbnRUcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSh0
cmFuc2Zvcm0pOwotICAgICAgICBhdHRyaWJ1dGVzLnNldEdyYWRpZW50VHJhbnNmb3JtKHRyYW5z
Zm9ybSk7Ci0gICAgfQorICAgIGlmICghYXR0cmlidXRlcy5oYXNHcmFkaWVudFRyYW5zZm9ybSgp
ICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIp
KQorICAgICAgICBhdHRyaWJ1dGVzLnNldEdyYWRpZW50VHJhbnNmb3JtKGVsZW1lbnQuZ3JhZGll
bnRUcmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpKTsKIAogICAgIGlmICghYXR0cmlidXRlcy5oYXNT
dG9wcygpKSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxHcmFkaWVudDo6Q29sb3JTdG9wPiYgc3Rv
cHMoZWxlbWVudC5idWlsZFN0b3BzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3Bw
CmluZGV4IDZjN2RlMDJhZWI5Njk5ZDljNDRjOGY3ZjdlZWMwOTk0YTI1MTViMDMuLjliZjAzNDIz
MzJhZWI0NGRjZGI0OWJhOTQzMmIxMWNiY2UwMjZiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKQEAgLTM4NiwxMiArMzg2LDEyIEBAIFJlZjxTVkdSZWN0PiBTVkdTVkdFbGVt
ZW50OjpjcmVhdGVTVkdSZWN0KCkKIAogUmVmPFNWR1RyYW5zZm9ybT4gU1ZHU1ZHRWxlbWVudDo6
Y3JlYXRlU1ZHVHJhbnNmb3JtKCkKIHsKLSAgICByZXR1cm4gU1ZHVHJhbnNmb3JtOjpjcmVhdGUo
U1ZHVHJhbnNmb3JtVmFsdWUgeyBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9NQVRS
SVggfSk7CisgICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKFNWR1RyYW5zZm9ybVZhbHVl
OjpTVkdfVFJBTlNGT1JNX01BVFJJWCk7CiB9CiAKIFJlZjxTVkdUcmFuc2Zvcm0+IFNWR1NWR0Vs
ZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoU1ZHTWF0cml4JiBtYXRyaXgpCiB7
Ci0gICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKFNWR1RyYW5zZm9ybVZhbHVlIHsgbWF0
cml4LnByb3BlcnR5UmVmZXJlbmNlKCkgfSk7CisgICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3Jl
YXRlKG1hdHJpeC52YWx1ZSgpKTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6
OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUgbW9k
ZSkgY29uc3QKQEAgLTYwOCw3ICs2MDgsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVu
dDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZQogICAg
ICAgICByZXR1cm4gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGN1cnJl
bnRWaWV3Qm94UmVjdCgpLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCksIHZpZXdXaWR0aCwgdmlld0hl
aWdodCk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gU1ZHRml0VG9WaWV3Qm94
Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGN1cnJlbnRWaWV3Qm94UmVjdCgpLCBtX3ZpZXdTcGVj
LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCksIHZpZXdXaWR0aCwgdmlld0hlaWdodCk7Ci0gICAgbV92
aWV3U3BlYy0+dHJhbnNmb3JtVmFsdWUoKS5jb25jYXRlbmF0ZSh0cmFuc2Zvcm0pOworICAgIHRy
YW5zZm9ybSAqPSBtX3ZpZXdTcGVjLT50cmFuc2Zvcm0oKS0+Y29uY2F0ZW5hdGUoKTsKICAgICBy
ZXR1cm4gdHJhbnNmb3JtOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcApp
bmRleCA2ZDIwNWUzY2Y5YTVhNzViMjhkZjYwNmE3ZGI2MDA3ODNjZjk5NDI1Li5jYjkzODBjZWNm
NWE0ZTRiYjkyZDdiM2ZjOWFiNzA0NTg4MGFiNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
RWxlbWVudC5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1RleHRFbGVt
ZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKICAgICAgICAgLy8gRmxhdHRlbiBh
bnkgM0QgdHJhbnNmb3JtCiAgICAgICAgIG1hdHJpeCA9IHQudG9BZmZpbmVUcmFuc2Zvcm0oKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgdHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUobWF0cml4KTsKKyAg
ICAgICAgbWF0cml4ID0gdHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUoKTsKIAogICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0gY29uc3RfY2FzdDxTVkdUZXh0RWxlbWVudCo+KHRo
aXMpLT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKICAgICBpZiAodHJhbnNmb3JtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcy
NDhlMDUyOTczMDFmNTQzMDM0NzMzYWEwNTBjZjk2MTRiMDFkMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCi0KLSNpbmNsdWRlICJT
VkdNYXRyaXhUZWFyT2ZmLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFNWR01hdHJp
eD4gU1ZHVHJhbnNmb3JtOjptYXRyaXgoKQotewotICAgIHJldHVybiBTVkdNYXRyaXhUZWFyT2Zm
OjpjcmVhdGUoKnRoaXMsIHByb3BlcnR5UmVmZXJlbmNlKCkubWF0cml4KCkpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgKaW5kZXggYzAwZDQx
ZGI2MjA4YWNkMTY1ZGZhNjdiZjUyZTdlNGRhNmQ0MWJlZS4uNmEyOWM3MmNmM2U3ZjMxM2Y3MDk2
NTdhNDAxMjQ4MWMyMjNiOGRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDUwICsyNiw1NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdNYXRyaXguaCIKLSNp
bmNsdWRlICJTVkdQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1WYWx1
ZS5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTVkdUcmFuc2Zvcm0gOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1Ry
YW5zZm9ybVZhbHVlPiB7CitjbGFzcyBTVkdUcmFuc2Zvcm0gOiBwdWJsaWMgU1ZHVmFsdWVQcm9w
ZXJ0eTxTVkdUcmFuc2Zvcm1WYWx1ZT4sIHB1YmxpYyBTVkdQcm9wZXJ0eU93bmVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlKFNWR0xlZ2FjeUFuaW1hdGVk
UHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdUcmFu
c2Zvcm1WYWx1ZSYgdmFsdWUpCisgICAgc3RhdGljIFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZShT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHVHJhbnNmb3JtKGFuaW1hdGVkUHJvcGVydHksIHJvbGUs
IHZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybSh0eXBl
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxTVkdUcmFuc2Zvcm0+IGNyZWF0ZShjb25zdCBT
VkdUcmFuc2Zvcm1WYWx1ZSYgaW5pdGlhbFZhbHVlID0geyB9KQorICAgIHN0YXRpYyBSZWY8U1ZH
VHJhbnNmb3JtPiBjcmVhdGUoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0gPSB7IH0p
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm0oaW5pdGlh
bFZhbHVlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybShTVkdU
cmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVgsIHRyYW5zZm9ybSkpOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U1ZHVHJh
bnNmb3JtPj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFQ+JiYgaW5pdGlhbFZhbHVlKQorICAgIHN0YXRp
YyBSZWY8U1ZHVHJhbnNmb3JtPiBjcmVhdGUoY29uc3QgU1ZHVHJhbnNmb3JtVmFsdWUmIHZhbHVl
KQogICAgIHsKLSAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5oYXNFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgIHJldHVybiBpbml0aWFsVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgICAgICBy
ZXR1cm4gY3JlYXRlKGluaXRpYWxWYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybSh2YWx1ZS50eXBlKCksIHZhbHVlLm1h
dHJpeCgpLT52YWx1ZSgpLCB2YWx1ZS5hbmdsZSgpLCB2YWx1ZS5yb3RhdGlvbkNlbnRlcigpKSk7
CiAgICAgfQogCi0gICAgdW5zaWduZWQgc2hvcnQgdHlwZSgpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNWR1RyYW5zZm9ybT4+IGNyZWF0ZShF
eGNlcHRpb25PcjxUPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVm
ZXJlbmNlKCkudHlwZSgpOworICAgICAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gdmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4g
Y3JlYXRlKHZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKICAgICB9CiAKLSAgICBSZWY8U1ZH
TWF0cml4PiBtYXRyaXgoKTsKKyAgICB+U1ZHVHJhbnNmb3JtKCkKKyAgICB7CisgICAgICAgIG1f
dmFsdWUubWF0cml4KCktPmRldGFjaCgpOworICAgIH0KIAotICAgIGZsb2F0IGFuZ2xlKCkKKyAg
ICBSZWY8U1ZHVHJhbnNmb3JtPiBjbG9uZSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
cHJvcGVydHlSZWZlcmVuY2UoKS5hbmdsZSgpOworICAgICAgICByZXR1cm4gU1ZHVHJhbnNmb3Jt
OjpjcmVhdGUobV92YWx1ZSk7CiAgICAgfQogCisgICAgdW5zaWduZWQgc2hvcnQgdHlwZSgpIHsg
cmV0dXJuIG1fdmFsdWUudHlwZSgpOyB9CisgICAgZmxvYXQgYW5nbGUoKSB7IHJldHVybiBtX3Zh
bHVlLmFuZ2xlKCk7IH0KKyAgICBjb25zdCBSZWY8U1ZHTWF0cml4PiYgbWF0cml4KCkgeyByZXR1
cm4gbV92YWx1ZS5tYXRyaXgoKTsgfQorCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TWF0cml4
KFNWR01hdHJpeCYgbWF0cml4KQogICAgIHsKICAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKICAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvciB9
OwogCi0gICAgICAgIHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0TWF0cml4KG1hdHJpeC5wcm9wZXJ0
eVJlZmVyZW5jZSgpKTsKKyAgICAgICAgbV92YWx1ZS5zZXRNYXRyaXgobWF0cml4LnZhbHVlKCkp
OwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IApAQCAtNzgsOSArODUsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAg
ICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3Ig
fTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldFRyYW5zbGF0ZSh0eCwgdHkpOwor
ICAgICAgICBtX3ZhbHVlLnNldFRyYW5zbGF0ZSh0eCwgdHkpOwogICAgICAgICBjb21taXRDaGFu
Z2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtODksOSArOTUsOCBAQCBw
dWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0
eVJlZmVyZW5jZSgpLnNldFNjYWxlKHN4LCBzeSk7CisgICAgICAgIG1fdmFsdWUuc2V0U2NhbGUo
c3gsIHN5KTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0KICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKQEAgLTEwMCw5ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRP
bmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxv
d2VkRXJyb3IgfTsKIAotICAgICAgICBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldFJvdGF0ZShhbmds
ZSwgY3gsIGN5KTsKKyAgICAgICAgbV92YWx1ZS5zZXRSb3RhdGUoYW5nbGUsIGN4LCBjeSk7CiAg
ICAgICAgIGNvbW1pdENoYW5nZSgpOwotCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBA
IC0xMTEsOSArMTE1LDggQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07
CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRTa2V3WChhbmdsZSk7CisgICAgICAg
IG1fdmFsdWUuc2V0U2tld1goYW5nbGUpOwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTIyLDIxICsxMjUsMzIgQEAgcHVibGljOgog
ICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgcHJvcGVydHlSZWZlcmVu
Y2UoKS5zZXRTa2V3WShhbmdsZSk7CisgICAgICAgIG1fdmFsdWUuc2V0U2tld1koYW5nbGUpOwog
ICAgICAgICBjb21taXRDaGFuZ2UoKTsKLQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBTVkdUcmFuc2Zvcm0oU1ZHTGVnYWN5QW5pbWF0ZWRQcm9wZXJ0eSYgYW5p
bWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9ybVZhbHVlJiB2
YWx1ZSkKLSAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtVmFsdWU+KCZh
bmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkKKyAgICB1c2luZyBCYXNlID0gU1ZHVmFsdWVQ
cm9wZXJ0eTxTVkdUcmFuc2Zvcm1WYWx1ZT47CisKKyAgICBTVkdUcmFuc2Zvcm0oU1ZHVHJhbnNm
b3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0gPSB7IH0sIGZsb2F0IGFuZ2xlID0gMCwgY29uc3QgRmxvYXRQb2ludCYgcm90YXRp
b25DZW50ZXIgPSB7IH0pCisgICAgICAgIDogQmFzZShTVkdUcmFuc2Zvcm1WYWx1ZSh0eXBlLCBT
VkdNYXRyaXg6OmNyZWF0ZSh0aGlzLCBTVkdQcm9wZXJ0eUFjY2Vzczo6UmVhZFdyaXRlLCB0cmFu
c2Zvcm0pLCBhbmdsZSwgcm90YXRpb25DZW50ZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBTVkdQ
cm9wZXJ0eU93bmVyKiBvd25lcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb3duZXI7IH0K
KworICAgIHZvaWQgY29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3BlcnR5KSBv
dmVycmlkZQogICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9wZXJ0eSwgcHJvcGVydHkg
PT0gbV92YWx1ZS5tYXRyaXgoKS5wdHIoKSk7CisgICAgICAgIGlmIChvd25lcigpKQorICAgICAg
ICAgICAgb3duZXIoKS0+Y29tbWl0UHJvcGVydHlDaGFuZ2UodGhpcyk7CisgICAgICAgIG1fdmFs
dWUubWF0cml4RGlkQ2hhbmdlKCk7CiAgICAgfQogCi0gICAgZXhwbGljaXQgU1ZHVHJhbnNmb3Jt
KGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJiBpbml0aWFsVmFsdWUpCi0gICAgICAgIDogU1ZHUHJv
cGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybVZhbHVlPihpbml0aWFsVmFsdWUpCisgICAgU3RyaW5n
IHZhbHVlQXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZQogICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
dmFsdWUudmFsdWVBc1N0cmluZygpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybS5pZGwKaW5kZXggMTE5NzQwNTkzOThiODQ5ZDA0Zjg2ZmNmYmZjN2VkMGUyNWMxYTkwMi4u
NTI5YjBlZDUwYWQzYWQ1ZWE3ZjhhM2M2ZTU5YTU5YTU4ZDljMzI3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybS5pZGwKQEAgLTMyLDcgKzMyLDcgQEAKICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBTVkdfVFJBTlNGT1JNX1NLRVdZID0gNjsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBzaG9ydCB0eXBlOwotICAgIFtOZXdPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBT
VkdNYXRyaXggbWF0cml4OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdNYXRyaXggbWF0cml4
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgYW5nbGU7CiAKICAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWF0cml4KFNWR01hdHJpeCBtYXRyaXgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKaW5kZXggM2NiZDViZjA2MDU4YjFkZmU3
ZjRmM2U0ZTZiNzQ5MGFkYWFkOTRhZS4uNTQ0ZDYwYjJlNjM1YzFjMjA5OTM0ZWU0MzVjZjQxMjVl
NmE3MWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsNTcgKzIxLDEx
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZi5oIgotI2luY2x1ZGUgIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCisjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCisj
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgorI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHlM
aXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdCBm
aW5hbCA6IHB1YmxpYyBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxpc3RWYWx1
ZXM+IHsKK2NsYXNzIFNWR1RyYW5zZm9ybUxpc3QgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9w
ZXJ0eUxpc3Q8U1ZHVHJhbnNmb3JtPiB7CisgICAgZnJpZW5kIGNsYXNzIFNWR1ZpZXdTcGVjOwor
ICAgIHVzaW5nIEJhc2UgPSBTVkdWYWx1ZVByb3BlcnR5TGlzdDxTVkdUcmFuc2Zvcm0+OworICAg
IHVzaW5nIEJhc2U6OkJhc2U7CisKIHB1YmxpYzoKLSAgICB1c2luZyBBbmltYXRlZExpc3RQcm9w
ZXJ0eVRlYXJPZmYgPSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3Jt
TGlzdFZhbHVlcz47Ci0gICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IEFuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKKyAgICBzdGF0aWMgUmVmPFNWR1RyYW5z
Zm9ybUxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
VkdUcmFuc2Zvcm1MaXN0KCkpOworICAgIH0KIAotICAgIHN0YXRpYyBSZWY8U1ZHVHJhbnNmb3Jt
TGlzdD4gY3JlYXRlKEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiYgYW5pbWF0ZWRQcm9wZXJ0
eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMmIHZhbHVlcywg
TGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCisgICAgc3RhdGljIFJlZjxTVkdUcmFuc2Zvcm1M
aXN0PiBjcmVhdGUoU1ZHUHJvcGVydHlPd25lciogb3duZXIsIFNWR1Byb3BlcnR5QWNjZXNzIGFj
Y2VzcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybUxp
c3QoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWVzLCB3cmFwcGVycykpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdUcmFuc2Zvcm1MaXN0KG93bmVyLCBhY2Nlc3MpKTsKICAg
ICB9CiAKLSAgICBFeGNlcHRpb25PcjxSZWY8U1ZHVHJhbnNmb3JtPj4gY3JlYXRlU1ZHVHJhbnNm
b3JtRnJvbU1hdHJpeChTVkdNYXRyaXgmIG1hdHJpeCkKKyAgICBzdGF0aWMgUmVmPFNWR1RyYW5z
Zm9ybUxpc3Q+IGNyZWF0ZShjb25zdCBTVkdUcmFuc2Zvcm1MaXN0JiBvdGhlciwgU1ZHUHJvcGVy
dHlBY2Nlc3MgYWNjZXNzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzKTsKLSAgICAg
ICAgcmV0dXJuIG1fdmFsdWVzLT5jcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KG1hdHJpeCk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1RyYW5zZm9ybUxpc3Qob3RoZXIsIGFj
Y2VzcykpOwogICAgIH0KIAotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxTVkdUcmFuc2Zvcm0+PiBj
b25zb2xpZGF0ZSgpCisgICAgRXhjZXB0aW9uT3I8UmVmPFNWR1RyYW5zZm9ybT4+IGNyZWF0ZVNW
R1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgUmVmPFNWR01hdHJpeD4mIG1hdHJpeCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChtX3ZhbHVlcyk7Ci0gICAgICAgIEFTU0VSVChtX3dyYXBwZXJzKTsK
KyAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybTo6Y3JlYXRlKG1hdHJpeC0+dmFsdWUoKSk7Cisg
ICAgfQogCisgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFNWR1RyYW5zZm9ybT4+IGNvbnNvbGlkYXRl
KCkKKyAgICB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gY2FuQWx0ZXJMaXN0KCk7CiAgICAgICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKTsKICAgICAgICAgQVNTRVJUKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKSk7CiAKLSAgICAgICAgQVNTRVJUKG1fdmFsdWVzLT5zaXplKCkgPT0gbV93cmFwcGVycy0+
c2l6ZSgpKTsKLQogICAgICAgICAvLyBTcGVjOiBJZiB0aGUgbGlzdCB3YXMgZW1wdHksIHRoZW4g
YSB2YWx1ZSBvZiBudWxsIGlzIHJldHVybmVkLgotICAgICAgICBpZiAobV92YWx1ZXMtPmlzRW1w
dHkoKSkKKyAgICAgICAgaWYgKG1faXRlbXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICAgICAgZGV0YWNoTGlzdFdyYXBwZXJzKDApOwotICAgICAgICAKLSAg
ICAgICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gd3JhcHBlciA9IG1fdmFsdWVzLT5jb25zb2xpZGF0
ZSgpOwotICAgICAgICBtX3dyYXBwZXJzLT5hcHBlbmQobWFrZVdlYWtQdHIoKndyYXBwZXIpKTsK
KyAgICAgICAgaWYgKG1faXRlbXMuc2l6ZSgpID09IDEpCisgICAgICAgICAgICByZXR1cm4gbWFr
ZVJlZlB0cihhdCgwKS5nZXQoKSk7CisKKyAgICAgICAgYXV0byBuZXdJdGVtID0gU1ZHVHJhbnNm
b3JtOjpjcmVhdGUoY29uY2F0ZW5hdGUoKSk7CisgICAgICAgIGNsZWFySXRlbXMoKTsKKworICAg
ICAgICBhdXRvIGl0ZW0gPSBhcHBlbmQoV1RGTW92ZShuZXdJdGVtKSk7CisgICAgICAgIGNvbW1p
dENoYW5nZSgpOworICAgICAgICByZXR1cm4gbWFrZVJlZlB0cihpdGVtLmdldCgpKTsKKyAgICB9
CisKKyAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgeworICAgICAgICBj
bGVhckl0ZW1zKCk7CisKKyAgICAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJp
bmdWaWV3KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICAgICAgY29uc3QgVUNo
YXIqIHN0YXJ0ID0gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzOworICAgICAgICBpZiAoIXBhcnNlKHN0
YXJ0LCBzdGFydCArIHZhbHVlLmxlbmd0aCgpKSkKKyAgICAgICAgICAgIGNsZWFySXRlbXMoKTsK
KyAgICB9CisKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY29uY2F0ZW5hdGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHJlc3VsdDsKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiB0cmFuc2Zvcm0gOiBtX2l0ZW1zKQorICAgICAgICAgICAgcmVzdWx0ICo9IHRyYW5zZm9ybS0+
bWF0cml4KCktPnZhbHVlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCi0gICAg
ICAgIEFTU0VSVChtX3ZhbHVlcy0+c2l6ZSgpID09IG1fd3JhcHBlcnMtPnNpemUoKSk7Ci0gICAg
ICAgIHJldHVybiB3cmFwcGVyOworICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Qgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiB0cmFuc2Zyb20gOiBtX2l0ZW1zKSB7CisgICAgICAgICAgICBpZiAoYnVp
bGRlci5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworCisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCh0cmFuc2Zyb20tPnZhbHVlKCkudmFsdWVBc1N0cmlu
ZygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBTVkdUcmFuc2Zvcm1MaXN0KEFuaW1hdGVkTGlzdFByb3BlcnR5
VGVhck9mZiYgYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXMmIHZhbHVlcywgTGlzdFdyYXBwZXJDYWNoZSYgd3JhcHBlcnMpCi0gICAg
ICAgIDogU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPihhbmlt
YXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZXMsIHdyYXBwZXJzKQorICAgIGJvb2wgcGFyc2UoY29u
c3QgVUNoYXIqJiBzdGFydCwgY29uc3QgVUNoYXIqIGVuZCkKICAgICB7CisgICAgICAgIGJvb2wg
ZGVsaW1QYXJzZWQgPSBmYWxzZTsKKyAgICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7CisgICAg
ICAgICAgICBkZWxpbVBhcnNlZCA9IGZhbHNlOworICAgICAgICAgICAgU1ZHVHJhbnNmb3JtVmFs
dWU6OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSA9IFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNG
T1JNX1VOS05PV047CisgICAgICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoc3RhcnQsIGVu
ZCk7CisKKyAgICAgICAgICAgIGlmICghU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VBbmRTa2lwVHlw
ZShzdGFydCwgZW5kLCB0eXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgICAgIFJlZjxTVkdUcmFuc2Zvcm0+IHRyYW5zZm9ybSA9IFNWR1RyYW5zZm9ybTo6Y3Jl
YXRlKHR5cGUpOworICAgICAgICAgICAgaWYgKCFTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5z
Zm9ybVZhbHVlKHR5cGUsIHN0YXJ0LCBlbmQsIHRyYW5zZm9ybS0+dmFsdWUoKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBhcHBlbmQoV1RGTW92ZSh0cmFu
c2Zvcm0pKTsKKyAgICAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhzdGFydCwgZW5kKTsK
KyAgICAgICAgICAgIGlmIChzdGFydCA8IGVuZCAmJiAqc3RhcnQgPT0gJywnKSB7CisgICAgICAg
ICAgICAgICAgZGVsaW1QYXJzZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICsrc3RhcnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhzdGFydCwg
ZW5kKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIWRlbGltUGFyc2VkOwogICAgIH0KIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmlkbAppbmRleCAzZTgxZDYyYTM1
YWU4YzM2MTI5NjJkNzU4MWYzMDhkZGRhMTgzODc1Li4yNTYzMDUyOGRlOWE3NDkzYmJlZDFhMjU0
MmMyNWQzMDFhN2VjNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaWRs
CkBAIC0zNiw1ICszNiw1IEBAIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1MaXN0IHsKICAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIFNWR1RyYW5zZm9ybSBhcHBlbmRJdGVtKFNWR1RyYW5zZm9ybSBpdGVt
KTsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBTVkdUcmFuc2Zvcm0gY3Jl
YXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXggbWF0cml4KTsKLSAgICBbTWF5VGhy
b3dFeGNlcHRpb24sIE5ld09iamVjdF0gU1ZHVHJhbnNmb3JtIGNvbnNvbGlkYXRlKCk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSBTVkdUcmFuc2Zvcm0gY29uc29saWRhdGUoKTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI1YjNjMzE2ZjJlZDc3OWM5NDZjOGU4ZTIyNzY5YzFkODFmZTVl
MjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oIgotCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCi0jaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9y
bWFibGUuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotUmVmPFNWR1RyYW5zZm9ybT4gU1ZHVHJhbnNmb3JtTGlzdFZhbHVlczo6
Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChTVkdNYXRyaXgmIG1hdHJpeCkgY29uc3QKLXsK
LSAgICByZXR1cm4gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCht
YXRyaXgpOwotfQotCi1SZWY8U1ZHVHJhbnNmb3JtPiBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpj
b25zb2xpZGF0ZSgpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeDsKLSAgICBpZiAoIWNv
bmNhdGVuYXRlKG1hdHJpeCkpCi0gICAgICAgIHJldHVybiBTVkdUcmFuc2Zvcm06OmNyZWF0ZSgp
OwotCi0gICAgU1ZHVHJhbnNmb3JtVmFsdWUgdHJhbnNmb3JtKG1hdHJpeCk7Ci0gICAgY2xlYXIo
KTsKLSAgICBhcHBlbmQodHJhbnNmb3JtKTsKLSAgICByZXR1cm4gU1ZHVHJhbnNmb3JtOjpjcmVh
dGUodHJhbnNmb3JtKTsKLX0KLQotYm9vbCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzOjpjb25jYXRl
bmF0ZShBZmZpbmVUcmFuc2Zvcm0mIHJlc3VsdCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBzaXpl
ID0gdGhpcy0+c2l6ZSgpOwotICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgcmVzdWx0
ICo9IGF0KGkpLm1hdHJpeCgpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVN0cmluZyBTVkdU
cmFuc2Zvcm1MaXN0VmFsdWVzOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKLXsKLSAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IHRoaXMtPnNpemUoKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChpID4gMCkK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0KLSAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXQoaSkudmFsdWVBc1N0cmluZygpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwotfQotCi12b2lkIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM6OnBhcnNlKGNvbnN0
IFN0cmluZyYgdHJhbnNmb3JtKQotewotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0g
U3RyaW5nVmlldyh0cmFuc2Zvcm0pLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIGNvbnN0
IFVDaGFyKiBzdGFydCA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLSAgICBpZiAoIVNWR1RyYW5z
Zm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKCp0aGlzLCBzdGFydCwgc3RhcnQgKyB0
cmFuc2Zvcm0ubGVuZ3RoKCkpKQotICAgICAgICBjbGVhcigpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlz
dFZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVjYzQ0MWUzNzE1NmNhMGU2YTQ3YzQ4OGQy
M2U5NzAzNzE2YTk4NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdFZhbHVlcy5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgi
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBTVkdMaXN0UHJvcGVydHlUZWFyT2ZmOwotCi1jbGFzcyBT
VkdUcmFuc2Zvcm1MaXN0OwotCi1jbGFzcyBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzIGZpbmFsIDog
cHVibGljIFZlY3RvcjxTVkdUcmFuc2Zvcm1WYWx1ZSwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAyPiB7
Ci1wdWJsaWM6Ci0gICAgUmVmPFNWR1RyYW5zZm9ybT4gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1h
dHJpeChTVkdNYXRyaXgmKSBjb25zdDsKLSAgICBSZWY8U1ZHVHJhbnNmb3JtPiBjb25zb2xpZGF0
ZSgpOwotCi0gICAgYm9vbCBjb25jYXRlbmF0ZShBZmZpbmVUcmFuc2Zvcm0mIHJlc3VsdCkgY29u
c3Q7Ci0KLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwotICAgIHZvaWQgcGFyc2Uo
Y29uc3QgU3RyaW5nJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPiB7Ci0gICAgc3RhdGljIFNWR1RyYW5zZm9ybUxpc3RW
YWx1ZXMgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgc3RhdGljIFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXMgZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKLSAgICB7Ci0g
ICAgICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMgdmFsdWVzOwotICAgICAgICB2YWx1ZXMucGFy
c2Uoc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlczsKLSAgICB9Ci0gICAgc3RhdGljIE9w
dGlvbmFsPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZh
bHVlKCk7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1RyYW5zZm9ybUxp
c3RWYWx1ZXMmIGxpc3QpIHsgcmV0dXJuIGxpc3QudmFsdWVBc1N0cmluZygpOyB9Ci0KLSAgICB1
c2luZyBMaXN0SXRlbVR5cGUgPSBTVkdUcmFuc2Zvcm1WYWx1ZTsKLSAgICB1c2luZyBMaXN0SXRl
bVRlYXJPZmYgPSBTVkdUcmFuc2Zvcm07Ci0gICAgdXNpbmcgTGlzdFByb3BlcnR5VGVhck9mZiA9
IFNWR1RyYW5zZm9ybUxpc3Q7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTYxNGFjMmU3M2ViMTFhYjE0ODE1ODQwMzdhNmY0MDlkZjc0NDMzYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtVmFsdWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1WYWx1ZS5o
IgotCi0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW5jbHVkZSAiRmxvYXRQb2ludC5o
IgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0j
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1WYWx1ZSgpID0gZGVm
YXVsdDsKLQotU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9y
bVR5cGUgdHlwZSwgQ29uc3RydWN0aW9uTW9kZSBtb2RlKQotICAgIDogbV90eXBlKHR5cGUpCi17
Ci0gICAgaWYgKG1vZGUgPT0gQ29uc3RydWN0WmVyb1RyYW5zZm9ybSkKLSAgICAgICAgbV9tYXRy
aXggPSBBZmZpbmVUcmFuc2Zvcm0oMCwgMCwgMCwgMCwgMCwgMCk7Ci19Ci0KLVNWR1RyYW5zZm9y
bVZhbHVlOjpTVkdUcmFuc2Zvcm1WYWx1ZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkK
LSAgICA6IG1fdHlwZShTVkdfVFJBTlNGT1JNX01BVFJJWCkKLSAgICAsIG1fbWF0cml4KG1hdHJp
eCkKLXsKLX0KLQotdm9pZCBTVkdUcmFuc2Zvcm1WYWx1ZTo6c2V0TWF0cml4KGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbWF0cml4KQotewotICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fTUFUUklY
OwotICAgIG1fYW5nbGUgPSAwOwotICAgIG1fbWF0cml4ID0gbWF0cml4OwotfQotCi12b2lkIFNW
R1RyYW5zZm9ybVZhbHVlOjp1cGRhdGVTVkdNYXRyaXgoKQotewotICAgIC8vIFRoZSB1bmRlcmx5
aW5nIG1hdHJpeCBoYXMgYmVlbiBjaGFuZ2VkLCBhbHRlciB0aGUgdHJhbnNmb3JtYXRpb24gdHlw
ZS4KLSAgICAvLyBTcGVjOiBJbiBjYXNlIHRoZSBtYXRyaXggb2JqZWN0IGlzIGNoYW5nZWQgZGly
ZWN0bHkgKGkuZS4sIHdpdGhvdXQgdXNpbmcgdGhlIG1ldGhvZHMgb24gdGhlIFNWR1RyYW5zZm9y
bSBpbnRlcmZhY2UgaXRzZWxmKQotICAgIC8vIHRoZW4gdGhlIHR5cGUgb2YgdGhlIFNWR1RyYW5z
Zm9ybSBjaGFuZ2VzIHRvIFNWR19UUkFOU0ZPUk1fTUFUUklYLgotICAgIG1fdHlwZSA9IFNWR19U
UkFOU0ZPUk1fTUFUUklYOwotICAgIG1fYW5nbGUgPSAwOwotfQotCi12b2lkIFNWR1RyYW5zZm9y
bVZhbHVlOjpzZXRUcmFuc2xhdGUoZmxvYXQgdHgsIGZsb2F0IHR5KQotewotICAgIG1fdHlwZSA9
IFNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFOwotICAgIG1fYW5nbGUgPSAwOwotCi0gICAgbV9tYXRy
aXgubWFrZUlkZW50aXR5KCk7Ci0gICAgbV9tYXRyaXgudHJhbnNsYXRlKHR4LCB0eSk7Ci19Ci0K
LUZsb2F0UG9pbnQgU1ZHVHJhbnNmb3JtVmFsdWU6OnRyYW5zbGF0ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEZsb2F0UG9pbnQ6Om5hcnJvd1ByZWNpc2lvbihtX21hdHJpeC5lKCksIG1fbWF0cml4
LmYoKSk7Ci19Ci0KLXZvaWQgU1ZHVHJhbnNmb3JtVmFsdWU6OnNldFNjYWxlKGZsb2F0IHN4LCBm
bG9hdCBzeSkKLXsKLSAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX1NDQUxFOwotICAgIG1fYW5n
bGUgPSAwOwotICAgIG1fY2VudGVyID0gRmxvYXRQb2ludCgpOwotCi0gICAgbV9tYXRyaXgubWFr
ZUlkZW50aXR5KCk7Ci0gICAgbV9tYXRyaXguc2NhbGVOb25Vbmlmb3JtKHN4LCBzeSk7Ci19Ci0K
LUZsb2F0U2l6ZSBTVkdUcmFuc2Zvcm1WYWx1ZTo6c2NhbGUoKSBjb25zdAotewotICAgIHJldHVy
biBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihtX21hdHJpeC5hKCksIG1fbWF0cml4LmQoKSk7
Ci19Ci0KLXZvaWQgU1ZHVHJhbnNmb3JtVmFsdWU6OnNldFJvdGF0ZShmbG9hdCBhbmdsZSwgZmxv
YXQgY3gsIGZsb2F0IGN5KQotewotICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fUk9UQVRFOwot
ICAgIG1fYW5nbGUgPSBhbmdsZTsKLSAgICBtX2NlbnRlciA9IEZsb2F0UG9pbnQoY3gsIGN5KTsK
LQotICAgIC8vIFRPRE86IHRvU3RyaW5nKCkgaW1wbGVtZW50YXRpb24sIHdoaWNoIGNhbiBzaG93
IGN4LCBjeSAobmVlZCB0byBiZSBzdG9yZWQ/KQotICAgIG1fbWF0cml4Lm1ha2VJZGVudGl0eSgp
OwotICAgIG1fbWF0cml4LnRyYW5zbGF0ZShjeCwgY3kpOwotICAgIG1fbWF0cml4LnJvdGF0ZShh
bmdsZSk7Ci0gICAgbV9tYXRyaXgudHJhbnNsYXRlKC1jeCwgLWN5KTsKLX0KLQotdm9pZCBTVkdU
cmFuc2Zvcm1WYWx1ZTo6c2V0U2tld1goZmxvYXQgYW5nbGUpCi17Ci0gICAgbV90eXBlID0gU1ZH
X1RSQU5TRk9STV9TS0VXWDsKLSAgICBtX2FuZ2xlID0gYW5nbGU7Ci0KLSAgICBtX21hdHJpeC5t
YWtlSWRlbnRpdHkoKTsKLSAgICBtX21hdHJpeC5za2V3WChhbmdsZSk7Ci19Ci0KLXZvaWQgU1ZH
VHJhbnNmb3JtVmFsdWU6OnNldFNrZXdZKGZsb2F0IGFuZ2xlKQotewotICAgIG1fdHlwZSA9IFNW
R19UUkFOU0ZPUk1fU0tFV1k7Ci0gICAgbV9hbmdsZSA9IGFuZ2xlOwotCi0gICAgbV9tYXRyaXgu
bWFrZUlkZW50aXR5KCk7Ci0gICAgbV9tYXRyaXguc2tld1koYW5nbGUpOwotfQotCi1jb25zdCBT
dHJpbmcmIFNWR1RyYW5zZm9ybVZhbHVlOjp0cmFuc2Zvcm1UeXBlUHJlZml4Rm9yUGFyc2luZyhT
VkdUcmFuc2Zvcm1UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBT
VkdfVFJBTlNGT1JNX1VOS05PV046Ci0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAg
IGNhc2UgU1ZHX1RSQU5TRk9STV9NQVRSSVg6IHsKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gbWF0cml4U3RyaW5nKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJtYXRyaXgo
IikpOwotICAgICAgICByZXR1cm4gbWF0cml4U3RyaW5nOwotICAgIH0KLSAgICBjYXNlIFNWR19U
UkFOU0ZPUk1fVFJBTlNMQVRFOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IHRyYW5zbGF0ZVN0cmluZyhNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgidHJhbnNsYXRlKCIp
KTsKLSAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZVN0cmluZzsKLSAgICB9Ci0gICAgY2FzZSBTVkdf
VFJBTlNGT1JNX1NDQUxFOiB7Ci0gICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IHNjYWxlU3RyaW5nKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJzY2FsZSgiKSk7Ci0gICAgICAg
IHJldHVybiBzY2FsZVN0cmluZzsKLSAgICB9Ci0gICAgY2FzZSBTVkdfVFJBTlNGT1JNX1JPVEFU
RTogewotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiByb3RhdGVTdHJpbmco
TUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoInJvdGF0ZSgiKSk7Ci0gICAgICAgIHJldHVybiByb3Rh
dGVTdHJpbmc7Ci0gICAgfSAgICAKLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1g6IHsKLSAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2tld1hTdHJpbmcoTUFLRV9TVEFU
SUNfU1RSSU5HX0lNUEwoInNrZXdYKCIpKTsKLSAgICAgICAgcmV0dXJuIHNrZXdYU3RyaW5nOwot
ICAgIH0KLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1k6IHsKLSAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gc2tld1lTdHJpbmcoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
InNrZXdZKCIpKTsKLSAgICAgICAgcmV0dXJuIHNrZXdZU3RyaW5nOwotICAgIH0KLSAgICB9Ci0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0K
LQotU3RyaW5nIFNWR1RyYW5zZm9ybVZhbHVlOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKLXsKLSAg
ICBjb25zdCBTdHJpbmcmIHByZWZpeCA9IHRyYW5zZm9ybVR5cGVQcmVmaXhGb3JQYXJzaW5nKG1f
dHlwZSk7Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fVU5L
Tk9XTjoKLSAgICAgICAgcmV0dXJuIHByZWZpeDsKLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fTUFU
UklYOiB7Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQocHJlZml4KTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJl
cihtX21hdHJpeC5hKCkpOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fbWF0cml4LmIoKSk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcgJyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNp
b25OdW1iZXIobV9tYXRyaXguYygpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAg
ICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX21hdHJpeC5kKCkpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVk
UHJlY2lzaW9uTnVtYmVyKG1fbWF0cml4LmUoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9tYXRyaXgu
ZigpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKLSAgICAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKLSAgICB9Ci0gICAgY2FzZSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFURTog
ewotICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHByZWZpeCk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9t
YXRyaXguZSgpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmRGaXhlZFByZWNpc2lvbk51bWJlcihtX21hdHJpeC5mKCkpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZCgnKScpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotICAg
IH0KLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0NBTEU6IHsKLSAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXgpOwotICAgICAgICBidWls
ZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fbWF0cml4LnhTY2FsZSgpKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRGaXhlZFByZWNp
c2lvbk51bWJlcihtX21hdHJpeC55U2NhbGUoKSk7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcp
Jyk7Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIGNhc2Ug
U1ZHX1RSQU5TRk9STV9ST1RBVEU6IHsKLSAgICAgICAgZG91YmxlIGFuZ2xlSW5SYWQgPSBkZWcy
cmFkKG1fYW5nbGUpOwotICAgICAgICBkb3VibGUgY29zQW5nbGUgPSBzdGQ6OmNvcyhhbmdsZUlu
UmFkKTsKLSAgICAgICAgZG91YmxlIHNpbkFuZ2xlID0gc3RkOjpzaW4oYW5nbGVJblJhZCk7Ci0g
ICAgICAgIGZsb2F0IGN4ID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChjb3NBbmdsZSAhPSAxID8g
KG1fbWF0cml4LmUoKSAqICgxIC0gY29zQW5nbGUpIC0gbV9tYXRyaXguZigpICogc2luQW5nbGUp
IC8gKDEgLSBjb3NBbmdsZSkgLyAyIDogMCk7Ci0gICAgICAgIGZsb2F0IGN5ID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChjb3NBbmdsZSAhPSAxID8gKG1fbWF0cml4LmUoKSAqIHNpbkFuZ2xlIC8g
KDEgLSBjb3NBbmdsZSkgKyBtX21hdHJpeC5mKCkpIC8gMiA6IDApOwotICAgICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKHByZWZpeCk7Ci0gICAgICAg
IGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIobV9hbmdsZSk7Ci0gICAgICAgIGlm
IChjeCB8fCBjeSkgewotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVjaXNpb25OdW1iZXIoY3gpOwotICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kRml4ZWRQcmVj
aXNpb25OdW1iZXIoY3kpOwotICAgICAgICB9Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7
Ci0gICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAgfQotICAgIGNhc2UgU1ZH
X1RSQU5TRk9STV9TS0VXWDoKLSAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1k6IHsKLSAgICAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXgp
OwotICAgICAgICBidWlsZGVyLmFwcGVuZEZpeGVkUHJlY2lzaW9uTnVtYmVyKG1fYW5nbGUpOwot
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwotICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwotICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAppbmRleCA0OTkxOWJiM2RjYTFlYjJjOTAxN2M1
M2NkZTE0Y2NlNWM1ZGUzZWJhLi42NTkyMDhlNmM1Mzk4OGIwMmM0YThmZGUzZGQ2NGZjMjE4MTA5
NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaApAQCAtMjEsOCArMjEs
MTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5j
bHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiU1ZHTWF0cml4LmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUs
MzkgKzUwLDI0MyBAQCBwdWJsaWM6CiAgICAgICAgIENvbnN0cnVjdFplcm9UcmFuc2Zvcm0KICAg
ICB9OwogCi0gICAgU1ZHVHJhbnNmb3JtVmFsdWUoKTsKLSAgICBTVkdUcmFuc2Zvcm1WYWx1ZShT
VkdUcmFuc2Zvcm1UeXBlLCBDb25zdHJ1Y3Rpb25Nb2RlID0gQ29uc3RydWN0SWRlbnRpdHlUcmFu
c2Zvcm0pOwotICAgIGV4cGxpY2l0IFNWR1RyYW5zZm9ybVZhbHVlKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYpOworICAgIFNWR1RyYW5zZm9ybVZhbHVlKFNWR1RyYW5zZm9ybVR5cGUgdHlwZSA9IFNW
R19UUkFOU0ZPUk1fTUFUUklYLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSA9IHsg
fSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX21hdHJpeChTVkdNYXRyaXg6
OmNyZWF0ZSh0cmFuc2Zvcm0pKQorICAgIHsKKyAgICB9CiAKLSAgICBTVkdUcmFuc2Zvcm1UeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBTVkdUcmFuc2Zvcm1WYWx1ZShj
b25zdCBTVkdUcmFuc2Zvcm1WYWx1ZSYgb3RoZXIpCisgICAgICAgIDogbV90eXBlKG90aGVyLm1f
dHlwZSkKKyAgICAgICAgLCBtX21hdHJpeChTVkdNYXRyaXg6OmNyZWF0ZShvdGhlci5tYXRyaXgo
KS0+dmFsdWUoKSkpCisgICAgICAgICwgbV9hbmdsZShvdGhlci5tX2FuZ2xlKQorICAgICAgICAs
IG1fcm90YXRpb25DZW50ZXIob3RoZXIubV9yb3RhdGlvbkNlbnRlcikKKyAgICB7CisgICAgfQor
CisgICAgU1ZHVHJhbnNmb3JtVmFsdWUoU1ZHVHJhbnNmb3JtVHlwZSB0eXBlLCBSZWY8U1ZHTWF0
cml4PiYmIG1hdHJpeCwgZmxvYXQgYW5nbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHJvdGF0aW9uQ2Vu
dGVyKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fbWF0cml4KFdURk1vdmUo
bWF0cml4KSkKKyAgICAgICAgLCBtX2FuZ2xlKGFuZ2xlKQorICAgICAgICAsIG1fcm90YXRpb25D
ZW50ZXIocm90YXRpb25DZW50ZXIpCisgICAgeworICAgIH0KIAotICAgIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgbWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KLSAgICBBZmZpbmVU
cmFuc2Zvcm0mIG1hdHJpeCgpIHsgcmV0dXJuIG1fbWF0cml4OyB9Ci0gICAgdm9pZCB1cGRhdGVT
VkdNYXRyaXgoKTsKKyAgICBTVkdUcmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm1WYWx1ZSYmIG90
aGVyKQorICAgICAgICA6IG1fdHlwZShvdGhlci5tX3R5cGUpCisgICAgICAgICwgbV9tYXRyaXgo
b3RoZXIubV9tYXRyaXguY29weVJlZigpKQorICAgICAgICAsIG1fYW5nbGUob3RoZXIubV9hbmds
ZSkKKyAgICAgICAgLCBtX3JvdGF0aW9uQ2VudGVyKG90aGVyLm1fcm90YXRpb25DZW50ZXIpCisg
ICAgeworICAgIH0KIAorICAgIFNWR1RyYW5zZm9ybVZhbHVlJiBvcGVyYXRvcj0oY29uc3QgU1ZH
VHJhbnNmb3JtVmFsdWUmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV90eXBlID0gb3RoZXIubV90
eXBlOworICAgICAgICBtX21hdHJpeC0+c2V0VmFsdWUob3RoZXIubV9tYXRyaXgtPnZhbHVlKCkp
OworICAgICAgICBtX2FuZ2xlID0gb3RoZXIubV9hbmdsZTsKKyAgICAgICAgbV9yb3RhdGlvbkNl
bnRlciA9IG90aGVyLm1fcm90YXRpb25DZW50ZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICBTVkdUcmFuc2Zvcm1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KKyAgICBjb25zdCBSZWY8U1ZHTWF0cml4PiYgbWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9t
YXRyaXg7IH0KICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5nbGU7IH0KLSAg
ICBGbG9hdFBvaW50IHJvdGF0aW9uQ2VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9jZW50ZXI7IH0K
LQotICAgIHZvaWQgc2V0TWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgIHZvaWQg
c2V0VHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSk7Ci0gICAgdm9pZCBzZXRTY2FsZShmbG9h
dCBzeCwgZmxvYXQgc3kpOwotICAgIHZvaWQgc2V0Um90YXRlKGZsb2F0IGFuZ2xlLCBmbG9hdCBj
eCwgZmxvYXQgY3kpOwotICAgIHZvaWQgc2V0U2tld1goZmxvYXQgYW5nbGUpOwotICAgIHZvaWQg
c2V0U2tld1koZmxvYXQgYW5nbGUpOwotICAgIAotICAgIEZsb2F0UG9pbnQgdHJhbnNsYXRlKCkg
Y29uc3Q7Ci0gICAgRmxvYXRTaXplIHNjYWxlKCkgY29uc3Q7CisgICAgRmxvYXRQb2ludCByb3Rh
dGlvbkNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRpb25DZW50ZXI7IH0KIAogICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBTVkdfVFJBTlNGT1JNX1VOS05P
V047IH0KLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwogCi0gICAgc3RhdGljIGNv
bnN0IFN0cmluZyYgdHJhbnNmb3JtVHlwZVByZWZpeEZvclBhcnNpbmcoU1ZHVHJhbnNmb3JtVHlw
ZSk7CisgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCisg
ICAgeworICAgICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX01BVFJJWDsKKyAgICAgICAgbV9h
bmdsZSA9IDA7CisgICAgICAgIG1fcm90YXRpb25DZW50ZXIgPSBGbG9hdFBvaW50KCk7CisgICAg
ICAgIG1fbWF0cml4LT5zZXRWYWx1ZShtYXRyaXgpOworICAgIH0KKworICAgIHZvaWQgbWF0cml4
RGlkQ2hhbmdlKCkKKyAgICB7CisgICAgICAgIC8vIFRoZSB1bmRlcmx5aW5nIG1hdHJpeCBoYXMg
YmVlbiBjaGFuZ2VkLCBhbHRlciB0aGUgdHJhbnNmb3JtYXRpb24gdHlwZS4KKyAgICAgICAgLy8g
U3BlYzogSW4gY2FzZSB0aGUgbWF0cml4IG9iamVjdCBpcyBjaGFuZ2VkIGRpcmVjdGx5IChpLmUu
LCB3aXRob3V0IHVzaW5nIHRoZSBtZXRob2RzIG9uIHRoZSBTVkdUcmFuc2Zvcm0gaW50ZXJmYWNl
IGl0c2VsZikKKyAgICAgICAgLy8gdGhlbiB0aGUgdHlwZSBvZiB0aGUgU1ZHVHJhbnNmb3JtIGNo
YW5nZXMgdG8gU1ZHX1RSQU5TRk9STV9NQVRSSVguCisgICAgICAgIG1fdHlwZSA9IFNWR19UUkFO
U0ZPUk1fTUFUUklYOworICAgICAgICBtX2FuZ2xlID0gMDsKKyAgICAgICAgbV9yb3RhdGlvbkNl
bnRlciA9IEZsb2F0UG9pbnQoKTsKKyAgICB9CisKKyAgICBGbG9hdFBvaW50IHRyYW5zbGF0ZSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gRmxvYXRQb2ludDo6bmFycm93UHJlY2lzaW9u
KG1fbWF0cml4LT5lKCksIG1fbWF0cml4LT5mKCkpOworICAgIH0KKworICAgIHZvaWQgc2V0VHJh
bnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSkKKyAgICB7CisgICAgICAgIG1fdHlwZSA9IFNWR19U
UkFOU0ZPUk1fVFJBTlNMQVRFOworICAgICAgICBtX2FuZ2xlID0gMDsKKyAgICAgICAgbV9yb3Rh
dGlvbkNlbnRlciA9IEZsb2F0UG9pbnQoKTsKKyAgICAgICAgCisgICAgICAgIG1fbWF0cml4LT52
YWx1ZSgpLm1ha2VJZGVudGl0eSgpOworICAgICAgICBtX21hdHJpeC0+dmFsdWUoKS50cmFuc2xh
dGUodHgsIHR5KTsKKyAgICB9CisKKyAgICBGbG9hdFNpemUgc2NhbGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKG1fbWF0cml4LT5hKCks
IG1fbWF0cml4LT5kKCkpOworICAgIH0KKworICAgIHZvaWQgc2V0U2NhbGUoZmxvYXQgc3gsIGZs
b2F0IHN5KQorICAgIHsKKyAgICAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9TQ0FMRTsKKyAg
ICAgICAgbV9hbmdsZSA9IDA7CisgICAgICAgIG1fcm90YXRpb25DZW50ZXIgPSBGbG9hdFBvaW50
KCk7CisgICAgICAgIAorICAgICAgICBtX21hdHJpeC0+dmFsdWUoKS5tYWtlSWRlbnRpdHkoKTsK
KyAgICAgICAgbV9tYXRyaXgtPnZhbHVlKCkuc2NhbGVOb25Vbmlmb3JtKHN4LCBzeSk7CisgICAg
fQorCisgICAgdm9pZCBzZXRSb3RhdGUoZmxvYXQgYW5nbGUsIGZsb2F0IGN4LCBmbG9hdCBjeSkK
KyAgICB7CisgICAgICAgIG1fdHlwZSA9IFNWR19UUkFOU0ZPUk1fUk9UQVRFOworICAgICAgICBt
X2FuZ2xlID0gYW5nbGU7CisgICAgICAgIG1fcm90YXRpb25DZW50ZXIgPSBGbG9hdFBvaW50KGN4
LCBjeSk7CisKKyAgICAgICAgLy8gVE9ETzogdG9TdHJpbmcoKSBpbXBsZW1lbnRhdGlvbiwgd2hp
Y2ggY2FuIHNob3cgY3gsIGN5IChuZWVkIHRvIGJlIHN0b3JlZD8pCisgICAgICAgIG1fbWF0cml4
LT52YWx1ZSgpLm1ha2VJZGVudGl0eSgpOworICAgICAgICBtX21hdHJpeC0+dmFsdWUoKS50cmFu
c2xhdGUoY3gsIGN5KTsKKyAgICAgICAgbV9tYXRyaXgtPnZhbHVlKCkucm90YXRlKGFuZ2xlKTsK
KyAgICAgICAgbV9tYXRyaXgtPnZhbHVlKCkudHJhbnNsYXRlKC1jeCwgLWN5KTsKKyAgICB9CisK
KyAgICB2b2lkIHNldFNrZXdYKGZsb2F0IGFuZ2xlKQorICAgIHsKKyAgICAgICAgbV90eXBlID0g
U1ZHX1RSQU5TRk9STV9TS0VXWDsKKyAgICAgICAgbV9hbmdsZSA9IGFuZ2xlOworICAgICAgICBt
X3JvdGF0aW9uQ2VudGVyID0gRmxvYXRQb2ludCgpOworICAgICAgICAKKyAgICAgICAgbV9tYXRy
aXgtPnZhbHVlKCkubWFrZUlkZW50aXR5KCk7CisgICAgICAgIG1fbWF0cml4LT52YWx1ZSgpLnNr
ZXdYKGFuZ2xlKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFNrZXdZKGZsb2F0IGFuZ2xlKQorICAg
IHsKKyAgICAgICAgbV90eXBlID0gU1ZHX1RSQU5TRk9STV9TS0VXWTsKKyAgICAgICAgbV9hbmds
ZSA9IGFuZ2xlOworICAgICAgICBtX3JvdGF0aW9uQ2VudGVyID0gRmxvYXRQb2ludCgpOworICAg
ICAgICAKKyAgICAgICAgbV9tYXRyaXgtPnZhbHVlKCkubWFrZUlkZW50aXR5KCk7CisgICAgICAg
IG1fbWF0cml4LT52YWx1ZSgpLnNrZXdZKGFuZ2xlKTsKKyAgICB9CisKKyAgICBTdHJpbmcgdmFs
dWVBc1N0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHByZWZpeEZvclRyYW5zZnJvbVR5cGUobV90eXBlKSk7
CisgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9V
TktOT1dOOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9N
QVRSSVg6CisgICAgICAgICAgICBhcHBlbmRNYXRyaXgoYnVpbGRlcik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1RSQU5TTEFURToKKyAgICAgICAgICAg
IGFwcGVuZFRyYW5zbGF0ZShidWlsZGVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFNWR19UUkFOU0ZPUk1fU0NBTEU6CisgICAgICAgICAgICBhcHBlbmRTY2FsZShidWlsZGVy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fUk9UQVRF
OgorICAgICAgICAgICAgYXBwZW5kUm90YXRlKGJ1aWxkZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9TS0VXWDoKKyAgICAgICAgICAgIGFwcGVuZFNr
ZXdYKGJ1aWxkZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHX1RSQU5T
Rk9STV9TS0VXWToKKyAgICAgICAgICAgIGFwcGVuZFNrZXdZKGJ1aWxkZXIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgU3RyaW5nIHByZWZpeEZvclRyYW5zZnJvbVR5cGUoU1ZHVHJh
bnNmb3JtVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAg
IGNhc2UgU1ZHX1RSQU5TRk9STV9VTktOT1dOOgorICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CisgICAgICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9NQVRSSVg6CisgICAgICAgICAgICBy
ZXR1cm4gIm1hdHJpeCgiX3M7CisgICAgICAgIGNhc2UgU1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU6
CisgICAgICAgICAgICByZXR1cm4gInRyYW5zbGF0ZSgiX3M7CisgICAgICAgIGNhc2UgU1ZHX1RS
QU5TRk9STV9TQ0FMRToKKyAgICAgICAgICAgIHJldHVybiAic2NhbGUoIl9zOworICAgICAgICBj
YXNlIFNWR19UUkFOU0ZPUk1fUk9UQVRFOgorICAgICAgICAgICAgcmV0dXJuICJyb3RhdGUoIl9z
OworICAgICAgICBjYXNlIFNWR19UUkFOU0ZPUk1fU0tFV1g6CisgICAgICAgICAgICByZXR1cm4g
InNrZXdYKCJfczsKKyAgICAgICAgY2FzZSBTVkdfVFJBTlNGT1JNX1NLRVdZOgorICAgICAgICAg
ICAgcmV0dXJuICJza2V3WSgiX3M7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIH0KIAogcHJpdmF0ZToK
KyAgICBzdGF0aWMgdm9pZCBhcHBlbmROdW1iZXJzKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCisg
ICAgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE51bWJlciwgdHlwZW5hbWUuLi4gTnVtYmVycz4KKyAgICBzdGF0aWMgdm9pZCBh
cHBlbmROdW1iZXJzKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIE51bWJlciBudW1iZXIsIE51bWJl
cnMuLi4gbnVtYmVycykKKyAgICB7CisgICAgICAgIGlmIChidWlsZGVyLmxlbmd0aCgpICYmIGJ1
aWxkZXJbYnVpbGRlci5sZW5ndGgoKSAtIDFdICE9ICcoJykKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcgJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKG51bWJlcik7CisgICAg
ICAgIGFwcGVuZE51bWJlcnMoYnVpbGRlciwgbnVtYmVycy4uLik7CisgICAgfQorCisgICAgdm9p
ZCBhcHBlbmRNYXRyaXgoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIGFwcGVuZE51bWJlcnMoYnVpbGRlciwgbV9tYXRyaXgtPmEoKSwgbV9tYXRyaXgtPmIoKSwg
bV9tYXRyaXgtPmMoKSwgbV9tYXRyaXgtPmQoKSwgbV9tYXRyaXgtPmUoKSwgbV9tYXRyaXgtPmYo
KSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUcmFuc2xhdGUoU3RyaW5nQnVpbGRlciYgYnVp
bGRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGFwcGVuZE51bWJlcnMoYnVpbGRlciwgbV9tYXRy
aXgtPmUoKSwgbV9tYXRyaXgtPmYoKSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRTY2FsZShT
dHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgYXBwZW5kTnVtYmVy
cyhidWlsZGVyLCBtX21hdHJpeC0+dmFsdWUoKS54U2NhbGUoKSwgbV9tYXRyaXgtPnZhbHVlKCku
eVNjYWxlKCkpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kUm90YXRlKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIpIGNvbnN0CisgICAgeworICAgICAgICBkb3VibGUgYW5nbGVJblJhZCA9IGRlZzJy
YWQobV9hbmdsZSk7CisgICAgICAgIGRvdWJsZSBjb3NBbmdsZSA9IHN0ZDo6Y29zKGFuZ2xlSW5S
YWQpOworICAgICAgICBkb3VibGUgc2luQW5nbGUgPSBzdGQ6OnNpbihhbmdsZUluUmFkKTsKKwor
ICAgICAgICBmbG9hdCBjeCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29zQW5nbGUgIT0gMSA/
IChtX21hdHJpeC0+ZSgpICogKDEgLSBjb3NBbmdsZSkgLSBtX21hdHJpeC0+ZigpICogc2luQW5n
bGUpIC8gKDEgLSBjb3NBbmdsZSkgLyAyIDogMCk7CisgICAgICAgIGZsb2F0IGN5ID0gbmFycm93
UHJlY2lzaW9uVG9GbG9hdChjb3NBbmdsZSAhPSAxID8gKG1fbWF0cml4LT5lKCkgKiBzaW5Bbmds
ZSAvICgxIC0gY29zQW5nbGUpICsgbV9tYXRyaXgtPmYoKSkgLyAyIDogMCk7CisKKyAgICAgICAg
aWYgKGN4IHx8IGN5KQorICAgICAgICAgICAgYXBwZW5kTnVtYmVycyhidWlsZGVyLCBtX2FuZ2xl
LCBjeCwgY3kpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcHBlbmROdW1iZXJzKGJ1aWxk
ZXIsIG1fYW5nbGUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kU2tld1goU3RyaW5nQnVpbGRl
ciYgYnVpbGRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGFwcGVuZE51bWJlcnMoYnVpbGRlciwg
bV9hbmdsZSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRTa2V3WShTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgYXBwZW5kTnVtYmVycyhidWlsZGVyLCBtX2Fu
Z2xlKTsKKyAgICB9CisKICAgICBTVkdUcmFuc2Zvcm1UeXBlIG1fdHlwZSB7IFNWR19UUkFOU0ZP
Uk1fVU5LTk9XTiB9OworICAgIFJlZjxTVkdNYXRyaXg+IG1fbWF0cml4OwogICAgIGZsb2F0IG1f
YW5nbGUgeyAwIH07Ci0gICAgRmxvYXRQb2ludCBtX2NlbnRlcjsKLSAgICBBZmZpbmVUcmFuc2Zv
cm0gbV9tYXRyaXg7CisgICAgRmxvYXRQb2ludCBtX3JvdGF0aW9uQ2VudGVyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybWFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3Bw
CmluZGV4IGI4YzBiZWRhZTA0YzMyYWE1NTE4ZDI5N2U3ZGY4OWNmZGEzZWIxNWUuLjA2ZDdhNjIz
NWI1NDdkZmM1OGQ4NTYzNWJiYjYzMWRkMTI4Nzg2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VHJhbnNmb3JtYWJsZS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDQsNyArMTQzLDcg
QEAgc3RhdGljIGNvbnN0IFVDaGFyIHRyYW5zbGF0ZURlc2NbXSA9ICB7J3QnLCAncicsICdhJywg
J24nLCAncycsICdsJywgJ2EnLCAndCcsICcKIHN0YXRpYyBjb25zdCBVQ2hhciByb3RhdGVEZXNj
W10gPSAgeydyJywgJ28nLCAndCcsICdhJywgJ3QnLCAnZSd9Owogc3RhdGljIGNvbnN0IFVDaGFy
IG1hdHJpeERlc2NbXSA9ICB7J20nLCAnYScsICd0JywgJ3InLCAnaScsICd4J307CiAKLXN0YXRp
YyBpbmxpbmUgYm9vbCBwYXJzZUFuZFNraXBUeXBlKGNvbnN0IFVDaGFyKiYgY3VyclRyYW5zZm9y
bSwgY29uc3QgVUNoYXIqIGVuZCwgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUm
IHR5cGUpCitib29sIFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlQW5kU2tpcFR5cGUoY29uc3QgVUNo
YXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciogZW5kLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6
U1ZHVHJhbnNmb3JtVHlwZSYgdHlwZSkKIHsKICAgICBpZiAoY3VyclRyYW5zZm9ybSA+PSBlbmQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3OSwzNCArMTc4LDQgQEAgU1ZHVHJhbnNmb3Jt
VmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1U
eXBlKGNvbnN0IFMKICAgICByZXR1cm4gdHlwZTsKIH0KIAotYm9vbCBTVkdUcmFuc2Zvcm1hYmxl
OjpwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiBsaXN0LCBj
b25zdCBVQ2hhciomIGN1cnJUcmFuc2Zvcm0sIGNvbnN0IFVDaGFyKiBlbmQsIFRyYW5zZm9ybVBh
cnNpbmdNb2RlIG1vZGUpCi17Ci0gICAgaWYgKG1vZGUgPT0gQ2xlYXJMaXN0KQotICAgICAgICBs
aXN0LmNsZWFyKCk7Ci0KLSAgICBib29sIGRlbGltUGFyc2VkID0gZmFsc2U7Ci0gICAgd2hpbGUg
KGN1cnJUcmFuc2Zvcm0gPCBlbmQpIHsKLSAgICAgICAgZGVsaW1QYXJzZWQgPSBmYWxzZTsKLSAg
ICAgICAgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSA9IFNWR1RyYW5z
Zm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX1VOS05PV047Ci0gICAgICAgIHNraXBPcHRpb25hbFNW
R1NwYWNlcyhjdXJyVHJhbnNmb3JtLCBlbmQpOwotCi0gICAgICAgIGlmICghcGFyc2VBbmRTa2lw
VHlwZShjdXJyVHJhbnNmb3JtLCBlbmQsIHR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIFNWR1RyYW5zZm9ybVZhbHVlIHRyYW5zZm9ybTsKLSAgICAgICAgaWYgKCFw
YXJzZVRyYW5zZm9ybVZhbHVlKHR5cGUsIGN1cnJUcmFuc2Zvcm0sIGVuZCwgdHJhbnNmb3JtKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBsaXN0LmFwcGVuZCh0cmFuc2Zv
cm0pOwotICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3VyclRyYW5zZm9ybSwgZW5kKTsK
LSAgICAgICAgaWYgKGN1cnJUcmFuc2Zvcm0gPCBlbmQgJiYgKmN1cnJUcmFuc2Zvcm0gPT0gJywn
KSB7Ci0gICAgICAgICAgICBkZWxpbVBhcnNlZCA9IHRydWU7Ci0gICAgICAgICAgICArK2N1cnJU
cmFuc2Zvcm07Ci0gICAgICAgIH0KLSAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1cnJU
cmFuc2Zvcm0sIGVuZCk7Ci0gICAgfQotCi0gICAgcmV0dXJuICFkZWxpbVBhcnNlZDsKLX0KLQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKaW5kZXggYjVlMDcxNzVhNWJiMGVk
ZTRhYmY5N2Y3M2VkZDYzMWE4YzQzNjdlNy4uYjcwY2Y4YzJmNWJmZmY2YTIxN2JiMGFmNjYyMWQ0
MTNmOTFmN2E4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFi
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCkBAIC0yNywy
MCArMjcsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIEFmZmluZVRyYW5z
Zm9ybTsKLWNsYXNzIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM7CiAKIGNsYXNzIFNWR1RyYW5zZm9y
bWFibGUgOiBwdWJsaWMgU1ZHTG9jYXRhYmxlIHsKIHB1YmxpYzoKLSAgICBlbnVtIFRyYW5zZm9y
bVBhcnNpbmdNb2RlIHsKLSAgICAgICAgQ2xlYXJMaXN0LAotICAgICAgICBEb05vdENsZWFyTGlz
dAotICAgIH07Ci0KICAgICB2aXJ0dWFsIH5TVkdUcmFuc2Zvcm1hYmxlKCk7CiAKLSAgICBzdGF0
aWMgYm9vbCBwYXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiwg
Y29uc3QgVUNoYXIqJiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQsIFRyYW5zZm9ybVBhcnNpbmdNb2Rl
ID0gQ2xlYXJMaXN0KTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybVZhbHVlKFNWR1Ry
YW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlLCBjb25zdCBVQ2hhciomIHB0ciwgY29uc3Qg
VUNoYXIqIGVuZCwgU1ZHVHJhbnNmb3JtVmFsdWUmKTsKICAgICBzdGF0aWMgU1ZHVHJhbnNmb3Jt
VmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgcGFyc2VUcmFuc2Zvcm1UeXBlKGNvbnN0IFN0cmluZyYp
OworICAgIHN0YXRpYyBib29sIHBhcnNlQW5kU2tpcFR5cGUoY29uc3QgVUNoYXIqJiBjdXJyVHJh
bnNmb3JtLCBjb25zdCBVQ2hhciogZW5kLCBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3Jt
VHlwZSYpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNm
b3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGFuaW1h
dGVkTG9jYWxUcmFuc2Zvcm0oKTsgfQogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGFuaW1h
dGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTA3NGI5NThhMGZkMTgxMzU0YzY0ZDVmMTdmZDE5YWNk
OTcwYzJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWYWx1ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMuaCIKLQotI2luY2x1ZGUg
PHd0Zi9WYXJpYW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgU1ZHVmFsdWVW
YXJpYW50ID0gVmFyaWFudDwKLSAgICBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzKgotPjsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Zp
ZXdTcGVjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKaW5kZXggMTBk
OTI0M2E3M2ZmYmM1YjA4MjM4NmIwNDQ1YzM0MmVkNmEyNGZhYS4uOGYyOTcwZGM0NWZlZGI3YzZh
OWE3OTM2OThhY2ZlNmVmZTcyNzI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1ZpZXdTcGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCkBA
IC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiU1ZHVmlld1NwZWMuaCIKIAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCkBAIC0zNiwxNiArMzUsMTIgQEAgU1ZHVmlld1NwZWM6OlNWR1ZpZXdTcGVj
KFNWR0VsZW1lbnQmIGNvbnRleHRFbGVtZW50KQogICAgIDogU1ZHRml0VG9WaWV3Qm94KCZjb250
ZXh0RWxlbWVudCwgU1ZHUHJvcGVydHlBY2Nlc3M6OlJlYWRPbmx5KQogICAgICwgbV9jb250ZXh0
RWxlbWVudChtYWtlV2Vha1B0cihjb250ZXh0RWxlbWVudCkpCiAgICAgLCBtX2F0dHJpYnV0ZU93
bmVyUHJveHkoKnRoaXMsIGNvbnRleHRFbGVtZW50KQorICAgICwgbV90cmFuc2Zvcm0oU1ZHVHJh
bnNmb3JtTGlzdDo6Y3JlYXRlKCZjb250ZXh0RWxlbWVudCwgU1ZHUHJvcGVydHlBY2Nlc3M6OlJl
YWRPbmx5KSkKIHsKLSAgICByZWdpc3RlckF0dHJpYnV0ZXMoKTsKLX0KLQotdm9pZCBTVkdWaWV3
U3BlYzo6cmVnaXN0ZXJBdHRyaWJ1dGVzKCkKLXsKLSAgICBhdXRvJiByZWdpc3RyeSA9IGF0dHJp
YnV0ZVJlZ2lzdHJ5KCk7Ci0gICAgaWYgKCFyZWdpc3RyeS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICByZWdpc3RyeS5yZWdpc3RlckF0dHJpYnV0ZTxTVkdOYW1lczo6dHJhbnNmb3Jt
QXR0ciwgJlNWR1ZpZXdTcGVjOjptX3RyYW5zZm9ybT4oKTsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAg
ICAgUHJvcGVydHlSZWdpc3RyeTo6cmVnaXN0ZXJQcm9wZXJ0eTxTVkdOYW1lczo6dHJhbnNmb3Jt
QXR0ciwgJlNWR1ZpZXdTcGVjOjptX3RyYW5zZm9ybT4oKTsKKyAgICB9KTsKIH0KIAogU1ZHRWxl
bWVudCogU1ZHVmlld1NwZWM6OnZpZXdUYXJnZXQoKSBjb25zdApAQCAtNTgsMTggKzUzLDEwIEBA
IFNWR0VsZW1lbnQqIFNWR1ZpZXdTcGVjOjp2aWV3VGFyZ2V0KCkgY29uc3QKICAgICByZXR1cm4g
ZG93bmNhc3Q8U1ZHRWxlbWVudD4oZWxlbWVudCk7CiB9CiAKLVJlZlB0cjxTVkdUcmFuc2Zvcm1M
aXN0PiBTVkdWaWV3U3BlYzo6dHJhbnNmb3JtKCkKLXsKLSAgICBpZiAoIW1fY29udGV4dEVsZW1l
bnQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIC8vIFJldHVybiB0aGUgYW5pbVZhbCBo
ZXJlLCBhcyBpdHMgcmVhZG9ubHkgYnkgZGVmYXVsdCAtIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCB3
ZSB3YW50IGhlcmUuCi0gICAgcmV0dXJuIG1fdHJhbnNmb3JtLmFuaW1hdGVkUHJvcGVydHkobV9h
dHRyaWJ1dGVPd25lclByb3h5KS0+YW5pbVZhbCgpOwotfQotCiB2b2lkIFNWR1ZpZXdTcGVjOjpy
ZXNldCgpCiB7CiAgICAgbV92aWV3VGFyZ2V0U3RyaW5nID0gZW1wdHlTdHJpbmcoKTsKLSAgICBt
X3RyYW5zZm9ybS5yZXNldFZhbHVlKCk7CisgICAgbV90cmFuc2Zvcm0tPmNsZWFySXRlbXMoKTsK
ICAgICBTVkdGaXRUb1ZpZXdCb3g6OnJlc2V0KCk7CiAgICAgU1ZHWm9vbUFuZFBhbjo6cmVzZXQo
KTsKIH0KQEAgLTE1Miw3ICsxMzksNyBAQCBib29sIFNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVj
KGNvbnN0IFN0cmluZyYgdmlld1NwZWMpCiAgICAgICAgICAgICBpZiAoY3VyclZpZXdTcGVjID49
IGVuZCB8fCAqY3VyclZpZXdTcGVjICE9ICcoJykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICBjdXJyVmlld1NwZWMrKzsKLSAgICAgICAgICAgIFNWR1RyYW5zZm9y
bWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0cmlidXRlKG1fdHJhbnNmb3JtLnZhbHVlKCksIGN1cnJW
aWV3U3BlYywgZW5kLCBTVkdUcmFuc2Zvcm1hYmxlOjpEb05vdENsZWFyTGlzdCk7CisgICAgICAg
ICAgICBtX3RyYW5zZm9ybS0+cGFyc2UoY3VyclZpZXdTcGVjLCBlbmQpOwogICAgICAgICAgICAg
aWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKScpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY3VyclZpZXdTcGVjKys7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3U3BlYy5oCmluZGV4IGQxYTIxNzNmZWY3MTgxOTkyMDBjMGUwNTI2MGMxZGU5
OWMwN2Q5YTQuLmNhNGFmNWYwYWJiN2M2ZGZjYmYwOTllNmRmNjY5MGVlZWM1Zjk3MmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWaWV3U3BlYy5oCkBAIC0yMSw3ICsyMSw2IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3RW
YWx1ZXMuaCIKICNpbmNsdWRlICJTVkdab29tQW5kUGFuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQzLDkgKzQyLDggQEAgcHVibGljOgogICAgIFNWR0VsZW1lbnQqIHZpZXdUYXJnZXQo
KSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHZpZXdUYXJnZXRTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZXdUYXJnZXRTdHJpbmc7IH0KIAotICAgIFN0cmluZyB0cmFuc2Zvcm1TdHJpbmco
KSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybS50b1N0cmluZygpOyB9Ci0gICAgUmVmUHRyPFNW
R1RyYW5zZm9ybUxpc3Q+IHRyYW5zZm9ybSgpOwotICAgIFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXMg
dHJhbnNmb3JtVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybS52YWx1ZSgpOyB9Cisg
ICAgU3RyaW5nIHRyYW5zZm9ybVN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtLT52
YWx1ZUFzU3RyaW5nKCk7IH0KKyAgICBSZWY8U1ZHVHJhbnNmb3JtTGlzdD4mIHRyYW5zZm9ybSgp
IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKICAgICBjb25zdCBXZWFrUHRyPFNWR0VsZW1lbnQ+
JiBjb250ZXh0RWxlbWVudENvbmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dEVs
ZW1lbnQ7IH0KIApAQCAtNTMsMTcgKzUxLDEyIEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU1ZH
Vmlld1NwZWMoU1ZHRWxlbWVudCYpOwogCiAgICAgdXNpbmcgQXR0cmlidXRlT3duZXJQcm94eSA9
IFNWR0F0dHJpYnV0ZU93bmVyUHJveHlJbXBsPFNWR1ZpZXdTcGVjLCBTVkdGaXRUb1ZpZXdCb3g+
OwotICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQXR0cmlidXRlcygpOwotCi0gICAgc3RhdGljIEF0
dHJpYnV0ZU93bmVyUHJveHk6OkF0dHJpYnV0ZVJlZ2lzdHJ5JiBhdHRyaWJ1dGVSZWdpc3RyeSgp
IHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmF0dHJpYnV0ZVJlZ2lzdHJ5KCk7IH0KLSAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpIHsgcmV0dXJuIEF0dHJpYnV0ZU93bmVyUHJveHk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0cmlidXRlTmFtZSk7IH0KLQogICAgIHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnk8U1ZHVmlld1NwZWMsIFNWR0ZpdFRvVmlld0JveD47CiAKICAgICBX
ZWFrUHRyPFNWR0VsZW1lbnQ+IG1fY29udGV4dEVsZW1lbnQ7CiAgICAgU3RyaW5nIG1fdmlld1Rh
cmdldFN0cmluZzsKICAgICBBdHRyaWJ1dGVPd25lclByb3h5IG1fYXR0cmlidXRlT3duZXJQcm94
eTsKLSAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBdHRyaWJ1dGUgbV90cmFuc2Zvcm07Cisg
ICAgUmVmPFNWR1RyYW5zZm9ybUxpc3Q+IG1fdHJhbnNmb3JtOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCmluZGV4IDk1MmYxN2IwMzZj
ZTYxN2IzMTJmYTgyNmM4ZjQ2MjA4NzU3MzU5N2EuLmQzMjY3OGMxY2QwZTNlMGQyMzIzODBkZmIw
MjRlMzMyOWE3NjRiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgKQEAgLTMxOSw0
ICszMTksMjYgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25l
clR5cGU+CitjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBY2Nlc3NvciBmaW5hbCA6IHB1
YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3I8T3duZXJUeXBlLCBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3Q+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vz
c29yPE93bmVyVHlwZSwgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PjsKKyAgICB1c2luZyBCYXNl
Ojpwcm9wZXJ0eTsKKworcHVibGljOgorICAgIHVzaW5nIEJhc2U6OkJhc2U7CisgICAgdGVtcGxh
dGU8UmVmPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4gT3duZXJUeXBlOjoqcHJvcGVydHk+Cisg
ICAgY29uc3RleHByIHN0YXRpYyBjb25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBz
aW5nbGV0b24oKSB7IHJldHVybiBCYXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0QWNjZXNzb3IsIHByb3BlcnR5PigpOyB9CisKK3ByaXZhdGU6CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5
cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHJldHVybiBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIHByb3Bl
cnR5KG93bmVyKSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRk
aXRpdmUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShPd25lclR5
cGUmIG93bmVyLCBTVkdBdHRyaWJ1dGVBbmltYXRvciYgYW5pbWF0b3IpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICBzdGF0aWNfY2FzdDxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RBbmltYXRv
ciY+KGFuaW1hdG9yKS5hcHBlbmRBbmltYXRlZEluc3RhbmNlKHByb3BlcnR5KG93bmVyKSk7Cisg
ICAgfQorfTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCmluZGV4IDU2MzZmNzE1
ZTRlMDYwZjIyOTE0NjVhZWM3Nzc1ODQ5ODEyZGZjNjYuLmRiZDQ0MzRjZDg5Y2FmMDMxOTk0NDFl
YmQwMTdkZmM2OTNjZGRkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgKQEAgLTMw
OCw0ICszMDgsMjEgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCitjbGFzcyBTVkdBbmltYXRlZFRy
YW5zZm9ybUxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFByb3BlcnR5QW5p
bWF0b3I8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LCBTVkdBbmltYXRpb25UcmFuc2Zvcm1MaXN0
RnVuY3Rpb24+IHsKKyAgICB1c2luZyBCYXNlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9y
PFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCwgU1ZHQW5pbWF0aW9uVHJhbnNmb3JtTGlzdEZ1bmN0
aW9uPjsKKyAgICB1c2luZyBCYXNlOjpCYXNlOworCitwdWJsaWM6CisgICAgc3RhdGljIGF1dG8g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3Q+JiBhbmltYXRlZCwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCisg
ICAgeworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWQsIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBwcm9ncmVzcyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwZXJjZW50
YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCkgZmluYWwKKyAgICB7CisgICAgICAgIG1fZnVuY3Rp
b24ucHJvZ3Jlc3ModGFyZ2V0RWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIG1fYW5p
bWF0ZWQtPmFuaW1WYWwoKSk7CisgICAgfQorfTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmgKaW5kZXggOWVi
NmFmYjc0NWU0YmZiYzE3YjdjYjkxOTEzYjBiYWExMGY4N2NiNi4uNTA3MDdmOGJjODgyZDY5MmVm
OWUwNDYwOWQwODIzNmM0NzJkNjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5SW1wbC5oCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUHJpbWl0aXZlUHJvcGVydHkuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3Bl
cnR5TGlzdC5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkVmFsdWVQcm9wZXJ0eS5oIgogI2luY2x1ZGUgIlNWR0RlY29yYXRlZEVu
dW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCkBAIC00MCw2ICszOSw3IEBACiAj
aW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5oIgogI2luY2x1ZGUgIlNWR1JlY3QuaCIKKyNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTgsNiArNTgsNyBAQCB1c2luZyBTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBTVkdBbmltYXRlZFZhbHVlUHJvcGVydHk8U1ZHUHJl
c2VydmVBc3BlYwogdXNpbmcgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0ID0gU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUxpc3Q8U1ZHTGVuZ3RoTGlzdD47CiB1c2luZyBTVkdBbmltYXRlZE51bWJlckxpc3QgPSBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdDxTVkdOdW1iZXJMaXN0PjsKIHVzaW5nIFNWR0FuaW1hdGVk
UG9pbnRMaXN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eUxpc3Q8U1ZHUG9pbnRMaXN0PjsKK3VzaW5n
IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0PFNWR1Ry
YW5zZm9ybUxpc3Q+OwogCiBjbGFzcyBTVkdBbmltYXRlZE9yaWVudFR5cGUgOiBwdWJsaWMgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzk3MjAy
NDY5MWZjYjczMzRhMTE0MGU2MzU2YTU5ODI1YzU5ZTQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zv
cm1MaXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkTGlzdFBy
b3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzPiB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY+IGNyZWF0ZShT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFNWR1RyYW5z
Zm9ybUxpc3RWYWx1ZXMmIHZhbHVlcykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0RWxl
bWVudCk7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdFByb3BlcnR5VGVhck9mZihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0
ZWRQcm9wZXJ0eVR5cGUsIHZhbHVlcykpOwotICAgIH0KLQotICAgIFJlZjxMaXN0UHJvcGVydHlU
ZWFyT2ZmPiBiYXNlVmFsKCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmIChtX2Jhc2VWYWwpCi0g
ICAgICAgICAgICByZXR1cm4gKnN0YXRpY19jYXN0PExpc3RQcm9wZXJ0eVRlYXJPZmYqPihtX2Jh
c2VWYWwuZ2V0KCkpOwotCi0gICAgICAgIGF1dG8gcHJvcGVydHkgPSBTVkdUcmFuc2Zvcm1MaXN0
OjpjcmVhdGUoKnRoaXMsIEJhc2VWYWxSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVycyk7Ci0gICAg
ICAgIG1fYmFzZVZhbCA9IG1ha2VXZWFrUHRyKHByb3BlcnR5LmdldCgpKTsKLSAgICAgICAgcmV0
dXJuIHByb3BlcnR5OwotICAgIH0KLQotICAgIFJlZjxMaXN0UHJvcGVydHlUZWFyT2ZmPiBhbmlt
VmFsKCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmIChtX2FuaW1WYWwpCi0gICAgICAgICAgICBy
ZXR1cm4gKnN0YXRpY19jYXN0PExpc3RQcm9wZXJ0eVRlYXJPZmYqPihtX2FuaW1WYWwuZ2V0KCkp
OwotCi0gICAgICAgIGF1dG8gcHJvcGVydHkgPSBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGUoKnRo
aXMsIEFuaW1WYWxSb2xlLCBtX3ZhbHVlcywgbV93cmFwcGVycyk7Ci0gICAgICAgIG1fYW5pbVZh
bCA9IG1ha2VXZWFrUHRyKHByb3BlcnR5LmdldCgpKTsKLSAgICAgICAgcmV0dXJuIHByb3BlcnR5
OwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0
eVRlYXJPZmYoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBl
LCBTVkdUcmFuc2Zvcm1MaXN0VmFsdWVzJiB2YWx1ZXMpCi0gICAgICAgIDogU1ZHQW5pbWF0ZWRM
aXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxpc3RWYWx1ZXM+KGNvbnRleHRFbGVtZW50
LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgdmFsdWVzKQotICAgIHsKLSAg
ICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uSW1wbC5oCmluZGV4IDhmZDk1NDM0MDNhZDczMDViNGU1ZWM2YjA5MDI4YjlkNWFh
YmY2YzAuLmFjMWY1ODcyYTU0NDJmZWRiYjg2YjJlZWQ2MzI0NDI2MWI3NjM4ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlz
dEZ1bmN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oCkBAIC0yNyw3ICsyNywxMCBAQAogCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCIKICNpbmNsdWRlICJT
VkdMZW5ndGhMaXN0LmgiCisjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgogI2luY2x1ZGUgIlNW
R1BvaW50TGlzdC5oIgorI2luY2x1ZGUgIlNWR1RyYW5zZm9ybURpc3RhbmNlLmgiCisjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE5OSw0
ICsyMDIsNzMgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCitjbGFzcyBTVkdBbmltYXRpb25UcmFu
c2Zvcm1MaXN0RnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rp
b248U1ZHVHJhbnNmb3JtTGlzdD4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBTVkdBbmlt
YXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbjxTVkdUcmFuc2Zvcm1MaXN0PjsKKyAgICB1c2luZyBC
YXNlOjpCYXNlOworCisgICAgdm9pZCBzZXRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCosIGNv
bnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIG1fZnJvbS0+cGFyc2UoZnJvbSk7CisgICAgICAgIG1fdG8tPnBhcnNlKHRvKTsKKyAgICB9
CisKKyAgICB2b2lkIHNldFRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0
RW5kT2ZEdXJhdGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fdG9BdEVuZE9mRHVyYXRp
b24tPnBhcnNlKHRvQXRFbmRPZkR1cmF0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHByb2dyZXNz
KFNWR0VsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgUmVm
UHRyPFNWR1RyYW5zZm9ybUxpc3Q+JiBhbmltYXRlZCkKKyAgICB7CisgICAgICAgIC8vIFBhc3Mg
ZmFsc2UgdG8gJ3Jlc2l6ZUFuaW1hdGVkSWZOZWVkZWQnLCBhcyB0aGUgc3BlY2lhbCBwb3N0LW11
bHRpcGxpY2F0aW9uIGJlaGF2aW9yIG9mIDxhbmltYXRlVHJhbnNmb3JtPiBuZWVkcyB0byBiZSBy
ZXNwZWN0ZWQgYmVsb3cuCisgICAgICAgIGlmICghYWRqdXN0QW5pbWF0ZWRMaXN0KG1fYW5pbWF0
aW9uTW9kZSwgcGVyY2VudGFnZSwgYW5pbWF0ZWQsIGZhbHNlKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAvLyBTcGVjOiBUbyBhbmltYXRpb25zIHByb3ZpZGUgc3BlY2lmaWMgZnVu
Y3Rpb25hbGl0eSB0byBnZXQgYSBzbW9vdGggY2hhbmdlIGZyb20gdGhlIHVuZGVybHlpbmcKKyAg
ICAgICAgLy8gdmFsdWUgdG8gdGhlIMOiwoDCmHRvw6LCgMKZIGF0dHJpYnV0ZSB2YWx1ZSwgd2hp
Y2ggY29uZmxpY3RzIG1hdGhlbWF0aWNhbGx5IHdpdGggdGhlIHJlcXVpcmVtZW50IGZvcgorICAg
ICAgICAvLyBhZGRpdGl2ZSB0cmFuc2Zvcm0gYW5pbWF0aW9ucyB0byBiZSBwb3N0LW11bHRpcGxp
ZWQuIEFzIGEgY29uc2VxdWVuY2UsIGluIFNWRyAxLjEgdGhlIGJlaGF2aW9yCisgICAgICAgIC8v
IG9mIHRvIGFuaW1hdGlvbnMgZm9yIMOiwoDCmGFuaW1hdGVUcmFuc2Zvcm3DosKAwpkgaXMgdW5k
ZWZpbmVkLgorICAgICAgICBjb25zdCBWZWN0b3I8UmVmPFNWR1RyYW5zZm9ybT4+JiBmcm9tSXRl
bXMgPSBtX2Zyb20tPml0ZW1zKCk7CisgICAgICAgIGNvbnN0IFZlY3RvcjxSZWY8U1ZHVHJhbnNm
b3JtPj4mIHRvSXRlbXMgPSBtX3RvLT5pdGVtcygpOworICAgICAgICBjb25zdCBWZWN0b3I8UmVm
PFNWR1RyYW5zZm9ybT4+JiB0b0F0RW5kT2ZEdXJhdGlvbkl0ZW1zID0gdG9BdEVuZE9mRHVyYXRp
b24oKS0+aXRlbXMoKTsKKyAgICAgICAgVmVjdG9yPFJlZjxTVkdUcmFuc2Zvcm0+PiYgYW5pbWF0
ZWRJdGVtcyA9IGFuaW1hdGVkLT5pdGVtcygpOworCisgICAgICAgIC8vIE5ldmVyIHJlc2l6ZSB0
aGUgYW5pbWF0ZWRMaXN0IHRvIHRoZSBtX3RvIHNpemUsIGluc3RlYWQgZWl0aGVyIGNsZWFyIHRo
ZSBsaXN0CisgICAgICAgIC8vIG9yIGFwcGVuZCB0byBpdC4KKyAgICAgICAgaWYgKCFhbmltYXRl
ZEl0ZW1zLmlzRW1wdHkoKSAmJiAoIW1faXNBZGRpdGl2ZSB8fCBtX2FuaW1hdGlvbk1vZGUgPT0g
QW5pbWF0aW9uTW9kZTo6VG8pKQorICAgICAgICAgICAgYW5pbWF0ZWRJdGVtcy5jbGVhcigpOwor
CisgICAgICAgIGF1dG8gZnJvbUl0ZW1zU2l6ZSA9IGZyb21JdGVtcy5zaXplKCk7CisKKyAgICAg
ICAgc3RhdGljIGNvbnN0IEFmZmluZVRyYW5zZm9ybSB6ZXJvc0FmZmluZVRyYW5zZm9ybSA9IHsg
MCwgMCwgMCwgMCwgMCwgMCB9OworICAgICAgICBjb25zdCBTVkdUcmFuc2Zvcm1WYWx1ZSYgdG8g
PSB0b0l0ZW1zWzBdLT52YWx1ZSgpOworICAgICAgICBjb25zdCBTVkdUcmFuc2Zvcm1WYWx1ZSB6
ZXJvc1RyYW5zZm9ybSA9IFNWR1RyYW5zZm9ybVZhbHVlKHRvLnR5cGUoKSwgemVyb3NBZmZpbmVU
cmFuc2Zvcm0pOworCisgICAgICAgIGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJiBmcm9tID0gZnJv
bUl0ZW1zU2l6ZSA/IGZyb21JdGVtc1swXS0+dmFsdWUoKSA6IHplcm9zVHJhbnNmb3JtOworICAg
ICAgICBTVkdUcmFuc2Zvcm1WYWx1ZSBjdXJyZW50ID0gU1ZHVHJhbnNmb3JtRGlzdGFuY2UoZnJv
bSwgdG8pLnNjYWxlZERpc3RhbmNlKHBlcmNlbnRhZ2UpLmFkZFRvU1ZHVHJhbnNmb3JtKGZyb20p
OworCisgICAgICAgIGlmIChtX2lzQWNjdW11bGF0ZWQgJiYgcmVwZWF0Q291bnQpIHsKKyAgICAg
ICAgICAgIGNvbnN0IFNWR1RyYW5zZm9ybVZhbHVlJiB0b0F0RW5kT2ZEdXJhdGlvbiA9IHRvQXRF
bmRPZkR1cmF0aW9uSXRlbXMuc2l6ZSgpID8gdG9BdEVuZE9mRHVyYXRpb25JdGVtc1swXS0+dmFs
dWUoKSA6IHplcm9zVHJhbnNmb3JtOworICAgICAgICAgICAgYW5pbWF0ZWRJdGVtcy5hcHBlbmQo
U1ZHVHJhbnNmb3JtOjpjcmVhdGUoU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1RyYW5zZm9y
bXMoY3VycmVudCwgdG9BdEVuZE9mRHVyYXRpb24sIHJlcGVhdENvdW50KSkpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGFuaW1hdGVkSXRlbXMuYXBwZW5kKFNWR1RyYW5zZm9ybTo6Y3Jl
YXRlKGN1cnJlbnQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRGcm9tQW5kVG9W
YWx1ZXMoU1ZHRWxlbWVudCopIG92ZXJyaWRlCisgICAgeworICAgICAgICBjb25zdCBWZWN0b3I8
UmVmPFNWR1RyYW5zZm9ybT4+JiBmcm9tSXRlbXMgPSBtX2Zyb20tPml0ZW1zKCk7CisgICAgICAg
IFZlY3RvcjxSZWY8U1ZHVHJhbnNmb3JtPj4mIHRvSXRlbXMgPSBtX3RvLT5pdGVtcygpOworCisg
ICAgICAgIGlmICghZnJvbUl0ZW1zLnNpemUoKSB8fCBmcm9tSXRlbXMuc2l6ZSgpICE9IHRvSXRl
bXMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIEFTU0VSVChmcm9tSXRl
bXMuc2l6ZSgpID09IDEpOworICAgICAgICBjb25zdCBSZWY8U1ZHVHJhbnNmb3JtPiYgZnJvbSA9
IGZyb21JdGVtc1swXTsKKyAgICAgICAgUmVmPFNWR1RyYW5zZm9ybT4mIHRvID0gdG9JdGVtc1sw
XTsKKworICAgICAgICB0by0+c2V0VmFsdWUoU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFNWR1Ry
YW5zZm9ybXMoZnJvbS0+dmFsdWUoKSwgdG8tPnZhbHVlKCkpKTsKKyAgICB9Cit9OworCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRp
dGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKaW5kZXggMmFhNDYyOWRkOGY1
NDJhYjY0NTBhY2I0MGU5Mjc3MTdkN2U3ZDVmMS4uNzdjMDIwNmYyMmZmZDZmMzUyMjNjMTU0YWVk
MjJlYTM3YzAwM2U2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwu
aApAQCAtMjUsNyArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvci5o
IgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlNWR0FuZ2xlVmFsdWUuaCIKICNp
bmNsdWRlICJTVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJT
VkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1BhdGhCeXRlU3RyZWFtLmgiCiAjaW5jbHVk
ZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVJlZ2lzdHJ5LmgKaW5kZXggMTk0ZjYzOWRmYTM1YWViNTVm
ZDg4NWEzNTVmZDVmMDk1MDViMGJmZC4uMDUxNDNmZTFiMzBhYWFkMjU2ZmVkMTBiM2I3ZDUzNGZm
OTFhOGZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0
cmlidXRlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
dHRyaWJ1dGVSZWdpc3RyeS5oCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0j
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQXR0cmli
dXRlQWNjZXNzb3IuaCIKICNpbmNsdWRlICJTVkdMZWdhY3lBbmltYXRlZFByb3BlcnR5LmgiCiAj
aW5jbHVkZSAiU1ZHWm9vbUFuZFBhblR5cGUuaCIKQEAgLTQyLDE5ICs0MSw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4mIGF0dHJpYnV0ZU5hbWUsIFNWR1pvb21B
bmRQYW5UeXBlQXR0cmlidXRlIE93bmVyVHlwZTo6KmF0dHJpYnV0ZT4KLSAgICB2b2lkIHJlZ2lz
dGVyQXR0cmlidXRlKCkKLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyQXR0cmlidXRlKFNWR1pvb21B
bmRQYW5UeXBlQXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9u
PGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCi0gICAgLy8gQW5pbWF0YWJs
ZSBhdHRyaWJ1dGVzCi0gICAgdGVtcGxhdGU8Y29uc3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0
IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1lLCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RB
dHRyaWJ1dGUgT3duZXJUeXBlOjoqYXR0cmlidXRlPgotICAgIHZvaWQgcmVnaXN0ZXJBdHRyaWJ1
dGUoKQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXJBdHRyaWJ1dGUoU1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0QXR0cmlidXRlQWNjZXNzb3I8T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPGF0
dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZT4oKSk7Ci0gICAgfQotCiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgpOyB9CiAKICAgICBib29sIGlzS25vd25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01hdHJpeFRlYXJPZmYuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01hdHJpeFRlYXJPZmYuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzM2MwMDgyNWJlNjM0ZDBmNDZiMzc0N2UzMjQ2YjI0YmQ4
OGE3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdNYXRyaXhUZWFyT2ZmLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIlNWR01hdHJpeC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR01hdHJpeFRlYXJPZmYgZmluYWwgOiBwdWJsaWMgU1ZH
TWF0cml4IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR01hdHJpeFRlYXJPZmY+IGNyZWF0
ZShTVkdUcmFuc2Zvcm0mIHBhcmVudCwgQWZmaW5lVHJhbnNmb3JtJiB2YWx1ZSkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsICZwYXJlbnQucHJvcGVydHlSZWZlcmVuY2UoKS5t
YXRyaXgoKSA9PSAmdmFsdWUpOwotICAgICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcg
U1ZHTWF0cml4VGVhck9mZihwYXJlbnQpKTsKLSAgICAgICAgcGFyZW50LmFkZENoaWxkKG1ha2VX
ZWFrUHRyKHJlc3VsdC5nZXQoKSkpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcHJvcGVydHlSZWZlcmVuY2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3BhcmVudC0+cHJvcGVydHlSZWZlcmVuY2UoKS5tYXRyaXgoKTsgfQotICAg
IEFmZmluZVRyYW5zZm9ybSYgcHJvcGVydHlSZWZlcmVuY2UoKSBmaW5hbCB7IHJldHVybiBtX3Bh
cmVudC0+cHJvcGVydHlSZWZlcmVuY2UoKS5tYXRyaXgoKTsgfQotCi0gICAgdm9pZCBzZXRWYWx1
ZShBZmZpbmVUcmFuc2Zvcm0mIHZhbHVlKSBmaW5hbCB7IG1fcGFyZW50LT5wcm9wZXJ0eVJlZmVy
ZW5jZSgpLnNldE1hdHJpeCh2YWx1ZSk7IH0KLQotICAgIHZvaWQgY29tbWl0Q2hhbmdlKCkgZmlu
YWwKLSAgICB7Ci0gICAgICAgIG1fcGFyZW50LT5wcm9wZXJ0eVJlZmVyZW5jZSgpLnVwZGF0ZVNW
R01hdHJpeCgpOwotICAgICAgICBtX3BhcmVudC0+Y29tbWl0Q2hhbmdlKCk7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIFNWR01hdHJpeFRlYXJPZmYoU1ZHVHJhbnNmb3JtJiBwYXJlbnQpCi0gICAg
ICAgIDogU1ZHTWF0cml4KG51bGxwdHIpCi0gICAgICAgICwgbV9wYXJlbnQoJnBhcmVudCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPFNWR1RyYW5zZm9ybT4gbV9wYXJlbnQ7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlBY2Nlc3NvckltcGwuaAppbmRleCAzN2Q2MzE4NDM3NWIyOGJh
M2NhOTU5MzVlYmEwNmM2MTE4YzliNWFkLi42MTg5ODY2M2MwZGRlMzUxNWZkMWZiN2ZkMjQwZjgy
ZTI1NGI4NTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eUFjY2Vzc29ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5QWNjZXNzb3JJbXBsLmgKQEAgLTQwLDQgKzQwLDE0IEBAIHB1YmxpYzoKICAg
ICBjb25zdGV4cHIgc3RhdGljIGNvbnN0IFNWR01lbWJlckFjY2Vzc29yPE93bmVyVHlwZT4mIHNp
bmdsZXRvbigpIHsgcmV0dXJuIEJhc2U6OnRlbXBsYXRlIHNpbmdsZXRvbjxTVkdTdHJpbmdMaXN0
QWNjZXNzb3IsIHByb3BlcnR5PigpOyB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPd25lclR5
cGU+CitjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0QWNjZXNzb3IgZmluYWwgOiBwdWJsaWMgU1ZHUHJv
cGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1RyYW5zZm9ybUxpc3Q+IHsKKyAgICB1c2luZyBC
YXNlID0gU1ZHUHJvcGVydHlBY2Nlc3NvcjxPd25lclR5cGUsIFNWR1RyYW5zZm9ybUxpc3Q+Owor
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZTo6QmFzZTsKKyAgICB0ZW1wbGF0ZTxSZWY8U1ZHVHJh
bnNmb3JtTGlzdD4gT3duZXJUeXBlOjoqcHJvcGVydHk+CisgICAgY29uc3RleHByIHN0YXRpYyBj
b25zdCBTVkdNZW1iZXJBY2Nlc3NvcjxPd25lclR5cGU+JiBzaW5nbGV0b24oKSB7IHJldHVybiBC
YXNlOjp0ZW1wbGF0ZSBzaW5nbGV0b248U1ZHVHJhbnNmb3JtTGlzdEFjY2Vzc29yLCBwcm9wZXJ0
eT4oKTsgfQorfTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaAppbmRleCBlN2YzMDM3YjRlOThjNDRiNTYx
OGFkMWQ3NWE1MzA5NmY3ZDU3NzYxLi4xMmNlNjk2NjYxOWFkNTMyNmYwNGMyNjdlZDIxNDZlZmVm
MzlkZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eU93bmVyUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eU93bmVyUmVnaXN0cnkuaApAQCAtNDksNiArNDksMTIgQEAgcHVibGljOgogICAg
ICAgICByZWdpc3RlclByb3BlcnR5KGF0dHJpYnV0ZU5hbWUsIFNWR1N0cmluZ0xpc3RBY2Nlc3Nv
cjxPd25lclR5cGU+Ojp0ZW1wbGF0ZSBzaW5nbGV0b248cHJvcGVydHk+KCkpOwogICAgIH0KIAor
ICAgIHRlbXBsYXRlPGNvbnN0IExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBRdWFsaWZpZWROYW1l
PiYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1RyYW5zZm9ybUxpc3Q+IE93bmVyVHlwZTo6KnByb3Bl
cnR5PgorICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQorICAgIHsKKyAgICAgICAg
cmVnaXN0ZXJQcm9wZXJ0eShhdHRyaWJ1dGVOYW1lLCBTVkdUcmFuc2Zvcm1MaXN0QWNjZXNzb3I8
T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPHByb3BlcnR5PigpKTsKKyAgICB9CisKICAg
ICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4m
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEJvb2xlYW4+IE93bmVyVHlwZTo6KnByb3Bl
cnR5PgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQogICAgIHsKQEAgLTEyNiw3
ICsxMzIsMTMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmVnaXN0ZXJQcm9wZXJ0eShhdHRy
aWJ1dGVOYW1lLCBTVkdBbmltYXRlZFN0cmluZ0FjY2Vzc29yPE93bmVyVHlwZT46OnRlbXBsYXRl
IHNpbmdsZXRvbjxwcm9wZXJ0eT4oKSk7CiAgICAgfQotICAgIAorCisgICAgdGVtcGxhdGU8Y29u
c3QgTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+JiBhdHRyaWJ1dGVOYW1l
LCBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBPd25lclR5cGU6Oipwcm9wZXJ0eT4KKyAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3BlcnR5KCkKKyAgICB7CisgICAgICAgIHJlZ2lzdGVy
UHJvcGVydHkoYXR0cmlidXRlTmFtZSwgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QWNjZXNzb3I8
T3duZXJUeXBlPjo6dGVtcGxhdGUgc2luZ2xldG9uPHByb3BlcnR5PigpKTsKKyAgICB9CisKICAg
ICB0ZW1wbGF0ZTxjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4m
IGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdBbmltYXRlZEludGVnZXI+IE93bmVyVHlwZTo6KnByb3Bl
cnR5MSwgUmVmPFNWR0FuaW1hdGVkSW50ZWdlcj4gT3duZXJUeXBlOjoqcHJvcGVydHkyPgogICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvcGVydHkoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMTk1MjI3NDU2
MTE5YmM0NDIwMmZiYjAwN2ZjM2VmYjMzODk0MzhlLi4xNWRhM2MwZGQ3ZTNhN2QzZGU1ZmE3MTYx
YjJkODc2ZjczMWI3MWMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDQtMDEgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUg
dGhlIFNWRyB0ZWFyIG9mZiBvYmplY3RzIGZvciBTVkdNYXRyaXgsIFNWR1RyYW5zZnJvbSwgU1ZH
VHJhbnNmb3JtTGlzdCBhbmQgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYwODYKKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBzdmcvZG9tL1NWR1RyYW5zZm9ybUxp
c3QtYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdmcvZG9tL1NWR1RyYW5zZm9ybUxp
c3QtYmFzaWNzLnhodG1sOgorICAgICAgICBUaGVzZSBjaGFuZ2VzIGFyZSByZXF1aXJlZCBiZWNh
dXNlIFNWR1RyYW5zZnJvbUxpc3Qgd2lsbCBiZSBmb2xsb3dpbmcgdGhlCisgICAgICAgIFNWRzIg
c3BlY3MgcmVnYXJkaW5nIGFkZGluZyBuZXcgaXRlbXMgdG8gdGhlIGxpc3QuIAorCisgICAgICAg
IFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvU1ZHL3R5cGVzLmh0bWwjVGVybUxpc3RJbnRlcmZh
Y2UuCisKIDIwMTktMDQtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxl
LmNvbT4KIAogICAgICAgICBTVkdNYXRyaXguSURMIG1ldGhvZHMgZG8gbm90IGNvbmZvcm0gdG8g
dGhlIHNwZWNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1RyYW5zZm9ybUxp
c3QtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHVHJhbnNmb3Jt
TGlzdC1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IDNjZTAwNWVhYTRkNTgwMDllYTcwMGQ2NTc2
ZjhlMjQ0ZjY0NTY3NjYuLmYyMzRkYWY1YzAwYmMzNzkzNTUwZjFkN2U5MTMxYTBkOGUwYjUyMTkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHVHJhbnNmb3JtTGlzdC1iYXNpY3Mt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vU1ZHVHJhbnNmb3JtTGlzdC1i
YXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0yNywyMSArMjcsMjUgQEAgUEFTUyBjaXJjbGUxLnRyYW5z
Zm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUoJ2FTdHJpbmcnKSB0aHJldyBleGNlcHRpb24g
VHlwZUUKIFBBU1MgY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVtQmVmb3JlKGNp
cmNsZTEpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgog
UEFTUyBjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUobnVsbCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQQVNTIGNpcmNs
ZTEudHJhbnNmb3JtLmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZShjaXJjbGUxLnRyYW5zZm9ybS5i
YXNlVmFsLmdldEl0ZW0oMSksICdhU3RyaW5nJykgaXMgY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZh
bC5nZXRJdGVtKDApCitQQVNTIGR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZh
bC5yZW1vdmVJdGVtKDIpKSBpcyAidHlwZT1TVkdfVFJBTlNGT1JNX1RSQU5TTEFURSBtYXRyaXg9
WzEuMCAwLjAgMC4wIDEuMCAxMC4wIDEwLjBdIgogUEFTUyBjaXJjbGUxLnRyYW5zZm9ybS5iYXNl
VmFsLm51bWJlck9mSXRlbXMgaXMgMgogUEFTUyBkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJhbnNm
b3JtLmJhc2VWYWwuZ2V0SXRlbSgwKSkgaXMgInR5cGU9U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEUg
bWF0cml4PVsxLjAgMC4wIDAuMCAxLjAgMTAuMCAxMC4wXSIKIFBBU1MgZHVtcFRyYW5zZm9ybShj
aXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSkpIGlzICJ0eXBlPVNWR19UUkFOU0ZP
Uk1fU0NBTEUgbWF0cml4PVsyLjAgMC4wIDAuMCAyLjAgMC4wIDAuMF0iCiBQQVNTIGNpcmNsZTEu
Z2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nKSBpcyAidHJhbnNsYXRlKDEwIDEwKSBzY2FsZSgyIDIp
IgogUEFTUyBjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUoY2lyY2xl
MS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEpLCBjaXJjbGUxKSBpcyBjaXJjbGUxLnRyYW5z
Zm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkKK1BBU1MgZHVtcFRyYW5zZm9ybShjaXJjbGUxLnRyYW5z
Zm9ybS5iYXNlVmFsLnJlbW92ZUl0ZW0oMikpIGlzICJ0eXBlPVNWR19UUkFOU0ZPUk1fU0NBTEUg
bWF0cml4PVsyLjAgMC4wIDAuMCAyLjAgMC4wIDAuMF0iCiBQQVNTIGNpcmNsZTEudHJhbnNmb3Jt
LmJhc2VWYWwubnVtYmVyT2ZJdGVtcyBpcyAyCiBQQVNTIGR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50
cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApKSBpcyAidHlwZT1TVkdfVFJBTlNGT1JNX1NDQUxF
IG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAuMCAwLjBdIgogUEFTUyBkdW1wVHJhbnNmb3JtKGNp
cmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSkgaXMgInR5cGU9U1ZHX1RSQU5TRk9S
TV9UUkFOU0xBVEUgbWF0cml4PVsxLjAgMC4wIDAuMCAxLjAgMTAuMCAxMC4wXSIKIFBBU1MgY2ly
Y2xlMS5nZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScpIGlzICJzY2FsZSgyIDIpIHRyYW5zbGF0ZSgx
MCAxMCkiCiBQQVNTIGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuaW5zZXJ0SXRlbUJlZm9yZShj
aXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSksIG51bGwpIGlzIGNpcmNsZTEudHJh
bnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKQorUEFTUyBkdW1wVHJhbnNmb3JtKGNpcmNsZTEudHJh
bnNmb3JtLmJhc2VWYWwucmVtb3ZlSXRlbSgyKSkgaXMgInR5cGU9U1ZHX1RSQU5TRk9STV9UUkFO
U0xBVEUgbWF0cml4PVsxLjAgMC4wIDAuMCAxLjAgMTAuMCAxMC4wXSIKIFBBU1MgY2lyY2xlMS50
cmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIGlzIDIKIFBBU1MgZHVtcFRyYW5zZm9ybShj
aXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkpIGlzICJ0eXBlPVNWR19UUkFOU0ZP
Uk1fVFJBTlNMQVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iCiBQQVNTIGR1
bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEpKSBpcyAidHlw
ZT1TVkdfVFJBTlNGT1JNX1NDQUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAuMCAwLjBdIgog
UEFTUyBjaXJjbGUxLmdldEF0dHJpYnV0ZSgndHJhbnNmb3JtJykgaXMgInRyYW5zbGF0ZSgxMCAx
MCkgc2NhbGUoMiAyKSIKIFBBU1MgY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5pbnNlcnRJdGVt
QmVmb3JlKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSwgMCkgaXMgY2lyY2xl
MS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApCitQQVNTIGR1bXBUcmFuc2Zvcm0oY2lyY2xl
MS50cmFuc2Zvcm0uYmFzZVZhbC5yZW1vdmVJdGVtKDIpKSBpcyAidHlwZT1TVkdfVFJBTlNGT1JN
X1NDQUxFIG1hdHJpeD1bMi4wIDAuMCAwLjAgMi4wIDAuMCAwLjBdIgogUEFTUyBjaXJjbGUxLnRy
YW5zZm9ybS5iYXNlVmFsLm51bWJlck9mSXRlbXMgaXMgMgogUEFTUyBkdW1wVHJhbnNmb3JtKGNp
cmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgwKSkgaXMgInR5cGU9U1ZHX1RSQU5TRk9S
TV9TQ0FMRSBtYXRyaXg9WzIuMCAwLjAgMC4wIDIuMCAwLjAgMC4wXSIKIFBBU1MgZHVtcFRyYW5z
Zm9ybShjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMSkpIGlzICJ0eXBlPVNWR19U
UkFOU0ZPUk1fVFJBTlNMQVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL1NWR1RyYW5zZm9ybUxpc3QtYmFzaWNzLnho
dG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9TVkdUcmFuc2Zvcm1MaXN0LWJhc2ljcy54aHRtbApp
bmRleCBmZDJjYWZhNjg5YjljYTVmZTJjYjhlNzBkNGZhYmVkMWI1YmViZmM1Li4xZjkzMmMxZTA3
ZjVlZDVlNWU3YmQyNTNjMGYwZTIwNzM3ZWI0MjZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dmcvZG9tL1NWR1RyYW5zZm9ybUxpc3QtYmFzaWNzLnhodG1sCisrKyBiL0xheW91dFRlc3RzL3N2
Zy9kb20vU1ZHVHJhbnNmb3JtTGlzdC1iYXNpY3MueGh0bWwKQEAgLTc0LDI0ICs3NCwyOCBAQAog
ICAgIHNob3VsZFRocm93KCJjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZv
cmUobnVsbCkiKTsKICAKICAgICBzaG91bGRCZSgiY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5p
bnNlcnRJdGVtQmVmb3JlKGNpcmNsZTEudHJhbnNmb3JtLmJhc2VWYWwuZ2V0SXRlbSgxKSwgJ2FT
dHJpbmcnKSIsICJjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFz
ZVZhbC5yZW1vdmVJdGVtKDIpKSIsICJ0eXBlPVNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFIG1hdHJp
eD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iKTsKICAgICBzaG91bGRCZSgiY2lyY2xlMS50
cmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjIiKTsKICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVt
KDApKSIsICJ0eXBlPVNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAg
MS4wIDEwLjAgMTAuMF0iKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBUcmFuc2Zv
cm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEpKSIsICJ0eXBlPVNWR19UUkFO
U0ZPUk1fU0NBTEUgbWF0cml4PVsyLjAgMC4wIDAuMCAyLjAgMC4wIDAuMF0iKTsKICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNpcmNsZTEuZ2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nKSIsICJ0
cmFuc2xhdGUoMTAgMTApIHNjYWxlKDIgMikiKTsKIAogICAgIHNob3VsZEJlKCJjaXJjbGUxLnRy
YW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUoY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZh
bC5nZXRJdGVtKDEpLCBjaXJjbGUxKSIsICJjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmdldEl0
ZW0oMCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBUcmFuc2Zvcm0oY2lyY2xl
MS50cmFuc2Zvcm0uYmFzZVZhbC5yZW1vdmVJdGVtKDIpKSIsICJ0eXBlPVNWR19UUkFOU0ZPUk1f
U0NBTEUgbWF0cml4PVsyLjAgMC4wIDAuMCAyLjAgMC4wIDAuMF0iKTsKICAgICBzaG91bGRCZSgi
Y2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjIiKTsKICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZh
bC5nZXRJdGVtKDApKSIsICJ0eXBlPVNWR19UUkFOU0ZPUk1fU0NBTEUgbWF0cml4PVsyLjAgMC4w
IDAuMCAyLjAgMC4wIDAuMF0iKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBUcmFu
c2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEpKSIsICJ0eXBlPVNWR19U
UkFOU0ZPUk1fVFJBTlNMQVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iKTsK
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNpcmNsZTEuZ2V0QXR0cmlidXRlKCd0cmFuc2Zv
cm0nKSIsICJzY2FsZSgyIDIpIHRyYW5zbGF0ZSgxMCAxMCkiKTsKIAogICAgIHNob3VsZEJlKCJj
aXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUoY2lyY2xlMS50cmFuc2Zv
cm0uYmFzZVZhbC5nZXRJdGVtKDEpLCBudWxsKSIsICJjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFs
LmdldEl0ZW0oMCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBUcmFuc2Zvcm0o
Y2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5yZW1vdmVJdGVtKDIpKSIsICJ0eXBlPVNWR19UUkFO
U0ZPUk1fVFJBTlNMQVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iKTsKICAg
ICBzaG91bGRCZSgiY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwgIjIi
KTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFu
c2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApKSIsICJ0eXBlPVNWR19UUkFOU0ZPUk1fVFJBTlNMQVRF
IG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4wIDEwLjAgMTAuMF0iKTsKICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVt
KDEpKSIsICJ0eXBlPVNWR19UUkFOU0ZPUk1fU0NBTEUgbWF0cml4PVsyLjAgMC4wIDAuMCAyLjAg
MC4wIDAuMF0iKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNpcmNsZTEuZ2V0QXR0cmli
dXRlKCd0cmFuc2Zvcm0nKSIsICJ0cmFuc2xhdGUoMTAgMTApIHNjYWxlKDIgMikiKTsKIAogICAg
IHNob3VsZEJlKCJjaXJjbGUxLnRyYW5zZm9ybS5iYXNlVmFsLmluc2VydEl0ZW1CZWZvcmUoY2ly
Y2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEpLCAwKSIsICJjaXJjbGUxLnRyYW5zZm9y
bS5iYXNlVmFsLmdldEl0ZW0oMCkiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBU
cmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5yZW1vdmVJdGVtKDIpKSIsICJ0eXBl
PVNWR19UUkFOU0ZPUk1fU0NBTEUgbWF0cml4PVsyLjAgMC4wIDAuMCAyLjAgMC4wIDAuMF0iKTsK
ICAgICBzaG91bGRCZSgiY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5udW1iZXJPZkl0ZW1zIiwg
IjIiKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50
cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDApKSIsICJ0eXBlPVNWR19UUkFOU0ZPUk1fU0NBTEUg
bWF0cml4PVsyLjAgMC4wIDAuMCAyLjAgMC4wIDAuMF0iKTsKICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImR1bXBUcmFuc2Zvcm0oY2lyY2xlMS50cmFuc2Zvcm0uYmFzZVZhbC5nZXRJdGVtKDEp
KSIsICJ0eXBlPVNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFIG1hdHJpeD1bMS4wIDAuMCAwLjAgMS4w
IDEwLjAgMTAuMF0iKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>