<?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>191042</bug_id>
          
          <creation_ts>2018-10-29 14:39:16 -0700</creation_ts>
          <short_desc>CSS Custom Properties API Should Support syntax=&quot;*&quot; and &quot;&lt;length&gt;&quot;, and handle cycles properly</short_desc>
          <delta_ts>2018-11-04 03:05:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1473070</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 14:39:16 -0700</bug_when>
    <thetext>&lt;https://bugs.webkit.org/show_bug.cgi?id=190039&gt; was rolled out due to a performance regression in speedometer. Let&apos;s try this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473071</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 14:43:39 -0700</bug_when>
    <thetext>&lt;rdar://45477680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473074</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 14:46:36 -0700</bug_when>
    <thetext>Roll out: &lt;rdar://problem/45546003&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473156</commentid>
    <comment_count>3</comment_count>
      <attachid>353344</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 19:10:20 -0700</bug_when>
    <thetext>Created attachment 353344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473176</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-29 20:36:18 -0700</bug_when>
    <thetext>&lt;rdar://45477680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473293</commentid>
    <comment_count>5</comment_count>
      <attachid>353382</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-30 10:23:42 -0700</bug_when>
    <thetext>Created attachment 353382
Changes from last patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473324</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-30 11:13:19 -0700</bug_when>
    <thetext>Justin said he is trying some template specialization for no-custom-properties case to eliminate the remaining regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473348</commentid>
    <comment_count>7</comment_count>
      <attachid>353394</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-30 12:02:52 -0700</bug_when>
    <thetext>Created attachment 353394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473349</commentid>
    <comment_count>8</comment_count>
      <attachid>353395</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-30 12:03:21 -0700</bug_when>
    <thetext>Created attachment 353395
Changes from unrolled patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473352</commentid>
    <comment_count>9</comment_count>
      <attachid>353395</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-10-30 12:09:13 -0700</bug_when>
    <thetext>Comment on attachment 353395
Changes from unrolled patch

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

&gt; Source/WebCore/css/StyleResolver.cpp:2356
&gt; +                // We are in a cycle (eg. setting font size using registered custom property value containing em)
&gt; +                // So this value should be unset

Nit: .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473648</commentid>
    <comment_count>10</comment_count>
      <attachid>353394</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-31 02:58:04 -0700</bug_when>
    <thetext>Comment on attachment 353394
Patch

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

&gt; Source/WebCore/css/StyleResolver.cpp:2336
&gt; +        return applyCascadedPropertiesImpl&lt;false&gt;(firstProperty, lastProperty, state);
&gt; +    return applyCascadedPropertiesImpl&lt;true&gt;(firstProperty, lastProperty, state);

It would be nicer to use enum instead of bool:

applyCascadedPropertiesImpl&lt;CustomPropertyCycleTracking::Enabled&gt;(..)

or similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473799</commentid>
    <comment_count>11</comment_count>
      <attachid>353513</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 11:36:37 -0700</bug_when>
    <thetext>Created attachment 353513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473800</commentid>
    <comment_count>12</comment_count>
      <attachid>353514</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 11:37:10 -0700</bug_when>
    <thetext>Created attachment 353514
Changes from last patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473816</commentid>
    <comment_count>13</comment_count>
      <attachid>353513</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-10-31 12:21:19 -0700</bug_when>
    <thetext>Comment on attachment 353513
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473999</commentid>
    <comment_count>14</comment_count>
      <attachid>353574</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 20:08:25 -0700</bug_when>
    <thetext>Created attachment 353574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474000</commentid>
    <comment_count>15</comment_count>
      <attachid>353575</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 20:09:20 -0700</bug_when>
    <thetext>Created attachment 353575
Changes from rolled out patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474004</commentid>
    <comment_count>16</comment_count>
      <attachid>353576</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 20:34:25 -0700</bug_when>
    <thetext>Created attachment 353576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474005</commentid>
    <comment_count>17</comment_count>
      <attachid>353577</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-10-31 20:35:42 -0700</bug_when>
    <thetext>Created attachment 353577
Changes from rolled-out patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474154</commentid>
    <comment_count>18</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-11-01 10:17:08 -0700</bug_when>
    <thetext>This patch seems to have fixed all of the performance regressions. Once the perf trial finishes, it looks like it should be good to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474246</commentid>
    <comment_count>19</comment_count>
      <attachid>353576</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-01 13:35:35 -0700</bug_when>
    <thetext>Comment on attachment 353576
Patch

Clearing flags on attachment: 353576

Committed r237697: &lt;https://trac.webkit.org/changeset/237697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474247</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-01 13:35:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474865</commentid>
    <comment_count>21</comment_count>
      <attachid>353576</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-11-04 03:04:56 -0800</bug_when>
    <thetext>Comment on attachment 353576
Patch

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

A few minor additional comments.

&gt; Source/WebCore/css/StyleResolver.cpp:2354
&gt; +        if (TrackCycles == CustomPropertyCycleTracking::Disabled) {
&gt; +            // If we don&apos;t have any custom properties, then there can&apos;t be any cycles.
&gt; +            property.apply(*this, state);
&gt; +        } else {
&gt; +            if (UNLIKELY(state.inProgressProperties.get(propertyID))) {

We usually try to main flow of the function the common case and use early return/continue for uncommon cases. That would suggest structure like

if (TrackCycles == CustomPropertyCycleTracking::Enabled) {
    ...
    continue;
}
property.apply(*this, state);

&gt; Source/WebCore/css/StyleResolver.h:328
&gt; +    enum CustomPropertyCycleTracking { Enabled = 0, Disabled };

This should be a an enum class so we don&apos;t put Enabled and Disabled to StyleResolver namespace.

No need for = 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474866</commentid>
    <comment_count>22</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-11-04 03:05:39 -0800</bug_when>
    <thetext>*try to make</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353344</attachid>
            <date>2018-10-29 19:10:20 -0700</date>
            <delta_ts>2018-10-30 12:02:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191042-20181029191019.patch</filename>
            <type>text/plain</type>
            <size>131030</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ2NDU1OGJiMzNkYzFj
NmNhZDM1MTI1MWEyMDdmNzVhM2EyYTkwMC4uNDA4ZDAxMWYyNzM1ODE5OWM5N2IzYTA3OWZkY2M0
YzRmYTA0MzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIEN1
c3RvbSBQcm9wZXJ0aWVzIEFQSSBTaG91bGQgU3VwcG9ydCBzeW50YXg9IioiIGFuZCAiPGxlbmd0
aD4iLCBhbmQgaGFuZGxlIGN5Y2xlcyBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgY29kZSBzbyB0aGF0OgorICAgICAgICAt
IEFsbCBwcm9wZXJ0aWVzIGFwcGxpZWQgaW4gU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyBhcmUgb25seSBhcHBsaWVkIG9uY2UuIAorICAgICAgICAtIEN1c3RvbSBwcm9wZXJ0
aWVzIGFyZSBvbmx5IHJlc29sdmVkIG9uY2UsIGluIFN0eWxlUmVzb2x2ZXIsIHdoZW4gdGhleSBh
cmUgYXBwbGllZCB0byB0aGUgUmVuZGVyU3R5bGUuIFRoZXkgd2VyZSBwcmV2aW91c2x5IHJlc29s
dmVkCisgICAgICAgICAgZXZlcnkgdGltZSB0aGV5IHdlcmUgcmVmZXJlbmNlZCwgYW5kIGFnYWlu
IGluIFJlbmRlclN0eWxlLgorICAgICAgICAtIFRoZSBmb250LXNpemUgcHJvcGVydHkgaXMgYXBw
bGllZCBhZnRlciBpdHMgdmFyaWFibGUgcmVmZXJlbmNlcywgYnV0IGJlZm9yZSBjdXN0b20gcHJv
cGVydGllcyB0aGF0IGRlcGVuZCBvbiBpdC4KKyAgICAgICAgLSBDeWNsZXMgYXJlIGRldGVjdGVk
IGF0IHRoZSBzYW1lIHRpbWUgYXMgcmVzb2x1dGlvbi4KKyAgICAgICAgLSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJyBjdXN0b20gcHJvcGVydGllcyBjYW5ub3QgYmUgc2V0IGZyb20gSmF2YXNjcmlw
dCBvciBXZWJLaXRMZWdhY3kgaWYgdGhleSBkbyBub3QgcGFyc2UgZm9yIHRoZSBwcm9wZXJ0eSdz
IHR5cGUuCisgICAgICAgICAgSWYgdGhleSBjb250YWluIHZhcigtLS4uLikgcmVmZXJlbmNlcywg
aG93ZXZlciwgdGhlbiB0aGV5IGNhbiBiZSBzZXQgYmVjYXVzZSB3ZSBjYW5ub3QgY2hlY2sgaWYg
dGhlIHJlZmVyZW5jZXMgYXJlIHZhbGlkIGZyb20gc2V0UHJvcGVydHkuCisgICAgICAgICAgVGhp
cyBiZWhhdmlvdXIgbWF0Y2hlcyBjaHJvbWUsIGJ1dCBpcyBub3QgZG9jdW1lbnRlZCBpbiB0aGUg
c3BlYy4gCisgICAgICAgIC0gQ3VzdG9tIHByb3BlcnR5IHZhbHVlcyBoYXZlIG1vcmUgZXhwbGlj
aXQgcmVzb2x2ZWQvdW5yZXNvbHZlZCBzdGF0ZS4KKyAgICAgICAgLSBSZW5kZXJTdHlsZSBvbmx5
IGV2ZXIgaG9sZHMgcmVzb2x2ZWQgY3VzdG9tIHByb3BlcnRpZXMsIGFuZCBTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXMgb25seSBob2xkcyB1bnJlc29sdmVkIHByb3BlcnRpZXMuCisK
KyAgICAgICAgVGVzdHM6IGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbAorICAg
ICAgICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbAorICAgICAg
ICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6
cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRSZXNvbHZlZFR5cGVkVmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAgICog
Y3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSk6
CisgICAgICAgICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOgorICAgICAgICAq
IGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVE
YXRhOjpDU1NWYXJpYWJsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRh
Ojpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
c1dpdGhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJs
ZURhdGE6OnJlc29sdmVWYXJpYWJsZUZhbGxiYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBjc3MvQ1NTVmFyaWFibGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZVJl
c29sdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6bmVl
ZHNWYXJpYWJsZVJlc29sdXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFyaWFibGVEYXRhOjpDU1NWYXJpYWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGNz
cy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29s
dmVWYXJpYWJsZUZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlVG9rZW5SYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZl
cmVuY2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBj
c3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlOjp2YXJpYWJsZURhdGFWYWx1ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0
eSk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZl
cnJlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5j
ZXMpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3Rv
bVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25W
YWx1ZSk6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjp2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZVBpeGVsTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGE6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIw
MTgtMTAtMjkgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmVydCByMjM3MzQ3IHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnRpZXMuLi4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDAzOQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBjNzc2
NDhlZTFkODM0OWZiMzZiMTA3MTU0NWMzODFmYTczMjcwOWM4Li4wNzQ5ZDlhNGQ2ODExNTZjZTY2
OTcyOWQ5MWQ4MGIzM2JhYjYxOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjYxMiwyMSArMjYxMiwyMyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVByb3BlcnR5VmFsdWUo
Y29uc3QgU3RyaW5nJiBwcm9wZQogICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSBzdHlsZWRFbGVtZW50
LT5kb2N1bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLmdldChwcm9w
ZXJ0eU5hbWUpOwogICAgIGF1dG8qIHZhbHVlID0gc3R5bGUtPmdldEN1c3RvbVByb3BlcnR5KHBy
b3BlcnR5TmFtZSk7CiAKLSAgICBpZiAocmVnaXN0ZXJlZCkgewotICAgICAgICAvLyBUT0RPIHRo
aXMgc2hvdWxkIGJlIGRvbmUgYmFzZWQgb24gdGhlIHN5bnRheAotICAgICAgICBpZiAodmFsdWUg
JiYgdmFsdWUtPnJlc29sdmVkVHlwZWRWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoKnZhbHVlLT5yZXNvbHZlZFR5cGVkVmFsdWUoKSwg
KnN0eWxlKTsKLQotICAgICAgICBpZiAocmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkgJiYgcmVn
aXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCktPnJlc29sdmVkVHlwZWRWYWx1ZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoKnJlZ2lzdGVyZWQtPmlu
aXRpYWxWYWx1ZSgpLT5yZXNvbHZlZFR5cGVkVmFsdWUoKSwgKnN0eWxlKTsKKyAgICBpZiAocmVn
aXN0ZXJlZCAmJiAhdmFsdWUpCisgICAgICAgIHJldHVybiByZWdpc3RlcmVkLT5pbml0aWFsVmFs
dWVDb3B5KCk7CiAKKyAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9CiAKLSAgICBpZiAodmFsdWUpCisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRv
cihbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JikgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFJlZlB0cjxDU1NWYWx1ZT4oKTsK
KyAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYpIHsKICAgICAgICAgcmV0dXJuIENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgqdmFsdWUpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZURhdGE+JikgeworICAgICAgICByZXR1cm4g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCp2YWx1ZSk7CisgICAgfSwgWyZdKGNvbnN0
IExlbmd0aCYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVG
b3JMZW5ndGgodmFsdWUsICpzdHlsZSk7CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlzaXQo
dmlzaXRvciwgdmFsdWUtPnZhbHVlKCkpOwogfQogCiBTdHJpbmcgQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6Y3VzdG9tUHJvcGVydHlUZXh0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCmluZGV4IDdjMTZl
ODQxZGVhZmVlMmUyMTkyNThlYzQ5NWI3ODBmNDE2NTI2MzguLmU2OTY2ZmY5YmRjMTQ0MjZhOGM4
OTk4MDhkMzQ3ZmFhOGMyZTFkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZS5jcHAKQEAgLTI3LDgwICsyNyw2MyBAQAogI2luY2x1ZGUgIkNTU0N1c3Rv
bVByb3BlcnR5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKIAotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2Jvb2wgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6ZXF1YWxzKGNvbnN0
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX25hbWUg
IT0gb3RoZXIubV9uYW1lIHx8IG1fdmFsdWUuaW5kZXgoKSAhPSBvdGhlci5tX3ZhbHVlLmluZGV4
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mIHZhbHVlKSB7
CisgICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZT4+KG90aGVyLm1fdmFsdWUpLmdldCgpOworICAgIH0sIFsmXShjb25zdCBD
U1NWYWx1ZUlEJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgPT0gV1RGOjpnZXQ8Q1NT
VmFsdWVJRD4ob3RoZXIubV92YWx1ZSk7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJs
ZURhdGE+JiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCkgPT0gV1RGOjpnZXQ8
UmVmPENTU1ZhcmlhYmxlRGF0YT4+KG90aGVyLm1fdmFsdWUpLmdldCgpOworICAgIH0sIFsmXShj
b25zdCBMZW5ndGgmIHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSA9PSBXVEY6OmdldDxM
ZW5ndGg+KG90aGVyLm1fdmFsdWUpOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZp
c2l0b3IsIG1fdmFsdWUpOworfQorCiBTdHJpbmcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3Vz
dG9tQ1NTVGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlcmlhbGl6ZWQpIHsKICAgICAgICAg
bV9zZXJpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fcmVzb2x2ZWRUeXBlZFZhbHVlKSAv
LyBGSVhNRTogVW5pdCBzaG91bGQgYmUgYmFzZWQgb24gc3ludGF4LgotICAgICAgICAgICAgbV9z
dHJpbmdWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9yZXNvbHZlZFR5cGVkVmFs
dWUtPnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5jc3NUZXh0KCk7Ci0gICAg
ICAgIGVsc2UgaWYgKG1fdmFsdWUpCi0gICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gbV92YWx1
ZS0+dG9rZW5SYW5nZSgpLnNlcmlhbGl6ZSgpOwotICAgICAgICBlbHNlIGlmIChtX3ZhbHVlSWQg
IT0gQ1NTVmFsdWVJbnZhbGlkKQotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGdldFZhbHVl
TmFtZShtX3ZhbHVlSWQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0cmluZ1ZhbHVl
ID0gZW1wdHlTdHJpbmcoKTsKKworICAgICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNp
dG9yKFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mIHZhbHVlKSB7Cisg
ICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gdmFsdWUtPmNzc1RleHQoKTsKKyAgICAgICAgfSwg
WyZdKGNvbnN0IENTU1ZhbHVlSUQmIHZhbHVlKSB7CisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVl
ID0gZ2V0VmFsdWVOYW1lKHZhbHVlKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJp
YWJsZURhdGE+JiB2YWx1ZSkgeworICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IHZhbHVlLT50
b2tlblJhbmdlKCkuc2VyaWFsaXplKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZh
bHVlKSB7CisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZSh2YWx1ZS52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y3NzVGV4dCgp
OworICAgICAgICB9KTsKKyAgICAgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3ZhbHVlKTsKICAg
ICB9CiAgICAgcmV0dXJuIG1fc3RyaW5nVmFsdWU7CiB9CiAKLVZlY3RvcjxDU1NQYXJzZXJUb2tl
bj4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6dG9rZW5zKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkgY29uc3QKK1ZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZTo6dG9rZW5zKCkgY29uc3QKIHsKLSAgICBpZiAobV9yZXNvbHZlZFR5cGVkVmFsdWUpIHsKLSAg
ICAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXN1bHQ7CisgICAgVmVjdG9yPENTU1BhcnNl
clRva2VuPiByZXN1bHQ7CisKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsm
XShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0sIFsmXShjb25zdCBDU1NWYWx1ZUlEJikgeworICAgICAg
ICAvLyBEbyBub3RoaW5nCisgICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZURhdGE+JiB2
YWx1ZSkgeworICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHZhbHVlLT50b2tlbnMoKSk7Cisg
ICAgfSwgWyZdKGNvbnN0IExlbmd0aCYpIHsKICAgICAgICAgQ1NTVG9rZW5pemVyIHRva2VuaXpl
cihjc3NUZXh0KCkpOwogCiAgICAgICAgIGF1dG8gdG9rZW5pemVyUmFuZ2UgPSB0b2tlbml6ZXIu
dG9rZW5SYW5nZSgpOwogICAgICAgICB3aGlsZSAoIXRva2VuaXplclJhbmdlLmF0RW5kKCkpCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRva2VuaXplclJhbmdlLmNvbnN1bWUoKSk7CisgICAg
fSk7CisgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3ZhbHVlKTsKIAotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0KLQotICAgIGlmICghbV92YWx1ZSkKLSAgICAgICAgcmV0dXJuIHsgfTsK
LQotICAgIGlmIChtX2NvbnRhaW5zVmFyaWFibGVzKSB7Ci0gICAgICAgIFZlY3RvcjxDU1NQYXJz
ZXJUb2tlbj4gcmVzdWx0OwotICAgICAgICAvLyBGSVhNRTogQXZvaWQgZG9pbmcgdGhpcyB3b3Jr
IG1vcmUgdGhhbiBvbmNlLgotICAgICAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiByZXNvbHZl
ZERhdGEgPSBtX3ZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lzdGVyZWRQcm9w
ZXJ0aWVzLCBzdHlsZSk7Ci0gICAgICAgIGlmIChyZXNvbHZlZERhdGEpCi0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kVmVjdG9yKHJlc29sdmVkRGF0YS0+dG9rZW5zKCkpOwotCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fdmFsdWUtPnRva2VucygpOwotfQot
Ci1ib29sIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBIYXNoU2V0
PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGlu
dmFsaWRQcm9wZXJ0aWVzKSBjb25zdAotewotICAgIEFTU0VSVChjb250YWluc1ZhcmlhYmxlcygp
KTsKLSAgICBpZiAobV92YWx1ZSkKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmNoZWNrVmFyaWFi
bGVzRm9yQ3ljbGVzKG5hbWUsIHN0eWxlLCBzZWVuUHJvcGVydGllcywgaW52YWxpZFByb3BlcnRp
ZXMpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6
OnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgVmVjdG9yPFJlZjxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPj4mIHJlc29sdmVkVmFsdWVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKGNvbnRhaW5zVmFyaWFibGVzKCkpOwotICAgIGlmICghbV92YWx1ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEFTU0VSVChtX3ZhbHVlLT5uZWVkc1ZhcmlhYmxl
UmVzb2x1dGlvbigpKTsKLSAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiByZXNvbHZlZERhdGEg
PSBtX3ZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lzdGVyZWRQcm9wZXJ0aWVz
LCBzdHlsZSk7Ci0gICAgaWYgKHJlc29sdmVkRGF0YSkKLSAgICAgICAgcmVzb2x2ZWRWYWx1ZXMu
YXBwZW5kKENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhWYXJpYWJsZURhdGEobV9u
YW1lLCByZXNvbHZlZERhdGEucmVsZWFzZU5vbk51bGwoKSkpOwotICAgIGVsc2UKLSAgICAgICAg
cmVzb2x2ZWRWYWx1ZXMuYXBwZW5kKENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJ
RChtX25hbWUsIENTU1ZhbHVlSW52YWxpZCkpOwotfQotCi12b2lkIENTU0N1c3RvbVByb3BlcnR5
VmFsdWU6OnNldFJlc29sdmVkVHlwZWRWYWx1ZShMZW5ndGggbGVuZ3RoKQotewotICAgIEFTU0VS
VChsZW5ndGguaXNTcGVjaWZpZWQoKSk7Ci0gICAgbV9yZXNvbHZlZFR5cGVkVmFsdWUgPSBXVEZN
b3ZlKGxlbmd0aCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgKaW5kZXggYmIwOTIxNDVkZTUxZmI2ZTZiMzlk
OTk1NGQzNjQ5MmRiY2NkNmY1NS4uNjI1ZTE5NTExZTJkZGFkYmFkNDdjNjkxNzMzOWQ0OTk3MTE4
ZjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oCkBA
IC0yNywzMSArMjcsNDYgQEAKIAogI2luY2x1ZGUgIkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTVmFyaWFibGVEYXRhLmgi
CisjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIgogI2luY2x1ZGUgIkxlbmd0
aC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENTU1BhcnNlclRva2VuOworY2xhc3MgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTsK
IGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlIGZpbmFs
IDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhWYXJpYWJsZURhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIHZhbHVlKQorICAgIHVzaW5nIFZhcmlhbnRWYWx1
ZSA9IFZhcmlhbnQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+LCBDU1NWYWx1ZUlELCBS
ZWY8Q1NTVmFyaWFibGVEYXRhPiwgTGVuZ3RoPjsKKworICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4gY3JlYXRlVW5yZXNvbHZlZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3Zl
KHZhbHVlKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkpOwogICAgIH0KLSAgICAKLSAgICBzdGF0
aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhJRChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgdmFsdWUpCisKKyAgICBzdGF0aWMgUmVmPENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+IGNyZWF0ZVVucmVzb2x2ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBDU1NWYWx1ZUlEIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB2YWx1ZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgdmFsdWUgfSkpOworICAg
IH0KKworICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlV2l0aElE
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJRCBpZCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8
IGlkID09IENTU1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NT
VmFsdWVJbnZhbGlkKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZShuYW1lLCB7IGlkIH0pKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVmPENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVN5bnRheEFsbChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1
ZSkgfSkpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IGNyZWF0ZUludmFsaWQoKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4gY3JlYXRlU3ludGF4TGVuZ3RoKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgTGVuZ3RoIHZh
bHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZShlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgeyBXVEZNb3ZlKHZhbHVl
KSB9KSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBj
cmVhdGUoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpCkBAIC02Miw3MCArNzcs
NDkgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICAK
LSAgICBib29sIGVxdWFscyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9uYW1lID09IG90aGVyLm1fbmFtZSAmJiBtX3ZhbHVlID09IG90aGVyLm1f
dmFsdWUgJiYgbV92YWx1ZUlkID09IG90aGVyLm1fdmFsdWVJZDsgfQotCi0gICAgYm9vbCBjb250
YWluc1ZhcmlhYmxlcygpIGNvbnN0IHsgQVNTRVJUKCFtX2NvbnRhaW5zVmFyaWFibGVzIHx8ICFt
X3Jlc29sdmVkVHlwZWRWYWx1ZSk7IHJldHVybiBtX2NvbnRhaW5zVmFyaWFibGVzOyB9Ci0gICAg
Ym9vbCBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IFJlbmRlclN0eWxlJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywg
SGFzaFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3Q7Ci0KLSAgICB2
b2lkIHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5U2V0JiwgVmVjdG9yPFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPj4mLCBjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0ICB7IHJldHVy
biAhV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+
KG1fdmFsdWUpOyB9CisgICAgYm9vbCBpc1Vuc2V0KCkgY29uc3QgIHsgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJ
RD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVVbnNldDsgfQorICAgIGJvb2wgaXNJbnZhbGlkKCkgY29u
c3QgIHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkg
JiYgV1RGOjpnZXQ8Q1NTVmFsdWVJRD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVJbnZhbGlkOyB9CiAK
LSAgICBDU1NWYWx1ZUlEIHZhbHVlSUQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlSWQ7IH0KLSAg
ICBDU1NWYXJpYWJsZURhdGEqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsg
fQotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zKGNvbnN0IENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgY29uc3Qg
VmFyaWFudFZhbHVlJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAotICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiYgcmVzb2x2ZWRUeXBlZFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZFR5cGVkVmFsdWU7IH0KLSAgICB2b2lkIHNldFJlc29sdmVkVHlwZWRW
YWx1ZShMZW5ndGgpOworICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zKCkgY29uc3Q7
CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNv
bnN0OwogCiBwcml2YXRlOgotICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNlcmlhbGl6ZWRWYWx1ZSkKLSAgICAgICAgOiBD
U1NWYWx1ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAg
ICAgICAsIG1fc3RyaW5nVmFsdWUoc2VyaWFsaXplZFZhbHVlKQotICAgICAgICAsIG1fc2VyaWFs
aXplZCh0cnVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJRCBpZCkKLSAgICAgICAgOiBDU1NWYWx1
ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAs
IG1fdmFsdWVJZChpZCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpZCA9PSBDU1NWYWx1ZUluaGVy
aXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlkID09IENTU1ZhbHVlVW5zZXQgfHwgaWQg
PT0gQ1NTVmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NTVmFsdWVJbnZhbGlkKTsKLSAgICB9Ci0gICAg
Ci0gICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJl
ZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCisgICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZhcmlhbnRWYWx1ZSYmIHZhbHVlKQogICAgICAgICA6
IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAg
ICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKLSAgICAgICAgLCBtX3ZhbHVlSWQoQ1NT
VmFsdWVJbnRlcm5hbFZhcmlhYmxlVmFsdWUpCi0gICAgICAgICwgbV9jb250YWluc1ZhcmlhYmxl
cyhtX3ZhbHVlLT5uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbigpKQorICAgICAgICAsIG1fc2VyaWFs
aXplZChmYWxzZSkKICAgICB7CiAgICAgfQogCiAgICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShj
b25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikKICAgICAgICAgOiBDU1NWYWx1ZShD
dXN0b21Qcm9wZXJ0eUNsYXNzKQogICAgICAgICAsIG1fbmFtZShvdGhlci5tX25hbWUpCi0gICAg
ICAgICwgbV92YWx1ZShvdGhlci5tX3ZhbHVlLmNvcHlSZWYoKSkKLSAgICAgICAgLCBtX3ZhbHVl
SWQob3RoZXIubV92YWx1ZUlkKQorICAgICAgICAsIG1fdmFsdWUoQ1NTVmFsdWVVbnNldCkKICAg
ICAgICAgLCBtX3N0cmluZ1ZhbHVlKG90aGVyLm1fc3RyaW5nVmFsdWUpCi0gICAgICAgICwgbV9j
b250YWluc1ZhcmlhYmxlcyhvdGhlci5tX2NvbnRhaW5zVmFyaWFibGVzKQogICAgICAgICAsIG1f
c2VyaWFsaXplZChvdGhlci5tX3NlcmlhbGl6ZWQpCi0gICAgICAgICwgbV9yZXNvbHZlZFR5cGVk
VmFsdWUob3RoZXIubV9yZXNvbHZlZFR5cGVkVmFsdWUpCiAgICAgeworICAgICAgICAvLyBObyBj
b3B5IGNvbnN0cnVjdG9yIGZvciBSZWY8Q1NTVmFyaWFibGVEYXRhPiwgc28gd2UgaGF2ZSB0byBk
byB0aGlzIG91cnNlbHZlcworICAgICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9y
KFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mIHZhbHVlKSB7CisgICAg
ICAgICAgICBtX3ZhbHVlID0gdmFsdWUuY29weVJlZigpOworICAgICAgICB9LCBbJl0oY29uc3Qg
Q1NTVmFsdWVJRCYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKKyAgICAg
ICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZURhdGE+JiB2YWx1ZSkgeworICAgICAgICAg
ICAgbV92YWx1ZSA9IHZhbHVlLmNvcHlSZWYoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IExlbmd0
aCYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgb3RoZXIubV92YWx1ZSk7CiAgICAgfQogICAgIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX25hbWU7Ci0gICAgCi0gICAgUmVmUHRyPENTU1Zhcmlh
YmxlRGF0YT4gbV92YWx1ZTsKLSAgICBDU1NWYWx1ZUlEIG1fdmFsdWVJZCB7IENTU1ZhbHVlSW52
YWxpZCB9OworICAgIFZhcmlhbnRWYWx1ZSBtX3ZhbHVlOwogICAgIAogICAgIG11dGFibGUgU3Ry
aW5nIG1fc3RyaW5nVmFsdWU7Ci0gICAgYm9vbCBtX2NvbnRhaW5zVmFyaWFibGVzIHsgZmFsc2Ug
fTsKICAgICBtdXRhYmxlIGJvb2wgbV9zZXJpYWxpemVkIHsgZmFsc2UgfTsKLQotICAgIC8vIEZJ
WE1FOiBJdCBzaG91bGQgbm90IGJlIHBvc3NpYmxlIHRvIGV4cHJlc3MgYW4gaW52YWxpZCBzdGF0
ZSwgc3VjaCBhcyBjb250YWluc1ZhcmlhYmxlcygpICYmIHJlc29sdmVkVHlwZWRWYWx1ZSgpLgot
ICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3Jlc29sdmVkVHlwZWRWYWx1ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lz
dGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggM2VhN2I5MmMwMDk5NzMwOTZhMDNlOTVlOWU2
YTI2NzU0YTVjYTg4YS4uNzllZjdmZTZiMDNjZDZjZmY3ZmI5ZWE4MTliMTYwNzZkZTQ1NThkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eS5jcHAKQEAgLTMwLDggKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgaW5oZXJpdHMsIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PiYmIGluaXRpYWxWYWx1ZSkKK0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eTo6Q1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50
YXgsIGJvb2wgaW5oZXJpdHMsIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIGluaXRp
YWxWYWx1ZSkKICAgICA6IG5hbWUobmFtZSkKKyAgICAsIHN5bnRheChzeW50YXgpCiAgICAgLCBp
bmhlcml0cyhpbmhlcml0cykKICAgICAsIG1faW5pdGlhbFZhbHVlKFdURk1vdmUoaW5pdGlhbFZh
bHVlKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJv
cGVydHkuaAppbmRleCAzNDI3ZWFhM2MzYWI3NDdjMDUxODVmMzkzNWI2YjViMmQyNmFlZTNhLi5k
ZmNmMGJkYzM5ZWQ1NDBjM2QxZGFhNGMwNWE2NGMwZjU5MTUzOTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oCkBAIC0zMywxMCArMzMs
MTAgQEAgY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTsKIAogc3RydWN0IENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eSB7CiAgICAgY29uc3QgU3RyaW5nIG5hbWU7Ci0gICAgLyogVE9ETyBz
eW50YXggKi8KKyAgICBjb25zdCBTdHJpbmcgc3ludGF4OwogICAgIGNvbnN0IGJvb2wgaW5oZXJp
dHM7CiAKLSAgICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFs
VmFsdWUpOworICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4mJiBpbml0aWFsVmFsdWUpOwogCiAgICAgY29uc3QgQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZSogaW5pdGlhbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsVmFsdWUu
Z2V0KCk7IH0KICAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gaW5pdGlhbFZhbHVl
Q29weSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmNwcAppbmRleCA5
ODk5MzUzMTc1OWM4YzkzZjc3NTdlMzE5ODliMWQ2MDk4MTIwYzUyLi42MDRjYTE4MzQzNGI2NTg2
NzRkM2Q4YzA3MjlhNDExMDkxNThkOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFyaWFibGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVE
YXRhLmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIENTU1ZhcmlhYmxlRGF0YTo6b3BlcmF0b3I9
PShjb25zdCBDU1NWYXJpYWJsZURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0b2tlbnMo
KSA9PSBvdGhlci50b2tlbnMoKTsKIH0KIAotdm9pZCBDU1NWYXJpYWJsZURhdGE6OmNvbnN1bWVB
bmRVcGRhdGVUb2tlbnMoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitDU1NWYXJp
YWJsZURhdGE6OkNTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSBsb2NhbFJhbmdlID0gcmFuZ2U7CkBAIC03NywxMDkgKzc3LDQgQEAgdm9pZCBDU1NW
YXJpYWJsZURhdGE6OmNvbnN1bWVBbmRVcGRhdGVUb2tlbnMoY29uc3QgQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCiAgICAgICAgIHVwZGF0ZVRva2VuczxVQ2hhcj4ocmFuZ2UpOwogfQogCi1D
U1NWYXJpYWJsZURhdGE6OkNTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbikKLSAgICA6IG1fbmVlZHNWYXJp
YWJsZVJlc29sdXRpb24obmVlZHNWYXJpYWJsZVJlc29sdXRpb24pCi17Ci0gICAgY29uc3VtZUFu
ZFVwZGF0ZVRva2VucyhyYW5nZSk7Ci19Ci0KLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpjaGVja1Zh
cmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNl
dDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKLXsKLSAgICBpZiAoaW52
YWxpZFByb3BlcnRpZXMuY29udGFpbnMobmFtZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gbmV3U2VlblByb3BlcnRpZXMgPSBzZWVuUHJv
cGVydGllczsKLSAgICBuZXdTZWVuUHJvcGVydGllcy5hZGQobmFtZSk7Ci0gICAgCi0gICAgYm9v
bCB2YWxpZCA9IGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzV2l0aFJhbmdlKG1fdG9rZW5zLCBzdHls
ZSwgbmV3U2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKLSAgICBpZiAoIXZhbGlk
KQotICAgICAgICBpbnZhbGlkUHJvcGVydGllcy5hZGQobmFtZSk7Ci0gICAgCi0gICAgcmV0dXJu
IHZhbGlkOwotfQotICAgIAotYm9vbCBDU1NWYXJpYWJsZURhdGE6OmNoZWNrVmFyaWFibGVzRm9y
Q3ljbGVzV2l0aFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNl
dDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKLXsKLSAgICB3aGlsZSAo
IXJhbmdlLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkg
PT0gQ1NTVmFsdWVWYXIgfHwgcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUVu
dikgewotICAgICAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBibG9jayA9IHJhbmdlLmNvbnN1
bWVCbG9jaygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBibG9jay5jb25zdW1lV2hpdGVz
cGFjZSgpOwotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRU
b2tlbik7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgdmFyaWFibGVOYW1lID0gYmxvY2suY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7Ci0gICAg
ICAgICAgICBBU1NFUlQoYmxvY2suYXRFbmQoKSB8fCBibG9jay5wZWVrKCkudHlwZSgpID09IENv
bW1hVG9rZW4pOwotICAgICAgICAgICAgaWYgKHNlZW5Qcm9wZXJ0aWVzLmNvbnRhaW5zKHZhcmlh
YmxlTmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBh
dXRvKiB2YWx1ZSA9IHN0eWxlLmdldEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFtZSk7Ci0gICAg
ICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmNvbnRhaW5zVmFyaWFibGVzKCkgJiYgIXZhbHVl
LT5jaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyh2YXJpYWJsZU5hbWUsIHN0eWxlLCBzZWVuUHJvcGVy
dGllcywgaW52YWxpZFByb3BlcnRpZXMpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbikgewot
ICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrLgotICAgICAgICAgICAgICAgIHJhbmdlLmNvbnN1
bWUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tWYXJpYWJsZXNGb3JDeWNsZXNXaXRo
UmFuZ2UoYmxvY2ssIHN0eWxlLCBzZWVuUHJvcGVydGllcywgaW52YWxpZFByb3BlcnRpZXMpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJhbmdlLmNvbnN1bWUo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpy
ZXNvbHZlVmFyaWFibGVGYWxsYmFjayhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29u
c3QKLXsKLSAgICBpZiAocmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IEFTU0VSVChyYW5nZS5wZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW4pOwotICAgIHJhbmdlLmNv
bnN1bWUoKTsKLSAgICByZXR1cm4gcmVzb2x2ZVRva2VuUmFuZ2UocmVnaXN0ZXJlZFByb3BlcnRp
ZXMsIHJhbmdlLCByZXN1bHQsIHN0eWxlKTsKLX0KLQotYm9vbCBDU1NWYXJpYWJsZURhdGE6OnJl
c29sdmVWYXJpYWJsZVJlZmVyZW5jZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29u
c3QKLXsKLSAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwotICAgIEFTU0VSVChyYW5nZS5w
ZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pOwotICAgIEF0b21pY1N0cmluZyB2YXJpYWJsZU5h
bWUgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9BdG9taWNT
dHJpbmcoKTsKLSAgICBBU1NFUlQocmFuZ2UuYXRFbmQoKSB8fCAocmFuZ2UucGVlaygpLnR5cGUo
KSA9PSBDb21tYVRva2VuKSk7Ci0gICAgCi0gICAgYXV0byogcHJvcGVydHkgPSBzdHlsZS5nZXRD
dXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5hbWUpOwotICAgIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0
eS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCkpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcihw
cm9wZXJ0eS0+dG9rZW5zKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBzdHlsZSkpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoIXByb3BlcnR5IHx8ICFwcm9wZXJ0eS0+dmFs
dWUoKSkgewotICAgICAgICBhdXRvKiByZWdpc3RlcmVkID0gcmVnaXN0ZXJlZFByb3BlcnRpZXMu
Z2V0KHZhcmlhYmxlTmFtZSk7Ci0gICAgICAgIGlmIChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQt
PmluaXRpYWxWYWx1ZSgpKQotICAgICAgICAgICAgcHJvcGVydHkgPSByZWdpc3RlcmVkLT5pbml0
aWFsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVWYXJp
YWJsZUZhbGxiYWNrKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwgcmVzdWx0LCBzdHlsZSk7
Ci0gICAgfQotICAgIEFTU0VSVChwcm9wZXJ0eSk7Ci0gICAgcmVzdWx0LmFwcGVuZFZlY3Rvcihw
cm9wZXJ0eS0+dG9rZW5zKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBzdHlsZSkpOwotICAgIAotICAg
IHJldHVybiB0cnVlOwotfQotCi1SZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBDU1NWYXJpYWJsZURh
dGE6OnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KSBjb25zdAotewotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Ci0g
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSA9IG1fdG9rZW5zOwotICAgIGlmICghcmVzb2x2
ZVRva2VuUmFuZ2UocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHJhbmdlLCByZXNvbHZlZFRva2Vucywg
c3R5bGUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gQ1NTVmFyaWFibGVE
YXRhOjpjcmVhdGVSZXNvbHZlZChyZXNvbHZlZFRva2VucywgKnRoaXMpOwotfQotICAgIAotYm9v
bCBDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlKGNvbnN0IENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3BlcnRpZXMsIENTU1BhcnNlclRva2VuUmFu
Z2UgcmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc3VsdCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKSBjb25zdAotewotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgd2hpbGUg
KCFyYW5nZS5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgp
ID09IENTU1ZhbHVlVmFyIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVF
bnYpCi0gICAgICAgICAgICBzdWNjZXNzICY9IHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZShyZWdp
c3RlcmVkUHJvcGVydGllcywgcmFuZ2UuY29uc3VtZUJsb2NrKCksIHJlc3VsdCwgc3R5bGUpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJhbmdlLmNvbnN1bWUoKSk7
Ci0gICAgfQotICAgIHJldHVybiBzdWNjZXNzOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgKaW5kZXggMDA4YTZmYTQyMzA3NzA0OTkz
MzE3MDdhNzRjN2Q2Y2Q2ZDIyNzJlMS4uMzk2ZTA2OWI5YzQ2NTJjOGU4N2Y3Y2FkODI5OTAzOWVj
MGNlZDE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaApAQCAtNDMsMTQgKzQz
LDkgQEAgY2xhc3MgQ1NTVmFyaWFibGVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTVmFyaWFi
bGVEYXRhPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTVmFyaWFibGVEYXRhKTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1Zh
cmlhYmxlRGF0YT4gY3JlYXRlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBib29s
IG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uID0gdHJ1ZSkKKyAgICBzdGF0aWMgUmVmPENTU1Zhcmlh
YmxlRGF0YT4gY3JlYXRlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVEYXRhKHJhbmdlLCBuZWVk
c1ZhcmlhYmxlUmVzb2x1dGlvbikpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiBjcmVhdGVSZXNvbHZlZChjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNv
bHZlZFRva2VucywgY29uc3QgQ1NTVmFyaWFibGVEYXRhJiB1bnJlc29sdmVkRGF0YSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyZXNvbHZlZFRv
a2VucywgdW5yZXNvbHZlZERhdGEubV9iYWNraW5nU3RyaW5nKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyYW5nZSkpOwogICAgIH0KIAogICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgdG9rZW5SYW5nZSgpIHsgcmV0dXJuIG1fdG9rZW5zOyB9CkBAIC01OSwz
NiArNTQsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1Zhcmlh
YmxlRGF0YSYgb3RoZXIpIGNvbnN0OwogCi0gICAgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNWYXJpYWJsZVJlc29sdXRpb247IH0KLQotICAgIGJv
b2wgY2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBSZW5kZXJTdHlsZSYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhh
c2hTZXQ8QXRvbWljU3RyaW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwotCi0gICAgUmVm
UHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhjb25zdCBDU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0Owot
ICAgIGJvb2wgcmVzb2x2ZVRva2VuUmFuZ2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5U2V0JiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYsIGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3Q7Ci0KIHByaXZhdGU6Ci0gICAgQ1NTVmFyaWFibGVEYXRh
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBib29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9u
KTsKLQotICAgIC8vIFdlIGNhbiBzYWZlbHkgY29weSB0aGUgdG9rZW5zICh3aGljaCBoYXZlIHJh
dyBwb2ludGVycyB0byBzdWJzdHJpbmdzKSBiZWNhdXNlCi0gICAgLy8gU3R5bGVQcm9wZXJ0eVNl
dHMgY29udGFpbiByZWZlcmVuY2VzIHRvIENTU0N1c3RvbVByb3BlcnR5VmFsdWVzLCB3aGljaAot
ICAgIC8vIHBvaW50IHRvIHRoZSB1bnJlc29sdmVkIENTU1ZhcmlhYmxlRGF0YSB2YWx1ZXMgdGhh
dCBvd24gdGhlIGJhY2tpbmcgc3RyaW5ncwotICAgIC8vIHRoaXMgd2lsbCBwb3RlbnRpYWxseSBy
ZWZlcmVuY2UuCi0gICAgQ1NTVmFyaWFibGVEYXRhKGNvbnN0IFZlY3RvcjxDU1NQYXJzZXJUb2tl
bj4mIHJlc29sdmVkVG9rZW5zLCBTdHJpbmcgYmFja2luZ1N0cmluZykKLSAgICAgICAgOiBtX2Jh
Y2tpbmdTdHJpbmcoYmFja2luZ1N0cmluZykKLSAgICAgICAgLCBtX3Rva2VucyhyZXNvbHZlZFRv
a2VucykKLSAgICAgICAgLCBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uKGZhbHNlKQotICAgIHsg
fQotCi0gICAgdm9pZCBjb25zdW1lQW5kVXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKKyAgICBDU1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXBkYXRlVG9rZW5z
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICAKLSAgICBib29sIGNoZWNrVmFyaWFi
bGVzRm9yQ3ljbGVzV2l0aFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UsIGNvbnN0IFJlbmRlclN0
eWxlJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9t
aWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3Q7Ci0gICAgYm9vbCByZXNvbHZlVmFy
aWFibGVSZWZlcmVuY2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiwgQ1NT
UGFyc2VyVG9rZW5SYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Q7Ci0gICAgYm9vbCByZXNvbHZlVmFyaWFibGVGYWxsYmFjayhjb25zdCBDU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBDU1NQYXJzZXJUb2tlblJhbmdlLCBWZWN0b3I8
Q1NTUGFyc2VyVG9rZW4+JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIFN0cmlu
ZyBtX2JhY2tpbmdTdHJpbmc7CiAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiBtX3Rva2VuczsK
LSAgICBjb25zdCBib29sIG1fbmVlZHNWYXJpYWJsZVJlc29sdXRpb247CiAKICAgICAvLyBGSVhN
RS1ORVdQQVJTRVI6IFdlIHdhbnQgdG8gY2FjaGUgU3R5bGVQcm9wZXJ0aWVzIG9uY2Ugd2Ugc3Vw
cG9ydCBAYXBwbHkuCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWUuY3BwCmluZGV4IDM4OTU3ZTQwMzBjMjM4ZjRmNzc1NTJjZjI5M2U1MTEwYTc5
MTM5NjguLjc3YTUyM2U0ZDdkZGFkZjAzMGExMjQwNWRlN2ZjMmZjYzdhMTE0ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHAKQEAgLTMw
LDYgKzMwLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NWYXJpYWJsZVJl
ZmVyZW5jZVZhbHVlLmgiCiAKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlN0
eWxlUmVzb2x2ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgQ1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CkBAIC00MCwxMSArNDMsNzIg
QEAgU3RyaW5nIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25z
dAogICAgIH0KICAgICByZXR1cm4gbV9zdHJpbmdWYWx1ZTsKIH0KLSAgICAKLWJvb2wgQ1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgaW52YWxpZFByb3Bl
cnRpZXMpIGNvbnN0CisKK3N0YXRpYyBib29sIHJlc29sdmVUb2tlblJhbmdlKENTU1BhcnNlclRv
a2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBBcHBseUNhc2NhZGVkUHJvcGVydHlT
dGF0ZSYpOworCitzdGF0aWMgYm9vbCByZXNvbHZlVmFyaWFibGVGYWxsYmFjayhDU1NQYXJzZXJU
b2tlblJhbmdlIHJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIEFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkudHlwZSgpID09IENv
bW1hVG9rZW4pOworICAgIHJhbmdlLmNvbnN1bWUoKTsKKyAgICByZXR1cm4gcmVzb2x2ZVRva2Vu
UmFuZ2UocmFuZ2UsIHJlc3VsdCwgc3RhdGUpOworfQorCitzdGF0aWMgYm9vbCByZXNvbHZlVmFy
aWFibGVSZWZlcmVuY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNl
clRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCiB7Ci0g
ICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS0+Y2hlY2tWYXJpYWJsZXNGb3JD
eWNsZXMobmFtZSwgc3R5bGUsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7Cisg
ICAgYXV0byYgcmVnaXN0ZXJlZFByb3BlcnRpZXMgPSBzdGF0ZS5zdHlsZVJlc29sdmVyLT5kb2N1
bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpOworICAgIGF1dG8mIHN0
eWxlID0gKnN0YXRlLnN0eWxlUmVzb2x2ZXItPnN0eWxlKCk7CisKKyAgICByYW5nZS5jb25zdW1l
V2hpdGVzcGFjZSgpOworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkudHlwZSgpID09IElkZW50VG9r
ZW4pOworICAgIFN0cmluZyB2YXJpYWJsZU5hbWUgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKTsKKyAgICBBU1NFUlQocmFuZ2UuYXRFbmQoKSB8
fCAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKSk7CisKKyAgICAvLyBBcHBseSB0
aGlzIHZhcmlhYmxlIGZpcnN0LCBpbiBjYXNlIGl0IGlzIHN0aWxsIHVucmVzb2x2ZWQKKyAgICBz
dGF0ZS5zdHlsZVJlc29sdmVyLT5hcHBseUNhc2NhZGVkQ3VzdG9tUHJvcGVydHkodmFyaWFibGVO
YW1lLCBzdGF0ZSk7CisKKyAgICAvLyBBcHBseSBmYWxsYmFjayB0byBkZXRlY3QgY3ljbGVzCisg
ICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiBmYWxsYmFja1Jlc3VsdDsKKyAgICByZXNvbHZlVmFy
aWFibGVGYWxsYmFjayhDU1NQYXJzZXJUb2tlblJhbmdlKHJhbmdlKSwgZmFsbGJhY2tSZXN1bHQs
IHN0YXRlKTsKKworICAgIGF1dG8qIHByb3BlcnR5ID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVydHko
dmFyaWFibGVOYW1lKTsKKworICAgIGlmICghcHJvcGVydHkgfHwgcHJvcGVydHktPmlzVW5zZXQo
KSB8fCBwcm9wZXJ0eS0+aXNJbnZhbGlkKCkpIHsKKyAgICAgICAgYXV0byogcmVnaXN0ZXJlZCA9
IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldCh2YXJpYWJsZU5hbWUpOworICAgICAgICBpZiAocmVn
aXN0ZXJlZCAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKSkKKyAgICAgICAgICAgIHByb3Bl
cnR5ID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJldHVybiByZXNvbHZlVmFyaWFibGVGYWxsYmFjayhyYW5nZSwgcmVzdWx0LCBzdGF0ZSk7
CisgICAgfQorCisgICAgQVNTRVJUKHByb3BlcnR5LT5pc1Jlc29sdmVkKCkpOworICAgIHJlc3Vs
dC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRva2VucygpKTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgYm9vbCByZXNvbHZlVG9rZW5SYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlIHJh
bmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0
eVN0YXRlJiBzdGF0ZSkKK3sKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIHdoaWxlICgh
cmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9
PSBDU1NWYWx1ZVZhciB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlRW52
KQorICAgICAgICAgICAgc3VjY2VzcyAmPSByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2UocmFuZ2Uu
Y29uc3VtZUJsb2NrKCksIHJlc3VsdCwgc3RhdGUpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHJhbmdlLmNvbnN1bWUoKSk7CisgICAgfQorICAgIHJldHVybiBzdWNj
ZXNzOworfQorCitSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBDU1NWYXJpYWJsZVJlZmVyZW5jZVZh
bHVlOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRl
JiBzdGF0ZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9r
ZW5zOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UgPSBtX2RhdGEtPnRva2VuUmFuZ2Uo
KTsKKworICAgIGlmICghcmVzb2x2ZVRva2VuUmFuZ2UocmFuZ2UsIHJlc29sdmVkVG9rZW5zLCBz
dGF0ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU1ZhcmlhYmxl
RGF0YTo6Y3JlYXRlKHJlc29sdmVkVG9rZW5zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmgKaW5k
ZXggMjI4OTY0ZWQ3Njk0NDA1OTM5NWMxMGM2NGFlZjJjMDEwNmQ4MWY3Zi4uZDcwZTMyN2MxMDZk
ZGFhZTgyM2ZmOTliZmEyYTljYmJhOGI2MDY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oCkBAIC0yOSwyOCArMjksMzAgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNl
clRva2VuUmFuZ2UuaCIKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Zhcmlh
YmxlRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3N0cnVjdCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZTsKK2NsYXNzIENTU1BhcnNl
clRva2VuUmFuZ2U7CisKIGNsYXNzIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUgOiBwdWJsaWMg
Q1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZT4gY3JlYXRlKFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgZGF0YSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUoV1RGTW92ZShk
YXRhKSkpOwotICAgIH0KLQotICAgIENTU1ZhcmlhYmxlRGF0YSogdmFyaWFibGVEYXRhVmFsdWUo
KSBjb25zdAorICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4gY3JlYXRl
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZShDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShyYW5nZSkpKTsKICAgICB9CiAK
LSAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9kYXRhID09IG90aGVyLm1fZGF0YTsgfQorICAgIGJvb2wgZXF1YWxz
KGNvbnN0IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOyB9CiAgICAgU3RyaW5nIGN1c3RvbUNT
U1RleHQoKSBjb25zdDsKIAotICAgIGJvb2wgY2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgaW52YWxpZFByb3Bl
cnRpZXMpIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IHJlc29sdmVWYXJpYWJs
ZVJlZmVyZW5jZXMoQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKFJlZjxDU1NWYXJpYWJsZURhdGE+JiYg
ZGF0YSkKQEAgLTU5LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVm
UHRyPENTU1ZhcmlhYmxlRGF0YT4gbV9kYXRhOworICAgIFJlZjxDU1NWYXJpYWJsZURhdGE+IG1f
ZGF0YTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3N0cmluZ1ZhbHVlOwogICAgIG11dGFibGUgYm9v
bCBtX3NlcmlhbGl6ZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAppbmRleCAzNzMxOGRhNjU5OGZkMTE1
OTMwNjljYTIyMTU1ZmRiNjRiNTRkN2FkLi5iOGVmNmE5NTIxM2RlYTI1MDdkNWRmNzUxMWZhOTEz
ZjkyODIyOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVy
Q3VzdG9tUHJvcGVydHkuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogI2luY2x1ZGUgIkNTU0N1
c3RvbVByb3BlcnR5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5j
bHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJET01DU1NO
YW1lc3BhY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlN0eWxlQnVpbGRl
ckNvbnZlcnRlci5oIgotI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsMjggKzQyLDMz
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OnJlZ2lz
dGVyUHJvcGVydHkoRG9jdW1lbnQmIGRvY3VtCiB7CiAgICAgUmVmUHRyPENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+IGluaXRpYWxWYWx1ZTsKICAgICBpZiAoIWRlc2NyaXB0b3IuaW5pdGlhbFZhbHVl
LmlzRW1wdHkoKSkgewotICAgICAgICBpbml0aWFsVmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlOjpjcmVhdGVXaXRoVmFyaWFibGVEYXRhKGRlc2NyaXB0b3IubmFtZSwgQ1NTVmFyaWFibGVE
YXRhOjpjcmVhdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZShWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+KCkp
LCBmYWxzZSkpOwotICAgICAgICBDU1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KTsKKyAgICAgICAg
Q1NTVG9rZW5pemVyIHRva2VuaXplcihkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7CiAgICAgICAg
IFN0eWxlUmVzb2x2ZXIgc3R5bGVSZXNvbHZlcihkb2N1bWVudCk7CiAKLSAgICAgICAgYXV0byBw
cmltaXRpdmVWYWwgPSBwYXJzZXIucGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUN1c3RvbSwg
ZGVzY3JpcHRvci5pbml0aWFsVmFsdWUpOwotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbCB8fCAh
cHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIC8vIFdlIG5lZWQgdG8g
aW5pdGlhbGl6ZSB0aGlzIHNvIHRoYXQgd2UgY2FuIHN1Y2Nlc3NmdWxseSBwYXJzZSBjb21wdXRh
dGlvbmFsbHkgZGVwZW5kZW50IHZhbHVlcyAobGlrZSBlbSB1bml0cykuCisgICAgICAgIC8vIFdl
IGRvbid0IGFjdHVhbGx5IG5lZWQgdGhlIHZhbHVlcyB0byBiZSBhY2N1cmF0ZSwgc2luY2UgdGhl
eSB3aWxsIGJlIHJlamVjdGVkIGxhdGVyIGFueXdheQorICAgICAgICBzdHlsZVJlc29sdmVyLnN0
YXRlKCkuc2V0U3R5bGUoc3R5bGVSZXNvbHZlci5kZWZhdWx0U3R5bGVGb3JFbGVtZW50KCkpOwor
ICAgICAgICBzdHlsZVJlc29sdmVyLnVwZGF0ZUZvbnQoKTsKKworICAgICAgICBpbml0aWFsVmFs
dWUgPSBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoZGVz
Y3JpcHRvci5uYW1lLCBkZXNjcmlwdG9yLnN5bnRheCwgdG9rZW5pemVyLnRva2VuUmFuZ2UoKSwg
c3R5bGVSZXNvbHZlciwgc3RyaWN0Q1NTUGFyc2VyQ29udGV4dCgpKTsKKworICAgICAgICBpZiAo
IWluaXRpYWxWYWx1ZSB8fCAhaW5pdGlhbFZhbHVlLT5pc1Jlc29sdmVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1
ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4iIH07CiAKICAgICAgICAgSGFz
aFNldDxDU1NQcm9wZXJ0eUlEPiBkZXBlbmRlbmNpZXM7Ci0gICAgICAgIHByaW1pdGl2ZVZhbC0+
Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTsKLSAg
ICAgICAgcHJpbWl0aXZlVmFsLT5jb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRl
bmNpZXMoZGVwZW5kZW5jaWVzKTsKKyAgICAgICAgaW5pdGlhbFZhbHVlLT5jb2xsZWN0RGlyZWN0
Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOworICAgICAgICBpbml0aWFs
VmFsdWUtPmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRl
bmNpZXMpOwogCiAgICAgICAgIGlmICghZGVwZW5kZW5jaWVzLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIlRoZSBnaXZlbiBpbml0aWFsIHZh
bHVlIG11c3QgYmUgY29tcHV0YXRpb25hbGx5IGluZGVwZW5kZW50LiIgfTsKLQotICAgICAgICBp
bml0aWFsVmFsdWUtPnNldFJlc29sdmVkVHlwZWRWYWx1ZShTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMZW5ndGgoc3R5bGVSZXNvbHZlciwgKnByaW1pdGl2ZVZhbCkpOwogICAgIH0KIAot
ICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSBwcm9wZXJ0eSB7IGRlc2NyaXB0b3IubmFt
ZSwgZGVzY3JpcHRvci5pbmhlcml0cywgV1RGTW92ZShpbml0aWFsVmFsdWUpIH07CisgICAgQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5IHByb3BlcnR5IHsgZGVzY3JpcHRvci5uYW1lLCBkZXNj
cmlwdG9yLnN5bnRheCwgZGVzY3JpcHRvci5pbmhlcml0cywgV1RGTW92ZShpbml0aWFsVmFsdWUp
IH07CiAgICAgaWYgKCFkb2N1bWVudC5yZWdpc3RlckNTU1Byb3BlcnR5KFdURk1vdmUocHJvcGVy
dHkpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJv
ciwgIlRoaXMgcHJvcGVydHkgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkLiIgfTsKIAorICAg
IGRvY3VtZW50LnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsK
KwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggZTI4YjM0YzBkOTFlNzc4NWE0
N2E3OGM4YmMxMzA5MDU2ZmZhMTE5Yy4uMzgzYWM4ZWU0ZjY2ZTUxOWE1NzljOWI2ZGJkNDg4ZDFm
ZGNkYzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIyNiw2ICsyMjYsMTYgQEAgYm9vbCBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OmlzUHJvcGVydHlJbXBsaWNpdChjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmEKIEV4Y2VwdGlvbk9yPHZvaWQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHkpCiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRh
dGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisKKyAgICBpZiAoIXdpbGxNdXRhdGUoKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxwdHI7
CisKKyAgICBpZiAocGFyZW50RWxlbWVudCgpKQorICAgICAgICBkb2N1bWVudCA9ICZwYXJlbnRF
bGVtZW50KCktPmRvY3VtZW50KCk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudCA9IHBhcmVu
dFN0eWxlU2hlZXQoKS0+b3duZXJEb2N1bWVudCgpOwogICAgIAogICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaXNDdXN0
b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKQEAgLTIzMywxNiArMjQzLDEzIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHko
Y29uc3QgU3RyaW5nJiBwcm9wCiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgaWYgKCF3aWxsTXV0YXRlKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KICAg
ICBib29sIGltcG9ydGFudCA9IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocHJpb3JpdHksICJpbXBv
cnRhbnQiKTsKICAgICBpZiAoIWltcG9ydGFudCAmJiAhcHJpb3JpdHkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgYm9vbCBjaGFuZ2VkOwogICAgIGlmIChwcm9wZXJ0eUlE
ID09IENTU1Byb3BlcnR5Q3VzdG9tKQotICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+
c2V0Q3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJz
ZXJDb250ZXh0KCkpOworICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0Q3VzdG9t
UHJvcGVydHkoZG9jdW1lbnQsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFy
c2VyQ29udGV4dCgpKTsKICAgICBlbHNlCiAgICAgICAgIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0
LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJDb250
ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggMGM0
N2RhMjJlZmVhMTBiYTdmYWQ5MTI4M2FkMzFhZjM2OTE3NGQxZC4uMjAwMGZkYzFmNTVlMjFjNjY4
NzFmYjkwYTFkNTdmYmY0YzdmN2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
dXN0b20uaApAQCAtMTg3OSwxMyArMTg3OSwxMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVTdHJva2VDb2xvcihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdgog
CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3Bl
cnR5KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAg
IGlmIChyZWdpc3RlcmVkKSB7CisgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5p
dGlhbFZhbHVlKCkpIHsKICAgICAgICAgYXV0byBpbml0aWFsVmFsdWUgPSByZWdpc3RlcmVkLT5p
bml0aWFsVmFsdWVDb3B5KCk7CiAgICAgICAgIGFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShzdHls
ZVJlc29sdmVyLCByZWdpc3RlcmVkLCAqaW5pdGlhbFZhbHVlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gaW52YWxpZCA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0
ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZUludmFsaWQpOworICAgIGF1dG8gaW52YWxpZCA9IENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVVucmVzb2x2ZWQobmFtZSwgQ1NTVmFsdWVJbnZhbGlk
KTsKICAgICBhcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoc3R5bGVSZXNvbHZlciwgcmVnaXN0ZXJl
ZCwgaW52YWxpZC5nZXQoKSk7CiB9CiAKQEAgLTE5MDAsMTIgKzE5MDAsMTMgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShTdHlsZVJl
c29sdmVyJiBzdHlsZVIKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlQ3VzdG9tUHJvcGVydHkoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlJiB2YWx1ZSkKIHsKKyAgICBBU1NFUlQodmFsdWUuaXNSZXNvbHZlZCgpKTsKICAgICBjb25z
dCBhdXRvJiBuYW1lID0gdmFsdWUubmFtZSgpOwogCiAgICAgaWYgKCFyZWdpc3RlcmVkIHx8IHJl
Z2lzdGVyZWQtPmluaGVyaXRzKQotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldElu
aGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1ZSksIHJlZ2lzdGVy
ZWQpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEluaGVyaXRlZEN1c3RvbVBy
b3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1ZSkpOwogICAgIGVsc2UKLSAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5h
bWUsIG1ha2VSZWYodmFsdWUpLCByZWdpc3RlcmVkKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIG1ha2VSZWYo
dmFsdWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA1ZDc4ZjhjMTdmZTFkZWYxYjIyZmZkZTQ0ZTE1MmRiNGY2
NWIwN2ViLi41YWNiNDhmOTExYTM3MTc4ZmFlOGE4MGUxNzgzZTY5Yjc1ODhjYjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1
ZGUgIkNTU0RlZmVycmVkUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiQ1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQ
YXJzZXIuaCIKKyNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtl
eXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQ
b29sLmgiCkBAIC03NzksNyArNzgxLDcgQEAgYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpz
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYKICAgICBy
ZXR1cm4gc2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgcGFyc2VyQ29u
dGV4dCk7CiB9CiAKLWJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0Q3VzdG9tUHJvcGVy
dHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wg
aW1wb3J0YW50LCBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQpCitib29sIE11dGFibGVT
dHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KGNvbnN0IERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wg
aW1wb3J0YW50LCBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQpCiB7CiAgICAgLy8gU2V0
dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0aGUgcHJvcGVy
dHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCiAgICAgLy8gU2V0dGluZyBpdCB0byBudWxsIHNlZW1z
IHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVhdCBpdCBqdXN0
IHRoZSBzYW1lLgpAQCAtNzg3LDYgKzc4OSwxNyBAQCBib29sIE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OnNldEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdAog
ICAgICAgICByZXR1cm4gcmVtb3ZlQ3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1lKTsKIAogICAg
IHBhcnNlckNvbnRleHQubW9kZSA9IGNzc1BhcnNlck1vZGUoKTsKKworICAgIFN0cmluZyBzeW50
YXggPSAiKiI7CisgICAgYXV0byogcmVnaXN0ZXJlZCA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmdl
dENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLmdldChwcm9wZXJ0eU5hbWUpIDogbnVs
bHB0cjsKKworICAgIGlmIChyZWdpc3RlcmVkKQorICAgICAgICBzeW50YXggPSByZWdpc3RlcmVk
LT5zeW50YXg7CisKKyAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKHZhbHVlKTsKKyAgICBpZiAo
IUNTU1Byb3BlcnR5UGFyc2VyOjpjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShzeW50
YXgsIHRva2VuaXplci50b2tlblJhbmdlKCksIHBhcnNlckNvbnRleHQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICAvLyBXaGVuIHJlcGxhY2luZyBhbiBleGlzdGluZyBwcm9wZXJ0eSB2
YWx1ZSwgdGhpcyBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAg
ICAvLyBGaXJlZm94IHByZXNlcnZlcyB0aGUgcG9zaXRpb24sIGFuZCBNU0lFIG1vdmVzIHRoZSBw
cm9wZXJ0eSB0byB0aGUgYmVnaW5uaW5nLgogICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlQ3Vz
dG9tUHJvcGVydHlWYWx1ZSgqdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBw
YXJzZXJDb250ZXh0KSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpDaGFuZ2VkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IDNmNGI2NWFiNzI4OGRkMGYzYjE2MWJhNDFi
ZDUwNWRmMmUzNzU1MGMuLjgzOWE1NDQzZjkxNzhhMjJlMzBiNmYwODdiMmMxOTk4NjRjZjM1OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTI0OSw3ICsyNDksNyBAQCBw
dWJsaWM6CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCA0PiBtX3Byb3BlcnR5VmVjdG9yOwogCiAg
ICAgLy8gTWV0aG9kcyBmb3IgcXVlcnlpbmcgYW5kIGFsdGVyaW5nIENTUyBjdXN0b20gcHJvcGVy
dGllcy4KLSAgICBib29sIHNldEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4
dCk7CisgICAgYm9vbCBzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBEb2N1bWVudCosIGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwg
Q1NTUGFyc2VyQ29udGV4dCk7CiAgICAgYm9vbCByZW1vdmVDdXN0b21Qcm9wZXJ0eShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nKiByZXR1cm5UZXh0ID0gbnVsbHB0cik7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZDRlMDZiY2NmMzM2
MGQxY2E0MGMwNzI4MDJmNDUwMGM1OWZkYTA1Yi4uN2IwMWMxYTRhZTFiMWI0YTA4NGI2NzhmYmMx
ZmIwMjAzOTllY2Y2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzIx
LDcgKzMyMSw3IEBAIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjp1cGRhdGVDb252
ZXJzaW9uRGF0YSgpCiAgICAgbV9jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhID0gQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YShtX3N0eWxlLmdldCgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIG1fZWxl
bWVudCA/IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRT
dHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAgIG1fc3R5bGUg
PSBXVEZNb3ZlKHN0eWxlKTsKICAgICB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwpAQCAtNDI5LDIx
ICs0MjksMjEgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpz
dHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKgogICAgIENhc2NhZGVkUHJvcGVydGll
cyBjYXNjYWRlKGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpOwogICAgIGNhc2NhZGUuYWRkTm9ybWFs
TWF0Y2hlcyhyZXN1bHQsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAtIDEp
OwogCi0gICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNh
c2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlD
dXN0b20sICZyZXN1bHQpOwotCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwg
Zmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmcmVzdWx0KTsKKyAg
ICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgJmNhc2NhZGUs
ICZyZXN1bHQgfTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdENTU1Byb3BlcnR5
LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksIGFwcGx5U3RhdGUpOwogCiAgICAgLy8gSWYgb3Vy
IGZvbnQgZ290IGRpcnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAgICAgdXBkYXRlRm9udCgpOwogCi0g
ICAgLy8gTm93IGRvIHJlc3Qgb2YgdGhlIHByb3BlcnRpZXMuCi0gICAgYXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVy
dHksICZyZXN1bHQpOworICAgIC8vIE5vdyByZXNvbHZlIHJlbWFpbmluZyBjdXN0b20gcHJvcGVy
dGllcyBhbmQgdGhlIHJlc3QsIGluIGFueSBvcmRlcgorICAgIGZvciAoYXV0byBpdCA9IGNhc2Nh
ZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2luKCk7IGl0ICE9IGNhc2NhZGUuY3VzdG9tUHJvcGVy
dGllcygpLmVuZCgpOyArK2l0KQorICAgICAgICBhcHBseUNhc2NhZGVkQ3VzdG9tUHJvcGVydHko
aXQtPmtleSwgYXBwbHlTdGF0ZSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RM
b3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksIGFwcGx5U3RhdGUpOwogCiAgICAg
Ly8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQgYnkgb25lIG9mIHRoZSBub24tZXNzZW50aWFsIGZv
bnQgcHJvcHMsIHVwZGF0ZSBpdCBhIHNlY29uZCB0aW1lLgogICAgIHVwZGF0ZUZvbnQoKTsKIAot
ICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsICZyZXN1bHQpOworICAg
IGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwogCiAg
ICAgYWRqdXN0UmVuZGVyU3R5bGUoKnN0YXRlLnN0eWxlKCksICpzdGF0ZS5wYXJlbnRTdHlsZSgp
LCBudWxscHRyLCBudWxscHRyKTsKIApAQCAtNjM1LDE3ICs2MzUsMTggQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRl
eCkKICAgICBDYXNjYWRlZFByb3BlcnRpZXMgY2FzY2FkZShkaXJlY3Rpb24sIHdyaXRpbmdNb2Rl
KTsKICAgICBjYXNjYWRlLmFkZE5vcm1hbE1hdGNoZXMocmVzdWx0LCAwLCByZXN1bHQubWF0Y2hl
ZFByb3BlcnRpZXMoKS5zaXplKCkgLSAxKTsKIAotICAgIC8vIFJlc29sdmUgY3VzdG9tIHByb3Bl
cnRpZXMgZmlyc3QuCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJv
cGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVzdWx0KTsKLQotICAgIGFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJpb3Jp
dHlQcm9wZXJ0eSwgJnJlc3VsdCk7CisgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBw
bHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmcmVzdWx0IH07CisgICAgYXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBs
eVN0YXRlKTsKIAogICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCB1cGRhdGUgaXQgbm93
LgogICAgIHVwZGF0ZUZvbnQoKTsKIAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2Nh
ZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmcmVzdWx0KTsK
KyAgICAvLyBOb3cgcmVzb2x2ZSByZW1haW5pbmcgY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRoZSBy
ZXN0LCBpbiBhbnkgb3JkZXIKKyAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3RvbVByb3Bl
cnRpZXMoKS5iZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsg
KytpdCkKKyAgICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5
U3RhdGUpOworICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0TG93UHJpb3JpdHlQcm9w
ZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCBhcHBseVN0YXRlKTsKIAotICAgIGNhc2NhZGUuYXBwbHlE
ZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsICZyZXN1bHQpOworICAgIGNhc2NhZGUuYXBwbHlEZWZl
cnJlZFByb3BlcnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwogCiAgICAgLy8gTm93IHJldHVybiB0
aGUgc3R5bGUuCiAgICAgcmV0dXJuIG1fc3RhdGUudGFrZVN0eWxlKCk7CkBAIC0xMzcxLDE3ICsx
MzcyLDIwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25z
dCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAgICAgIGNhc2NhZGUuYWRkTm9y
bWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBt
YXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKICAgICAg
ICAgY2FzY2FkZS5hZGRJbXBvcnRhbnRNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5y
YW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUlu
aGVyaXRlZE9ubHkpOwogCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUs
IENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3Np
dGlvbiwgJm1hdGNoUmVzdWx0KTsKLSAgICAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3Rl
clJ1YnkoKTsKKyAgICAgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7
IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQgfTsKIAotICAgICAgICAvLyBSZXNvbHZlIGN1
c3RvbSB2YXJpYWJsZXMgZmlyc3QuCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNh
c2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSwgJm1hdGNoUmVzdWx0
KTsKKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoQ1NTUHJvcGVydHlXZWJraXRSdWJ5
UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBhcHBseVN0YXRlKTsKKyAg
ICAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1YnkoKTsKIAotICAgICAgICAvLyBT
dGFydCBieSBhcHBseWluZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVw
ZW5kIG9uLgotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENT
U1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisgICAg
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJp
b3JpdHlQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKKyAgICAgICAgLy8gSWYgb3VyIGZvbnQgZ290
IGRpcnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLSAgICAgICAg
YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5
LCBsYXN0Q1NTUHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisKKyAgICAgICAgLy8gTm93IHJlc29s
dmUgcmVtYWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVy
CisgICAgICAgIGZvciAoYXV0byBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2lu
KCk7IGl0ICE9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOyArK2l0KQorICAgICAg
ICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5U3RhdGUpOwor
ICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHks
IGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKICAgICAgICAgc3RhdGUuY2FjaGVCb3Jk
ZXJBbmRCYWNrZ3JvdW5kKCk7CiAgICAgfQpAQCAtMTM5MiwxNiArMTM5NiwxMyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmIG1h
dGNoUmVzdWx0LCBjb25zdAogICAgIGNhc2NhZGUuYWRkSW1wb3J0YW50TWF0Y2hlcyhtYXRjaFJl
c3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdl
cy5sYXN0VXNlclJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgY2FzY2FkZS5hZGRJbXBv
cnRhbnRNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUs
IG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogCi0g
ICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20s
ICZtYXRjaFJlc3VsdCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBD
U1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRp
b24sICZtYXRjaFJlc3VsdCk7CisgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlT
dGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQgfTsKIAotICAgIC8vIEFkanVzdCB0
aGUgZm9udCBzaXplIHRvIGJlIHNtYWxsZXIgaWYgcnVieS1wb3NpdGlvbiBpcyBpbnRlci1jaGFy
YWN0ZXIuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoQ1NTUHJvcGVydHlXZWJraXRSdWJ5
UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBhcHBseVN0YXRlKTsKICAg
ICBhZGp1c3RTdHlsZUZvckludGVyQ2hhcmFjdGVyUnVieSgpOwogCi0gICAgLy8gU3RhcnQgYnkg
YXBwbHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRlcGVuZCBvbi4K
LSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBs
YXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisgICAgYXBwbHlDYXNjYWRl
ZFByb3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBh
cHBseVN0YXRlKTsKIAogICAgIC8vIElmIHRoZSBlZmZlY3RpdmUgem9vbSB2YWx1ZSBjaGFuZ2Vz
LCB3ZSBjYW4ndCB1c2UgdGhlIG1hdGNoZWQgcHJvcGVydGllcyBjYWNoZS4gU3RhcnQgb3Zlci4K
ICAgICBpZiAoY2FjaGVJdGVtICYmIGNhY2hlSXRlbS0+cmVuZGVyU3R5bGUtPmVmZmVjdGl2ZVpv
b20oKSAhPSBzdGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpCkBAIC0xNDE0LDEzICsxNDE1
LDE1IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBN
YXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNo
ZUl0ZW0tPnJlbmRlclN0eWxlLT5mb250RGVzY3JpcHRpb24oKSAhPSBzdGF0ZS5zdHlsZSgpLT5m
b250RGVzY3JpcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMo
bWF0Y2hSZXN1bHQsIGVsZW1lbnQsIERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7CiAK
LSAgICAvLyBBcHBseSBwcm9wZXJ0aWVzIHRoYXQgbm8gb3RoZXIgcHJvcGVydGllcyBkZXBlbmQg
b24uCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0
eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisgICAgLy8gTm93IHJl
c29sdmUgcmVtYWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9y
ZGVyCisgICAgZm9yIChhdXRvIGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4o
KTsgaXQgIT0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7ICsraXQpCisgICAgICAg
IGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKKyAgICBh
cHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQ
cm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKICAgICAvLyBGaW5hbGx5LCBzb21lIHByb3BlcnRpZXMg
bXVzdCBiZSBhcHBsaWVkIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgcGFyc2VkLgogICAgIC8vIFRo
ZXJlIGFyZSBzb21lIENTUyBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0IHRoZSBzYW1lIFJlbmRlclN0
eWxlIHZhbHVlcywKICAgICAvLyBzbyB0byBwcmVzZXJ2ZSBiZWhhdmlvciwgd2UgcXVldWUgdGhl
bSB1cCBkdXJpbmcgY2FzY2FkZSBhbmQgZmx1c2ggaGVyZS4KLSAgICBjYXNjYWRlLmFwcGx5RGVm
ZXJyZWRQcm9wZXJ0aWVzKCp0aGlzLCAmbWF0Y2hSZXN1bHQpOworICAgIGNhc2NhZGUuYXBwbHlE
ZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwogCiAgICAgQVNTRVJUKCFzdGF0
ZS5mb250RGlydHkoKSk7CiAKQEAgLTE0NDEsOCArMTQ0NCw5IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBzdGQ6CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxl
KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKKyAgICBBcHBseUNhc2NhZGVk
UHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAg
IGlmICh2YWx1ZSkKLSAgICAgICAgYXBwbHlQcm9wZXJ0eShpZCwgdmFsdWUpOworICAgICAgICBh
cHBseVByb3BlcnR5KGlkLCB2YWx1ZSwgYXBwbHlTdGF0ZSk7CiB9CiAKIGlubGluZSBib29sIGlz
VmFsaWRWaXNpdGVkTGlua1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpCkBAIC0xNjA5LDE2ICsx
NjEzLDE4IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZl
cjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayBsaW5rTWF0Y2hN
YXNrLCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBBcHBseUNh
c2NhZGVkUHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0
Y2hNYXNrIGxpbmtNYXRjaE1hc2spCiB7CisgICAgYXV0byogbWF0Y2hSZXN1bHQgPSBhcHBseVN0
YXRlLm1hdGNoUmVzdWx0OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWlzU2hvcnRoYW5kQ1NT
UHJvcGVydHkoaWQpLCAiU2hvcnRoYW5kIHByb3BlcnR5IGlkID0gJWQgd2Fzbid0IGV4cGFuZGVk
IGF0IHBhcnNpbmcgdGltZSIsIGlkKTsKIAogICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlVG9BcHBseSA9IHZhbHVlOwogICAgIGlmICh2YWx1
ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgdmFsdWVUb0FwcGx5ID0gcmVz
b2x2ZWRWYXJpYWJsZVZhbHVlKGlkLCAqdmFsdWUpOwotICAgICAgICBpZiAoIXZhbHVlVG9BcHBs
eSkgeworICAgICAgICB2YWx1ZVRvQXBwbHkgPSByZXNvbHZlZFZhcmlhYmxlVmFsdWUoaWQsICp2
YWx1ZSwgYXBwbHlTdGF0ZSk7CisgICAgICAgIC8vIElmIGFwcGxpZWRQcm9wZXJ0aWVzIGFscmVh
ZHkgaGFzIHRoaXMgaWQsIHRoZW4gd2UgZGV0ZWN0ZWQgYSBjeWNsZSwgYW5kIHRoaXMgdmFsdWUg
c2hvdWxkIGJlIHVuc2V0LgorICAgICAgICBpZiAoIXZhbHVlVG9BcHBseSB8fCBhcHBseVN0YXRl
LmFwcGxpZWRQcm9wZXJ0aWVzLmdldChpZCkpIHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0
eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5
ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAg
ICAgICAgICAgZWxzZQpAQCAtMTYyOSw3ICsxNjM1LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjph
cHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgU2VsZWN0b3JD
aGUKICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpIHsK
ICAgICAgICAgQ1NTUHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0
aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0
eWxlKCktPndyaXRpbmdNb2RlKCkpOwogICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwotICAg
ICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpLCBsaW5r
TWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBseVByb3BlcnR5KG5l
d0lkLCB2YWx1ZVRvQXBwbHkuZ2V0KCksIGFwcGx5U3RhdGUsIGxpbmtNYXRjaE1hc2spOwogICAg
IH0KIAogICAgIENTU1ZhbHVlKiB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9IHZhbHVl
VG9BcHBseS5nZXQoKTsKQEAgLTE2NDAsNyArMTY0Niw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9y
Q2hlCiAKICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKICAgICAgICAgY3VzdG9t
UHJvcGVydHlWYWx1ZSA9ICZkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdmFsdWVU
b0FwcGx5KTsKLSAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlEID0gY3VzdG9tUHJvcGVydHlW
YWx1ZS0+dmFsdWVJRCgpOworICAgICAgICBBU1NFUlQoY3VzdG9tUHJvcGVydHlWYWx1ZS0+aXNS
ZXNvbHZlZCgpKTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJ
RD4oY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSkpCisgICAgICAgICAgICBjdXN0b21Qcm9w
ZXJ0eVZhbHVlSUQgPSBXVEY6OmdldDxDU1NWYWx1ZUlEPihjdXN0b21Qcm9wZXJ0eVZhbHVlLT52
YWx1ZSgpKTsKICAgICAgICAgYXV0byYgbmFtZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUo
KTsKICAgICAgICAgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkID0gZG9jdW1lbnQoKS5nZXRDU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQobmFtZSk7CiAgICAgfQpAQCAtMTY2Nywx
MyArMTY3NSwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZQogICAgICAgICAgICAgICAgIGlm
IChjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQgJiYgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkLT5p
bmhlcml0cyAmJiByb2xsYmFjay0+aGFzQ3VzdG9tUHJvcGVydHkoY3VzdG9tUHJvcGVydHlWYWx1
ZS0+bmFtZSgpKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHByb3BlcnR5ID0gcm9sbGJh
Y2stPmN1c3RvbVByb3BlcnR5KGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNz
c1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBsaW5rTWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5j
c3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgYXBwbHlTdGF0ZSwgbGlua01hdGNoTWFzayk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKHJvbGxiYWNrLT5oYXNQcm9wZXJ0eShpZCkpIHsKICAgICAgICAgICAgICAgICBh
dXRvJiBwcm9wZXJ0eSA9IHJvbGxiYWNrLT5wcm9wZXJ0eShpZCk7CiAgICAgICAgICAgICAgICAg
aWYgKHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdKQotICAgICAgICAgICAgICAgICAg
ICBhcHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hN
YXNrXSwgbGlua01hdGNoTWFzaywgbWF0Y2hSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBh
cHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNr
XSwgYXBwbHlTdGF0ZSwgbGlua01hdGNoTWFzayk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCkBAIC0xNzAyLDEwICsxNzEwLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVj
dG9yQ2hlCiAgICAgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVl
VG9BcHBseSwgaXNJbml0aWFsLCBpc0luaGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7
CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4gU3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIGNvbnN0CitS
ZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUmVzb2x2ZXI6OnJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BJRCwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBBcHBseUNhc2NhZGVkUHJv
cGVydHlTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVu
dCgpKTsKLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2Vz
KHByb3BJRCwgdmFsdWUsIGRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
U2V0KCksICptX3N0YXRlLnN0eWxlKCkpOworICAgIHJldHVybiBwYXJzZXIucGFyc2VWYWx1ZVdp
dGhWYXJpYWJsZVJlZmVyZW5jZXMocHJvcElELCB2YWx1ZSwgc3RhdGUpOwogfQogCiBSZWZQdHI8
U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZShDU1NWYWx1ZSYgdmFsdWUpCkBA
IC0yMjI3LDEzICsyMjM1LDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0
aWVzOjphZGRJbXBvcnRhbnRNYXRjaGVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtCiAgICAgICAgIGFk
ZE1hdGNoKG1hdGNoUmVzdWx0LCBtYXRjaC5pbmRleCwgdHJ1ZSwgaW5oZXJpdGVkT25seSk7CiB9
CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphcHBseURlZmVycmVk
UHJvcGVydGllcyhTdHlsZVJlc29sdmVyJiByZXNvbHZlciwgY29uc3QgTWF0Y2hSZXN1bHQqIG1h
dGNoUmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OmFwcGx5
RGVmZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyLCBBcHBseUNhc2NhZGVk
UHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSkKIHsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDog
bV9kZWZlcnJlZFByb3BlcnRpZXMpCi0gICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyLCBt
YXRjaFJlc3VsdCk7CisgICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyLCBhcHBseVN0YXRl
KTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5
OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwgY29uc3QgTWF0Y2hSZXN1bHQqIG1hdGNo
UmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5
OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIGFwcGx5U3RhdGUpCiB7CiAgICAgU3RhdGUmIHN0YXRlID0gcmVzb2x2ZXIuc3RhdGUoKTsK
ICAgICBzdGF0ZS5zZXRDYXNjYWRlTGV2ZWwobGV2ZWwpOwpAQCAtMjI0Miw3ICsyMjUwLDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShT
dHlsZVJlc29sdmVyJiByZXNvbHZlciwKICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2Vy
OjpNYXRjaERlZmF1bHRdKSB7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3Vs
YXJTdHlsZSh0cnVlKTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExp
bmtTdHlsZShmYWxzZSk7Ci0gICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1Zh
bHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0XSwgU2VsZWN0b3JDaGVja2VyOjpNYXRj
aERlZmF1bHQsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShp
ZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdLCBhcHBseVN0YXRlLCBT
ZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLnN0
eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCkBAIC0yMjUxLDQz
ICsyMjU5LDEwNSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJv
cGVydHk6OmFwcGx5KFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyLAogICAgIGlmIChjc3NWYWx1ZVtT
ZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10pIHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9w
ZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5
VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKLSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0
eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdLCBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoTGluaywgbWF0Y2hSZXN1bHQpOworICAgICAgICByZXNvbHZlci5hcHBseVByb3Bl
cnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10sIGFwcGx5U3RhdGUs
IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rKTsKICAgICB9CiAKICAgICBpZiAoY3NzVmFsdWVb
U2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdKSB7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJv
cGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUodHJ1ZSk7Ci0gICAgICAgIHJlc29sdmVyLmFwcGx5UHJv
cGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkXSwgU2VsZWN0
b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWQsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgcmVzb2x2ZXIu
YXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRd
LCBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCk7CiAgICAgfQogCiAg
ICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwogICAgIHN0YXRl
LnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2UpOwogfQogCi12b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKENhc2NhZGVkUHJvcGVydGllcyYg
Y2FzY2FkZSwgaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHksIGNvbnN0IE1hdGNo
UmVzdWx0KiBtYXRjaFJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1
c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIHN0YXRlKQoreworICAgIGlmIChzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGllcy5jb250
YWlucyhuYW1lKSB8fCAhc3RhdGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmNvbnRhaW5z
KG5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3RhdGUuY2Fz
Y2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmdldChuYW1lKTsKKworICAgIGZvciAoYXV0byBpbmRl
eCA6IHsgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIFNlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hMaW5rLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCB9KSB7CisgICAgICAgIGlmICgh
cHJvcGVydHkuY3NzVmFsdWVbaW5kZXhdKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGlmIChpbmRleCAhPSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCAmJiB0aGlzLT5zdGF0
ZSgpLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4g
dmFsdWVUb0FwcGx5ID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKGRvd25jYXN0PENT
U0N1c3RvbVByb3BlcnR5VmFsdWU+KCpwcm9wZXJ0eS5jc3NWYWx1ZVtpbmRleF0pKTsKKworICAg
ICAgICBpZiAoc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20uY29udGFpbnMobmFtZSkp
IHsKKyAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGN5Y2xlLCBzbyByZXNldCB0aGUgdmFsdWUu
CisgICAgICAgICAgICBzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGllcy5hZGQobmFtZSk7Cisg
ICAgICAgICAgICAvLyBSZXNvbHZlIHRoaXMgdmFsdWUgc28gdGhhdCB3ZSByZXNldCBpdHMgZGVw
ZW5kZW5jaWVzCisgICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpCisgICAgICAg
ICAgICAgICAgcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9tLCB2YWx1ZVRv
QXBwbHkuZ2V0KCksIHN0YXRlKTsKKyAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZVVuc2V0KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLmFkZChuYW1l
KTsKKworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZT4+KHZhbHVlVG9BcHBseS0+dmFsdWUoKSkpIHsKKyAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWUgPSByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJv
cGVydHlDdXN0b20sIHZhbHVlVG9BcHBseS5nZXQoKSwgc3RhdGUpOworCisgICAgICAgICAgICBp
ZiAoIXBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aElEKG5hbWUsIENTU1ZhbHVlVW5zZXQpOworCisgICAg
ICAgICAgICB2YWx1ZVRvQXBwbHkgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigq
cGFyc2VkVmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXRlLmluUHJvZ3Jlc3NQ
cm9wZXJ0aWVzQ3VzdG9tLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgICAgICBpZiAoaW5kZXgg
PT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQpIHsKKyAgICAgICAgICAgICAgICB0aGlz
LT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUo
ZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW5kZXggPT0gU2VsZWN0
b3JDaGVja2VyOjpNYXRjaExpbmspIHsKKyAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgpLnNl
dEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlz
LT5zdGF0ZSgpLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2UpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW5kZXggPT0gU2VsZWN0b3JDaGVja2VyOjpN
YXRjaFZpc2l0ZWQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgpLnNldEFwcGx5UHJv
cGVydHlUb1JlZ3VsYXJTdHlsZShmYWxzZSk7CisgICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUo
KS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKHRydWUpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUN1c3RvbSwgdmFsdWVUb0Fw
cGx5LnB0cigpLCBzdGF0ZSwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIHN0YXRlLmluUHJv
Z3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLnJlbW92ZShuYW1lKTsKKyAgICAgICAgc3RhdGUuYXBwbGll
ZEN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOworICAgIH0KK30KKwordm9pZCBTdHlsZVJlc29s
dmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQ
cm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQogewogICAgIGZvciAo
aW50IGlkID0gZmlyc3RQcm9wZXJ0eTsgaWQgPD0gbGFzdFByb3BlcnR5OyArK2lkKSB7CiAgICAg
ICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+
KGlkKTsKLSAgICAgICAgaWYgKCFjYXNjYWRlLmhhc1Byb3BlcnR5KHByb3BlcnR5SUQpKQorICAg
ICAgICBpZiAoIXN0YXRlLmNhc2NhZGUtPmhhc1Byb3BlcnR5KHByb3BlcnR5SUQpKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q3Vz
dG9tKSB7Ci0gICAgICAgICAgICAvLyBBcHBseSBmb250IHNpemUgZmlyc3QsIHNpbmNlIGN1c3Rv
bSBwcm9wZXJ0aWVzIG1heSByZWx5IG9uIGl0IGZvciByZWxhdGl2ZSB1bml0IGNhbGN1bGF0aW9u
cwotICAgICAgICAgICAgLy8gT25jZSBpdCBpcyBhcHBsaWVkIGFuZCB0aGUgY3VzdG9tIHByb3Bl
cnR5IHZhbHVlcyBhcmUgc2V0LCBpdCB3aWxsIGJlIGFwcGxpZWQgYWdhaW4sIHdoaWNoIHNob3Vs
ZAotICAgICAgICAgICAgLy8gaGFuZGxlIGFueSBmb250LXNpemUgcHJvcGVydGllcyB0aGF0IHJl
bHkgb24gcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVydGllcy4KLSAgICAgICAgICAgIC8vIEZJWE1F
IGN5Y2xlcyBzaG91bGQgYmUgZGV0ZWN0ZWQuCi0gICAgICAgICAgICBpZiAoY2FzY2FkZS5oYXNQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplKSkKLSAgICAgICAgICAgICAgICBjYXNjYWRlLnBy
b3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpLmFwcGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7Ci0g
ICAgICAgICAgICB1cGRhdGVGb250KCk7Ci0KLSAgICAgICAgICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5Pjo6aXRlcmF0b3IgZW5kID0gY2FzY2Fk
ZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5Pjo6aXRlcmF0b3IgaXQgPSBj
YXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAg
ICAgICAgICAgICAgaXQtPnZhbHVlLmFwcGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7Ci0gICAgICAg
ICAgICBtX3N0YXRlLnN0eWxlKCktPmNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKGRv
Y3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCksIG1fc3RhdGUucGFy
ZW50U3R5bGUoKSwgKnRoaXMpOworICAgICAgICBBU1NFUlQocHJvcGVydHlJRCAhPSBDU1NQcm9w
ZXJ0eUN1c3RvbSk7CisgICAgICAgIGF1dG8mIHByb3BlcnR5ID0gc3RhdGUuY2FzY2FkZS0+cHJv
cGVydHkocHJvcGVydHlJRCk7CisgICAgICAgIEFTU0VSVCghc2hvdWxkQXBwbHlQcm9wZXJ0eUlu
UGFyc2VPcmRlcihwcm9wZXJ0eUlEKSk7CisKKyAgICAgICAgaWYgKExJS0VMWShzdGF0ZS5jYXNj
YWRlLT5jdXN0b21Qcm9wZXJ0aWVzKCkuaXNFbXB0eSgpKSkgeworICAgICAgICAgICAgLy8gSWYg
d2UgZG9uJ3QgaGF2ZSBhbnkgY3VzdG9tIHByb3BlcnRpZXMsIHRoZW4gdGhlcmUgY2FuJ3QgYmUg
YW55IGN5Y2xlcy4KKyAgICAgICAgICAgIHByb3BlcnR5LmFwcGx5KCp0aGlzLCBzdGF0ZSk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9
IGNhc2NhZGUucHJvcGVydHkocHJvcGVydHlJRCk7Ci0gICAgICAgIEFTU0VSVCghc2hvdWxkQXBw
bHlQcm9wZXJ0eUluUGFyc2VPcmRlcihwcm9wZXJ0eUlEKSk7Ci0gICAgICAgIHByb3BlcnR5LmFw
cGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7CisKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmlu
UHJvZ3Jlc3NQcm9wZXJ0aWVzLmdldChwcm9wZXJ0eUlEKSkpIHsKKyAgICAgICAgICAgIC8vIFdl
IGFyZSBpbiBhIGN5Y2xlIChlZy4gc2V0dGluZyBmb250IHNpemUgdXNpbmcgcmVnaXN0ZXJlZCBj
dXN0b20gcHJvcGVydHkgdmFsdWUgY29udGFpbmluZyBlbSkKKyAgICAgICAgICAgIC8vIFNvIHRo
aXMgdmFsdWUgc2hvdWxkIGJlIHVuc2V0CisgICAgICAgICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVy
dGllcy5zZXQocHJvcGVydHlJRCk7CisgICAgICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGlzIGlu
IGEgY3ljbGUsIGFuZCBvbmx5IHRoZSByb290IG9mIHRoZSBjYWxsIHN0YWNrIHdpbGwgaGF2ZSBm
aXJzdFByb3BlcnR5ICE9IGxhc3RQcm9wZXJ0eS4KKyAgICAgICAgICAgIEFTU0VSVChmaXJzdFBy
b3BlcnR5ID09IGxhc3RQcm9wZXJ0eSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlEKTsK
KyAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAgICAgc3RhdGUuYXBw
bGllZFByb3BlcnRpZXMuc2V0KHByb3BlcnR5SUQpOworICAgICAgICBzdGF0ZS5pblByb2dyZXNz
UHJvcGVydGllcy5zZXQocHJvcGVydHlJRCwgZmFsc2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNDcwM2NlZmMzYmMyYzNiNmI3NDk3NDk4NzQzNWNhZTVk
Y2U1ZTRiYS4uZmI1NDFiMTMxYmFmOTg3NWE5NDU2MTVmMmE5OWZlM2Y2MDEyMDQ3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2Vs
ZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSA8Yml0c2V0PgogI2luY2x1ZGUgPG1lbW9yeT4KKyNp
bmNsdWRlIDx3dGYvQml0bWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjY3LDcgKzI2OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQ2FzY2FkZWRQcm9wZXJ0aWVzKFRleHREaXJlY3Rpb24sIFdy
aXRpbmdNb2RlKTsKIAogICAgICAgICBzdHJ1Y3QgUHJvcGVydHkgewotICAgICAgICAgICAgdm9p
ZCBhcHBseShTdHlsZVJlc29sdmVyJiwgY29uc3QgTWF0Y2hSZXN1bHQqKTsKKyAgICAgICAgICAg
IHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7
CiAKICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgaWQ7CiAgICAgICAgICAgICBDYXNjYWRlTGV2
ZWwgbGV2ZWw7CkBAIC0yODEsNyArMjgyLDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGFkZE5v
cm1hbE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZElu
ZGV4LCBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgYWRkSW1wb3J0
YW50TWF0Y2hlcyhjb25zdCBNYXRjaFJlc3VsdCYsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5k
ZXgsIGJvb2wgaW5oZXJpdGVkT25seSA9IGZhbHNlKTsKIAotICAgICAgICB2b2lkIGFwcGx5RGVm
ZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBNYXRjaFJlc3VsdCopOworICAg
ICAgICB2b2lkIGFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImLCBBcHBseUNh
c2NhZGVkUHJvcGVydHlTdGF0ZSYpOwogCiAgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBQ
cm9wZXJ0eT4mIGN1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiBtX2N1c3RvbVByb3BlcnRpZXM7
IH0KICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmKSBjb25zdDsK
QEAgLTMwMiw3ICszMDMsMTAgQEAgcHVibGljOgogICAgICAgICBUZXh0RGlyZWN0aW9uIG1fZGly
ZWN0aW9uOwogICAgICAgICBXcml0aW5nTW9kZSBtX3dyaXRpbmdNb2RlOwogICAgIH07Ci0gICAg
CisKKyAgICB2b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBp
bnQgbGFzdFByb3BlcnR5LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOworICAgIHZvaWQg
YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNj
YWRlZFByb3BlcnR5U3RhdGUmKTsKKwogcHJpdmF0ZToKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGZp
eGVzIHVwIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIGN1cnJl
bnQgZ2VuZXJpYyBmb250IGZhbWlseSBoYXMgY2hhbmdlZC4gLWR3aAogICAgIHZvaWQgY2hlY2tG
b3JHZW5lcmljRmFtaWx5Q2hhbmdlKFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKTsKQEAgLTMyMSw3ICszMjUsNiBAQCBwcml2YXRlOgogICAgIGVudW0gU2hvdWxk
VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNo
ZSA9IDAsIFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKICAgICB2b2lkIGFwcGx5TWF0Y2hl
ZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50JiwgU2hvdWxkVXNl
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCi0g
ICAgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBpbnQg
Zmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgY29uc3QgTWF0Y2hSZXN1bHQqKTsKICAg
ICB2b2lkIGNhc2NhZGVNYXRjaGVzKENhc2NhZGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoUmVz
dWx0JiwgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wg
aW5oZXJpdGVkT25seSk7CiAKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzKE1hdGNoUmVzdWx0Jiwg
UnVsZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5n
JiBwYWdlTmFtZSk7CkBAIC00NTUsMTIgKzQ1OCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRX
cml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyBtX3N0YXRlLnNldFdyaXRpbmdN
b2RlKHdyaXRpbmdNb2RlKTsgfQogICAgIHZvaWQgc2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmll
bnRhdGlvbiB0ZXh0T3JpZW50YXRpb24pIHsgbV9zdGF0ZS5zZXRUZXh0T3JpZW50YXRpb24odGV4
dE9yaWVudGF0aW9uKTsgfQogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiByZXNvbHZlZFZhcmlhYmxl
VmFsdWUoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFsdWUmKSBjb25zdDsKKyAgICBSZWZQdHI8
Q1NTVmFsdWU+IHJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NW
YWx1ZSYsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKIAotICAgIHZvaWQgYXBwbHlQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNo
TWFzayA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0LCBjb25zdCBNYXRjaFJlc3VsdCog
PSBudWxscHRyKTsKKyAgICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTVmFs
dWUqLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01h
dGNoTWFzayA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0KTsKIAogICAgIHZvaWQgYXBw
bHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwogCkBAIC01MjQsNiArNTI3
LDE5IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXRjaFJh
bmdlcyYsIGNvbnN0IE1hdGNoUmFuZ2VzJik7CiB9OwogCisvLyBTdGF0ZSB0byB1c2Ugd2hlbiBh
cHBseWluZyBwcm9wZXJ0aWVzLCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGN1c3RvbSBhbmQgaGln
aC1wcmlvcml0eQorLy8gcHJvcGVydGllcyBoYXZlIGJlZW4gcmVzb2x2ZWQuCitzdHJ1Y3QgQXBw
bHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgeworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXI7CisgICAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBjYXNjYWRlOworICAg
IGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdDsKKyAgICBCaXRt
YXA8bnVtQ1NTUHJvcGVydGllcz4gYXBwbGllZFByb3BlcnRpZXMgPSB7IH07CisgICAgSGFzaFNl
dDxTdHJpbmc+IGFwcGxpZWRDdXN0b21Qcm9wZXJ0aWVzID0geyB9OworICAgIEJpdG1hcDxudW1D
U1NQcm9wZXJ0aWVzPiBpblByb2dyZXNzUHJvcGVydGllcyA9IHsgfTsKKyAgICBIYXNoU2V0PFN0
cmluZz4gaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20gPSB7IH07Cit9OworCisKIGlubGluZSBi
b29sIFN0eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyAmYXR0cmlidXRlTmFtZSkgY29uc3QKIHsKICAg
ICBBU1NFUlQoIWF0dHJpYnV0ZU5hbWUuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyLmNwcAppbmRleCA5ZGYwZmQ0NTlmOTA3MzMyNDQwZDVlOGE5YjgxNmIxNjUy
NGRjZWRjLi4wZDZhZWYwOGY5MjRmMDc4ODlkMmNhMTQxMDhjZTU3YTE4NDViZGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU3R5bGVDb2xvci5oIgorI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTE3Nyw4ICsxNzgsMTAgQEAgdm9pZCBDU1NQ
YXJzZXI6OnBhcnNlRGVjbGFyYXRpb25Gb3JJbnNwZWN0b3IoY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCwgY28KICAgICBDU1NQYXJzZXJJbXBsOjpwYXJzZURlY2xhcmF0aW9uTGlzdEZv
ckluc3BlY3RvcihzdHJpbmcsIGNvbnRleHQsIG9ic2VydmVyKTsKIH0KIAotUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3Bl
cnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGNvbnN0IENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlh
YmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJRCwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCiB7CisgICAgQVNTRVJUKChwcm9w
SUQgPT0gQ1NTUHJvcGVydHlDdXN0b20gJiYgdmFsdWUuaXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkp
IHx8IChwcm9wSUQgIT0gQ1NTUHJvcGVydHlDdXN0b20gJiYgIXZhbHVlLmlzQ3VzdG9tUHJvcGVy
dHlWYWx1ZSgpKSk7CisgICAgYXV0byYgc3R5bGUgPSAqc3RhdGUuc3R5bGVSZXNvbHZlci0+c3R5
bGUoKTsKICAgICBhdXRvIGRpcmVjdGlvbiA9IHN0eWxlLmRpcmVjdGlvbigpOwogICAgIGF1dG8g
d3JpdGluZ01vZGUgPSBzdHlsZS53cml0aW5nTW9kZSgpOwogCkBAIC0xOTAsMTIgKzE5MywxMSBA
QCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVy
ZW5jZXMoQ1NTUHJvcGVydHlJRCBwcm9wSQogICAgICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eShzaG9ydGhhbmRJRCkpCiAgICAgICAgICAgICBzaG9ydGhhbmRJ
RCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShzaG9ydGhhbmRJ
RCwgZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgICAgIENTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWUqIHNob3J0aGFuZFZhbHVlID0gcGVuZGluZ1N1YnN0aXR1dGlvbi5zaG9ydGhhbmRWYWx1
ZSgpOwotICAgICAgICBjb25zdCBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YSA9IHNob3J0
aGFuZFZhbHVlLT52YXJpYWJsZURhdGFWYWx1ZSgpOwotICAgICAgICBBU1NFUlQodmFyaWFibGVE
YXRhKTsKLSAgICAgICAgCi0gICAgICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRU
b2tlbnM7Ci0gICAgICAgIGlmICghdmFyaWFibGVEYXRhLT5yZXNvbHZlVG9rZW5SYW5nZShyZWdp
c3RlcmVkUHJvcGVydGllcywgdmFyaWFibGVEYXRhLT50b2tlbnMoKSwgcmVzb2x2ZWRUb2tlbnMs
IHN0eWxlKSkKKworICAgICAgICBhdXRvIHJlc29sdmVkRGF0YSA9IHNob3J0aGFuZFZhbHVlLT5y
ZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHN0YXRlKTsKKyAgICAgICAgaWYgKCFyZXNvbHZlZERh
dGEpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgVmVjdG9yPENTU1BhcnNl
clRva2VuPiByZXNvbHZlZFRva2VucyA9IHJlc29sdmVkRGF0YS0+dG9rZW5zKCk7CiAgICAgICAg
IAogICAgICAgICBQYXJzZWRQcm9wZXJ0eVZlY3RvciBwYXJzZWRQcm9wZXJ0aWVzOwogICAgICAg
ICBpZiAoIUNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZhbHVlKHNob3J0aGFuZElELCBmYWxzZSwg
cmVzb2x2ZWRUb2tlbnMsIG1fY29udGV4dCwgcGFyc2VkUHJvcGVydGllcywgU3R5bGVSdWxlOjpT
dHlsZSkpCkBAIC0yMDksMzEgKzIxMSwzMyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCBwcm9wSQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBDU1NWYXJpYWJsZURhdGEq
IHZhcmlhYmxlRGF0YSA9IG51bGxwdHI7Ci0KICAgICBpZiAodmFsdWUuaXNWYXJpYWJsZVJlZmVy
ZW5jZVZhbHVlKCkpIHsKICAgICAgICAgY29uc3QgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYg
dmFsdWVXaXRoUmVmZXJlbmNlcyA9IGRvd25jYXN0PENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+
KHZhbHVlKTsKLSAgICAgICAgdmFyaWFibGVEYXRhID0gdmFsdWVXaXRoUmVmZXJlbmNlcy52YXJp
YWJsZURhdGFWYWx1ZSgpOwotICAgICAgICBBU1NFUlQodmFyaWFibGVEYXRhKTsKKyAgICAgICAg
YXV0byByZXNvbHZlZERhdGEgPSB2YWx1ZVdpdGhSZWZlcmVuY2VzLnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZXMoc3RhdGUpOworICAgICAgICBpZiAoIXJlc29sdmVkRGF0YSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNl
U2luZ2xlVmFsdWUocHJvcElELCByZXNvbHZlZERhdGEtPnRva2VucygpLCBtX2NvbnRleHQpOwog
ICAgIH0KIAotICAgIGlmICh2YWx1ZS5pc0N1c3RvbVByb3BlcnR5VmFsdWUoKSkgewotICAgICAg
ICBjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBjdXN0b21Qcm9wVmFsdWUgPSBkb3duY2Fz
dDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSk7CisgICAgY29uc3QgYXV0byYgY3VzdG9t
UHJvcFZhbHVlID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4odmFsdWUpOworICAg
IGNvbnN0IGF1dG8mIHZhbHVlV2l0aFJlZmVyZW5jZXMgPSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZT4+KGN1c3RvbVByb3BWYWx1ZS52YWx1ZSgpKS5nZXQoKTsKIAotICAg
ICAgICBpZiAoY3VzdG9tUHJvcFZhbHVlLnJlc29sdmVkVHlwZWRWYWx1ZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoKmN1c3RvbVByb3BWYWx1ZS5yZXNv
bHZlZFR5cGVkVmFsdWUoKSwgc3R5bGUpOworICAgIGF1dG8mIG5hbWUgPSBkb3duY2FzdDxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSkubmFtZSgpOworICAgIGF1dG8qIHJlZ2lzdGVyZWQg
PSBzdGF0ZS5zdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eVNldCgpLmdldChuYW1lKTsKKyAgICBhdXRvJiBzeW50YXggPSByZWdpc3RlcmVkID8g
cmVnaXN0ZXJlZC0+c3ludGF4IDogIioiOworICAgIGF1dG8gcmVzb2x2ZWREYXRhID0gdmFsdWVX
aXRoUmVmZXJlbmNlcy5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHN0YXRlKTsKIAotICAgICAg
ICB2YXJpYWJsZURhdGEgPSBjdXN0b21Qcm9wVmFsdWUudmFsdWUoKTsKLSAgICB9Ci0KLSAgICBp
ZiAoIXZhcmlhYmxlRGF0YSkKKyAgICBpZiAoIXJlc29sdmVkRGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9rZW5zOwot
ICAgIGlmICghdmFyaWFibGVEYXRhLT5yZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVy
dGllcywgdmFyaWFibGVEYXRhLT50b2tlbnMoKSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRklYTUUgaGFuZGxlIFJFTSBjeWNsZXMuCisg
ICAgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBkZXBlbmRlbmNpZXM7CisgICAgQ1NTUHJvcGVydHlQ
YXJzZXI6OmNvbGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKHN5bnRh
eCwgZmFsc2UsIGRlcGVuZGVuY2llcywgcmVzb2x2ZWREYXRhLT50b2tlbnMoKSwgbV9jb250ZXh0
KTsKKworICAgIGZvciAoYXV0byBpZCA6IGRlcGVuZGVuY2llcykKKyAgICAgICAgc3RhdGUuc3R5
bGVSZXNvbHZlci0+YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoaWQsIGlkLCBzdGF0ZSk7CiAKLSAg
ICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUocHJvcElELCByZXNv
bHZlZFRva2VucywgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXI6OnBh
cnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHN5bnRheCwgcmVzb2x2ZWREYXRhLT50
b2tlbnMoKSwgKnN0YXRlLnN0eWxlUmVzb2x2ZXIsIG1fY29udGV4dCk7CiB9CiAKIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8ZG91YmxlPj4gQ1NTUGFyc2VyOjpwYXJzZUtleWZyYW1lS2V5TGlzdChj
b25zdCBTdHJpbmcmIHNlbGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgK
aW5kZXggMDliYTRiMDMwYTZjNWY2YTJhNWYxMmE2OTFiMDA4Y2I1MjVlZWEzYy4uNDcwNjNjZGZi
OWEyNTVjNTZiZmRjNDVmNmNlNGIwMzY0NDExMDBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlci5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RydWN0IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlOwogY2xhc3MgQ1NTUGFyc2VyT2JzZXJ2
ZXI7CiBjbGFzcyBDU1NTZWxlY3Rvckxpc3Q7CiBjbGFzcyBDb2xvcjsKQEAgLTc3LDcgKzc4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYsIENTU1Nl
bGVjdG9yTGlzdCYpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVZhbHVlV2l0aFZhcmlh
YmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYsIGNvbnN0IENTU1Jl
Z2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAgUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0
eUlELCBjb25zdCBDU1NWYWx1ZSYsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7CiAKICAg
ICBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvcihjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZh
bHNlKTsKICAgICBzdGF0aWMgQ29sb3IgcGFyc2VTeXN0ZW1Db2xvcihjb25zdCBTdHJpbmcmLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDIxZmViYWNjNGNmYmFhNTExYmJhZWE2NDc1ZjE2
MGQ1MzI1ZGMwZjYuLmMzYTIzYjU5OWU4ZWI0ZDc5Y2E5ZjkzZWRjNjQ0ZmYwYmEzMWQ4MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1c3RvbUlk
ZW50VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVk
ZSAiQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUu
aCIKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQpAQCAtNzMsOCArNzQsMTAgQEAKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJl
YW0uaCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU3R5bGVCdWls
ZGVyQ29udmVydGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgogI2lu
Y2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJTdHls
ZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8Yml0c2V0PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0yMTMsMTIgKzIxNiwxMyBAQCBDU1NQ
cm9wZXJ0eUlEIGNzc1Byb3BlcnR5SUQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgCiB1c2luZyBu
YW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOwogCi1DU1NQcm9wZXJ0eVBhcnNlcjo6
Q1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiogcGFy
c2VkUHJvcGVydGllcykKK0NTU1Byb3BlcnR5UGFyc2VyOjpDU1NQcm9wZXJ0eVBhcnNlcihjb25z
dCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+KiBwYXJzZWRQcm9wZXJ0aWVzLCBib29sIGNv
bnN1bWVXaGl0ZXNwYWNlKQogICAgIDogbV9yYW5nZShyYW5nZSkKICAgICAsIG1fY29udGV4dChj
b250ZXh0KQogICAgICwgbV9wYXJzZWRQcm9wZXJ0aWVzKHBhcnNlZFByb3BlcnRpZXMpCiB7Ci0g
ICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgIGlmIChjb25zdW1lV2hpdGVzcGFj
ZSkKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwogfQogCiB2b2lkIENTU1By
b3BlcnR5UGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQcm9w
ZXJ0eUlEIGN1cnJlbnRTaG9ydGhhbmQsIFJlZjxDU1NWYWx1ZT4mJiB2YWx1ZSwgYm9vbCBpbXBv
cnRhbnQsIGJvb2wgaW1wbGljaXQpCkBAIC0yNzgsNiArMjgyLDI3IEBAIFJlZlB0cjxDU1NWYWx1
ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSwgY29uCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitib29sIENTU1Byb3BlcnR5UGFyc2Vy
OjpjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHN5bnRheCwg
Y29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQoreworICAgIENTU1Byb3BlcnR5UGFyc2VyIHBhcnNlcih0b2tlbnMsIGNvbnRl
eHQsIG51bGxwdHIpOworICAgIHJldHVybiBwYXJzZXIuY2FuUGFyc2VUeXBlZEN1c3RvbVByb3Bl
cnR5VmFsdWUoc3ludGF4KTsKK30KKworUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IENT
U1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdl
JiB0b2tlbnMsIGNvbnN0IFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHRv
a2VucywgY29udGV4dCwgbnVsbHB0ciwgZmFsc2UpOworICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlPiB2YWx1ZSA9IHBhcnNlci5wYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShu
YW1lLCBzeW50YXgsIHN0eWxlUmVzb2x2ZXIpOworICAgIGlmICghdmFsdWUgfHwgIXBhcnNlci5t
X3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB2YWx1
ZTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3RvbVByb3Bl
cnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgsIGJvb2wgaXNSb290LCBI
YXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRlbmNpZXMsIGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmIHRva2VucywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBD
U1NQcm9wZXJ0eVBhcnNlciBwYXJzZXIodG9rZW5zLCBjb250ZXh0LCBudWxscHRyKTsKKyAgICBw
YXJzZXIuY29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoc3ludGF4
LCBpc1Jvb3QsIGRlcGVuZGVuY2llcyk7Cit9CisKIHN0YXRpYyBib29sIGlzTGVnYWN5QnJlYWtQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0
eUlEKSB7CkBAIC0zMjAsNyArMzQ1LDcgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VW
YWx1ZVN0YXJ0KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQKICAgICB9
CiAKICAgICBpZiAoQ1NTVmFyaWFibGVQYXJzZXI6OmNvbnRhaW5zVmFsaWRWYXJpYWJsZVJlZmVy
ZW5jZXMob3JpZ2luYWxSYW5nZSwgbV9jb250ZXh0KSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZT4gdmFyaWFibGUgPSBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
OjpjcmVhdGUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUob3JpZ2luYWxSYW5nZSkpOworICAgICAg
ICBSZWZQdHI8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4gdmFyaWFibGUgPSBDU1NWYXJpYWJs
ZVJlZmVyZW5jZVZhbHVlOjpjcmVhdGUob3JpZ2luYWxSYW5nZSk7CiAKICAgICAgICAgaWYgKGlz
U2hvcnRoYW5kKSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZh
bHVlPiBwZW5kaW5nVmFsdWUgPSBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWU6OmNyZWF0ZShw
cm9wZXJ0eUlELCB2YXJpYWJsZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTM4ODYsNyArMzkxMSw2
IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdo
dDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdo
dDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Q3VzdG9tOiAvLyBGSVhNRTogcGFyc2luZyBhIHJlZ2lz
dGVyZWQgY3VzdG9tIHByb3BlcnR5IHNob3VsZCBiZSBiYXNlZCBvbiBpdHMgc3ludGF4LgogICAg
ICAgICByZXR1cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0LCBVbml0
bGVzc1F1aXJrOjpBbGxvdyk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbklubGluZVNpemU6CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkJsb2NrU2l6ZToKQEAgLTQyNTYsNiArNDI4MCw2NCBAQCBS
ZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHksIENTUwogICAgIH0KIH0KIAorYm9vbCBDU1NQcm9wZXJ0eVBhcnNl
cjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBzeW50YXgp
Cit7CisgICAgaWYgKHN5bnRheCAhPSAiKiIpIHsKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lV2hp
dGVzcGFjZSgpOworCisgICAgICAgIC8vIEZpcnN0IGNoZWNrIGZvciBrZXl3b3JkcworICAgICAg
ICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFs
dWVSZXZlcnQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBhdXRvIGxvY2Fs
UmFuZ2UgPSBtX3JhbmdlOworICAgICAgICB3aGlsZSAoIWxvY2FsUmFuZ2UuYXRFbmQoKSkgewor
ICAgICAgICAgICAgYXV0byBpZCA9IGxvY2FsUmFuZ2UuY29uc3VtZSgpLmZ1bmN0aW9uSWQoKTsK
KyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZhciB8fCBpZCA9PSBDU1NWYWx1ZUVudikK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRm9yIHZhcmlhYmxlcywgd2UganVzdCBw
ZXJtaXQgZXZlcnl0aGluZworICAgICAgICB9CisKKyAgICAgICAgYXV0byBwcmltaXRpdmVWYWwg
PSBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsICYmIHByaW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIG1fcmFu
Z2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlQYXJz
ZXI6OmNvbGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0
cmluZyYgc3ludGF4LCBib29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5k
ZW5jaWVzKQoreworICAgIGlmIChzeW50YXggIT0gIioiKSB7CisgICAgICAgIG1fcmFuZ2UuY29u
c3VtZVdoaXRlc3BhY2UoKTsKKyAgICAgICAgYXV0byBwcmltaXRpdmVWYWwgPSBjb25zdW1lV2lk
dGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgICAgICBpZiAoIW1fcmFuZ2UuYXRF
bmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbCAmJiBw
cmltaXRpdmVWYWwtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICAgICAgcHJpbWl0aXZl
VmFsLT5jb2xsZWN0RGlyZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMp
OworICAgICAgICAgICAgaWYgKGlzUm9vdCkKKyAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWwt
PmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMp
OworICAgICAgICB9CisgICAgfQorfQorCitSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4g
Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIpCit7CisgICAgaWYgKHN5bnRheCAhPSAiKiIpIHsKKyAgICAgICAgbV9yYW5n
ZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbCA9IGNvbnN1
bWVXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAgIGlmIChwcmltaXRp
dmVWYWwgJiYgcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4TGVuZ3RoKG5hbWUsIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChzdHlsZVJlc29sdmVyLCAqcHJpbWl0
aXZlVmFsKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gQ1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4QWxsKG5hbWUsIENTU1ZhcmlhYmxlRGF0
YTo6Y3JlYXRlKG1fcmFuZ2UpKTsKKyAgICAgICAgd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkpCisg
ICAgICAgICAgICBtX3JhbmdlLmNvbnN1bWUoKTsKKyAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShw
cm9wZXJ0eVZhbHVlKSB9OworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCiBzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3VtZUZvbnRGYWNlVW5pY29kZVJhbmdlKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVl
cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaAppbmRleCA3ZGI3NDUzYzBkODQ5OWVh
MTNlMDBkOTdjZjJlMGM1MjRmNDU4YjI2Li4xZGMwNWVmODhkYWMyNjBhZTYxMDcyMjliOGRhOTZj
YzRiMTdlNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIENTU1Byb3BlcnR5OwogY2xhc3MgQ1NTVmFs
dWU7CiBjbGFzcyBTdHlsZVByb3BlcnR5U2hvcnRoYW5kOwogY2xhc3MgU3R5bGVTaGVldENvbnRl
bnRzOworY2xhc3MgU3R5bGVSZXNvbHZlcjsKICAgICAKIC8vIElucHV0czogUHJvcGVydHlJRCwg
aXNJbXBvcnRhbnQgYm9vbCwgQ1NTUGFyc2VyVG9rZW5SYW5nZS4KIC8vIE91dHB1dHM6IFZlY3Rv
ciBvZiBDU1NQcm9wZXJ0aWVzCkBAIC00NSwxNCArNDYsMjAgQEAgcHVibGljOgogCiAgICAgLy8g
UGFyc2VzIGEgbm9uLXNob3J0aGFuZCBDU1MgcHJvcGVydHkKICAgICBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1BhcnNlclRv
a2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgc3RhdGljIGJvb2wgY2Fu
UGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0
IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgc3Rh
dGljIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBwYXJzZVR5cGVkQ3VzdG9tUHJvcGVy
dHlWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBjb25zdCBD
U1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmKTsKKyAgICBzdGF0aWMgdm9pZCBjb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlW
YWx1ZURlcGVuZGVuY2llcyhjb25zdCBTdHJpbmcmIHN5bnRheCwgYm9vbCBpc1Jvb3QsIEhhc2hT
ZXQ8Q1NTUHJvcGVydHlJRD4mIGRlcGVuZGVuY2llcywgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBDU1NQcm9wZXJ0
eVBhcnNlcihjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiopOworICAgIENTU1Byb3BlcnR5UGFyc2VyKGNv
bnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgVmVjdG9y
PENTU1Byb3BlcnR5LCAyNTY+KiwgYm9vbCBjb25zdW1lV2hpdGVzcGFjZSA9IHRydWUpOwogCiAg
ICAgLy8gRklYTUU6IFJlbmFtZSBvbmNlIHRoZSBDU1NQYXJzZXJWYWx1ZS1iYXNlZCBwYXJzZVZh
bHVlIGlzIHJlbW92ZWQKICAgICBib29sIHBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlELCBi
b29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBjb25zdW1lQ1NTV2lkZUtleXdvcmQoQ1NTUHJvcGVy
dHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTaW5nbGVW
YWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlJbnZhbGlkKTsK
KyAgICBib29sIGNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYg
c3ludGF4KTsKKyAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gcGFyc2VUeXBlZEN1
c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN5bnRh
eCwgY29uc3QgU3R5bGVSZXNvbHZlciYpOworICAgIHZvaWQgY29sbGVjdFBhcnNlZEN1c3RvbVBy
b3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgsIGJvb2wgaXNSb290
LCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRlbmNpZXMpOwogCiAgICAgYm9vbCBpblF1
aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQubW9kZSA9PSBIVE1MUXVpcmtzTW9k
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxl
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIu
Y3BwCmluZGV4IDg3MDg2ZTM2YWI4MGQxZDU4Mzk2YmNhYWY5NDkxMjMzYmQ1ZDIyMjEuLjFiZTIz
YjlmZWM4ZjVlY2RhZDRlYjg0NDg1M2Y5ZTAyY2E1YTkyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCkBAIC0xODksOCArMTg5LDggQEAg
UmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IENTU1ZhcmlhYmxlUGFyc2VyOjpwYXJzZURl
Y2xhcmF0aW9uVmFsdWUoY29uc3QgQXQKICAgICBpZiAodHlwZSA9PSBDU1NWYWx1ZUludmFsaWQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICh0eXBlID09IENTU1ZhbHVlSW50ZXJu
YWxWYXJpYWJsZVZhbHVlKQotICAgICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6
Y3JlYXRlV2l0aFZhcmlhYmxlRGF0YSh2YXJpYWJsZU5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3Jl
YXRlKHJhbmdlLCBoYXNSZWZlcmVuY2VzIHx8IGhhc0F0QXBwbHlSdWxlKSk7Ci0gICAgcmV0dXJu
IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRCh2YXJpYWJsZU5hbWUsIHR5cGUp
OworICAgICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlVW5yZXNvbHZl
ZCh2YXJpYWJsZU5hbWUsIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNyZWF0ZShyYW5nZSkp
OworICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVVbnJlc29sdmVkKHZh
cmlhYmxlTmFtZSwgdHlwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmNwcAppbmRleCA5MGZkMTM5MzFiNzA0MWUy
OWI5ZjY3OWFjM2ExZDEzNDhjNjIwYjk3Li42YzEwOGM4ODg3MTVmNjdmYTk4MTg2MDBhYmRiMTUx
MDRmYWFjMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0
eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3Bw
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQ29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQ
cm9wZXJ0eShDb25zdGFudFByb3BlcnR5IHByb3BlcnR5LCBSZWY8Q1NTCiAgICAgICAgIGJ1aWxk
VmFsdWVzKCk7CiAKICAgICBhdXRvJiBuYW1lID0gbmFtZUZvclByb3BlcnR5KHByb3BlcnR5KTsK
LSAgICBtX3ZhbHVlcy0+c2V0KG5hbWUsIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdp
dGhWYXJpYWJsZURhdGEobmFtZSwgV1RGTW92ZShkYXRhKSkpOworICAgIG1fdmFsdWVzLT5zZXQo
bmFtZSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4QWxsKG5hbWUsIFdURk1v
dmUoZGF0YSkpKTsKIH0KIAogdm9pZCBDb25zdGFudFByb3BlcnR5TWFwOjpidWlsZFZhbHVlcygp
CkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IHZhcmlhYmxl
RGF0YUZvclBvc2l0aXZlUGl4ZWxMZW5ndGgoZmxvYXQgbGVuZ3RoSW5QeCkKIAogICAgIFZlY3Rv
cjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zIHsgdG9rZW4gfTsKICAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIHRva2VuUmFuZ2UodG9rZW5zKTsKLSAgICByZXR1cm4gQ1NTVmFyaWFibGVEYXRhOjpjcmVh
dGUodG9rZW5SYW5nZSwgZmFsc2UpOworICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0
ZSh0b2tlblJhbmdlKTsKIH0KIAogc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IHZhcmlhYmxl
RGF0YUZvclBvc2l0aXZlRHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbkluU2Vjb25kcykKQEAgLTEy
Miw3ICsxMjIsNyBAQCBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlRGF0YT4gdmFyaWFibGVEYXRhRm9y
UG9zaXRpdmVEdXJhdGlvbihTZWNvbmRzIGR1cmF0aW9uSW5TZQogCiAgICAgVmVjdG9yPENTU1Bh
cnNlclRva2VuPiB0b2tlbnMgeyB0b2tlbiB9OwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgdG9r
ZW5SYW5nZSh0b2tlbnMpOwotICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZSh0b2tl
blJhbmdlLCBmYWxzZSk7CisgICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHRva2Vu
UmFuZ2UpOwogfQogCiB2b2lkIENvbnN0YW50UHJvcGVydHlNYXA6OnVwZGF0ZUNvbnN0YW50c0Zv
clNhZmVBcmVhSW5zZXRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCmluZGV4IGRiODVkN2QwOTNmNTI4NGNiZWI4MDJlZTg3MDA4MDhlMzkyYTcx
ZWQuLmM4NTI1ODg1MDI0NzcwZDljNWI1ZDQ5MTllZDY1YmM2ZWIxMTk1NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMjI5OSw4OSAr
MjI5OSw2IEBAIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1JlZmVyZW5jZUZpbHRlck9ubHkoKSBjb25z
dAogICAgIHJldHVybiBmaWx0ZXJPcGVyYXRpb25zLnNpemUoKSA9PSAxICYmIGZpbHRlck9wZXJh
dGlvbnMuYXQoMCktPnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRTsKIH0KIAot
dm9pZCBSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMoY29uc3Qg
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyKQotewotICAgIGJvb2wgc2hvdWxkVXBkYXRlSW5oZXJpdGVkID0gbV9yYXJlSW5oZXJp
dGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29udGFpbnNWYXJpYWJsZXMgfHwgbV9yYXJlSW5o
ZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJl
ZFByb3BlcnRpZXM7Ci0gICAgYm9vbCBzaG91bGRVcGRhdGVOb25Jbmhlcml0ZWQgPSBtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1ZhcmlhYmxlcyB8fCBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1VucmVzb2x2
ZWRSZWdpc3RlcmVkUHJvcGVydGllczsKLSAgICBhdXRvKiBpbmhlcml0ZWRQcm9wZXJ0eURhdGEg
PSBzaG91bGRVcGRhdGVJbmhlcml0ZWQgPyAmbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5j
dXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpIDogbnVsbHB0cjsKLSAgICBhdXRvKiBub25Jbmhlcml0
ZWRQcm9wZXJ0eURhdGEgPSBzaG91bGRVcGRhdGVOb25Jbmhlcml0ZWQgPyAmbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpIDogbnVsbHB0cjsK
LQotICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBpbnZhbGlkUHJvcGVydGllczsKLQotICAgIGZv
ciAoYXV0byogY3VzdG9tUHJvcGVydHlEYXRhIDogeyBpbmhlcml0ZWRQcm9wZXJ0eURhdGEsIG5v
bkluaGVyaXRlZFByb3BlcnR5RGF0YSB9KSB7Ci0gICAgICAgIGlmICghY3VzdG9tUHJvcGVydHlE
YXRhKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gT3VyIGZpcnN0IHBhc3Mg
Y2hlY2tzIHRoZSB2YXJpYWJsZXMgZm9yIHZhbGlkaXR5IGFuZCByZXBsYWNlcyBhbnkgcHJvcGVy
dGllcyB0aGF0IGJlY2FtZQotICAgICAgICAvLyBpbnZhbGlkIHdpdGggZW1wdHkgdmFsdWVzLgot
ICAgICAgICBhdXRvJiBjdXN0b21Qcm9wZXJ0aWVzID0gY3VzdG9tUHJvcGVydHlEYXRhLT52YWx1
ZXM7Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBjdXN0b21Qcm9wZXJ0aWVzKSB7Ci0gICAg
ICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNlZW5Q
cm9wZXJ0aWVzOwotICAgICAgICAgICAgZW50cnkudmFsdWUtPmNoZWNrVmFyaWFibGVzRm9yQ3lj
bGVzKGVudHJ5LmtleSwgKnRoaXMsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7
Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGludmFsaWRWYWx1ZSA9IENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU6OmNyZWF0ZUludmFsaWQoKTsKLQotICAgICAgICAvLyBOb3cgaW5zZXJ0IGludmFs
aWQgdmFsdWVzLCBvciBkZWZhdWx0cyBpZiB0aGUgcHJvcGVydHkgaXMgcmVnaXN0ZXJlZC4KLSAg
ICAgICAgaWYgKCFpbnZhbGlkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byYgcHJvcGVydHkgOiBpbnZhbGlkUHJvcGVydGllcykgewotICAgICAgICAgICAgICAg
IGlmICghY3VzdG9tUHJvcGVydGllcy5jb250YWlucyhwcm9wZXJ0eSkpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNvbnN0
IFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiogcGFyZW50UHJvcGVydHkgPSBudWxscHRy
OwotICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkgewotICAgICAgICAgICAgICAgICAg
ICBhdXRvIGl0ZXJhdG9yID0gcGFyZW50U3R5bGUtPmluaGVyaXRlZEN1c3RvbVByb3BlcnRpZXMo
KS5maW5kKHByb3BlcnR5KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IHBh
cmVudFN0eWxlLT5pbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCkgJiYgaXRlcmF0b3Iu
Z2V0KCkgJiYgaXRlcmF0b3IuZ2V0KCktPnZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50UHJvcGVydHkgPSAmaXRlcmF0b3IuZ2V0KCktPnZhbHVlOwotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkUHJvcGVy
dGllcy5nZXQocHJvcGVydHkpOwotCi0gICAgICAgICAgICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYg
cmVnaXN0ZXJlZC0+aW5oZXJpdHMgJiYgcGFyZW50UHJvcGVydHkpCi0gICAgICAgICAgICAgICAg
ICAgIGN1c3RvbVByb3BlcnRpZXMuc2V0KHByb3BlcnR5LCBwYXJlbnRQcm9wZXJ0eS0+Y29weVJl
ZigpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQt
PmluaXRpYWxWYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzLnNl
dChwcm9wZXJ0eSwgcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlQ29weSgpKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMuc2V0KHByb3Bl
cnR5LCBpbnZhbGlkVmFsdWUuY29weVJlZigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIE5vdyB0aGF0IGFsbCBvZiB0aGUgcHJvcGVydGllcyBoYXZlIGJlZW4gdGVz
dGVkIGZvciB2YWxpZGl0eSBhbmQgcmVwbGFjZWQgd2l0aAotICAgICAgICAvLyBpbnZhbGlkIHZh
bHVlcyBpZiB0aGV5IGZhaWxlZCwgd2UgY2FuIHBlcmZvcm0gdmFyaWFibGUgc3Vic3RpdHV0aW9u
IG9uIHRoZSB2YWxpZCB2YWx1ZXMuCi0gICAgICAgIFZlY3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4+IHJlc29sdmVkVmFsdWVzOwotICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBjdXN0
b21Qcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLT5jb250YWluc1Zh
cmlhYmxlcygpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZW50cnku
dmFsdWUtPnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHJl
c29sdmVkVmFsdWVzLCAqdGhpcyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXaXRoIGFsbCBy
ZXN1bHRzIGNvbXB1dGVkLCB3ZSBjYW4gbm93IG11dGF0ZSBvdXIgdGFibGUgdG8gZWxpbWluYXRl
IHRoZSB2YXJpYWJsZXMgYW5kCi0gICAgICAgIC8vIGhvbGQgdGhlIGZpbmFsIHZhbHVlcy4gVGhp
cyB3YXkgd2hlbiB3ZSBpbmhlcml0LCB3ZSBkb24ndCBlbmQgdXAgcmVzdWJzdGl0dXRpbmcgdmFy
aWFibGVzLCBldGMuCi0gICAgICAgIGZvciAoYXV0byYgcmVzb2x2ZWRWYWx1ZSA6IHJlc29sdmVk
VmFsdWVzKQotICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllcy5zZXQocmVzb2x2ZWRWYWx1ZS0+
bmFtZSgpLCByZXNvbHZlZFZhbHVlLmNvcHlSZWYoKSk7Ci0KLSAgICAgICAgLy8gRmluYWxseSB3
ZSBjYW4gcmVzb2x2ZSByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzIHRvIHRoZWlyIHR5cGVk
IHZhbHVlcy4KLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGN1c3RvbVByb3BlcnRpZXMpIHsK
LSAgICAgICAgICAgIGF1dG8mIG5hbWUgPSBlbnRyeS52YWx1ZS0+bmFtZSgpOwotICAgICAgICAg
ICAgYXV0byogcmVnaXN0ZXJlZCA9IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldChuYW1lKTsKLQot
ICAgICAgICAgICAgaWYgKCFyZWdpc3RlcmVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbCA9IHN0eWxlUmVzb2x2ZXIucmVzb2x2ZWRW
YXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9tLCAqZW50cnkudmFsdWUpOwotICAgICAgICAg
ICAgaWYgKCFwcmltaXRpdmVWYWwgfHwgIXByaW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgp
KQotICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0gaW52YWxpZFZhbHVlLmNvcHlSZWYoKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZS0+c2V0UmVzb2x2
ZWRUeXBlZFZhbHVlKFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChzdHlsZVJl
c29sdmVyLCAqcHJpbWl0aXZlVmFsKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjdXN0b21Qcm9w
ZXJ0eURhdGEtPmNvbnRhaW5zVmFyaWFibGVzID0gZmFsc2U7Ci0gICAgICAgIGN1c3RvbVByb3Bl
cnR5RGF0YS0+Y29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXMgPSBmYWxzZTsK
LSAgICB9Ci19Ci0KIGZsb2F0IFJlbmRlclN0eWxlOjpvdXRsaW5lV2lkdGgoKSBjb25zdAogewog
ICAgIGlmIChtX2JhY2tncm91bmREYXRhLT5vdXRsaW5lLnN0eWxlKCkgPT0gQm9yZGVyU3R5bGU6
Ok5vbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmlu
ZGV4IGRkMjQyZTc2ZDNlODEwOWNiODkwNzg1NzliMmM4YWI0MWJkODdlNTAuLjcwOGU2YmYwMTQy
N2NlMWYwODJjZDE1YWNiMWMzZTA2ZDEzYjgyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xODYsOCArMTg2LDggQEAgcHVibGljOgogICAg
IGNvbnN0IEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIGluaGVyaXRlZEN1c3RvbVByb3BlcnRpZXMo
KSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT52
YWx1ZXM7IH0KICAgICBjb25zdCBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwJiBub25Jbmhlcml0ZWRD
dXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+
Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVzOyB9CiAgICAgY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZSogZ2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Ci0gICAg
dm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdpc3Rl
cmVkID0gZmFsc2UpIHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9t
UHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUo
dmFsdWUpLCBpc1JlZ2lzdGVyZWQpOyB9Ci0gICAgdm9pZCBzZXROb25Jbmhlcml0ZWRDdXN0b21Q
cm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdpc3RlcmVkID0gZmFsc2UpIHsgcmV0dXJuIG1f
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5z
ZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpLCBpc1JlZ2lzdGVyZWQp
OyB9CisgICAgdm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpIHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3Mo
KS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKTsgfQorICAgIHZv
aWQgc2V0Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZhbHVlKSB7IHJldHVybiBtX3Jh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0
Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3ZlKHZhbHVlKSk7IH0KIAogICAgIHZvaWQg
c2V0SGFzVmlld3BvcnRVbml0cyhib29sIHYgPSB0cnVlKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
aGFzVmlld3BvcnRVbml0cyA9IHY7IH0KICAgICBib29sIGhhc1ZpZXdwb3J0VW5pdHMoKSBjb25z
dCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5pdHM7IH0KQEAgLTc5
NSw4ICs3OTUsNiBAQCBwdWJsaWM6CiAgICAgQXBwbGVQYXlCdXR0b25UeXBlIGFwcGxlUGF5QnV0
dG9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0dG9uVHlwZT4o
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwbGVQYXlCdXR0b25UeXBlKTsgfQogI2VuZGlmCiAK
LSAgICB2b2lkIGNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKGNvbnN0IENTU1JlZ2lz
dGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwg
Y29uc3QgU3R5bGVSZXNvbHZlciYpOwotCiAvLyBhdHRyaWJ1dGUgc2V0dGVyIG1ldGhvZHMKIAog
ICAgIHZvaWQgc2V0RGlzcGxheShEaXNwbGF5VHlwZSB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3Mu
ZWZmZWN0aXZlRGlzcGxheSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGEuaAppbmRleCAxYmNkYjIyZThlOWQzYmMzOTQxMTMwNDg0MjhkYjNlNjg3ODU4MmRkLi4xMzJl
NmY1MjU2MGU2NWNhYzU0ZTRjNWI1M2ZkN2Q0MTAzNWY3NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaApA
QCAtMjIsNiArMjIsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzcsOSArMzgsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikgY29u
c3QKICAgICB7Ci0gICAgICAgIGlmIChjb250YWluc1ZhcmlhYmxlcyAhPSBvdGhlci5jb250YWlu
c1ZhcmlhYmxlcykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgICAgICBpZiAodmFs
dWVzLnNpemUoKSAhPSBvdGhlci52YWx1ZXMuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC01NCwyNiArNTIsMTggQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2
YWx1ZSwgYm9vbCBpc1JlZ2lzdGVyZWQpCisgICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYg
dmFsdWUpCiAgICAgewotICAgICAgICBpZiAodmFsdWUtPmNvbnRhaW5zVmFyaWFibGVzKCkpCi0g
ICAgICAgICAgICBjb250YWluc1ZhcmlhYmxlcyA9IHRydWU7Ci0gICAgICAgIGlmIChpc1JlZ2lz
dGVyZWQpCi0gICAgICAgICAgICBjb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGll
cyA9IHRydWU7CiAgICAgICAgIHZhbHVlcy5zZXQobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOwogICAg
IH0KIAogICAgIEN1c3RvbVByb3BlcnR5VmFsdWVNYXAgdmFsdWVzOwotICAgIGJvb2wgY29udGFp
bnNWYXJpYWJsZXMgeyBmYWxzZSB9OwotICAgIGJvb2wgY29udGFpbnNVbnJlc29sdmVkUmVnaXN0
ZXJlZFByb3BlcnRpZXMgeyBmYWxzZSB9OwogCiBwcml2YXRlOgogICAgIFN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhKCkgPSBkZWZhdWx0OwogICAgIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKGNvbnN0
IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikKICAgICAgICAgOiBSZWZDb3VudGVkPFN0
eWxlQ3VzdG9tUHJvcGVydHlEYXRhPigpCiAgICAgICAgICwgdmFsdWVzKG90aGVyLnZhbHVlcykK
LSAgICAgICAgLCBjb250YWluc1ZhcmlhYmxlcyhvdGhlci5jb250YWluc1ZhcmlhYmxlcykKLSAg
ICAgICAgLCBjb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllcyhvdGhlci5jb250
YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllcykKICAgICB7IH0KIH07CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAwOTg1MmY1MzRkNTNjZjBhY2EzZjA0YjkxOTlhMjZlODA1ZDg4YTY5Li4zNWRiNzgyOWI0Nzc4
YzVmNDQ0ODNhNjhhNzA1N2ZlNDU5MWY2NjBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgt
MTAtMjkgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAg
ICAgIENTUyBDdXN0b20gUHJvcGVydGllcyBBUEkgU2hvdWxkIFN1cHBvcnQgc3ludGF4PSIqIiBh
bmQgIjxsZW5ndGg+IiwgYW5kIGhhbmRsZSBjeWNsZXMgcHJvcGVybHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTA0MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVz
LWFwaS9jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJv
cGVydGllcy1hcGkvY3Jhc2guaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWN1c3RvbS1wcm9w
ZXJ0aWVzLWFwaS9jeWNsZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtY3Vz
dG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MtY3Vz
dG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWw6IEFkZGVkLgorCiAyMDE4LTEw
LTI5ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZlcnQgcjIzNzM0NyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzLi4uIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAwMzkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCmluZGV4IDk4NWMxZmFjNDYyZjk1MmYxNmRkYjQ4NzMyMTI4YWU0Y2UwZDQxZDMu
LjNhOWM1ZWExZTZiYmZlMDc4MDk5OGMxYWIxZWY2ZTNkMjNhMjU4NzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTEwLTI5ICBKdXN0aW4gTWlj
aGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgQ3VzdG9tIFBy
b3BlcnRpZXMgQVBJIFNob3VsZCBTdXBwb3J0IHN5bnRheD0iKiIgYW5kICI8bGVuZ3RoPiIsIGFu
ZCBoYW5kbGUgY3ljbGVzIHByb3Blcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTEwNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMt
dmFsdWVzLWFwaS9yZWdpc3Rlci1wcm9wZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMt
YXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Jl
Z2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2
ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJv
cGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5
Y2xlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dDoKKwogMjAxOC0xMC0yOSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IHIyMzczNDcgcmVnaXN0ZXJlZCBjdXN0
b20gcHJvcGVydGllcy4uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwMDM5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBp
L2NyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1h
cGkvY3Jhc2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZjBmZjVlOTAwNzFkZTk5ZWYwYWJm
ODliODc4MDI2YmRkMTBiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtY3Vz
dG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1Ro
aXMgaXMgdGV4dAorCisKK1BBU1MgRmFsbGJhY2sgaXMgaGFuZGxlZCBjb3JyZWN0bHksIGFuZCB3
ZSBkb24ndCBjcmFzaCAKK1BBU1MgU2V0dGluZyB0aGUgaW5saW5lIHN0eWxlIGlzIGhhbmRsZWQg
Y29ycmVjdGx5IAorUEFTUyBDU1MucmVnaXN0ZXJQcm9wZXJ0eSAKK1BBU1MgU2V0dGluZyB0aGUg
aW5saW5lIHN0eWxlIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gcmVnaXN0ZXJlZCAKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1s
IGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdmMmNkNzBhMmEzMWRlYWI5OWYwMDMyYzQxZmVhN2E1YzhhYjdmOWIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0
bWwKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBleHBlcmltZW50YWw6Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVlc0VuYWJsZWQ9dHJ1
ZSBdIC0tPgorPCEtLSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v
c3JjLysvMDFjZTQzMTQwOWUzYTAxOTg1ODY3NzYyNmE5ODNjNTUxNjhkYTZkYy90aGlyZF9wYXJ0
eS9XZWJLaXQvTGF5b3V0VGVzdHMvY3VzdG9tLXByb3BlcnRpZXMvcmVnaXN0ZXItcHJvcGVydHku
aHRtbCAtLT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CisKKzxzdHlsZT4KKyAgI3Rlc3QxIHsKKyAgICBmb250LXNpemU6IHZhcigtLWZvbywg
MzBweCk7CisgICAgLS1mb286IHZhcigtLWJhciwgMjBweCk7CisgICAgLS1iYXI6IHZhcigtLWJh
eiwgdmFyKC0tZm9vKSk7CisgIH0KKzwvc3R5bGU+Cis8ZGl2PgorICA8aDIgaWQ9dGVzdDE+VGhp
cyBpcyB0ZXh0PC9oMj4KKzwvZGl2PgorPHNjcmlwdD4KK3ZhciBjb21wdXRlZFN0eWxlID0gZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXN0MSk7Cit2YXIgaW5saW5lU3R5bGUgPSB0ZXN0MS5zdHlsZTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYmF6JyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmFyJyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBweCcpOworfSwgIkZh
bGxiYWNrIGlzIGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgd2UgZG9uJ3QgY3Jhc2giKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYmF6JywgJyAgIDQw
cHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YmF6JyksICcgNDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1mb28nKSwgJycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1iYXInKSwgJycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJyA0MHB4Jyk7CisgIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgJzMwcHgnKTsKKyAg
aW5saW5lU3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tYmF6Jyk7CisgIGFzc2VydF9lcXVhbHMoY29t
cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnJyk7CisgIGFzc2VydF9lcXVh
bHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZvbycpLCAnJyk7CisgIGFzc2Vy
dF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnJyk7Cisg
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUn
KSwgJzMwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFs
dWUoJy0tYmF6JyksICcnKTsKK30sICJTZXR0aW5nIHRoZSBpbmxpbmUgc3R5bGUgaXMgaGFuZGxl
ZCBjb3JyZWN0bHkiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgQ1NTLnJlZ2lzdGVyUHJvcGVy
dHkoe25hbWU6ICctLWZvbycsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnMjAw
cHgnLCBpbmhlcml0czogdHJ1ZX0pOworICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0t
YmFyJywgc3ludGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcyMDBweCcsIGluaGVyaXRz
OiB0cnVlfSk7CisgIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1iYXonLCBzeW50YXg6
ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzIwMHB4JywgaW5oZXJpdHM6IHRydWV9KTsKK30s
ICJDU1MucmVnaXN0ZXJQcm9wZXJ0eSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBpbmxpbmVT
dHlsZS5zZXRQcm9wZXJ0eSgnLS1iYXonLCAnICAgNDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNv
bXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJzQwcHgnKTsKKyAgYXNzZXJ0
X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcyMDBweCcp
OworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXIn
KSwgJzIwMHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWJheicpLCAnNDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyksICcyMDBweCcpOworICBpbmxpbmVTdHlsZS5yZW1v
dmVQcm9wZXJ0eSgnLS1iYXonKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJy0tYmF6JyksICcyMDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVk
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1mb28nKSwgJzIwMHB4Jyk7CisgIGFzc2VydF9lcXVh
bHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnMjAwcHgnKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScp
LCAnMjAwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFs
dWUoJy0tYmF6JyksICcyMDBweCcpOworfSwgIlNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBo
YW5kbGVkIGNvcnJlY3RseSB3aGVuIHJlZ2lzdGVyZWQiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q0ODZlYjIwYTY5YjlhNTk5NTEwOWJlMDhiYjM0NWU0NGY5
NjgwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGll
cy1hcGkvY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACit0ZXN0CisKK3Rlc3QK
KwordGVzdAorCit0ZXN0CisKK3Rlc3QKKworCitQQVNTIFJlZ2lzdHJhdGlvbiBpcyBzdWNjZXNz
ZnVsIAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAxIAorUEFTUyBK
UyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAyIAorUEFTUyBKUyBBdHRyaWJ1dGVz
IGFyZSB2YWxpZCBmb3IgZWxlbWVudCAzIAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBm
b3IgZWxlbWVudCA0IAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA1
IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5
Y2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZWMyNGM4ODQ0ODliMzg5OTJjNWQ2MmFkNzU2MmVmZGQwMmJjOTJh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFw
aS9jeWNsZXMuaHRtbApAQCAtMCwwICsxLDEzMCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVl
c0VuYWJsZWQ9dHJ1ZSBdIC0tPgorPCEtLSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY2hyb21pdW0vc3JjLysvMDFjZTQzMTQwOWUzYTAxOTg1ODY3NzYyNmE5ODNjNTUxNjhkYTZk
Yy90aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvY3VzdG9tLXByb3BlcnRpZXMvcmVnaXN0
ZXItcHJvcGVydHkuaHRtbCAtLT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhcmVudDEgeworICAgIHdpZHRoOiA1
MDBweDsKKyAgICBiYWNrZ3JvdW5kOiBibHVlOworICB9CisgICNjaGlsZDEgeworICAgIGJhY2tn
cm91bmQ6IGdyZWVuOworICAgIGZvbnQtc2l6ZTogMTBweDsKKyAgICAtLWE6IDEwZW07CisgICAg
d2lkdGg6IHZhcigtLWEpOworICB9CisKKyAgI3BhcmVudDIgeworICAgIHdpZHRoOiA1MDBweDsK
KyAgICBiYWNrZ3JvdW5kOiBibHVlOworICAgIC0tYTogMTBlbTsKKyAgICBmb250LXNpemU6IGNh
bGMoIHZhcigtLWEpICsgLTE1MHB4KTsKKyAgfQorICAjY2hpbGQyIHsKKyAgICBiYWNrZ3JvdW5k
OiBncmVlbjsKKyAgICB3aWR0aDogdmFyKC0tYSk7CisgIH0KKworICAjcGFyZW50MyB7CisgICAg
d2lkdGg6IDUwMHB4OworICAgIGJhY2tncm91bmQ6IGJsdWU7CisgICAgLS1iOiAxMGVtOworICAg
IGZvbnQtc2l6ZTogY2FsYyggdmFyKC0tYikgKyAtMTUwcHgpOworICB9CisgICNjaGlsZDMgewor
ICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIHdpZHRoOiB2YXIoLS1iKTsKKyAgfQorCisgICNw
YXJlbnQ0IHsKKyAgICB3aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAt
LWI6IDEwZW07CisgICAgZm9udC1zaXplOiBjYWxjKCB2YXIoLS1iKSArIC0xNTBweCk7CisgIH0K
KyAgI2NoaWxkNCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgLS1hOiB2YXIoLS1iKTsK
KyAgICBmb250LXNpemU6IHZhcigtLWEpOworICAgIHdpZHRoOiB2YXIoLS1hKTsKKyAgfQorCisg
ICNwYXJlbnQ1IHsKKyAgICB3aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAg
ICAtLWI6IDVlbTsKKyAgICBmb250LXNpemU6IGNhbGMoIHZhcigtLWIpICsgLTcwcHgpOworICB9
CisgICNjaGlsZDUgeworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIC0tYzogdmFyKC0tYik7
CisgICAgZm9udC1zaXplOiB2YXIoLS1jKTsKKyAgICB3aWR0aDogdmFyKC0tYyk7CisgIH0KKzwv
c3R5bGU+Cis8ZGl2PgorICA8ZGl2IGlkPSJwYXJlbnQxIj48ZGl2IGlkPSJjaGlsZDEiPjxwPnRl
c3Q8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InBhcmVudDIiPjxkaXYgaWQ9ImNoaWxkMiI+
PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icGFyZW50MyI+PGRpdiBpZD0iY2hp
bGQzIj48cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJwYXJlbnQ0Ij48ZGl2IGlk
PSJjaGlsZDQiPjxwPnRlc3Q8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InBhcmVudDUiPjxk
aXYgaWQ9ImNoaWxkNSI+PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4K
KworZnVuY3Rpb24gdGVzdF9wcm9wKGlkLCBwcm9wLCBleHBlY3RlZCkgeworICBhc3NlcnRfZXF1
YWxzKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSku
Z2V0UHJvcGVydHlWYWx1ZShwcm9wKS50cmltKCksIGV4cGVjdGVkKTsKK30KKwordGVzdChmdW5j
dGlvbigpIHsKKyAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoeworICAgIG5hbWU6ICctLWEnLAorICAg
IHN5bnRheDogJzxsZW5ndGg+JywKKyAgICBpbmhlcml0czogdHJ1ZSwKKyAgICBpbml0aWFsVmFs
dWU6ICcyMDBweCcKKyAgfSkKK30sICJSZWdpc3RyYXRpb24gaXMgc3VjY2Vzc2Z1bCIpOwordGVz
dChmdW5jdGlvbigpIHsKKyAgdGVzdF9wcm9wKCdjaGlsZDEnLCAnd2lkdGgnLCAnMTAwcHgnKTsK
KyAgdGVzdF9wcm9wKCdjaGlsZDEnLCAnLS1hJywgJzEwMHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hp
bGQxJywgJy0tYicsICcnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQxJywgJy0tYScsICcyMDBweCcp
OworICB0ZXN0X3Byb3AoJ3BhcmVudDEnLCAnLS1iJywgJycpOworfSwgIkpTIEF0dHJpYnV0ZXMg
YXJlIHZhbGlkIGZvciBlbGVtZW50IDEiKTsKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHRlc3RfcHJv
cCgnY2hpbGQyJywgJ3dpZHRoJywgJzE2MHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQyJywgJy0t
YScsICcxNjBweCcpOworICB0ZXN0X3Byb3AoJ2NoaWxkMicsICctLWInLCAnJyk7CisgIHRlc3Rf
cHJvcCgnY2hpbGQyJywgJ2ZvbnQtc2l6ZScsICcxNnB4Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50
MicsICctLWEnLCAnMTYwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQyJywgJy0tYicsICcnKTsK
KyAgdGVzdF9wcm9wKCdwYXJlbnQyJywgJ2ZvbnQtc2l6ZScsICcxNnB4Jyk7Cit9LCAiSlMgQXR0
cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMiIpOwordGVzdChmdW5jdGlvbigpIHsKKyAg
dGVzdF9wcm9wKCdjaGlsZDMnLCAnd2lkdGgnLCAnMTAwcHgnKTsKKyAgdGVzdF9wcm9wKCdjaGls
ZDMnLCAnLS1hJywgJzIwMHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQzJywgJy0tYicsICcxMGVt
Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQzJywgJ2ZvbnQtc2l6ZScsICcxMHB4Jyk7CisgIHRlc3Rf
cHJvcCgncGFyZW50MycsICctLWEnLCAnMjAwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQzJywg
Jy0tYicsICcxMGVtJyk7CisgIHRlc3RfcHJvcCgncGFyZW50MycsICdmb250LXNpemUnLCAnMTBw
eCcpOworfSwgIkpTIEF0dHJpYnV0ZXMgYXJlIHZhbGlkIGZvciBlbGVtZW50IDMiKTsKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgIHRlc3RfcHJvcCgnY2hpbGQ0JywgJ3dpZHRoJywgJzEwMHB4Jyk7Cisg
IHRlc3RfcHJvcCgnY2hpbGQ0JywgJy0tYScsICcxMDBweCcpOworICB0ZXN0X3Byb3AoJ2NoaWxk
NCcsICctLWInLCAnMTBlbScpOworICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICdmb250LXNpemUnLCAn
MTBweCcpOworICB0ZXN0X3Byb3AoJ3BhcmVudDQnLCAnLS1hJywgJzIwMHB4Jyk7CisgIHRlc3Rf
cHJvcCgncGFyZW50NCcsICctLWInLCAnMTBlbScpOworICB0ZXN0X3Byb3AoJ3BhcmVudDQnLCAn
Zm9udC1zaXplJywgJzEwcHgnKTsKK30sICJKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxl
bWVudCA0Iik7Cit0ZXN0KGZ1bmN0aW9uKCkgeworICB0ZXN0X3Byb3AoJ2NoaWxkNScsICd3aWR0
aCcsICcyNTBweCcpOworICB0ZXN0X3Byb3AoJ2NoaWxkNScsICctLWMnLCAnNWVtJyk7CisgIHRl
c3RfcHJvcCgnY2hpbGQ1JywgJy0tYicsICc1ZW0nKTsKKyAgdGVzdF9wcm9wKCdjaGlsZDUnLCAn
Zm9udC1zaXplJywgJzUwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQ1JywgJy0tYScsICcyMDBw
eCcpOworICB0ZXN0X3Byb3AoJ3BhcmVudDUnLCAnLS1iJywgJzVlbScpOworICB0ZXN0X3Byb3Ao
J3BhcmVudDUnLCAnZm9udC1zaXplJywgJzEwcHgnKTsKK30sICJKUyBBdHRyaWJ1dGVzIGFyZSB2
YWxpZCBmb3IgZWxlbWVudCA1Iik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lNTY4MTYyNjUyOWZiZjEwYjFjNTBmZjAwYzM3MTExYTkwZWM2YzFiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK3Rlc3QKKworCitQQVNTIENTU09NIHNldHRlcnMg
ZnVuY3Rpb24gYXMgZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIAorUEFTUyBD
U1MucmVnaXN0ZXJQcm9wZXJ0eSAKK1BBU1MgRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGls
bCByZWFkYWJsZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5z
ZXQgdmFsdWUgCitQQVNTIFZhbHVlcyBub3QgbWF0Y2hpbmcgdGhlIHJlZ2lzdGVyZWQgdHlwZSBj
YW4ndCBiZSBzZXQgCitQQVNTIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlubGluZSBzdHls
ZXMgCitQQVNTIFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSAKK1BBU1MgVmFs
aWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyAKK1BBU1MgVmFyIHZhbHVlcyBh
cmUgYWNjZXB0ZWQgCitQQVNTIFZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRh
dGlvbiAKK1BBU1MgVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uLCBl
dmVuIHdoZW4gaXQgaXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlIAorUEFTUyBWYXIgdmFs
dWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlkYXRpb24sIGV2ZW4gd2hlbiBpdCBpcyBvYnZp
b3VzIHRoZXkgd2lsbCBub3QgcGFyc2UgKHR5cGVkKSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbCBiL0xheW91dFRlc3RzL2Nz
cy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFiYTdmZWJj
MDYzOTQ0NjViY2NmZWQ4NGNlYTlmZTIzMTU0ZWIwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWwKQEAgLTAsMCArMSwx
MjAgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVu
dGFsOkNTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkPXRydWUgXSAtLT4KKzwhLS0g
aHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rLzAxY2U0MzE0
MDllM2EwMTk4NTg2Nzc2MjZhOTgzYzU1MTY4ZGE2ZGMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91
dFRlc3RzL2N1c3RvbS1wcm9wZXJ0aWVzL3JlZ2lzdGVyLXByb3BlcnR5Lmh0bWwgLS0+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c3R5
bGU+CisgICN0ZXN0MSB7CisgICAgLS1hOiAxMGVtOworICAgIC0tYjogMTBlbTsKKyAgfQorPC9z
dHlsZT4KKzxkaXY+CisgIDxkaXYgaWQ9dGVzdDE+PHA+dGVzdDwvcD48L2Rpdj4KKzwvZGl2Pgor
PHNjcmlwdD4KKwordmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHRlc3QxKTsK
K3ZhciBpbmxpbmVTdHlsZSA9IHRlc3QxLnN0eWxlOwordmFyIHNoZWV0U3R5bGUgPSBkb2N1bWVu
dC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgLy8gTm90aGluZyByZWdpc3RlcmVkIHlldCwgd2hhdGV2ZXIgeW91IHNwZWNpZnkgd29ya3MK
KyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAn
IDEwZW0nKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tYicpLCAnIDEwZW0nKTsKKworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2hl
bGxvJyk7CisgIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnYm9uam91cicpOworCisg
IGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxs
bycpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicp
LCAnYm9uam91cicpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1hJyksICdoZWxsbycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7Cit9LCAiQ1NTT00gc2V0dGVycyBmdW5j
dGlvbiBhcyBleHBlY3RlZCBmb3IgdW5yZWdpc3RlcmVkIHByb3BlcnRpZXMiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWEnLCBzeW50YXg6
ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzBweCcsIGluaGVyaXRzOiBmYWxzZX0pOworICBD
U1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tcmVnaXN0ZXJlZCcsIHN5bnRheDogJzxsZW5n
dGg+JywgaW5pdGlhbFZhbHVlOiAnMHB4JywgaW5oZXJpdHM6IGZhbHNlfSk7Cit9LCAiQ1NTLnJl
Z2lzdGVyUHJvcGVydHkiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0X2VxdWFscyhp
bmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2hlbGxvJyk7CisgIGFzc2VydF9l
cXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7Cisg
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBw
eCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1i
JyksICdib25qb3VyJyk7Cit9LCAiRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFk
YWJsZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFs
dWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0t
YScsICdoaScpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hpJyk7CisgIGFz
c2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycp
OworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAn
aGknKTsKK30sICJWYWx1ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3Qg
YmUgc2V0Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIGlubGluZVN0eWxlLnJlbW92ZVByb3Bl
cnR5KCctLWEnKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJycpOworICBh
c3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnJyk7Cisg
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzE2
MHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCct
LWInKSwgJyAxMGVtJyk7Cit9LCAiVmFsdWVzIGNhbiBiZSByZW1vdmVkIGZyb20gaW5saW5lIHN0
eWxlcyIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBzaGVldFN0eWxlLnNldFByb3BlcnR5KCct
LWEnLCAnYmFuYW5hJyk7IC8vIEludmFsaWQsIG5vIGNoYW5nZQorICBhc3NlcnRfZXF1YWxzKGNv
bXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcxNjBweCcpOworICBzaGVldFN0
eWxlLnNldFByb3BlcnR5KCctLWEnLCAnMjBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVk
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcyMHB4Jyk7CisgIHNoZWV0U3R5bGUuc2V0
UHJvcGVydHkoJy0tYScsICdpbml0aWFsJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOworfSwgIlN0eWxlc2hlZXRzIGNhbiBi
ZSBtb2RpZmllZCBieSBDU1NPTSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBpbmxpbmVTdHls
ZS5zZXRQcm9wZXJ0eSgnLS1hJywgJzMwZW0nKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHko
Jy0tYicsICcyMGVtJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1hJyksICczMGVtJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1iJyksICcyMGVtJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzQ4MHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29t
cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJzIwZW0nKTsKKyAgaW5saW5lU3R5
bGUuc2V0UHJvcGVydHkoJy0tYScsICdpbmhlcml0Jyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5l
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdpbmhlcml0Jyk7CisgIGFzc2VydF9lcXVh
bHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOworfSwgIlZh
bGlkIHZhbHVlcyBjYW4gYmUgc2V0IG9uIGlubGluZSBzdHlsZXMiKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcgMjBweCcpOworICBpbmxp
bmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tYikgKyAxMHB4KScpOworICBh
c3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDIwcHgn
KTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwg
J2NhbGModmFyKC0tYikgKyAxMHB4KScpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICcgMjBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICczMHB4Jyk7Cit9LCAiVmFyIHZhbHVl
cyBhcmUgYWNjZXB0ZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0
UHJvcGVydHkoJy0tYicsICdoZWxsbycpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1h
JywgJ2NhbGModmFyKC0tYikgKyAxNXB4KScpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxl
LmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxp
bmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2NhbGModmFyKC0tYikgKyAxNXB4KScp
OworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyks
ICdoZWxsbycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICcwcHgnKTsKK30sICJWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZh
bGlkYXRpb24iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVy
dHkoJy0tYicsICdoZWxsbycpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2Nh
bGModmFyKC0tYikgMTVweCknKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLWIpIDE1cHgpJyk7CisgIGFzc2Vy
dF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7
CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwg
JzBweCcpOworfSwgIlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlvbiwg
ZXZlbiB3aGVuIGl0IGlzIG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hlbGxvJyk7Cisg
IGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnY2FsYyh2YXIoLS1yZWdpc3RlcmVkKSAx
NXB4KScpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YicpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWEnKSwgJ2NhbGModmFyKC0tcmVnaXN0ZXJlZCkgMTVweCknKTsKKyAgYXNzZXJ0X2Vx
dWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMHB4
Jyk7Cit9LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uLCBldmVu
IHdoZW4gaXQgaXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlICh0eXBlZCkiKTsKKworPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5
bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJv
cGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IGU5ZTJmZTczOGFiM2EyZGJk
YWZkOTEwYjY0NjYxZDJhZGQ4M2UwM2QuLjJlYTc4ZTI5ODA2MDY4ZTViM2MzZjZlYzc5ZjZiZjlh
OGE2YjE4Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHkt
c3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0
ZXItcHJvcGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAog
Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgVGhlIGdpdmVuIGlu
aXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitQQVNTIHN5
bnRheDonKicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgCiBGQUlMIHN5bnRheDonICogJywg
aW5pdGlhbFZhbHVlOidiJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTonMnB4JyBpcyB2YWxpZCAKIEZBSUwgc3ludGF4OicgPG51bWJlcj4nLCBpbml0
aWFsVmFsdWU6JzUnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBh
cnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgpAQCAtOSwxMSArOSwxMSBAQCBGQUlMIHN5bnRheDon
IDxsZW5ndGg+KyB8IDxwZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonMnB4IDhweCcgaXMgdmFs
aWQgVGhlIGdpdgogUEFTUyBzeW50YXg6JzxsZW5ndGg+fDxwZXJjZW50YWdlPnw8bGVuZ3RoLXBl
cmNlbnRhZ2U+JywgaW5pdGlhbFZhbHVlOicycHgnIGlzIHZhbGlkIAogRkFJTCBzeW50YXg6Jzxj
b2xvcj4gfCA8aW1hZ2U+IHwgPHVybD4gfCA8aW50ZWdlcj4gfCA8YW5nbGU+JywgaW5pdGlhbFZh
bHVlOidyZWQnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNl
IGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBzeW50YXg6Jzx0aW1lPiB8IDxyZXNvbHV0aW9u
PiB8IDx0cmFuc2Zvcm0tbGlzdD4gfCA8Y3VzdG9tLWlkZW50PicsIGluaXRpYWxWYWx1ZToncmVk
JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhl
IGdpdmVuIHN5bnRheC4KLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycg
aXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBn
aXZlbiBzeW50YXguCi1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMg
XSkgeyB5YXkgKD8/KX0nIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90
IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFs
dWU6J3llcCAndGhpcyBpcyB2YWxpZCB0b28nJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2
YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZBSUwgc3ludGF4Oicq
JywgaW5pdGlhbFZhbHVlOid1bm1hdGNoZWQgb3BlbmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBp
cyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCBU
aGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRh
eC4KK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMgdmFsaWQgCitQ
QVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5YXkgKD8/KX0n
IGlzIHZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAndGhpcyBpcyB2
YWxpZCB0b28nJyBpcyB2YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bm1h
dGNoZWQgb3BlbmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCAKK1BBU1Mgc3ludGF4
OicqJywgaW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPics
IGluaXRpYWxWYWx1ZTonMCcgaXMgdmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0
aWFsVmFsdWU6JzEwcHggLyo6KSovJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPics
IGluaXRpYWxWYWx1ZTonIGNhbGMoLTJweCknIGlzIHZhbGlkIApAQCAtNjMsNyArNjMsNyBAQCBi
YW5hbmFccgogRkFJTCBzeW50YXg6J2JhDAogfAluYVxyfG55YScsIGluaXRpYWxWYWx1ZTonbnlh
JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhl
IGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4OidudWxsJywgaW5pdGlhbFZhbHVlOidudWxsJyBp
cyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KLUZBSUwgc3ludGF4Oid1bmRlZmluZWQnLCBpbml0aWFsVmFsdWU6J3VuZGVm
aW5lZCcgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9y
IHRoZSBnaXZlbiBzeW50YXguCitQQVNTIHN5bnRheDondW5kZWZpbmVkJywgaW5pdGlhbFZhbHVl
Oid1bmRlZmluZWQnIGlzIHZhbGlkIAogRkFJTCBzeW50YXg6J2FycmF5JywgaW5pdGlhbFZhbHVl
OidhcnJheScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2Ug
Zm9yIHRoZSBnaXZlbiBzeW50YXguCiBQQVNTIHN5bnRheDonYmFuYW5hLG55YScsIGluaXRpYWxW
YWx1ZTonYmFuYW5hJyBpcyBpbnZhbGlkIAogUEFTUyBzeW50YXg6J2JhbmFuXDYxJywgaW5pdGlh
bFZhbHVlOidiYW5hbmEnIGlzIGludmFsaWQgCkBAIC04NSwzNiArODUsMzYgQEAgUEFTUyBzeW50
YXg6J3Vuc2V0JywgaW5pdGlhbFZhbHVlOid1bnNldCcgaXMgaW52YWxpZAogRkFJTCBzeW50YXg6
JzxsZW5ndGg+fGluaXRpYWwnLCBpbml0aWFsVmFsdWU6JzEwcHgnIGlzIGludmFsaWQgYXNzZXJ0
X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1l
LCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBm
YWxzZX0pIiBkaWQgbm90IHRocm93CiBGQUlMIHN5bnRheDonPGxlbmd0aD58SU5IRVJJVCcsIGlu
aXRpYWxWYWx1ZTonMTBweCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkg
PT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0
aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cK
IEZBSUwgc3ludGF4Oic8cGVyY2VudGFnZT58dW5zRXQnLCBpbml0aWFsVmFsdWU6JzIlJyBpcyBp
bnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVl
LCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotUEFTUyBzeW50YXg6JyonLCBpbml0
aWFsVmFsdWU6J2luaXRpYWwnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxW
YWx1ZTonaW5oZXJpdCcgaXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVl
Oid1bnNldCcgaXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidyZXZl
cnQnIGlzIGludmFsaWQgCitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcg
aXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJv
cGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxW
YWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgc3ludGF4OicqJywg
aW5pdGlhbFZhbHVlOidpbmhlcml0JyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9u
ICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgs
IGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0
aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Vuc2V0JyBpcyBpbnZhbGlkIGFz
c2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTog
bmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0
czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6
J3JldmVydCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJl
Z2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6
IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3lu
dGF4Oic8Y3VzdG9tLWlkZW50PicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcgaXMgaW52YWxpZCAK
IFBBU1Mgc3ludGF4Oic8Y3VzdG9tLWlkZW50PisnLCBpbml0aWFsVmFsdWU6J2ZvbyBpbmhlcml0
IGJhcicgaXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOicpJyBpcyBp
bnZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbKV0nIGlzIGludmFsaWQg
Ci1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTond2hlZSEnIGlzIGludmFsaWQgCi1QQVNT
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIgotJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6
JyonLCBpbml0aWFsVmFsdWU6J3VybChtb28gJycpJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6
JyonLCBpbml0aWFsVmFsdWU6J3NlbWk7Y29sb24nIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDon
KicsIGluaXRpYWxWYWx1ZTondmFyKGludmFsaWQgdmFyIHJlZiknIGlzIGludmFsaWQgCi1QQVNT
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKC0tZm9vKScgaXMgaW52YWxpZCAKK0ZBSUwg
c3ludGF4OicqJywgaW5pdGlhbFZhbHVlOicpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1
bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBz
eW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlk
IG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbKV0nIGlzIGludmFs
aWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtu
YW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGlu
aGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxW
YWx1ZTond2hlZSEnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZh
bHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlM
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIgorJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6
IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4
OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIg
ZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3VybChtb28gJycp
JyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlh
bFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6Jyon
LCBpbml0aWFsVmFsdWU6J3NlbWk7Y29sb24nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVu
Y3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5
bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQg
bm90IHRocm93CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKGludmFsaWQgdmFy
IHJlZiknIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdp
c3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBp
bml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRh
eDonKicsIGluaXRpYWxWYWx1ZTondmFyKC0tZm9vKScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dz
OiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRh
eDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSki
IGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4OidiYW5hbmEnLCBpbml0aWFsVmFsdWU6J2JBbkFu
QScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTondmFy
KC0tbW9vKScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1
ZTonMTAnIGlzIGludmFsaWQgCiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6
JzEwJScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lz
dGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGlu
aXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwgc3ludGF4
Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg1cHggKyAxMCUpJyBpcyBpbnZhbGlkIGFz
c2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTog
bmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0
czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlh
bFZhbHVlOidjYWxjKDVweCAqIDNweCAvIDZweCknIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDon
PGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgCitGQUlMIHN5bnRheDon
PGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czog
ZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6
IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBk
aWQgbm90IHRocm93CiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwdm1p
bicgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRp
YWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLVBBU1Mgc3ludGF4Oic8
bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBpbnZhbGlkIAotUEFT
UyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDRweCArIGNhbGMoOCAqIDJl
bSkpJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6JzxsZW5ndGg+KycsIGluaXRpYWxWYWx1ZTon
Y2FsYygyZXggKyAxNnB4KScgaXMgaW52YWxpZCAKK0ZBSUwgc3ludGF4Oic8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1
bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBz
eW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlk
IG5vdCB0aHJvdworRkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDRw
eCArIGNhbGMoOCAqIDJlbSkpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIo
KSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGlu
aXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJv
dworRkFJTCBzeW50YXg6JzxsZW5ndGg+KycsIGluaXRpYWxWYWx1ZTonY2FsYygyZXggKyAxNnB4
KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRp
YWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4Oic8
bGVuZ3RoPisnLCBpbml0aWFsVmFsdWU6JzEwcHggY2FsYygyMHB4ICsgNHJlbSknIGlzIGludmFs
aWQgCiBQQVNTIHN5bnRheDonPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4rJywgaW5pdGlhbFZhbHVl
OidjYWxjKDEwMHZoIC0gMTBweCkgMzBweCcgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVu
Z3RoPicsIGluaXRpYWxWYWx1ZTonMTBweDsnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonPGxl
bmd0aC1wZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonY2FsYygycHggKyAxMCUgKyA3ZXgpJyBp
cyBpbnZhbGlkIAorRkFJTCBzeW50YXg6JzxsZW5ndGgtcGVyY2VudGFnZT4nLCBpbml0aWFsVmFs
dWU6J2NhbGMoMnB4ICsgMTAlICsgN2V4KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5j
dGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3lu
dGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBu
b3QgdGhyb3cKIEZBSUwgc3ludGF4Oic8cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6JzAnIGlz
IGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3Bl
cnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFs
dWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBQQVNTIHN5bnRheDonPGludGVn
ZXI+JywgaW5pdGlhbFZhbHVlOicxLjAnIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGludGVn
ZXI+JywgaW5pdGlhbFZhbHVlOicxZTAnIGlzIGludmFsaWQgCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12
YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJv
cGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBl
Y3RlZC50eHQKaW5kZXggZmMyN2IwZGYyOTk1YTdiN2Y0ZWEwZDc3NWMwZDdiNzUxZjFlZDEwYi4u
NTY1NGU4MmM2YTgyYTRjMmUyOWNiMWYzNTYwNDEyMjVkMjExZTIzYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRp
ZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2UtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWluaGVyaXRh
bmNlLWV4cGVjdGVkLnR4dApAQCAtMiw2ICsyLDYgQEAKIFBBU1MgUmVnaXN0ZXJlZCBwcm9wZXJ0
aWVzIGFyZSBjb3JyZWN0bHkgaW5oZXJpdGVkIChvciBub3QpIGRlcGVuZGluZyBvbiB0aGUgaW5o
ZXJpdHMgZmxhZy4gCiBQQVNTIEV4cGxpY2l0bHkgaW5oZXJpdGluZyBmcm9tIGEgcGFyZW50IHdp
dGggYW4gaW52YWxpZCB2YWx1ZSByZXN1bHRzIGluIGluaXRpYWwgdmFsdWUuIAogUEFTUyBFeHBs
aWNpdGx5IGluaGVyaXRpbmcgZnJvbSBhIHBhcmVudCB3aXRoIG5vIHZhbHVlIHJlc3VsdHMgaW4g
aW5pdGlhbCB2YWx1ZS4gCi1GQUlMIFJlZmVyZW5jZSB0byB1bmRlZmluZWQgdmFyaWFibGUgcmVz
dWx0cyBpbiBpbmhlcml0ZWQgdmFsdWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjQycHgiIGJ1
dCBnb3QgIjBweCIKLUZBSUwgUmVmZXJlbmNlIHRvIHN5bnRheC1pbmNvbXBhdGlibGUgdmFyaWFi
bGUgcmVzdWx0cyBpbiBpbmhlcml0ZWQgdmFsdWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjQy
cHgiIGJ1dCBnb3QgIjBweCIKK1BBU1MgUmVmZXJlbmNlIHRvIHVuZGVmaW5lZCB2YXJpYWJsZSBy
ZXN1bHRzIGluIGluaGVyaXRlZCB2YWx1ZSAKK1BBU1MgUmVmZXJlbmNlIHRvIHN5bnRheC1pbmNv
bXBhdGlibGUgdmFyaWFibGUgcmVzdWx0cyBpbiBpbmhlcml0ZWQgdmFsdWUgCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1w
cm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhwZWN0ZWQu
dHh0CmluZGV4IDBkNTU2MWY0OGU1NjdlMzYyNzkyNmE0MTFhNzVlMGVjYjRiMDY4NTUuLmVmY2M1
YzJlY2Y4ZWY1YThlNDJmODJkZmM2M2U0ZmIxODJhNDc5ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZh
bHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRp
ZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVjdGVkLnR4dApAQCAt
Miw4ICsyLDggQEAKIFBBU1MgQ1NTT00gc2V0dGVycyBmdW5jdGlvbiBhcyBleHBlY3RlZCBmb3Ig
dW5yZWdpc3RlcmVkIHByb3BlcnRpZXMgCiBGQUlMIENTUy5yZWdpc3RlclByb3BlcnR5IFRoZSBn
aXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4Lgog
RkFJTCBGb3JtZXJseSB2YWxpZCB2YWx1ZXMgYXJlIHN0aWxsIHJlYWRhYmxlIGZyb20gaW5saW5l
IHN0eWxlcyBidXQgYXJlIGNvbXB1dGVkIGFzIHRoZSB1bnNldCB2YWx1ZSBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiYmx1ZSIgYnV0IGdvdCAiaGVsbG8iCi1GQUlMIFZhbHVlcyBub3QgbWF0Y2hp
bmcgdGhlIHJlZ2lzdGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIjUiIGJ1dCBnb3QgImhpIgorRkFJTCBWYWx1ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3Rl
cmVkIHR5cGUgY2FuJ3QgYmUgc2V0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJoZWxsbyIgYnV0
IGdvdCAiMjAiCiBGQUlMIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlubGluZSBzdHlsZXMg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInJlZCIgYnV0IGdvdCAiIHJlZCIKLUZBSUwgU3R5bGVz
aGVldHMgY2FuIGJlIG1vZGlmaWVkIGJ5IENTU09NIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIx
MHB4IiBidXQgZ290ICIwcHgiCitQQVNTIFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBD
U1NPTSAKIEZBSUwgVmFsaWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAiYmx1ZSIgYnV0IGdvdCAiIGJsdWUiCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9w
ZXJ0aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMt
dmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMWU0ZDI3MGFl
NjhmMWViMTc2NmUzYWM3MmQzNWJkNTAxMjYwZWY3Ni4uNjZmYmJjYTk5MDljYjlmYzU0OTY4YzI4
ZTIyNmY4ZWVjODQxNDQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRl
bnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRh
dGl2ZS1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAz
NDA6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDU1NVbnBhcnNlZFZhbHVl
CiAKIEhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IENTU1VucGFyc2VkVmFsdWUKIAotRkFJTCBDb21wdXRlZCAqIGlzIHJl
aWZpZWQgYXMgQ1NTVW5wYXJzZWRWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KK0ZBSUwgQ29tcHV0ZWQgKiBpcyByZWlmaWVk
IGFzIENTU1VucGFyc2VkVmFsdWUgdGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAndGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAoKScsICd0YXJnZXQuY29tcHV0ZWRT
dHlsZU1hcCcgaXMgdW5kZWZpbmVkKQogRkFJTCBDb21wdXRlZCA8YW5nbGU+IGlzIHJlaWZpZWQg
YXMgQ1NTVW5pdFZhbHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZv
ciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBDb21wdXRlZCA8Y29sb3I+IGlzIHJlaWZpZWQgYXMg
Q1NTU3R5bGVWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3Ig
dGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGN1c3RvbS1pZGVudD4gaXMgcmVpZmll
ZCBhcyBDU1NLZXl3b3JkVmFsdWUgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFy
c2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zh
ci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVy
dGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xl
cy1leHBlY3RlZC50eHQKaW5kZXggMmJlZGY2ODkyNzJlNTIwNjMxOGIzMGZhZmFkNTQ4MTJlZGVk
YWE5MS4uOTMxNDUxMjFhMWMzNDZhMmM4MjYwMWZiOGQzZGYxNTlhMDI5ZmMyNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBy
b3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1j
eWNsZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1y
ZWdpc3RlcmVkLXByb3BlcnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAK
IAotRkFJTCBBIHZhcigpIGN5Y2xlIGJldHdlZW4gdHdvIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBp
cyBoYW5kbGVkIGNvcnJlY3RseS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjJweCIgYnV0IGdv
dCAiM3B4IgotRkFJTCBBIHZhcigpIGN5Y2xlIGJldHdlZW4gYSByZWdpc3RlcmVkIHByb3BlcnRp
ZXMgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBoYW5kbGVkIGNvcnJlY3RseS4gYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjFweCIgYnV0IGdvdCAiMnB4IgorUEFTUyBBIHZhcigpIGN5
Y2xlIGJldHdlZW4gdHdvIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBpcyBoYW5kbGVkIGNvcnJlY3Rs
eS4gCitQQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBh
bmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAKIFBBU1Mg
QSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgdHdvIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGlzIGhh
bmRsZWQgY29ycmVjdGx5LiAKLUZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4Oicq
JyBwcm9wZXJ0eSBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVj
dGx5LiBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVu
IHN5bnRheC4KK1BBU1MgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4OicqJyBwcm9wZXJ0
eSBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJv
cGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVn
aXN0ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBkYjUzNWU0Yzg4ODYxMjY3MGQw
ZDJkMzc0YzU4YjVmNGUwNGQxOTgxLi4zOWU2NzVkNDM0YWUxYTkwZTUyZGE5ZWFiNmY0MDI2NjRk
OWMwMzczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0
ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1y
ZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUg
QEAKIAotRkFJTCB2YXIoKSByZWZlcmVuY2VzIHdvcmsgd2l0aCByZWdpc3RlcmVkIHByb3BlcnRp
ZXMgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjE1cHgiIGJ1dCBnb3QgIjEwJSIKK0ZBSUwgdmFy
KCkgcmVmZXJlbmNlcyB3b3JrIHdpdGggcmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkICIgIDEwcHgiIGJ1dCBnb3QgIiAxMHB4IgogRkFJTCBSZWZlcmVuY2VzIHRv
IHJlZ2lzdGVyZWQgdmFyKCktcHJvcGVydGllcyB3b3JrIGluIHJlZ2lzdGVyZWQgbGlzdHMgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjFweCwgMTBweCwgMnB4IiBidXQgZ290ICIwcHgiCiBGQUlM
IFJlZmVyZW5jZXMgdG8gbWl4ZWQgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkIHZhcigpLXBy
b3BlcnRpZXMgd29yayBpbiByZWdpc3RlcmVkIGxpc3RzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICIxcHgsIDIwcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4IgogRkFJTCBSZWdpc3RlcmVkIGxp
c3RzIG1heSBiZSBjb25jYXRlbmF0ZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjFweCwgMTBw
eCwgMnB4LCAxcHgsIDIwcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353382</attachid>
            <date>2018-10-30 10:23:42 -0700</date>
            <delta_ts>2018-10-30 12:02:50 -0700</delta_ts>
            <desc>Changes from last patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>3210</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyMGY1YjJlMzBjMC4uN2IwMWMx
YTRhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE2MjQsNyArMTYy
NCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
LCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgaWYgKHZhbHVlLT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZXMoKSkgewogICAgICAgICB2YWx1ZVRvQXBwbHkgPSByZXNvbHZlZFZhcmlhYmxl
VmFsdWUoaWQsICp2YWx1ZSwgYXBwbHlTdGF0ZSk7CiAgICAgICAgIC8vIElmIGFwcGxpZWRQcm9w
ZXJ0aWVzIGFscmVhZHkgaGFzIHRoaXMgaWQsIHRoZW4gd2UgZGV0ZWN0ZWQgYSBjeWNsZSwgYW5k
IHRoaXMgdmFsdWUgc2hvdWxkIGJlIHVuc2V0LgotICAgICAgICBpZiAoIXZhbHVlVG9BcHBseSB8
fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmNvbnRhaW5zKGlkKSkgeworICAgICAgICBp
ZiAoIXZhbHVlVG9BcHBseSB8fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmdldChpZCkp
IHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkp
CiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZQpAQCAtMjMzOSwxOSAr
MjMzOSwyNSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGlu
dCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LAogICAgICAgICBhdXRvJiBwcm9wZXJ0
eSA9IHN0YXRlLmNhc2NhZGUtPnByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgICAgICBBU1NFUlQo
IXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwogCi0gICAgICAg
IGlmIChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5jb250YWlucyhwcm9wZXJ0eUlEKSkgewor
ICAgICAgICBpZiAoTElLRUxZKHN0YXRlLmNhc2NhZGUtPmN1c3RvbVByb3BlcnRpZXMoKS5pc0Vt
cHR5KCkpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFueSBjdXN0b20gcHJv
cGVydGllcywgdGhlbiB0aGVyZSBjYW4ndCBiZSBhbnkgY3ljbGVzLgorICAgICAgICAgICAgcHJv
cGVydHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLmdl
dChwcm9wZXJ0eUlEKSkpIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGN5Y2xlIChlZy4g
c2V0dGluZyBmb250IHNpemUgdXNpbmcgcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVydHkgdmFsdWUg
Y29udGFpbmluZyBlbSkKICAgICAgICAgICAgIC8vIFNvIHRoaXMgdmFsdWUgc2hvdWxkIGJlIHVu
c2V0Ci0gICAgICAgICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5hZGQocHJvcGVydHlJRCk7
CisgICAgICAgICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5zZXQocHJvcGVydHlJRCk7CiAg
ICAgICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGlzIGluIGEgY3ljbGUsIGFuZCBvbmx5IHRoZSBy
b290IG9mIHRoZSBjYWxsIHN0YWNrIHdpbGwgaGF2ZSBmaXJzdFByb3BlcnR5ICE9IGxhc3RQcm9w
ZXJ0eS4KICAgICAgICAgICAgIEFTU0VSVChmaXJzdFByb3BlcnR5ID09IGxhc3RQcm9wZXJ0eSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRlLmluUHJv
Z3Jlc3NQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKKyAgICAgICAgc3RhdGUuaW5Qcm9ncmVz
c1Byb3BlcnRpZXMuc2V0KHByb3BlcnR5SUQpOwogICAgICAgICBwcm9wZXJ0eS5hcHBseSgqdGhp
cywgc3RhdGUpOwotICAgICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5hZGQocHJvcGVydHlJ
RCk7Ci0gICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLnJlbW92ZShwcm9wZXJ0eUlE
KTsKKyAgICAgICAgc3RhdGUuYXBwbGllZFByb3BlcnRpZXMuc2V0KHByb3BlcnR5SUQpOworICAg
ICAgICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5zZXQocHJvcGVydHlJRCwgZmFsc2UpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNmQ4OGY2MDE5YTIu
LmZiNTQxYjEzMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlIDxiaXRzZXQ+CiAj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC01MzIsOSArNTMzLDkgQEAgc3RydWN0IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRl
IHsKICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyOwogICAgIFN0eWxlUmVzb2x2ZXI6
OkNhc2NhZGVkUHJvcGVydGllcyogY2FzY2FkZTsKICAgICBjb25zdCBTdHlsZVJlc29sdmVyOjpN
YXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQ7Ci0gICAgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBhcHBs
aWVkUHJvcGVydGllcyA9IHsgfTsKKyAgICBCaXRtYXA8bnVtQ1NTUHJvcGVydGllcz4gYXBwbGll
ZFByb3BlcnRpZXMgPSB7IH07CiAgICAgSGFzaFNldDxTdHJpbmc+IGFwcGxpZWRDdXN0b21Qcm9w
ZXJ0aWVzID0geyB9OwotICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gaW5Qcm9ncmVzc1Byb3Bl
cnRpZXMgPSB7IH07CisgICAgQml0bWFwPG51bUNTU1Byb3BlcnRpZXM+IGluUHJvZ3Jlc3NQcm9w
ZXJ0aWVzID0geyB9OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBpblByb2dyZXNzUHJvcGVydGllc0N1
c3RvbSA9IHsgfTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353394</attachid>
            <date>2018-10-30 12:02:52 -0700</date>
            <delta_ts>2018-10-31 11:36:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191042-20181030120251.patch</filename>
            <type>text/plain</type>
            <size>131642</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ2NDU1OGJiMzNkYzFj
NmNhZDM1MTI1MWEyMDdmNzVhM2EyYTkwMC4uNDA4ZDAxMWYyNzM1ODE5OWM5N2IzYTA3OWZkY2M0
YzRmYTA0MzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIEN1
c3RvbSBQcm9wZXJ0aWVzIEFQSSBTaG91bGQgU3VwcG9ydCBzeW50YXg9IioiIGFuZCAiPGxlbmd0
aD4iLCBhbmQgaGFuZGxlIGN5Y2xlcyBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgY29kZSBzbyB0aGF0OgorICAgICAgICAt
IEFsbCBwcm9wZXJ0aWVzIGFwcGxpZWQgaW4gU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyBhcmUgb25seSBhcHBsaWVkIG9uY2UuIAorICAgICAgICAtIEN1c3RvbSBwcm9wZXJ0
aWVzIGFyZSBvbmx5IHJlc29sdmVkIG9uY2UsIGluIFN0eWxlUmVzb2x2ZXIsIHdoZW4gdGhleSBh
cmUgYXBwbGllZCB0byB0aGUgUmVuZGVyU3R5bGUuIFRoZXkgd2VyZSBwcmV2aW91c2x5IHJlc29s
dmVkCisgICAgICAgICAgZXZlcnkgdGltZSB0aGV5IHdlcmUgcmVmZXJlbmNlZCwgYW5kIGFnYWlu
IGluIFJlbmRlclN0eWxlLgorICAgICAgICAtIFRoZSBmb250LXNpemUgcHJvcGVydHkgaXMgYXBw
bGllZCBhZnRlciBpdHMgdmFyaWFibGUgcmVmZXJlbmNlcywgYnV0IGJlZm9yZSBjdXN0b20gcHJv
cGVydGllcyB0aGF0IGRlcGVuZCBvbiBpdC4KKyAgICAgICAgLSBDeWNsZXMgYXJlIGRldGVjdGVk
IGF0IHRoZSBzYW1lIHRpbWUgYXMgcmVzb2x1dGlvbi4KKyAgICAgICAgLSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJyBjdXN0b20gcHJvcGVydGllcyBjYW5ub3QgYmUgc2V0IGZyb20gSmF2YXNjcmlw
dCBvciBXZWJLaXRMZWdhY3kgaWYgdGhleSBkbyBub3QgcGFyc2UgZm9yIHRoZSBwcm9wZXJ0eSdz
IHR5cGUuCisgICAgICAgICAgSWYgdGhleSBjb250YWluIHZhcigtLS4uLikgcmVmZXJlbmNlcywg
aG93ZXZlciwgdGhlbiB0aGV5IGNhbiBiZSBzZXQgYmVjYXVzZSB3ZSBjYW5ub3QgY2hlY2sgaWYg
dGhlIHJlZmVyZW5jZXMgYXJlIHZhbGlkIGZyb20gc2V0UHJvcGVydHkuCisgICAgICAgICAgVGhp
cyBiZWhhdmlvdXIgbWF0Y2hlcyBjaHJvbWUsIGJ1dCBpcyBub3QgZG9jdW1lbnRlZCBpbiB0aGUg
c3BlYy4gCisgICAgICAgIC0gQ3VzdG9tIHByb3BlcnR5IHZhbHVlcyBoYXZlIG1vcmUgZXhwbGlj
aXQgcmVzb2x2ZWQvdW5yZXNvbHZlZCBzdGF0ZS4KKyAgICAgICAgLSBSZW5kZXJTdHlsZSBvbmx5
IGV2ZXIgaG9sZHMgcmVzb2x2ZWQgY3VzdG9tIHByb3BlcnRpZXMsIGFuZCBTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXMgb25seSBob2xkcyB1bnJlc29sdmVkIHByb3BlcnRpZXMuCisK
KyAgICAgICAgVGVzdHM6IGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbAorICAg
ICAgICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbAorICAgICAg
ICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6
cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRSZXNvbHZlZFR5cGVkVmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAgICog
Y3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSk6
CisgICAgICAgICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOgorICAgICAgICAq
IGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVE
YXRhOjpDU1NWYXJpYWJsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRh
Ojpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
c1dpdGhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJs
ZURhdGE6OnJlc29sdmVWYXJpYWJsZUZhbGxiYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBjc3MvQ1NTVmFyaWFibGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZVJl
c29sdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6bmVl
ZHNWYXJpYWJsZVJlc29sdXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFyaWFibGVEYXRhOjpDU1NWYXJpYWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGNz
cy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29s
dmVWYXJpYWJsZUZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlVG9rZW5SYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZl
cmVuY2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBj
c3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlOjp2YXJpYWJsZURhdGFWYWx1ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0
eSk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZl
cnJlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5j
ZXMpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3Rv
bVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25W
YWx1ZSk6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjp2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZVBpeGVsTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGE6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIw
MTgtMTAtMjkgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmVydCByMjM3MzQ3IHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnRpZXMuLi4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDAzOQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBjNzc2
NDhlZTFkODM0OWZiMzZiMTA3MTU0NWMzODFmYTczMjcwOWM4Li4wNzQ5ZDlhNGQ2ODExNTZjZTY2
OTcyOWQ5MWQ4MGIzM2JhYjYxOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjYxMiwyMSArMjYxMiwyMyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3RvbVByb3BlcnR5VmFsdWUo
Y29uc3QgU3RyaW5nJiBwcm9wZQogICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSBzdHlsZWRFbGVtZW50
LT5kb2N1bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLmdldChwcm9w
ZXJ0eU5hbWUpOwogICAgIGF1dG8qIHZhbHVlID0gc3R5bGUtPmdldEN1c3RvbVByb3BlcnR5KHBy
b3BlcnR5TmFtZSk7CiAKLSAgICBpZiAocmVnaXN0ZXJlZCkgewotICAgICAgICAvLyBUT0RPIHRo
aXMgc2hvdWxkIGJlIGRvbmUgYmFzZWQgb24gdGhlIHN5bnRheAotICAgICAgICBpZiAodmFsdWUg
JiYgdmFsdWUtPnJlc29sdmVkVHlwZWRWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoKnZhbHVlLT5yZXNvbHZlZFR5cGVkVmFsdWUoKSwg
KnN0eWxlKTsKLQotICAgICAgICBpZiAocmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkgJiYgcmVn
aXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCktPnJlc29sdmVkVHlwZWRWYWx1ZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoKnJlZ2lzdGVyZWQtPmlu
aXRpYWxWYWx1ZSgpLT5yZXNvbHZlZFR5cGVkVmFsdWUoKSwgKnN0eWxlKTsKKyAgICBpZiAocmVn
aXN0ZXJlZCAmJiAhdmFsdWUpCisgICAgICAgIHJldHVybiByZWdpc3RlcmVkLT5pbml0aWFsVmFs
dWVDb3B5KCk7CiAKKyAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9CiAKLSAgICBpZiAodmFsdWUpCisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRv
cihbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JikgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFJlZlB0cjxDU1NWYWx1ZT4oKTsK
KyAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYpIHsKICAgICAgICAgcmV0dXJuIENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgqdmFsdWUpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZURhdGE+JikgeworICAgICAgICByZXR1cm4g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCp2YWx1ZSk7CisgICAgfSwgWyZdKGNvbnN0
IExlbmd0aCYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVG
b3JMZW5ndGgodmFsdWUsICpzdHlsZSk7CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlzaXQo
dmlzaXRvciwgdmFsdWUtPnZhbHVlKCkpOwogfQogCiBTdHJpbmcgQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6Y3VzdG9tUHJvcGVydHlUZXh0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCmluZGV4IDdjMTZl
ODQxZGVhZmVlMmUyMTkyNThlYzQ5NWI3ODBmNDE2NTI2MzguLmU2OTY2ZmY5YmRjMTQ0MjZhOGM4
OTk4MDhkMzQ3ZmFhOGMyZTFkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZS5jcHAKQEAgLTI3LDgwICsyNyw2MyBAQAogI2luY2x1ZGUgIkNTU0N1c3Rv
bVByb3BlcnR5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKIAotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2Jvb2wgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6ZXF1YWxzKGNvbnN0
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChtX25hbWUg
IT0gb3RoZXIubV9uYW1lIHx8IG1fdmFsdWUuaW5kZXgoKSAhPSBvdGhlci5tX3ZhbHVlLmluZGV4
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VW
aXNpdG9yKFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mIHZhbHVlKSB7
CisgICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZT4+KG90aGVyLm1fdmFsdWUpLmdldCgpOworICAgIH0sIFsmXShjb25zdCBD
U1NWYWx1ZUlEJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgPT0gV1RGOjpnZXQ8Q1NT
VmFsdWVJRD4ob3RoZXIubV92YWx1ZSk7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJs
ZURhdGE+JiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCkgPT0gV1RGOjpnZXQ8
UmVmPENTU1ZhcmlhYmxlRGF0YT4+KG90aGVyLm1fdmFsdWUpLmdldCgpOworICAgIH0sIFsmXShj
b25zdCBMZW5ndGgmIHZhbHVlKSB7CisgICAgICAgIHJldHVybiB2YWx1ZSA9PSBXVEY6OmdldDxM
ZW5ndGg+KG90aGVyLm1fdmFsdWUpOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZp
c2l0b3IsIG1fdmFsdWUpOworfQorCiBTdHJpbmcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3Vz
dG9tQ1NTVGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlcmlhbGl6ZWQpIHsKICAgICAgICAg
bV9zZXJpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgaWYgKG1fcmVzb2x2ZWRUeXBlZFZhbHVlKSAv
LyBGSVhNRTogVW5pdCBzaG91bGQgYmUgYmFzZWQgb24gc3ludGF4LgotICAgICAgICAgICAgbV9z
dHJpbmdWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV9yZXNvbHZlZFR5cGVkVmFs
dWUtPnZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpLT5jc3NUZXh0KCk7Ci0gICAg
ICAgIGVsc2UgaWYgKG1fdmFsdWUpCi0gICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gbV92YWx1
ZS0+dG9rZW5SYW5nZSgpLnNlcmlhbGl6ZSgpOwotICAgICAgICBlbHNlIGlmIChtX3ZhbHVlSWQg
IT0gQ1NTVmFsdWVJbnZhbGlkKQotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGdldFZhbHVl
TmFtZShtX3ZhbHVlSWQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N0cmluZ1ZhbHVl
ID0gZW1wdHlTdHJpbmcoKTsKKworICAgICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNp
dG9yKFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mIHZhbHVlKSB7Cisg
ICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gdmFsdWUtPmNzc1RleHQoKTsKKyAgICAgICAgfSwg
WyZdKGNvbnN0IENTU1ZhbHVlSUQmIHZhbHVlKSB7CisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVl
ID0gZ2V0VmFsdWVOYW1lKHZhbHVlKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJp
YWJsZURhdGE+JiB2YWx1ZSkgeworICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IHZhbHVlLT50
b2tlblJhbmdlKCkuc2VyaWFsaXplKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZh
bHVlKSB7CisgICAgICAgICAgICBtX3N0cmluZ1ZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZSh2YWx1ZS52YWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y3NzVGV4dCgp
OworICAgICAgICB9KTsKKyAgICAgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3ZhbHVlKTsKICAg
ICB9CiAgICAgcmV0dXJuIG1fc3RyaW5nVmFsdWU7CiB9CiAKLVZlY3RvcjxDU1NQYXJzZXJUb2tl
bj4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6dG9rZW5zKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkgY29uc3QKK1ZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZTo6dG9rZW5zKCkgY29uc3QKIHsKLSAgICBpZiAobV9yZXNvbHZlZFR5cGVkVmFsdWUpIHsKLSAg
ICAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXN1bHQ7CisgICAgVmVjdG9yPENTU1BhcnNl
clRva2VuPiByZXN1bHQ7CisKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsm
XShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0sIFsmXShjb25zdCBDU1NWYWx1ZUlEJikgeworICAgICAg
ICAvLyBEbyBub3RoaW5nCisgICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZURhdGE+JiB2
YWx1ZSkgeworICAgICAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHZhbHVlLT50b2tlbnMoKSk7Cisg
ICAgfSwgWyZdKGNvbnN0IExlbmd0aCYpIHsKICAgICAgICAgQ1NTVG9rZW5pemVyIHRva2VuaXpl
cihjc3NUZXh0KCkpOwogCiAgICAgICAgIGF1dG8gdG9rZW5pemVyUmFuZ2UgPSB0b2tlbml6ZXIu
dG9rZW5SYW5nZSgpOwogICAgICAgICB3aGlsZSAoIXRva2VuaXplclJhbmdlLmF0RW5kKCkpCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHRva2VuaXplclJhbmdlLmNvbnN1bWUoKSk7CisgICAg
fSk7CisgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3ZhbHVlKTsKIAotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0KLQotICAgIGlmICghbV92YWx1ZSkKLSAgICAgICAgcmV0dXJuIHsgfTsK
LQotICAgIGlmIChtX2NvbnRhaW5zVmFyaWFibGVzKSB7Ci0gICAgICAgIFZlY3RvcjxDU1NQYXJz
ZXJUb2tlbj4gcmVzdWx0OwotICAgICAgICAvLyBGSVhNRTogQXZvaWQgZG9pbmcgdGhpcyB3b3Jr
IG1vcmUgdGhhbiBvbmNlLgotICAgICAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiByZXNvbHZl
ZERhdGEgPSBtX3ZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lzdGVyZWRQcm9w
ZXJ0aWVzLCBzdHlsZSk7Ci0gICAgICAgIGlmIChyZXNvbHZlZERhdGEpCi0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kVmVjdG9yKHJlc29sdmVkRGF0YS0+dG9rZW5zKCkpOwotCi0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fdmFsdWUtPnRva2VucygpOwotfQot
Ci1ib29sIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBIYXNoU2V0
PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGlu
dmFsaWRQcm9wZXJ0aWVzKSBjb25zdAotewotICAgIEFTU0VSVChjb250YWluc1ZhcmlhYmxlcygp
KTsKLSAgICBpZiAobV92YWx1ZSkKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmNoZWNrVmFyaWFi
bGVzRm9yQ3ljbGVzKG5hbWUsIHN0eWxlLCBzZWVuUHJvcGVydGllcywgaW52YWxpZFByb3BlcnRp
ZXMpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6
OnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgVmVjdG9yPFJlZjxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPj4mIHJlc29sdmVkVmFsdWVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUKGNvbnRhaW5zVmFyaWFibGVzKCkpOwotICAgIGlmICghbV92YWx1ZSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEFTU0VSVChtX3ZhbHVlLT5uZWVkc1ZhcmlhYmxl
UmVzb2x1dGlvbigpKTsKLSAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiByZXNvbHZlZERhdGEg
PSBtX3ZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHJlZ2lzdGVyZWRQcm9wZXJ0aWVz
LCBzdHlsZSk7Ci0gICAgaWYgKHJlc29sdmVkRGF0YSkKLSAgICAgICAgcmVzb2x2ZWRWYWx1ZXMu
YXBwZW5kKENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhWYXJpYWJsZURhdGEobV9u
YW1lLCByZXNvbHZlZERhdGEucmVsZWFzZU5vbk51bGwoKSkpOwotICAgIGVsc2UKLSAgICAgICAg
cmVzb2x2ZWRWYWx1ZXMuYXBwZW5kKENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJ
RChtX25hbWUsIENTU1ZhbHVlSW52YWxpZCkpOwotfQotCi12b2lkIENTU0N1c3RvbVByb3BlcnR5
VmFsdWU6OnNldFJlc29sdmVkVHlwZWRWYWx1ZShMZW5ndGggbGVuZ3RoKQotewotICAgIEFTU0VS
VChsZW5ndGguaXNTcGVjaWZpZWQoKSk7Ci0gICAgbV9yZXNvbHZlZFR5cGVkVmFsdWUgPSBXVEZN
b3ZlKGxlbmd0aCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgKaW5kZXggYmIwOTIxNDVkZTUxZmI2ZTZiMzlk
OTk1NGQzNjQ5MmRiY2NkNmY1NS4uNjI1ZTE5NTExZTJkZGFkYmFkNDdjNjkxNzMzOWQ0OTk3MTE4
ZjQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oCkBA
IC0yNywzMSArMjcsNDYgQEAKIAogI2luY2x1ZGUgIkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCi0jaW5jbHVkZSAiQ1NTVmFyaWFibGVEYXRhLmgi
CisjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIgogI2luY2x1ZGUgIkxlbmd0
aC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENTU1BhcnNlclRva2VuOworY2xhc3MgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTsK
IGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlIGZpbmFs
IDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhWYXJpYWJsZURhdGEoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIHZhbHVlKQorICAgIHVzaW5nIFZhcmlhbnRWYWx1
ZSA9IFZhcmlhbnQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+LCBDU1NWYWx1ZUlELCBS
ZWY8Q1NTVmFyaWFibGVEYXRhPiwgTGVuZ3RoPjsKKworICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4gY3JlYXRlVW5yZXNvbHZlZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3Zl
KHZhbHVlKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkpOwogICAgIH0KLSAgICAKLSAgICBzdGF0
aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhJRChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgdmFsdWUpCisKKyAgICBzdGF0aWMgUmVmPENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+IGNyZWF0ZVVucmVzb2x2ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBDU1NWYWx1ZUlEIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB2YWx1ZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgdmFsdWUgfSkpOworICAg
IH0KKworICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlV2l0aElE
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJRCBpZCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChpZCA9PSBDU1NWYWx1ZUluaGVyaXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8
IGlkID09IENTU1ZhbHVlVW5zZXQgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NT
VmFsdWVJbnZhbGlkKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZShuYW1lLCB7IGlkIH0pKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVmPENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVN5bnRheEFsbChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1
ZSkgfSkpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IGNyZWF0ZUludmFsaWQoKQorICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1
ZT4gY3JlYXRlU3ludGF4TGVuZ3RoKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgTGVuZ3RoIHZh
bHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZShlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgeyBXVEZNb3ZlKHZhbHVl
KSB9KSk7CiAgICAgfQogCiAgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBj
cmVhdGUoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpCkBAIC02Miw3MCArNzcs
NDkgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICAK
LSAgICBib29sIGVxdWFscyhjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9uYW1lID09IG90aGVyLm1fbmFtZSAmJiBtX3ZhbHVlID09IG90aGVyLm1f
dmFsdWUgJiYgbV92YWx1ZUlkID09IG90aGVyLm1fdmFsdWVJZDsgfQotCi0gICAgYm9vbCBjb250
YWluc1ZhcmlhYmxlcygpIGNvbnN0IHsgQVNTRVJUKCFtX2NvbnRhaW5zVmFyaWFibGVzIHx8ICFt
X3Jlc29sdmVkVHlwZWRWYWx1ZSk7IHJldHVybiBtX2NvbnRhaW5zVmFyaWFibGVzOyB9Ci0gICAg
Ym9vbCBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNv
bnN0IFJlbmRlclN0eWxlJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywg
SGFzaFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3Q7Ci0KLSAgICB2
b2lkIHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5U2V0JiwgVmVjdG9yPFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPj4mLCBjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0ICB7IHJldHVy
biAhV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+
KG1fdmFsdWUpOyB9CisgICAgYm9vbCBpc1Vuc2V0KCkgY29uc3QgIHsgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJ
RD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVVbnNldDsgfQorICAgIGJvb2wgaXNJbnZhbGlkKCkgY29u
c3QgIHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkg
JiYgV1RGOjpnZXQ8Q1NTVmFsdWVJRD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVJbnZhbGlkOyB9CiAK
LSAgICBDU1NWYWx1ZUlEIHZhbHVlSUQoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlSWQ7IH0KLSAg
ICBDU1NWYXJpYWJsZURhdGEqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsg
fQotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zKGNvbnN0IENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CisgICAgY29uc3Qg
VmFyaWFudFZhbHVlJiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAotICAgIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiYgcmVzb2x2ZWRUeXBlZFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvbHZlZFR5cGVkVmFsdWU7IH0KLSAgICB2b2lkIHNldFJlc29sdmVkVHlwZWRW
YWx1ZShMZW5ndGgpOworICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zKCkgY29uc3Q7
CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNv
bnN0OwogCiBwcml2YXRlOgotICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNlcmlhbGl6ZWRWYWx1ZSkKLSAgICAgICAgOiBD
U1NWYWx1ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAg
ICAgICAsIG1fc3RyaW5nVmFsdWUoc2VyaWFsaXplZFZhbHVlKQotICAgICAgICAsIG1fc2VyaWFs
aXplZCh0cnVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJRCBpZCkKLSAgICAgICAgOiBDU1NWYWx1
ZShDdXN0b21Qcm9wZXJ0eUNsYXNzKQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAs
IG1fdmFsdWVJZChpZCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpZCA9PSBDU1NWYWx1ZUluaGVy
aXQgfHwgaWQgPT0gQ1NTVmFsdWVJbml0aWFsIHx8IGlkID09IENTU1ZhbHVlVW5zZXQgfHwgaWQg
PT0gQ1NTVmFsdWVSZXZlcnQgfHwgaWQgPT0gQ1NTVmFsdWVJbnZhbGlkKTsKLSAgICB9Ci0gICAg
Ci0gICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJl
ZjxDU1NWYXJpYWJsZURhdGE+JiYgdmFsdWUpCisgICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZhcmlhbnRWYWx1ZSYmIHZhbHVlKQogICAgICAgICA6
IENTU1ZhbHVlKEN1c3RvbVByb3BlcnR5Q2xhc3MpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAg
ICAgICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKLSAgICAgICAgLCBtX3ZhbHVlSWQoQ1NT
VmFsdWVJbnRlcm5hbFZhcmlhYmxlVmFsdWUpCi0gICAgICAgICwgbV9jb250YWluc1ZhcmlhYmxl
cyhtX3ZhbHVlLT5uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbigpKQorICAgICAgICAsIG1fc2VyaWFs
aXplZChmYWxzZSkKICAgICB7CiAgICAgfQogCiAgICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShj
b25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBvdGhlcikKICAgICAgICAgOiBDU1NWYWx1ZShD
dXN0b21Qcm9wZXJ0eUNsYXNzKQogICAgICAgICAsIG1fbmFtZShvdGhlci5tX25hbWUpCi0gICAg
ICAgICwgbV92YWx1ZShvdGhlci5tX3ZhbHVlLmNvcHlSZWYoKSkKLSAgICAgICAgLCBtX3ZhbHVl
SWQob3RoZXIubV92YWx1ZUlkKQorICAgICAgICAsIG1fdmFsdWUoQ1NTVmFsdWVVbnNldCkKICAg
ICAgICAgLCBtX3N0cmluZ1ZhbHVlKG90aGVyLm1fc3RyaW5nVmFsdWUpCi0gICAgICAgICwgbV9j
b250YWluc1ZhcmlhYmxlcyhvdGhlci5tX2NvbnRhaW5zVmFyaWFibGVzKQogICAgICAgICAsIG1f
c2VyaWFsaXplZChvdGhlci5tX3NlcmlhbGl6ZWQpCi0gICAgICAgICwgbV9yZXNvbHZlZFR5cGVk
VmFsdWUob3RoZXIubV9yZXNvbHZlZFR5cGVkVmFsdWUpCiAgICAgeworICAgICAgICAvLyBObyBj
b3B5IGNvbnN0cnVjdG9yIGZvciBSZWY8Q1NTVmFyaWFibGVEYXRhPiwgc28gd2UgaGF2ZSB0byBk
byB0aGlzIG91cnNlbHZlcworICAgICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9y
KFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mIHZhbHVlKSB7CisgICAg
ICAgICAgICBtX3ZhbHVlID0gdmFsdWUuY29weVJlZigpOworICAgICAgICB9LCBbJl0oY29uc3Qg
Q1NTVmFsdWVJRCYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKKyAgICAg
ICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZURhdGE+JiB2YWx1ZSkgeworICAgICAgICAg
ICAgbV92YWx1ZSA9IHZhbHVlLmNvcHlSZWYoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IExlbmd0
aCYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgb3RoZXIubV92YWx1ZSk7CiAgICAgfQogICAgIAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX25hbWU7Ci0gICAgCi0gICAgUmVmUHRyPENTU1Zhcmlh
YmxlRGF0YT4gbV92YWx1ZTsKLSAgICBDU1NWYWx1ZUlEIG1fdmFsdWVJZCB7IENTU1ZhbHVlSW52
YWxpZCB9OworICAgIFZhcmlhbnRWYWx1ZSBtX3ZhbHVlOwogICAgIAogICAgIG11dGFibGUgU3Ry
aW5nIG1fc3RyaW5nVmFsdWU7Ci0gICAgYm9vbCBtX2NvbnRhaW5zVmFyaWFibGVzIHsgZmFsc2Ug
fTsKICAgICBtdXRhYmxlIGJvb2wgbV9zZXJpYWxpemVkIHsgZmFsc2UgfTsKLQotICAgIC8vIEZJ
WE1FOiBJdCBzaG91bGQgbm90IGJlIHBvc3NpYmxlIHRvIGV4cHJlc3MgYW4gaW52YWxpZCBzdGF0
ZSwgc3VjaCBhcyBjb250YWluc1ZhcmlhYmxlcygpICYmIHJlc29sdmVkVHlwZWRWYWx1ZSgpLgot
ICAgIHN0ZDo6b3B0aW9uYWw8TGVuZ3RoPiBtX3Jlc29sdmVkVHlwZWRWYWx1ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lz
dGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggM2VhN2I5MmMwMDk5NzMwOTZhMDNlOTVlOWU2
YTI2NzU0YTVjYTg4YS4uNzllZjdmZTZiMDNjZDZjZmY3ZmI5ZWE4MTliMTYwNzZkZTQ1NThkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0
eS5jcHAKQEAgLTMwLDggKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBT
dHJpbmcmIG5hbWUsIGJvb2wgaW5oZXJpdHMsIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PiYmIGluaXRpYWxWYWx1ZSkKK0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eTo6Q1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50
YXgsIGJvb2wgaW5oZXJpdHMsIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIGluaXRp
YWxWYWx1ZSkKICAgICA6IG5hbWUobmFtZSkKKyAgICAsIHN5bnRheChzeW50YXgpCiAgICAgLCBp
bmhlcml0cyhpbmhlcml0cykKICAgICAsIG1faW5pdGlhbFZhbHVlKFdURk1vdmUoaW5pdGlhbFZh
bHVlKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJv
cGVydHkuaAppbmRleCAzNDI3ZWFhM2MzYWI3NDdjMDUxODVmMzkzNWI2YjViMmQyNmFlZTNhLi5k
ZmNmMGJkYzM5ZWQ1NDBjM2QxZGFhNGMwNWE2NGMwZjU5MTUzOTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oCkBAIC0zMywxMCArMzMs
MTAgQEAgY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTsKIAogc3RydWN0IENTU1JlZ2lzdGVy
ZWRDdXN0b21Qcm9wZXJ0eSB7CiAgICAgY29uc3QgU3RyaW5nIG5hbWU7Ci0gICAgLyogVE9ETyBz
eW50YXggKi8KKyAgICBjb25zdCBTdHJpbmcgc3ludGF4OwogICAgIGNvbnN0IGJvb2wgaW5oZXJp
dHM7CiAKLSAgICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFs
VmFsdWUpOworICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZT4mJiBpbml0aWFsVmFsdWUpOwogCiAgICAgY29uc3QgQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZSogaW5pdGlhbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsVmFsdWUu
Z2V0KCk7IH0KICAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gaW5pdGlhbFZhbHVl
Q29weSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmNwcAppbmRleCA5
ODk5MzUzMTc1OWM4YzkzZjc3NTdlMzE5ODliMWQ2MDk4MTIwYzUyLi42MDRjYTE4MzQzNGI2NTg2
NzRkM2Q4YzA3MjlhNDExMDkxNThkOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFyaWFibGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVE
YXRhLmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIENTU1ZhcmlhYmxlRGF0YTo6b3BlcmF0b3I9
PShjb25zdCBDU1NWYXJpYWJsZURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0b2tlbnMo
KSA9PSBvdGhlci50b2tlbnMoKTsKIH0KIAotdm9pZCBDU1NWYXJpYWJsZURhdGE6OmNvbnN1bWVB
bmRVcGRhdGVUb2tlbnMoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCitDU1NWYXJp
YWJsZURhdGE6OkNTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSBsb2NhbFJhbmdlID0gcmFuZ2U7CkBAIC03NywxMDkgKzc3LDQgQEAgdm9pZCBDU1NW
YXJpYWJsZURhdGE6OmNvbnN1bWVBbmRVcGRhdGVUb2tlbnMoY29uc3QgQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCiAgICAgICAgIHVwZGF0ZVRva2VuczxVQ2hhcj4ocmFuZ2UpOwogfQogCi1D
U1NWYXJpYWJsZURhdGE6OkNTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbikKLSAgICA6IG1fbmVlZHNWYXJp
YWJsZVJlc29sdXRpb24obmVlZHNWYXJpYWJsZVJlc29sdXRpb24pCi17Ci0gICAgY29uc3VtZUFu
ZFVwZGF0ZVRva2VucyhyYW5nZSk7Ci19Ci0KLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpjaGVja1Zh
cmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNl
dDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKLXsKLSAgICBpZiAoaW52
YWxpZFByb3BlcnRpZXMuY29udGFpbnMobmFtZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gbmV3U2VlblByb3BlcnRpZXMgPSBzZWVuUHJv
cGVydGllczsKLSAgICBuZXdTZWVuUHJvcGVydGllcy5hZGQobmFtZSk7Ci0gICAgCi0gICAgYm9v
bCB2YWxpZCA9IGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzV2l0aFJhbmdlKG1fdG9rZW5zLCBzdHls
ZSwgbmV3U2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKLSAgICBpZiAoIXZhbGlk
KQotICAgICAgICBpbnZhbGlkUHJvcGVydGllcy5hZGQobmFtZSk7Ci0gICAgCi0gICAgcmV0dXJu
IHZhbGlkOwotfQotICAgIAotYm9vbCBDU1NWYXJpYWJsZURhdGE6OmNoZWNrVmFyaWFibGVzRm9y
Q3ljbGVzV2l0aFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNl
dDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3QKLXsKLSAgICB3aGlsZSAo
IXJhbmdlLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkg
PT0gQ1NTVmFsdWVWYXIgfHwgcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUVu
dikgewotICAgICAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBibG9jayA9IHJhbmdlLmNvbnN1
bWVCbG9jaygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBibG9jay5jb25zdW1lV2hpdGVz
cGFjZSgpOwotICAgICAgICAgICAgQVNTRVJUKGJsb2NrLnBlZWsoKS50eXBlKCkgPT0gSWRlbnRU
b2tlbik7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgdmFyaWFibGVOYW1lID0gYmxvY2suY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7Ci0gICAg
ICAgICAgICBBU1NFUlQoYmxvY2suYXRFbmQoKSB8fCBibG9jay5wZWVrKCkudHlwZSgpID09IENv
bW1hVG9rZW4pOwotICAgICAgICAgICAgaWYgKHNlZW5Qcm9wZXJ0aWVzLmNvbnRhaW5zKHZhcmlh
YmxlTmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBh
dXRvKiB2YWx1ZSA9IHN0eWxlLmdldEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFtZSk7Ci0gICAg
ICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmNvbnRhaW5zVmFyaWFibGVzKCkgJiYgIXZhbHVl
LT5jaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyh2YXJpYWJsZU5hbWUsIHN0eWxlLCBzZWVuUHJvcGVy
dGllcywgaW52YWxpZFByb3BlcnRpZXMpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbikgewot
ICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrLgotICAgICAgICAgICAgICAgIHJhbmdlLmNvbnN1
bWUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tWYXJpYWJsZXNGb3JDeWNsZXNXaXRo
UmFuZ2UoYmxvY2ssIHN0eWxlLCBzZWVuUHJvcGVydGllcywgaW52YWxpZFByb3BlcnRpZXMpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJhbmdlLmNvbnN1bWUo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpy
ZXNvbHZlVmFyaWFibGVGYWxsYmFjayhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29u
c3QKLXsKLSAgICBpZiAocmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IEFTU0VSVChyYW5nZS5wZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW4pOwotICAgIHJhbmdlLmNv
bnN1bWUoKTsKLSAgICByZXR1cm4gcmVzb2x2ZVRva2VuUmFuZ2UocmVnaXN0ZXJlZFByb3BlcnRp
ZXMsIHJhbmdlLCByZXN1bHQsIHN0eWxlKTsKLX0KLQotYm9vbCBDU1NWYXJpYWJsZURhdGE6OnJl
c29sdmVWYXJpYWJsZVJlZmVyZW5jZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29u
c3QKLXsKLSAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwotICAgIEFTU0VSVChyYW5nZS5w
ZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pOwotICAgIEF0b21pY1N0cmluZyB2YXJpYWJsZU5h
bWUgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCkudG9BdG9taWNT
dHJpbmcoKTsKLSAgICBBU1NFUlQocmFuZ2UuYXRFbmQoKSB8fCAocmFuZ2UucGVlaygpLnR5cGUo
KSA9PSBDb21tYVRva2VuKSk7Ci0gICAgCi0gICAgYXV0byogcHJvcGVydHkgPSBzdHlsZS5nZXRD
dXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5hbWUpOwotICAgIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0
eS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCkpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcihw
cm9wZXJ0eS0+dG9rZW5zKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBzdHlsZSkpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoIXByb3BlcnR5IHx8ICFwcm9wZXJ0eS0+dmFs
dWUoKSkgewotICAgICAgICBhdXRvKiByZWdpc3RlcmVkID0gcmVnaXN0ZXJlZFByb3BlcnRpZXMu
Z2V0KHZhcmlhYmxlTmFtZSk7Ci0gICAgICAgIGlmIChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQt
PmluaXRpYWxWYWx1ZSgpKQotICAgICAgICAgICAgcHJvcGVydHkgPSByZWdpc3RlcmVkLT5pbml0
aWFsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVWYXJp
YWJsZUZhbGxiYWNrKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwgcmVzdWx0LCBzdHlsZSk7
Ci0gICAgfQotICAgIEFTU0VSVChwcm9wZXJ0eSk7Ci0gICAgcmVzdWx0LmFwcGVuZFZlY3Rvcihw
cm9wZXJ0eS0+dG9rZW5zKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBzdHlsZSkpOwotICAgIAotICAg
IHJldHVybiB0cnVlOwotfQotCi1SZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBDU1NWYXJpYWJsZURh
dGE6OnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KSBjb25zdAotewotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Ci0g
ICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSA9IG1fdG9rZW5zOwotICAgIGlmICghcmVzb2x2
ZVRva2VuUmFuZ2UocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHJhbmdlLCByZXNvbHZlZFRva2Vucywg
c3R5bGUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gQ1NTVmFyaWFibGVE
YXRhOjpjcmVhdGVSZXNvbHZlZChyZXNvbHZlZFRva2VucywgKnRoaXMpOwotfQotICAgIAotYm9v
bCBDU1NWYXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlKGNvbnN0IENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3BlcnRpZXMsIENTU1BhcnNlclRva2VuUmFu
Z2UgcmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJlc3VsdCwgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKSBjb25zdAotewotICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgd2hpbGUg
KCFyYW5nZS5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgp
ID09IENTU1ZhbHVlVmFyIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVF
bnYpCi0gICAgICAgICAgICBzdWNjZXNzICY9IHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZShyZWdp
c3RlcmVkUHJvcGVydGllcywgcmFuZ2UuY29uc3VtZUJsb2NrKCksIHJlc3VsdCwgc3R5bGUpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJhbmdlLmNvbnN1bWUoKSk7
Ci0gICAgfQotICAgIHJldHVybiBzdWNjZXNzOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgKaW5kZXggMDA4YTZmYTQyMzA3NzA0OTkz
MzE3MDdhNzRjN2Q2Y2Q2ZDIyNzJlMS4uMzk2ZTA2OWI5YzQ2NTJjOGU4N2Y3Y2FkODI5OTAzOWVj
MGNlZDE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaApAQCAtNDMsMTQgKzQz
LDkgQEAgY2xhc3MgQ1NTVmFyaWFibGVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTVmFyaWFi
bGVEYXRhPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTVmFyaWFibGVEYXRhKTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1Zh
cmlhYmxlRGF0YT4gY3JlYXRlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBib29s
IG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uID0gdHJ1ZSkKKyAgICBzdGF0aWMgUmVmPENTU1Zhcmlh
YmxlRGF0YT4gY3JlYXRlKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVEYXRhKHJhbmdlLCBuZWVk
c1ZhcmlhYmxlUmVzb2x1dGlvbikpOwotICAgIH0KLQotICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiBjcmVhdGVSZXNvbHZlZChjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNv
bHZlZFRva2VucywgY29uc3QgQ1NTVmFyaWFibGVEYXRhJiB1bnJlc29sdmVkRGF0YSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyZXNvbHZlZFRv
a2VucywgdW5yZXNvbHZlZERhdGEubV9iYWNraW5nU3RyaW5nKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyYW5nZSkpOwogICAgIH0KIAogICAgIENTU1Bh
cnNlclRva2VuUmFuZ2UgdG9rZW5SYW5nZSgpIHsgcmV0dXJuIG1fdG9rZW5zOyB9CkBAIC01OSwz
NiArNTQsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1Zhcmlh
YmxlRGF0YSYgb3RoZXIpIGNvbnN0OwogCi0gICAgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNWYXJpYWJsZVJlc29sdXRpb247IH0KLQotICAgIGJv
b2wgY2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25z
dCBSZW5kZXJTdHlsZSYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhh
c2hTZXQ8QXRvbWljU3RyaW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwotCi0gICAgUmVm
UHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhjb25zdCBDU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0Owot
ICAgIGJvb2wgcmVzb2x2ZVRva2VuUmFuZ2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3Bl
cnR5U2V0JiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYsIGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3Q7Ci0KIHByaXZhdGU6Ci0gICAgQ1NTVmFyaWFibGVEYXRh
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBib29sIG5lZWRzVmFyaWFibGVSZXNvbHV0aW9u
KTsKLQotICAgIC8vIFdlIGNhbiBzYWZlbHkgY29weSB0aGUgdG9rZW5zICh3aGljaCBoYXZlIHJh
dyBwb2ludGVycyB0byBzdWJzdHJpbmdzKSBiZWNhdXNlCi0gICAgLy8gU3R5bGVQcm9wZXJ0eVNl
dHMgY29udGFpbiByZWZlcmVuY2VzIHRvIENTU0N1c3RvbVByb3BlcnR5VmFsdWVzLCB3aGljaAot
ICAgIC8vIHBvaW50IHRvIHRoZSB1bnJlc29sdmVkIENTU1ZhcmlhYmxlRGF0YSB2YWx1ZXMgdGhh
dCBvd24gdGhlIGJhY2tpbmcgc3RyaW5ncwotICAgIC8vIHRoaXMgd2lsbCBwb3RlbnRpYWxseSBy
ZWZlcmVuY2UuCi0gICAgQ1NTVmFyaWFibGVEYXRhKGNvbnN0IFZlY3RvcjxDU1NQYXJzZXJUb2tl
bj4mIHJlc29sdmVkVG9rZW5zLCBTdHJpbmcgYmFja2luZ1N0cmluZykKLSAgICAgICAgOiBtX2Jh
Y2tpbmdTdHJpbmcoYmFja2luZ1N0cmluZykKLSAgICAgICAgLCBtX3Rva2VucyhyZXNvbHZlZFRv
a2VucykKLSAgICAgICAgLCBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uKGZhbHNlKQotICAgIHsg
fQotCi0gICAgdm9pZCBjb25zdW1lQW5kVXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmKTsKKyAgICBDU1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgdXBkYXRlVG9rZW5z
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKLSAgICAKLSAgICBib29sIGNoZWNrVmFyaWFi
bGVzRm9yQ3ljbGVzV2l0aFJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UsIGNvbnN0IFJlbmRlclN0
eWxlJiwgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9t
aWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVydGllcykgY29uc3Q7Ci0gICAgYm9vbCByZXNvbHZlVmFy
aWFibGVSZWZlcmVuY2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiwgQ1NT
UGFyc2VyVG9rZW5SYW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Q7Ci0gICAgYm9vbCByZXNvbHZlVmFyaWFibGVGYWxsYmFjayhjb25zdCBDU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmLCBDU1NQYXJzZXJUb2tlblJhbmdlLCBWZWN0b3I8
Q1NTUGFyc2VyVG9rZW4+JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIFN0cmlu
ZyBtX2JhY2tpbmdTdHJpbmc7CiAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiBtX3Rva2VuczsK
LSAgICBjb25zdCBib29sIG1fbmVlZHNWYXJpYWJsZVJlc29sdXRpb247CiAKICAgICAvLyBGSVhN
RS1ORVdQQVJTRVI6IFdlIHdhbnQgdG8gY2FjaGUgU3R5bGVQcm9wZXJ0aWVzIG9uY2Ugd2Ugc3Vw
cG9ydCBAYXBwbHkuCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWUuY3BwCmluZGV4IDM4OTU3ZTQwMzBjMjM4ZjRmNzc1NTJjZjI5M2U1MTEwYTc5
MTM5NjguLjc3YTUyM2U0ZDdkZGFkZjAzMGExMjQwNWRlN2ZjMmZjYzdhMTE0ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHAKQEAgLTMw
LDYgKzMwLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NWYXJpYWJsZVJl
ZmVyZW5jZVZhbHVlLmgiCiAKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlN0
eWxlUmVzb2x2ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgQ1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CkBAIC00MCwxMSArNDMsNzIg
QEAgU3RyaW5nIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25z
dAogICAgIH0KICAgICByZXR1cm4gbV9zdHJpbmdWYWx1ZTsKIH0KLSAgICAKLWJvb2wgQ1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgaW52YWxpZFByb3Bl
cnRpZXMpIGNvbnN0CisKK3N0YXRpYyBib29sIHJlc29sdmVUb2tlblJhbmdlKENTU1BhcnNlclRv
a2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBBcHBseUNhc2NhZGVkUHJvcGVydHlT
dGF0ZSYpOworCitzdGF0aWMgYm9vbCByZXNvbHZlVmFyaWFibGVGYWxsYmFjayhDU1NQYXJzZXJU
b2tlblJhbmdlIHJhbmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIEFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAocmFuZ2UuYXRFbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkudHlwZSgpID09IENv
bW1hVG9rZW4pOworICAgIHJhbmdlLmNvbnN1bWUoKTsKKyAgICByZXR1cm4gcmVzb2x2ZVRva2Vu
UmFuZ2UocmFuZ2UsIHJlc3VsdCwgc3RhdGUpOworfQorCitzdGF0aWMgYm9vbCByZXNvbHZlVmFy
aWFibGVSZWZlcmVuY2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNl
clRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCiB7Ci0g
ICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS0+Y2hlY2tWYXJpYWJsZXNGb3JD
eWNsZXMobmFtZSwgc3R5bGUsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7Cisg
ICAgYXV0byYgcmVnaXN0ZXJlZFByb3BlcnRpZXMgPSBzdGF0ZS5zdHlsZVJlc29sdmVyLT5kb2N1
bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpOworICAgIGF1dG8mIHN0
eWxlID0gKnN0YXRlLnN0eWxlUmVzb2x2ZXItPnN0eWxlKCk7CisKKyAgICByYW5nZS5jb25zdW1l
V2hpdGVzcGFjZSgpOworICAgIEFTU0VSVChyYW5nZS5wZWVrKCkudHlwZSgpID09IElkZW50VG9r
ZW4pOworICAgIFN0cmluZyB2YXJpYWJsZU5hbWUgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hp
dGVzcGFjZSgpLnZhbHVlKCkudG9TdHJpbmcoKTsKKyAgICBBU1NFUlQocmFuZ2UuYXRFbmQoKSB8
fCAocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKSk7CisKKyAgICAvLyBBcHBseSB0
aGlzIHZhcmlhYmxlIGZpcnN0LCBpbiBjYXNlIGl0IGlzIHN0aWxsIHVucmVzb2x2ZWQKKyAgICBz
dGF0ZS5zdHlsZVJlc29sdmVyLT5hcHBseUNhc2NhZGVkQ3VzdG9tUHJvcGVydHkodmFyaWFibGVO
YW1lLCBzdGF0ZSk7CisKKyAgICAvLyBBcHBseSBmYWxsYmFjayB0byBkZXRlY3QgY3ljbGVzCisg
ICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiBmYWxsYmFja1Jlc3VsdDsKKyAgICByZXNvbHZlVmFy
aWFibGVGYWxsYmFjayhDU1NQYXJzZXJUb2tlblJhbmdlKHJhbmdlKSwgZmFsbGJhY2tSZXN1bHQs
IHN0YXRlKTsKKworICAgIGF1dG8qIHByb3BlcnR5ID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVydHko
dmFyaWFibGVOYW1lKTsKKworICAgIGlmICghcHJvcGVydHkgfHwgcHJvcGVydHktPmlzVW5zZXQo
KSB8fCBwcm9wZXJ0eS0+aXNJbnZhbGlkKCkpIHsKKyAgICAgICAgYXV0byogcmVnaXN0ZXJlZCA9
IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldCh2YXJpYWJsZU5hbWUpOworICAgICAgICBpZiAocmVn
aXN0ZXJlZCAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUoKSkKKyAgICAgICAgICAgIHByb3Bl
cnR5ID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJldHVybiByZXNvbHZlVmFyaWFibGVGYWxsYmFjayhyYW5nZSwgcmVzdWx0LCBzdGF0ZSk7
CisgICAgfQorCisgICAgQVNTRVJUKHByb3BlcnR5LT5pc1Jlc29sdmVkKCkpOworICAgIHJlc3Vs
dC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRva2VucygpKTsKKworICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgYm9vbCByZXNvbHZlVG9rZW5SYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlIHJh
bmdlLCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0
eVN0YXRlJiBzdGF0ZSkKK3sKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIHdoaWxlICgh
cmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9
PSBDU1NWYWx1ZVZhciB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlRW52
KQorICAgICAgICAgICAgc3VjY2VzcyAmPSByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2UocmFuZ2Uu
Y29uc3VtZUJsb2NrKCksIHJlc3VsdCwgc3RhdGUpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHJhbmdlLmNvbnN1bWUoKSk7CisgICAgfQorICAgIHJldHVybiBzdWNj
ZXNzOworfQorCitSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiBDU1NWYXJpYWJsZVJlZmVyZW5jZVZh
bHVlOjpyZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRl
JiBzdGF0ZSkgY29uc3QKK3sKKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9r
ZW5zOworICAgIENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UgPSBtX2RhdGEtPnRva2VuUmFuZ2Uo
KTsKKworICAgIGlmICghcmVzb2x2ZVRva2VuUmFuZ2UocmFuZ2UsIHJlc29sdmVkVG9rZW5zLCBz
dGF0ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIENTU1ZhcmlhYmxl
RGF0YTo6Y3JlYXRlKHJlc29sdmVkVG9rZW5zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmgKaW5k
ZXggMjI4OTY0ZWQ3Njk0NDA1OTM5NWMxMGM2NGFlZjJjMDEwNmQ4MWY3Zi4uZDcwZTMyN2MxMDZk
ZGFhZTgyM2ZmOTliZmEyYTljYmJhOGI2MDY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oCkBAIC0yOSwyOCArMjksMzAgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNl
clRva2VuUmFuZ2UuaCIKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Zhcmlh
YmxlRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK3N0cnVjdCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZTsKK2NsYXNzIENTU1BhcnNl
clRva2VuUmFuZ2U7CisKIGNsYXNzIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUgOiBwdWJsaWMg
Q1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZT4gY3JlYXRlKFJlZjxDU1NWYXJpYWJsZURhdGE+JiYgZGF0YSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUoV1RGTW92ZShk
YXRhKSkpOwotICAgIH0KLQotICAgIENTU1ZhcmlhYmxlRGF0YSogdmFyaWFibGVEYXRhVmFsdWUo
KSBjb25zdAorICAgIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4gY3JlYXRl
KGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fZGF0YS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZShDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShyYW5nZSkpKTsKICAgICB9CiAK
LSAgICBib29sIGVxdWFscyhjb25zdCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9kYXRhID09IG90aGVyLm1fZGF0YTsgfQorICAgIGJvb2wgZXF1YWxz
KGNvbnN0IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOyB9CiAgICAgU3RyaW5nIGN1c3RvbUNT
U1RleHQoKSBjb25zdDsKIAotICAgIGJvb2wgY2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgaW52YWxpZFByb3Bl
cnRpZXMpIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IHJlc29sdmVWYXJpYWJs
ZVJlZmVyZW5jZXMoQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKFJlZjxDU1NWYXJpYWJsZURhdGE+JiYg
ZGF0YSkKQEAgLTU5LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVm
UHRyPENTU1ZhcmlhYmxlRGF0YT4gbV9kYXRhOworICAgIFJlZjxDU1NWYXJpYWJsZURhdGE+IG1f
ZGF0YTsKICAgICBtdXRhYmxlIFN0cmluZyBtX3N0cmluZ1ZhbHVlOwogICAgIG11dGFibGUgYm9v
bCBtX3NlcmlhbGl6ZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAppbmRleCAzNzMxOGRhNjU5OGZkMTE1
OTMwNjljYTIyMTU1ZmRiNjRiNTRkN2FkLi5iOGVmNmE5NTIxM2RlYTI1MDdkNWRmNzUxMWZhOTEz
ZjkyODIyOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJD
dXN0b21Qcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVy
Q3VzdG9tUHJvcGVydHkuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAKIAogI2luY2x1ZGUgIkNTU0N1
c3RvbVByb3BlcnR5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5j
bHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuaCIKICNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJET01DU1NO
YW1lc3BhY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlN0eWxlQnVpbGRl
ckNvbnZlcnRlci5oIgotI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsMjggKzQyLDMz
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHk6OnJlZ2lz
dGVyUHJvcGVydHkoRG9jdW1lbnQmIGRvY3VtCiB7CiAgICAgUmVmUHRyPENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+IGluaXRpYWxWYWx1ZTsKICAgICBpZiAoIWRlc2NyaXB0b3IuaW5pdGlhbFZhbHVl
LmlzRW1wdHkoKSkgewotICAgICAgICBpbml0aWFsVmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlOjpjcmVhdGVXaXRoVmFyaWFibGVEYXRhKGRlc2NyaXB0b3IubmFtZSwgQ1NTVmFyaWFibGVE
YXRhOjpjcmVhdGUoQ1NTUGFyc2VyVG9rZW5SYW5nZShWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+KCkp
LCBmYWxzZSkpOwotICAgICAgICBDU1NQYXJzZXIgcGFyc2VyKGRvY3VtZW50KTsKKyAgICAgICAg
Q1NTVG9rZW5pemVyIHRva2VuaXplcihkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZSk7CiAgICAgICAg
IFN0eWxlUmVzb2x2ZXIgc3R5bGVSZXNvbHZlcihkb2N1bWVudCk7CiAKLSAgICAgICAgYXV0byBw
cmltaXRpdmVWYWwgPSBwYXJzZXIucGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUN1c3RvbSwg
ZGVzY3JpcHRvci5pbml0aWFsVmFsdWUpOwotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbCB8fCAh
cHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIC8vIFdlIG5lZWQgdG8g
aW5pdGlhbGl6ZSB0aGlzIHNvIHRoYXQgd2UgY2FuIHN1Y2Nlc3NmdWxseSBwYXJzZSBjb21wdXRh
dGlvbmFsbHkgZGVwZW5kZW50IHZhbHVlcyAobGlrZSBlbSB1bml0cykuCisgICAgICAgIC8vIFdl
IGRvbid0IGFjdHVhbGx5IG5lZWQgdGhlIHZhbHVlcyB0byBiZSBhY2N1cmF0ZSwgc2luY2UgdGhl
eSB3aWxsIGJlIHJlamVjdGVkIGxhdGVyIGFueXdheQorICAgICAgICBzdHlsZVJlc29sdmVyLnN0
YXRlKCkuc2V0U3R5bGUoc3R5bGVSZXNvbHZlci5kZWZhdWx0U3R5bGVGb3JFbGVtZW50KCkpOwor
ICAgICAgICBzdHlsZVJlc29sdmVyLnVwZGF0ZUZvbnQoKTsKKworICAgICAgICBpbml0aWFsVmFs
dWUgPSBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoZGVz
Y3JpcHRvci5uYW1lLCBkZXNjcmlwdG9yLnN5bnRheCwgdG9rZW5pemVyLnRva2VuUmFuZ2UoKSwg
c3R5bGVSZXNvbHZlciwgc3RyaWN0Q1NTUGFyc2VyQ29udGV4dCgpKTsKKworICAgICAgICBpZiAo
IWluaXRpYWxWYWx1ZSB8fCAhaW5pdGlhbFZhbHVlLT5pc1Jlc29sdmVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1
ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4iIH07CiAKICAgICAgICAgSGFz
aFNldDxDU1NQcm9wZXJ0eUlEPiBkZXBlbmRlbmNpZXM7Ci0gICAgICAgIHByaW1pdGl2ZVZhbC0+
Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTsKLSAg
ICAgICAgcHJpbWl0aXZlVmFsLT5jb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRl
bmNpZXMoZGVwZW5kZW5jaWVzKTsKKyAgICAgICAgaW5pdGlhbFZhbHVlLT5jb2xsZWN0RGlyZWN0
Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOworICAgICAgICBpbml0aWFs
VmFsdWUtPmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRl
bmNpZXMpOwogCiAgICAgICAgIGlmICghZGVwZW5kZW5jaWVzLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciwgIlRoZSBnaXZlbiBpbml0aWFsIHZh
bHVlIG11c3QgYmUgY29tcHV0YXRpb25hbGx5IGluZGVwZW5kZW50LiIgfTsKLQotICAgICAgICBp
bml0aWFsVmFsdWUtPnNldFJlc29sdmVkVHlwZWRWYWx1ZShTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMZW5ndGgoc3R5bGVSZXNvbHZlciwgKnByaW1pdGl2ZVZhbCkpOwogICAgIH0KIAot
ICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSBwcm9wZXJ0eSB7IGRlc2NyaXB0b3IubmFt
ZSwgZGVzY3JpcHRvci5pbmhlcml0cywgV1RGTW92ZShpbml0aWFsVmFsdWUpIH07CisgICAgQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5IHByb3BlcnR5IHsgZGVzY3JpcHRvci5uYW1lLCBkZXNj
cmlwdG9yLnN5bnRheCwgZGVzY3JpcHRvci5pbmhlcml0cywgV1RGTW92ZShpbml0aWFsVmFsdWUp
IH07CiAgICAgaWYgKCFkb2N1bWVudC5yZWdpc3RlckNTU1Byb3BlcnR5KFdURk1vdmUocHJvcGVy
dHkpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJv
ciwgIlRoaXMgcHJvcGVydHkgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkLiIgfTsKIAorICAg
IGRvY3VtZW50LnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsK
KwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggZTI4YjM0YzBkOTFlNzc4NWE0
N2E3OGM4YmMxMzA5MDU2ZmZhMTE5Yy4uMzgzYWM4ZWU0ZjY2ZTUxOWE1NzljOWI2ZGJkNDg4ZDFm
ZGNkYzlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIyNiw2ICsyMjYsMTYgQEAgYm9vbCBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246OmlzUHJvcGVydHlJbXBsaWNpdChjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmEKIEV4Y2VwdGlvbk9yPHZvaWQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHkpCiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRh
dGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CisKKyAgICBpZiAoIXdpbGxNdXRhdGUoKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxwdHI7
CisKKyAgICBpZiAocGFyZW50RWxlbWVudCgpKQorICAgICAgICBkb2N1bWVudCA9ICZwYXJlbnRF
bGVtZW50KCktPmRvY3VtZW50KCk7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudCA9IHBhcmVu
dFN0eWxlU2hlZXQoKS0+b3duZXJEb2N1bWVudCgpOwogICAgIAogICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaXNDdXN0
b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKQEAgLTIzMywxNiArMjQzLDEzIEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHko
Y29uc3QgU3RyaW5nJiBwcm9wCiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgaWYgKCF3aWxsTXV0YXRlKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KICAg
ICBib29sIGltcG9ydGFudCA9IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocHJpb3JpdHksICJpbXBv
cnRhbnQiKTsKICAgICBpZiAoIWltcG9ydGFudCAmJiAhcHJpb3JpdHkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgYm9vbCBjaGFuZ2VkOwogICAgIGlmIChwcm9wZXJ0eUlE
ID09IENTU1Byb3BlcnR5Q3VzdG9tKQotICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+
c2V0Q3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJz
ZXJDb250ZXh0KCkpOworICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0Q3VzdG9t
UHJvcGVydHkoZG9jdW1lbnQsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFy
c2VyQ29udGV4dCgpKTsKICAgICBlbHNlCiAgICAgICAgIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0
LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJDb250
ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggMGM0
N2RhMjJlZmVhMTBiYTdmYWQ5MTI4M2FkMzFhZjM2OTE3NGQxZC4uMjAwMGZkYzFmNTVlMjFjNjY4
NzFmYjkwYTFkNTdmYmY0YzdmN2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
dXN0b20uaApAQCAtMTg3OSwxMyArMTg3OSwxMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVTdHJva2VDb2xvcihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdgog
CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3Bl
cnR5KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAg
IGlmIChyZWdpc3RlcmVkKSB7CisgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5p
dGlhbFZhbHVlKCkpIHsKICAgICAgICAgYXV0byBpbml0aWFsVmFsdWUgPSByZWdpc3RlcmVkLT5p
bml0aWFsVmFsdWVDb3B5KCk7CiAgICAgICAgIGFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShzdHls
ZVJlc29sdmVyLCByZWdpc3RlcmVkLCAqaW5pdGlhbFZhbHVlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGF1dG8gaW52YWxpZCA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0
ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZUludmFsaWQpOworICAgIGF1dG8gaW52YWxpZCA9IENTU0N1
c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVVucmVzb2x2ZWQobmFtZSwgQ1NTVmFsdWVJbnZhbGlk
KTsKICAgICBhcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoc3R5bGVSZXNvbHZlciwgcmVnaXN0ZXJl
ZCwgaW52YWxpZC5nZXQoKSk7CiB9CiAKQEAgLTE5MDAsMTIgKzE5MDAsMTMgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShTdHlsZVJl
c29sdmVyJiBzdHlsZVIKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlQ3VzdG9tUHJvcGVydHkoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NT
UmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlJiB2YWx1ZSkKIHsKKyAgICBBU1NFUlQodmFsdWUuaXNSZXNvbHZlZCgpKTsKICAgICBjb25z
dCBhdXRvJiBuYW1lID0gdmFsdWUubmFtZSgpOwogCiAgICAgaWYgKCFyZWdpc3RlcmVkIHx8IHJl
Z2lzdGVyZWQtPmluaGVyaXRzKQotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldElu
aGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1ZSksIHJlZ2lzdGVy
ZWQpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEluaGVyaXRlZEN1c3RvbVBy
b3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1ZSkpOwogICAgIGVsc2UKLSAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5h
bWUsIG1ha2VSZWYodmFsdWUpLCByZWdpc3RlcmVkKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIG1ha2VSZWYo
dmFsdWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA1ZDc4ZjhjMTdmZTFkZWYxYjIyZmZkZTQ0ZTE1MmRiNGY2
NWIwN2ViLi41YWNiNDhmOTExYTM3MTc4ZmFlOGE4MGUxNzgzZTY5Yjc1ODhjYjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1
ZGUgIkNTU0RlZmVycmVkUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiQ1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQ
YXJzZXIuaCIKKyNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtl
eXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQ
b29sLmgiCkBAIC03NzksNyArNzgxLDcgQEAgYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpz
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYKICAgICBy
ZXR1cm4gc2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgcGFyc2VyQ29u
dGV4dCk7CiB9CiAKLWJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0Q3VzdG9tUHJvcGVy
dHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wg
aW1wb3J0YW50LCBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQpCitib29sIE11dGFibGVT
dHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KGNvbnN0IERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wg
aW1wb3J0YW50LCBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQpCiB7CiAgICAgLy8gU2V0
dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0aGUgcHJvcGVy
dHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCiAgICAgLy8gU2V0dGluZyBpdCB0byBudWxsIHNlZW1z
IHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVhdCBpdCBqdXN0
IHRoZSBzYW1lLgpAQCAtNzg3LDYgKzc4OSwxNyBAQCBib29sIE11dGFibGVTdHlsZVByb3BlcnRp
ZXM6OnNldEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdAog
ICAgICAgICByZXR1cm4gcmVtb3ZlQ3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1lKTsKIAogICAg
IHBhcnNlckNvbnRleHQubW9kZSA9IGNzc1BhcnNlck1vZGUoKTsKKworICAgIFN0cmluZyBzeW50
YXggPSAiKiI7CisgICAgYXV0byogcmVnaXN0ZXJlZCA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmdl
dENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLmdldChwcm9wZXJ0eU5hbWUpIDogbnVs
bHB0cjsKKworICAgIGlmIChyZWdpc3RlcmVkKQorICAgICAgICBzeW50YXggPSByZWdpc3RlcmVk
LT5zeW50YXg7CisKKyAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKHZhbHVlKTsKKyAgICBpZiAo
IUNTU1Byb3BlcnR5UGFyc2VyOjpjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShzeW50
YXgsIHRva2VuaXplci50b2tlblJhbmdlKCksIHBhcnNlckNvbnRleHQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICAvLyBXaGVuIHJlcGxhY2luZyBhbiBleGlzdGluZyBwcm9wZXJ0eSB2
YWx1ZSwgdGhpcyBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAg
ICAvLyBGaXJlZm94IHByZXNlcnZlcyB0aGUgcG9zaXRpb24sIGFuZCBNU0lFIG1vdmVzIHRoZSBw
cm9wZXJ0eSB0byB0aGUgYmVnaW5uaW5nLgogICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlQ3Vz
dG9tUHJvcGVydHlWYWx1ZSgqdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBw
YXJzZXJDb250ZXh0KSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpDaGFuZ2VkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IDNmNGI2NWFiNzI4OGRkMGYzYjE2MWJhNDFi
ZDUwNWRmMmUzNzU1MGMuLjgzOWE1NDQzZjkxNzhhMjJlMzBiNmYwODdiMmMxOTk4NjRjZjM1OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTI0OSw3ICsyNDksNyBAQCBw
dWJsaWM6CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCA0PiBtX3Byb3BlcnR5VmVjdG9yOwogCiAg
ICAgLy8gTWV0aG9kcyBmb3IgcXVlcnlpbmcgYW5kIGFsdGVyaW5nIENTUyBjdXN0b20gcHJvcGVy
dGllcy4KLSAgICBib29sIHNldEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4
dCk7CisgICAgYm9vbCBzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBEb2N1bWVudCosIGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwg
Q1NTUGFyc2VyQ29udGV4dCk7CiAgICAgYm9vbCByZW1vdmVDdXN0b21Qcm9wZXJ0eShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nKiByZXR1cm5UZXh0ID0gbnVsbHB0cik7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZDRlMDZiY2NmMzM2
MGQxY2E0MGMwNzI4MDJmNDUwMGM1OWZkYTA1Yi4uZTllYTkwY2QxZTU0NGYzMzg4YWJlYjM4NGY3
YWExNzJhN2FkODU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzIx
LDcgKzMyMSw3IEBAIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjp1cGRhdGVDb252
ZXJzaW9uRGF0YSgpCiAgICAgbV9jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhID0gQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YShtX3N0eWxlLmdldCgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIG1fZWxl
bWVudCA/IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKTsKIH0K
IAotaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRT
dHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAgIG1fc3R5bGUg
PSBXVEZNb3ZlKHN0eWxlKTsKICAgICB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwpAQCAtNDI5LDIx
ICs0MjksMjEgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpz
dHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKgogICAgIENhc2NhZGVkUHJvcGVydGll
cyBjYXNjYWRlKGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpOwogICAgIGNhc2NhZGUuYWRkTm9ybWFs
TWF0Y2hlcyhyZXN1bHQsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAtIDEp
OwogCi0gICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNh
c2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlD
dXN0b20sICZyZXN1bHQpOwotCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwg
Zmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmcmVzdWx0KTsKKyAg
ICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgJmNhc2NhZGUs
ICZyZXN1bHQgfTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdENTU1Byb3BlcnR5
LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksIGFwcGx5U3RhdGUpOwogCiAgICAgLy8gSWYgb3Vy
IGZvbnQgZ290IGRpcnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAgICAgdXBkYXRlRm9udCgpOwogCi0g
ICAgLy8gTm93IGRvIHJlc3Qgb2YgdGhlIHByb3BlcnRpZXMuCi0gICAgYXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVy
dHksICZyZXN1bHQpOworICAgIC8vIE5vdyByZXNvbHZlIHJlbWFpbmluZyBjdXN0b20gcHJvcGVy
dGllcyBhbmQgdGhlIHJlc3QsIGluIGFueSBvcmRlcgorICAgIGZvciAoYXV0byBpdCA9IGNhc2Nh
ZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2luKCk7IGl0ICE9IGNhc2NhZGUuY3VzdG9tUHJvcGVy
dGllcygpLmVuZCgpOyArK2l0KQorICAgICAgICBhcHBseUNhc2NhZGVkQ3VzdG9tUHJvcGVydHko
aXQtPmtleSwgYXBwbHlTdGF0ZSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RM
b3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksIGFwcGx5U3RhdGUpOwogCiAgICAg
Ly8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQgYnkgb25lIG9mIHRoZSBub24tZXNzZW50aWFsIGZv
bnQgcHJvcHMsIHVwZGF0ZSBpdCBhIHNlY29uZCB0aW1lLgogICAgIHVwZGF0ZUZvbnQoKTsKIAot
ICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsICZyZXN1bHQpOworICAg
IGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwogCiAg
ICAgYWRqdXN0UmVuZGVyU3R5bGUoKnN0YXRlLnN0eWxlKCksICpzdGF0ZS5wYXJlbnRTdHlsZSgp
LCBudWxscHRyLCBudWxscHRyKTsKIApAQCAtNjM1LDE3ICs2MzUsMTggQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRl
eCkKICAgICBDYXNjYWRlZFByb3BlcnRpZXMgY2FzY2FkZShkaXJlY3Rpb24sIHdyaXRpbmdNb2Rl
KTsKICAgICBjYXNjYWRlLmFkZE5vcm1hbE1hdGNoZXMocmVzdWx0LCAwLCByZXN1bHQubWF0Y2hl
ZFByb3BlcnRpZXMoKS5zaXplKCkgLSAxKTsKIAotICAgIC8vIFJlc29sdmUgY3VzdG9tIHByb3Bl
cnRpZXMgZmlyc3QuCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJv
cGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVzdWx0KTsKLQotICAgIGFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJpb3Jp
dHlQcm9wZXJ0eSwgJnJlc3VsdCk7CisgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBw
bHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmcmVzdWx0IH07CisgICAgYXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBs
eVN0YXRlKTsKIAogICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCB1cGRhdGUgaXQgbm93
LgogICAgIHVwZGF0ZUZvbnQoKTsKIAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2Nh
ZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmcmVzdWx0KTsK
KyAgICAvLyBOb3cgcmVzb2x2ZSByZW1haW5pbmcgY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRoZSBy
ZXN0LCBpbiBhbnkgb3JkZXIKKyAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3RvbVByb3Bl
cnRpZXMoKS5iZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsg
KytpdCkKKyAgICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5
U3RhdGUpOworICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0TG93UHJpb3JpdHlQcm9w
ZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCBhcHBseVN0YXRlKTsKIAotICAgIGNhc2NhZGUuYXBwbHlE
ZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsICZyZXN1bHQpOworICAgIGNhc2NhZGUuYXBwbHlEZWZl
cnJlZFByb3BlcnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwogCiAgICAgLy8gTm93IHJldHVybiB0
aGUgc3R5bGUuCiAgICAgcmV0dXJuIG1fc3RhdGUudGFrZVN0eWxlKCk7CkBAIC0xMzcxLDE3ICsx
MzcyLDIwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25z
dCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAgICAgIGNhc2NhZGUuYWRkTm9y
bWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBt
YXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKICAgICAg
ICAgY2FzY2FkZS5hZGRJbXBvcnRhbnRNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5y
YW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUlu
aGVyaXRlZE9ubHkpOwogCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUs
IENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3Np
dGlvbiwgJm1hdGNoUmVzdWx0KTsKLSAgICAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3Rl
clJ1YnkoKTsKKyAgICAgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7
IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQgfTsKIAotICAgICAgICAvLyBSZXNvbHZlIGN1
c3RvbSB2YXJpYWJsZXMgZmlyc3QuCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNh
c2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSwgJm1hdGNoUmVzdWx0
KTsKKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoQ1NTUHJvcGVydHlXZWJraXRSdWJ5
UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBhcHBseVN0YXRlKTsKKyAg
ICAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1YnkoKTsKIAotICAgICAgICAvLyBT
dGFydCBieSBhcHBseWluZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVw
ZW5kIG9uLgotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENT
U1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisgICAg
ICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJp
b3JpdHlQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKKyAgICAgICAgLy8gSWYgb3VyIGZvbnQgZ290
IGRpcnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLSAgICAgICAg
YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5
LCBsYXN0Q1NTUHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisKKyAgICAgICAgLy8gTm93IHJlc29s
dmUgcmVtYWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVy
CisgICAgICAgIGZvciAoYXV0byBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2lu
KCk7IGl0ICE9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOyArK2l0KQorICAgICAg
ICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5U3RhdGUpOwor
ICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHks
IGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKICAgICAgICAgc3RhdGUuY2FjaGVCb3Jk
ZXJBbmRCYWNrZ3JvdW5kKCk7CiAgICAgfQpAQCAtMTM5MiwxNiArMTM5NiwxMyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmIG1h
dGNoUmVzdWx0LCBjb25zdAogICAgIGNhc2NhZGUuYWRkSW1wb3J0YW50TWF0Y2hlcyhtYXRjaFJl
c3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdl
cy5sYXN0VXNlclJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgY2FzY2FkZS5hZGRJbXBv
cnRhbnRNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUs
IG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogCi0g
ICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20s
ICZtYXRjaFJlc3VsdCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBD
U1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRp
b24sICZtYXRjaFJlc3VsdCk7CisgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlT
dGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQgfTsKIAotICAgIC8vIEFkanVzdCB0
aGUgZm9udCBzaXplIHRvIGJlIHNtYWxsZXIgaWYgcnVieS1wb3NpdGlvbiBpcyBpbnRlci1jaGFy
YWN0ZXIuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoQ1NTUHJvcGVydHlXZWJraXRSdWJ5
UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBhcHBseVN0YXRlKTsKICAg
ICBhZGp1c3RTdHlsZUZvckludGVyQ2hhcmFjdGVyUnVieSgpOwogCi0gICAgLy8gU3RhcnQgYnkg
YXBwbHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRlcGVuZCBvbi4K
LSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBs
YXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisgICAgYXBwbHlDYXNjYWRl
ZFByb3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBh
cHBseVN0YXRlKTsKIAogICAgIC8vIElmIHRoZSBlZmZlY3RpdmUgem9vbSB2YWx1ZSBjaGFuZ2Vz
LCB3ZSBjYW4ndCB1c2UgdGhlIG1hdGNoZWQgcHJvcGVydGllcyBjYWNoZS4gU3RhcnQgb3Zlci4K
ICAgICBpZiAoY2FjaGVJdGVtICYmIGNhY2hlSXRlbS0+cmVuZGVyU3R5bGUtPmVmZmVjdGl2ZVpv
b20oKSAhPSBzdGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpCkBAIC0xNDE0LDEzICsxNDE1
LDE1IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBN
YXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNo
ZUl0ZW0tPnJlbmRlclN0eWxlLT5mb250RGVzY3JpcHRpb24oKSAhPSBzdGF0ZS5zdHlsZSgpLT5m
b250RGVzY3JpcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMo
bWF0Y2hSZXN1bHQsIGVsZW1lbnQsIERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7CiAK
LSAgICAvLyBBcHBseSBwcm9wZXJ0aWVzIHRoYXQgbm8gb3RoZXIgcHJvcGVydGllcyBkZXBlbmQg
b24uCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0
eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisgICAgLy8gTm93IHJl
c29sdmUgcmVtYWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9y
ZGVyCisgICAgZm9yIChhdXRvIGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4o
KTsgaXQgIT0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7ICsraXQpCisgICAgICAg
IGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKKyAgICBh
cHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQ
cm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKICAgICAvLyBGaW5hbGx5LCBzb21lIHByb3BlcnRpZXMg
bXVzdCBiZSBhcHBsaWVkIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgcGFyc2VkLgogICAgIC8vIFRo
ZXJlIGFyZSBzb21lIENTUyBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0IHRoZSBzYW1lIFJlbmRlclN0
eWxlIHZhbHVlcywKICAgICAvLyBzbyB0byBwcmVzZXJ2ZSBiZWhhdmlvciwgd2UgcXVldWUgdGhl
bSB1cCBkdXJpbmcgY2FzY2FkZSBhbmQgZmx1c2ggaGVyZS4KLSAgICBjYXNjYWRlLmFwcGx5RGVm
ZXJyZWRQcm9wZXJ0aWVzKCp0aGlzLCAmbWF0Y2hSZXN1bHQpOworICAgIGNhc2NhZGUuYXBwbHlE
ZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwogCiAgICAgQVNTRVJUKCFzdGF0
ZS5mb250RGlydHkoKSk7CiAKQEAgLTE0NDEsOCArMTQ0NCw5IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBzdGQ6CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxl
KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKKyAgICBBcHBseUNhc2NhZGVk
UHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAg
IGlmICh2YWx1ZSkKLSAgICAgICAgYXBwbHlQcm9wZXJ0eShpZCwgdmFsdWUpOworICAgICAgICBh
cHBseVByb3BlcnR5KGlkLCB2YWx1ZSwgYXBwbHlTdGF0ZSk7CiB9CiAKIGlubGluZSBib29sIGlz
VmFsaWRWaXNpdGVkTGlua1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpCkBAIC0xNjA5LDE2ICsx
NjEzLDE4IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZl
cjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayBsaW5rTWF0Y2hN
YXNrLCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBBcHBseUNh
c2NhZGVkUHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0
Y2hNYXNrIGxpbmtNYXRjaE1hc2spCiB7CisgICAgYXV0byogbWF0Y2hSZXN1bHQgPSBhcHBseVN0
YXRlLm1hdGNoUmVzdWx0OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWlzU2hvcnRoYW5kQ1NT
UHJvcGVydHkoaWQpLCAiU2hvcnRoYW5kIHByb3BlcnR5IGlkID0gJWQgd2Fzbid0IGV4cGFuZGVk
IGF0IHBhcnNpbmcgdGltZSIsIGlkKTsKIAogICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlVG9BcHBseSA9IHZhbHVlOwogICAgIGlmICh2YWx1
ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgdmFsdWVUb0FwcGx5ID0gcmVz
b2x2ZWRWYXJpYWJsZVZhbHVlKGlkLCAqdmFsdWUpOwotICAgICAgICBpZiAoIXZhbHVlVG9BcHBs
eSkgeworICAgICAgICB2YWx1ZVRvQXBwbHkgPSByZXNvbHZlZFZhcmlhYmxlVmFsdWUoaWQsICp2
YWx1ZSwgYXBwbHlTdGF0ZSk7CisgICAgICAgIC8vIElmIGFwcGxpZWRQcm9wZXJ0aWVzIGFscmVh
ZHkgaGFzIHRoaXMgaWQsIHRoZW4gd2UgZGV0ZWN0ZWQgYSBjeWNsZSwgYW5kIHRoaXMgdmFsdWUg
c2hvdWxkIGJlIHVuc2V0LgorICAgICAgICBpZiAoIXZhbHVlVG9BcHBseSB8fCBhcHBseVN0YXRl
LmFwcGxpZWRQcm9wZXJ0aWVzLmdldChpZCkpIHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0
eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5
ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAg
ICAgICAgICAgZWxzZQpAQCAtMTYyOSw3ICsxNjM1LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjph
cHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgU2VsZWN0b3JD
aGUKICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpIHsK
ICAgICAgICAgQ1NTUHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0
aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0
eWxlKCktPndyaXRpbmdNb2RlKCkpOwogICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwotICAg
ICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpLCBsaW5r
TWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBseVByb3BlcnR5KG5l
d0lkLCB2YWx1ZVRvQXBwbHkuZ2V0KCksIGFwcGx5U3RhdGUsIGxpbmtNYXRjaE1hc2spOwogICAg
IH0KIAogICAgIENTU1ZhbHVlKiB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9IHZhbHVl
VG9BcHBseS5nZXQoKTsKQEAgLTE2NDAsNyArMTY0Niw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9y
Q2hlCiAKICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKICAgICAgICAgY3VzdG9t
UHJvcGVydHlWYWx1ZSA9ICZkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdmFsdWVU
b0FwcGx5KTsKLSAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlEID0gY3VzdG9tUHJvcGVydHlW
YWx1ZS0+dmFsdWVJRCgpOworICAgICAgICBBU1NFUlQoY3VzdG9tUHJvcGVydHlWYWx1ZS0+aXNS
ZXNvbHZlZCgpKTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJ
RD4oY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSkpCisgICAgICAgICAgICBjdXN0b21Qcm9w
ZXJ0eVZhbHVlSUQgPSBXVEY6OmdldDxDU1NWYWx1ZUlEPihjdXN0b21Qcm9wZXJ0eVZhbHVlLT52
YWx1ZSgpKTsKICAgICAgICAgYXV0byYgbmFtZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUo
KTsKICAgICAgICAgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkID0gZG9jdW1lbnQoKS5nZXRDU1NS
ZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQobmFtZSk7CiAgICAgfQpAQCAtMTY2Nywx
MyArMTY3NSwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZQogICAgICAgICAgICAgICAgIGlm
IChjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQgJiYgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkLT5p
bmhlcml0cyAmJiByb2xsYmFjay0+aGFzQ3VzdG9tUHJvcGVydHkoY3VzdG9tUHJvcGVydHlWYWx1
ZS0+bmFtZSgpKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIHByb3BlcnR5ID0gcm9sbGJh
Y2stPmN1c3RvbVByb3BlcnR5KGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNz
c1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBsaW5rTWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5j
c3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgYXBwbHlTdGF0ZSwgbGlua01hdGNoTWFzayk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKHJvbGxiYWNrLT5oYXNQcm9wZXJ0eShpZCkpIHsKICAgICAgICAgICAgICAgICBh
dXRvJiBwcm9wZXJ0eSA9IHJvbGxiYWNrLT5wcm9wZXJ0eShpZCk7CiAgICAgICAgICAgICAgICAg
aWYgKHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdKQotICAgICAgICAgICAgICAgICAg
ICBhcHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hN
YXNrXSwgbGlua01hdGNoTWFzaywgbWF0Y2hSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBh
cHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNr
XSwgYXBwbHlTdGF0ZSwgbGlua01hdGNoTWFzayk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCkBAIC0xNzAyLDEwICsxNzEwLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVj
dG9yQ2hlCiAgICAgU3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVl
VG9BcHBseSwgaXNJbml0aWFsLCBpc0luaGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7
CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4gU3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIGNvbnN0CitS
ZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUmVzb2x2ZXI6OnJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BJRCwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBBcHBseUNhc2NhZGVkUHJv
cGVydHlTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVu
dCgpKTsKLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2Vz
KHByb3BJRCwgdmFsdWUsIGRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
U2V0KCksICptX3N0YXRlLnN0eWxlKCkpOworICAgIHJldHVybiBwYXJzZXIucGFyc2VWYWx1ZVdp
dGhWYXJpYWJsZVJlZmVyZW5jZXMocHJvcElELCB2YWx1ZSwgc3RhdGUpOwogfQogCiBSZWZQdHI8
U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZShDU1NWYWx1ZSYgdmFsdWUpCkBA
IC0yMjI3LDEzICsyMjM1LDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0
aWVzOjphZGRJbXBvcnRhbnRNYXRjaGVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtCiAgICAgICAgIGFk
ZE1hdGNoKG1hdGNoUmVzdWx0LCBtYXRjaC5pbmRleCwgdHJ1ZSwgaW5oZXJpdGVkT25seSk7CiB9
CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphcHBseURlZmVycmVk
UHJvcGVydGllcyhTdHlsZVJlc29sdmVyJiByZXNvbHZlciwgY29uc3QgTWF0Y2hSZXN1bHQqIG1h
dGNoUmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OmFwcGx5
RGVmZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyLCBBcHBseUNhc2NhZGVk
UHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSkKIHsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDog
bV9kZWZlcnJlZFByb3BlcnRpZXMpCi0gICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyLCBt
YXRjaFJlc3VsdCk7CisgICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyLCBhcHBseVN0YXRl
KTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5
OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwgY29uc3QgTWF0Y2hSZXN1bHQqIG1hdGNo
UmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5
OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIGFwcGx5U3RhdGUpCiB7CiAgICAgU3RhdGUmIHN0YXRlID0gcmVzb2x2ZXIuc3RhdGUoKTsK
ICAgICBzdGF0ZS5zZXRDYXNjYWRlTGV2ZWwobGV2ZWwpOwpAQCAtMjI0Miw3ICsyMjUwLDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShT
dHlsZVJlc29sdmVyJiByZXNvbHZlciwKICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2Vy
OjpNYXRjaERlZmF1bHRdKSB7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3Vs
YXJTdHlsZSh0cnVlKTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExp
bmtTdHlsZShmYWxzZSk7Ci0gICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1Zh
bHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0XSwgU2VsZWN0b3JDaGVja2VyOjpNYXRj
aERlZmF1bHQsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShp
ZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdLCBhcHBseVN0YXRlLCBT
ZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLnN0
eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCkBAIC0yMjUxLDQz
ICsyMjU5LDExMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJv
cGVydHk6OmFwcGx5KFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyLAogICAgIGlmIChjc3NWYWx1ZVtT
ZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10pIHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9w
ZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5
VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKLSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0
eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdLCBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoTGluaywgbWF0Y2hSZXN1bHQpOworICAgICAgICByZXNvbHZlci5hcHBseVByb3Bl
cnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10sIGFwcGx5U3RhdGUs
IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rKTsKICAgICB9CiAKICAgICBpZiAoY3NzVmFsdWVb
U2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdKSB7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5
UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJv
cGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUodHJ1ZSk7Ci0gICAgICAgIHJlc29sdmVyLmFwcGx5UHJv
cGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkXSwgU2VsZWN0
b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWQsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgcmVzb2x2ZXIu
YXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRd
LCBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCk7CiAgICAgfQogCiAg
ICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwogICAgIHN0YXRl
LnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2UpOwogfQogCi12b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKENhc2NhZGVkUHJvcGVydGllcyYg
Y2FzY2FkZSwgaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHksIGNvbnN0IE1hdGNo
UmVzdWx0KiBtYXRjaFJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1
c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIHN0YXRlKQogewotICAgIGZvciAoaW50IGlkID0gZmlyc3RQcm9wZXJ0eTsgaWQgPD0gbGFz
dFByb3BlcnR5OyArK2lkKSB7Ci0gICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0
YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGlkKTsKLSAgICAgICAgaWYgKCFjYXNjYWRlLmhhc1By
b3BlcnR5KHByb3BlcnR5SUQpKQorICAgIGlmIChzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGll
cy5jb250YWlucyhuYW1lKSB8fCAhc3RhdGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmNv
bnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Rh
dGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmdldChuYW1lKTsKKworICAgIGZvciAoYXV0
byBpbmRleCA6IHsgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIFNlbGVjdG9yQ2hlY2tl
cjo6TWF0Y2hMaW5rLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCB9KSB7CisgICAgICAg
IGlmICghcHJvcGVydHkuY3NzVmFsdWVbaW5kZXhdKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7Ci0gICAgICAgICAg
ICAvLyBBcHBseSBmb250IHNpemUgZmlyc3QsIHNpbmNlIGN1c3RvbSBwcm9wZXJ0aWVzIG1heSBy
ZWx5IG9uIGl0IGZvciByZWxhdGl2ZSB1bml0IGNhbGN1bGF0aW9ucwotICAgICAgICAgICAgLy8g
T25jZSBpdCBpcyBhcHBsaWVkIGFuZCB0aGUgY3VzdG9tIHByb3BlcnR5IHZhbHVlcyBhcmUgc2V0
LCBpdCB3aWxsIGJlIGFwcGxpZWQgYWdhaW4sIHdoaWNoIHNob3VsZAotICAgICAgICAgICAgLy8g
aGFuZGxlIGFueSBmb250LXNpemUgcHJvcGVydGllcyB0aGF0IHJlbHkgb24gcmVnaXN0ZXJlZCBj
dXN0b20gcHJvcGVydGllcy4KLSAgICAgICAgICAgIC8vIEZJWE1FIGN5Y2xlcyBzaG91bGQgYmUg
ZGV0ZWN0ZWQuCi0gICAgICAgICAgICBpZiAoY2FzY2FkZS5oYXNQcm9wZXJ0eShDU1NQcm9wZXJ0
eUZvbnRTaXplKSkKLSAgICAgICAgICAgICAgICBjYXNjYWRlLnByb3BlcnR5KENTU1Byb3BlcnR5
Rm9udFNpemUpLmFwcGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7Ci0gICAgICAgICAgICB1cGRhdGVG
b250KCk7Ci0KLSAgICAgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBDYXNjYWRlZFByb3Bl
cnRpZXM6OlByb3BlcnR5Pjo6aXRlcmF0b3IgZW5kID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVz
KCkuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hNYXA8QXRvbWljU3RyaW5nLCBDYXNjYWRl
ZFByb3BlcnRpZXM6OlByb3BlcnR5Pjo6aXRlcmF0b3IgaXQgPSBjYXNjYWRlLmN1c3RvbVByb3Bl
cnRpZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgaXQtPnZh
bHVlLmFwcGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0eWxl
KCktPmNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKGRvY3VtZW50KCkuZ2V0Q1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCksIG1fc3RhdGUucGFyZW50U3R5bGUoKSwgKnRoaXMp
OworICAgICAgICBpZiAoaW5kZXggIT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQgJiYg
dGhpcy0+c3RhdGUoKS5zdHlsZSgpLT5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlTGluazo6Tm90SW5z
aWRlKQogICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgUmVmPENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+IHZhbHVlVG9BcHBseSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZShk
b3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJvcGVydHkuY3NzVmFsdWVbaW5kZXhd
KSk7CisKKyAgICAgICAgaWYgKHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLmNvbnRh
aW5zKG5hbWUpKSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBjeWNsZSwgc28gcmVzZXQg
dGhlIHZhbHVlLgorICAgICAgICAgICAgc3RhdGUuYXBwbGllZEN1c3RvbVByb3BlcnRpZXMuYWRk
KG5hbWUpOworICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgcmVz
ZXQgaXRzIGRlcGVuZGVuY2llcworICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+Pih2YWx1ZVRvQXBwbHktPnZhbHVlKCkp
KQorICAgICAgICAgICAgICAgIHJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUN1c3Rv
bSwgdmFsdWVUb0FwcGx5LmdldCgpLCBzdGF0ZSk7CisgICAgICAgICAgICB2YWx1ZVRvQXBwbHkg
PSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobmFtZSwgQ1NTVmFsdWVVbnNl
dCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllc0N1c3Rv
bS5hZGQobmFtZSk7CisKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+Pih2YWx1ZVRvQXBwbHktPnZhbHVlKCkpKSB7CisgICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlID0gcmVzb2x2ZWRWYXJpYWJsZVZh
bHVlKENTU1Byb3BlcnR5Q3VzdG9tLCB2YWx1ZVRvQXBwbHkuZ2V0KCksIHN0YXRlKTsKKworICAg
ICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9
IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZVVuc2V0
KTsKKworICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4oKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGF0ZS5p
blByb2dyZXNzUHJvcGVydGllc0N1c3RvbS5jb250YWlucyhuYW1lKSkgeworICAgICAgICAgICAg
aWYgKGluZGV4ID09IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0KSB7CisgICAgICAgICAg
ICAgICAgdGhpcy0+c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUodHJ1ZSk7
CisgICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVk
TGlua1N0eWxlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGluZGV4
ID09IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rKSB7CisgICAgICAgICAgICAgICAgdGhpcy0+
c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUodHJ1ZSk7CisgICAgICAgICAg
ICAgICAgdGhpcy0+c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZh
bHNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGluZGV4ID09IFNlbGVjdG9y
Q2hlY2tlcjo6TWF0Y2hWaXNpdGVkKSB7CisgICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUoKS5z
ZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoZmFsc2UpOworICAgICAgICAgICAgICAgIHRo
aXMtPnN0YXRlKCkuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSh0cnVlKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20s
IHZhbHVlVG9BcHBseS5wdHIoKSwgc3RhdGUsIGluZGV4KTsKICAgICAgICAgfQotICAgICAgICBh
dXRvJiBwcm9wZXJ0eSA9IGNhc2NhZGUucHJvcGVydHkocHJvcGVydHlJRCk7CisgICAgICAgIHN0
YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLnJlbW92ZShuYW1lKTsKKyAgICAgICAgc3Rh
dGUuYXBwbGllZEN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOworICAgIH0KK30KKwordm9pZCBT
dHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhpbnQgZmlyc3RQcm9wZXJ0eSwg
aW50IGxhc3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQorewor
ICAgIGlmIChMSUtFTFkoc3RhdGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmlzRW1wdHko
KSkpCisgICAgICAgIHJldHVybiBhcHBseUNhc2NhZGVkUHJvcGVydGllc0ltcGw8ZmFsc2U+KGZp
cnN0UHJvcGVydHksIGxhc3RQcm9wZXJ0eSwgc3RhdGUpOworICAgIHJldHVybiBhcHBseUNhc2Nh
ZGVkUHJvcGVydGllc0ltcGw8dHJ1ZT4oZmlyc3RQcm9wZXJ0eSwgbGFzdFByb3BlcnR5LCBzdGF0
ZSk7Cit9CisKK3RlbXBsYXRlPGJvb2wgVHJhY2tDeWNsZXM+CitpbmxpbmUgdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllc0ltcGwoaW50IGZpcnN0UHJvcGVydHksIGlu
dCBsYXN0UHJvcGVydHksIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKK3sKKyAg
ICBmb3IgKGludCBpZCA9IGZpcnN0UHJvcGVydHk7IGlkIDw9IGxhc3RQcm9wZXJ0eTsgKytpZCkg
eworICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9w
ZXJ0eUlEPihpZCk7CisgICAgICAgIGlmICghc3RhdGUuY2FzY2FkZS0+aGFzUHJvcGVydHkocHJv
cGVydHlJRCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJUKHByb3BlcnR5
SUQgIT0gQ1NTUHJvcGVydHlDdXN0b20pOworICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IHN0YXRl
LmNhc2NhZGUtPnByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgICAgICBBU1NFUlQoIXNob3VsZEFw
cGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwotICAgICAgICBwcm9wZXJ0eS5h
cHBseSgqdGhpcywgbWF0Y2hSZXN1bHQpOworCisgICAgICAgIGlmICghVHJhY2tDeWNsZXMpIHsK
KyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYW55IGN1c3RvbSBwcm9wZXJ0aWVzLCB0
aGVuIHRoZXJlIGNhbid0IGJlIGFueSBjeWNsZXMuCisgICAgICAgICAgICBwcm9wZXJ0eS5hcHBs
eSgqdGhpcywgc3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLmdldChwcm9wZXJ0eUlEKSkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBjeWNsZSAoZWcuIHNldHRpbmcgZm9udCBzaXplIHVz
aW5nIHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnR5IHZhbHVlIGNvbnRhaW5pbmcgZW0pCisgICAg
ICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUgdW5zZXQKKyAgICAgICAgICAg
ICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5zZXQocHJvcGVydHlJRCk7CisgICAgICAgICAg
ICAgICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyBpbiBhIGN5Y2xlLCBhbmQgb25seSB0aGUgcm9vdCBv
ZiB0aGUgY2FsbCBzdGFjayB3aWxsIGhhdmUgZmlyc3RQcm9wZXJ0eSAhPSBsYXN0UHJvcGVydHku
CisgICAgICAgICAgICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
c3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMuc2V0KHByb3BlcnR5SUQpOworICAgICAgICAgICAg
cHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAgICAgICAgIHN0YXRlLmFwcGxpZWRQ
cm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQ
cm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlELCBmYWxzZSk7CisgICAgICAgIH0KICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDQ3MDNjZWZjM2JjMmMzYjZiNzQ5NzQ5
ODc0MzVjYWU1ZGNlNWU0YmEuLmE5YzlkMTcwOWJmMGZkNmRlY2VlMjM1Y2I2NzljYjQzY2Q2MzUw
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgPGJpdHNldD4KICNpbmNsdWRlIDxt
ZW1vcnk+CisjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTI2
Nyw3ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIENhc2NhZGVkUHJvcGVydGllcyhUZXh0RGly
ZWN0aW9uLCBXcml0aW5nTW9kZSk7CiAKICAgICAgICAgc3RydWN0IFByb3BlcnR5IHsKLSAgICAg
ICAgICAgIHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIGNvbnN0IE1hdGNoUmVzdWx0Kik7Cisg
ICAgICAgICAgICB2b2lkIGFwcGx5KFN0eWxlUmVzb2x2ZXImLCBBcHBseUNhc2NhZGVkUHJvcGVy
dHlTdGF0ZSYpOwogCiAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIGlkOwogICAgICAgICAgICAg
Q2FzY2FkZUxldmVsIGxldmVsOwpAQCAtMjgxLDcgKzI4Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
dm9pZCBhZGROb3JtYWxNYXRjaGVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgaW50IHN0YXJ0SW5kZXgs
IGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5ID0gZmFsc2UpOwogICAgICAgICB2b2lk
IGFkZEltcG9ydGFudE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBpbnQgc3RhcnRJbmRleCwg
aW50IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxzZSk7CiAKLSAgICAgICAgdm9p
ZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVyJiwgY29uc3QgTWF0Y2hSZXN1
bHQqKTsKKyAgICAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVy
JiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKIAogICAgICAgICBIYXNoTWFwPEF0b21p
Y1N0cmluZywgUHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Q
cm9wZXJ0aWVzOyB9CiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5n
JikgY29uc3Q7CkBAIC0zMDIsNyArMzAzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgVGV4dERpcmVj
dGlvbiBtX2RpcmVjdGlvbjsKICAgICAgICAgV3JpdGluZ01vZGUgbV93cml0aW5nTW9kZTsKICAg
ICB9OwotICAgIAorCisgICAgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhpbnQgZmlyc3RQ
cm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsK
KyAgICB2b2lkIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUs
IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7CisKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBm
dW5jdGlvbiBmaXhlcyB1cCB0aGUgZGVmYXVsdCBmb250IHNpemUgaWYgaXQgZGV0ZWN0cyB0aGF0
IHRoZSBjdXJyZW50IGdlbmVyaWMgZm9udCBmYW1pbHkgaGFzIGNoYW5nZWQuIC1kd2gKICAgICB2
b2lkIGNoZWNrRm9yR2VuZXJpY0ZhbWlseUNoYW5nZShSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSk7CkBAIC0zMjEsNyArMzI1LDkgQEAgcHJpdmF0ZToKICAgICBl
bnVtIFNob3VsZFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgeyBEb05vdFVzZU1hdGNoZWRQcm9w
ZXJ0aWVzQ2FjaGUgPSAwLCBVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlIH07CiAgICAgdm9pZCBh
cHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgY29uc3QgRWxlbWVudCYs
IFNob3VsZFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgPSBVc2VNYXRjaGVkUHJvcGVydGllc0Nh
Y2hlKTsKIAotICAgIHZvaWQgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoQ2FzY2FkZWRQcm9wZXJ0
aWVzJiwgaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHksIGNvbnN0IE1hdGNoUmVz
dWx0Kik7CisgICAgdGVtcGxhdGU8Ym9vbCBUcmFja0N5Y2xlcz4KKyAgICBpbmxpbmUgdm9pZCBh
cHBseUNhc2NhZGVkUHJvcGVydGllc0ltcGwoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJv
cGVydHksIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7CisKICAgICB2b2lkIGNhc2NhZGVN
YXRjaGVzKENhc2NhZGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoUmVzdWx0JiwgYm9vbCBpbXBv
cnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5oZXJpdGVkT25seSk7
CiAKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzKE1hdGNoUmVzdWx0JiwgUnVsZVNldCosIGJvb2wg
aXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSk7CkBA
IC00NTUsMTIgKzQ2MSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXcml0aW5nTW9kZShXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSkgeyBtX3N0YXRlLnNldFdyaXRpbmdNb2RlKHdyaXRpbmdNb2Rl
KTsgfQogICAgIHZvaWQgc2V0VGV4dE9yaWVudGF0aW9uKFRleHRPcmllbnRhdGlvbiB0ZXh0T3Jp
ZW50YXRpb24pIHsgbV9zdGF0ZS5zZXRUZXh0T3JpZW50YXRpb24odGV4dE9yaWVudGF0aW9uKTsg
fQogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVy
dHlJRCwgY29uc3QgQ1NTVmFsdWUmKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc29s
dmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYsIEFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0eVN0YXRlJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjYWNoZUJv
cmRlckFuZEJhY2tncm91bmQoKTsKIAotICAgIHZvaWQgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlELCBDU1NWYWx1ZSosIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayA9IFNlbGVjdG9y
Q2hlY2tlcjo6TWF0Y2hEZWZhdWx0LCBjb25zdCBNYXRjaFJlc3VsdCogPSBudWxscHRyKTsKKyAg
ICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBBcHBseUNhc2Nh
ZGVkUHJvcGVydHlTdGF0ZSYsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayA9IFNlbGVj
dG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0KTsKIAogICAgIHZvaWQgYXBwbHlTVkdQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwogCkBAIC01MjQsNiArNTMwLDE5IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXRjaFJhbmdlcyYsIGNvbnN0IE1h
dGNoUmFuZ2VzJik7CiB9OwogCisvLyBTdGF0ZSB0byB1c2Ugd2hlbiBhcHBseWluZyBwcm9wZXJ0
aWVzLCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGN1c3RvbSBhbmQgaGlnaC1wcmlvcml0eQorLy8g
cHJvcGVydGllcyBoYXZlIGJlZW4gcmVzb2x2ZWQuCitzdHJ1Y3QgQXBwbHlDYXNjYWRlZFByb3Bl
cnR5U3RhdGUgeworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXI7CisgICAgU3R5bGVS
ZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBjYXNjYWRlOworICAgIGNvbnN0IFN0eWxlUmVz
b2x2ZXI6Ok1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdDsKKyAgICBCaXRtYXA8bnVtQ1NTUHJvcGVy
dGllcz4gYXBwbGllZFByb3BlcnRpZXMgPSB7IH07CisgICAgSGFzaFNldDxTdHJpbmc+IGFwcGxp
ZWRDdXN0b21Qcm9wZXJ0aWVzID0geyB9OworICAgIEJpdG1hcDxudW1DU1NQcm9wZXJ0aWVzPiBp
blByb2dyZXNzUHJvcGVydGllcyA9IHsgfTsKKyAgICBIYXNoU2V0PFN0cmluZz4gaW5Qcm9ncmVz
c1Byb3BlcnRpZXNDdXN0b20gPSB7IH07Cit9OworCisKIGlubGluZSBib29sIFN0eWxlUmVzb2x2
ZXI6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IEF0b21pY1N0cmluZyAmYXR0cmlidXRlTmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWF0dHJp
YnV0ZU5hbWUuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNw
cAppbmRleCA5ZGYwZmQ0NTlmOTA3MzMyNDQwZDVlOGE5YjgxNmIxNjUyNGRjZWRjLi4wZDZhZWYw
OGY5MjRmMDc4ODlkMmNhMTQxMDhjZTU3YTE4NDViZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXIuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVD
b2xvci5oIgorI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUu
aCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KQEAgLTE3Nyw4ICsxNzgsMTAgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlRGVj
bGFyYXRpb25Gb3JJbnNwZWN0b3IoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgY28K
ICAgICBDU1NQYXJzZXJJbXBsOjpwYXJzZURlY2xhcmF0aW9uTGlzdEZvckluc3BlY3RvcihzdHJp
bmcsIGNvbnRleHQsIG9ic2VydmVyKTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6
OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcElELCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNl
dCYgcmVnaXN0ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhD
U1NQcm9wZXJ0eUlEIHByb3BJRCwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBBcHBseUNhc2NhZGVk
UHJvcGVydHlTdGF0ZSYgc3RhdGUpCiB7CisgICAgQVNTRVJUKChwcm9wSUQgPT0gQ1NTUHJvcGVy
dHlDdXN0b20gJiYgdmFsdWUuaXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkpIHx8IChwcm9wSUQgIT0g
Q1NTUHJvcGVydHlDdXN0b20gJiYgIXZhbHVlLmlzQ3VzdG9tUHJvcGVydHlWYWx1ZSgpKSk7Cisg
ICAgYXV0byYgc3R5bGUgPSAqc3RhdGUuc3R5bGVSZXNvbHZlci0+c3R5bGUoKTsKICAgICBhdXRv
IGRpcmVjdGlvbiA9IHN0eWxlLmRpcmVjdGlvbigpOwogICAgIGF1dG8gd3JpdGluZ01vZGUgPSBz
dHlsZS53cml0aW5nTW9kZSgpOwogCkBAIC0xOTAsMTIgKzE5MywxMSBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVy
dHlJRCBwcm9wSQogICAgICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9w
ZXJ0eShzaG9ydGhhbmRJRCkpCiAgICAgICAgICAgICBzaG9ydGhhbmRJRCA9IENTU1Byb3BlcnR5
OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShzaG9ydGhhbmRJRCwgZGlyZWN0aW9uLCB3
cml0aW5nTW9kZSk7CiAgICAgICAgIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUqIHNob3J0aGFu
ZFZhbHVlID0gcGVuZGluZ1N1YnN0aXR1dGlvbi5zaG9ydGhhbmRWYWx1ZSgpOwotICAgICAgICBj
b25zdCBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YSA9IHNob3J0aGFuZFZhbHVlLT52YXJp
YWJsZURhdGFWYWx1ZSgpOwotICAgICAgICBBU1NFUlQodmFyaWFibGVEYXRhKTsKLSAgICAgICAg
Ci0gICAgICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Ci0gICAgICAg
IGlmICghdmFyaWFibGVEYXRhLT5yZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVydGll
cywgdmFyaWFibGVEYXRhLT50b2tlbnMoKSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKKworICAg
ICAgICBhdXRvIHJlc29sdmVkRGF0YSA9IHNob3J0aGFuZFZhbHVlLT5yZXNvbHZlVmFyaWFibGVS
ZWZlcmVuY2VzKHN0YXRlKTsKKyAgICAgICAgaWYgKCFyZXNvbHZlZERhdGEpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZl
ZFRva2VucyA9IHJlc29sdmVkRGF0YS0+dG9rZW5zKCk7CiAgICAgICAgIAogICAgICAgICBQYXJz
ZWRQcm9wZXJ0eVZlY3RvciBwYXJzZWRQcm9wZXJ0aWVzOwogICAgICAgICBpZiAoIUNTU1Byb3Bl
cnR5UGFyc2VyOjpwYXJzZVZhbHVlKHNob3J0aGFuZElELCBmYWxzZSwgcmVzb2x2ZWRUb2tlbnMs
IG1fY29udGV4dCwgcGFyc2VkUHJvcGVydGllcywgU3R5bGVSdWxlOjpTdHlsZSkpCkBAIC0yMDks
MzEgKzIxMSwzMyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhW
YXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCBwcm9wSQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YSA9
IG51bGxwdHI7Ci0KICAgICBpZiAodmFsdWUuaXNWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKCkpIHsK
ICAgICAgICAgY29uc3QgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYgdmFsdWVXaXRoUmVmZXJl
bmNlcyA9IGRvd25jYXN0PENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+KHZhbHVlKTsKLSAgICAg
ICAgdmFyaWFibGVEYXRhID0gdmFsdWVXaXRoUmVmZXJlbmNlcy52YXJpYWJsZURhdGFWYWx1ZSgp
OwotICAgICAgICBBU1NFUlQodmFyaWFibGVEYXRhKTsKKyAgICAgICAgYXV0byByZXNvbHZlZERh
dGEgPSB2YWx1ZVdpdGhSZWZlcmVuY2VzLnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoc3RhdGUp
OworICAgICAgICBpZiAoIXJlc29sdmVkRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUocHJv
cElELCByZXNvbHZlZERhdGEtPnRva2VucygpLCBtX2NvbnRleHQpOwogICAgIH0KIAotICAgIGlm
ICh2YWx1ZS5pc0N1c3RvbVByb3BlcnR5VmFsdWUoKSkgewotICAgICAgICBjb25zdCBDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlJiBjdXN0b21Qcm9wVmFsdWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlPih2YWx1ZSk7CisgICAgY29uc3QgYXV0byYgY3VzdG9tUHJvcFZhbHVlID0gZG93
bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4odmFsdWUpOworICAgIGNvbnN0IGF1dG8mIHZh
bHVlV2l0aFJlZmVyZW5jZXMgPSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZT4+KGN1c3RvbVByb3BWYWx1ZS52YWx1ZSgpKS5nZXQoKTsKIAotICAgICAgICBpZiAoY3VzdG9t
UHJvcFZhbHVlLnJlc29sdmVkVHlwZWRWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUoKmN1c3RvbVByb3BWYWx1ZS5yZXNvbHZlZFR5cGVkVmFsdWUo
KSwgc3R5bGUpOworICAgIGF1dG8mIG5hbWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlPih2YWx1ZSkubmFtZSgpOworICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSBzdGF0ZS5zdHlsZVJl
c29sdmVyLT5kb2N1bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLmdl
dChuYW1lKTsKKyAgICBhdXRvJiBzeW50YXggPSByZWdpc3RlcmVkID8gcmVnaXN0ZXJlZC0+c3lu
dGF4IDogIioiOworICAgIGF1dG8gcmVzb2x2ZWREYXRhID0gdmFsdWVXaXRoUmVmZXJlbmNlcy5y
ZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHN0YXRlKTsKIAotICAgICAgICB2YXJpYWJsZURhdGEg
PSBjdXN0b21Qcm9wVmFsdWUudmFsdWUoKTsKLSAgICB9Ci0KLSAgICBpZiAoIXZhcmlhYmxlRGF0
YSkKKyAgICBpZiAoIXJlc29sdmVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9rZW5zOwotICAgIGlmICghdmFyaWFi
bGVEYXRhLT5yZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVydGllcywgdmFyaWFibGVE
YXRhLT50b2tlbnMoKSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgLy8gRklYTUUgaGFuZGxlIFJFTSBjeWNsZXMuCisgICAgSGFzaFNldDxDU1NQ
cm9wZXJ0eUlEPiBkZXBlbmRlbmNpZXM7CisgICAgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbGxlY3RQ
YXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKHN5bnRheCwgZmFsc2UsIGRlcGVu
ZGVuY2llcywgcmVzb2x2ZWREYXRhLT50b2tlbnMoKSwgbV9jb250ZXh0KTsKKworICAgIGZvciAo
YXV0byBpZCA6IGRlcGVuZGVuY2llcykKKyAgICAgICAgc3RhdGUuc3R5bGVSZXNvbHZlci0+YXBw
bHlDYXNjYWRlZFByb3BlcnRpZXMoaWQsIGlkLCBzdGF0ZSk7CiAKLSAgICByZXR1cm4gQ1NTUHJv
cGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUocHJvcElELCByZXNvbHZlZFRva2VucywgbV9j
b250ZXh0KTsKKyAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Q
cm9wZXJ0eVZhbHVlKG5hbWUsIHN5bnRheCwgcmVzb2x2ZWREYXRhLT50b2tlbnMoKSwgKnN0YXRl
LnN0eWxlUmVzb2x2ZXIsIG1fY29udGV4dCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
ZG91YmxlPj4gQ1NTUGFyc2VyOjpwYXJzZUtleWZyYW1lS2V5TGlzdChjb25zdCBTdHJpbmcmIHNl
bGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKaW5kZXggMDliYTRiMDMw
YTZjNWY2YTJhNWYxMmE2OTFiMDA4Y2I1MjVlZWEzYy4uNDcwNjNjZGZiOWEyNTVjNTZiZmRjNDVm
NmNlNGIwMzY0NDExMDBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCkBA
IC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IEFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0eVN0YXRlOwogY2xhc3MgQ1NTUGFyc2VyT2JzZXJ2ZXI7CiBjbGFzcyBDU1NT
ZWxlY3Rvckxpc3Q7CiBjbGFzcyBDb2xvcjsKQEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBwYXJzZVNlbGVjdG9yKGNvbnN0IFN0cmluZyYsIENTU1NlbGVjdG9yTGlzdCYpOwog
Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhD
U1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBw
YXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NW
YWx1ZSYsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7CiAKICAgICBzdGF0aWMgQ29sb3Ig
cGFyc2VDb2xvcihjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZhbHNlKTsKICAgICBzdGF0
aWMgQ29sb3IgcGFyc2VTeXN0ZW1Db2xvcihjb25zdCBTdHJpbmcmLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCmluZGV4IDIxZmViYWNjNGNmYmFhNTExYmJhZWE2NDc1ZjE2MGQ1MzI1ZGMwZjYuLmMz
YTIzYjU5OWU4ZWI0ZDc5Y2E5ZjkzZWRjNjQ0ZmYwYmEzMWQ4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1c3RvbUlkZW50VmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VT
cmNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIKICNpZiBFTkFCTEUo
VkFSSUFUSU9OX0ZPTlRTKQpAQCAtNzMsOCArNzQsMTAgQEAKICNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKICNpbmNsdWRl
ICJTVkdQYXRoVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyQ29udmVydGVyLmgi
CiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgogI2luY2x1ZGUgIlN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAj
aW5jbHVkZSA8Yml0c2V0PgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC0yMTMsMTIgKzIxNiwxMyBAQCBDU1NQcm9wZXJ0eUlEIGNzc1By
b3BlcnR5SUQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgCiB1c2luZyBuYW1lc3BhY2UgQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOwogCi1DU1NQcm9wZXJ0eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJz
ZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiogcGFyc2VkUHJvcGVydGllcykK
K0NTU1Byb3BlcnR5UGFyc2VyOjpDU1NQcm9wZXJ0eVBhcnNlcihjb25zdCBDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPENT
U1Byb3BlcnR5LCAyNTY+KiBwYXJzZWRQcm9wZXJ0aWVzLCBib29sIGNvbnN1bWVXaGl0ZXNwYWNl
KQogICAgIDogbV9yYW5nZShyYW5nZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwg
bV9wYXJzZWRQcm9wZXJ0aWVzKHBhcnNlZFByb3BlcnRpZXMpCiB7Ci0gICAgbV9yYW5nZS5jb25z
dW1lV2hpdGVzcGFjZSgpOworICAgIGlmIChjb25zdW1lV2hpdGVzcGFjZSkKKyAgICAgICAgbV9y
YW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwogfQogCiB2b2lkIENTU1Byb3BlcnR5UGFyc2VyOjph
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQcm9wZXJ0eUlEIGN1cnJlbnRT
aG9ydGhhbmQsIFJlZjxDU1NWYWx1ZT4mJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1w
bGljaXQpCkBAIC0yNzgsNiArMjgyLDI3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uCiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCitib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjYW5QYXJzZVR5cGVk
Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHN5bnRheCwgY29uc3QgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgdG9rZW5zLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorewor
ICAgIENTU1Byb3BlcnR5UGFyc2VyIHBhcnNlcih0b2tlbnMsIGNvbnRleHQsIG51bGxwdHIpOwor
ICAgIHJldHVybiBwYXJzZXIuY2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoc3ludGF4
KTsKK30KKworUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IENTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgc3ludGF4LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGNvbnN0
IFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCit7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHRva2VucywgY29udGV4dCwg
bnVsbHB0ciwgZmFsc2UpOworICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiB2YWx1
ZSA9IHBhcnNlci5wYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBzeW50YXgsIHN0
eWxlUmVzb2x2ZXIpOworICAgIGlmICghdmFsdWUgfHwgIXBhcnNlci5tX3JhbmdlLmF0RW5kKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB2YWx1ZTsKK30KKwordm9pZCBD
U1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRl
bmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgsIGJvb2wgaXNSb290LCBIYXNoU2V0PENTU1Byb3Bl
cnR5SUQ+JiBkZXBlbmRlbmNpZXMsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2Vucywg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NQcm9wZXJ0eVBhcnNl
ciBwYXJzZXIodG9rZW5zLCBjb250ZXh0LCBudWxscHRyKTsKKyAgICBwYXJzZXIuY29sbGVjdFBh
cnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoc3ludGF4LCBpc1Jvb3QsIGRlcGVu
ZGVuY2llcyk7Cit9CisKIHN0YXRpYyBib29sIGlzTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CkBAIC0zMjAs
NyArMzQ1LDcgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VWYWx1ZVN0YXJ0KENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQKICAgICB9CiAKICAgICBpZiAoQ1NT
VmFyaWFibGVQYXJzZXI6OmNvbnRhaW5zVmFsaWRWYXJpYWJsZVJlZmVyZW5jZXMob3JpZ2luYWxS
YW5nZSwgbV9jb250ZXh0KSkgewotICAgICAgICBSZWZQdHI8Q1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZT4gdmFyaWFibGUgPSBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjcmVhdGUoQ1NTVmFy
aWFibGVEYXRhOjpjcmVhdGUob3JpZ2luYWxSYW5nZSkpOworICAgICAgICBSZWZQdHI8Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZT4gdmFyaWFibGUgPSBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
OjpjcmVhdGUob3JpZ2luYWxSYW5nZSk7CiAKICAgICAgICAgaWYgKGlzU2hvcnRoYW5kKSB7CiAg
ICAgICAgICAgICBSZWZQdHI8Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlPiBwZW5kaW5nVmFs
dWUgPSBDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWU6OmNyZWF0ZShwcm9wZXJ0eUlELCB2YXJp
YWJsZS5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTM4ODYsNyArMzkxMSw2IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSwgQ1NTCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKICAgICBjYXNlIENT
U1Byb3BlcnR5V2lkdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5Q3VzdG9tOiAvLyBGSVhNRTogcGFyc2luZyBhIHJlZ2lzdGVyZWQgY3VzdG9tIHBy
b3BlcnR5IHNob3VsZCBiZSBiYXNlZCBvbiBpdHMgc3ludGF4LgogICAgICAgICByZXR1cm4gY29u
c3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxv
dyk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbklubGluZVNpemU6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1pbkJsb2NrU2l6ZToKQEAgLTQyNTYsNiArNDI4MCw2NCBAQCBSZWZQdHI8Q1NTVmFsdWU+
IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIENTUwogICAgIH0KIH0KIAorYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y2FuUGFyc2VUeXBl
ZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBzeW50YXgpCit7CisgICAgaWYgKHN5
bnRheCAhPSAiKiIpIHsKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworCisg
ICAgICAgIC8vIEZpcnN0IGNoZWNrIGZvciBrZXl3b3JkcworICAgICAgICBDU1NWYWx1ZUlEIGlk
ID0gbV9yYW5nZS5wZWVrKCkuaWQoKTsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJp
dCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBhdXRvIGxvY2FsUmFuZ2UgPSBtX3Jhbmdl
OworICAgICAgICB3aGlsZSAoIWxvY2FsUmFuZ2UuYXRFbmQoKSkgeworICAgICAgICAgICAgYXV0
byBpZCA9IGxvY2FsUmFuZ2UuY29uc3VtZSgpLmZ1bmN0aW9uSWQoKTsKKyAgICAgICAgICAgIGlm
IChpZCA9PSBDU1NWYWx1ZVZhciB8fCBpZCA9PSBDU1NWYWx1ZUVudikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsgLy8gRm9yIHZhcmlhYmxlcywgd2UganVzdCBwZXJtaXQgZXZlcnl0aGlu
ZworICAgICAgICB9CisKKyAgICAgICAgYXV0byBwcmltaXRpdmVWYWwgPSBjb25zdW1lV2lkdGhP
ckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsICYm
IHByaW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIG1fcmFuZ2UuYXRFbmQoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbGxlY3RQYXJz
ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYgc3ludGF4LCBi
b29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVzKQoreworICAg
IGlmIChzeW50YXggIT0gIioiKSB7CisgICAgICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2Uo
KTsKKyAgICAgICAgYXV0byBwcmltaXRpdmVWYWwgPSBjb25zdW1lV2lkdGhPckhlaWdodChtX3Jh
bmdlLCBtX2NvbnRleHQpOworICAgICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbCAmJiBwcmltaXRpdmVWYWwtPmlz
UHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAgICAgICAgcHJpbWl0aXZlVmFsLT5jb2xsZWN0RGly
ZWN0Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOworICAgICAgICAgICAg
aWYgKGlzUm9vdCkKKyAgICAgICAgICAgICAgICBwcmltaXRpdmVWYWwtPmNvbGxlY3REaXJlY3RS
b290Q29tcHV0YXRpb25hbERlcGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOworICAgICAgICB9Cisg
ICAgfQorfQorCitSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCit7
CisgICAgaWYgKHN5bnRheCAhPSAiKiIpIHsKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVz
cGFjZSgpOworICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbCA9IGNvbnN1bWVXaWR0aE9ySGVpZ2h0
KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWwgJiYgcHJpbWl0
aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4TGVuZ3RoKG5hbWUsIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydExlbmd0aChzdHlsZVJlc29sdmVyLCAqcHJpbWl0aXZlVmFsKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gQ1NTQ3VzdG9tUHJvcGVydHlW
YWx1ZTo6Y3JlYXRlU3ludGF4QWxsKG5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKG1fcmFu
Z2UpKTsKKyAgICAgICAgd2hpbGUgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBtX3Jh
bmdlLmNvbnN1bWUoKTsKKyAgICAgICAgcmV0dXJuIHsgV1RGTW92ZShwcm9wZXJ0eVZhbHVlKSB9
OworICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCiBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gY29uc3VtZUZvbnRGYWNlVW5pY29kZVJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuaAppbmRleCA3ZGI3NDUzYzBkODQ5OWVhMTNlMDBkOTdjZjJlMGM1
MjRmNDU4YjI2Li4xZGMwNWVmODhkYWMyNjBhZTYxMDcyMjliOGRhOTZjYzRiMTdlNzc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCkBAIC0zMiw2
ICszMiw3IEBAIGNsYXNzIENTU1Byb3BlcnR5OwogY2xhc3MgQ1NTVmFsdWU7CiBjbGFzcyBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kOwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOworY2xhc3MgU3R5
bGVSZXNvbHZlcjsKICAgICAKIC8vIElucHV0czogUHJvcGVydHlJRCwgaXNJbXBvcnRhbnQgYm9v
bCwgQ1NTUGFyc2VyVG9rZW5SYW5nZS4KIC8vIE91dHB1dHM6IFZlY3RvciBvZiBDU1NQcm9wZXJ0
aWVzCkBAIC00NSwxNCArNDYsMjAgQEAgcHVibGljOgogCiAgICAgLy8gUGFyc2VzIGEgbm9uLXNo
b3J0aGFuZCBDU1MgcHJvcGVydHkKICAgICBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNp
bmdsZVZhbHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgc3RhdGljIGJvb2wgY2FuUGFyc2VUeXBlZEN1c3Rv
bVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IENTU1BhcnNlclRva2Vu
UmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiBwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBjb25zdCBDU1NQYXJzZXJUb2tlblJh
bmdlJiwgY29uc3QgU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKKyAg
ICBzdGF0aWMgdm9pZCBjb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVuZGVuY2ll
cyhjb25zdCBTdHJpbmcmIHN5bnRheCwgYm9vbCBpc1Jvb3QsIEhhc2hTZXQ8Q1NTUHJvcGVydHlJ
RD4mIGRlcGVuZGVuY2llcywgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmKTsKIAogcHJpdmF0ZToKLSAgICBDU1NQcm9wZXJ0eVBhcnNlcihjb25zdCBD
U1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIFZlY3RvcjxDU1NQ
cm9wZXJ0eSwgMjU2PiopOworICAgIENTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRv
a2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgVmVjdG9yPENTU1Byb3BlcnR5LCAy
NTY+KiwgYm9vbCBjb25zdW1lV2hpdGVzcGFjZSA9IHRydWUpOwogCiAgICAgLy8gRklYTUU6IFJl
bmFtZSBvbmNlIHRoZSBDU1NQYXJzZXJWYWx1ZS1iYXNlZCBwYXJzZVZhbHVlIGlzIHJlbW92ZWQK
ICAgICBib29sIHBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7
CiAgICAgYm9vbCBjb25zdW1lQ1NTV2lkZUtleXdvcmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBv
cnRhbnQpOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0
eUlELCBDU1NQcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKKyAgICBib29sIGNhblBh
cnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgc3ludGF4KTsKKyAgICBS
ZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gcGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFs
dWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN5bnRheCwgY29uc3QgU3R5bGVS
ZXNvbHZlciYpOworICAgIHZvaWQgY29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBl
bmRlbmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgsIGJvb2wgaXNSb290LCBIYXNoU2V0PENTU1By
b3BlcnR5SUQ+JiBkZXBlbmRlbmNpZXMpOwogCiAgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRleHQubW9kZSA9PSBIVE1MUXVpcmtzTW9kZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCmluZGV4IDg3MDg2
ZTM2YWI4MGQxZDU4Mzk2YmNhYWY5NDkxMjMzYmQ1ZDIyMjEuLjFiZTIzYjlmZWM4ZjVlY2RhZDRl
Yjg0NDg1M2Y5ZTAyY2E1YTkyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTVmFyaWFibGVQYXJzZXIuY3BwCkBAIC0xODksOCArMTg5LDggQEAgUmVmUHRyPENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU+IENTU1ZhcmlhYmxlUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uVmFsdWUo
Y29uc3QgQXQKICAgICBpZiAodHlwZSA9PSBDU1NWYWx1ZUludmFsaWQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIGlmICh0eXBlID09IENTU1ZhbHVlSW50ZXJuYWxWYXJpYWJsZVZhbHVl
KQotICAgICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlh
YmxlRGF0YSh2YXJpYWJsZU5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHJhbmdlLCBoYXNS
ZWZlcmVuY2VzIHx8IGhhc0F0QXBwbHlSdWxlKSk7Ci0gICAgcmV0dXJuIENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU6OmNyZWF0ZVdpdGhJRCh2YXJpYWJsZU5hbWUsIHR5cGUpOworICAgICAgICByZXR1
cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlVW5yZXNvbHZlZCh2YXJpYWJsZU5hbWUs
IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNyZWF0ZShyYW5nZSkpOworICAgIHJldHVybiBD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVVbnJlc29sdmVkKHZhcmlhYmxlTmFtZSwgdHlw
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25z
dGFudFByb3BlcnR5TWFwLmNwcAppbmRleCA5MGZkMTM5MzFiNzA0MWUyOWI5ZjY3OWFjM2ExZDEz
NDhjNjIwYjk3Li42YzEwOGM4ODg3MTVmNjdmYTk4MTg2MDBhYmRiMTUxMDRmYWFjMmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwCkBAIC05MCw3ICs5MCw3
IEBAIHZvaWQgQ29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQcm9wZXJ0eShDb25zdGFu
dFByb3BlcnR5IHByb3BlcnR5LCBSZWY8Q1NTCiAgICAgICAgIGJ1aWxkVmFsdWVzKCk7CiAKICAg
ICBhdXRvJiBuYW1lID0gbmFtZUZvclByb3BlcnR5KHByb3BlcnR5KTsKLSAgICBtX3ZhbHVlcy0+
c2V0KG5hbWUsIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhWYXJpYWJsZURhdGEo
bmFtZSwgV1RGTW92ZShkYXRhKSkpOworICAgIG1fdmFsdWVzLT5zZXQobmFtZSwgQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4QWxsKG5hbWUsIFdURk1vdmUoZGF0YSkpKTsKIH0K
IAogdm9pZCBDb25zdGFudFByb3BlcnR5TWFwOjpidWlsZFZhbHVlcygpCkBAIC0xMTAsNyArMTEw
LDcgQEAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IHZhcmlhYmxlRGF0YUZvclBvc2l0aXZl
UGl4ZWxMZW5ndGgoZmxvYXQgbGVuZ3RoSW5QeCkKIAogICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tl
bj4gdG9rZW5zIHsgdG9rZW4gfTsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2Uo
dG9rZW5zKTsKLSAgICByZXR1cm4gQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUodG9rZW5SYW5nZSwg
ZmFsc2UpOworICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZSh0b2tlblJhbmdlKTsK
IH0KIAogc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IHZhcmlhYmxlRGF0YUZvclBvc2l0aXZl
RHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbkluU2Vjb25kcykKQEAgLTEyMiw3ICsxMjIsNyBAQCBz
dGF0aWMgUmVmPENTU1ZhcmlhYmxlRGF0YT4gdmFyaWFibGVEYXRhRm9yUG9zaXRpdmVEdXJhdGlv
bihTZWNvbmRzIGR1cmF0aW9uSW5TZQogCiAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiB0b2tl
bnMgeyB0b2tlbiB9OwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgdG9rZW5SYW5nZSh0b2tlbnMp
OwotICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZSh0b2tlblJhbmdlLCBmYWxzZSk7
CisgICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHRva2VuUmFuZ2UpOwogfQogCiB2
b2lkIENvbnN0YW50UHJvcGVydHlNYXA6OnVwZGF0ZUNvbnN0YW50c0ZvclNhZmVBcmVhSW5zZXRz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmlu
ZGV4IGRiODVkN2QwOTNmNTI4NGNiZWI4MDJlZTg3MDA4MDhlMzkyYTcxZWQuLmM4NTI1ODg1MDI0
NzcwZDljNWI1ZDQ5MTllZDY1YmM2ZWIxMTk1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMjI5OSw4OSArMjI5OSw2IEBAIGJvb2wg
UmVuZGVyU3R5bGU6Omhhc1JlZmVyZW5jZUZpbHRlck9ubHkoKSBjb25zdAogICAgIHJldHVybiBm
aWx0ZXJPcGVyYXRpb25zLnNpemUoKSA9PSAxICYmIGZpbHRlck9wZXJhdGlvbnMuYXQoMCktPnR5
cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRTsKIH0KIAotdm9pZCBSZW5kZXJTdHls
ZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgY29uc3QgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlLCBjb25zdCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAg
IGJvb2wgc2hvdWxkVXBkYXRlSW5oZXJpdGVkID0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3VzdG9t
UHJvcGVydGllcy0+Y29udGFpbnNWYXJpYWJsZXMgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3Vz
dG9tUHJvcGVydGllcy0+Y29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXM7Ci0g
ICAgYm9vbCBzaG91bGRVcGRhdGVOb25Jbmhlcml0ZWQgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1ZhcmlhYmxlcyB8fCBtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJv
cGVydGllczsKLSAgICBhdXRvKiBpbmhlcml0ZWRQcm9wZXJ0eURhdGEgPSBzaG91bGRVcGRhdGVJ
bmhlcml0ZWQgPyAmbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVz
LmFjY2VzcygpIDogbnVsbHB0cjsKLSAgICBhdXRvKiBub25Jbmhlcml0ZWRQcm9wZXJ0eURhdGEg
PSBzaG91bGRVcGRhdGVOb25Jbmhlcml0ZWQgPyAmbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpIDogbnVsbHB0cjsKLQotICAgIEhhc2hTZXQ8
QXRvbWljU3RyaW5nPiBpbnZhbGlkUHJvcGVydGllczsKLQotICAgIGZvciAoYXV0byogY3VzdG9t
UHJvcGVydHlEYXRhIDogeyBpbmhlcml0ZWRQcm9wZXJ0eURhdGEsIG5vbkluaGVyaXRlZFByb3Bl
cnR5RGF0YSB9KSB7Ci0gICAgICAgIGlmICghY3VzdG9tUHJvcGVydHlEYXRhKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gT3VyIGZpcnN0IHBhc3MgY2hlY2tzIHRoZSB2YXJp
YWJsZXMgZm9yIHZhbGlkaXR5IGFuZCByZXBsYWNlcyBhbnkgcHJvcGVydGllcyB0aGF0IGJlY2Ft
ZQotICAgICAgICAvLyBpbnZhbGlkIHdpdGggZW1wdHkgdmFsdWVzLgotICAgICAgICBhdXRvJiBj
dXN0b21Qcm9wZXJ0aWVzID0gY3VzdG9tUHJvcGVydHlEYXRhLT52YWx1ZXM7Ci0gICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiBjdXN0b21Qcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBpZiAoIWVu
dHJ5LnZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHNlZW5Qcm9wZXJ0aWVzOwotICAg
ICAgICAgICAgZW50cnkudmFsdWUtPmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGVudHJ5LmtleSwg
KnRoaXMsIHNlZW5Qcm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBhdXRvIGludmFsaWRWYWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0
ZUludmFsaWQoKTsKLQotICAgICAgICAvLyBOb3cgaW5zZXJ0IGludmFsaWQgdmFsdWVzLCBvciBk
ZWZhdWx0cyBpZiB0aGUgcHJvcGVydHkgaXMgcmVnaXN0ZXJlZC4KLSAgICAgICAgaWYgKCFpbnZh
bGlkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcHJvcGVy
dHkgOiBpbnZhbGlkUHJvcGVydGllcykgewotICAgICAgICAgICAgICAgIGlmICghY3VzdG9tUHJv
cGVydGllcy5jb250YWlucyhwcm9wZXJ0eSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPiogcGFyZW50UHJvcGVydHkgPSBudWxscHRyOwotICAgICAgICAgICAg
ICAgIGlmIChwYXJlbnRTdHlsZSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9y
ID0gcGFyZW50U3R5bGUtPmluaGVyaXRlZEN1c3RvbVByb3BlcnRpZXMoKS5maW5kKHByb3BlcnR5
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IHBhcmVudFN0eWxlLT5pbmhl
cml0ZWRDdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCkgJiYgaXRlcmF0b3IuZ2V0KCkgJiYgaXRlcmF0
b3IuZ2V0KCktPnZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50UHJvcGVydHkg
PSAmaXRlcmF0b3IuZ2V0KCktPnZhbHVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkUHJvcGVydGllcy5nZXQocHJvcGVy
dHkpOwotCi0gICAgICAgICAgICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5o
ZXJpdHMgJiYgcGFyZW50UHJvcGVydHkpCi0gICAgICAgICAgICAgICAgICAgIGN1c3RvbVByb3Bl
cnRpZXMuc2V0KHByb3BlcnR5LCBwYXJlbnRQcm9wZXJ0eS0+Y29weVJlZigpKTsKLSAgICAgICAg
ICAgICAgICBlbHNlIGlmIChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgp
KQotICAgICAgICAgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzLnNldChwcm9wZXJ0eSwgcmVn
aXN0ZXJlZC0+aW5pdGlhbFZhbHVlQ29weSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMuc2V0KHByb3BlcnR5LCBpbnZhbGlkVmFs
dWUuY29weVJlZigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIE5v
dyB0aGF0IGFsbCBvZiB0aGUgcHJvcGVydGllcyBoYXZlIGJlZW4gdGVzdGVkIGZvciB2YWxpZGl0
eSBhbmQgcmVwbGFjZWQgd2l0aAotICAgICAgICAvLyBpbnZhbGlkIHZhbHVlcyBpZiB0aGV5IGZh
aWxlZCwgd2UgY2FuIHBlcmZvcm0gdmFyaWFibGUgc3Vic3RpdHV0aW9uIG9uIHRoZSB2YWxpZCB2
YWx1ZXMuCi0gICAgICAgIFZlY3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+IHJlc29s
dmVkVmFsdWVzOwotICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBjdXN0b21Qcm9wZXJ0aWVzKSB7
Ci0gICAgICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZW50cnkudmFsdWUtPnJlc29sdmVW
YXJpYWJsZVJlZmVyZW5jZXMocmVnaXN0ZXJlZFByb3BlcnRpZXMsIHJlc29sdmVkVmFsdWVzLCAq
dGhpcyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXaXRoIGFsbCByZXN1bHRzIGNvbXB1dGVk
LCB3ZSBjYW4gbm93IG11dGF0ZSBvdXIgdGFibGUgdG8gZWxpbWluYXRlIHRoZSB2YXJpYWJsZXMg
YW5kCi0gICAgICAgIC8vIGhvbGQgdGhlIGZpbmFsIHZhbHVlcy4gVGhpcyB3YXkgd2hlbiB3ZSBp
bmhlcml0LCB3ZSBkb24ndCBlbmQgdXAgcmVzdWJzdGl0dXRpbmcgdmFyaWFibGVzLCBldGMuCi0g
ICAgICAgIGZvciAoYXV0byYgcmVzb2x2ZWRWYWx1ZSA6IHJlc29sdmVkVmFsdWVzKQotICAgICAg
ICAgICAgY3VzdG9tUHJvcGVydGllcy5zZXQocmVzb2x2ZWRWYWx1ZS0+bmFtZSgpLCByZXNvbHZl
ZFZhbHVlLmNvcHlSZWYoKSk7Ci0KLSAgICAgICAgLy8gRmluYWxseSB3ZSBjYW4gcmVzb2x2ZSBy
ZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzIHRvIHRoZWlyIHR5cGVkIHZhbHVlcy4KLSAgICAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IGN1c3RvbVByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGF1
dG8mIG5hbWUgPSBlbnRyeS52YWx1ZS0+bmFtZSgpOwotICAgICAgICAgICAgYXV0byogcmVnaXN0
ZXJlZCA9IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldChuYW1lKTsKLQotICAgICAgICAgICAgaWYg
KCFyZWdpc3RlcmVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBh
dXRvIHByaW1pdGl2ZVZhbCA9IHN0eWxlUmVzb2x2ZXIucmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENT
U1Byb3BlcnR5Q3VzdG9tLCAqZW50cnkudmFsdWUpOwotICAgICAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWwgfHwgIXByaW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAg
ICAgIGVudHJ5LnZhbHVlID0gaW52YWxpZFZhbHVlLmNvcHlSZWYoKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBlbnRyeS52YWx1ZS0+c2V0UmVzb2x2ZWRUeXBlZFZhbHVlKFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChzdHlsZVJlc29sdmVyLCAqcHJpbWl0
aXZlVmFsKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjdXN0b21Qcm9wZXJ0eURhdGEtPmNvbnRh
aW5zVmFyaWFibGVzID0gZmFsc2U7Ci0gICAgICAgIGN1c3RvbVByb3BlcnR5RGF0YS0+Y29udGFp
bnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXMgPSBmYWxzZTsKLSAgICB9Ci19Ci0KIGZs
b2F0IFJlbmRlclN0eWxlOjpvdXRsaW5lV2lkdGgoKSBjb25zdAogewogICAgIGlmIChtX2JhY2tn
cm91bmREYXRhLT5vdXRsaW5lLnN0eWxlKCkgPT0gQm9yZGVyU3R5bGU6Ok5vbmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGRkMjQyZTc2ZDNl
ODEwOWNiODkwNzg1NzliMmM4YWI0MWJkODdlNTAuLjcwOGU2YmYwMTQyN2NlMWYwODJjZDE1YWNi
MWMzZTA2ZDEzYjgyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCkBAIC0xODYsOCArMTg2LDggQEAgcHVibGljOgogICAgIGNvbnN0IEN1c3RvbVBy
b3BlcnR5VmFsdWVNYXAmIGluaGVyaXRlZEN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT52YWx1ZXM7IH0KICAgICBj
b25zdCBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwJiBub25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGll
cy0+dmFsdWVzOyB9CiAgICAgY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSogZ2V0Q3VzdG9t
UHJvcGVydHkoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbmhlcml0
ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdpc3RlcmVkID0gZmFsc2UpIHsg
cmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nl
c3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpLCBpc1JlZ2lz
dGVyZWQpOyB9Ci0gICAgdm9pZCBzZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFs
dWUsIGJvb2wgaXNSZWdpc3RlcmVkID0gZmFsc2UpIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0
eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpLCBpc1JlZ2lzdGVyZWQpOyB9CisgICAgdm9pZCBz
ZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
UmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpIHsgcmV0dXJuIG1fcmFyZUluaGVy
aXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9w
ZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKTsgfQorICAgIHZvaWQgc2V0Tm9uSW5oZXJp
dGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZhbHVlKSB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlW
YWx1ZShuYW1lLCBXVEZNb3ZlKHZhbHVlKSk7IH0KIAogICAgIHZvaWQgc2V0SGFzVmlld3BvcnRV
bml0cyhib29sIHYgPSB0cnVlKSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzVmlld3BvcnRVbml0
cyA9IHY7IH0KICAgICBib29sIGhhc1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX25v
bkluaGVyaXRlZEZsYWdzLmhhc1ZpZXdwb3J0VW5pdHM7IH0KQEAgLTc5NSw4ICs3OTUsNiBAQCBw
dWJsaWM6CiAgICAgQXBwbGVQYXlCdXR0b25UeXBlIGFwcGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEFwcGxlUGF5QnV0dG9uVHlwZT4obV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+YXBwbGVQYXlCdXR0b25UeXBlKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIGNoZWNr
VmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9w
ZXJ0eVNldCYsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgU3R5bGVSZXNv
bHZlciYpOwotCiAvLyBhdHRyaWJ1dGUgc2V0dGVyIG1ldGhvZHMKIAogICAgIHZvaWQgc2V0RGlz
cGxheShEaXNwbGF5VHlwZSB2KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxh
eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaAppbmRleCAxYmNk
YjIyZThlOWQzYmMzOTQxMTMwNDg0MjhkYjNlNjg3ODU4MmRkLi4xMzJlNmY1MjU2MGU2NWNhYzU0
ZTRjNWI1M2ZkN2Q0MTAzNWY3NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaApAQCAtMjIsNiArMjIsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCisj
aW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgpAQCAtMzcsOSArMzgsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAg
ICAgIGlmIChjb250YWluc1ZhcmlhYmxlcyAhPSBvdGhlci5jb250YWluc1ZhcmlhYmxlcykKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgICAgICBpZiAodmFsdWVzLnNpemUoKSAhPSBv
dGhlci52YWx1ZXMuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01NCwy
NiArNTIsMTggQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQ3Vz
dG9tUHJvcGVydHlEYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KICAgICAKLSAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSwgYm9vbCBpc1Jl
Z2lzdGVyZWQpCisgICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpCiAgICAgewot
ICAgICAgICBpZiAodmFsdWUtPmNvbnRhaW5zVmFyaWFibGVzKCkpCi0gICAgICAgICAgICBjb250
YWluc1ZhcmlhYmxlcyA9IHRydWU7Ci0gICAgICAgIGlmIChpc1JlZ2lzdGVyZWQpCi0gICAgICAg
ICAgICBjb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllcyA9IHRydWU7CiAgICAg
ICAgIHZhbHVlcy5zZXQobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KIAogICAgIEN1c3Rv
bVByb3BlcnR5VmFsdWVNYXAgdmFsdWVzOwotICAgIGJvb2wgY29udGFpbnNWYXJpYWJsZXMgeyBm
YWxzZSB9OwotICAgIGJvb2wgY29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXMg
eyBmYWxzZSB9OwogCiBwcml2YXRlOgogICAgIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKCkgPSBk
ZWZhdWx0OwogICAgIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKGNvbnN0IFN0eWxlQ3VzdG9tUHJv
cGVydHlEYXRhJiBvdGhlcikKICAgICAgICAgOiBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVy
dHlEYXRhPigpCiAgICAgICAgICwgdmFsdWVzKG90aGVyLnZhbHVlcykKLSAgICAgICAgLCBjb250
YWluc1ZhcmlhYmxlcyhvdGhlci5jb250YWluc1ZhcmlhYmxlcykKLSAgICAgICAgLCBjb250YWlu
c1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllcyhvdGhlci5jb250YWluc1VucmVzb2x2ZWRS
ZWdpc3RlcmVkUHJvcGVydGllcykKICAgICB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwOTg1MmY1MzRkNTNj
ZjBhY2EzZjA0YjkxOTlhMjZlODA1ZDg4YTY5Li4zNWRiNzgyOWI0Nzc4YzVmNDQ0ODNhNjhhNzA1
N2ZlNDU5MWY2NjBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMTAtMjkgIEp1c3RpbiBN
aWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBDdXN0b20g
UHJvcGVydGllcyBBUEkgU2hvdWxkIFN1cHBvcnQgc3ludGF4PSIqIiBhbmQgIjxsZW5ndGg+Iiwg
YW5kIGhhbmRsZSBjeWNsZXMgcHJvcGVybHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTA0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jh
c2guaHRtbDogQWRkZWQuCisgICAgICAgICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNs
ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMt
YXBpL2N5Y2xlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMt
YXBpL2lubGluZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJv
cGVydGllcy1hcGkvaW5saW5lLmh0bWw6IEFkZGVkLgorCiAyMDE4LTEwLTI5ICBKdXN0aW4gTWlj
aGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjIzNzM0
NyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzLi4uIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTAwMzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IDk4NWMxZmFjNDYyZjk1MmYxNmRkYjQ4NzMyMTI4YWU0Y2UwZDQxZDMuLjNhOWM1ZWExZTZiYmZl
MDc4MDk5OGMxYWIxZWY2ZTNkMjNhMjU4NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTEwLTI5ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9t
aWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDU1MgQ3VzdG9tIFByb3BlcnRpZXMgQVBJIFNo
b3VsZCBTdXBwb3J0IHN5bnRheD0iKiIgYW5kICI8bGVuZ3RoPiIsIGFuZCBoYW5kbGUgY3ljbGVz
IHByb3Blcmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTEwNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdp
c3Rlci1wcm9wZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQt
cHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVy
dHktY3Nzb20tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMt
YXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1
ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoK
KwogMjAxOC0xMC0yOSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2ZXJ0IHIyMzczNDcgcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVydGllcy4u
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMDM5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2gtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhhZjBmZjVlOTAwNzFkZTk5ZWYwYWJmODliODc4MDI2YmRkMTBi
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMt
YXBpL2NyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaXMgdGV4dAorCisK
K1BBU1MgRmFsbGJhY2sgaXMgaGFuZGxlZCBjb3JyZWN0bHksIGFuZCB3ZSBkb24ndCBjcmFzaCAK
K1BBU1MgU2V0dGluZyB0aGUgaW5saW5lIHN0eWxlIGlzIGhhbmRsZWQgY29ycmVjdGx5IAorUEFT
UyBDU1MucmVnaXN0ZXJQcm9wZXJ0eSAKK1BBU1MgU2V0dGluZyB0aGUgaW5saW5lIHN0eWxlIGlz
IGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gcmVnaXN0ZXJlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMv
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMmNkNzBh
MmEzMWRlYWI5OWYwMDMyYzQxZmVhN2E1YzhhYjdmOWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0bWwKQEAgLTAsMCArMSw2
MyBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50
YWw6Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVlc0VuYWJsZWQ9dHJ1ZSBdIC0tPgorPCEtLSBo
dHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjLysvMDFjZTQzMTQw
OWUzYTAxOTg1ODY3NzYyNmE5ODNjNTUxNjhkYTZkYy90aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0
VGVzdHMvY3VzdG9tLXByb3BlcnRpZXMvcmVnaXN0ZXItcHJvcGVydHkuaHRtbCAtLT4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzdHls
ZT4KKyAgI3Rlc3QxIHsKKyAgICBmb250LXNpemU6IHZhcigtLWZvbywgMzBweCk7CisgICAgLS1m
b286IHZhcigtLWJhciwgMjBweCk7CisgICAgLS1iYXI6IHZhcigtLWJheiwgdmFyKC0tZm9vKSk7
CisgIH0KKzwvc3R5bGU+Cis8ZGl2PgorICA8aDIgaWQ9dGVzdDE+VGhpcyBpcyB0ZXh0PC9oMj4K
KzwvZGl2PgorPHNjcmlwdD4KK3ZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSh0
ZXN0MSk7Cit2YXIgaW5saW5lU3R5bGUgPSB0ZXN0MS5zdHlsZTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6
JyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tZm9vJyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
VmFsdWUoJy0tYmFyJyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBweCcpOworfSwgIkZhbGxiYWNrIGlzIGhhbmRs
ZWQgY29ycmVjdGx5LCBhbmQgd2UgZG9uJ3QgY3Jhc2giKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYmF6JywgJyAgIDQwcHgnKTsKKyAgYXNzZXJ0
X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcgNDBweCcp
OworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1mb28n
KSwgJycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1iYXInKSwgJycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1iYXonKSwgJyA0MHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgJzMwcHgnKTsKKyAgaW5saW5lU3R5bGUucmVt
b3ZlUHJvcGVydHkoJy0tYmF6Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCctLWJheicpLCAnJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZvbycpLCAnJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnJyk7CisgIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgJzMwcHgnKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcn
KTsKK30sICJTZXR0aW5nIHRoZSBpbmxpbmUgc3R5bGUgaXMgaGFuZGxlZCBjb3JyZWN0bHkiKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWZv
bycsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnMjAwcHgnLCBpbmhlcml0czog
dHJ1ZX0pOworICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tYmFyJywgc3ludGF4OiAn
PGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcyMDBweCcsIGluaGVyaXRzOiB0cnVlfSk7CisgIENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1iYXonLCBzeW50YXg6ICc8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTogJzIwMHB4JywgaW5oZXJpdHM6IHRydWV9KTsKK30sICJDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0
eSgnLS1iYXonLCAnICAgNDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJzQwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRl
ZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcyMDBweCcpOworICBhc3NlcnRfZXF1
YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXInKSwgJzIwMHB4Jyk7Cisg
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAn
NDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
Zm9udC1zaXplJyksICcyMDBweCcpOworICBpbmxpbmVTdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1i
YXonKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YmF6JyksICcyMDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1mb28nKSwgJzIwMHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnMjAwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMjAwcHgnKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcy
MDBweCcpOworfSwgIlNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVkIGNvcnJlY3Rs
eSB3aGVuIHJlZ2lzdGVyZWQiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2Q0ODZlYjIwYTY5YjlhNTk5NTEwOWJlMDhiYjM0NWU0NGY5NjgwOQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACit0ZXN0CisKK3Rlc3QKKwordGVzdAorCit0ZXN0
CisKK3Rlc3QKKworCitQQVNTIFJlZ2lzdHJhdGlvbiBpcyBzdWNjZXNzZnVsIAorUEFTUyBKUyBB
dHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAxIAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFy
ZSB2YWxpZCBmb3IgZWxlbWVudCAyIAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3Ig
ZWxlbWVudCAzIAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA0IAor
UEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA1IAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sIGIvTGF5
b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZWMyNGM4ODQ0ODliMzg5OTJjNWQ2MmFkNzU2MmVmZGQwMmJjOTJhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbApA
QCAtMCwwICsxLDEzMCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBleHBlcmltZW50YWw6Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVlc0VuYWJsZWQ9dHJ1ZSBd
IC0tPgorPCEtLSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
LysvMDFjZTQzMTQwOWUzYTAxOTg1ODY3NzYyNmE5ODNjNTUxNjhkYTZkYy90aGlyZF9wYXJ0eS9X
ZWJLaXQvTGF5b3V0VGVzdHMvY3VzdG9tLXByb3BlcnRpZXMvcmVnaXN0ZXItcHJvcGVydHkuaHRt
bCAtLT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+CisKKzxzdHlsZT4KKyAgI3BhcmVudDEgeworICAgIHdpZHRoOiA1MDBweDsKKyAgICBiYWNr
Z3JvdW5kOiBibHVlOworICB9CisgICNjaGlsZDEgeworICAgIGJhY2tncm91bmQ6IGdyZWVuOwor
ICAgIGZvbnQtc2l6ZTogMTBweDsKKyAgICAtLWE6IDEwZW07CisgICAgd2lkdGg6IHZhcigtLWEp
OworICB9CisKKyAgI3BhcmVudDIgeworICAgIHdpZHRoOiA1MDBweDsKKyAgICBiYWNrZ3JvdW5k
OiBibHVlOworICAgIC0tYTogMTBlbTsKKyAgICBmb250LXNpemU6IGNhbGMoIHZhcigtLWEpICsg
LTE1MHB4KTsKKyAgfQorICAjY2hpbGQyIHsKKyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICB3
aWR0aDogdmFyKC0tYSk7CisgIH0KKworICAjcGFyZW50MyB7CisgICAgd2lkdGg6IDUwMHB4Owor
ICAgIGJhY2tncm91bmQ6IGJsdWU7CisgICAgLS1iOiAxMGVtOworICAgIGZvbnQtc2l6ZTogY2Fs
YyggdmFyKC0tYikgKyAtMTUwcHgpOworICB9CisgICNjaGlsZDMgeworICAgIGJhY2tncm91bmQ6
IGdyZWVuOworICAgIHdpZHRoOiB2YXIoLS1iKTsKKyAgfQorCisgICNwYXJlbnQ0IHsKKyAgICB3
aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAtLWI6IDEwZW07CisgICAg
Zm9udC1zaXplOiBjYWxjKCB2YXIoLS1iKSArIC0xNTBweCk7CisgIH0KKyAgI2NoaWxkNCB7Cisg
ICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgLS1hOiB2YXIoLS1iKTsKKyAgICBmb250LXNpemU6
IHZhcigtLWEpOworICAgIHdpZHRoOiB2YXIoLS1hKTsKKyAgfQorCisgICNwYXJlbnQ1IHsKKyAg
ICB3aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAtLWI6IDVlbTsKKyAg
ICBmb250LXNpemU6IGNhbGMoIHZhcigtLWIpICsgLTcwcHgpOworICB9CisgICNjaGlsZDUgewor
ICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIC0tYzogdmFyKC0tYik7CisgICAgZm9udC1zaXpl
OiB2YXIoLS1jKTsKKyAgICB3aWR0aDogdmFyKC0tYyk7CisgIH0KKzwvc3R5bGU+Cis8ZGl2Pgor
ICA8ZGl2IGlkPSJwYXJlbnQxIj48ZGl2IGlkPSJjaGlsZDEiPjxwPnRlc3Q8L3A+PC9kaXY+PC9k
aXY+CisgIDxkaXYgaWQ9InBhcmVudDIiPjxkaXYgaWQ9ImNoaWxkMiI+PHA+dGVzdDwvcD48L2Rp
dj48L2Rpdj4KKyAgPGRpdiBpZD0icGFyZW50MyI+PGRpdiBpZD0iY2hpbGQzIj48cD50ZXN0PC9w
PjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJwYXJlbnQ0Ij48ZGl2IGlkPSJjaGlsZDQiPjxwPnRl
c3Q8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InBhcmVudDUiPjxkaXYgaWQ9ImNoaWxkNSI+
PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVz
dF9wcm9wKGlkLCBwcm9wLCBleHBlY3RlZCkgeworICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSkuZ2V0UHJvcGVydHlWYWx1
ZShwcm9wKS50cmltKCksIGV4cGVjdGVkKTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgQ1NT
LnJlZ2lzdGVyUHJvcGVydHkoeworICAgIG5hbWU6ICctLWEnLAorICAgIHN5bnRheDogJzxsZW5n
dGg+JywKKyAgICBpbmhlcml0czogdHJ1ZSwKKyAgICBpbml0aWFsVmFsdWU6ICcyMDBweCcKKyAg
fSkKK30sICJSZWdpc3RyYXRpb24gaXMgc3VjY2Vzc2Z1bCIpOwordGVzdChmdW5jdGlvbigpIHsK
KyAgdGVzdF9wcm9wKCdjaGlsZDEnLCAnd2lkdGgnLCAnMTAwcHgnKTsKKyAgdGVzdF9wcm9wKCdj
aGlsZDEnLCAnLS1hJywgJzEwMHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQxJywgJy0tYicsICcn
KTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQxJywgJy0tYScsICcyMDBweCcpOworICB0ZXN0X3Byb3Ao
J3BhcmVudDEnLCAnLS1iJywgJycpOworfSwgIkpTIEF0dHJpYnV0ZXMgYXJlIHZhbGlkIGZvciBl
bGVtZW50IDEiKTsKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHRlc3RfcHJvcCgnY2hpbGQyJywgJ3dp
ZHRoJywgJzE2MHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQyJywgJy0tYScsICcxNjBweCcpOwor
ICB0ZXN0X3Byb3AoJ2NoaWxkMicsICctLWInLCAnJyk7CisgIHRlc3RfcHJvcCgnY2hpbGQyJywg
J2ZvbnQtc2l6ZScsICcxNnB4Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50MicsICctLWEnLCAnMTYw
cHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQyJywgJy0tYicsICcnKTsKKyAgdGVzdF9wcm9wKCdw
YXJlbnQyJywgJ2ZvbnQtc2l6ZScsICcxNnB4Jyk7Cit9LCAiSlMgQXR0cmlidXRlcyBhcmUgdmFs
aWQgZm9yIGVsZW1lbnQgMiIpOwordGVzdChmdW5jdGlvbigpIHsKKyAgdGVzdF9wcm9wKCdjaGls
ZDMnLCAnd2lkdGgnLCAnMTAwcHgnKTsKKyAgdGVzdF9wcm9wKCdjaGlsZDMnLCAnLS1hJywgJzIw
MHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQzJywgJy0tYicsICcxMGVtJyk7CisgIHRlc3RfcHJv
cCgnY2hpbGQzJywgJ2ZvbnQtc2l6ZScsICcxMHB4Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50Mycs
ICctLWEnLCAnMjAwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQzJywgJy0tYicsICcxMGVtJyk7
CisgIHRlc3RfcHJvcCgncGFyZW50MycsICdmb250LXNpemUnLCAnMTBweCcpOworfSwgIkpTIEF0
dHJpYnV0ZXMgYXJlIHZhbGlkIGZvciBlbGVtZW50IDMiKTsKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
IHRlc3RfcHJvcCgnY2hpbGQ0JywgJ3dpZHRoJywgJzEwMHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hp
bGQ0JywgJy0tYScsICcxMDBweCcpOworICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICctLWInLCAnMTBl
bScpOworICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICdmb250LXNpemUnLCAnMTBweCcpOworICB0ZXN0
X3Byb3AoJ3BhcmVudDQnLCAnLS1hJywgJzIwMHB4Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50NCcs
ICctLWInLCAnMTBlbScpOworICB0ZXN0X3Byb3AoJ3BhcmVudDQnLCAnZm9udC1zaXplJywgJzEw
cHgnKTsKK30sICJKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA0Iik7Cit0ZXN0
KGZ1bmN0aW9uKCkgeworICB0ZXN0X3Byb3AoJ2NoaWxkNScsICd3aWR0aCcsICcyNTBweCcpOwor
ICB0ZXN0X3Byb3AoJ2NoaWxkNScsICctLWMnLCAnNWVtJyk7CisgIHRlc3RfcHJvcCgnY2hpbGQ1
JywgJy0tYicsICc1ZW0nKTsKKyAgdGVzdF9wcm9wKCdjaGlsZDUnLCAnZm9udC1zaXplJywgJzUw
cHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQ1JywgJy0tYScsICcyMDBweCcpOworICB0ZXN0X3By
b3AoJ3BhcmVudDUnLCAnLS1iJywgJzVlbScpOworICB0ZXN0X3Byb3AoJ3BhcmVudDUnLCAnZm9u
dC1zaXplJywgJzEwcHgnKTsKK30sICJKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVu
dCA1Iik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJv
cGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20t
cHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTY4MTYyNjUy
OWZiZjEwYjFjNTBmZjAwYzM3MTExYTkwZWM2YzFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTUgQEAKK3Rlc3QKKworCitQQVNTIENTU09NIHNldHRlcnMgZnVuY3Rpb24gYXMgZXhw
ZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIAorUEFTUyBDU1MucmVnaXN0ZXJQcm9w
ZXJ0eSAKK1BBU1MgRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFkYWJsZSBmcm9t
IGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFsdWUgCitQQVNT
IFZhbHVlcyBub3QgbWF0Y2hpbmcgdGhlIHJlZ2lzdGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQgCitQ
QVNTIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlubGluZSBzdHlsZXMgCitQQVNTIFN0eWxl
c2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSAKK1BBU1MgVmFsaWQgdmFsdWVzIGNhbiBi
ZSBzZXQgb24gaW5saW5lIHN0eWxlcyAKK1BBU1MgVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgCitQ
QVNTIFZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlvbiAKK1BBU1MgVmFy
IHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uLCBldmVuIHdoZW4gaXQgaXMg
b2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlIAorUEFTUyBWYXIgdmFsdWVzIGFyZSBhY2NlcHRl
ZCB3aXRob3V0IHZhbGlkYXRpb24sIGV2ZW4gd2hlbiBpdCBpcyBvYnZpb3VzIHRoZXkgd2lsbCBu
b3QgcGFyc2UgKHR5cGVkKSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1w
cm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVy
dGllcy1hcGkvaW5saW5lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFiYTdmZWJjMDYzOTQ0NjViY2NmZWQ4
NGNlYTlmZTIzMTU0ZWIwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1jdXN0
b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWwKQEAgLTAsMCArMSwxMjAgQEAKKzwhRE9DVFlQ
RSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU0N1c3RvbVBy
b3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkPXRydWUgXSAtLT4KKzwhLS0gaHR0cHM6Ly9jaHJvbWl1
bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rLzAxY2U0MzE0MDllM2EwMTk4NTg2Nzc2
MjZhOTgzYzU1MTY4ZGE2ZGMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL2N1c3RvbS1w
cm9wZXJ0aWVzL3JlZ2lzdGVyLXByb3BlcnR5Lmh0bWwgLS0+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CisgICN0ZXN0MSB7
CisgICAgLS1hOiAxMGVtOworICAgIC0tYjogMTBlbTsKKyAgfQorPC9zdHlsZT4KKzxkaXY+Cisg
IDxkaXYgaWQ9dGVzdDE+PHA+dGVzdDwvcD48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKwordmFy
IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHRlc3QxKTsKK3ZhciBpbmxpbmVTdHls
ZSA9IHRlc3QxLnN0eWxlOwordmFyIHNoZWV0U3R5bGUgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1sw
XS5jc3NSdWxlc1swXS5zdHlsZTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgLy8gTm90aGluZyBy
ZWdpc3RlcmVkIHlldCwgd2hhdGV2ZXIgeW91IHNwZWNpZnkgd29ya3MKKyAgYXNzZXJ0X2VxdWFs
cyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnIDEwZW0nKTsKKyAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDEwZW0n
KTsKKworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2hlbGxvJyk7CisgIGlubGlu
ZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnYm9uam91cicpOworCisgIGFzc2VydF9lcXVhbHMo
aW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycpOworICBhc3NlcnRf
ZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnYm9uam91cicpOwor
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdo
ZWxsbycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1iJyksICdib25qb3VyJyk7Cit9LCAiQ1NTT00gc2V0dGVycyBmdW5jdGlvbiBhcyBleHBlY3Rl
ZCBmb3IgdW5yZWdpc3RlcmVkIHByb3BlcnRpZXMiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
Q1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWEnLCBzeW50YXg6ICc8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTogJzBweCcsIGluaGVyaXRzOiBmYWxzZX0pOworICBDU1MucmVnaXN0ZXJQcm9w
ZXJ0eSh7bmFtZTogJy0tcmVnaXN0ZXJlZCcsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZh
bHVlOiAnMHB4JywgaW5oZXJpdHM6IGZhbHNlfSk7Cit9LCAiQ1NTLnJlZ2lzdGVyUHJvcGVydHki
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2hlbGxvJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7CisgIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOworICBhc3NlcnRf
ZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7
Cit9LCAiRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFkYWJsZSBmcm9tIGlubGlu
ZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFsdWUiKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICdoaScpOworICBp
bmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hpJyk7CisgIGFzc2VydF9lcXVhbHMoaW5s
aW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycpOworICBhc3NlcnRfZXF1
YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGknKTsKK30sICJWYWx1
ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3QgYmUgc2V0Iik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgIGlubGluZVN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWEnKTsKKyAg
aW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxp
bmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJycpOworICBhc3NlcnRfZXF1YWxzKGlu
bGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnJyk7CisgIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzE2MHB4Jyk7CisgIGFzc2Vy
dF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJyAxMGVtJyk7
Cit9LCAiVmFsdWVzIGNhbiBiZSByZW1vdmVkIGZyb20gaW5saW5lIHN0eWxlcyIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICBzaGVldFN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnYmFuYW5hJyk7
IC8vIEludmFsaWQsIG5vIGNoYW5nZQorICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1hJyksICcxNjBweCcpOworICBzaGVldFN0eWxlLnNldFByb3BlcnR5
KCctLWEnLCAnMjBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1hJyksICcyMHB4Jyk7CisgIHNoZWV0U3R5bGUuc2V0UHJvcGVydHkoJy0tYScs
ICdpbml0aWFsJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWEnKSwgJzBweCcpOworfSwgIlN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBD
U1NPTSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgn
LS1hJywgJzMwZW0nKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcyMGVtJyk7
CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcz
MGVtJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1i
JyksICcyMGVtJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWEnKSwgJzQ4MHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCctLWInKSwgJzIwZW0nKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHko
Jy0tYScsICdpbmhlcml0Jyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1hJyksICdpbmhlcml0Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOworfSwgIlZhbGlkIHZhbHVlcyBjYW4g
YmUgc2V0IG9uIGlubGluZSBzdHlsZXMiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5l
U3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcgMjBweCcpOworICBpbmxpbmVTdHlsZS5zZXRQcm9w
ZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tYikgKyAxMHB4KScpOworICBhc3NlcnRfZXF1YWxzKGlu
bGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDIwcHgnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2NhbGModmFyKC0tYikg
KyAxMHB4KScpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1iJyksICcgMjBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1hJyksICczMHB4Jyk7Cit9LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQi
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYics
ICdoZWxsbycpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0t
YikgKyAxNXB4KScpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFs
dWUoJy0tYicpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWEnKSwgJ2NhbGModmFyKC0tYikgKyAxNXB4KScpOworICBhc3NlcnRfZXF1
YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdoZWxsbycpOworICBh
c3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcwcHgn
KTsKK30sICJWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlkYXRpb24iKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICdoZWxs
bycpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tYikgMTVw
eCknKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWIn
KSwgJ2hlbGxvJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICdjYWxjKHZhcigtLWIpIDE1cHgpJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7CisgIGFzc2VydF9lcXVh
bHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOworfSwgIlZh
ciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlvbiwgZXZlbiB3aGVuIGl0IGlz
IG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBp
bmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hlbGxvJyk7CisgIGlubGluZVN0eWxlLnNl
dFByb3BlcnR5KCctLWEnLCAnY2FsYyh2YXIoLS1yZWdpc3RlcmVkKSAxNXB4KScpOworICBhc3Nl
cnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsK
KyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2Nh
bGModmFyKC0tcmVnaXN0ZXJlZCkgMTVweCknKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMHB4Jyk7Cit9LCAiVmFyIHZh
bHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uLCBldmVuIHdoZW4gaXQgaXMgb2J2
aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlICh0eXBlZCkiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3ludGF4LXBh
cnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IGU5ZTJmZTczOGFiM2EyZGJkYWZkOTEwYjY0NjYxZDJh
ZGQ4M2UwM2QuLjJlYTc4ZTI5ODA2MDY4ZTViM2MzZjZlYzc5ZjZiZjlhOGE2YjE4Y2QgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3ludGF4LXBhcnNpbmct
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3lu
dGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1GQUlMIHN5bnRheDon
KicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9l
cyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitQQVNTIHN5bnRheDonKicsIGluaXRp
YWxWYWx1ZTonYScgaXMgdmFsaWQgCiBGQUlMIHN5bnRheDonICogJywgaW5pdGlhbFZhbHVlOidi
JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhl
IGdpdmVuIHN5bnRheC4KIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonMnB4
JyBpcyB2YWxpZCAKIEZBSUwgc3ludGF4OicgPG51bWJlcj4nLCBpbml0aWFsVmFsdWU6JzUnIGlz
IHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2
ZW4gc3ludGF4LgpAQCAtOSwxMSArOSwxMSBAQCBGQUlMIHN5bnRheDonIDxsZW5ndGg+KyB8IDxw
ZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonMnB4IDhweCcgaXMgdmFsaWQgVGhlIGdpdgogUEFT
UyBzeW50YXg6JzxsZW5ndGg+fDxwZXJjZW50YWdlPnw8bGVuZ3RoLXBlcmNlbnRhZ2U+JywgaW5p
dGlhbFZhbHVlOicycHgnIGlzIHZhbGlkIAogRkFJTCBzeW50YXg6Jzxjb2xvcj4gfCA8aW1hZ2U+
IHwgPHVybD4gfCA8aW50ZWdlcj4gfCA8YW5nbGU+JywgaW5pdGlhbFZhbHVlOidyZWQnIGlzIHZh
bGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4g
c3ludGF4LgogRkFJTCBzeW50YXg6Jzx0aW1lPiB8IDxyZXNvbHV0aW9uPiB8IDx0cmFuc2Zvcm0t
bGlzdD4gfCA8Y3VzdG9tLWlkZW50PicsIGluaXRpYWxWYWx1ZToncmVkJyBpcyB2YWxpZCBUaGUg
Z2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4K
LUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMgdmFsaWQgVGhlIGdp
dmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1G
QUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5YXkgKD8/KX0n
IGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUg
Z2l2ZW4gc3ludGF4LgotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAndGhpcyBp
cyB2YWxpZCB0b28nJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBw
YXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVl
Oid1bm1hdGNoZWQgb3BlbmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCBUaGUgZ2l2
ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZB
SUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlh
bCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KK1BBU1Mgc3ludGF4
OicqJywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMgdmFsaWQgCitQQVNTIHN5bnRheDonKics
IGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5YXkgKD8/KX0nIGlzIHZhbGlkIAorUEFT
UyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAndGhpcyBpcyB2YWxpZCB0b28nJyBpcyB2
YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bm1hdGNoZWQgb3BlbmluZyBi
cmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZh
bHVlOiciJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTon
MCcgaXMgdmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwcHgg
Lyo6KSovJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTon
IGNhbGMoLTJweCknIGlzIHZhbGlkIApAQCAtNjMsNyArNjMsNyBAQCBiYW5hbmFccgogRkFJTCBz
eW50YXg6J2JhDAogfAluYVxyfG55YScsIGluaXRpYWxWYWx1ZTonbnlhJyBpcyB2YWxpZCBUaGUg
Z2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4K
IEZBSUwgc3ludGF4OidudWxsJywgaW5pdGlhbFZhbHVlOidudWxsJyBpcyB2YWxpZCBUaGUgZ2l2
ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZB
SUwgc3ludGF4Oid1bmRlZmluZWQnLCBpbml0aWFsVmFsdWU6J3VuZGVmaW5lZCcgaXMgdmFsaWQg
VGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50
YXguCitQQVNTIHN5bnRheDondW5kZWZpbmVkJywgaW5pdGlhbFZhbHVlOid1bmRlZmluZWQnIGlz
IHZhbGlkIAogRkFJTCBzeW50YXg6J2FycmF5JywgaW5pdGlhbFZhbHVlOidhcnJheScgaXMgdmFs
aWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBz
eW50YXguCiBQQVNTIHN5bnRheDonYmFuYW5hLG55YScsIGluaXRpYWxWYWx1ZTonYmFuYW5hJyBp
cyBpbnZhbGlkIAogUEFTUyBzeW50YXg6J2JhbmFuXDYxJywgaW5pdGlhbFZhbHVlOidiYW5hbmEn
IGlzIGludmFsaWQgCkBAIC04NSwzNiArODUsMzYgQEAgUEFTUyBzeW50YXg6J3Vuc2V0JywgaW5p
dGlhbFZhbHVlOid1bnNldCcgaXMgaW52YWxpZAogRkFJTCBzeW50YXg6JzxsZW5ndGg+fGluaXRp
YWwnLCBpbml0aWFsVmFsdWU6JzEwcHgnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rp
b24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRh
eCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90
IHRocm93CiBGQUlMIHN5bnRheDonPGxlbmd0aD58SU5IRVJJVCcsIGluaXRpYWxWYWx1ZTonMTBw
eCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVy
UHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRp
YWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwgc3ludGF4Oic8
cGVyY2VudGFnZT58dW5zRXQnLCBpbml0aWFsVmFsdWU6JzIlJyBpcyBpbnZhbGlkIGFzc2VydF90
aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwg
c3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFs
c2V9KSIgZGlkIG5vdCB0aHJvdwotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2luaXRp
YWwnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5oZXJpdCcg
aXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bnNldCcgaXMgaW52
YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidyZXZlcnQnIGlzIGludmFsaWQg
CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcgaXMgaW52YWxpZCBhc3Nl
cnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5h
bWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6
IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidp
bmhlcml0JyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVn
aXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTog
aW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50
YXg6JyonLCBpbml0aWFsVmFsdWU6J3Vuc2V0JyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1
bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBz
eW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlk
IG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3JldmVydCcgaXMgaW52
YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHko
e25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwg
aW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4Oic8Y3VzdG9tLWlk
ZW50PicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8
Y3VzdG9tLWlkZW50PisnLCBpbml0aWFsVmFsdWU6J2ZvbyBpbmhlcml0IGJhcicgaXMgaW52YWxp
ZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOicpJyBpcyBpbnZhbGlkIAotUEFTUyBz
eW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbKV0nIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDon
KicsIGluaXRpYWxWYWx1ZTond2hlZSEnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGlu
aXRpYWxWYWx1ZTonIgotJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFs
dWU6J3VybChtb28gJycpJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFs
dWU6J3NlbWk7Y29sb24nIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1
ZTondmFyKGludmFsaWQgdmFyIHJlZiknIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGlu
aXRpYWxWYWx1ZTondmFyKC0tZm9vKScgaXMgaW52YWxpZCAKK0ZBSUwgc3ludGF4OicqJywgaW5p
dGlhbFZhbHVlOicpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBD
U1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxW
YWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJ
TCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbKV0nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93
czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50
YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0p
IiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTond2hlZSEnIGlz
IGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3Bl
cnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFs
dWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRheDonKicsIGlu
aXRpYWxWYWx1ZTonIgorJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9
PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRp
YWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwor
RkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3VybChtb28gJycpJyBpcyBpbnZhbGlkIGFz
c2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTog
bmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0
czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6
J3NlbWk7Y29sb24nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZh
bHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlM
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKGludmFsaWQgdmFyIHJlZiknIGlzIGludmFs
aWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtu
YW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGlu
aGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxW
YWx1ZTondmFyKC0tZm9vKScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkg
PT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0
aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cK
IFBBU1Mgc3ludGF4OidiYW5hbmEnLCBpbml0aWFsVmFsdWU6J2JBbkFuQScgaXMgaW52YWxpZCAK
IFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTondmFyKC0tbW9vKScgaXMgaW52
YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonMTAnIGlzIGludmFs
aWQgCiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwJScgaXMgaW52YWxp
ZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25h
bWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5o
ZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwgc3ludGF4Oic8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTonY2FsYyg1cHggKyAxMCUpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1
bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBz
eW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlk
IG5vdCB0aHJvdwogUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDVw
eCAqIDNweCAvIDZweCknIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0
aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgCitGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0
aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlh
bFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBG
QUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwdm1pbicgaXMgaW52YWxpZCBh
c3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6
IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJp
dHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLVBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRp
YWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6JzxsZW5n
dGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDRweCArIGNhbGMoOCAqIDJlbSkpJyBpcyBpbnZhbGlk
IAotUEFTUyBzeW50YXg6JzxsZW5ndGg+KycsIGluaXRpYWxWYWx1ZTonY2FsYygyZXggKyAxNnB4
KScgaXMgaW52YWxpZCAKK0ZBSUwgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2Fs
Yyg0cHggKyAzZW0pJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBD
U1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxW
YWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJ
TCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDRweCArIGNhbGMoOCAqIDJl
bSkpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0
ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5p
dGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6
JzxsZW5ndGg+KycsIGluaXRpYWxWYWx1ZTonY2FsYygyZXggKyAxNnB4KScgaXMgaW52YWxpZCBh
c3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6
IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJp
dHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPisnLCBpbml0
aWFsVmFsdWU6JzEwcHggY2FsYygyMHB4ICsgNHJlbSknIGlzIGludmFsaWQgCiBQQVNTIHN5bnRh
eDonPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4rJywgaW5pdGlhbFZhbHVlOidjYWxjKDEwMHZoIC0g
MTBweCkgMzBweCcgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxW
YWx1ZTonMTBweDsnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonPGxlbmd0aC1wZXJjZW50YWdl
PicsIGluaXRpYWxWYWx1ZTonY2FsYygycHggKyAxMCUgKyA3ZXgpJyBpcyBpbnZhbGlkIAorRkFJ
TCBzeW50YXg6JzxsZW5ndGgtcGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6J2NhbGMoMnB4ICsg
MTAlICsgN2V4KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NT
LnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFs
dWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwg
c3ludGF4Oic8cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6JzAnIGlzIGludmFsaWQgYXNzZXJ0
X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1l
LCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBm
YWxzZX0pIiBkaWQgbm90IHRocm93CiBQQVNTIHN5bnRheDonPGludGVnZXI+JywgaW5pdGlhbFZh
bHVlOicxLjAnIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGludGVnZXI+JywgaW5pdGlhbFZh
bHVlOicxZTAnIGlzIGludmFsaWQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lz
dGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMt
YXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXgg
ZmMyN2IwZGYyOTk1YTdiN2Y0ZWEwZDc3NWMwZDdiNzUxZjFlZDEwYi4uNTY1NGU4MmM2YTgyYTRj
MmUyOWNiMWYzNTYwNDEyMjVkMjExZTIzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9y
ZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVz
LXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4
dApAQCAtMiw2ICsyLDYgQEAKIFBBU1MgUmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGFyZSBjb3JyZWN0
bHkgaW5oZXJpdGVkIChvciBub3QpIGRlcGVuZGluZyBvbiB0aGUgaW5oZXJpdHMgZmxhZy4gCiBQ
QVNTIEV4cGxpY2l0bHkgaW5oZXJpdGluZyBmcm9tIGEgcGFyZW50IHdpdGggYW4gaW52YWxpZCB2
YWx1ZSByZXN1bHRzIGluIGluaXRpYWwgdmFsdWUuIAogUEFTUyBFeHBsaWNpdGx5IGluaGVyaXRp
bmcgZnJvbSBhIHBhcmVudCB3aXRoIG5vIHZhbHVlIHJlc3VsdHMgaW4gaW5pdGlhbCB2YWx1ZS4g
Ci1GQUlMIFJlZmVyZW5jZSB0byB1bmRlZmluZWQgdmFyaWFibGUgcmVzdWx0cyBpbiBpbmhlcml0
ZWQgdmFsdWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjQycHgiIGJ1dCBnb3QgIjBweCIKLUZB
SUwgUmVmZXJlbmNlIHRvIHN5bnRheC1pbmNvbXBhdGlibGUgdmFyaWFibGUgcmVzdWx0cyBpbiBp
bmhlcml0ZWQgdmFsdWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjQycHgiIGJ1dCBnb3QgIjBw
eCIKK1BBU1MgUmVmZXJlbmNlIHRvIHVuZGVmaW5lZCB2YXJpYWJsZSByZXN1bHRzIGluIGluaGVy
aXRlZCB2YWx1ZSAKK1BBU1MgUmVmZXJlbmNlIHRvIHN5bnRheC1pbmNvbXBhdGlibGUgdmFyaWFi
bGUgcmVzdWx0cyBpbiBpbmhlcml0ZWQgdmFsdWUgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVl
cy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1
ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhwZWN0ZWQudHh0CmluZGV4IDBkNTU2
MWY0OGU1NjdlMzYyNzkyNmE0MTFhNzVlMGVjYjRiMDY4NTUuLmVmY2M1YzJlY2Y4ZWY1YThlNDJm
ODJkZmM2M2U0ZmIxODJhNDc5ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0
ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9y
ZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVjdGVkLnR4dApAQCAtMiw4ICsyLDggQEAKIFBB
U1MgQ1NTT00gc2V0dGVycyBmdW5jdGlvbiBhcyBleHBlY3RlZCBmb3IgdW5yZWdpc3RlcmVkIHBy
b3BlcnRpZXMgCiBGQUlMIENTUy5yZWdpc3RlclByb3BlcnR5IFRoZSBnaXZlbiBpbml0aWFsIHZh
bHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBGb3JtZXJseSB2
YWxpZCB2YWx1ZXMgYXJlIHN0aWxsIHJlYWRhYmxlIGZyb20gaW5saW5lIHN0eWxlcyBidXQgYXJl
IGNvbXB1dGVkIGFzIHRoZSB1bnNldCB2YWx1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYmx1
ZSIgYnV0IGdvdCAiaGVsbG8iCi1GQUlMIFZhbHVlcyBub3QgbWF0Y2hpbmcgdGhlIHJlZ2lzdGVy
ZWQgdHlwZSBjYW4ndCBiZSBzZXQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjUiIGJ1dCBnb3Qg
ImhpIgorRkFJTCBWYWx1ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3Qg
YmUgc2V0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJoZWxsbyIgYnV0IGdvdCAiMjAiCiBGQUlM
IFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlubGluZSBzdHlsZXMgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgInJlZCIgYnV0IGdvdCAiIHJlZCIKLUZBSUwgU3R5bGVzaGVldHMgY2FuIGJlIG1v
ZGlmaWVkIGJ5IENTU09NIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMHB4IiBidXQgZ290ICIw
cHgiCitQQVNTIFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSAKIEZBSUwgVmFs
aWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiYmx1ZSIgYnV0IGdvdCAiIGJsdWUiCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1h
cGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBl
ZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMWU0ZDI3MGFlNjhmMWViMTc2NmUzYWM3
MmQzNWJkNTAxMjYwZWY3Ni4uNjZmYmJjYTk5MDljYjlmYzU0OTY4YzI4ZTIyNmY4ZWVjODQxNDQz
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50
eHQKQEAgLTIsNyArMiw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAzNDA6IFJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDU1NVbnBhcnNlZFZhbHVlCiAKIEhhcm5lc3MgRXJy
b3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6
IENTU1VucGFyc2VkVmFsdWUKIAotRkFJTCBDb21wdXRlZCAqIGlzIHJlaWZpZWQgYXMgQ1NTVW5w
YXJzZWRWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhl
IGdpdmVuIHN5bnRheC4KK0ZBSUwgQ29tcHV0ZWQgKiBpcyByZWlmaWVkIGFzIENTU1VucGFyc2Vk
VmFsdWUgdGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAndGFy
Z2V0LmNvbXB1dGVkU3R5bGVNYXAoKScsICd0YXJnZXQuY29tcHV0ZWRTdHlsZU1hcCcgaXMgdW5k
ZWZpbmVkKQogRkFJTCBDb21wdXRlZCA8YW5nbGU+IGlzIHJlaWZpZWQgYXMgQ1NTVW5pdFZhbHVl
IFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3lu
dGF4LgogRkFJTCBDb21wdXRlZCA8Y29sb3I+IGlzIHJlaWZpZWQgYXMgQ1NTU3R5bGVWYWx1ZSBU
aGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRh
eC4KIEZBSUwgQ29tcHV0ZWQgPGN1c3RvbS1pZGVudD4gaXMgcmVpZmllZCBhcyBDU1NLZXl3b3Jk
VmFsdWUgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZl
biBzeW50YXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVn
aXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBp
L3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQK
aW5kZXggMmJlZGY2ODkyNzJlNTIwNjMxOGIzMGZhZmFkNTQ4MTJlZGVkYWE5MS4uOTMxNDUxMjFh
MWMzNDZhMmM4MjYwMWZiOGQzZGYxNTlhMDI5ZmMyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVz
LWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNsZXMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1yZWdpc3RlcmVkLXByb3Bl
cnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIAotRkFJTCBBIHZhcigp
IGN5Y2xlIGJldHdlZW4gdHdvIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBpcyBoYW5kbGVkIGNvcnJl
Y3RseS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjJweCIgYnV0IGdvdCAiM3B4IgotRkFJTCBB
IHZhcigpIGN5Y2xlIGJldHdlZW4gYSByZWdpc3RlcmVkIHByb3BlcnRpZXMgYW5kIGFuIHVucmVn
aXN0ZXJlZCBwcm9wZXJ0eSBpcyBoYW5kbGVkIGNvcnJlY3RseS4gYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgIjFweCIgYnV0IGdvdCAiMnB4IgorUEFTUyBBIHZhcigpIGN5Y2xlIGJldHdlZW4gdHdv
IHJlZ2lzdGVyZWQgcHJvcGVydGllcyBpcyBoYW5kbGVkIGNvcnJlY3RseS4gCitQQVNTIEEgdmFy
KCkgY3ljbGUgYmV0d2VlbiBhIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBhbmQgYW4gdW5yZWdpc3Rl
cmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAKIFBBU1MgQSB2YXIoKSBjeWNsZSBi
ZXR3ZWVuIGEgdHdvIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGlzIGhhbmRsZWQgY29ycmVjdGx5
LiAKLUZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4OicqJyBwcm9wZXJ0eSBhbmQg
YW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgZ2l2ZW4g
aW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KK1BBU1Mg
QSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4OicqJyBwcm9wZXJ0eSBhbmQgYW4gdW5yZWdp
c3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRp
ZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dAppbmRleCBkYjUzNWU0Yzg4ODYxMjY3MGQwZDJkMzc0YzU4YjVmNGUw
NGQxOTgxLi4zOWU2NzVkNDM0YWUxYTkwZTUyZGE5ZWFiNmY0MDI2NjRkOWMwMzczIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0
ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCB2YXIo
KSByZWZlcmVuY2VzIHdvcmsgd2l0aCByZWdpc3RlcmVkIHByb3BlcnRpZXMgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgIjE1cHgiIGJ1dCBnb3QgIjEwJSIKK0ZBSUwgdmFyKCkgcmVmZXJlbmNlcyB3
b3JrIHdpdGggcmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIg
IDEwcHgiIGJ1dCBnb3QgIiAxMHB4IgogRkFJTCBSZWZlcmVuY2VzIHRvIHJlZ2lzdGVyZWQgdmFy
KCktcHJvcGVydGllcyB3b3JrIGluIHJlZ2lzdGVyZWQgbGlzdHMgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgIjFweCwgMTBweCwgMnB4IiBidXQgZ290ICIwcHgiCiBGQUlMIFJlZmVyZW5jZXMgdG8g
bWl4ZWQgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkIHZhcigpLXByb3BlcnRpZXMgd29yayBp
biByZWdpc3RlcmVkIGxpc3RzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxcHgsIDIwcHgsIDEw
cHgsIDJweCIgYnV0IGdvdCAiMHB4IgogRkFJTCBSZWdpc3RlcmVkIGxpc3RzIG1heSBiZSBjb25j
YXRlbmF0ZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjFweCwgMTBweCwgMnB4LCAxcHgsIDIw
cHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353395</attachid>
            <date>2018-10-30 12:03:21 -0700</date>
            <delta_ts>2018-10-31 11:36:36 -0700</delta_ts>
            <desc>Changes from unrolled patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5033</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyMGY1YjJlMzBjMC4uZTllYTkw
Y2QxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE2MjQsNyArMTYy
NCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
LCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgaWYgKHZhbHVlLT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZXMoKSkgewogICAgICAgICB2YWx1ZVRvQXBwbHkgPSByZXNvbHZlZFZhcmlhYmxl
VmFsdWUoaWQsICp2YWx1ZSwgYXBwbHlTdGF0ZSk7CiAgICAgICAgIC8vIElmIGFwcGxpZWRQcm9w
ZXJ0aWVzIGFscmVhZHkgaGFzIHRoaXMgaWQsIHRoZW4gd2UgZGV0ZWN0ZWQgYSBjeWNsZSwgYW5k
IHRoaXMgdmFsdWUgc2hvdWxkIGJlIHVuc2V0LgotICAgICAgICBpZiAoIXZhbHVlVG9BcHBseSB8
fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmNvbnRhaW5zKGlkKSkgeworICAgICAgICBp
ZiAoIXZhbHVlVG9BcHBseSB8fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmdldChpZCkp
IHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkp
CiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZQpAQCAtMjMzMCw2ICsy
MzMwLDE0IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5
KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlCiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJv
cGVydHksIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAoTElL
RUxZKHN0YXRlLmNhc2NhZGUtPmN1c3RvbVByb3BlcnRpZXMoKS5pc0VtcHR5KCkpKQorICAgICAg
ICByZXR1cm4gYXBwbHlDYXNjYWRlZFByb3BlcnRpZXNJbXBsPGZhbHNlPihmaXJzdFByb3BlcnR5
LCBsYXN0UHJvcGVydHksIHN0YXRlKTsKKyAgICByZXR1cm4gYXBwbHlDYXNjYWRlZFByb3BlcnRp
ZXNJbXBsPHRydWU+KGZpcnN0UHJvcGVydHksIGxhc3RQcm9wZXJ0eSwgc3RhdGUpOworfQorCit0
ZW1wbGF0ZTxib29sIFRyYWNrQ3ljbGVzPgoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBw
bHlDYXNjYWRlZFByb3BlcnRpZXNJbXBsKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3Bl
cnR5LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCiB7CiAgICAgZm9yIChpbnQg
aWQgPSBmaXJzdFByb3BlcnR5OyBpZCA8PSBsYXN0UHJvcGVydHk7ICsraWQpIHsKICAgICAgICAg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQp
OwpAQCAtMjMzOSwxOSArMjM0NywyNCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2Fk
ZWRQcm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LAogICAgICAg
ICBhdXRvJiBwcm9wZXJ0eSA9IHN0YXRlLmNhc2NhZGUtPnByb3BlcnR5KHByb3BlcnR5SUQpOwog
ICAgICAgICBBU1NFUlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJ
RCkpOwogCi0gICAgICAgIGlmIChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5jb250YWlucyhw
cm9wZXJ0eUlEKSkgewotICAgICAgICAgICAgLy8gV2UgYXJlIGluIGEgY3ljbGUgKGVnLiBzZXR0
aW5nIGZvbnQgc2l6ZSB1c2luZyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZSBjb250
YWluaW5nIGVtKQotICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUgdW5zZXQK
LSAgICAgICAgICAgIHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAg
ICAgICAgICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgaW4gYSBjeWNsZSwgYW5kIG9ubHkgdGhlIHJv
b3Qgb2YgdGhlIGNhbGwgc3RhY2sgd2lsbCBoYXZlIGZpcnN0UHJvcGVydHkgIT0gbGFzdFByb3Bl
cnR5LgotICAgICAgICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIGlmICghVHJhY2tDeWNs
ZXMpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYW55IGN1c3RvbSBwcm9wZXJ0
aWVzLCB0aGVuIHRoZXJlIGNhbid0IGJlIGFueSBjeWNsZXMuCisgICAgICAgICAgICBwcm9wZXJ0
eS5hcHBseSgqdGhpcywgc3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLmdldChwcm9wZXJ0eUlEKSkpIHsK
KyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBjeWNsZSAoZWcuIHNldHRpbmcgZm9udCBz
aXplIHVzaW5nIHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnR5IHZhbHVlIGNvbnRhaW5pbmcgZW0p
CisgICAgICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUgdW5zZXQKKyAgICAg
ICAgICAgICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5zZXQocHJvcGVydHlJRCk7CisgICAg
ICAgICAgICAgICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyBpbiBhIGN5Y2xlLCBhbmQgb25seSB0aGUg
cm9vdCBvZiB0aGUgY2FsbCBzdGFjayB3aWxsIGhhdmUgZmlyc3RQcm9wZXJ0eSAhPSBsYXN0UHJv
cGVydHkuCisgICAgICAgICAgICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3Bl
cnR5KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5hZGQocHJvcGVydHlJRCk7Ci0gICAgICAgIHBy
b3BlcnR5LmFwcGx5KCp0aGlzLCBzdGF0ZSk7Ci0gICAgICAgIHN0YXRlLmFwcGxpZWRQcm9wZXJ0
aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAgICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMu
cmVtb3ZlKHByb3BlcnR5SUQpOworICAgICAgICAgICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRp
ZXMuc2V0KHByb3BlcnR5SUQpOworICAgICAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0
YXRlKTsKKyAgICAgICAgICAgIHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlE
KTsKKyAgICAgICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlE
LCBmYWxzZSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oCmluZGV4IDZkODhmNjAxOWEyLi5hOWM5ZDE3MDliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgi
CiAjaW5jbHVkZSA8Yml0c2V0PgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvQml0
bWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzI0LDYgKzMyNSw5IEBAIHByaXZhdGU6CiAg
ICAgZW51bSBTaG91bGRVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlIHsgRG9Ob3RVc2VNYXRjaGVk
UHJvcGVydGllc0NhY2hlID0gMCwgVXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB9OwogICAgIHZv
aWQgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYsIGNvbnN0IEVsZW1l
bnQmLCBTaG91bGRVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlID0gVXNlTWF0Y2hlZFByb3BlcnRp
ZXNDYWNoZSk7CiAKKyAgICB0ZW1wbGF0ZTxib29sIFRyYWNrQ3ljbGVzPgorICAgIGlubGluZSB2
b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzSW1wbChpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxh
c3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKKwogICAgIHZvaWQgY2Fz
Y2FkZU1hdGNoZXMoQ2FzY2FkZWRQcm9wZXJ0aWVzJiwgY29uc3QgTWF0Y2hSZXN1bHQmLCBib29s
IGltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRP
bmx5KTsKIAogICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoTWF0Y2hSZXN1bHQmLCBSdWxlU2V0Kiwg
Ym9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1l
KTsKQEAgLTUzMiw5ICs1MzYsOSBAQCBzdHJ1Y3QgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUg
ewogICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXI7CiAgICAgU3R5bGVSZXNvbHZlcjo6
Q2FzY2FkZWRQcm9wZXJ0aWVzKiBjYXNjYWRlOwogICAgIGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1h
dGNoUmVzdWx0KiBtYXRjaFJlc3VsdDsKLSAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGFwcGxp
ZWRQcm9wZXJ0aWVzID0geyB9OworICAgIEJpdG1hcDxudW1DU1NQcm9wZXJ0aWVzPiBhcHBsaWVk
UHJvcGVydGllcyA9IHsgfTsKICAgICBIYXNoU2V0PFN0cmluZz4gYXBwbGllZEN1c3RvbVByb3Bl
cnRpZXMgPSB7IH07Ci0gICAgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBpblByb2dyZXNzUHJvcGVy
dGllcyA9IHsgfTsKKyAgICBCaXRtYXA8bnVtQ1NTUHJvcGVydGllcz4gaW5Qcm9ncmVzc1Byb3Bl
cnRpZXMgPSB7IH07CiAgICAgSGFzaFNldDxTdHJpbmc+IGluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3Vz
dG9tID0geyB9OwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353513</attachid>
            <date>2018-10-31 11:36:37 -0700</date>
            <delta_ts>2018-10-31 20:08:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191042-20181031113636.patch</filename>
            <type>text/plain</type>
            <size>131784</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJmMzk2Y2U4MTFjYjgw
ZDZmODhhMGJlY2EyMzNmMGYyNTdiODczMi4uNTlmNDNlOWY3OTMwMTQ3NzQxMmEzNTAxOWM3NDFj
YTBkYjQ1NjYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIEN1
c3RvbSBQcm9wZXJ0aWVzIEFQSSBTaG91bGQgU3VwcG9ydCBzeW50YXg9IioiIGFuZCAiPGxlbmd0
aD4iLCBhbmQgaGFuZGxlIGN5Y2xlcyBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgY29kZSBzbyB0aGF0OgorICAgICAgICAt
IEFsbCBwcm9wZXJ0aWVzIGFwcGxpZWQgaW4gU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyBhcmUgb25seSBhcHBsaWVkIG9uY2UuIAorICAgICAgICAtIEN1c3RvbSBwcm9wZXJ0
aWVzIGFyZSBvbmx5IHJlc29sdmVkIG9uY2UsIGluIFN0eWxlUmVzb2x2ZXIsIHdoZW4gdGhleSBh
cmUgYXBwbGllZCB0byB0aGUgUmVuZGVyU3R5bGUuIFRoZXkgd2VyZSBwcmV2aW91c2x5IHJlc29s
dmVkCisgICAgICAgICAgZXZlcnkgdGltZSB0aGV5IHdlcmUgcmVmZXJlbmNlZCwgYW5kIGFnYWlu
IGluIFJlbmRlclN0eWxlLgorICAgICAgICAtIFRoZSBmb250LXNpemUgcHJvcGVydHkgaXMgYXBw
bGllZCBhZnRlciBpdHMgdmFyaWFibGUgcmVmZXJlbmNlcywgYnV0IGJlZm9yZSBjdXN0b20gcHJv
cGVydGllcyB0aGF0IGRlcGVuZCBvbiBpdC4KKyAgICAgICAgLSBDeWNsZXMgYXJlIGRldGVjdGVk
IGF0IHRoZSBzYW1lIHRpbWUgYXMgcmVzb2x1dGlvbi4KKyAgICAgICAgLSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJyBjdXN0b20gcHJvcGVydGllcyBjYW5ub3QgYmUgc2V0IGZyb20gSmF2YXNjcmlw
dCBvciBXZWJLaXRMZWdhY3kgaWYgdGhleSBkbyBub3QgcGFyc2UgZm9yIHRoZSBwcm9wZXJ0eSdz
IHR5cGUuCisgICAgICAgICAgSWYgdGhleSBjb250YWluIHZhcigtLS4uLikgcmVmZXJlbmNlcywg
aG93ZXZlciwgdGhlbiB0aGV5IGNhbiBiZSBzZXQgYmVjYXVzZSB3ZSBjYW5ub3QgY2hlY2sgaWYg
dGhlIHJlZmVyZW5jZXMgYXJlIHZhbGlkIGZyb20gc2V0UHJvcGVydHkuCisgICAgICAgICAgVGhp
cyBiZWhhdmlvdXIgbWF0Y2hlcyBjaHJvbWUsIGJ1dCBpcyBub3QgZG9jdW1lbnRlZCBpbiB0aGUg
c3BlYy4gCisgICAgICAgIC0gQ3VzdG9tIHByb3BlcnR5IHZhbHVlcyBoYXZlIG1vcmUgZXhwbGlj
aXQgcmVzb2x2ZWQvdW5yZXNvbHZlZCBzdGF0ZS4KKyAgICAgICAgLSBSZW5kZXJTdHlsZSBvbmx5
IGV2ZXIgaG9sZHMgcmVzb2x2ZWQgY3VzdG9tIHByb3BlcnRpZXMsIGFuZCBTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXMgb25seSBob2xkcyB1bnJlc29sdmVkIHByb3BlcnRpZXMuCisK
KyAgICAgICAgVGVzdHM6IGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbAorICAg
ICAgICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbAorICAgICAg
ICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6
cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRSZXNvbHZlZFR5cGVkVmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAgICog
Y3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSk6
CisgICAgICAgICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOgorICAgICAgICAq
IGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVE
YXRhOjpDU1NWYXJpYWJsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRh
Ojpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
c1dpdGhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJs
ZURhdGE6OnJlc29sdmVWYXJpYWJsZUZhbGxiYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBjc3MvQ1NTVmFyaWFibGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZVJl
c29sdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6bmVl
ZHNWYXJpYWJsZVJlc29sdXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFyaWFibGVEYXRhOjpDU1NWYXJpYWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGNz
cy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29s
dmVWYXJpYWJsZUZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlVG9rZW5SYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZl
cmVuY2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBj
c3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlOjp2YXJpYWJsZURhdGFWYWx1ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0
eSk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZl
cnJlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5j
ZXMpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3Rv
bVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25W
YWx1ZSk6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjp2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZVBpeGVsTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGE6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIw
MTgtMTAtMzEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW01lZGlhU3RyZWFtXSBEb24ndCByZXZlYWwgZGV2aWNlIElEcyB1bnRpbCB0aGUgdXNlciBo
YXMgZ3JhbnRlZCBwZXJtaXNzaW9uIHRvIGNhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYzc3NjQ4ZWUxZDgzNDlm
YjM2YjEwNzE1NDVjMzgxZmE3MzI3MDljOC4uMDc0OWQ5YTRkNjgxMTU2Y2U2Njk3MjlkOTFkODBi
MzNiYWI2MThhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI2MTIsMjEgKzI2MTIsMjMgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmlu
ZyYgcHJvcGUKICAgICBhdXRvKiByZWdpc3RlcmVkID0gc3R5bGVkRWxlbWVudC0+ZG9jdW1lbnQo
KS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQocHJvcGVydHlOYW1lKTsK
ICAgICBhdXRvKiB2YWx1ZSA9IHN0eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUp
OwogCi0gICAgaWYgKHJlZ2lzdGVyZWQpIHsKLSAgICAgICAgLy8gVE9ETyB0aGlzIHNob3VsZCBi
ZSBkb25lIGJhc2VkIG9uIHRoZSBzeW50YXgKLSAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5y
ZXNvbHZlZFR5cGVkVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKCp2YWx1ZS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCksICpzdHlsZSk7Ci0K
LSAgICAgICAgaWYgKHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpICYmIHJlZ2lzdGVyZWQtPmlu
aXRpYWxWYWx1ZSgpLT5yZXNvbHZlZFR5cGVkVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKCpyZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUo
KS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCksICpzdHlsZSk7CisgICAgaWYgKHJlZ2lzdGVyZWQgJiYg
IXZhbHVlKQorICAgICAgICByZXR1cm4gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlQ29weSgpOwog
CisgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCi0gICAg
aWYgKHZhbHVlKQorICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBSZWZQdHI8Q1NTVmFsdWU+KCk7CisgICAgfSwgWyZd
KGNvbnN0IENTU1ZhbHVlSUQmKSB7CiAgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlOjpjcmVhdGUoKnZhbHVlKTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIH0sIFsmXShj
b25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYpIHsKKyAgICAgICAgcmV0dXJuIENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZSgqdmFsdWUpOworICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZh
bHVlKSB7CisgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHZh
bHVlLCAqc3R5bGUpOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIHZh
bHVlLT52YWx1ZSgpKTsKIH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3Rv
bVByb3BlcnR5VGV4dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAppbmRleCA3YzE2ZTg0MWRlYWZlZTJl
MjE5MjU4ZWM0OTViNzgwZjQxNjUyNjM4Li5lNjk2NmZmOWJkYzE0NDI2YThjODk5ODA4ZDM0N2Zh
YThjMmUxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFs
dWUuY3BwCkBAIC0yNyw4MCArMjcsNjMgQEAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitib29sIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9uYW1lICE9IG90aGVyLm1f
bmFtZSB8fCBtX3ZhbHVlLmluZGV4KCkgIT0gb3RoZXIubV92YWx1ZS5pbmRleCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0o
Y29uc3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgeworICAgICAgICBy
ZXR1cm4gdmFsdWUuZ2V0KCkgPT0gV1RGOjpnZXQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU+PihvdGhlci5tX3ZhbHVlKS5nZXQoKTsKKyAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYg
dmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09IFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG90
aGVyLm1fdmFsdWUpOworICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFs
dWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmdldCgpID09IFdURjo6Z2V0PFJlZjxDU1NWYXJp
YWJsZURhdGE+PihvdGhlci5tX3ZhbHVlKS5nZXQoKTsKKyAgICB9LCBbJl0oY29uc3QgTGVuZ3Ro
JiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgPT0gV1RGOjpnZXQ8TGVuZ3RoPihvdGhl
ci5tX3ZhbHVlKTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3Zh
bHVlKTsKK30KKwogU3RyaW5nIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogewogICAgIGlmICghbV9zZXJpYWxpemVkKSB7CiAgICAgICAgIG1fc2VyaWFsaXpl
ZCA9IHRydWU7Ci0gICAgICAgIGlmIChtX3Jlc29sdmVkVHlwZWRWYWx1ZSkgLy8gRklYTUU6IFVu
aXQgc2hvdWxkIGJlIGJhc2VkIG9uIHN5bnRheC4KLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fcmVzb2x2ZWRUeXBlZFZhbHVlLT52YWx1ZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y3NzVGV4dCgpOwotICAgICAgICBlbHNlIGlm
IChtX3ZhbHVlKQotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IG1fdmFsdWUtPnRva2VuUmFu
Z2UoKS5zZXJpYWxpemUoKTsKLSAgICAgICAgZWxzZSBpZiAobV92YWx1ZUlkICE9IENTU1ZhbHVl
SW52YWxpZCkKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBnZXRWYWx1ZU5hbWUobV92YWx1
ZUlkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGVtcHR5U3Ry
aW5nKCk7CisKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29u
c3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgeworICAgICAgICAgICAg
bV9zdHJpbmdWYWx1ZSA9IHZhbHVlLT5jc3NUZXh0KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBD
U1NWYWx1ZUlEJiB2YWx1ZSkgeworICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGdldFZhbHVl
TmFtZSh2YWx1ZSk7CisgICAgICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYg
dmFsdWUpIHsKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSB2YWx1ZS0+dG9rZW5SYW5nZSgp
LnNlcmlhbGl6ZSgpOworICAgICAgICB9LCBbJl0oY29uc3QgTGVuZ3RoJiB2YWx1ZSkgeworICAg
ICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUu
dmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCktPmNzc1RleHQoKTsKKyAgICAgICAg
fSk7CisgICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7CiAgICAgfQogICAgIHJl
dHVybiBtX3N0cmluZ1ZhbHVlOwogfQogCi1WZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OnRva2Vucyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
CitWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2Vucygp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVzb2x2ZWRUeXBlZFZhbHVlKSB7Ci0gICAgICAgIFZlY3Rv
cjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0OworICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVz
dWx0OworCisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVm
PENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYpIHsKKyAgICAgICAgLy8gRG8gbm90
aGluZworICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcih2YWx1ZS0+dG9rZW5zKCkpOworICAgIH0sIFsmXShj
b25zdCBMZW5ndGgmKSB7CiAgICAgICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoY3NzVGV4dCgp
KTsKIAogICAgICAgICBhdXRvIHRva2VuaXplclJhbmdlID0gdG9rZW5pemVyLnRva2VuUmFuZ2Uo
KTsKICAgICAgICAgd2hpbGUgKCF0b2tlbml6ZXJSYW5nZS5hdEVuZCgpKQogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCh0b2tlbml6ZXJSYW5nZS5jb25zdW1lKCkpOworICAgIH0pOworICAgIFdU
Rjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7CiAKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLSAgICBpZiAoIW1fdmFsdWUpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBpZiAo
bV9jb250YWluc1ZhcmlhYmxlcykgewotICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJl
c3VsdDsKLSAgICAgICAgLy8gRklYTUU6IEF2b2lkIGRvaW5nIHRoaXMgd29yayBtb3JlIHRoYW4g
b25jZS4KLSAgICAgICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92
YWx1ZS0+cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5
bGUpOwotICAgICAgICBpZiAocmVzb2x2ZWREYXRhKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZFZlY3RvcihyZXNvbHZlZERhdGEtPnRva2VucygpKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQotICAgIHJldHVybiBtX3ZhbHVlLT50b2tlbnMoKTsKLX0KLQotYm9vbCBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJp
bmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVy
dGllcykgY29uc3QKLXsKLSAgICBBU1NFUlQoY29udGFpbnNWYXJpYWJsZXMoKSk7Ci0gICAgaWYg
KG1fdmFsdWUpCi0gICAgICAgIHJldHVybiBtX3ZhbHVlLT5jaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
cyhuYW1lLCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpyZXNvbHZlVmFy
aWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVn
aXN0ZXJlZFByb3BlcnRpZXMsIFZlY3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiBy
ZXNvbHZlZFZhbHVlcywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAotewotICAgIEFT
U0VSVChjb250YWluc1ZhcmlhYmxlcygpKTsKLSAgICBpZiAoIW1fdmFsdWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBBU1NFUlQobV92YWx1ZS0+bmVlZHNWYXJpYWJsZVJlc29sdXRpb24o
KSk7Ci0gICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92YWx1ZS0+
cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpOwot
ICAgIGlmIChyZXNvbHZlZERhdGEpCi0gICAgICAgIHJlc29sdmVkVmFsdWVzLmFwcGVuZChDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoVmFyaWFibGVEYXRhKG1fbmFtZSwgcmVzb2x2
ZWREYXRhLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc29sdmVkVmFs
dWVzLmFwcGVuZChDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobV9uYW1lLCBD
U1NWYWx1ZUludmFsaWQpKTsKLX0KLQotdm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRS
ZXNvbHZlZFR5cGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoLmlz
U3BlY2lmaWVkKCkpOwotICAgIG1fcmVzb2x2ZWRUeXBlZFZhbHVlID0gV1RGTW92ZShsZW5ndGgp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZS5oCmluZGV4IGJiMDkyMTQ1ZGU1MWZiNmU2YjM5ZDk5NTRkMzY0OTJk
YmNjZDZmNTUuLjYyNWUxOTUxMWUyZGRhZGJhZDQ3YzY5MTczMzlkNDk5NzExOGY0OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaApAQCAtMjcsMzEgKzI3
LDQ2IEBACiAKICNpbmNsdWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaCIKICNpbmNs
dWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1ZhcmlhYmxlRGF0YS5oIgorI2luY2x1ZGUg
IkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQ
YXJzZXJUb2tlbjsKK2NsYXNzIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU7CiBjbGFzcyBSZW5k
ZXJTdHlsZTsKIAogY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSBmaW5hbCA6IHB1YmxpYyBD
U1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PiBjcmVhdGVXaXRoVmFyaWFibGVEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENT
U1ZhcmlhYmxlRGF0YT4mJiB2YWx1ZSkKKyAgICB1c2luZyBWYXJpYW50VmFsdWUgPSBWYXJpYW50
PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiwgQ1NTVmFsdWVJRCwgUmVmPENTU1Zhcmlh
YmxlRGF0YT4sIExlbmd0aD47CisKKyAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IGNyZWF0ZVVucmVzb2x2ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZT4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1l
LCB7IFdURk1vdmUodmFsdWUpIH0pKTsKICAgICB9Ci0gICAgCi0gICAgc3RhdGljIFJlZjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVXaXRoSUQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBDU1NWYWx1ZUlEIHZhbHVlKQorCisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlPiBjcmVhdGVVbnJlc29sdmVkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJ
RCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWUobmFtZSwgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IHZhbHVlIH0pKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhJRChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgaWQpCisgICAgeworICAgICAgICBBU1NFUlQoaWQg
PT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NW
YWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVlUmV2ZXJ0IHx8IGlkID09IENTU1ZhbHVlSW52YWxp
ZCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUo
bmFtZSwgeyBpZCB9KSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPiBjcmVhdGVTeW50YXhBbGwoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NT
VmFyaWFibGVEYXRhPiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IFdURk1vdmUodmFsdWUpIH0pKTsKICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVJ
bnZhbGlkKCkKKyAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVN5
bnRheExlbmd0aChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIExlbmd0aCB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUoZW1w
dHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlKGNvbnN0
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKQpAQCAtNjIsNzAgKzc3LDQ5IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgCi0gICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlICYmIG1f
dmFsdWVJZCA9PSBvdGhlci5tX3ZhbHVlSWQ7IH0KLQotICAgIGJvb2wgY29udGFpbnNWYXJpYWJs
ZXMoKSBjb25zdCB7IEFTU0VSVCghbV9jb250YWluc1ZhcmlhYmxlcyB8fCAhbV9yZXNvbHZlZFR5
cGVkVmFsdWUpOyByZXR1cm4gbV9jb250YWluc1ZhcmlhYmxlczsgfQotICAgIGJvb2wgY2hlY2tW
YXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJT
dHlsZSYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwotCi0gICAgdm9pZCByZXNvbHZl
VmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYs
IFZlY3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdDsKKyAgICBib29sIGlzUmVzb2x2ZWQoKSBjb25zdCAgeyByZXR1cm4gIVdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+PihtX3ZhbHVlKTsg
fQorICAgIGJvb2wgaXNVbnNldCgpIGNvbnN0ICB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPENTU1ZhbHVlSUQ+KG1fdmFsdWUpICYmIFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG1fdmFsdWUp
ID09IENTU1ZhbHVlVW5zZXQ7IH0KKyAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0ICB7IHJldHVy
biBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KG1fdmFsdWUpICYmIFdURjo6Z2V0
PENTU1ZhbHVlSUQ+KG1fdmFsdWUpID09IENTU1ZhbHVlSW52YWxpZDsgfQogCi0gICAgQ1NTVmFs
dWVJRCB2YWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZUlkOyB9Ci0gICAgQ1NTVmFyaWFi
bGVEYXRhKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7IH0KLSAgICBWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2Vucyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHlTZXQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIGNvbnN0IFZhcmlhbnRWYWx1
ZSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPExlbmd0aD4mIHJlc29sdmVkVHlwZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x2ZWRUeXBlZFZhbHVlOyB9Ci0gICAgdm9pZCBzZXRSZXNvbHZlZFR5cGVkVmFsdWUoTGVuZ3Ro
KTsKKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2VucygpIGNvbnN0OworICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBzZXJpYWxpemVkVmFsdWUpCi0gICAgICAgIDogQ1NTVmFsdWUoQ3Vz
dG9tUHJvcGVydHlDbGFzcykKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3N0
cmluZ1ZhbHVlKHNlcmlhbGl6ZWRWYWx1ZSkKLSAgICAgICAgLCBtX3NlcmlhbGl6ZWQodHJ1ZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgaWQpCi0gICAgICAgIDogQ1NTVmFsdWUoQ3VzdG9tUHJv
cGVydHlDbGFzcykKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3ZhbHVlSWQo
aWQpCi0gICAgewotICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09
IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NWYWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVl
UmV2ZXJ0IHx8IGlkID09IENTU1ZhbHVlSW52YWxpZCk7Ci0gICAgfQotICAgIAotICAgIENTU0N1
c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiYmIHZhbHVlKQorICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBWYXJpYW50VmFsdWUmJiB2YWx1ZSkKICAgICAgICAgOiBDU1NWYWx1ZShD
dXN0b21Qcm9wZXJ0eUNsYXNzKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1f
dmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwgbV92YWx1ZUlkKENTU1ZhbHVlSW50ZXJu
YWxWYXJpYWJsZVZhbHVlKQotICAgICAgICAsIG1fY29udGFpbnNWYXJpYWJsZXMobV92YWx1ZS0+
bmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSkKKyAgICAgICAgLCBtX3NlcmlhbGl6ZWQoZmFsc2Up
CiAgICAgewogICAgIH0KIAogICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQ1NTVmFsdWUoQ3VzdG9tUHJvcGVy
dHlDbGFzcykKICAgICAgICAgLCBtX25hbWUob3RoZXIubV9uYW1lKQotICAgICAgICAsIG1fdmFs
dWUob3RoZXIubV92YWx1ZS5jb3B5UmVmKCkpCi0gICAgICAgICwgbV92YWx1ZUlkKG90aGVyLm1f
dmFsdWVJZCkKKyAgICAgICAgLCBtX3ZhbHVlKENTU1ZhbHVlVW5zZXQpCiAgICAgICAgICwgbV9z
dHJpbmdWYWx1ZShvdGhlci5tX3N0cmluZ1ZhbHVlKQotICAgICAgICAsIG1fY29udGFpbnNWYXJp
YWJsZXMob3RoZXIubV9jb250YWluc1ZhcmlhYmxlcykKICAgICAgICAgLCBtX3NlcmlhbGl6ZWQo
b3RoZXIubV9zZXJpYWxpemVkKQotICAgICAgICAsIG1fcmVzb2x2ZWRUeXBlZFZhbHVlKG90aGVy
Lm1fcmVzb2x2ZWRUeXBlZFZhbHVlKQogICAgIHsKKyAgICAgICAgLy8gTm8gY29weSBjb25zdHJ1
Y3RvciBmb3IgUmVmPENTU1ZhcmlhYmxlRGF0YT4sIHNvIHdlIGhhdmUgdG8gZG8gdGhpcyBvdXJz
ZWx2ZXMKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3Qg
UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgeworICAgICAgICAgICAgbV92
YWx1ZSA9IHZhbHVlLmNvcHlSZWYoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IENTU1ZhbHVlSUQm
IHZhbHVlKSB7CisgICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIH0sIFsmXShj
b25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWUg
PSB2YWx1ZS5jb3B5UmVmKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZhbHVlKSB7
CisgICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIH0pOworICAgICAgICBXVEY6
OnZpc2l0KHZpc2l0b3IsIG90aGVyLm1fdmFsdWUpOwogICAgIH0KICAgICAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcgbV9uYW1lOwotICAgIAotICAgIFJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IG1f
dmFsdWU7Ci0gICAgQ1NTVmFsdWVJRCBtX3ZhbHVlSWQgeyBDU1NWYWx1ZUludmFsaWQgfTsKKyAg
ICBWYXJpYW50VmFsdWUgbV92YWx1ZTsKICAgICAKICAgICBtdXRhYmxlIFN0cmluZyBtX3N0cmlu
Z1ZhbHVlOwotICAgIGJvb2wgbV9jb250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07CiAgICAgbXV0
YWJsZSBib29sIG1fc2VyaWFsaXplZCB7IGZhbHNlIH07Ci0KLSAgICAvLyBGSVhNRTogSXQgc2hv
dWxkIG5vdCBiZSBwb3NzaWJsZSB0byBleHByZXNzIGFuIGludmFsaWQgc3RhdGUsIHN1Y2ggYXMg
Y29udGFpbnNWYXJpYWJsZXMoKSAmJiByZXNvbHZlZFR5cGVkVmFsdWUoKS4KLSAgICBzdGQ6Om9w
dGlvbmFsPExlbmd0aD4gbV9yZXNvbHZlZFR5cGVkVmFsdWU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuY3BwCmluZGV4IDNlYTdiOTJjMDA5OTczMDk2YTAzZTk1ZTllNmEyNjc1NGE1Y2E4
OGEuLjc5ZWY3ZmU2YjAzY2Q2Y2ZmN2ZiOWVhODE5YjE2MDc2ZGU0NTU4ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwCkBAIC0z
MCw4ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5OjpDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFs
VmFsdWUpCitDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGlu
aGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFsVmFsdWUpCiAg
ICAgOiBuYW1lKG5hbWUpCisgICAgLCBzeW50YXgoc3ludGF4KQogICAgICwgaW5oZXJpdHMoaW5o
ZXJpdHMpCiAgICAgLCBtX2luaXRpYWxWYWx1ZShXVEZNb3ZlKGluaXRpYWxWYWx1ZSkpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgKaW5k
ZXggMzQyN2VhYTNjM2FiNzQ3YzA1MTg1ZjM5MzViNmI1YjJkMjZhZWUzYS4uZGZjZjBiZGMzOWVk
NTQwYzNkMWRhYTRjMDVhNjRjMGY1OTE1MzkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNz
IENTU0N1c3RvbVByb3BlcnR5VmFsdWU7CiAKIHN0cnVjdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJv
cGVydHkgewogICAgIGNvbnN0IFN0cmluZyBuYW1lOwotICAgIC8qIFRPRE8gc3ludGF4ICovCisg
ICAgY29uc3QgU3RyaW5nIHN5bnRheDsKICAgICBjb25zdCBib29sIGluaGVyaXRzOwogCi0gICAg
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpbmhl
cml0cywgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgaW5pdGlhbFZhbHVlKTsKKyAg
ICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHN5bnRheCwgYm9vbCBpbmhlcml0cywgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+JiYgaW5pdGlhbFZhbHVlKTsKIAogICAgIGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUq
IGluaXRpYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbFZhbHVlLmdldCgpOyB9CiAg
ICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGluaXRpYWxWYWx1ZUNvcHkoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKaW5kZXggOTg5OTM1MzE3NTlj
OGM5M2Y3NzU3ZTMxOTg5YjFkNjA5ODEyMGM1Mi4uNjA0Y2ExODM0MzRiNjU4Njc0ZDNkOGMwNzI5
YTQxMTA5MTU4ZDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgYm9vbCBDU1NWYXJpYWJsZURhdGE6Om9wZXJhdG9yPT0oY29uc3QgQ1NT
VmFyaWFibGVEYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdG9rZW5zKCkgPT0gb3RoZXIu
dG9rZW5zKCk7CiB9CiAKLXZvaWQgQ1NTVmFyaWFibGVEYXRhOjpjb25zdW1lQW5kVXBkYXRlVG9r
ZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorQ1NTVmFyaWFibGVEYXRhOjpD
U1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgbG9j
YWxSYW5nZSA9IHJhbmdlOwpAQCAtNzcsMTA5ICs3Nyw0IEBAIHZvaWQgQ1NTVmFyaWFibGVEYXRh
Ojpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQogICAgICAgICB1cGRhdGVUb2tlbnM8VUNoYXI+KHJhbmdlKTsKIH0KIAotQ1NTVmFyaWFibGVE
YXRhOjpDU1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGJv
b2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24pCi0gICAgOiBtX25lZWRzVmFyaWFibGVSZXNvbHV0
aW9uKG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKQotewotICAgIGNvbnN1bWVBbmRVcGRhdGVUb2tl
bnMocmFuZ2UpOwotfQotCi1ib29sIENTU1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JD
eWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0Ci17Ci0gICAgaWYgKGludmFsaWRQcm9wZXJ0
aWVzLmNvbnRhaW5zKG5hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgSGFz
aFNldDxBdG9taWNTdHJpbmc+IG5ld1NlZW5Qcm9wZXJ0aWVzID0gc2VlblByb3BlcnRpZXM7Ci0g
ICAgbmV3U2VlblByb3BlcnRpZXMuYWRkKG5hbWUpOwotICAgIAotICAgIGJvb2wgdmFsaWQgPSBj
aGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZShtX3Rva2Vucywgc3R5bGUsIG5ld1NlZW5Q
cm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7Ci0gICAgaWYgKCF2YWxpZCkKLSAgICAgICAg
aW52YWxpZFByb3BlcnRpZXMuYWRkKG5hbWUpOwotICAgIAotICAgIHJldHVybiB2YWxpZDsKLX0K
LSAgICAKLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhS
YW5nZShDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0Ci17Ci0gICAgd2hpbGUgKCFyYW5nZS5hdEVu
ZCgpKSB7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVl
VmFyIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVFbnYpIHsKLSAgICAg
ICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2sgPSByYW5nZS5jb25zdW1lQmxvY2soKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgYmxvY2suY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChibG9jay5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pOwotICAg
ICAgICAgICAgQXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IGJsb2NrLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b0F0b21pY1N0cmluZygpOwotICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLmF0RW5kKCkgfHwgYmxvY2sucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsK
LSAgICAgICAgICAgIGlmIChzZWVuUHJvcGVydGllcy5jb250YWlucyh2YXJpYWJsZU5hbWUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgYXV0byogdmFsdWUg
PSBzdHlsZS5nZXRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5hbWUpOwotICAgICAgICAgICAgaWYg
KHZhbHVlICYmIHZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpICYmICF2YWx1ZS0+Y2hlY2tWYXJp
YWJsZXNGb3JDeWNsZXModmFyaWFibGVOYW1lLCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFs
aWRQcm9wZXJ0aWVzKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
ICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW4pIHsKLSAgICAgICAgICAg
ICAgICAvLyBGYWxsYmFjay4KLSAgICAgICAgICAgICAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzV2l0aFJhbmdlKGJsb2Nr
LCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlh
YmxlRmFsbGJhY2soY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3Rl
cmVkUHJvcGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNl
clRva2VuPiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Ci17Ci0gICAg
aWYgKHJhbmdlLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NFUlQocmFu
Z2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsKLSAgICByYW5nZS5jb25zdW1lKCk7Ci0g
ICAgcmV0dXJuIHJlc29sdmVUb2tlblJhbmdlKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwg
cmVzdWx0LCBzdHlsZSk7Ci19Ci0KLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpyZXNvbHZlVmFyaWFi
bGVSZWZlcmVuY2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3Rl
cmVkUHJvcGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNl
clRva2VuPiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Ci17Ci0gICAg
cmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUo
KSA9PSBJZGVudFRva2VuKTsKLSAgICBBdG9taWNTdHJpbmcgdmFyaWFibGVOYW1lID0gcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7Ci0g
ICAgQVNTRVJUKHJhbmdlLmF0RW5kKCkgfHwgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFU
b2tlbikpOwotICAgIAotICAgIGF1dG8qIHByb3BlcnR5ID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVy
dHkodmFyaWFibGVOYW1lKTsKLSAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHktPnJlc29sdmVk
VHlwZWRWYWx1ZSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRv
a2VucyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKCFwcm9wZXJ0eSB8fCAhcHJvcGVydHktPnZhbHVlKCkpIHsKLSAg
ICAgICAgYXV0byogcmVnaXN0ZXJlZCA9IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldCh2YXJpYWJs
ZU5hbWUpOwotICAgICAgICBpZiAocmVnaXN0ZXJlZCAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFs
dWUoKSkKLSAgICAgICAgICAgIHByb3BlcnR5ID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiByZXNvbHZlVmFyaWFibGVGYWxsYmFj
ayhyZWdpc3RlcmVkUHJvcGVydGllcywgcmFuZ2UsIHJlc3VsdCwgc3R5bGUpOwotICAgIH0KLSAg
ICBBU1NFUlQocHJvcGVydHkpOwotICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRv
a2VucyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpKTsKLSAgICAKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gQ1NTVmFyaWFibGVEYXRhOjpyZXNvbHZl
VmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYg
cmVnaXN0ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKLXsK
LSAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9rZW5zOwotICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgcmFuZ2UgPSBtX3Rva2VuczsKLSAgICBpZiAoIXJlc29sdmVUb2tlblJhbmdl
KHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRl
UmVzb2x2ZWQocmVzb2x2ZWRUb2tlbnMsICp0aGlzKTsKLX0KLSAgICAKLWJvb2wgQ1NTVmFyaWFi
bGVEYXRhOjpyZXNvbHZlVG9rZW5SYW5nZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHlTZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBW
ZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkg
Y29uc3QKLXsKLSAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIHdoaWxlICghcmFuZ2UuYXRF
bmQoKSkgewotICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1
ZVZhciB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlRW52KQotICAgICAg
ICAgICAgc3VjY2VzcyAmPSByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2UocmVnaXN0ZXJlZFByb3Bl
cnRpZXMsIHJhbmdlLmNvbnN1bWVCbG9jaygpLCByZXN1bHQsIHN0eWxlKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyYW5nZS5jb25zdW1lKCkpOwotICAgIH0KLSAg
ICByZXR1cm4gc3VjY2VzczsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhcmlhYmxlRGF0YS5oCmluZGV4IDAwOGE2ZmE0MjMwNzcwNDk5MzMxNzA3YTc0Yzdk
NmNkNmQyMjcyZTEuLjM5NmUwNjliOWM0NjUyYzhlODdmN2NhZDgyOTkwMzllYzBjZWQxNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgKQEAgLTQzLDE0ICs0Myw5IEBAIGNsYXNz
IENTU1ZhcmlhYmxlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1ZhcmlhYmxlRGF0YT4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1ZhcmlhYmxlRGF0YSk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+
IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYm9vbCBuZWVkc1Zhcmlh
YmxlUmVzb2x1dGlvbiA9IHRydWUpCisgICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IGNy
ZWF0ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyYW5nZSwgbmVlZHNWYXJpYWJsZVJl
c29sdXRpb24pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlRGF0YT4gY3Jl
YXRlUmVzb2x2ZWQoY29uc3QgVmVjdG9yPENTU1BhcnNlclRva2VuPiYgcmVzb2x2ZWRUb2tlbnMs
IGNvbnN0IENTU1ZhcmlhYmxlRGF0YSYgdW5yZXNvbHZlZERhdGEpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYXJpYWJsZURhdGEocmVzb2x2ZWRUb2tlbnMsIHVucmVz
b2x2ZWREYXRhLm1fYmFja2luZ1N0cmluZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NWYXJpYWJsZURhdGEocmFuZ2UpKTsKICAgICB9CiAKICAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIHRva2VuUmFuZ2UoKSB7IHJldHVybiBtX3Rva2VuczsgfQpAQCAtNTksMzYgKzU0LDEyIEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYXJpYWJsZURhdGEmIG90
aGVyKSBjb25zdDsKIAotICAgIGJvb2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSBjb25zdCB7
IHJldHVybiBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uOyB9Ci0KLSAgICBib29sIGNoZWNrVmFy
aWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5
bGUmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdDsKLQotICAgIFJlZlB0cjxDU1NWYXJp
YWJsZURhdGE+IHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKLSAgICBib29sIHJl
c29sdmVUb2tlblJhbmdlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENT
U1BhcnNlclRva2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0OwotCiBwcml2YXRlOgotICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbik7Ci0KLSAgICAv
LyBXZSBjYW4gc2FmZWx5IGNvcHkgdGhlIHRva2VucyAod2hpY2ggaGF2ZSByYXcgcG9pbnRlcnMg
dG8gc3Vic3RyaW5ncykgYmVjYXVzZQotICAgIC8vIFN0eWxlUHJvcGVydHlTZXRzIGNvbnRhaW4g
cmVmZXJlbmNlcyB0byBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlcywgd2hpY2gKLSAgICAvLyBwb2lu
dCB0byB0aGUgdW5yZXNvbHZlZCBDU1NWYXJpYWJsZURhdGEgdmFsdWVzIHRoYXQgb3duIHRoZSBi
YWNraW5nIHN0cmluZ3MKLSAgICAvLyB0aGlzIHdpbGwgcG90ZW50aWFsbHkgcmVmZXJlbmNlLgot
ICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZl
ZFRva2VucywgU3RyaW5nIGJhY2tpbmdTdHJpbmcpCi0gICAgICAgIDogbV9iYWNraW5nU3RyaW5n
KGJhY2tpbmdTdHJpbmcpCi0gICAgICAgICwgbV90b2tlbnMocmVzb2x2ZWRUb2tlbnMpCi0gICAg
ICAgICwgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbihmYWxzZSkKLSAgICB7IH0KLQotICAgIHZv
aWQgY29uc3VtZUFuZFVwZGF0ZVRva2Vucyhjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Cisg
ICAgQ1NTVmFyaWFibGVEYXRhKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHVwZGF0ZVRva2Vucyhjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJik7Ci0gICAgCi0gICAgYm9vbCBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
c1dpdGhSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYsIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
aW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwotICAgIGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENTU1BhcnNlclRva2Vu
UmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
OwotICAgIGJvb2wgcmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2soY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0JiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSwgVmVjdG9yPENTU1BhcnNlclRv
a2VuPiYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9iYWNraW5n
U3RyaW5nOwogICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gbV90b2tlbnM7Ci0gICAgY29uc3Qg
Ym9vbCBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uOwogCiAgICAgLy8gRklYTUUtTkVXUEFSU0VS
OiBXZSB3YW50IHRvIGNhY2hlIFN0eWxlUHJvcGVydGllcyBvbmNlIHdlIHN1cHBvcnQgQGFwcGx5
LgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
LmNwcAppbmRleCAzODk1N2U0MDMwYzIzOGY0Zjc3NTUyY2YyOTNlNTExMGE3OTEzOTY4Li43N2E1
MjNlNGQ3ZGRhZGYwMzBhMTI0MDVkZTdmYzJmY2M3YTExNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwCkBAIC0zMCw2ICszMCw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZS5oIgogCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVy
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIENTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdApAQCAtNDAsMTEgKzQzLDcyIEBAIFN0cmluZyBD
U1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICB9CiAg
ICAgcmV0dXJuIG1fc3RyaW5nVmFsdWU7CiB9Ci0gICAgCi1ib29sIENTU1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Q
cm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25z
dAorCitzdGF0aWMgYm9vbCByZXNvbHZlVG9rZW5SYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBW
ZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKKwor
c3RhdGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2soQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVy
dHlTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsK
KyAgICByYW5nZS5jb25zdW1lKCk7CisgICAgcmV0dXJuIHJlc29sdmVUb2tlblJhbmdlKHJhbmdl
LCByZXN1bHQsIHN0YXRlKTsKK30KKworc3RhdGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJl
c3VsdCwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQogewotICAgIEFTU0VSVCht
X2RhdGEpOwotICAgIHJldHVybiBtX2RhdGEtPmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKG5hbWUs
IHN0eWxlLCBzZWVuUHJvcGVydGllcywgaW52YWxpZFByb3BlcnRpZXMpOworICAgIGF1dG8mIHJl
Z2lzdGVyZWRQcm9wZXJ0aWVzID0gc3RhdGUuc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5nZXRD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKTsKKyAgICBhdXRvJiBzdHlsZSA9ICpzdGF0
ZS5zdHlsZVJlc29sdmVyLT5zdHlsZSgpOworCisgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2Uo
KTsKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKTsKKyAgICBT
dHJpbmcgdmFyaWFibGVOYW1lID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52
YWx1ZSgpLnRvU3RyaW5nKCk7CisgICAgQVNTRVJUKHJhbmdlLmF0RW5kKCkgfHwgKHJhbmdlLnBl
ZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbikpOworCisgICAgLy8gQXBwbHkgdGhpcyB2YXJpYWJs
ZSBmaXJzdCwgaW4gY2FzZSBpdCBpcyBzdGlsbCB1bnJlc29sdmVkCisgICAgc3RhdGUuc3R5bGVS
ZXNvbHZlci0+YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFtZSwgc3RhdGUp
OworCisgICAgLy8gQXBwbHkgZmFsbGJhY2sgdG8gZGV0ZWN0IGN5Y2xlcworICAgIFZlY3RvcjxD
U1NQYXJzZXJUb2tlbj4gZmFsbGJhY2tSZXN1bHQ7CisgICAgcmVzb2x2ZVZhcmlhYmxlRmFsbGJh
Y2soQ1NTUGFyc2VyVG9rZW5SYW5nZShyYW5nZSksIGZhbGxiYWNrUmVzdWx0LCBzdGF0ZSk7CisK
KyAgICBhdXRvKiBwcm9wZXJ0eSA9IHN0eWxlLmdldEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFt
ZSk7CisKKyAgICBpZiAoIXByb3BlcnR5IHx8IHByb3BlcnR5LT5pc1Vuc2V0KCkgfHwgcHJvcGVy
dHktPmlzSW52YWxpZCgpKSB7CisgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVk
UHJvcGVydGllcy5nZXQodmFyaWFibGVOYW1lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYg
cmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHJlZ2lz
dGVyZWQtPmluaXRpYWxWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4g
cmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2socmFuZ2UsIHJlc3VsdCwgc3RhdGUpOworICAgIH0KKwor
ICAgIEFTU0VSVChwcm9wZXJ0eS0+aXNSZXNvbHZlZCgpKTsKKyAgICByZXN1bHQuYXBwZW5kVmVj
dG9yKHByb3BlcnR5LT50b2tlbnMoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IGJvb2wgcmVzb2x2ZVRva2VuUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9y
PENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3Rh
dGUpCit7CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5k
KCkpIHsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVW
YXIgfHwgcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUVudikKKyAgICAgICAg
ICAgIHN1Y2Nlc3MgJj0gcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKHJhbmdlLmNvbnN1bWVCbG9j
aygpLCByZXN1bHQsIHN0YXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChyYW5nZS5jb25zdW1lKCkpOworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwor
UmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6cmVzb2x2
ZVZhcmlhYmxlUmVmZXJlbmNlcyhBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpIGNv
bnN0Cit7CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICBD
U1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlID0gbV9kYXRhLT50b2tlblJhbmdlKCk7CisKKyAgICBp
ZiAoIXJlc29sdmVUb2tlblJhbmdlKHJhbmdlLCByZXNvbHZlZFRva2Vucywgc3RhdGUpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0
ZShyZXNvbHZlZFRva2Vucyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oCmluZGV4IDIyODk2NGVk
NzY5NDQwNTkzOTVjMTBjNjRhZWYyYzAxMDZkODFmN2YuLmQ3MGUzMjdjMTA2ZGRhYWU4MjNmZjk5
YmZhMmE5Y2JiYThiNjA2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWUuaApAQCAtMjksMjggKzI5LDMwIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4uaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdl
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYXJpYWJsZURhdGEuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1
Y3QgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGU7CitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdl
OworCiBjbGFzcyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IGNyZWF0
ZShSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIGRhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKFdURk1vdmUoZGF0YSkpKTsKLSAg
ICB9Ci0KLSAgICBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YVZhbHVlKCkgY29uc3QKKyAg
ICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IGNyZWF0ZShjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGEuZ2V0
KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUocmFuZ2UpKSk7CiAgICAgfQogCi0gICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YSA9PSBvdGhlci5tX2RhdGE7IH0KKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
ID09IG90aGVyLm1fZGF0YS5nZXQoKTsgfQogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29u
c3Q7CiAKLSAgICBib29sIGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Q
cm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25z
dDsKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2Vz
KEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZShSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIGRhdGEpCkBAIC01
OSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxDU1NWYXJp
YWJsZURhdGE+IG1fZGF0YTsKKyAgICBSZWY8Q1NTVmFyaWFibGVEYXRhPiBtX2RhdGE7CiAgICAg
bXV0YWJsZSBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKICAgICBtdXRhYmxlIGJvb2wgbV9zZXJpYWxp
emVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
UmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVn
aXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggMzczMThkYTY1OThmZDExNTkzMDY5Y2EyMjE1
NWZkYjY0YjU0ZDdhZC4uYjhlZjZhOTUyMTNkZWEyNTA3ZDVkZjc1MTFmYTkxM2Y5MjgyMjlhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5LmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1By
b3BlcnR5UGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmgi
CiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiRE9NQ1NTTmFtZXNwYWNlLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aCIKLSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDI4ICs0MiwzMyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5OjpyZWdpc3RlclByb3BlcnR5
KERvY3VtZW50JiBkb2N1bQogewogICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBp
bml0aWFsVmFsdWU7CiAgICAgaWYgKCFkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgaW5pdGlhbFZhbHVlID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRl
V2l0aFZhcmlhYmxlRGF0YShkZXNjcmlwdG9yLm5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRl
KENTU1BhcnNlclRva2VuUmFuZ2UoVmVjdG9yPENTU1BhcnNlclRva2VuPigpKSwgZmFsc2UpKTsK
LSAgICAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVudCk7CisgICAgICAgIENTU1Rva2VuaXpl
ciB0b2tlbml6ZXIoZGVzY3JpcHRvci5pbml0aWFsVmFsdWUpOwogICAgICAgICBTdHlsZVJlc29s
dmVyIHN0eWxlUmVzb2x2ZXIoZG9jdW1lbnQpOwogCi0gICAgICAgIGF1dG8gcHJpbWl0aXZlVmFs
ID0gcGFyc2VyLnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlDdXN0b20sIGRlc2NyaXB0b3Iu
aW5pdGlhbFZhbHVlKTsKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWwgfHwgIXByaW1pdGl2ZVZh
bC0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAvLyBXZSBuZWVkIHRvIGluaXRpYWxpemUg
dGhpcyBzbyB0aGF0IHdlIGNhbiBzdWNjZXNzZnVsbHkgcGFyc2UgY29tcHV0YXRpb25hbGx5IGRl
cGVuZGVudCB2YWx1ZXMgKGxpa2UgZW0gdW5pdHMpLgorICAgICAgICAvLyBXZSBkb24ndCBhY3R1
YWxseSBuZWVkIHRoZSB2YWx1ZXMgdG8gYmUgYWNjdXJhdGUsIHNpbmNlIHRoZXkgd2lsbCBiZSBy
ZWplY3RlZCBsYXRlciBhbnl3YXkKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLnNldFN0
eWxlKHN0eWxlUmVzb2x2ZXIuZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsKKyAgICAgICAgc3R5
bGVSZXNvbHZlci51cGRhdGVGb250KCk7CisKKyAgICAgICAgaW5pdGlhbFZhbHVlID0gQ1NTUHJv
cGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGRlc2NyaXB0b3IubmFt
ZSwgZGVzY3JpcHRvci5zeW50YXgsIHRva2VuaXplci50b2tlblJhbmdlKCksIHN0eWxlUmVzb2x2
ZXIsIHN0cmljdENTU1BhcnNlckNvbnRleHQoKSk7CisKKyAgICAgICAgaWYgKCFpbml0aWFsVmFs
dWUgfHwgIWluaXRpYWxWYWx1ZS0+aXNSZXNvbHZlZCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3Qg
cGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguIiB9OwogCiAgICAgICAgIEhhc2hTZXQ8Q1NTUHJv
cGVydHlJRD4gZGVwZW5kZW5jaWVzOwotICAgICAgICBwcmltaXRpdmVWYWwtPmNvbGxlY3REaXJl
Y3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7Ci0gICAgICAgIHByaW1p
dGl2ZVZhbC0+Y29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVu
ZGVuY2llcyk7CisgICAgICAgIGluaXRpYWxWYWx1ZS0+Y29sbGVjdERpcmVjdENvbXB1dGF0aW9u
YWxEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTsKKyAgICAgICAgaW5pdGlhbFZhbHVlLT5jb2xs
ZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTsKIAog
ICAgICAgICBpZiAoIWRlcGVuZGVuY2llcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBtdXN0IGJl
IGNvbXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudC4iIH07Ci0KLSAgICAgICAgaW5pdGlhbFZhbHVl
LT5zZXRSZXNvbHZlZFR5cGVkVmFsdWUoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVu
Z3RoKHN0eWxlUmVzb2x2ZXIsICpwcmltaXRpdmVWYWwpKTsKICAgICB9CiAKLSAgICBDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHkgcHJvcGVydHkgeyBkZXNjcmlwdG9yLm5hbWUsIGRlc2NyaXB0
b3IuaW5oZXJpdHMsIFdURk1vdmUoaW5pdGlhbFZhbHVlKSB9OworICAgIENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eSBwcm9wZXJ0eSB7IGRlc2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5zeW50
YXgsIGRlc2NyaXB0b3IuaW5oZXJpdHMsIFdURk1vdmUoaW5pdGlhbFZhbHVlKSB9OwogICAgIGlm
ICghZG9jdW1lbnQucmVnaXN0ZXJDU1NQcm9wZXJ0eShXVEZNb3ZlKHByb3BlcnR5KSkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIHBy
b3BlcnR5IGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZC4iIH07CiAKKyAgICBkb2N1bWVudC5z
dHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCk7CisKICAgICByZXR1
cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGUyOGIzNGMwZDkxZTc3ODVhNDdhNzhjOGJjMTMw
OTA1NmZmYTExOWMuLjM4M2FjOGVlNGY2NmU1MTlhNTc5YzliNmRiZDQ4OGQxZmRjZGM5ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC0yMjYsNiArMjI2LDE2IEBAIGJvb2wgUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOjppc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hCiBF
eGNlcHRpb25Pcjx2b2lkPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25z
dCBTdHJpbmcmIHByaW9yaXR5KQogewogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBt
dXRhdGlvblNjb3BlKHRoaXMpOworCisgICAgaWYgKCF3aWxsTXV0YXRlKCkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOworCisgICAgaWYg
KHBhcmVudEVsZW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQgPSAmcGFyZW50RWxlbWVudCgpLT5k
b2N1bWVudCgpOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQgPSBwYXJlbnRTdHlsZVNoZWV0
KCktPm93bmVyRG9jdW1lbnQoKTsKICAgICAKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQg
PSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlO
YW1lKHByb3BlcnR5TmFtZSkpCkBAIC0yMzMsMTYgKzI0MywxMyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgcHJvcAogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IGlmICghd2lsbE11dGF0ZSgpKQotICAgICAgICByZXR1cm4geyB9OwotCiAgICAgYm9vbCBpbXBv
cnRhbnQgPSBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHByaW9yaXR5LCAiaW1wb3J0YW50Iik7CiAg
ICAgaWYgKCFpbXBvcnRhbnQgJiYgIXByaW9yaXR5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIGJvb2wgY2hhbmdlZDsKICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eUN1c3RvbSkKLSAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldEN1c3RvbVBy
b3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4dCgp
KTsKKyAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldEN1c3RvbVByb3BlcnR5KGRv
Y3VtZW50LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQo
KSk7CiAgICAgZWxzZQogICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0UHJvcGVy
dHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4dCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDBjNDdkYTIyZWZlYTEw
YmE3ZmFkOTEyODNhZDMxYWYzNjkxNzRkMWQuLjIwMDBmZGMxZjU1ZTIxYzY2ODcxZmI5MGExZDU3
ZmJmNGM3ZjdhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
dXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAg
LTE4NzksMTMgKzE4NzksMTMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlU3Ryb2tlQ29sb3IoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHYKIAogaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxDdXN0b21Qcm9wZXJ0eShTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkq
IHJlZ2lzdGVyZWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAocmVnaXN0
ZXJlZCkgeworICAgIGlmIChyZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgp
KSB7CiAgICAgICAgIGF1dG8gaW5pdGlhbFZhbHVlID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVl
Q29weSgpOwogICAgICAgICBhcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoc3R5bGVSZXNvbHZlciwg
cmVnaXN0ZXJlZCwgKmluaXRpYWxWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGludmFsaWQgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobmFt
ZSwgQ1NTVmFsdWVJbnZhbGlkKTsKKyAgICBhdXRvIGludmFsaWQgPSBDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlOjpjcmVhdGVVbnJlc29sdmVkKG5hbWUsIENTU1ZhbHVlSW52YWxpZCk7CiAgICAgYXBw
bHlWYWx1ZUN1c3RvbVByb3BlcnR5KHN0eWxlUmVzb2x2ZXIsIHJlZ2lzdGVyZWQsIGludmFsaWQu
Z2V0KCkpOwogfQogCkBAIC0xOTAwLDEyICsxOTAwLDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q3VzdG9tUHJvcGVydHkoU3R5bGVSZXNvbHZlciYgc3R5
bGVSCiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVBy
b3BlcnR5KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgdmFsdWUp
CiB7CisgICAgQVNTRVJUKHZhbHVlLmlzUmVzb2x2ZWQoKSk7CiAgICAgY29uc3QgYXV0byYgbmFt
ZSA9IHZhbHVlLm5hbWUoKTsKIAogICAgIGlmICghcmVnaXN0ZXJlZCB8fCByZWdpc3RlcmVkLT5p
bmhlcml0cykKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRJbmhlcml0ZWRDdXN0
b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIG1ha2VSZWYodmFsdWUpLCByZWdpc3RlcmVkKTsKKyAgICAg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVl
KG5hbWUsIG1ha2VSZWYodmFsdWUpKTsKICAgICBlbHNlCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBtYWtlUmVm
KHZhbHVlKSwgcmVnaXN0ZXJlZCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBtYWtlUmVmKHZhbHVlKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5jcHAKaW5kZXggNWQ3OGY4YzE3ZmUxZGVmMWIyMmZmZGU0NGUxNTJkYjRmNjViMDdlYi4uNWFj
YjQ4ZjkxMWEzNzE3OGZhZThhODBlMTc4M2U2OWI3NTg4Y2I1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJDU1NEZWZl
cnJlZFBhcnNlci5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1BlbmRp
bmdTdWJzdGl0dXRpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyLmgiCisj
aW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgpAQCAt
Nzc5LDcgKzc4MSw3IEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHNldFBy
b3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIHBhcnNlckNvbnRleHQpOwogfQog
Ci1ib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwg
Q1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KQorYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjpzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwg
Q1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KQogewogICAgIC8vIFNldHRpbmcgdGhlIHZh
bHVlIHRvIGFuIGVtcHR5IHN0cmluZyBqdXN0IHJlbW92ZXMgdGhlIHByb3BlcnR5IGluIGJvdGgg
SUUgYW5kIEdlY2tvLgogICAgIC8vIFNldHRpbmcgaXQgdG8gbnVsbCBzZWVtcyB0byBwcm9kdWNl
IGxlc3MgY29uc2lzdGVudCByZXN1bHRzLCBidXQgd2UgdHJlYXQgaXQganVzdCB0aGUgc2FtZS4K
QEAgLTc4Nyw2ICs3ODksMTcgQEAgYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRDdXN0
b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QKICAgICAgICAgcmV0
dXJuIHJlbW92ZUN1c3RvbVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CiAKICAgICBwYXJzZXJDb250
ZXh0Lm1vZGUgPSBjc3NQYXJzZXJNb2RlKCk7CisKKyAgICBTdHJpbmcgc3ludGF4ID0gIioiOwor
ICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5nZXRDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQocHJvcGVydHlOYW1lKSA6IG51bGxwdHI7CisKKyAg
ICBpZiAocmVnaXN0ZXJlZCkKKyAgICAgICAgc3ludGF4ID0gcmVnaXN0ZXJlZC0+c3ludGF4Owor
CisgICAgQ1NTVG9rZW5pemVyIHRva2VuaXplcih2YWx1ZSk7CisgICAgaWYgKCFDU1NQcm9wZXJ0
eVBhcnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoc3ludGF4LCB0b2tlbml6
ZXIudG9rZW5SYW5nZSgpLCBwYXJzZXJDb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgLy8gV2hlbiByZXBsYWNpbmcgYW4gZXhpc3RpbmcgcHJvcGVydHkgdmFsdWUsIHRoaXMg
bW92ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCiAgICAgLy8gRmlyZWZv
eCBwcmVzZXJ2ZXMgdGhlIHBvc2l0aW9uLCBhbmQgTVNJRSBtb3ZlcyB0aGUgcHJvcGVydHkgdG8g
dGhlIGJlZ2lubmluZy4KICAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZUN1c3RvbVByb3BlcnR5
VmFsdWUoKnRoaXMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgcGFyc2VyQ29udGV4
dCkgPT0gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6Q2hhbmdlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnRpZXMuaAppbmRleCAzZjRiNjVhYjcyODhkZDBmM2IxNjFiYTQxYmQ1MDVkZjJlMzc1
NTBjLi44MzlhNTQ0M2Y5MTc4YTIyZTMwYjZmMDg3YjJjMTk5ODY0Y2YzNThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCkBAIC0yNDksNyArMjQ5LDcgQEAgcHVibGljOgogICAg
IFZlY3RvcjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9wZXJ0eVZlY3RvcjsKIAogICAgIC8vIE1ldGhv
ZHMgZm9yIHF1ZXJ5aW5nIGFuZCBhbHRlcmluZyBDU1MgY3VzdG9tIHByb3BlcnRpZXMuCi0gICAg
Ym9vbCBzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlckNvbnRleHQpOworICAgIGJv
b2wgc2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlckNv
bnRleHQpOwogICAgIGJvb2wgcmVtb3ZlQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIFN0cmluZyogcmV0dXJuVGV4dCA9IG51bGxwdHIpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGQ0ZTA2YmNjZjMzNjBkMWNhNDBjMDcy
ODAyZjQ1MDBjNTlmZGEwNWIuLjgzYjMxMWQ4MTcwM2Q1NmNkMjA3YmNhODBkMGM3M2UzZjkxMDI5
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTMyMSw3ICszMjEsNyBA
QCBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6dXBkYXRlQ29udmVyc2lvbkRhdGEo
KQogICAgIG1fY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSA9IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEobV9zdHlsZS5nZXQoKSwgbV9yb290RWxlbWVudFN0eWxlLCBtX2VsZW1lbnQgPyBtX2Vs
ZW1lbnQtPmRvY3VtZW50KCkucmVuZGVyVmlldygpIDogbnVsbHB0cik7CiB9CiAKLWlubGluZSB2
b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQordm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0U3R5bGUoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gV1RGTW92ZShz
dHlsZSk7CiAgICAgdXBkYXRlQ29udmVyc2lvbkRhdGEoKTsKQEAgLTQyOSwyMSArNDI5LDIxIEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JLZXlm
cmFtZShjb25zdCBSZW5kZXJTdHlsZSoKICAgICBDYXNjYWRlZFByb3BlcnRpZXMgY2FzY2FkZShk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlKTsKICAgICBjYXNjYWRlLmFkZE5vcm1hbE1hdGNoZXMocmVz
dWx0LCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkgLSAxKTsKIAotICAgIC8v
IFJlc29sdmUgY3VzdG9tIHByb3BlcnRpZXMgZmlyc3QuCi0gICAgYXBwbHlDYXNjYWRlZFByb3Bl
cnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVz
dWx0KTsKLQotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJv
cGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgJnJlc3VsdCk7CisgICAgQXBwbHlDYXNj
YWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmcmVzdWx0IH07
CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQ
cmlvcml0eVByb3BlcnR5LCBhcHBseVN0YXRlKTsKIAogICAgIC8vIElmIG91ciBmb250IGdvdCBk
aXJ0aWVkLCB1cGRhdGUgaXQgbm93LgogICAgIHVwZGF0ZUZvbnQoKTsKIAotICAgIC8vIE5vdyBk
byByZXN0IG9mIHRoZSBwcm9wZXJ0aWVzLgotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNh
c2NhZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmcmVzdWx0
KTsKKyAgICAvLyBOb3cgcmVzb2x2ZSByZW1haW5pbmcgY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRo
ZSByZXN0LCBpbiBhbnkgb3JkZXIKKyAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3RvbVBy
b3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQo
KTsgKytpdCkKKyAgICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFw
cGx5U3RhdGUpOworICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0TG93UHJpb3JpdHlQ
cm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCBhcHBseVN0YXRlKTsKIAogICAgIC8vIElmIG91ciBm
b250IGdvdCBkaXJ0aWVkIGJ5IG9uZSBvZiB0aGUgbm9uLWVzc2VudGlhbCBmb250IHByb3BzLCB1
cGRhdGUgaXQgYSBzZWNvbmQgdGltZS4KICAgICB1cGRhdGVGb250KCk7CiAKLSAgICBjYXNjYWRl
LmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCp0aGlzLCAmcmVzdWx0KTsKKyAgICBjYXNjYWRlLmFw
cGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCp0aGlzLCBhcHBseVN0YXRlKTsKIAogICAgIGFkanVzdFJl
bmRlclN0eWxlKCpzdGF0ZS5zdHlsZSgpLCAqc3RhdGUucGFyZW50U3R5bGUoKSwgbnVsbHB0ciwg
bnVsbHB0cik7CiAKQEAgLTYzNSwxNyArNjM1LDE4IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpCiAgICAgQ2Fz
Y2FkZWRQcm9wZXJ0aWVzIGNhc2NhZGUoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAgY2Fz
Y2FkZS5hZGROb3JtYWxNYXRjaGVzKHJlc3VsdCwgMCwgcmVzdWx0Lm1hdGNoZWRQcm9wZXJ0aWVz
KCkuc2l6ZSgpIC0gMSk7CiAKLSAgICAvLyBSZXNvbHZlIGN1c3RvbSBwcm9wZXJ0aWVzIGZpcnN0
LgotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9t
LCBDU1NQcm9wZXJ0eUN1c3RvbSwgJnJlc3VsdCk7Ci0KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHks
ICZyZXN1bHQpOworICAgIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlIGFwcGx5U3RhdGUgeyB0
aGlzLCAmY2FzY2FkZSwgJnJlc3VsdCB9OworICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZp
cnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAK
ICAgICAvLyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCwgdXBkYXRlIGl0IG5vdy4KICAgICB1cGRh
dGVGb250KCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdExv
d1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgJnJlc3VsdCk7CisgICAgLy8gTm93
IHJlc29sdmUgcmVtYWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55
IG9yZGVyCisgICAgZm9yIChhdXRvIGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVn
aW4oKTsgaXQgIT0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7ICsraXQpCisgICAg
ICAgIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKKyAg
ICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RD
U1NQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKLSAgICBjYXNjYWRlLmFwcGx5RGVmZXJyZWRQcm9w
ZXJ0aWVzKCp0aGlzLCAmcmVzdWx0KTsKKyAgICBjYXNjYWRlLmFwcGx5RGVmZXJyZWRQcm9wZXJ0
aWVzKCp0aGlzLCBhcHBseVN0YXRlKTsKIAogICAgIC8vIE5vdyByZXR1cm4gdGhlIHN0eWxlLgog
ICAgIHJldHVybiBtX3N0YXRlLnRha2VTdHlsZSgpOwpAQCAtMTM3MSwxNyArMTM3MiwyMCBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1
bHQmIG1hdGNoUmVzdWx0LCBjb25zdAogICAgICAgICBjYXNjYWRlLmFkZE5vcm1hbE1hdGNoZXMo
bWF0Y2hSZXN1bHQsIG1hdGNoUmVzdWx0LnJhbmdlcy5maXJzdFVBUnVsZSwgbWF0Y2hSZXN1bHQu
cmFuZ2VzLmxhc3RVQVJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgICAgIGNhc2NhZGUu
YWRkSW1wb3J0YW50TWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0
VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5
KTsKIAotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0
eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sICZtYXRj
aFJlc3VsdCk7Ci0gICAgICAgIGFkanVzdFN0eWxlRm9ySW50ZXJDaGFyYWN0ZXJSdWJ5KCk7Cisg
ICAgICAgIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlIGFwcGx5U3RhdGUgeyB0aGlzLCAmY2Fz
Y2FkZSwgJm1hdGNoUmVzdWx0IH07CiAKLSAgICAgICAgLy8gUmVzb2x2ZSBjdXN0b20gdmFyaWFi
bGVzIGZpcnN0LgotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQ
cm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20sICZtYXRjaFJlc3VsdCk7CisgICAgICAg
IGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBD
U1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgYXBwbHlTdGF0ZSk7CisgICAgICAgIGFkanVz
dFN0eWxlRm9ySW50ZXJDaGFyYWN0ZXJSdWJ5KCk7CiAKLSAgICAgICAgLy8gU3RhcnQgYnkgYXBw
bHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRlcGVuZCBvbi4KLSAg
ICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwg
bGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOworICAgICAgICBhcHBseUNh
c2NhZGVkUHJvcGVydGllcyhmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVy
dHksIGFwcGx5U3RhdGUpOwogCisgICAgICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCB1
cGRhdGUgaXQgbm93LgogICAgICAgICB1cGRhdGVGb250KCk7Ci0gICAgICAgIGFwcGx5Q2FzY2Fk
ZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1By
b3BlcnR5LCAmbWF0Y2hSZXN1bHQpOworCisgICAgICAgIC8vIE5vdyByZXNvbHZlIHJlbWFpbmlu
ZyBjdXN0b20gcHJvcGVydGllcyBhbmQgdGhlIHJlc3QsIGluIGFueSBvcmRlcgorICAgICAgICBm
b3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBj
YXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIGFwcGx5
Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKKyAgICAgICAgYXBw
bHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJv
cGVydHksIGFwcGx5U3RhdGUpOwogCiAgICAgICAgIHN0YXRlLmNhY2hlQm9yZGVyQW5kQmFja2dy
b3VuZCgpOwogICAgIH0KQEAgLTEzOTIsMTYgKzEzOTYsMTMgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjphcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtYXRjaFJlc3VsdCwg
Y29uc3QKICAgICBjYXNjYWRlLmFkZEltcG9ydGFudE1hdGNoZXMobWF0Y2hSZXN1bHQsIG1hdGNo
UmVzdWx0LnJhbmdlcy5maXJzdFVzZXJSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVzZXJS
dWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgIGNhc2NhZGUuYWRkSW1wb3J0YW50TWF0Y2hl
cyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3Vs
dC5yYW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKIAotICAgIC8vIFJlc29s
dmUgY3VzdG9tIHByb3BlcnRpZXMgZmlyc3QuCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMo
Y2FzY2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmbWF0Y2hSZXN1
bHQpOwogCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlX
ZWJraXRSdWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCAmbWF0Y2hS
ZXN1bHQpOworICAgIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlIGFwcGx5U3RhdGUgeyB0aGlz
LCAmY2FzY2FkZSwgJm1hdGNoUmVzdWx0IH07CiAKLSAgICAvLyBBZGp1c3QgdGhlIGZvbnQgc2l6
ZSB0byBiZSBzbWFsbGVyIGlmIHJ1YnktcG9zaXRpb24gaXMgaW50ZXItY2hhcmFjdGVyLgorICAg
IGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBD
U1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgYXBwbHlTdGF0ZSk7CiAgICAgYWRqdXN0U3R5
bGVGb3JJbnRlckNoYXJhY3RlclJ1YnkoKTsKIAotICAgIC8vIFN0YXJ0IGJ5IGFwcGx5aW5nIHBy
b3BlcnRpZXMgdGhhdCBvdGhlciBwcm9wZXJ0aWVzIG1heSBkZXBlbmQgb24uCi0gICAgYXBwbHlD
YXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlv
cml0eVByb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOworICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVz
KGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7
CiAKICAgICAvLyBJZiB0aGUgZWZmZWN0aXZlIHpvb20gdmFsdWUgY2hhbmdlcywgd2UgY2FuJ3Qg
dXNlIHRoZSBtYXRjaGVkIHByb3BlcnRpZXMgY2FjaGUuIFN0YXJ0IG92ZXIuCiAgICAgaWYgKGNh
Y2hlSXRlbSAmJiBjYWNoZUl0ZW0tPnJlbmRlclN0eWxlLT5lZmZlY3RpdmVab29tKCkgIT0gc3Rh
dGUuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKQpAQCAtMTQxNCwxMyArMTQxNSwxNSBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQm
IG1hdGNoUmVzdWx0LCBjb25zdAogICAgIGlmIChjYWNoZUl0ZW0gJiYgY2FjaGVJdGVtLT5yZW5k
ZXJTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkgIT0gc3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKG1hdGNoUmVzdWx0
LCBlbGVtZW50LCBEb05vdFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCi0gICAgLy8gQXBw
bHkgcHJvcGVydGllcyB0aGF0IG5vIG90aGVyIHByb3BlcnRpZXMgZGVwZW5kIG9uLgotICAgIGFw
cGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwg
bGFzdENTU1Byb3BlcnR5LCAmbWF0Y2hSZXN1bHQpOworICAgIC8vIE5vdyByZXNvbHZlIHJlbWFp
bmluZyBjdXN0b20gcHJvcGVydGllcyBhbmQgdGhlIHJlc3QsIGluIGFueSBvcmRlcgorICAgIGZv
ciAoYXV0byBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2luKCk7IGl0ICE9IGNh
c2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOyArK2l0KQorICAgICAgICBhcHBseUNhc2Nh
ZGVkQ3VzdG9tUHJvcGVydHkoaXQtPmtleSwgYXBwbHlTdGF0ZSk7CisgICAgYXBwbHlDYXNjYWRl
ZFByb3BlcnRpZXMoZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksIGFw
cGx5U3RhdGUpOwogCiAgICAgLy8gRmluYWxseSwgc29tZSBwcm9wZXJ0aWVzIG11c3QgYmUgYXBw
bGllZCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIHBhcnNlZC4KICAgICAvLyBUaGVyZSBhcmUgc29t
ZSBDU1MgcHJvcGVydGllcyB0aGF0IGFmZmVjdCB0aGUgc2FtZSBSZW5kZXJTdHlsZSB2YWx1ZXMs
CiAgICAgLy8gc28gdG8gcHJlc2VydmUgYmVoYXZpb3IsIHdlIHF1ZXVlIHRoZW0gdXAgZHVyaW5n
IGNhc2NhZGUgYW5kIGZsdXNoIGhlcmUuCi0gICAgY2FzY2FkZS5hcHBseURlZmVycmVkUHJvcGVy
dGllcygqdGhpcywgJm1hdGNoUmVzdWx0KTsKKyAgICBjYXNjYWRlLmFwcGx5RGVmZXJyZWRQcm9w
ZXJ0aWVzKCp0aGlzLCBhcHBseVN0YXRlKTsKIAogICAgIEFTU0VSVCghc3RhdGUuZm9udERpcnR5
KCkpOwogCkBAIC0xNDQxLDggKzE0NDQsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJv
cGVydHlUb1N0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgc3RkOgogCiB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShDU1NQcm9wZXJ0
eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiB7CisgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUgYXBwbHlTdGF0ZSB7IHRoaXMsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICBpZiAodmFsdWUp
Ci0gICAgICAgIGFwcGx5UHJvcGVydHkoaWQsIHZhbHVlKTsKKyAgICAgICAgYXBwbHlQcm9wZXJ0
eShpZCwgdmFsdWUsIGFwcGx5U3RhdGUpOwogfQogCiBpbmxpbmUgYm9vbCBpc1ZhbGlkVmlzaXRl
ZExpbmtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKQpAQCAtMTYwOSwxNiArMTYxMywxOCBAQCBT
dHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIFN0eWxlUmVzb2x2ZXI6OmNhc2NhZGVk
UHJvcGVydGllc0ZvclJvbGxiYWNrKAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZh
bHVlLCBTZWxlY3RvckNoZWNrZXI6OkxpbmtNYXRjaE1hc2sgbGlua01hdGNoTWFzaywgY29uc3Qg
TWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3Bl
cnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgQXBwbHlDYXNjYWRlZFByb3Bl
cnR5U3RhdGUmIGFwcGx5U3RhdGUsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayBsaW5r
TWF0Y2hNYXNrKQogeworICAgIGF1dG8qIG1hdGNoUmVzdWx0ID0gYXBwbHlTdGF0ZS5tYXRjaFJl
c3VsdDsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFpc1Nob3J0aGFuZENTU1Byb3BlcnR5KGlk
KSwgIlNob3J0aGFuZCBwcm9wZXJ0eSBpZCA9ICVkIHdhc24ndCBleHBhbmRlZCBhdCBwYXJzaW5n
IHRpbWUiLCBpZCk7CiAKICAgICBTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwogCiAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZVRvQXBwbHkgPSB2YWx1ZTsKICAgICBpZiAodmFsdWUtPmhhc1Zhcmlh
YmxlUmVmZXJlbmNlcygpKSB7Ci0gICAgICAgIHZhbHVlVG9BcHBseSA9IHJlc29sdmVkVmFyaWFi
bGVWYWx1ZShpZCwgKnZhbHVlKTsKLSAgICAgICAgaWYgKCF2YWx1ZVRvQXBwbHkpIHsKKyAgICAg
ICAgdmFsdWVUb0FwcGx5ID0gcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKGlkLCAqdmFsdWUsIGFwcGx5
U3RhdGUpOworICAgICAgICAvLyBJZiBhcHBsaWVkUHJvcGVydGllcyBhbHJlYWR5IGhhcyB0aGlz
IGlkLCB0aGVuIHdlIGRldGVjdGVkIGEgY3ljbGUsIGFuZCB0aGlzIHZhbHVlIHNob3VsZCBiZSB1
bnNldC4KKyAgICAgICAgaWYgKCF2YWx1ZVRvQXBwbHkgfHwgYXBwbHlTdGF0ZS5hcHBsaWVkUHJv
cGVydGllcy5nZXQoaWQpKSB7CiAgICAgICAgICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzSW5oZXJp
dGVkUHJvcGVydHkoaWQpKQogICAgICAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSW5oZXJpdGVkVmFsdWUoKTsKICAgICAgICAgICAgIGVs
c2UKQEAgLTE2MjksNyArMTYzNSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlCiAgICAgaWYg
KENTU1Byb3BlcnR5Ojppc0RpcmVjdGlvbkF3YXJlUHJvcGVydHkoaWQpKSB7CiAgICAgICAgIENT
U1Byb3BlcnR5SUQgbmV3SWQgPSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJv
cGVydHkoaWQsIHN0YXRlLnN0eWxlKCktPmRpcmVjdGlvbigpLCBzdGF0ZS5zdHlsZSgpLT53cml0
aW5nTW9kZSgpKTsKICAgICAgICAgQVNTRVJUKG5ld0lkICE9IGlkKTsKLSAgICAgICAgcmV0dXJu
IGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVlVG9BcHBseS5nZXQoKSwgbGlua01hdGNoTWFzaywg
bWF0Y2hSZXN1bHQpOworICAgICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFsdWVU
b0FwcGx5LmdldCgpLCBhcHBseVN0YXRlLCBsaW5rTWF0Y2hNYXNrKTsKICAgICB9CiAKICAgICBD
U1NWYWx1ZSogdmFsdWVUb0NoZWNrRm9ySW5oZXJpdEluaXRpYWwgPSB2YWx1ZVRvQXBwbHkuZ2V0
KCk7CkBAIC0xNjQwLDcgKzE2NDYsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZQogCiAgICAg
aWYgKGlkID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7CiAgICAgICAgIGN1c3RvbVByb3BlcnR5VmFs
dWUgPSAmZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnZhbHVlVG9BcHBseSk7Ci0g
ICAgICAgIGN1c3RvbVByb3BlcnR5VmFsdWVJRCA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPnZhbHVl
SUQoKTsKKyAgICAgICAgQVNTRVJUKGN1c3RvbVByb3BlcnR5VmFsdWUtPmlzUmVzb2x2ZWQoKSk7
CisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KGN1c3RvbVBy
b3BlcnR5VmFsdWUtPnZhbHVlKCkpKQorICAgICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlE
ID0gV1RGOjpnZXQ8Q1NTVmFsdWVJRD4oY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSk7CiAg
ICAgICAgIGF1dG8mIG5hbWUgPSBjdXN0b21Qcm9wZXJ0eVZhbHVlLT5uYW1lKCk7CiAgICAgICAg
IGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCA9IGRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0KCkuZ2V0KG5hbWUpOwogICAgIH0KQEAgLTE2NjcsMTMgKzE2NzUsMTMg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENT
U1ZhbHVlKiB2YWx1ZSwgU2VsZWN0b3JDaGUKICAgICAgICAgICAgICAgICBpZiAoY3VzdG9tUHJv
cGVydHlSZWdpc3RlcmVkICYmIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZC0+aW5oZXJpdHMgJiYg
cm9sbGJhY2stPmhhc0N1c3RvbVByb3BlcnR5KGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUoKSkp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9wZXJ0eSA9IHJvbGxiYWNrLT5jdXN0b21Q
cm9wZXJ0eShjdXN0b21Qcm9wZXJ0eVZhbHVlLT5uYW1lKCkpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAocHJvcGVydHkuY3NzVmFsdWVbbGlua01hdGNoTWFza10pCi0gICAgICAgICAgICAgICAg
ICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5r
TWF0Y2hNYXNrXSwgbGlua01hdGNoTWFzaywgbWF0Y2hSZXN1bHQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwbHlQcm9wZXJ0eShwcm9wZXJ0eS5pZCwgcHJvcGVydHkuY3NzVmFsdWVbbGlu
a01hdGNoTWFza10sIGFwcGx5U3RhdGUsIGxpbmtNYXRjaE1hc2spOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlmIChy
b2xsYmFjay0+aGFzUHJvcGVydHkoaWQpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgcHJvcGVy
dHkgPSByb2xsYmFjay0+cHJvcGVydHkoaWQpOwogICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSkKLSAgICAgICAgICAgICAgICAgICAgYXBwbHlQcm9w
ZXJ0eShwcm9wZXJ0eS5pZCwgcHJvcGVydHkuY3NzVmFsdWVbbGlua01hdGNoTWFza10sIGxpbmtN
YXRjaE1hc2ssIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0
eShwcm9wZXJ0eS5pZCwgcHJvcGVydHkuY3NzVmFsdWVbbGlua01hdGNoTWFza10sIGFwcGx5U3Rh
dGUsIGxpbmtNYXRjaE1hc2spOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIApAQCAtMTcwMiwxMCArMTcxMCwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZQogICAg
IFN0eWxlQnVpbGRlcjo6YXBwbHlQcm9wZXJ0eShpZCwgKnRoaXMsICp2YWx1ZVRvQXBwbHksIGlz
SW5pdGlhbCwgaXNJbmhlcml0LCBjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQpOwogfQogCi1SZWZQ
dHI8Q1NTVmFsdWU+IFN0eWxlUmVzb2x2ZXI6OnJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BJRCwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKSBjb25zdAorUmVmUHRyPENTU1Zh
bHVlPiBTdHlsZVJlc29sdmVyOjpyZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlJRCBw
cm9wSUQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUm
IHN0YXRlKSBjb25zdAogewogICAgIENTU1BhcnNlciBwYXJzZXIoZG9jdW1lbnQoKSk7Ci0gICAg
cmV0dXJuIHBhcnNlci5wYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhwcm9wSUQsIHZh
bHVlLCBkb2N1bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLCAqbV9z
dGF0ZS5zdHlsZSgpKTsKKyAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWVXaXRoVmFyaWFibGVS
ZWZlcmVuY2VzKHByb3BJRCwgdmFsdWUsIHN0YXRlKTsKIH0KIAogUmVmUHRyPFN0eWxlSW1hZ2U+
IFN0eWxlUmVzb2x2ZXI6OnN0eWxlSW1hZ2UoQ1NTVmFsdWUmIHZhbHVlKQpAQCAtMjIyNywxMyAr
MjIzNSwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YWRkSW1w
b3J0YW50TWF0Y2hlcyhjb25zdCBNYXRjaFJlc3VsdCYgbQogICAgICAgICBhZGRNYXRjaChtYXRj
aFJlc3VsdCwgbWF0Y2guaW5kZXgsIHRydWUsIGluaGVyaXRlZE9ubHkpOwogfQogCi12b2lkIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMo
U3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdCkK
K3ZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphcHBseURlZmVycmVkUHJv
cGVydGllcyhTdHlsZVJlc29sdmVyJiByZXNvbHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIGFwcGx5U3RhdGUpCiB7CiAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IG1fZGVmZXJyZWRQ
cm9wZXJ0aWVzKQotICAgICAgICBwcm9wZXJ0eS5hcHBseShyZXNvbHZlciwgbWF0Y2hSZXN1bHQp
OworICAgICAgICBwcm9wZXJ0eS5hcHBseShyZXNvbHZlciwgYXBwbHlTdGF0ZSk7CiB9CiAKLXZv
aWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkoU3R5
bGVSZXNvbHZlciYgcmVzb2x2ZXIsIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdCkKK3Zv
aWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkoU3R5
bGVSZXNvbHZlciYgcmVzb2x2ZXIsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBhcHBseVN0
YXRlKQogewogICAgIFN0YXRlJiBzdGF0ZSA9IHJlc29sdmVyLnN0YXRlKCk7CiAgICAgc3RhdGUu
c2V0Q2FzY2FkZUxldmVsKGxldmVsKTsKQEAgLTIyNDIsNyArMjI1MCw3IEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkoU3R5bGVSZXNvbHZl
ciYgcmVzb2x2ZXIsCiAgICAgaWYgKGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZh
dWx0XSkgewogICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUodHJ1
ZSk7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFs
c2UpOwotICAgICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3Rv
ckNoZWNrZXI6Ok1hdGNoRGVmYXVsdF0sIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0LCBt
YXRjaFJlc3VsdCk7CisgICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVl
W1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0XSwgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVj
a2VyOjpNYXRjaERlZmF1bHQpOwogICAgIH0KIAogICAgIGlmIChzdGF0ZS5zdHlsZSgpLT5pbnNp
ZGVMaW5rKCkgPT0gSW5zaWRlTGluazo6Tm90SW5zaWRlKQpAQCAtMjI1MSw0MyArMjI1OSwxMTIg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBs
eShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwKICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVj
a2VyOjpNYXRjaExpbmtdKSB7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3Vs
YXJTdHlsZSh0cnVlKTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExp
bmtTdHlsZShmYWxzZSk7Ci0gICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1Zh
bHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rXSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaExp
bmssIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3Nz
VmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdLCBhcHBseVN0YXRlLCBTZWxlY3RvckNo
ZWNrZXI6Ok1hdGNoTGluayk7CiAgICAgfQogCiAgICAgaWYgKGNzc1ZhbHVlW1NlbGVjdG9yQ2hl
Y2tlcjo6TWF0Y2hWaXNpdGVkXSkgewogICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9S
ZWd1bGFyU3R5bGUoZmFsc2UpOwogICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9WaXNp
dGVkTGlua1N0eWxlKHRydWUpOwotICAgICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBj
c3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZF0sIFNlbGVjdG9yQ2hlY2tlcjo6
TWF0Y2hWaXNpdGVkLCBtYXRjaFJlc3VsdCk7CisgICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVy
dHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkXSwgYXBwbHlTdGF0
ZSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWQpOwogICAgIH0KIAogICAgIHN0YXRlLnNl
dEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICBzdGF0ZS5zZXRBcHBseVBy
b3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVy
OjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhDYXNjYWRlZFByb3BlcnRpZXMmIGNhc2NhZGUsIGlu
dCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBjb25zdCBNYXRjaFJlc3VsdCogbWF0
Y2hSZXN1bHQpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0
eShjb25zdCBTdHJpbmcmIG5hbWUsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkK
IHsKLSAgICBmb3IgKGludCBpZCA9IGZpcnN0UHJvcGVydHk7IGlkIDw9IGxhc3RQcm9wZXJ0eTsg
KytpZCkgewotICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihpZCk7Ci0gICAgICAgIGlmICghY2FzY2FkZS5oYXNQcm9wZXJ0eShwcm9w
ZXJ0eUlEKSkKKyAgICBpZiAoc3RhdGUuYXBwbGllZEN1c3RvbVByb3BlcnRpZXMuY29udGFpbnMo
bmFtZSkgfHwgIXN0YXRlLmNhc2NhZGUtPmN1c3RvbVByb3BlcnRpZXMoKS5jb250YWlucyhuYW1l
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBwcm9wZXJ0eSA9IHN0YXRlLmNhc2NhZGUt
PmN1c3RvbVByb3BlcnRpZXMoKS5nZXQobmFtZSk7CisKKyAgICBmb3IgKGF1dG8gaW5kZXggOiB7
IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0LCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlu
aywgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWQgfSkgeworICAgICAgICBpZiAoIXByb3Bl
cnR5LmNzc1ZhbHVlW2luZGV4XSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
cHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkgewotICAgICAgICAgICAgLy8gQXBwbHkg
Zm9udCBzaXplIGZpcnN0LCBzaW5jZSBjdXN0b20gcHJvcGVydGllcyBtYXkgcmVseSBvbiBpdCBm
b3IgcmVsYXRpdmUgdW5pdCBjYWxjdWxhdGlvbnMKLSAgICAgICAgICAgIC8vIE9uY2UgaXQgaXMg
YXBwbGllZCBhbmQgdGhlIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZXMgYXJlIHNldCwgaXQgd2lsbCBi
ZSBhcHBsaWVkIGFnYWluLCB3aGljaCBzaG91bGQKLSAgICAgICAgICAgIC8vIGhhbmRsZSBhbnkg
Zm9udC1zaXplIHByb3BlcnRpZXMgdGhhdCByZWx5IG9uIHJlZ2lzdGVyZWQgY3VzdG9tIHByb3Bl
cnRpZXMuCi0gICAgICAgICAgICAvLyBGSVhNRSBjeWNsZXMgc2hvdWxkIGJlIGRldGVjdGVkLgot
ICAgICAgICAgICAgaWYgKGNhc2NhZGUuaGFzUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSkp
Ci0gICAgICAgICAgICAgICAgY2FzY2FkZS5wcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplKS5h
cHBseSgqdGhpcywgbWF0Y2hSZXN1bHQpOwotICAgICAgICAgICAgdXBkYXRlRm9udCgpOwotCi0g
ICAgICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVzOjpQcm9w
ZXJ0eT46Oml0ZXJhdG9yIGVuZCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOwot
ICAgICAgICAgICAgZm9yIChIYXNoTWFwPEF0b21pY1N0cmluZywgQ2FzY2FkZWRQcm9wZXJ0aWVz
OjpQcm9wZXJ0eT46Oml0ZXJhdG9yIGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgICAgIGl0LT52YWx1ZS5hcHBseSgq
dGhpcywgbWF0Y2hSZXN1bHQpOwotICAgICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLT5jaGVja1Zh
cmlhYmxlc0luQ3VzdG9tUHJvcGVydGllcyhkb2N1bWVudCgpLmdldENTU1JlZ2lzdGVyZWRDdXN0
b21Qcm9wZXJ0eVNldCgpLCBtX3N0YXRlLnBhcmVudFN0eWxlKCksICp0aGlzKTsKKyAgICAgICAg
aWYgKGluZGV4ICE9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0ICYmIHRoaXMtPnN0YXRl
KCkuc3R5bGUoKS0+aW5zaWRlTGluaygpID09IEluc2lkZUxpbms6Ok5vdEluc2lkZSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiB2
YWx1ZVRvQXBwbHkgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoZG93bmNhc3Q8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4oKnByb3BlcnR5LmNzc1ZhbHVlW2luZGV4XSkpOworCisgICAg
ICAgIGlmIChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllc0N1c3RvbS5jb250YWlucyhuYW1lKSkg
eworICAgICAgICAgICAgLy8gV2UgYXJlIGluIGEgY3ljbGUsIHNvIHJlc2V0IHRoZSB2YWx1ZS4K
KyAgICAgICAgICAgIHN0YXRlLmFwcGxpZWRDdXN0b21Qcm9wZXJ0aWVzLmFkZChuYW1lKTsKKyAg
ICAgICAgICAgIC8vIFJlc29sdmUgdGhpcyB2YWx1ZSBzbyB0aGF0IHdlIHJlc2V0IGl0cyBkZXBl
bmRlbmNpZXMKKyAgICAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4odmFsdWVUb0FwcGx5LT52YWx1ZSgpKSkKKyAgICAgICAg
ICAgICAgICByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlDdXN0b20sIHZhbHVlVG9B
cHBseS5nZXQoKSwgc3RhdGUpOworICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aElEKG5hbWUsIENTU1ZhbHVlVW5zZXQpOworICAgICAg
ICB9CisKKyAgICAgICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20uYWRkKG5hbWUp
OworCisgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDU1NWYXJpYWJsZVJl
ZmVyZW5jZVZhbHVlPj4odmFsdWVUb0FwcGx5LT52YWx1ZSgpKSkgeworICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZSA9IHJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9w
ZXJ0eUN1c3RvbSwgdmFsdWVUb0FwcGx5LmdldCgpLCBzdGF0ZSk7CisKKyAgICAgICAgICAgIGlm
ICghcGFyc2VkVmFsdWUpCisgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobmFtZSwgQ1NTVmFsdWVVbnNldCk7CisKKyAgICAg
ICAgICAgIHZhbHVlVG9BcHBseSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KCpw
YXJzZWRWYWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhdGUuaW5Qcm9ncmVzc1By
b3BlcnRpZXNDdXN0b20uY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA9
PSBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCkgeworICAgICAgICAgICAgICAgIHRoaXMt
PnN0YXRlKCkuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOworICAgICAgICAg
ICAgICAgIHRoaXMtPnN0YXRlKCkuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShm
YWxzZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSBTZWxlY3Rv
ckNoZWNrZXI6Ok1hdGNoTGluaykgeworICAgICAgICAgICAgICAgIHRoaXMtPnN0YXRlKCkuc2V0
QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOworICAgICAgICAgICAgICAgIHRoaXMt
PnN0YXRlKCkuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSBTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoVmlzaXRlZCkgeworICAgICAgICAgICAgICAgIHRoaXMtPnN0YXRlKCkuc2V0QXBwbHlQcm9w
ZXJ0eVRvUmVndWxhclN0eWxlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0aGlzLT5zdGF0ZSgp
LnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUodHJ1ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Q3VzdG9tLCB2YWx1ZVRvQXBw
bHkucHRyKCksIHN0YXRlLCBpbmRleCk7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byYgcHJvcGVy
dHkgPSBjYXNjYWRlLnByb3BlcnR5KHByb3BlcnR5SUQpOworICAgICAgICBzdGF0ZS5pblByb2dy
ZXNzUHJvcGVydGllc0N1c3RvbS5yZW1vdmUobmFtZSk7CisgICAgICAgIHN0YXRlLmFwcGxpZWRD
dXN0b21Qcm9wZXJ0aWVzLmFkZChuYW1lKTsKKyAgICB9Cit9CisKK3ZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJv
cGVydHksIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAoTElL
RUxZKHN0YXRlLmNhc2NhZGUtPmN1c3RvbVByb3BlcnRpZXMoKS5pc0VtcHR5KCkpKQorICAgICAg
ICByZXR1cm4gYXBwbHlDYXNjYWRlZFByb3BlcnRpZXNJbXBsPEN1c3RvbVByb3BlcnR5Q3ljbGVU
cmFja2luZzo6RGlzYWJsZWQ+KGZpcnN0UHJvcGVydHksIGxhc3RQcm9wZXJ0eSwgc3RhdGUpOwor
ICAgIHJldHVybiBhcHBseUNhc2NhZGVkUHJvcGVydGllc0ltcGw8Q3VzdG9tUHJvcGVydHlDeWNs
ZVRyYWNraW5nOjpFbmFibGVkPihmaXJzdFByb3BlcnR5LCBsYXN0UHJvcGVydHksIHN0YXRlKTsK
K30KKwordGVtcGxhdGU8U3R5bGVSZXNvbHZlcjo6Q3VzdG9tUHJvcGVydHlDeWNsZVRyYWNraW5n
IFRyYWNrQ3ljbGVzPgoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXNJbXBsKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBBcHBseUNh
c2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCit7CisgICAgZm9yIChpbnQgaWQgPSBmaXJzdFBy
b3BlcnR5OyBpZCA8PSBsYXN0UHJvcGVydHk7ICsraWQpIHsKKyAgICAgICAgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOworICAgICAgICBp
ZiAoIXN0YXRlLmNhc2NhZGUtPmhhc1Byb3BlcnR5KHByb3BlcnR5SUQpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIEFTU0VSVChwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5Q3VzdG9t
KTsKKyAgICAgICAgYXV0byYgcHJvcGVydHkgPSBzdGF0ZS5jYXNjYWRlLT5wcm9wZXJ0eShwcm9w
ZXJ0eUlEKTsKICAgICAgICAgQVNTRVJUKCFzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVy
KHByb3BlcnR5SUQpKTsKLSAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIG1hdGNoUmVzdWx0
KTsKKworICAgICAgICBpZiAoVHJhY2tDeWNsZXMgPT0gQ3VzdG9tUHJvcGVydHlDeWNsZVRyYWNr
aW5nOjpEaXNhYmxlZCkgeworICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgY3Vz
dG9tIHByb3BlcnRpZXMsIHRoZW4gdGhlcmUgY2FuJ3QgYmUgYW55IGN5Y2xlcy4KKyAgICAgICAg
ICAgIHByb3BlcnR5LmFwcGx5KCp0aGlzLCBzdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMuZ2V0KHByb3Bl
cnR5SUQpKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGN5Y2xlIChlZy4gc2V0
dGluZyBmb250IHNpemUgdXNpbmcgcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVydHkgdmFsdWUgY29u
dGFpbmluZyBlbSkuCisgICAgICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUg
dW5zZXQuCisgICAgICAgICAgICAgICAgc3RhdGUuYXBwbGllZFByb3BlcnRpZXMuc2V0KHByb3Bl
cnR5SUQpOworICAgICAgICAgICAgICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgaW4gYSBjeWNsZSwg
YW5kIG9ubHkgdGhlIHJvb3Qgb2YgdGhlIGNhbGwgc3RhY2sgd2lsbCBoYXZlIGZpcnN0UHJvcGVy
dHkgIT0gbGFzdFByb3BlcnR5LgorICAgICAgICAgICAgICAgIEFTU0VSVChmaXJzdFByb3BlcnR5
ID09IGxhc3RQcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLnNldChwcm9wZXJ0
eUlEKTsKKyAgICAgICAgICAgIHByb3BlcnR5LmFwcGx5KCp0aGlzLCBzdGF0ZSk7CisgICAgICAg
ICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5zZXQocHJvcGVydHlJRCk7CisgICAgICAgICAg
ICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5zZXQocHJvcGVydHlJRCwgZmFsc2UpOworICAg
ICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA0NzAz
Y2VmYzNiYzJjM2I2Yjc0OTc0OTg3NDM1Y2FlNWRjZTVlNGJhLi5mMTlhNTAwOTliZGMwMTM4ODY4
MTgwMmQzNmIwYTMxY2Y4M2JkZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlIDxi
aXRzZXQ+CiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9CaXRtYXAuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0yNjcsNyArMjY4LDcgQEAgcHVibGljOgogICAgICAgICBDYXNjYWRl
ZFByb3BlcnRpZXMoVGV4dERpcmVjdGlvbiwgV3JpdGluZ01vZGUpOwogCiAgICAgICAgIHN0cnVj
dCBQcm9wZXJ0eSB7Ci0gICAgICAgICAgICB2b2lkIGFwcGx5KFN0eWxlUmVzb2x2ZXImLCBjb25z
dCBNYXRjaFJlc3VsdCopOworICAgICAgICAgICAgdm9pZCBhcHBseShTdHlsZVJlc29sdmVyJiwg
QXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKIAogICAgICAgICAgICAgQ1NTUHJvcGVydHlJ
RCBpZDsKICAgICAgICAgICAgIENhc2NhZGVMZXZlbCBsZXZlbDsKQEAgLTI4MSw3ICsyODIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHZvaWQgYWRkTm9ybWFsTWF0Y2hlcyhjb25zdCBNYXRjaFJlc3Vs
dCYsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5oZXJpdGVkT25seSA9IGZh
bHNlKTsKICAgICAgICAgdm9pZCBhZGRJbXBvcnRhbnRNYXRjaGVzKGNvbnN0IE1hdGNoUmVzdWx0
JiwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5ID0gZmFs
c2UpOwogCi0gICAgICAgIHZvaWQgYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoU3R5bGVSZXNvbHZl
ciYsIGNvbnN0IE1hdGNoUmVzdWx0Kik7CisgICAgICAgIHZvaWQgYXBwbHlEZWZlcnJlZFByb3Bl
cnRpZXMoU3R5bGVSZXNvbHZlciYsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7CiAKICAg
ICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFByb3BlcnR5PiYgY3VzdG9tUHJvcGVydGllcygp
IHsgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllczsgfQogICAgICAgICBib29sIGhhc0N1c3RvbVBy
b3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwpAQCAtMzAyLDcgKzMwMywxMCBAQCBwdWJsaWM6
CiAgICAgICAgIFRleHREaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICAgICAgIFdyaXRpbmdNb2Rl
IG1fd3JpdGluZ01vZGU7CiAgICAgfTsKLSAgICAKKworICAgIHZvaWQgYXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHksIEFwcGx5Q2FzY2Fk
ZWRQcm9wZXJ0eVN0YXRlJik7CisgICAgdm9pZCBhcHBseUNhc2NhZGVkQ3VzdG9tUHJvcGVydHko
Y29uc3QgU3RyaW5nJiBuYW1lLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOworCiBwcml2
YXRlOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gZml4ZXMgdXAgdGhlIGRlZmF1bHQgZm9udCBzaXpl
IGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgY3VycmVudCBnZW5lcmljIGZvbnQgZmFtaWx5IGhhcyBj
aGFuZ2VkLiAtZHdoCiAgICAgdm9pZCBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2UoUmVuZGVy
U3R5bGUqLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwpAQCAtMzIxLDcgKzMyNSwx
MCBAQCBwcml2YXRlOgogICAgIGVudW0gU2hvdWxkVXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB7
IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IDAsIFVzZU1hdGNoZWRQcm9wZXJ0aWVz
Q2FjaGUgfTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1
bHQmLCBjb25zdCBFbGVtZW50JiwgU2hvdWxkVXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IFVz
ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCi0gICAgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9w
ZXJ0eSwgY29uc3QgTWF0Y2hSZXN1bHQqKTsKKyAgICBlbnVtIEN1c3RvbVByb3BlcnR5Q3ljbGVU
cmFja2luZyB7IEVuYWJsZWQgPSAwLCBEaXNhYmxlZCB9OworICAgIHRlbXBsYXRlPEN1c3RvbVBy
b3BlcnR5Q3ljbGVUcmFja2luZz4KKyAgICBpbmxpbmUgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVy
dGllc0ltcGwoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHksIEFwcGx5Q2FzY2Fk
ZWRQcm9wZXJ0eVN0YXRlJik7CisKICAgICB2b2lkIGNhc2NhZGVNYXRjaGVzKENhc2NhZGVkUHJv
cGVydGllcyYsIGNvbnN0IE1hdGNoUmVzdWx0JiwgYm9vbCBpbXBvcnRhbnQsIGludCBzdGFydElu
ZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5oZXJpdGVkT25seSk7CiAKICAgICB2b2lkIG1hdGNo
UGFnZVJ1bGVzKE1hdGNoUmVzdWx0JiwgUnVsZVNldCosIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBp
c0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSk7CkBAIC00NTUsMTIgKzQ2MiwxMiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSkgeyBtX3N0YXRlLnNldFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKTsgfQogICAgIHZvaWQgc2V0
VGV4dE9yaWVudGF0aW9uKFRleHRPcmllbnRhdGlvbiB0ZXh0T3JpZW50YXRpb24pIHsgbV9zdGF0
ZS5zZXRUZXh0T3JpZW50YXRpb24odGV4dE9yaWVudGF0aW9uKTsgfQogCi0gICAgUmVmUHRyPENT
U1ZhbHVlPiByZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTVmFs
dWUmKSBjb25zdDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc29sdmVkVmFyaWFibGVWYWx1ZShD
U1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRl
JikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQo
KTsKIAotICAgIHZvaWQgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIFNl
bGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZh
dWx0LCBjb25zdCBNYXRjaFJlc3VsdCogPSBudWxscHRyKTsKKyAgICB2b2lkIGFwcGx5UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYs
IFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayA9IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hE
ZWZhdWx0KTsKIAogICAgIHZvaWQgYXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NW
YWx1ZSopOwogCkBAIC01MjQsNiArNTMxLDE5IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBNYXRjaFJhbmdlcyYsIGNvbnN0IE1hdGNoUmFuZ2VzJik7CiB9Owog
CisvLyBTdGF0ZSB0byB1c2Ugd2hlbiBhcHBseWluZyBwcm9wZXJ0aWVzLCB0byBrZWVwIHRyYWNr
IG9mIHdoaWNoIGN1c3RvbSBhbmQgaGlnaC1wcmlvcml0eQorLy8gcHJvcGVydGllcyBoYXZlIGJl
ZW4gcmVzb2x2ZWQuCitzdHJ1Y3QgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgeworICAgIFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXI7CisgICAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQ
cm9wZXJ0aWVzKiBjYXNjYWRlOworICAgIGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0
KiBtYXRjaFJlc3VsdDsKKyAgICBCaXRtYXA8bnVtQ1NTUHJvcGVydGllcz4gYXBwbGllZFByb3Bl
cnRpZXMgPSB7IH07CisgICAgSGFzaFNldDxTdHJpbmc+IGFwcGxpZWRDdXN0b21Qcm9wZXJ0aWVz
ID0geyB9OworICAgIEJpdG1hcDxudW1DU1NQcm9wZXJ0aWVzPiBpblByb2dyZXNzUHJvcGVydGll
cyA9IHsgfTsKKyAgICBIYXNoU2V0PFN0cmluZz4gaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20g
PSB7IH07Cit9OworCisKIGlubGluZSBib29sIFN0eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9y
QXR0cmlidXRlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyAmYXR0
cmlidXRlTmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWF0dHJpYnV0ZU5hbWUuaXNFbXB0eSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAppbmRleCA5ZGYwZmQ0NTlm
OTA3MzMyNDQwZDVlOGE5YjgxNmIxNjUyNGRjZWRjLi4wZDZhZWYwOGY5MjRmMDc4ODlkMmNhMTQx
MDhjZTU3YTE4NDViZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3Bw
CkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVDb2xvci5oIgorI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJTdHls
ZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTE3
Nyw4ICsxNzgsMTAgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25Gb3JJbnNwZWN0
b3IoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgY28KICAgICBDU1NQYXJzZXJJbXBs
OjpwYXJzZURlY2xhcmF0aW9uTGlzdEZvckluc3BlY3RvcihzdHJpbmcsIGNvbnRleHQsIG9ic2Vy
dmVyKTsKIH0KIAotUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFy
aWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVnaXN0ZXJlZFByb3Bl
cnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJ
RCwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3Rh
dGUpCiB7CisgICAgQVNTRVJUKChwcm9wSUQgPT0gQ1NTUHJvcGVydHlDdXN0b20gJiYgdmFsdWUu
aXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkpIHx8IChwcm9wSUQgIT0gQ1NTUHJvcGVydHlDdXN0b20g
JiYgIXZhbHVlLmlzQ3VzdG9tUHJvcGVydHlWYWx1ZSgpKSk7CisgICAgYXV0byYgc3R5bGUgPSAq
c3RhdGUuc3R5bGVSZXNvbHZlci0+c3R5bGUoKTsKICAgICBhdXRvIGRpcmVjdGlvbiA9IHN0eWxl
LmRpcmVjdGlvbigpOwogICAgIGF1dG8gd3JpdGluZ01vZGUgPSBzdHlsZS53cml0aW5nTW9kZSgp
OwogCkBAIC0xOTAsMTIgKzE5MywxMSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCBwcm9wSQogICAgICAg
ICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShzaG9ydGhhbmRJRCkp
CiAgICAgICAgICAgICBzaG9ydGhhbmRJRCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9u
QXdhcmVQcm9wZXJ0eShzaG9ydGhhbmRJRCwgZGlyZWN0aW9uLCB3cml0aW5nTW9kZSk7CiAgICAg
ICAgIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUqIHNob3J0aGFuZFZhbHVlID0gcGVuZGluZ1N1
YnN0aXR1dGlvbi5zaG9ydGhhbmRWYWx1ZSgpOwotICAgICAgICBjb25zdCBDU1NWYXJpYWJsZURh
dGEqIHZhcmlhYmxlRGF0YSA9IHNob3J0aGFuZFZhbHVlLT52YXJpYWJsZURhdGFWYWx1ZSgpOwot
ICAgICAgICBBU1NFUlQodmFyaWFibGVEYXRhKTsKLSAgICAgICAgCi0gICAgICAgIFZlY3RvcjxD
U1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Ci0gICAgICAgIGlmICghdmFyaWFibGVEYXRh
LT5yZXNvbHZlVG9rZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVydGllcywgdmFyaWFibGVEYXRhLT50
b2tlbnMoKSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKKworICAgICAgICBhdXRvIHJlc29sdmVk
RGF0YSA9IHNob3J0aGFuZFZhbHVlLT5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKHN0YXRlKTsK
KyAgICAgICAgaWYgKCFyZXNvbHZlZERhdGEpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VucyA9IHJlc29sdmVk
RGF0YS0+dG9rZW5zKCk7CiAgICAgICAgIAogICAgICAgICBQYXJzZWRQcm9wZXJ0eVZlY3RvciBw
YXJzZWRQcm9wZXJ0aWVzOwogICAgICAgICBpZiAoIUNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZh
bHVlKHNob3J0aGFuZElELCBmYWxzZSwgcmVzb2x2ZWRUb2tlbnMsIG1fY29udGV4dCwgcGFyc2Vk
UHJvcGVydGllcywgU3R5bGVSdWxlOjpTdHlsZSkpCkBAIC0yMDksMzEgKzIxMSwzMyBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMo
Q1NTUHJvcGVydHlJRCBwcm9wSQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBjb25zdCBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YSA9IG51bGxwdHI7Ci0KICAgICBp
ZiAodmFsdWUuaXNWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKCkpIHsKICAgICAgICAgY29uc3QgQ1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYgdmFsdWVXaXRoUmVmZXJlbmNlcyA9IGRvd25jYXN0PENT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+KHZhbHVlKTsKLSAgICAgICAgdmFyaWFibGVEYXRhID0g
dmFsdWVXaXRoUmVmZXJlbmNlcy52YXJpYWJsZURhdGFWYWx1ZSgpOwotICAgICAgICBBU1NFUlQo
dmFyaWFibGVEYXRhKTsKKyAgICAgICAgYXV0byByZXNvbHZlZERhdGEgPSB2YWx1ZVdpdGhSZWZl
cmVuY2VzLnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoc3RhdGUpOworICAgICAgICBpZiAoIXJl
c29sdmVkRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4g
Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUocHJvcElELCByZXNvbHZlZERhdGEt
PnRva2VucygpLCBtX2NvbnRleHQpOwogICAgIH0KIAotICAgIGlmICh2YWx1ZS5pc0N1c3RvbVBy
b3BlcnR5VmFsdWUoKSkgewotICAgICAgICBjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiBj
dXN0b21Qcm9wVmFsdWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSk7
CisgICAgY29uc3QgYXV0byYgY3VzdG9tUHJvcFZhbHVlID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZT4odmFsdWUpOworICAgIGNvbnN0IGF1dG8mIHZhbHVlV2l0aFJlZmVyZW5jZXMg
PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KGN1c3RvbVByb3BWYWx1
ZS52YWx1ZSgpKS5nZXQoKTsKIAotICAgICAgICBpZiAoY3VzdG9tUHJvcFZhbHVlLnJlc29sdmVk
VHlwZWRWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoKmN1c3RvbVByb3BWYWx1ZS5yZXNvbHZlZFR5cGVkVmFsdWUoKSwgc3R5bGUpOworICAgIGF1
dG8mIG5hbWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSkubmFtZSgp
OworICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSBzdGF0ZS5zdHlsZVJlc29sdmVyLT5kb2N1bWVudCgp
LmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLmdldChuYW1lKTsKKyAgICBhdXRv
JiBzeW50YXggPSByZWdpc3RlcmVkID8gcmVnaXN0ZXJlZC0+c3ludGF4IDogIioiOworICAgIGF1
dG8gcmVzb2x2ZWREYXRhID0gdmFsdWVXaXRoUmVmZXJlbmNlcy5yZXNvbHZlVmFyaWFibGVSZWZl
cmVuY2VzKHN0YXRlKTsKIAotICAgICAgICB2YXJpYWJsZURhdGEgPSBjdXN0b21Qcm9wVmFsdWUu
dmFsdWUoKTsKLSAgICB9Ci0KLSAgICBpZiAoIXZhcmlhYmxlRGF0YSkKKyAgICBpZiAoIXJlc29s
dmVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8Q1NTUGFyc2Vy
VG9rZW4+IHJlc29sdmVkVG9rZW5zOwotICAgIGlmICghdmFyaWFibGVEYXRhLT5yZXNvbHZlVG9r
ZW5SYW5nZShyZWdpc3RlcmVkUHJvcGVydGllcywgdmFyaWFibGVEYXRhLT50b2tlbnMoKSwgcmVz
b2x2ZWRUb2tlbnMsIHN0eWxlKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRklY
TUUgaGFuZGxlIFJFTSBjeWNsZXMuCisgICAgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBkZXBlbmRl
bmNpZXM7CisgICAgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0
eVZhbHVlRGVwZW5kZW5jaWVzKHN5bnRheCwgZmFsc2UsIGRlcGVuZGVuY2llcywgcmVzb2x2ZWRE
YXRhLT50b2tlbnMoKSwgbV9jb250ZXh0KTsKKworICAgIGZvciAoYXV0byBpZCA6IGRlcGVuZGVu
Y2llcykKKyAgICAgICAgc3RhdGUuc3R5bGVSZXNvbHZlci0+YXBwbHlDYXNjYWRlZFByb3BlcnRp
ZXMoaWQsIGlkLCBzdGF0ZSk7CiAKLSAgICByZXR1cm4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNl
U2luZ2xlVmFsdWUocHJvcElELCByZXNvbHZlZFRva2VucywgbV9jb250ZXh0KTsKKyAgICByZXR1
cm4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUs
IHN5bnRheCwgcmVzb2x2ZWREYXRhLT50b2tlbnMoKSwgKnN0YXRlLnN0eWxlUmVzb2x2ZXIsIG1f
Y29udGV4dCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8ZG91YmxlPj4gQ1NTUGFyc2Vy
OjpwYXJzZUtleWZyYW1lS2V5TGlzdChjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKaW5kZXggMDliYTRiMDMwYTZjNWY2YTJhNWYxMmE2OTFi
MDA4Y2I1MjVlZWEzYy4uNDcwNjNjZGZiOWEyNTVjNTZiZmRjNDVmNmNlNGIwMzY0NDExMDBmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCkBAIC0zMCw2ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRl
OwogY2xhc3MgQ1NTUGFyc2VyT2JzZXJ2ZXI7CiBjbGFzcyBDU1NTZWxlY3Rvckxpc3Q7CiBjbGFz
cyBDb2xvcjsKQEAgLTc3LDcgKzc4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYXJzZVNlbGVj
dG9yKGNvbnN0IFN0cmluZyYsIENTU1NlbGVjdG9yTGlzdCYpOwogCi0gICAgUmVmUHRyPENTU1Zh
bHVlPiBwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlELCBjb25z
dCBDU1NWYWx1ZSYsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0
IFJlbmRlclN0eWxlJik7CisgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVZhbHVlV2l0aFZhcmlh
YmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYsIEFwcGx5Q2FzY2Fk
ZWRQcm9wZXJ0eVN0YXRlJik7CiAKICAgICBzdGF0aWMgQ29sb3IgcGFyc2VDb2xvcihjb25zdCBT
dHJpbmcmLCBib29sIHN0cmljdCA9IGZhbHNlKTsKICAgICBzdGF0aWMgQ29sb3IgcGFyc2VTeXN0
ZW1Db2xvcihjb25zdCBTdHJpbmcmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDIxZmVi
YWNjNGNmYmFhNTExYmJhZWE2NDc1ZjE2MGQ1MzI1ZGMwZjYuLmMzYTIzYjU5OWU4ZWI0ZDc5Y2E5
ZjkzZWRjNjQ0ZmYwYmEzMWQ4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ1NTQ29u
dGVudERpc3RyaWJ1dGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5o
IgogI2luY2x1ZGUgIkNTU0N1c3RvbUlkZW50VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQpA
QCAtNzMsOCArNzQsMTAgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJlYW0uaCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVz
LmgiCisjaW5jbHVkZSAiU3R5bGVCdWlsZGVyQ29udmVydGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5j
dGlvbnMuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8Yml0c2V0Pgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBA
IC0yMTMsMTIgKzIxNiwxMyBAQCBDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5SUQoU3RyaW5nVmll
dyBzdHJpbmcpCiAgICAgCiB1c2luZyBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OwogCi1DU1NQcm9wZXJ0eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIFZlY3Rv
cjxDU1NQcm9wZXJ0eSwgMjU2PiogcGFyc2VkUHJvcGVydGllcykKK0NTU1Byb3BlcnR5UGFyc2Vy
OjpDU1NQcm9wZXJ0eVBhcnNlcihjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+KiBw
YXJzZWRQcm9wZXJ0aWVzLCBib29sIGNvbnN1bWVXaGl0ZXNwYWNlKQogICAgIDogbV9yYW5nZShy
YW5nZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9wYXJzZWRQcm9wZXJ0aWVz
KHBhcnNlZFByb3BlcnRpZXMpCiB7Ci0gICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwor
ICAgIGlmIChjb25zdW1lV2hpdGVzcGFjZSkKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVz
cGFjZSgpOwogfQogCiB2b2lkIENTU1Byb3BlcnR5UGFyc2VyOjphZGRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5LCBDU1NQcm9wZXJ0eUlEIGN1cnJlbnRTaG9ydGhhbmQsIFJlZjxDU1NW
YWx1ZT4mJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQpCkBAIC0yNzgsNiAr
MjgyLDI3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xl
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uCiAgICAgcmV0dXJuIHZhbHVlOwogfQog
Citib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1
ZShjb25zdCBTdHJpbmcmIHN5bnRheCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5z
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENTU1Byb3BlcnR5UGFy
c2VyIHBhcnNlcih0b2tlbnMsIGNvbnRleHQsIG51bGxwdHIpOworICAgIHJldHVybiBwYXJzZXIu
Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoc3ludGF4KTsKK30KKworUmVmUHRyPENT
U0N1c3RvbVByb3BlcnR5VmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9t
UHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBj
b25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGNvbnN0IFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NT
UHJvcGVydHlQYXJzZXIgcGFyc2VyKHRva2VucywgY29udGV4dCwgbnVsbHB0ciwgZmFsc2UpOwor
ICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiB2YWx1ZSA9IHBhcnNlci5wYXJzZVR5
cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBzeW50YXgsIHN0eWxlUmVzb2x2ZXIpOworICAg
IGlmICghdmFsdWUgfHwgIXBhcnNlci5tX3JhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiB2YWx1ZTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6
Y29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3RyaW5n
JiBzeW50YXgsIGJvb2wgaXNSb290LCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRlbmNp
ZXMsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NQcm9wZXJ0eVBhcnNlciBwYXJzZXIodG9rZW5zLCBj
b250ZXh0LCBudWxscHRyKTsKKyAgICBwYXJzZXIuY29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5
VmFsdWVEZXBlbmRlbmNpZXMoc3ludGF4LCBpc1Jvb3QsIGRlcGVuZGVuY2llcyk7Cit9CisKIHN0
YXRpYyBib29sIGlzTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQp
CiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CkBAIC0zMjAsNyArMzQ1LDcgQEAgYm9vbCBD
U1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VWYWx1ZVN0YXJ0KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgYm9vbCBpbXBvcnRhbnQKICAgICB9CiAKICAgICBpZiAoQ1NTVmFyaWFibGVQYXJzZXI6OmNv
bnRhaW5zVmFsaWRWYXJpYWJsZVJlZmVyZW5jZXMob3JpZ2luYWxSYW5nZSwgbV9jb250ZXh0KSkg
ewotICAgICAgICBSZWZQdHI8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4gdmFyaWFibGUgPSBD
U1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjcmVhdGUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUo
b3JpZ2luYWxSYW5nZSkpOworICAgICAgICBSZWZQdHI8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZT4gdmFyaWFibGUgPSBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjcmVhdGUob3JpZ2luYWxS
YW5nZSk7CiAKICAgICAgICAgaWYgKGlzU2hvcnRoYW5kKSB7CiAgICAgICAgICAgICBSZWZQdHI8
Q1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlPiBwZW5kaW5nVmFsdWUgPSBDU1NQZW5kaW5nU3Vi
c3RpdHV0aW9uVmFsdWU6OmNyZWF0ZShwcm9wZXJ0eUlELCB2YXJpYWJsZS5yZWxlYXNlTm9uTnVs
bCgpKTsKQEAgLTM4ODYsNyArMzkxMSw2IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQ
YXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2lkdGg6CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUhlaWdodDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Q3VzdG9tOiAv
LyBGSVhNRTogcGFyc2luZyBhIHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnR5IHNob3VsZCBiZSBi
YXNlZCBvbiBpdHMgc3ludGF4LgogICAgICAgICByZXR1cm4gY29uc3VtZVdpZHRoT3JIZWlnaHQo
bV9yYW5nZSwgbV9jb250ZXh0LCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1pbklubGluZVNpemU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkJsb2NrU2l6ZToK
QEAgLTQyNTYsNiArNDI4MCw2NCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2Vy
OjpwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTUwogICAgIH0KIH0K
IAorYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFs
dWUoY29uc3QgU3RyaW5nJiBzeW50YXgpCit7CisgICAgaWYgKHN5bnRheCAhPSAiKiIpIHsKKyAg
ICAgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworCisgICAgICAgIC8vIEZpcnN0IGNo
ZWNrIGZvciBrZXl3b3JkcworICAgICAgICBDU1NWYWx1ZUlEIGlkID0gbV9yYW5nZS5wZWVrKCku
aWQoKTsKKyAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1
ZUluaXRpYWwgfHwgaWQgPT0gQ1NTVmFsdWVSZXZlcnQpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICBhdXRvIGxvY2FsUmFuZ2UgPSBtX3JhbmdlOworICAgICAgICB3aGlsZSAo
IWxvY2FsUmFuZ2UuYXRFbmQoKSkgeworICAgICAgICAgICAgYXV0byBpZCA9IGxvY2FsUmFuZ2Uu
Y29uc3VtZSgpLmZ1bmN0aW9uSWQoKTsKKyAgICAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZVZh
ciB8fCBpZCA9PSBDU1NWYWx1ZUVudikKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8g
Rm9yIHZhcmlhYmxlcywgd2UganVzdCBwZXJtaXQgZXZlcnl0aGluZworICAgICAgICB9CisKKyAg
ICAgICAgYXV0byBwcmltaXRpdmVWYWwgPSBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBt
X2NvbnRleHQpOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsICYmIHByaW1pdGl2ZVZhbC0+aXNQ
cmltaXRpdmVWYWx1ZSgpICYmIG1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3ZvaWQgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGlzUm9vdCwgSGFzaFNl
dDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVzKQoreworICAgIGlmIChzeW50YXggIT0gIioi
KSB7CisgICAgICAgIG1fcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKKyAgICAgICAgYXV0byBw
cmltaXRpdmVWYWwgPSBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQpOwor
ICAgICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbCAmJiBwcmltaXRpdmVWYWwtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICAgICAgcHJpbWl0aXZlVmFsLT5jb2xsZWN0RGlyZWN0Q29tcHV0YXRpb25hbERl
cGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOworICAgICAgICAgICAgaWYgKGlzUm9vdCkKKyAgICAg
ICAgICAgICAgICBwcmltaXRpdmVWYWwtPmNvbGxlY3REaXJlY3RSb290Q29tcHV0YXRpb25hbERl
cGVuZGVuY2llcyhkZXBlbmRlbmNpZXMpOworICAgICAgICB9CisgICAgfQorfQorCitSZWZQdHI8
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0
b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50YXgs
IGNvbnN0IFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCit7CisgICAgaWYgKHN5bnRheCAh
PSAiKiIpIHsKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICBh
dXRvIHByaW1pdGl2ZVZhbCA9IGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4
dCk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWwgJiYgcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3Jl
YXRlU3ludGF4TGVuZ3RoKG5hbWUsIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0
aChzdHlsZVJlc29sdmVyLCAqcHJpbWl0aXZlVmFsKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
YXV0byBwcm9wZXJ0eVZhbHVlID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlU3ludGF4
QWxsKG5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKG1fcmFuZ2UpKTsKKyAgICAgICAgd2hp
bGUgKCFtX3JhbmdlLmF0RW5kKCkpCisgICAgICAgICAgICBtX3JhbmdlLmNvbnN1bWUoKTsKKyAg
ICAgICAgcmV0dXJuIHsgV1RGTW92ZShwcm9wZXJ0eVZhbHVlKSB9OworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3VtZUZv
bnRGYWNlVW5pY29kZVJhbmdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewogICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
aAppbmRleCA3ZGI3NDUzYzBkODQ5OWVhMTNlMDBkOTdjZjJlMGM1MjRmNDU4YjI2Li4xZGMwNWVm
ODhkYWMyNjBhZTYxMDcyMjliOGRhOTZjYzRiMTdlNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIENT
U1Byb3BlcnR5OwogY2xhc3MgQ1NTVmFsdWU7CiBjbGFzcyBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
OwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOworY2xhc3MgU3R5bGVSZXNvbHZlcjsKICAgICAK
IC8vIElucHV0czogUHJvcGVydHlJRCwgaXNJbXBvcnRhbnQgYm9vbCwgQ1NTUGFyc2VyVG9rZW5S
YW5nZS4KIC8vIE91dHB1dHM6IFZlY3RvciBvZiBDU1NQcm9wZXJ0aWVzCkBAIC00NSwxNCArNDYs
MjAgQEAgcHVibGljOgogCiAgICAgLy8gUGFyc2VzIGEgbm9uLXNob3J0aGFuZCBDU1MgcHJvcGVy
dHkKICAgICBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3Bl
cnR5SUQsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
Jik7CisgICAgc3RhdGljIGJvb2wgY2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29u
c3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQ
YXJzZXJDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PiBwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgc3ludGF4LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKKyAgICBzdGF0aWMgdm9pZCBjb2xs
ZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVuZGVuY2llcyhjb25zdCBTdHJpbmcmIHN5
bnRheCwgYm9vbCBpc1Jvb3QsIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mIGRlcGVuZGVuY2llcywg
Y29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKIAog
cHJpdmF0ZToKLSAgICBDU1NQcm9wZXJ0eVBhcnNlcihjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdl
JiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIFZlY3RvcjxDU1NQcm9wZXJ0eSwgMjU2PiopOwor
ICAgIENTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+KiwgYm9vbCBjb25zdW1l
V2hpdGVzcGFjZSA9IHRydWUpOwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSBvbmNlIHRoZSBDU1NQ
YXJzZXJWYWx1ZS1iYXNlZCBwYXJzZVZhbHVlIGlzIHJlbW92ZWQKICAgICBib29sIHBhcnNlVmFs
dWVTdGFydChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBjb25zdW1l
Q1NTV2lkZUtleXdvcmQoQ1NTUHJvcGVydHlJRCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIFJlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlE
ID0gQ1NTUHJvcGVydHlJbnZhbGlkKTsKKyAgICBib29sIGNhblBhcnNlVHlwZWRDdXN0b21Qcm9w
ZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgc3ludGF4KTsKKyAgICBSZWZQdHI8Q1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZT4gcGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHN5bnRheCwgY29uc3QgU3R5bGVSZXNvbHZlciYpOworICAgIHZv
aWQgY29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3Ry
aW5nJiBzeW50YXgsIGJvb2wgaXNSb290LCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRl
bmNpZXMpOwogCiAgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHQubW9kZSA9PSBIVE1MUXVpcmtzTW9kZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1ZhcmlhYmxlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwCmluZGV4IDg3MDg2ZTM2YWI4MGQxZDU4Mzk2YmNh
YWY5NDkxMjMzYmQ1ZDIyMjEuLjFiZTIzYjlmZWM4ZjVlY2RhZDRlYjg0NDg1M2Y5ZTAyY2E1YTky
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIu
Y3BwCkBAIC0xODksOCArMTg5LDggQEAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IENT
U1ZhcmlhYmxlUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uVmFsdWUoY29uc3QgQXQKICAgICBpZiAo
dHlwZSA9PSBDU1NWYWx1ZUludmFsaWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlm
ICh0eXBlID09IENTU1ZhbHVlSW50ZXJuYWxWYXJpYWJsZVZhbHVlKQotICAgICAgICByZXR1cm4g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlhYmxlRGF0YSh2YXJpYWJsZU5h
bWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHJhbmdlLCBoYXNSZWZlcmVuY2VzIHx8IGhhc0F0
QXBwbHlSdWxlKSk7Ci0gICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdp
dGhJRCh2YXJpYWJsZU5hbWUsIHR5cGUpOworICAgICAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZTo6Y3JlYXRlVW5yZXNvbHZlZCh2YXJpYWJsZU5hbWUsIENTU1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWU6OmNyZWF0ZShyYW5nZSkpOworICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlOjpjcmVhdGVVbnJlc29sdmVkKHZhcmlhYmxlTmFtZSwgdHlwZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25zdGFudFBy
b3BlcnR5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmNw
cAppbmRleCA5MGZkMTM5MzFiNzA0MWUyOWI5ZjY3OWFjM2ExZDEzNDhjNjIwYjk3Li42YzEwOGM4
ODg3MTVmNjdmYTk4MTg2MDBhYmRiMTUxMDRmYWFjMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnN0YW50UHJvcGVydHlNYXAuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQ29uc3RhbnRQ
cm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQcm9wZXJ0eShDb25zdGFudFByb3BlcnR5IHByb3BlcnR5
LCBSZWY8Q1NTCiAgICAgICAgIGJ1aWxkVmFsdWVzKCk7CiAKICAgICBhdXRvJiBuYW1lID0gbmFt
ZUZvclByb3BlcnR5KHByb3BlcnR5KTsKLSAgICBtX3ZhbHVlcy0+c2V0KG5hbWUsIENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhWYXJpYWJsZURhdGEobmFtZSwgV1RGTW92ZShkYXRh
KSkpOworICAgIG1fdmFsdWVzLT5zZXQobmFtZSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3Jl
YXRlU3ludGF4QWxsKG5hbWUsIFdURk1vdmUoZGF0YSkpKTsKIH0KIAogdm9pZCBDb25zdGFudFBy
b3BlcnR5TWFwOjpidWlsZFZhbHVlcygpCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIFJlZjxD
U1NWYXJpYWJsZURhdGE+IHZhcmlhYmxlRGF0YUZvclBvc2l0aXZlUGl4ZWxMZW5ndGgoZmxvYXQg
bGVuZ3RoSW5QeCkKIAogICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gdG9rZW5zIHsgdG9rZW4g
fTsKICAgICBDU1NQYXJzZXJUb2tlblJhbmdlIHRva2VuUmFuZ2UodG9rZW5zKTsKLSAgICByZXR1
cm4gQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUodG9rZW5SYW5nZSwgZmFsc2UpOworICAgIHJldHVy
biBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZSh0b2tlblJhbmdlKTsKIH0KIAogc3RhdGljIFJlZjxD
U1NWYXJpYWJsZURhdGE+IHZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24oU2Vjb25kcyBk
dXJhdGlvbkluU2Vjb25kcykKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgUmVmPENTU1Zhcmlh
YmxlRGF0YT4gdmFyaWFibGVEYXRhRm9yUG9zaXRpdmVEdXJhdGlvbihTZWNvbmRzIGR1cmF0aW9u
SW5TZQogCiAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiB0b2tlbnMgeyB0b2tlbiB9OwogICAg
IENTU1BhcnNlclRva2VuUmFuZ2UgdG9rZW5SYW5nZSh0b2tlbnMpOwotICAgIHJldHVybiBDU1NW
YXJpYWJsZURhdGE6OmNyZWF0ZSh0b2tlblJhbmdlLCBmYWxzZSk7CisgICAgcmV0dXJuIENTU1Zh
cmlhYmxlRGF0YTo6Y3JlYXRlKHRva2VuUmFuZ2UpOwogfQogCiB2b2lkIENvbnN0YW50UHJvcGVy
dHlNYXA6OnVwZGF0ZUNvbnN0YW50c0ZvclNhZmVBcmVhSW5zZXRzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGRiODVkN2QwOTNmNTI4
NGNiZWI4MDJlZTg3MDA4MDhlMzkyYTcxZWQuLmM4NTI1ODg1MDI0NzcwZDljNWI1ZDQ5MTllZDY1
YmM2ZWIxMTk1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcApAQCAtMjI5OSw4OSArMjI5OSw2IEBAIGJvb2wgUmVuZGVyU3R5bGU6Omhhc1Jl
ZmVyZW5jZUZpbHRlck9ubHkoKSBjb25zdAogICAgIHJldHVybiBmaWx0ZXJPcGVyYXRpb25zLnNp
emUoKSA9PSAxICYmIGZpbHRlck9wZXJhdGlvbnMuYXQoMCktPnR5cGUoKSA9PSBGaWx0ZXJPcGVy
YXRpb246OlJFRkVSRU5DRTsKIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJ
bkN1c3RvbVByb3BlcnRpZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiBy
ZWdpc3RlcmVkUHJvcGVydGllcywgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25z
dCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIGJvb2wgc2hvdWxkVXBkYXRl
SW5oZXJpdGVkID0gbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29udGFp
bnNWYXJpYWJsZXMgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+Y29u
dGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXM7Ci0gICAgYm9vbCBzaG91bGRVcGRh
dGVOb25Jbmhlcml0ZWQgPSBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVz
LT5jb250YWluc1ZhcmlhYmxlcyB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9w
ZXJ0aWVzLT5jb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllczsKLSAgICBhdXRv
KiBpbmhlcml0ZWRQcm9wZXJ0eURhdGEgPSBzaG91bGRVcGRhdGVJbmhlcml0ZWQgPyAmbV9yYXJl
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpIDogbnVsbHB0
cjsKLSAgICBhdXRvKiBub25Jbmhlcml0ZWRQcm9wZXJ0eURhdGEgPSBzaG91bGRVcGRhdGVOb25J
bmhlcml0ZWQgPyAmbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0
aWVzLmFjY2VzcygpIDogbnVsbHB0cjsKLQotICAgIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiBpbnZh
bGlkUHJvcGVydGllczsKLQotICAgIGZvciAoYXV0byogY3VzdG9tUHJvcGVydHlEYXRhIDogeyBp
bmhlcml0ZWRQcm9wZXJ0eURhdGEsIG5vbkluaGVyaXRlZFByb3BlcnR5RGF0YSB9KSB7Ci0gICAg
ICAgIGlmICghY3VzdG9tUHJvcGVydHlEYXRhKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgLy8gT3VyIGZpcnN0IHBhc3MgY2hlY2tzIHRoZSB2YXJpYWJsZXMgZm9yIHZhbGlkaXR5
IGFuZCByZXBsYWNlcyBhbnkgcHJvcGVydGllcyB0aGF0IGJlY2FtZQotICAgICAgICAvLyBpbnZh
bGlkIHdpdGggZW1wdHkgdmFsdWVzLgotICAgICAgICBhdXRvJiBjdXN0b21Qcm9wZXJ0aWVzID0g
Y3VzdG9tUHJvcGVydHlEYXRhLT52YWx1ZXM7Ci0gICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBj
dXN0b21Qcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBpZiAoIWVudHJ5LnZhbHVlLT5jb250YWlu
c1ZhcmlhYmxlcygpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgSGFz
aFNldDxBdG9taWNTdHJpbmc+IHNlZW5Qcm9wZXJ0aWVzOwotICAgICAgICAgICAgZW50cnkudmFs
dWUtPmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGVudHJ5LmtleSwgKnRoaXMsIHNlZW5Qcm9wZXJ0
aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGludmFs
aWRWYWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZUludmFsaWQoKTsKLQotICAg
ICAgICAvLyBOb3cgaW5zZXJ0IGludmFsaWQgdmFsdWVzLCBvciBkZWZhdWx0cyBpZiB0aGUgcHJv
cGVydHkgaXMgcmVnaXN0ZXJlZC4KLSAgICAgICAgaWYgKCFpbnZhbGlkUHJvcGVydGllcy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBpbnZhbGlkUHJvcGVy
dGllcykgewotICAgICAgICAgICAgICAgIGlmICghY3VzdG9tUHJvcGVydGllcy5jb250YWlucyhw
cm9wZXJ0eSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGNvbnN0IFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiog
cGFyZW50UHJvcGVydHkgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHls
ZSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gcGFyZW50U3R5bGUtPmlu
aGVyaXRlZEN1c3RvbVByb3BlcnRpZXMoKS5maW5kKHByb3BlcnR5KTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGl0ZXJhdG9yICE9IHBhcmVudFN0eWxlLT5pbmhlcml0ZWRDdXN0b21Qcm9wZXJ0
aWVzKCkuZW5kKCkgJiYgaXRlcmF0b3IuZ2V0KCkgJiYgaXRlcmF0b3IuZ2V0KCktPnZhbHVlKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50UHJvcGVydHkgPSAmaXRlcmF0b3IuZ2V0KCkt
PnZhbHVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGF1dG8qIHJlZ2lz
dGVyZWQgPSByZWdpc3RlcmVkUHJvcGVydGllcy5nZXQocHJvcGVydHkpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5oZXJpdHMgJiYgcGFyZW50UHJv
cGVydHkpCi0gICAgICAgICAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMuc2V0KHByb3BlcnR5
LCBwYXJlbnRQcm9wZXJ0eS0+Y29weVJlZigpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChy
ZWdpc3RlcmVkICYmIHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpKQotICAgICAgICAgICAgICAg
ICAgICBjdXN0b21Qcm9wZXJ0aWVzLnNldChwcm9wZXJ0eSwgcmVnaXN0ZXJlZC0+aW5pdGlhbFZh
bHVlQ29weSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGN1
c3RvbVByb3BlcnRpZXMuc2V0KHByb3BlcnR5LCBpbnZhbGlkVmFsdWUuY29weVJlZigpKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIE5vdyB0aGF0IGFsbCBvZiB0aGUg
cHJvcGVydGllcyBoYXZlIGJlZW4gdGVzdGVkIGZvciB2YWxpZGl0eSBhbmQgcmVwbGFjZWQgd2l0
aAotICAgICAgICAvLyBpbnZhbGlkIHZhbHVlcyBpZiB0aGV5IGZhaWxlZCwgd2UgY2FuIHBlcmZv
cm0gdmFyaWFibGUgc3Vic3RpdHV0aW9uIG9uIHRoZSB2YWxpZCB2YWx1ZXMuCi0gICAgICAgIFZl
Y3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+IHJlc29sdmVkVmFsdWVzOwotICAgICAg
ICBmb3IgKGF1dG8gZW50cnkgOiBjdXN0b21Qcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBpZiAo
IWVudHJ5LnZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgZW50cnkudmFsdWUtPnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMo
cmVnaXN0ZXJlZFByb3BlcnRpZXMsIHJlc29sdmVkVmFsdWVzLCAqdGhpcyk7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBXaXRoIGFsbCByZXN1bHRzIGNvbXB1dGVkLCB3ZSBjYW4gbm93IG11dGF0
ZSBvdXIgdGFibGUgdG8gZWxpbWluYXRlIHRoZSB2YXJpYWJsZXMgYW5kCi0gICAgICAgIC8vIGhv
bGQgdGhlIGZpbmFsIHZhbHVlcy4gVGhpcyB3YXkgd2hlbiB3ZSBpbmhlcml0LCB3ZSBkb24ndCBl
bmQgdXAgcmVzdWJzdGl0dXRpbmcgdmFyaWFibGVzLCBldGMuCi0gICAgICAgIGZvciAoYXV0byYg
cmVzb2x2ZWRWYWx1ZSA6IHJlc29sdmVkVmFsdWVzKQotICAgICAgICAgICAgY3VzdG9tUHJvcGVy
dGllcy5zZXQocmVzb2x2ZWRWYWx1ZS0+bmFtZSgpLCByZXNvbHZlZFZhbHVlLmNvcHlSZWYoKSk7
Ci0KLSAgICAgICAgLy8gRmluYWxseSB3ZSBjYW4gcmVzb2x2ZSByZWdpc3RlcmVkIGN1c3RvbSBw
cm9wZXJ0aWVzIHRvIHRoZWlyIHR5cGVkIHZhbHVlcy4KLSAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IGN1c3RvbVByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGF1dG8mIG5hbWUgPSBlbnRyeS52
YWx1ZS0+bmFtZSgpOwotICAgICAgICAgICAgYXV0byogcmVnaXN0ZXJlZCA9IHJlZ2lzdGVyZWRQ
cm9wZXJ0aWVzLmdldChuYW1lKTsKLQotICAgICAgICAgICAgaWYgKCFyZWdpc3RlcmVkKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbCA9
IHN0eWxlUmVzb2x2ZXIucmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9tLCAq
ZW50cnkudmFsdWUpOwotICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWwgfHwgIXByaW1pdGl2
ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlID0g
aW52YWxpZFZhbHVlLmNvcHlSZWYoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBlbnRyeS52YWx1ZS0+c2V0UmVzb2x2ZWRUeXBlZFZhbHVlKFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExlbmd0aChzdHlsZVJlc29sdmVyLCAqcHJpbWl0aXZlVmFsKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBjdXN0b21Qcm9wZXJ0eURhdGEtPmNvbnRhaW5zVmFyaWFibGVzID0gZmFs
c2U7Ci0gICAgICAgIGN1c3RvbVByb3BlcnR5RGF0YS0+Y29udGFpbnNVbnJlc29sdmVkUmVnaXN0
ZXJlZFByb3BlcnRpZXMgPSBmYWxzZTsKLSAgICB9Ci19Ci0KIGZsb2F0IFJlbmRlclN0eWxlOjpv
dXRsaW5lV2lkdGgoKSBjb25zdAogewogICAgIGlmIChtX2JhY2tncm91bmREYXRhLT5vdXRsaW5l
LnN0eWxlKCkgPT0gQm9yZGVyU3R5bGU6Ok5vbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGRkMjQyZTc2ZDNlODEwOWNiODkwNzg1NzliMmM4
YWI0MWJkODdlNTAuLjcwOGU2YmYwMTQyN2NlMWYwODJjZDE1YWNiMWMzZTA2ZDEzYjgyMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xODYs
OCArMTg2LDggQEAgcHVibGljOgogICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIGlu
aGVyaXRlZEN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWRE
YXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT52YWx1ZXM7IH0KICAgICBjb25zdCBDdXN0b21Qcm9wZXJ0
eVZhbHVlTWFwJiBub25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y3VzdG9tUHJvcGVydGllcy0+dmFsdWVzOyB9CiAgICAg
Y29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSogZ2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgQXRv
bWljU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+
JiYgdmFsdWUsIGJvb2wgaXNSZWdpc3RlcmVkID0gZmFsc2UpIHsgcmV0dXJuIG1fcmFyZUluaGVy
aXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9w
ZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpLCBpc1JlZ2lzdGVyZWQpOyB9Ci0gICAgdm9p
ZCBzZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUsIGJvb2wgaXNSZWdpc3Rl
cmVkID0gZmFsc2UpIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3Vz
dG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1v
dmUodmFsdWUpLCBpc1JlZ2lzdGVyZWQpOyB9CisgICAgdm9pZCBzZXRJbmhlcml0ZWRDdXN0b21Q
cm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+JiYgdmFsdWUpIHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEuYWNjZXNzKCku
Y3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdU
Rk1vdmUodmFsdWUpKTsgfQorICAgIHZvaWQgc2V0Tm9uSW5oZXJpdGVkQ3VzdG9tUHJvcGVydHlW
YWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PiYmIHZhbHVlKSB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3Rv
bVByb3BlcnRpZXMuYWNjZXNzKCkuc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBXVEZNb3Zl
KHZhbHVlKSk7IH0KIAogICAgIHZvaWQgc2V0SGFzVmlld3BvcnRVbml0cyhib29sIHYgPSB0cnVl
KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzVmlld3BvcnRVbml0cyA9IHY7IH0KICAgICBib29s
IGhhc1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhh
c1ZpZXdwb3J0VW5pdHM7IH0KQEAgLTc5NSw4ICs3OTUsNiBAQCBwdWJsaWM6CiAgICAgQXBwbGVQ
YXlCdXR0b25UeXBlIGFwcGxlUGF5QnV0dG9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEFwcGxlUGF5QnV0dG9uVHlwZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+YXBwbGVQYXlC
dXR0b25UeXBlKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIGNoZWNrVmFyaWFibGVzSW5DdXN0b21Q
cm9wZXJ0aWVzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIGNvbnN0IFJl
bmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgU3R5bGVSZXNvbHZlciYpOwotCiAvLyBhdHRy
aWJ1dGUgc2V0dGVyIG1ldGhvZHMKIAogICAgIHZvaWQgc2V0RGlzcGxheShEaXNwbGF5VHlwZSB2
KSB7IG1fbm9uSW5oZXJpdGVkRmxhZ3MuZWZmZWN0aXZlRGlzcGxheSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPih2KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaAppbmRleCAxYmNkYjIyZThlOWQzYmMzOTQxMTMw
NDg0MjhkYjNlNjg3ODU4MmRkLi4xMzJlNmY1MjU2MGU2NWNhYzU0ZTRjNWI1M2ZkN2Q0MTAzNWY3
NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0
b21Qcm9wZXJ0eURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVDdXN0b21Qcm9wZXJ0eURhdGEuaApAQCAtMjIsNiArMjIsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFyaWFi
bGVSZWZlcmVuY2VWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzcsOSArMzgs
NiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQ3VzdG9t
UHJvcGVydHlEYXRhJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChjb250YWluc1Zh
cmlhYmxlcyAhPSBvdGhlci5jb250YWluc1ZhcmlhYmxlcykKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQogICAgICAgICBpZiAodmFsdWVzLnNpemUoKSAhPSBvdGhlci52YWx1ZXMuc2l6ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01NCwyNiArNTIsMTggQEAgcHVibGlj
OgogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSAgICB2b2lk
IHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSwgYm9vbCBpc1JlZ2lzdGVyZWQpCisgICAgdm9p
ZCBzZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENT
U0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAodmFsdWUt
PmNvbnRhaW5zVmFyaWFibGVzKCkpCi0gICAgICAgICAgICBjb250YWluc1ZhcmlhYmxlcyA9IHRy
dWU7Ci0gICAgICAgIGlmIChpc1JlZ2lzdGVyZWQpCi0gICAgICAgICAgICBjb250YWluc1VucmVz
b2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllcyA9IHRydWU7CiAgICAgICAgIHZhbHVlcy5zZXQobmFt
ZSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KIAogICAgIEN1c3RvbVByb3BlcnR5VmFsdWVNYXAg
dmFsdWVzOwotICAgIGJvb2wgY29udGFpbnNWYXJpYWJsZXMgeyBmYWxzZSB9OwotICAgIGJvb2wg
Y29udGFpbnNVbnJlc29sdmVkUmVnaXN0ZXJlZFByb3BlcnRpZXMgeyBmYWxzZSB9OwogCiBwcml2
YXRlOgogICAgIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKCkgPSBkZWZhdWx0OwogICAgIFN0eWxl
Q3VzdG9tUHJvcGVydHlEYXRhKGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikK
ICAgICAgICAgOiBSZWZDb3VudGVkPFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhPigpCiAgICAgICAg
ICwgdmFsdWVzKG90aGVyLnZhbHVlcykKLSAgICAgICAgLCBjb250YWluc1ZhcmlhYmxlcyhvdGhl
ci5jb250YWluc1ZhcmlhYmxlcykKLSAgICAgICAgLCBjb250YWluc1VucmVzb2x2ZWRSZWdpc3Rl
cmVkUHJvcGVydGllcyhvdGhlci5jb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGll
cykKICAgICB7IH0KIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2OGEwZDViNTA1YmQ3M2RkNzNlODlhZGIzZDE4YTUw
MGQ3MjlkZmI0Li5iNjdmM2RmOTlmNjJmZmMwY2M1YWFlMDllNDMzOGM3Y2ZmZGE5NDhiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMTAtMjkgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21p
Y2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTUyBDdXN0b20gUHJvcGVydGllcyBBUEkgU2hv
dWxkIFN1cHBvcnQgc3ludGF4PSIqIiBhbmQgIjxsZW5ndGg+IiwgYW5kIGhhbmRsZSBjeWNsZXMg
cHJvcGVybHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MTA0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbDogQWRkZWQuCisg
ICAgICAgICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5l
Lmh0bWw6IEFkZGVkLgorCiAyMDE4LTEwLTMxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBdWRpdDogc2hvdyBtZXRhZGF0YSBmb3Ig
cmVzdWx0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYmU1N2E1ZjIyYWNkNDZj
YzkyZWRhMTAyNGIxNWZmODQ2YzI5ODMzZS4uY2RmNjE1ZjhmNmZhMDRiYjlhNDlmNTkzNDJiODNm
ODUyZTkwMWMxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTgtMTAtMjkgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29t
PgorCisgICAgICAgIENTUyBDdXN0b20gUHJvcGVydGllcyBBUEkgU2hvdWxkIFN1cHBvcnQgc3lu
dGF4PSIqIiBhbmQgIjxsZW5ndGg+IiwgYW5kIGhhbmRsZSBjeWNsZXMgcHJvcGVybHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTA0MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5
bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWluaGVy
aXRhbmNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12
YWx1ZXMtYXBpL3R5cGVkb20udGVudGF0aXZlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5j
ZS1yZWdpc3RlcmVkLXByb3BlcnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVy
ZW5jZS1yZWdpc3RlcmVkLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OgorCiAyMDE4LTEwLTMxICBZ
VUhBTiBXVSAgPHl1aGFuX3d1QGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVJlY29yZGVyIHNo
b3VsZCBmaXJlIGRhdGFhdmFpbGFibGUgZXZlbnQgd2hlbiBhbGwgdHJhY2tzIGFyZSBlbmRlZCBh
bmQgc3RvcCgpIGlzIGNhbGxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1w
cm9wZXJ0aWVzLWFwaS9jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9t
LXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWYwZmY1ZTkw
MDcxZGU5OWVmMGFiZjg5Yjg3ODAyNmJkZDEwYjIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw4IEBACitUaGlzIGlzIHRleHQKKworCitQQVNTIEZhbGxiYWNrIGlzIGhhbmRsZWQgY29y
cmVjdGx5LCBhbmQgd2UgZG9uJ3QgY3Jhc2ggCitQQVNTIFNldHRpbmcgdGhlIGlubGluZSBzdHls
ZSBpcyBoYW5kbGVkIGNvcnJlY3RseSAKK1BBU1MgQ1NTLnJlZ2lzdGVyUHJvcGVydHkgCitQQVNT
IFNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVkIGNvcnJlY3RseSB3aGVuIHJlZ2lz
dGVyZWQgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1h
cGkvY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jh
c2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZjJjZDcwYTJhMzFkZWFiOTlmMDAzMmM0MWZlYTdhNWM4YWI3
ZjliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVz
LWFwaS9jcmFzaC5odG1sCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Vi
a2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1
ZXNFbmFibGVkPXRydWUgXSAtLT4KKzwhLS0gaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2Uu
Y29tL2Nocm9taXVtL3NyYy8rLzAxY2U0MzE0MDllM2EwMTk4NTg2Nzc2MjZhOTgzYzU1MTY4ZGE2
ZGMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL2N1c3RvbS1wcm9wZXJ0aWVzL3JlZ2lz
dGVyLXByb3BlcnR5Lmh0bWwgLS0+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CisgICN0ZXN0MSB7CisgICAgZm9udC1zaXpl
OiB2YXIoLS1mb28sIDMwcHgpOworICAgIC0tZm9vOiB2YXIoLS1iYXIsIDIwcHgpOworICAgIC0t
YmFyOiB2YXIoLS1iYXosIHZhcigtLWZvbykpOworICB9Cis8L3N0eWxlPgorPGRpdj4KKyAgPGgy
IGlkPXRlc3QxPlRoaXMgaXMgdGV4dDwvaDI+Cis8L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgY29tcHV0
ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUodGVzdDEpOwordmFyIGlubGluZVN0eWxlID0gdGVz
dDEuc3R5bGU7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnJyk7CisgIGFzc2VydF9lcXVhbHMoY29t
cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZvbycpLCAnJyk7CisgIGFzc2VydF9lcXVh
bHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnJyk7CisgIGFzc2Vy
dF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgJzMw
cHgnKTsKK30sICJGYWxsYmFjayBpcyBoYW5kbGVkIGNvcnJlY3RseSwgYW5kIHdlIGRvbid0IGNy
YXNoIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCct
LWJheicsICcgICA0MHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWJheicpLCAnIDQwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmFyJyksICcnKTsKKyAgYXNzZXJ0X2VxdWFs
cyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcgNDBweCcpOworICBh
c3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyks
ICczMHB4Jyk7CisgIGlubGluZVN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWJheicpOworICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJycpOwor
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1mb28nKSwg
JycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1i
YXInKSwgJycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnZm9udC1zaXplJyksICczMHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnJyk7Cit9LCAiU2V0dGluZyB0aGUgaW5saW5lIHN0
eWxlIGlzIGhhbmRsZWQgY29ycmVjdGx5Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIENTUy5y
ZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1mb28nLCBzeW50YXg6ICc8bGVuZ3RoPicsIGluaXRp
YWxWYWx1ZTogJzIwMHB4JywgaW5oZXJpdHM6IHRydWV9KTsKKyAgQ1NTLnJlZ2lzdGVyUHJvcGVy
dHkoe25hbWU6ICctLWJhcicsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnMjAw
cHgnLCBpbmhlcml0czogdHJ1ZX0pOworICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0t
YmF6Jywgc3ludGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcyMDBweCcsIGluaGVyaXRz
OiB0cnVlfSk7Cit9LCAiQ1NTLnJlZ2lzdGVyUHJvcGVydHkiKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYmF6JywgJyAgIDQwcHgnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICc0MHB4
Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZv
bycpLCAnMjAwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
VmFsdWUoJy0tYmFyJyksICcyMDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJzQwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMjAwcHgnKTsKKyAgaW5s
aW5lU3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tYmF6Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0
ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnMjAwcHgnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcyMDBweCcpOwor
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXInKSwg
JzIwMHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCdmb250LXNpemUnKSwgJzIwMHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnMjAwcHgnKTsKK30sICJTZXR0aW5nIHRoZSBpbmxp
bmUgc3R5bGUgaXMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiByZWdpc3RlcmVkIik7CisKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9j
eWNsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFw
aS9jeWNsZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkNDg2ZWIyMGE2OWI5YTU5OTUxMDli
ZTA4YmIzNDVlNDRmOTY4MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtY3Vz
dG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAor
dGVzdAorCit0ZXN0CisKK3Rlc3QKKwordGVzdAorCit0ZXN0CisKKworUEFTUyBSZWdpc3RyYXRp
b24gaXMgc3VjY2Vzc2Z1bCAKK1BBU1MgSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1l
bnQgMSAKK1BBU1MgSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMiAKK1BBU1Mg
SlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMyAKK1BBU1MgSlMgQXR0cmlidXRl
cyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgNCAKK1BBU1MgSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQg
Zm9yIGVsZW1lbnQgNSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9w
ZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGll
cy1hcGkvY3ljbGVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVjMjRjODg0NDg5YjM4OTkyYzVkNjJhZDc1
NjJlZmRkMDJiYzkyYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20t
cHJvcGVydGllcy1hcGkvY3ljbGVzLmh0bWwKQEAgLTAsMCArMSwxMzAgQEAKKzwhRE9DVFlQRSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU0N1c3RvbVByb3Bl
cnRpZXNBbmRWYWx1ZXNFbmFibGVkPXRydWUgXSAtLT4KKzwhLS0gaHR0cHM6Ly9jaHJvbWl1bS5n
b29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rLzAxY2U0MzE0MDllM2EwMTk4NTg2Nzc2MjZh
OTgzYzU1MTY4ZGE2ZGMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL2N1c3RvbS1wcm9w
ZXJ0aWVzL3JlZ2lzdGVyLXByb3BlcnR5Lmh0bWwgLS0+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CisgICNwYXJlbnQxIHsK
KyAgICB3aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgfQorICAjY2hpbGQx
IHsKKyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICBmb250LXNpemU6IDEwcHg7CisgICAgLS1h
OiAxMGVtOworICAgIHdpZHRoOiB2YXIoLS1hKTsKKyAgfQorCisgICNwYXJlbnQyIHsKKyAgICB3
aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAtLWE6IDEwZW07CisgICAg
Zm9udC1zaXplOiBjYWxjKCB2YXIoLS1hKSArIC0xNTBweCk7CisgIH0KKyAgI2NoaWxkMiB7Cisg
ICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgd2lkdGg6IHZhcigtLWEpOworICB9CisKKyAgI3Bh
cmVudDMgeworICAgIHdpZHRoOiA1MDBweDsKKyAgICBiYWNrZ3JvdW5kOiBibHVlOworICAgIC0t
YjogMTBlbTsKKyAgICBmb250LXNpemU6IGNhbGMoIHZhcigtLWIpICsgLTE1MHB4KTsKKyAgfQor
ICAjY2hpbGQzIHsKKyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICB3aWR0aDogdmFyKC0tYik7
CisgIH0KKworICAjcGFyZW50NCB7CisgICAgd2lkdGg6IDUwMHB4OworICAgIGJhY2tncm91bmQ6
IGJsdWU7CisgICAgLS1iOiAxMGVtOworICAgIGZvbnQtc2l6ZTogY2FsYyggdmFyKC0tYikgKyAt
MTUwcHgpOworICB9CisgICNjaGlsZDQgeworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIC0t
YTogdmFyKC0tYik7CisgICAgZm9udC1zaXplOiB2YXIoLS1hKTsKKyAgICB3aWR0aDogdmFyKC0t
YSk7CisgIH0KKworICAjcGFyZW50NSB7CisgICAgd2lkdGg6IDUwMHB4OworICAgIGJhY2tncm91
bmQ6IGJsdWU7CisgICAgLS1iOiA1ZW07CisgICAgZm9udC1zaXplOiBjYWxjKCB2YXIoLS1iKSAr
IC03MHB4KTsKKyAgfQorICAjY2hpbGQ1IHsKKyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICAt
LWM6IHZhcigtLWIpOworICAgIGZvbnQtc2l6ZTogdmFyKC0tYyk7CisgICAgd2lkdGg6IHZhcigt
LWMpOworICB9Cis8L3N0eWxlPgorPGRpdj4KKyAgPGRpdiBpZD0icGFyZW50MSI+PGRpdiBpZD0i
Y2hpbGQxIj48cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJwYXJlbnQyIj48ZGl2
IGlkPSJjaGlsZDIiPjxwPnRlc3Q8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InBhcmVudDMi
PjxkaXYgaWQ9ImNoaWxkMyI+PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icGFy
ZW50NCI+PGRpdiBpZD0iY2hpbGQ0Ij48cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgorICA8ZGl2IGlk
PSJwYXJlbnQ1Ij48ZGl2IGlkPSJjaGlsZDUiPjxwPnRlc3Q8L3A+PC9kaXY+PC9kaXY+Cis8L2Rp
dj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3RfcHJvcChpZCwgcHJvcCwgZXhwZWN0ZWQpIHsK
KyAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChpZCkpLmdldFByb3BlcnR5VmFsdWUocHJvcCkudHJpbSgpLCBleHBlY3RlZCk7Cit9
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIENTUy5yZWdpc3RlclByb3BlcnR5KHsKKyAgICBuYW1l
OiAnLS1hJywKKyAgICBzeW50YXg6ICc8bGVuZ3RoPicsCisgICAgaW5oZXJpdHM6IHRydWUsCisg
ICAgaW5pdGlhbFZhbHVlOiAnMjAwcHgnCisgIH0pCit9LCAiUmVnaXN0cmF0aW9uIGlzIHN1Y2Nl
c3NmdWwiKTsKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHRlc3RfcHJvcCgnY2hpbGQxJywgJ3dpZHRo
JywgJzEwMHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQxJywgJy0tYScsICcxMDBweCcpOworICB0
ZXN0X3Byb3AoJ2NoaWxkMScsICctLWInLCAnJyk7CisgIHRlc3RfcHJvcCgncGFyZW50MScsICct
LWEnLCAnMjAwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQxJywgJy0tYicsICcnKTsKK30sICJK
UyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAxIik7Cit0ZXN0KGZ1bmN0aW9uKCkg
eworICB0ZXN0X3Byb3AoJ2NoaWxkMicsICd3aWR0aCcsICcxNjBweCcpOworICB0ZXN0X3Byb3Ao
J2NoaWxkMicsICctLWEnLCAnMTYwcHgnKTsKKyAgdGVzdF9wcm9wKCdjaGlsZDInLCAnLS1iJywg
JycpOworICB0ZXN0X3Byb3AoJ2NoaWxkMicsICdmb250LXNpemUnLCAnMTZweCcpOworICB0ZXN0
X3Byb3AoJ3BhcmVudDInLCAnLS1hJywgJzE2MHB4Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50Mics
ICctLWInLCAnJyk7CisgIHRlc3RfcHJvcCgncGFyZW50MicsICdmb250LXNpemUnLCAnMTZweCcp
OworfSwgIkpTIEF0dHJpYnV0ZXMgYXJlIHZhbGlkIGZvciBlbGVtZW50IDIiKTsKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgIHRlc3RfcHJvcCgnY2hpbGQzJywgJ3dpZHRoJywgJzEwMHB4Jyk7CisgIHRl
c3RfcHJvcCgnY2hpbGQzJywgJy0tYScsICcyMDBweCcpOworICB0ZXN0X3Byb3AoJ2NoaWxkMycs
ICctLWInLCAnMTBlbScpOworICB0ZXN0X3Byb3AoJ2NoaWxkMycsICdmb250LXNpemUnLCAnMTBw
eCcpOworICB0ZXN0X3Byb3AoJ3BhcmVudDMnLCAnLS1hJywgJzIwMHB4Jyk7CisgIHRlc3RfcHJv
cCgncGFyZW50MycsICctLWInLCAnMTBlbScpOworICB0ZXN0X3Byb3AoJ3BhcmVudDMnLCAnZm9u
dC1zaXplJywgJzEwcHgnKTsKK30sICJKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVu
dCAzIik7Cit0ZXN0KGZ1bmN0aW9uKCkgeworICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICd3aWR0aCcs
ICcxMDBweCcpOworICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICctLWEnLCAnMTAwcHgnKTsKKyAgdGVz
dF9wcm9wKCdjaGlsZDQnLCAnLS1iJywgJzEwZW0nKTsKKyAgdGVzdF9wcm9wKCdjaGlsZDQnLCAn
Zm9udC1zaXplJywgJzEwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQ0JywgJy0tYScsICcyMDBw
eCcpOworICB0ZXN0X3Byb3AoJ3BhcmVudDQnLCAnLS1iJywgJzEwZW0nKTsKKyAgdGVzdF9wcm9w
KCdwYXJlbnQ0JywgJ2ZvbnQtc2l6ZScsICcxMHB4Jyk7Cit9LCAiSlMgQXR0cmlidXRlcyBhcmUg
dmFsaWQgZm9yIGVsZW1lbnQgNCIpOwordGVzdChmdW5jdGlvbigpIHsKKyAgdGVzdF9wcm9wKCdj
aGlsZDUnLCAnd2lkdGgnLCAnMjUwcHgnKTsKKyAgdGVzdF9wcm9wKCdjaGlsZDUnLCAnLS1jJywg
JzVlbScpOworICB0ZXN0X3Byb3AoJ2NoaWxkNScsICctLWInLCAnNWVtJyk7CisgIHRlc3RfcHJv
cCgnY2hpbGQ1JywgJ2ZvbnQtc2l6ZScsICc1MHB4Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50NScs
ICctLWEnLCAnMjAwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQ1JywgJy0tYicsICc1ZW0nKTsK
KyAgdGVzdF9wcm9wKCdwYXJlbnQ1JywgJ2ZvbnQtc2l6ZScsICcxMHB4Jyk7Cit9LCAiSlMgQXR0
cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgNSIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTU2ODE2MjY1MjlmYmYxMGIxYzUwZmYwMGMzNzExMWE5MGVjNmMx
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1h
cGkvaW5saW5lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACit0ZXN0CisKKworUEFTUyBD
U1NPTSBzZXR0ZXJzIGZ1bmN0aW9uIGFzIGV4cGVjdGVkIGZvciB1bnJlZ2lzdGVyZWQgcHJvcGVy
dGllcyAKK1BBU1MgQ1NTLnJlZ2lzdGVyUHJvcGVydHkgCitQQVNTIEZvcm1lcmx5IHZhbGlkIHZh
bHVlcyBhcmUgc3RpbGwgcmVhZGFibGUgZnJvbSBpbmxpbmUgc3R5bGVzIGJ1dCBhcmUgY29tcHV0
ZWQgYXMgdGhlIHVuc2V0IHZhbHVlIAorUEFTUyBWYWx1ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdp
c3RlcmVkIHR5cGUgY2FuJ3QgYmUgc2V0IAorUEFTUyBWYWx1ZXMgY2FuIGJlIHJlbW92ZWQgZnJv
bSBpbmxpbmUgc3R5bGVzIAorUEFTUyBTdHlsZXNoZWV0cyBjYW4gYmUgbW9kaWZpZWQgYnkgQ1NT
T00gCitQQVNTIFZhbGlkIHZhbHVlcyBjYW4gYmUgc2V0IG9uIGlubGluZSBzdHlsZXMgCitQQVNT
IFZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIAorUEFTUyBWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3
aXRob3V0IHZhbGlkYXRpb24gCitQQVNTIFZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQg
dmFsaWRhdGlvbiwgZXZlbiB3aGVuIGl0IGlzIG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSAK
K1BBU1MgVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uLCBldmVuIHdo
ZW4gaXQgaXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlICh0eXBlZCkgCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWwgYi9M
YXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUxYmE3ZmViYzA2Mzk0NDY1YmNjZmVkODRjZWE5ZmUyMzE1NGViMDQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2lubGluZS5odG1s
CkBAIC0wLDAgKzEsMTIwIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIGV4cGVyaW1lbnRhbDpDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZD10cnVl
IF0gLS0+Cis8IS0tIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMvKy8wMWNlNDMxNDA5ZTNhMDE5ODU4Njc3NjI2YTk4M2M1NTE2OGRhNmRjL3RoaXJkX3BhcnR5
L1dlYktpdC9MYXlvdXRUZXN0cy9jdXN0b20tcHJvcGVydGllcy9yZWdpc3Rlci1wcm9wZXJ0eS5o
dG1sIC0tPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKworPHN0eWxlPgorICAjdGVzdDEgeworICAgIC0tYTogMTBlbTsKKyAgICAtLWI6IDEw
ZW07CisgIH0KKzwvc3R5bGU+Cis8ZGl2PgorICA8ZGl2IGlkPXRlc3QxPjxwPnRlc3Q8L3A+PC9k
aXY+Cis8L2Rpdj4KKzxzY3JpcHQ+CisKK3ZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXN0MSk7Cit2YXIgaW5saW5lU3R5bGUgPSB0ZXN0MS5zdHlsZTsKK3ZhciBzaGVldFN0
eWxlID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGU7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgIC8vIE5vdGhpbmcgcmVnaXN0ZXJlZCB5ZXQsIHdoYXRldmVyIHlvdSBz
cGVjaWZ5IHdvcmtzCisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWEnKSwgJyAxMGVtJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCctLWInKSwgJyAxMGVtJyk7CisKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVy
dHkoJy0tYScsICdoZWxsbycpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2Jv
bmpvdXInKTsKKworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tYScpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCctLWInKSwgJ2JvbmpvdXInKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxl
LmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnYm9uam91cicpOworfSwgIkNTU09N
IHNldHRlcnMgZnVuY3Rpb24gYXMgZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVz
Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAn
LS1hJywgc3ludGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcwcHgnLCBpbmhlcml0czog
ZmFsc2V9KTsKKyAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLXJlZ2lzdGVyZWQnLCBz
eW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzBweCcsIGluaGVyaXRzOiBmYWxzZX0p
OworfSwgIkNTUy5yZWdpc3RlclByb3BlcnR5Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIGFz
c2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycp
OworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAn
Ym9uam91cicpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICcwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYicpLCAnYm9uam91cicpOworfSwgIkZvcm1lcmx5IHZhbGlkIHZhbHVlcyBh
cmUgc3RpbGwgcmVhZGFibGUgZnJvbSBpbmxpbmUgc3R5bGVzIGJ1dCBhcmUgY29tcHV0ZWQgYXMg
dGhlIHVuc2V0IHZhbHVlIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIGlubGluZVN0eWxlLnNl
dFByb3BlcnR5KCctLWEnLCAnaGknKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYics
ICdoaScpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YScpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWInKSwgJ2hpJyk7Cit9LCAiVmFsdWVzIG5vdCBtYXRjaGluZyB0aGUgcmVnaXN0ZXJl
ZCB0eXBlIGNhbid0IGJlIHNldCIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBpbmxpbmVTdHls
ZS5yZW1vdmVQcm9wZXJ0eSgnLS1hJyk7CisgIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWIn
LCAnJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1h
JyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCct
LWInKSwgJycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1hJyksICcxNjBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1iJyksICcgMTBlbScpOworfSwgIlZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBm
cm9tIGlubGluZSBzdHlsZXMiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgc2hlZXRTdHlsZS5z
ZXRQcm9wZXJ0eSgnLS1hJywgJ2JhbmFuYScpOyAvLyBJbnZhbGlkLCBubyBjaGFuZ2UKKyAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMTYwcHgn
KTsKKyAgc2hlZXRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJzIwcHgnKTsKKyAgYXNzZXJ0X2Vx
dWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMjBweCcpOworICBz
aGVldFN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnaW5pdGlhbCcpOworICBhc3NlcnRfZXF1YWxz
KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcwcHgnKTsKK30sICJTdHls
ZXNoZWV0cyBjYW4gYmUgbW9kaWZpZWQgYnkgQ1NTT00iKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICczMGVtJyk7CisgIGlubGluZVN0eWxl
LnNldFByb3BlcnR5KCctLWInLCAnMjBlbScpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxl
LmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMzBlbScpOworICBhc3NlcnRfZXF1YWxzKGlubGlu
ZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnMjBlbScpOworICBhc3NlcnRfZXF1YWxz
KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICc0ODBweCcpOworICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICcyMGVtJyk7
CisgIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnaW5oZXJpdCcpOworICBhc3NlcnRf
ZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnaW5oZXJpdCcpOwor
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcw
cHgnKTsKK30sICJWYWxpZCB2YWx1ZXMgY2FuIGJlIHNldCBvbiBpbmxpbmUgc3R5bGVzIik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnIDIw
cHgnKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICdjYWxjKHZhcigtLWIpICsg
MTBweCknKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCct
LWInKSwgJyAyMHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLWIpICsgMTBweCknKTsKKyAgYXNzZXJ0X2VxdWFscyhj
b21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDIwcHgnKTsKKyAgYXNzZXJ0
X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMzBweCcpOwor
fSwgIlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIGlu
bGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnaGVsbG8nKTsKKyAgaW5saW5lU3R5bGUuc2V0
UHJvcGVydHkoJy0tYScsICdjYWxjKHZhcigtLWIpICsgMTVweCknKTsKKyAgYXNzZXJ0X2VxdWFs
cyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7CisgIGFzc2Vy
dF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigt
LWIpICsgMTVweCknKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5
VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMHB4Jyk7Cit9LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0
ZWQgd2l0aG91dCB2YWxpZGF0aW9uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIGlubGluZVN0
eWxlLnNldFByb3BlcnR5KCctLWInLCAnaGVsbG8nKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVy
dHkoJy0tYScsICdjYWxjKHZhcigtLWIpIDE1cHgpJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5l
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdoZWxsbycpOworICBhc3NlcnRfZXF1YWxz
KGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnY2FsYyh2YXIoLS1iKSAxNXB4
KScpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1i
JyksICdoZWxsbycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1hJyksICcwcHgnKTsKK30sICJWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0
IHZhbGlkYXRpb24sIGV2ZW4gd2hlbiBpdCBpcyBvYnZpb3VzIHRoZXkgd2lsbCBub3QgcGFyc2Ui
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYics
ICdoZWxsbycpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0t
cmVnaXN0ZXJlZCkgMTVweCknKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLXJlZ2lzdGVyZWQpIDE1cHgpJyk7
CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwg
J2hlbGxvJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWEnKSwgJzBweCcpOworfSwgIlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFs
aWRhdGlvbiwgZXZlbiB3aGVuIGl0IGlzIG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSAodHlw
ZWQpIik7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3Rl
ci1wcm9wZXJ0eS1zeW50YXgtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBp
L3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCBlOWUy
ZmU3MzhhYjNhMmRiZGFmZDkxMGI2NDY2MWQyYWRkODNlMDNkLi4yZWE3OGUyOTgwNjA2OGU1YjNj
M2Y2ZWM3OWY2YmY5YThhNmIxOGNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lz
dGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1
ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDUgQEAKIAotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2EnIGlzIHZhbGlk
IFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3lu
dGF4LgorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2EnIGlzIHZhbGlkIAogRkFJTCBz
eW50YXg6JyAqICcsIGluaXRpYWxWYWx1ZTonYicgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwg
dmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBQQVNTIHN5bnRheDon
PGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzJweCcgaXMgdmFsaWQgCiBGQUlMIHN5bnRheDonIDxu
dW1iZXI+JywgaW5pdGlhbFZhbHVlOic1JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1
ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KQEAgLTksMTEgKzksMTEgQEAg
RkFJTCBzeW50YXg6JyA8bGVuZ3RoPisgfCA8cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6JzJw
eCA4cHgnIGlzIHZhbGlkIFRoZSBnaXYKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPnw8cGVyY2VudGFn
ZT58PGxlbmd0aC1wZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonMnB4JyBpcyB2YWxpZCAKIEZB
SUwgc3ludGF4Oic8Y29sb3I+IHwgPGltYWdlPiB8IDx1cmw+IHwgPGludGVnZXI+IHwgPGFuZ2xl
PicsIGluaXRpYWxWYWx1ZToncmVkJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBk
b2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4Oic8dGltZT4g
fCA8cmVzb2x1dGlvbj4gfCA8dHJhbnNmb3JtLWxpc3Q+IHwgPGN1c3RvbS1pZGVudD4nLCBpbml0
aWFsVmFsdWU6J3JlZCcgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3Qg
cGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1
ZTonOj4gaGVsbG8nIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBh
cnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6
JyhbIGJyYWNrZXRzIF0pIHsgeWF5ICg/Pyl9JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2
YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZBSUwgc3ludGF4Oicq
JywgaW5pdGlhbFZhbHVlOid5ZXAgJ3RoaXMgaXMgdmFsaWQgdG9vJycgaXMgdmFsaWQgVGhlIGdp
dmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1G
QUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondW5tYXRjaGVkIG9wZW5pbmcgYnJhY2tldCBp
cyB2YWxpZCA6KCcgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFy
c2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTon
IicgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRo
ZSBnaXZlbiBzeW50YXguCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonOj4gaGVsbG8n
IGlzIHZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbIGJyYWNrZXRzIF0p
IHsgeWF5ICg/Pyl9JyBpcyB2YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid5
ZXAgJ3RoaXMgaXMgdmFsaWQgdG9vJycgaXMgdmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRp
YWxWYWx1ZTondW5tYXRjaGVkIG9wZW5pbmcgYnJhY2tldCBpcyB2YWxpZCA6KCcgaXMgdmFsaWQg
CitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIicgaXMgdmFsaWQgCiBQQVNTIHN5bnRh
eDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzAnIGlzIHZhbGlkIAogUEFTUyBzeW50YXg6Jzxs
ZW5ndGg+JywgaW5pdGlhbFZhbHVlOicxMHB4IC8qOikqLycgaXMgdmFsaWQgCiBQQVNTIHN5bnRh
eDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JyBjYWxjKC0ycHgpJyBpcyB2YWxpZCAKQEAgLTYz
LDcgKzYzLDcgQEAgYmFuYW5hXHIKIEZBSUwgc3ludGF4OidiYQwKIHwJbmFccnxueWEnLCBpbml0
aWFsVmFsdWU6J255YScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3Qg
cGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIHN5bnRheDonbnVsbCcsIGluaXRpYWxW
YWx1ZTonbnVsbCcgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFy
c2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1GQUlMIHN5bnRheDondW5kZWZpbmVkJywgaW5pdGlh
bFZhbHVlOid1bmRlZmluZWQnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMg
bm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgorUEFTUyBzeW50YXg6J3VuZGVmaW5lZCcs
IGluaXRpYWxWYWx1ZTondW5kZWZpbmVkJyBpcyB2YWxpZCAKIEZBSUwgc3ludGF4OidhcnJheScs
IGluaXRpYWxWYWx1ZTonYXJyYXknIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRv
ZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogUEFTUyBzeW50YXg6J2JhbmFuYSxu
eWEnLCBpbml0aWFsVmFsdWU6J2JhbmFuYScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4OidiYW5h
blw2MScsIGluaXRpYWxWYWx1ZTonYmFuYW5hJyBpcyBpbnZhbGlkIApAQCAtODUsMzYgKzg1LDM2
IEBAIFBBU1Mgc3ludGF4Oid1bnNldCcsIGluaXRpYWxWYWx1ZTondW5zZXQnIGlzIGludmFsaWQK
IEZBSUwgc3ludGF4Oic8bGVuZ3RoPnxpbml0aWFsJywgaW5pdGlhbFZhbHVlOicxMHB4JyBpcyBp
bnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVl
LCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogRkFJTCBzeW50YXg6JzxsZW5ndGg+
fElOSEVSSVQnLCBpbml0aWFsVmFsdWU6JzEwcHgnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czog
ZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6
IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBk
aWQgbm90IHRocm93CiBGQUlMIHN5bnRheDonPHBlcmNlbnRhZ2U+fHVuc0V0JywgaW5pdGlhbFZh
bHVlOicyJScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJl
Z2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6
IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLVBBU1Mgc3lu
dGF4OicqJywgaW5pdGlhbFZhbHVlOidpbml0aWFsJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6
JyonLCBpbml0aWFsVmFsdWU6J2luaGVyaXQnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKics
IGluaXRpYWxWYWx1ZTondW5zZXQnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRp
YWxWYWx1ZToncmV2ZXJ0JyBpcyBpbnZhbGlkIAorRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFs
dWU6J2luaXRpYWwnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENT
Uy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZh
bHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlM
IHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5oZXJpdCcgaXMgaW52YWxpZCBhc3NlcnRfdGhy
b3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5
bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNl
fSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bnNldCcg
aXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJv
cGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxW
YWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgc3ludGF4OicqJywg
aW5pdGlhbFZhbHVlOidyZXZlcnQnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24g
IigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwg
aW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRo
cm93CiBQQVNTIHN5bnRheDonPGN1c3RvbS1pZGVudD4nLCBpbml0aWFsVmFsdWU6J2luaXRpYWwn
IGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGN1c3RvbS1pZGVudD4rJywgaW5pdGlhbFZhbHVl
Oidmb28gaW5oZXJpdCBiYXInIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxW
YWx1ZTonKScgaXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOicoWyld
JyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3doZWUhJyBpcyBp
bnZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyIKLScgaXMgaW52YWxpZCAK
LVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1cmwobW9vICcnKScgaXMgaW52YWxpZCAK
LVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidzZW1pO2NvbG9uJyBpcyBpbnZhbGlkIAot
UEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3ZhcihpbnZhbGlkIHZhciByZWYpJyBpcyBp
bnZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3ZhcigtLWZvbyknIGlzIGlu
dmFsaWQgCitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonKScgaXMgaW52YWxpZCBhc3Nl
cnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5h
bWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6
IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOico
WyldJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0
ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5p
dGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6
JyonLCBpbml0aWFsVmFsdWU6J3doZWUhJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0
aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50
YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5v
dCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyIKKycgaXMgaW52YWxpZCBh
c3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6
IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJp
dHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVl
Oid1cmwobW9vICcnKScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4g
Q1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFs
VmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK0ZB
SUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidzZW1pO2NvbG9uJyBpcyBpbnZhbGlkIGFzc2Vy
dF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFt
ZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czog
ZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Zh
cihpbnZhbGlkIHZhciByZWYpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIo
KSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGlu
aXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJv
dworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3ZhcigtLWZvbyknIGlzIGludmFsaWQg
YXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1l
OiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVy
aXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBQQVNTIHN5bnRheDonYmFuYW5hJywgaW5pdGlh
bFZhbHVlOidiQW5BbkEnIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0
aWFsVmFsdWU6J3ZhcigtLW1vbyknIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4n
LCBpbml0aWFsVmFsdWU6JzEwJyBpcyBpbnZhbGlkIAogRkFJTCBzeW50YXg6JzxsZW5ndGg+Jywg
aW5pdGlhbFZhbHVlOicxMCUnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigp
ID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5p
dGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93
CiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6J2NhbGMoNXB4ICsgMTAlKScg
aXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJv
cGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxW
YWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4Oic8bGVu
Z3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg1cHggKiAzcHggLyA2cHgpJyBpcyBpbnZhbGlkIAot
UEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOicxMGVtJyBpcyBpbnZhbGlkIAor
RkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOicxMGVtJyBpcyBpbnZhbGlkIGFz
c2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTog
bmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0
czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogRkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlh
bFZhbHVlOicxMHZtaW4nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlh
bFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93Ci1Q
QVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6J2NhbGMoNHB4ICsgM2VtKScgaXMg
aW52YWxpZCAKLVBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg0cHgg
KyBjYWxjKDggKiAyZW0pKScgaXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4Oic8bGVuZ3RoPisnLCBp
bml0aWFsVmFsdWU6J2NhbGMoMmV4ICsgMTZweCknIGlzIGludmFsaWQgCitGQUlMIHN5bnRheDon
PGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6J2NhbGMoNHB4ICsgM2VtKScgaXMgaW52YWxpZCBhc3Nl
cnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5h
bWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6
IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxW
YWx1ZTonY2FsYyg0cHggKyBjYWxjKDggKiAyZW0pKScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dz
OiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRh
eDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSki
IGRpZCBub3QgdGhyb3cKK0ZBSUwgc3ludGF4Oic8bGVuZ3RoPisnLCBpbml0aWFsVmFsdWU6J2Nh
bGMoMmV4ICsgMTZweCknIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlh
bFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBQ
QVNTIHN5bnRheDonPGxlbmd0aD4rJywgaW5pdGlhbFZhbHVlOicxMHB4IGNhbGMoMjBweCArIDRy
ZW0pJyBpcyBpbnZhbGlkIAogUEFTUyBzeW50YXg6JzxwZXJjZW50YWdlPiB8IDxsZW5ndGg+Kycs
IGluaXRpYWxWYWx1ZTonY2FsYygxMDB2aCAtIDEwcHgpIDMwcHgnIGlzIGludmFsaWQgCiBQQVNT
IHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwcHg7JyBpcyBpbnZhbGlkIAotUEFT
UyBzeW50YXg6JzxsZW5ndGgtcGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6J2NhbGMoMnB4ICsg
MTAlICsgN2V4KScgaXMgaW52YWxpZCAKK0ZBSUwgc3ludGF4Oic8bGVuZ3RoLXBlcmNlbnRhZ2U+
JywgaW5pdGlhbFZhbHVlOidjYWxjKDJweCArIDEwJSArIDdleCknIGlzIGludmFsaWQgYXNzZXJ0
X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1l
LCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBm
YWxzZX0pIiBkaWQgbm90IHRocm93CiBGQUlMIHN5bnRheDonPHBlcmNlbnRhZ2U+JywgaW5pdGlh
bFZhbHVlOicwJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1Mu
cmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1
ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogUEFTUyBz
eW50YXg6JzxpbnRlZ2VyPicsIGluaXRpYWxWYWx1ZTonMS4wJyBpcyBpbnZhbGlkIAogUEFTUyBz
eW50YXg6JzxpbnRlZ2VyPicsIGluaXRpYWxWYWx1ZTonMWUwJyBpcyBpbnZhbGlkIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5o
ZXJpdGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IGZjMjdiMGRmMjk5NWE3YjdmNGVhMGQ3NzVjMGQ3
Yjc1MWYxZWQxMGIuLjU2NTRlODJjNmE4MmE0YzJlMjljYjFmMzU2MDQxMjI1ZDIxMWUyM2EgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWluaGVyaXRh
bmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVy
dGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKQEAgLTIsNiArMiw2IEBACiBQQVNTIFJlZ2lz
dGVyZWQgcHJvcGVydGllcyBhcmUgY29ycmVjdGx5IGluaGVyaXRlZCAob3Igbm90KSBkZXBlbmRp
bmcgb24gdGhlIGluaGVyaXRzIGZsYWcuIAogUEFTUyBFeHBsaWNpdGx5IGluaGVyaXRpbmcgZnJv
bSBhIHBhcmVudCB3aXRoIGFuIGludmFsaWQgdmFsdWUgcmVzdWx0cyBpbiBpbml0aWFsIHZhbHVl
LiAKIFBBU1MgRXhwbGljaXRseSBpbmhlcml0aW5nIGZyb20gYSBwYXJlbnQgd2l0aCBubyB2YWx1
ZSByZXN1bHRzIGluIGluaXRpYWwgdmFsdWUuIAotRkFJTCBSZWZlcmVuY2UgdG8gdW5kZWZpbmVk
IHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICI0MnB4IiBidXQgZ290ICIwcHgiCi1GQUlMIFJlZmVyZW5jZSB0byBzeW50YXgtaW5jb21w
YXRpYmxlIHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVlIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICI0MnB4IiBidXQgZ290ICIwcHgiCitQQVNTIFJlZmVyZW5jZSB0byB1bmRlZmlu
ZWQgdmFyaWFibGUgcmVzdWx0cyBpbiBpbmhlcml0ZWQgdmFsdWUgCitQQVNTIFJlZmVyZW5jZSB0
byBzeW50YXgtaW5jb21wYXRpYmxlIHZhcmlhYmxlIHJlc3VsdHMgaW4gaW5oZXJpdGVkIHZhbHVl
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nz
b20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNz
c29tLWV4cGVjdGVkLnR4dAppbmRleCAwZDU1NjFmNDhlNTY3ZTM2Mjc5MjZhNDExYTc1ZTBlY2I0
YjA2ODU1Li5lZmNjNWMyZWNmOGVmNWE4ZTQyZjgyZGZjNjNlNGZiMTgyYTQ3OWVmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBl
Y3RlZC50eHQKQEAgLTIsOCArMiw4IEBACiBQQVNTIENTU09NIHNldHRlcnMgZnVuY3Rpb24gYXMg
ZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIAogRkFJTCBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdp
dmVuIHN5bnRheC4KIEZBSUwgRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFkYWJs
ZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFsdWUg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImJsdWUiIGJ1dCBnb3QgImhlbGxvIgotRkFJTCBWYWx1
ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3QgYmUgc2V0IGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICI1IiBidXQgZ290ICJoaSIKK0ZBSUwgVmFsdWVzIG5vdCBtYXRjaGlu
ZyB0aGUgcmVnaXN0ZXJlZCB0eXBlIGNhbid0IGJlIHNldCBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiaGVsbG8iIGJ1dCBnb3QgIjIwIgogRkFJTCBWYWx1ZXMgY2FuIGJlIHJlbW92ZWQgZnJvbSBp
bmxpbmUgc3R5bGVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJyZWQiIGJ1dCBnb3QgIiByZWQi
Ci1GQUlMIFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiMTBweCIgYnV0IGdvdCAiMHB4IgorUEFTUyBTdHlsZXNoZWV0cyBjYW4gYmUg
bW9kaWZpZWQgYnkgQ1NTT00gCiBGQUlMIFZhbGlkIHZhbHVlcyBjYW4gYmUgc2V0IG9uIGlubGlu
ZSBzdHlsZXMgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImJsdWUiIGJ1dCBnb3QgIiBibHVlIgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3R5cGVkb20udGVudGF0aXZlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDFlNGQyNzBhZTY4ZjFlYjE3NjZlM2FjNzJkMzViZDUwMTI2MGVmNzYuLjY2ZmJiY2E5OTA5
Y2I5ZmM1NDk2OGMyOGUyMjZmOGVlYzg0MTQ0M2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1h
cGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkv
dHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQCBDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMzQwOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQ1NT
VW5wYXJzZWRWYWx1ZQogCiBIYXJuZXNzIEVycm9yIChGQUlMKSwgbWVzc2FnZSA9IFJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDU1NVbnBhcnNlZFZhbHVlCiAKLUZBSUwgQ29t
cHV0ZWQgKiBpcyByZWlmaWVkIGFzIENTU1VucGFyc2VkVmFsdWUgVGhlIGdpdmVuIGluaXRpYWwg
dmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitGQUlMIENvbXB1dGVk
ICogaXMgcmVpZmllZCBhcyBDU1NVbnBhcnNlZFZhbHVlIHRhcmdldC5jb21wdXRlZFN0eWxlTWFw
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3RhcmdldC5jb21wdXRlZFN0eWxlTWFwKCknLCAndGFy
Z2V0LmNvbXB1dGVkU3R5bGVNYXAnIGlzIHVuZGVmaW5lZCkKIEZBSUwgQ29tcHV0ZWQgPGFuZ2xl
PiBpcyByZWlmaWVkIGFzIENTU1VuaXRWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2Vz
IG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGNvbG9yPiBp
cyByZWlmaWVkIGFzIENTU1N0eWxlVmFsdWUgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBu
b3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBGQUlMIENvbXB1dGVkIDxjdXN0b20taWRl
bnQ+IGlzIHJlaWZpZWQgYXMgQ1NTS2V5d29yZFZhbHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVl
IGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMt
dmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNsZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJv
cGVydGllcy1jeWNsZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJiZWRmNjg5MjcyZTUyMDYzMThiMzBm
YWZhZDU0ODEyZWRlZGFhOTEuLjkzMTQ1MTIxYTFjMzQ2YTJjODI2MDFmYjhkM2RmMTU5YTAyOWZj
MjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1yZWdpc3RlcmVk
LXByb3BlcnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zh
ci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQKQEAg
LTEsNiArMSw2IEBACiAKLUZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIHR3byByZWdpc3RlcmVk
IHByb3BlcnRpZXMgaXMgaGFuZGxlZCBjb3JyZWN0bHkuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICIycHgiIGJ1dCBnb3QgIjNweCIKLUZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgcmVnaXN0
ZXJlZCBwcm9wZXJ0aWVzIGFuZCBhbiB1bnJlZ2lzdGVyZWQgcHJvcGVydHkgaXMgaGFuZGxlZCBj
b3JyZWN0bHkuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxcHgiIGJ1dCBnb3QgIjJweCIKK1BB
U1MgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIHR3byByZWdpc3RlcmVkIHByb3BlcnRpZXMgaXMgaGFu
ZGxlZCBjb3JyZWN0bHkuIAorUEFTUyBBIHZhcigpIGN5Y2xlIGJldHdlZW4gYSByZWdpc3RlcmVk
IHByb3BlcnRpZXMgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBoYW5kbGVkIGNvcnJl
Y3RseS4gCiBQQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHR3byB1bnJlZ2lzdGVyZWQgcHJv
cGVydGllcyBpcyBoYW5kbGVkIGNvcnJlY3RseS4gCi1GQUlMIEEgdmFyKCkgY3ljbGUgYmV0d2Vl
biBhIHN5bnRheDonKicgcHJvcGVydHkgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBo
YW5kbGVkIGNvcnJlY3RseS4gVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2Ug
Zm9yIHRoZSBnaXZlbiBzeW50YXguCitQQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHN5bnRh
eDonKicgcHJvcGVydHkgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBoYW5kbGVkIGNv
cnJlY3RseS4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1y
ZWdpc3RlcmVkLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXIt
cmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggZGI1MzVl
NGM4ODg2MTI2NzBkMGQyZDM3NGM1OGI1ZjRlMDRkMTk4MS4uMzllNjc1ZDQzNGFlMWE5MGU1MmRh
OWVhYjZmNDAyNjY0ZDljMDM3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVm
ZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFs
dWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQK
QEAgLTEsNSArMSw1IEBACiAKLUZBSUwgdmFyKCkgcmVmZXJlbmNlcyB3b3JrIHdpdGggcmVnaXN0
ZXJlZCBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxNXB4IiBidXQgZ290ICIx
MCUiCitGQUlMIHZhcigpIHJlZmVyZW5jZXMgd29yayB3aXRoIHJlZ2lzdGVyZWQgcHJvcGVydGll
cyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiICAxMHB4IiBidXQgZ290ICIgMTBweCIKIEZBSUwg
UmVmZXJlbmNlcyB0byByZWdpc3RlcmVkIHZhcigpLXByb3BlcnRpZXMgd29yayBpbiByZWdpc3Rl
cmVkIGxpc3RzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxcHgsIDEwcHgsIDJweCIgYnV0IGdv
dCAiMHB4IgogRkFJTCBSZWZlcmVuY2VzIHRvIG1peGVkIHJlZ2lzdGVyZWQgYW5kIHVucmVnaXN0
ZXJlZCB2YXIoKS1wcm9wZXJ0aWVzIHdvcmsgaW4gcmVnaXN0ZXJlZCBsaXN0cyBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiMXB4LCAyMHB4LCAxMHB4LCAycHgiIGJ1dCBnb3QgIjBweCIKIEZBSUwg
UmVnaXN0ZXJlZCBsaXN0cyBtYXkgYmUgY29uY2F0ZW5hdGVkIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICIxcHgsIDEwcHgsIDJweCwgMXB4LCAyMHB4LCAxMHB4LCAycHgiIGJ1dCBnb3QgIjBweCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353514</attachid>
            <date>2018-10-31 11:37:10 -0700</date>
            <delta_ts>2018-10-31 20:08:24 -0700</delta_ts>
            <desc>Changes from last patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5254</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyMGY1YjJlMzBjMC4uODNiMzEx
ZDgxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE2MjQsNyArMTYy
NCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
LCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgaWYgKHZhbHVlLT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZXMoKSkgewogICAgICAgICB2YWx1ZVRvQXBwbHkgPSByZXNvbHZlZFZhcmlhYmxl
VmFsdWUoaWQsICp2YWx1ZSwgYXBwbHlTdGF0ZSk7CiAgICAgICAgIC8vIElmIGFwcGxpZWRQcm9w
ZXJ0aWVzIGFscmVhZHkgaGFzIHRoaXMgaWQsIHRoZW4gd2UgZGV0ZWN0ZWQgYSBjeWNsZSwgYW5k
IHRoaXMgdmFsdWUgc2hvdWxkIGJlIHVuc2V0LgotICAgICAgICBpZiAoIXZhbHVlVG9BcHBseSB8
fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmNvbnRhaW5zKGlkKSkgeworICAgICAgICBp
ZiAoIXZhbHVlVG9BcHBseSB8fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmdldChpZCkp
IHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkp
CiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZQpAQCAtMjMzMCw2ICsy
MzMwLDE0IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5
KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlCiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJv
cGVydHksIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAoTElL
RUxZKHN0YXRlLmNhc2NhZGUtPmN1c3RvbVByb3BlcnRpZXMoKS5pc0VtcHR5KCkpKQorICAgICAg
ICByZXR1cm4gYXBwbHlDYXNjYWRlZFByb3BlcnRpZXNJbXBsPEN1c3RvbVByb3BlcnR5Q3ljbGVU
cmFja2luZzo6RGlzYWJsZWQ+KGZpcnN0UHJvcGVydHksIGxhc3RQcm9wZXJ0eSwgc3RhdGUpOwor
ICAgIHJldHVybiBhcHBseUNhc2NhZGVkUHJvcGVydGllc0ltcGw8Q3VzdG9tUHJvcGVydHlDeWNs
ZVRyYWNraW5nOjpFbmFibGVkPihmaXJzdFByb3BlcnR5LCBsYXN0UHJvcGVydHksIHN0YXRlKTsK
K30KKwordGVtcGxhdGU8U3R5bGVSZXNvbHZlcjo6Q3VzdG9tUHJvcGVydHlDeWNsZVRyYWNraW5n
IFRyYWNrQ3ljbGVzPgoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXNJbXBsKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBBcHBseUNh
c2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCiB7CiAgICAgZm9yIChpbnQgaWQgPSBmaXJzdFBy
b3BlcnR5OyBpZCA8PSBsYXN0UHJvcGVydHk7ICsraWQpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwpAQCAtMjMzOSwx
OSArMjM0NywyNCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVz
KGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LAogICAgICAgICBhdXRvJiBwcm9w
ZXJ0eSA9IHN0YXRlLmNhc2NhZGUtPnByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgICAgICBBU1NF
UlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwogCi0gICAg
ICAgIGlmIChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5jb250YWlucyhwcm9wZXJ0eUlEKSkg
ewotICAgICAgICAgICAgLy8gV2UgYXJlIGluIGEgY3ljbGUgKGVnLiBzZXR0aW5nIGZvbnQgc2l6
ZSB1c2luZyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZSBjb250YWluaW5nIGVtKQot
ICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUgdW5zZXQKLSAgICAgICAgICAg
IHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAgICAgICAgIC8v
IFRoaXMgcHJvcGVydHkgaXMgaW4gYSBjeWNsZSwgYW5kIG9ubHkgdGhlIHJvb3Qgb2YgdGhlIGNh
bGwgc3RhY2sgd2lsbCBoYXZlIGZpcnN0UHJvcGVydHkgIT0gbGFzdFByb3BlcnR5LgotICAgICAg
ICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIGlmIChUcmFja0N5Y2xlcyA9PSBDdXN0b21Q
cm9wZXJ0eUN5Y2xlVHJhY2tpbmc6OkRpc2FibGVkKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBk
b24ndCBoYXZlIGFueSBjdXN0b20gcHJvcGVydGllcywgdGhlbiB0aGVyZSBjYW4ndCBiZSBhbnkg
Y3ljbGVzLgorICAgICAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShzdGF0ZS5pblByb2dyZXNzUHJv
cGVydGllcy5nZXQocHJvcGVydHlJRCkpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGlu
IGEgY3ljbGUgKGVnLiBzZXR0aW5nIGZvbnQgc2l6ZSB1c2luZyByZWdpc3RlcmVkIGN1c3RvbSBw
cm9wZXJ0eSB2YWx1ZSBjb250YWluaW5nIGVtKS4KKyAgICAgICAgICAgICAgICAvLyBTbyB0aGlz
IHZhbHVlIHNob3VsZCBiZSB1bnNldC4KKyAgICAgICAgICAgICAgICBzdGF0ZS5hcHBsaWVkUHJv
cGVydGllcy5zZXQocHJvcGVydHlJRCk7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBwcm9wZXJ0
eSBpcyBpbiBhIGN5Y2xlLCBhbmQgb25seSB0aGUgcm9vdCBvZiB0aGUgY2FsbCBzdGFjayB3aWxs
IGhhdmUgZmlyc3RQcm9wZXJ0eSAhPSBsYXN0UHJvcGVydHkuCisgICAgICAgICAgICAgICAgQVNT
RVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGll
cy5hZGQocHJvcGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5LmFwcGx5KCp0aGlzLCBzdGF0ZSk7
Ci0gICAgICAgIHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAg
ICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMucmVtb3ZlKHByb3BlcnR5SUQpOworICAgICAg
ICAgICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMuc2V0KHByb3BlcnR5SUQpOworICAgICAg
ICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAgICAgICAgIHN0YXRlLmFw
cGxpZWRQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHN0YXRlLmluUHJv
Z3Jlc3NQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlELCBmYWxzZSk7CisgICAgICAgIH0KICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDZkODhmNjAxOWEyLi5mMTlh
NTAwOTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSA8Yml0c2V0PgogI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtMzI0LDYgKzMyNSwxMCBAQCBwcml2YXRlOgogICAgIGVudW0gU2hvdWxkVXNlTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IDAsIFVzZU1h
dGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMo
Y29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50JiwgU2hvdWxkVXNlTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCisgICAgZW51bSBDdXN0
b21Qcm9wZXJ0eUN5Y2xlVHJhY2tpbmcgeyBFbmFibGVkID0gMCwgRGlzYWJsZWQgfTsKKyAgICB0
ZW1wbGF0ZTxDdXN0b21Qcm9wZXJ0eUN5Y2xlVHJhY2tpbmc+CisgICAgaW5saW5lIHZvaWQgYXBw
bHlDYXNjYWRlZFByb3BlcnRpZXNJbXBsKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3Bl
cnR5LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOworCiAgICAgdm9pZCBjYXNjYWRlTWF0
Y2hlcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBjb25zdCBNYXRjaFJlc3VsdCYsIGJvb2wgaW1wb3J0
YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkpOwog
CiAgICAgdm9pZCBtYXRjaFBhZ2VSdWxlcyhNYXRjaFJlc3VsdCYsIFJ1bGVTZXQqLCBib29sIGlz
TGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwpAQCAt
NTMyLDkgKzUzNyw5IEBAIHN0cnVjdCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSB7CiAgICAg
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcjsKICAgICBTdHlsZVJlc29sdmVyOjpDYXNjYWRl
ZFByb3BlcnRpZXMqIGNhc2NhZGU7CiAgICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hSZXN1
bHQqIG1hdGNoUmVzdWx0OwotICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gYXBwbGllZFByb3Bl
cnRpZXMgPSB7IH07CisgICAgQml0bWFwPG51bUNTU1Byb3BlcnRpZXM+IGFwcGxpZWRQcm9wZXJ0
aWVzID0geyB9OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBhcHBsaWVkQ3VzdG9tUHJvcGVydGllcyA9
IHsgfTsKLSAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGluUHJvZ3Jlc3NQcm9wZXJ0aWVzID0g
eyB9OworICAgIEJpdG1hcDxudW1DU1NQcm9wZXJ0aWVzPiBpblByb2dyZXNzUHJvcGVydGllcyA9
IHsgfTsKICAgICBIYXNoU2V0PFN0cmluZz4gaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20gPSB7
IH07CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353574</attachid>
            <date>2018-10-31 20:08:25 -0700</date>
            <delta_ts>2018-10-31 20:34:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191042-20181031200825.patch</filename>
            <type>text/plain</type>
            <size>131669</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJmMzk2Y2U4MTFjYjgw
ZDZmODhhMGJlY2EyMzNmMGYyNTdiODczMi4uNTlmNDNlOWY3OTMwMTQ3NzQxMmEzNTAxOWM3NDFj
YTBkYjQ1NjYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIEN1
c3RvbSBQcm9wZXJ0aWVzIEFQSSBTaG91bGQgU3VwcG9ydCBzeW50YXg9IioiIGFuZCAiPGxlbmd0
aD4iLCBhbmQgaGFuZGxlIGN5Y2xlcyBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgY29kZSBzbyB0aGF0OgorICAgICAgICAt
IEFsbCBwcm9wZXJ0aWVzIGFwcGxpZWQgaW4gU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyBhcmUgb25seSBhcHBsaWVkIG9uY2UuIAorICAgICAgICAtIEN1c3RvbSBwcm9wZXJ0
aWVzIGFyZSBvbmx5IHJlc29sdmVkIG9uY2UsIGluIFN0eWxlUmVzb2x2ZXIsIHdoZW4gdGhleSBh
cmUgYXBwbGllZCB0byB0aGUgUmVuZGVyU3R5bGUuIFRoZXkgd2VyZSBwcmV2aW91c2x5IHJlc29s
dmVkCisgICAgICAgICAgZXZlcnkgdGltZSB0aGV5IHdlcmUgcmVmZXJlbmNlZCwgYW5kIGFnYWlu
IGluIFJlbmRlclN0eWxlLgorICAgICAgICAtIFRoZSBmb250LXNpemUgcHJvcGVydHkgaXMgYXBw
bGllZCBhZnRlciBpdHMgdmFyaWFibGUgcmVmZXJlbmNlcywgYnV0IGJlZm9yZSBjdXN0b20gcHJv
cGVydGllcyB0aGF0IGRlcGVuZCBvbiBpdC4KKyAgICAgICAgLSBDeWNsZXMgYXJlIGRldGVjdGVk
IGF0IHRoZSBzYW1lIHRpbWUgYXMgcmVzb2x1dGlvbi4KKyAgICAgICAgLSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJyBjdXN0b20gcHJvcGVydGllcyBjYW5ub3QgYmUgc2V0IGZyb20gSmF2YXNjcmlw
dCBvciBXZWJLaXRMZWdhY3kgaWYgdGhleSBkbyBub3QgcGFyc2UgZm9yIHRoZSBwcm9wZXJ0eSdz
IHR5cGUuCisgICAgICAgICAgSWYgdGhleSBjb250YWluIHZhcigtLS4uLikgcmVmZXJlbmNlcywg
aG93ZXZlciwgdGhlbiB0aGV5IGNhbiBiZSBzZXQgYmVjYXVzZSB3ZSBjYW5ub3QgY2hlY2sgaWYg
dGhlIHJlZmVyZW5jZXMgYXJlIHZhbGlkIGZyb20gc2V0UHJvcGVydHkuCisgICAgICAgICAgVGhp
cyBiZWhhdmlvdXIgbWF0Y2hlcyBjaHJvbWUsIGJ1dCBpcyBub3QgZG9jdW1lbnRlZCBpbiB0aGUg
c3BlYy4gCisgICAgICAgIC0gQ3VzdG9tIHByb3BlcnR5IHZhbHVlcyBoYXZlIG1vcmUgZXhwbGlj
aXQgcmVzb2x2ZWQvdW5yZXNvbHZlZCBzdGF0ZS4KKyAgICAgICAgLSBSZW5kZXJTdHlsZSBvbmx5
IGV2ZXIgaG9sZHMgcmVzb2x2ZWQgY3VzdG9tIHByb3BlcnRpZXMsIGFuZCBTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXMgb25seSBob2xkcyB1bnJlc29sdmVkIHByb3BlcnRpZXMuCisK
KyAgICAgICAgVGVzdHM6IGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbAorICAg
ICAgICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbAorICAgICAg
ICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6
cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRSZXNvbHZlZFR5cGVkVmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAgICog
Y3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSk6
CisgICAgICAgICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOgorICAgICAgICAq
IGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVE
YXRhOjpDU1NWYXJpYWJsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRh
Ojpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
c1dpdGhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJs
ZURhdGE6OnJlc29sdmVWYXJpYWJsZUZhbGxiYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBjc3MvQ1NTVmFyaWFibGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZVJl
c29sdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6bmVl
ZHNWYXJpYWJsZVJlc29sdXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFyaWFibGVEYXRhOjpDU1NWYXJpYWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGNz
cy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29s
dmVWYXJpYWJsZUZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlVG9rZW5SYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZl
cmVuY2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBj
c3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlOjp2YXJpYWJsZURhdGFWYWx1ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0
eSk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZl
cnJlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5j
ZXMpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3Rv
bVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25W
YWx1ZSk6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjp2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZVBpeGVsTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGE6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIw
MTgtMTAtMzEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW01lZGlhU3RyZWFtXSBEb24ndCByZXZlYWwgZGV2aWNlIElEcyB1bnRpbCB0aGUgdXNlciBo
YXMgZ3JhbnRlZCBwZXJtaXNzaW9uIHRvIGNhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYzc3NjQ4ZWUxZDgzNDlm
YjM2YjEwNzE1NDVjMzgxZmE3MzI3MDljOC4uMDc0OWQ5YTRkNjgxMTU2Y2U2Njk3MjlkOTFkODBi
MzNiYWI2MThhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI2MTIsMjEgKzI2MTIsMjMgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmlu
ZyYgcHJvcGUKICAgICBhdXRvKiByZWdpc3RlcmVkID0gc3R5bGVkRWxlbWVudC0+ZG9jdW1lbnQo
KS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQocHJvcGVydHlOYW1lKTsK
ICAgICBhdXRvKiB2YWx1ZSA9IHN0eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUp
OwogCi0gICAgaWYgKHJlZ2lzdGVyZWQpIHsKLSAgICAgICAgLy8gVE9ETyB0aGlzIHNob3VsZCBi
ZSBkb25lIGJhc2VkIG9uIHRoZSBzeW50YXgKLSAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5y
ZXNvbHZlZFR5cGVkVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKCp2YWx1ZS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCksICpzdHlsZSk7Ci0K
LSAgICAgICAgaWYgKHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpICYmIHJlZ2lzdGVyZWQtPmlu
aXRpYWxWYWx1ZSgpLT5yZXNvbHZlZFR5cGVkVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKCpyZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUo
KS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCksICpzdHlsZSk7CisgICAgaWYgKHJlZ2lzdGVyZWQgJiYg
IXZhbHVlKQorICAgICAgICByZXR1cm4gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlQ29weSgpOwog
CisgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCi0gICAg
aWYgKHZhbHVlKQorICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBSZWZQdHI8Q1NTVmFsdWU+KCk7CisgICAgfSwgWyZd
KGNvbnN0IENTU1ZhbHVlSUQmKSB7CiAgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlOjpjcmVhdGUoKnZhbHVlKTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIH0sIFsmXShj
b25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYpIHsKKyAgICAgICAgcmV0dXJuIENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZSgqdmFsdWUpOworICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZh
bHVlKSB7CisgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHZh
bHVlLCAqc3R5bGUpOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIHZh
bHVlLT52YWx1ZSgpKTsKIH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3Rv
bVByb3BlcnR5VGV4dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAppbmRleCA3YzE2ZTg0MWRlYWZlZTJl
MjE5MjU4ZWM0OTViNzgwZjQxNjUyNjM4Li5lNjk2NmZmOWJkYzE0NDI2YThjODk5ODA4ZDM0N2Zh
YThjMmUxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFs
dWUuY3BwCkBAIC0yNyw4MCArMjcsNjMgQEAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitib29sIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9uYW1lICE9IG90aGVyLm1f
bmFtZSB8fCBtX3ZhbHVlLmluZGV4KCkgIT0gb3RoZXIubV92YWx1ZS5pbmRleCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0o
Y29uc3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgeworICAgICAgICBy
ZXR1cm4gdmFsdWUuZ2V0KCkgPT0gV1RGOjpnZXQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU+PihvdGhlci5tX3ZhbHVlKS5nZXQoKTsKKyAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYg
dmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09IFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG90
aGVyLm1fdmFsdWUpOworICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFs
dWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmdldCgpID09IFdURjo6Z2V0PFJlZjxDU1NWYXJp
YWJsZURhdGE+PihvdGhlci5tX3ZhbHVlKS5nZXQoKTsKKyAgICB9LCBbJl0oY29uc3QgTGVuZ3Ro
JiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgPT0gV1RGOjpnZXQ8TGVuZ3RoPihvdGhl
ci5tX3ZhbHVlKTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3Zh
bHVlKTsKK30KKwogU3RyaW5nIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogewogICAgIGlmICghbV9zZXJpYWxpemVkKSB7CiAgICAgICAgIG1fc2VyaWFsaXpl
ZCA9IHRydWU7Ci0gICAgICAgIGlmIChtX3Jlc29sdmVkVHlwZWRWYWx1ZSkgLy8gRklYTUU6IFVu
aXQgc2hvdWxkIGJlIGJhc2VkIG9uIHN5bnRheC4KLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fcmVzb2x2ZWRUeXBlZFZhbHVlLT52YWx1ZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y3NzVGV4dCgpOwotICAgICAgICBlbHNlIGlm
IChtX3ZhbHVlKQotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IG1fdmFsdWUtPnRva2VuUmFu
Z2UoKS5zZXJpYWxpemUoKTsKLSAgICAgICAgZWxzZSBpZiAobV92YWx1ZUlkICE9IENTU1ZhbHVl
SW52YWxpZCkKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBnZXRWYWx1ZU5hbWUobV92YWx1
ZUlkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGVtcHR5U3Ry
aW5nKCk7CisKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29u
c3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgeworICAgICAgICAgICAg
bV9zdHJpbmdWYWx1ZSA9IHZhbHVlLT5jc3NUZXh0KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBD
U1NWYWx1ZUlEJiB2YWx1ZSkgeworICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGdldFZhbHVl
TmFtZSh2YWx1ZSk7CisgICAgICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYg
dmFsdWUpIHsKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSB2YWx1ZS0+dG9rZW5SYW5nZSgp
LnNlcmlhbGl6ZSgpOworICAgICAgICB9LCBbJl0oY29uc3QgTGVuZ3RoJiB2YWx1ZSkgeworICAg
ICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUu
dmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCktPmNzc1RleHQoKTsKKyAgICAgICAg
fSk7CisgICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7CiAgICAgfQogICAgIHJl
dHVybiBtX3N0cmluZ1ZhbHVlOwogfQogCi1WZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OnRva2Vucyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
CitWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2Vucygp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVzb2x2ZWRUeXBlZFZhbHVlKSB7Ci0gICAgICAgIFZlY3Rv
cjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0OworICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVz
dWx0OworCisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVm
PENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYpIHsKKyAgICAgICAgLy8gRG8gbm90
aGluZworICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcih2YWx1ZS0+dG9rZW5zKCkpOworICAgIH0sIFsmXShj
b25zdCBMZW5ndGgmKSB7CiAgICAgICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoY3NzVGV4dCgp
KTsKIAogICAgICAgICBhdXRvIHRva2VuaXplclJhbmdlID0gdG9rZW5pemVyLnRva2VuUmFuZ2Uo
KTsKICAgICAgICAgd2hpbGUgKCF0b2tlbml6ZXJSYW5nZS5hdEVuZCgpKQogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCh0b2tlbml6ZXJSYW5nZS5jb25zdW1lKCkpOworICAgIH0pOworICAgIFdU
Rjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7CiAKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLSAgICBpZiAoIW1fdmFsdWUpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBpZiAo
bV9jb250YWluc1ZhcmlhYmxlcykgewotICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJl
c3VsdDsKLSAgICAgICAgLy8gRklYTUU6IEF2b2lkIGRvaW5nIHRoaXMgd29yayBtb3JlIHRoYW4g
b25jZS4KLSAgICAgICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92
YWx1ZS0+cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5
bGUpOwotICAgICAgICBpZiAocmVzb2x2ZWREYXRhKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZFZlY3RvcihyZXNvbHZlZERhdGEtPnRva2VucygpKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQotICAgIHJldHVybiBtX3ZhbHVlLT50b2tlbnMoKTsKLX0KLQotYm9vbCBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJp
bmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVy
dGllcykgY29uc3QKLXsKLSAgICBBU1NFUlQoY29udGFpbnNWYXJpYWJsZXMoKSk7Ci0gICAgaWYg
KG1fdmFsdWUpCi0gICAgICAgIHJldHVybiBtX3ZhbHVlLT5jaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
cyhuYW1lLCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpyZXNvbHZlVmFy
aWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVn
aXN0ZXJlZFByb3BlcnRpZXMsIFZlY3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiBy
ZXNvbHZlZFZhbHVlcywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAotewotICAgIEFT
U0VSVChjb250YWluc1ZhcmlhYmxlcygpKTsKLSAgICBpZiAoIW1fdmFsdWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBBU1NFUlQobV92YWx1ZS0+bmVlZHNWYXJpYWJsZVJlc29sdXRpb24o
KSk7Ci0gICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92YWx1ZS0+
cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpOwot
ICAgIGlmIChyZXNvbHZlZERhdGEpCi0gICAgICAgIHJlc29sdmVkVmFsdWVzLmFwcGVuZChDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoVmFyaWFibGVEYXRhKG1fbmFtZSwgcmVzb2x2
ZWREYXRhLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc29sdmVkVmFs
dWVzLmFwcGVuZChDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobV9uYW1lLCBD
U1NWYWx1ZUludmFsaWQpKTsKLX0KLQotdm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRS
ZXNvbHZlZFR5cGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoLmlz
U3BlY2lmaWVkKCkpOwotICAgIG1fcmVzb2x2ZWRUeXBlZFZhbHVlID0gV1RGTW92ZShsZW5ndGgp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZS5oCmluZGV4IGJiMDkyMTQ1ZGU1MWZiNmU2YjM5ZDk5NTRkMzY0OTJk
YmNjZDZmNTUuLjYyNWUxOTUxMWUyZGRhZGJhZDQ3YzY5MTczMzlkNDk5NzExOGY0OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaApAQCAtMjcsMzEgKzI3
LDQ2IEBACiAKICNpbmNsdWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaCIKICNpbmNs
dWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1ZhcmlhYmxlRGF0YS5oIgorI2luY2x1ZGUg
IkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQ
YXJzZXJUb2tlbjsKK2NsYXNzIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU7CiBjbGFzcyBSZW5k
ZXJTdHlsZTsKIAogY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSBmaW5hbCA6IHB1YmxpYyBD
U1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PiBjcmVhdGVXaXRoVmFyaWFibGVEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENT
U1ZhcmlhYmxlRGF0YT4mJiB2YWx1ZSkKKyAgICB1c2luZyBWYXJpYW50VmFsdWUgPSBWYXJpYW50
PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiwgQ1NTVmFsdWVJRCwgUmVmPENTU1Zhcmlh
YmxlRGF0YT4sIExlbmd0aD47CisKKyAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IGNyZWF0ZVVucmVzb2x2ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZT4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1l
LCB7IFdURk1vdmUodmFsdWUpIH0pKTsKICAgICB9Ci0gICAgCi0gICAgc3RhdGljIFJlZjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVXaXRoSUQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBDU1NWYWx1ZUlEIHZhbHVlKQorCisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlPiBjcmVhdGVVbnJlc29sdmVkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJ
RCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWUobmFtZSwgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IHZhbHVlIH0pKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhJRChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgaWQpCisgICAgeworICAgICAgICBBU1NFUlQoaWQg
PT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NW
YWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVlUmV2ZXJ0IHx8IGlkID09IENTU1ZhbHVlSW52YWxp
ZCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUo
bmFtZSwgeyBpZCB9KSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPiBjcmVhdGVTeW50YXhBbGwoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NT
VmFyaWFibGVEYXRhPiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IFdURk1vdmUodmFsdWUpIH0pKTsKICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVJ
bnZhbGlkKCkKKyAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVN5
bnRheExlbmd0aChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIExlbmd0aCB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUoZW1w
dHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlKGNvbnN0
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKQpAQCAtNjIsNzAgKzc3LDQ5IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgCi0gICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlICYmIG1f
dmFsdWVJZCA9PSBvdGhlci5tX3ZhbHVlSWQ7IH0KLQotICAgIGJvb2wgY29udGFpbnNWYXJpYWJs
ZXMoKSBjb25zdCB7IEFTU0VSVCghbV9jb250YWluc1ZhcmlhYmxlcyB8fCAhbV9yZXNvbHZlZFR5
cGVkVmFsdWUpOyByZXR1cm4gbV9jb250YWluc1ZhcmlhYmxlczsgfQotICAgIGJvb2wgY2hlY2tW
YXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJT
dHlsZSYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwotCi0gICAgdm9pZCByZXNvbHZl
VmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYs
IFZlY3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdDsKKyAgICBib29sIGlzUmVzb2x2ZWQoKSBjb25zdCAgeyByZXR1cm4gIVdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+PihtX3ZhbHVlKTsg
fQorICAgIGJvb2wgaXNVbnNldCgpIGNvbnN0ICB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPENTU1ZhbHVlSUQ+KG1fdmFsdWUpICYmIFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG1fdmFsdWUp
ID09IENTU1ZhbHVlVW5zZXQ7IH0KKyAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0ICB7IHJldHVy
biBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KG1fdmFsdWUpICYmIFdURjo6Z2V0
PENTU1ZhbHVlSUQ+KG1fdmFsdWUpID09IENTU1ZhbHVlSW52YWxpZDsgfQogCi0gICAgQ1NTVmFs
dWVJRCB2YWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZUlkOyB9Ci0gICAgQ1NTVmFyaWFi
bGVEYXRhKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7IH0KLSAgICBWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2Vucyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHlTZXQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIGNvbnN0IFZhcmlhbnRWYWx1
ZSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPExlbmd0aD4mIHJlc29sdmVkVHlwZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x2ZWRUeXBlZFZhbHVlOyB9Ci0gICAgdm9pZCBzZXRSZXNvbHZlZFR5cGVkVmFsdWUoTGVuZ3Ro
KTsKKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2VucygpIGNvbnN0OworICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBzZXJpYWxpemVkVmFsdWUpCi0gICAgICAgIDogQ1NTVmFsdWUoQ3Vz
dG9tUHJvcGVydHlDbGFzcykKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3N0
cmluZ1ZhbHVlKHNlcmlhbGl6ZWRWYWx1ZSkKLSAgICAgICAgLCBtX3NlcmlhbGl6ZWQodHJ1ZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgaWQpCi0gICAgICAgIDogQ1NTVmFsdWUoQ3VzdG9tUHJv
cGVydHlDbGFzcykKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3ZhbHVlSWQo
aWQpCi0gICAgewotICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09
IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NWYWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVl
UmV2ZXJ0IHx8IGlkID09IENTU1ZhbHVlSW52YWxpZCk7Ci0gICAgfQotICAgIAotICAgIENTU0N1
c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiYmIHZhbHVlKQorICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBWYXJpYW50VmFsdWUmJiB2YWx1ZSkKICAgICAgICAgOiBDU1NWYWx1ZShD
dXN0b21Qcm9wZXJ0eUNsYXNzKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1f
dmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwgbV92YWx1ZUlkKENTU1ZhbHVlSW50ZXJu
YWxWYXJpYWJsZVZhbHVlKQotICAgICAgICAsIG1fY29udGFpbnNWYXJpYWJsZXMobV92YWx1ZS0+
bmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSkKKyAgICAgICAgLCBtX3NlcmlhbGl6ZWQoZmFsc2Up
CiAgICAgewogICAgIH0KIAogICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQ1NTVmFsdWUoQ3VzdG9tUHJvcGVy
dHlDbGFzcykKICAgICAgICAgLCBtX25hbWUob3RoZXIubV9uYW1lKQotICAgICAgICAsIG1fdmFs
dWUob3RoZXIubV92YWx1ZS5jb3B5UmVmKCkpCi0gICAgICAgICwgbV92YWx1ZUlkKG90aGVyLm1f
dmFsdWVJZCkKKyAgICAgICAgLCBtX3ZhbHVlKENTU1ZhbHVlVW5zZXQpCiAgICAgICAgICwgbV9z
dHJpbmdWYWx1ZShvdGhlci5tX3N0cmluZ1ZhbHVlKQotICAgICAgICAsIG1fY29udGFpbnNWYXJp
YWJsZXMob3RoZXIubV9jb250YWluc1ZhcmlhYmxlcykKICAgICAgICAgLCBtX3NlcmlhbGl6ZWQo
b3RoZXIubV9zZXJpYWxpemVkKQotICAgICAgICAsIG1fcmVzb2x2ZWRUeXBlZFZhbHVlKG90aGVy
Lm1fcmVzb2x2ZWRUeXBlZFZhbHVlKQogICAgIHsKKyAgICAgICAgLy8gTm8gY29weSBjb25zdHJ1
Y3RvciBmb3IgUmVmPENTU1ZhcmlhYmxlRGF0YT4sIHNvIHdlIGhhdmUgdG8gZG8gdGhpcyBvdXJz
ZWx2ZXMKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3Qg
UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgeworICAgICAgICAgICAgbV92
YWx1ZSA9IHZhbHVlLmNvcHlSZWYoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IENTU1ZhbHVlSUQm
IHZhbHVlKSB7CisgICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIH0sIFsmXShj
b25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWUg
PSB2YWx1ZS5jb3B5UmVmKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZhbHVlKSB7
CisgICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIH0pOworICAgICAgICBXVEY6
OnZpc2l0KHZpc2l0b3IsIG90aGVyLm1fdmFsdWUpOwogICAgIH0KICAgICAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcgbV9uYW1lOwotICAgIAotICAgIFJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IG1f
dmFsdWU7Ci0gICAgQ1NTVmFsdWVJRCBtX3ZhbHVlSWQgeyBDU1NWYWx1ZUludmFsaWQgfTsKKyAg
ICBWYXJpYW50VmFsdWUgbV92YWx1ZTsKICAgICAKICAgICBtdXRhYmxlIFN0cmluZyBtX3N0cmlu
Z1ZhbHVlOwotICAgIGJvb2wgbV9jb250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07CiAgICAgbXV0
YWJsZSBib29sIG1fc2VyaWFsaXplZCB7IGZhbHNlIH07Ci0KLSAgICAvLyBGSVhNRTogSXQgc2hv
dWxkIG5vdCBiZSBwb3NzaWJsZSB0byBleHByZXNzIGFuIGludmFsaWQgc3RhdGUsIHN1Y2ggYXMg
Y29udGFpbnNWYXJpYWJsZXMoKSAmJiByZXNvbHZlZFR5cGVkVmFsdWUoKS4KLSAgICBzdGQ6Om9w
dGlvbmFsPExlbmd0aD4gbV9yZXNvbHZlZFR5cGVkVmFsdWU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuY3BwCmluZGV4IDNlYTdiOTJjMDA5OTczMDk2YTAzZTk1ZTllNmEyNjc1NGE1Y2E4
OGEuLjc5ZWY3ZmU2YjAzY2Q2Y2ZmN2ZiOWVhODE5YjE2MDc2ZGU0NTU4ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwCkBAIC0z
MCw4ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5OjpDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFs
VmFsdWUpCitDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGlu
aGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFsVmFsdWUpCiAg
ICAgOiBuYW1lKG5hbWUpCisgICAgLCBzeW50YXgoc3ludGF4KQogICAgICwgaW5oZXJpdHMoaW5o
ZXJpdHMpCiAgICAgLCBtX2luaXRpYWxWYWx1ZShXVEZNb3ZlKGluaXRpYWxWYWx1ZSkpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgKaW5k
ZXggMzQyN2VhYTNjM2FiNzQ3YzA1MTg1ZjM5MzViNmI1YjJkMjZhZWUzYS4uZGZjZjBiZGMzOWVk
NTQwYzNkMWRhYTRjMDVhNjRjMGY1OTE1MzkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNz
IENTU0N1c3RvbVByb3BlcnR5VmFsdWU7CiAKIHN0cnVjdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJv
cGVydHkgewogICAgIGNvbnN0IFN0cmluZyBuYW1lOwotICAgIC8qIFRPRE8gc3ludGF4ICovCisg
ICAgY29uc3QgU3RyaW5nIHN5bnRheDsKICAgICBjb25zdCBib29sIGluaGVyaXRzOwogCi0gICAg
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpbmhl
cml0cywgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgaW5pdGlhbFZhbHVlKTsKKyAg
ICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHN5bnRheCwgYm9vbCBpbmhlcml0cywgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+JiYgaW5pdGlhbFZhbHVlKTsKIAogICAgIGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUq
IGluaXRpYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbFZhbHVlLmdldCgpOyB9CiAg
ICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGluaXRpYWxWYWx1ZUNvcHkoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKaW5kZXggOTg5OTM1MzE3NTlj
OGM5M2Y3NzU3ZTMxOTg5YjFkNjA5ODEyMGM1Mi4uNjA0Y2ExODM0MzRiNjU4Njc0ZDNkOGMwNzI5
YTQxMTA5MTU4ZDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgYm9vbCBDU1NWYXJpYWJsZURhdGE6Om9wZXJhdG9yPT0oY29uc3QgQ1NT
VmFyaWFibGVEYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdG9rZW5zKCkgPT0gb3RoZXIu
dG9rZW5zKCk7CiB9CiAKLXZvaWQgQ1NTVmFyaWFibGVEYXRhOjpjb25zdW1lQW5kVXBkYXRlVG9r
ZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorQ1NTVmFyaWFibGVEYXRhOjpD
U1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgbG9j
YWxSYW5nZSA9IHJhbmdlOwpAQCAtNzcsMTA5ICs3Nyw0IEBAIHZvaWQgQ1NTVmFyaWFibGVEYXRh
Ojpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQogICAgICAgICB1cGRhdGVUb2tlbnM8VUNoYXI+KHJhbmdlKTsKIH0KIAotQ1NTVmFyaWFibGVE
YXRhOjpDU1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGJv
b2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24pCi0gICAgOiBtX25lZWRzVmFyaWFibGVSZXNvbHV0
aW9uKG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKQotewotICAgIGNvbnN1bWVBbmRVcGRhdGVUb2tl
bnMocmFuZ2UpOwotfQotCi1ib29sIENTU1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JD
eWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0Ci17Ci0gICAgaWYgKGludmFsaWRQcm9wZXJ0
aWVzLmNvbnRhaW5zKG5hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgSGFz
aFNldDxBdG9taWNTdHJpbmc+IG5ld1NlZW5Qcm9wZXJ0aWVzID0gc2VlblByb3BlcnRpZXM7Ci0g
ICAgbmV3U2VlblByb3BlcnRpZXMuYWRkKG5hbWUpOwotICAgIAotICAgIGJvb2wgdmFsaWQgPSBj
aGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZShtX3Rva2Vucywgc3R5bGUsIG5ld1NlZW5Q
cm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7Ci0gICAgaWYgKCF2YWxpZCkKLSAgICAgICAg
aW52YWxpZFByb3BlcnRpZXMuYWRkKG5hbWUpOwotICAgIAotICAgIHJldHVybiB2YWxpZDsKLX0K
LSAgICAKLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhS
YW5nZShDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0Ci17Ci0gICAgd2hpbGUgKCFyYW5nZS5hdEVu
ZCgpKSB7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVl
VmFyIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVFbnYpIHsKLSAgICAg
ICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2sgPSByYW5nZS5jb25zdW1lQmxvY2soKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgYmxvY2suY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChibG9jay5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pOwotICAg
ICAgICAgICAgQXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IGJsb2NrLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b0F0b21pY1N0cmluZygpOwotICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLmF0RW5kKCkgfHwgYmxvY2sucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsK
LSAgICAgICAgICAgIGlmIChzZWVuUHJvcGVydGllcy5jb250YWlucyh2YXJpYWJsZU5hbWUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgYXV0byogdmFsdWUg
PSBzdHlsZS5nZXRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5hbWUpOwotICAgICAgICAgICAgaWYg
KHZhbHVlICYmIHZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpICYmICF2YWx1ZS0+Y2hlY2tWYXJp
YWJsZXNGb3JDeWNsZXModmFyaWFibGVOYW1lLCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFs
aWRQcm9wZXJ0aWVzKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
ICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW4pIHsKLSAgICAgICAgICAg
ICAgICAvLyBGYWxsYmFjay4KLSAgICAgICAgICAgICAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzV2l0aFJhbmdlKGJsb2Nr
LCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlh
YmxlRmFsbGJhY2soY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3Rl
cmVkUHJvcGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNl
clRva2VuPiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Ci17Ci0gICAg
aWYgKHJhbmdlLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NFUlQocmFu
Z2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsKLSAgICByYW5nZS5jb25zdW1lKCk7Ci0g
ICAgcmV0dXJuIHJlc29sdmVUb2tlblJhbmdlKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwg
cmVzdWx0LCBzdHlsZSk7Ci19Ci0KLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpyZXNvbHZlVmFyaWFi
bGVSZWZlcmVuY2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3Rl
cmVkUHJvcGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNl
clRva2VuPiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Ci17Ci0gICAg
cmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUo
KSA9PSBJZGVudFRva2VuKTsKLSAgICBBdG9taWNTdHJpbmcgdmFyaWFibGVOYW1lID0gcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7Ci0g
ICAgQVNTRVJUKHJhbmdlLmF0RW5kKCkgfHwgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFU
b2tlbikpOwotICAgIAotICAgIGF1dG8qIHByb3BlcnR5ID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVy
dHkodmFyaWFibGVOYW1lKTsKLSAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHktPnJlc29sdmVk
VHlwZWRWYWx1ZSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRv
a2VucyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKCFwcm9wZXJ0eSB8fCAhcHJvcGVydHktPnZhbHVlKCkpIHsKLSAg
ICAgICAgYXV0byogcmVnaXN0ZXJlZCA9IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldCh2YXJpYWJs
ZU5hbWUpOwotICAgICAgICBpZiAocmVnaXN0ZXJlZCAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFs
dWUoKSkKLSAgICAgICAgICAgIHByb3BlcnR5ID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiByZXNvbHZlVmFyaWFibGVGYWxsYmFj
ayhyZWdpc3RlcmVkUHJvcGVydGllcywgcmFuZ2UsIHJlc3VsdCwgc3R5bGUpOwotICAgIH0KLSAg
ICBBU1NFUlQocHJvcGVydHkpOwotICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRv
a2VucyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpKTsKLSAgICAKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gQ1NTVmFyaWFibGVEYXRhOjpyZXNvbHZl
VmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYg
cmVnaXN0ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKLXsK
LSAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9rZW5zOwotICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgcmFuZ2UgPSBtX3Rva2VuczsKLSAgICBpZiAoIXJlc29sdmVUb2tlblJhbmdl
KHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRl
UmVzb2x2ZWQocmVzb2x2ZWRUb2tlbnMsICp0aGlzKTsKLX0KLSAgICAKLWJvb2wgQ1NTVmFyaWFi
bGVEYXRhOjpyZXNvbHZlVG9rZW5SYW5nZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHlTZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBW
ZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkg
Y29uc3QKLXsKLSAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIHdoaWxlICghcmFuZ2UuYXRF
bmQoKSkgewotICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1
ZVZhciB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlRW52KQotICAgICAg
ICAgICAgc3VjY2VzcyAmPSByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2UocmVnaXN0ZXJlZFByb3Bl
cnRpZXMsIHJhbmdlLmNvbnN1bWVCbG9jaygpLCByZXN1bHQsIHN0eWxlKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyYW5nZS5jb25zdW1lKCkpOwotICAgIH0KLSAg
ICByZXR1cm4gc3VjY2VzczsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhcmlhYmxlRGF0YS5oCmluZGV4IDAwOGE2ZmE0MjMwNzcwNDk5MzMxNzA3YTc0Yzdk
NmNkNmQyMjcyZTEuLjM5NmUwNjliOWM0NjUyYzhlODdmN2NhZDgyOTkwMzllYzBjZWQxNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgKQEAgLTQzLDE0ICs0Myw5IEBAIGNsYXNz
IENTU1ZhcmlhYmxlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1ZhcmlhYmxlRGF0YT4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1ZhcmlhYmxlRGF0YSk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+
IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYm9vbCBuZWVkc1Zhcmlh
YmxlUmVzb2x1dGlvbiA9IHRydWUpCisgICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IGNy
ZWF0ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyYW5nZSwgbmVlZHNWYXJpYWJsZVJl
c29sdXRpb24pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlRGF0YT4gY3Jl
YXRlUmVzb2x2ZWQoY29uc3QgVmVjdG9yPENTU1BhcnNlclRva2VuPiYgcmVzb2x2ZWRUb2tlbnMs
IGNvbnN0IENTU1ZhcmlhYmxlRGF0YSYgdW5yZXNvbHZlZERhdGEpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYXJpYWJsZURhdGEocmVzb2x2ZWRUb2tlbnMsIHVucmVz
b2x2ZWREYXRhLm1fYmFja2luZ1N0cmluZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NWYXJpYWJsZURhdGEocmFuZ2UpKTsKICAgICB9CiAKICAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIHRva2VuUmFuZ2UoKSB7IHJldHVybiBtX3Rva2VuczsgfQpAQCAtNTksMzYgKzU0LDEyIEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYXJpYWJsZURhdGEmIG90
aGVyKSBjb25zdDsKIAotICAgIGJvb2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSBjb25zdCB7
IHJldHVybiBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uOyB9Ci0KLSAgICBib29sIGNoZWNrVmFy
aWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5
bGUmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdDsKLQotICAgIFJlZlB0cjxDU1NWYXJp
YWJsZURhdGE+IHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKLSAgICBib29sIHJl
c29sdmVUb2tlblJhbmdlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENT
U1BhcnNlclRva2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0OwotCiBwcml2YXRlOgotICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbik7Ci0KLSAgICAv
LyBXZSBjYW4gc2FmZWx5IGNvcHkgdGhlIHRva2VucyAod2hpY2ggaGF2ZSByYXcgcG9pbnRlcnMg
dG8gc3Vic3RyaW5ncykgYmVjYXVzZQotICAgIC8vIFN0eWxlUHJvcGVydHlTZXRzIGNvbnRhaW4g
cmVmZXJlbmNlcyB0byBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlcywgd2hpY2gKLSAgICAvLyBwb2lu
dCB0byB0aGUgdW5yZXNvbHZlZCBDU1NWYXJpYWJsZURhdGEgdmFsdWVzIHRoYXQgb3duIHRoZSBi
YWNraW5nIHN0cmluZ3MKLSAgICAvLyB0aGlzIHdpbGwgcG90ZW50aWFsbHkgcmVmZXJlbmNlLgot
ICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZl
ZFRva2VucywgU3RyaW5nIGJhY2tpbmdTdHJpbmcpCi0gICAgICAgIDogbV9iYWNraW5nU3RyaW5n
KGJhY2tpbmdTdHJpbmcpCi0gICAgICAgICwgbV90b2tlbnMocmVzb2x2ZWRUb2tlbnMpCi0gICAg
ICAgICwgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbihmYWxzZSkKLSAgICB7IH0KLQotICAgIHZv
aWQgY29uc3VtZUFuZFVwZGF0ZVRva2Vucyhjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Cisg
ICAgQ1NTVmFyaWFibGVEYXRhKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHVwZGF0ZVRva2Vucyhjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJik7Ci0gICAgCi0gICAgYm9vbCBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
c1dpdGhSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYsIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
aW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwotICAgIGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENTU1BhcnNlclRva2Vu
UmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
OwotICAgIGJvb2wgcmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2soY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0JiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSwgVmVjdG9yPENTU1BhcnNlclRv
a2VuPiYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9iYWNraW5n
U3RyaW5nOwogICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gbV90b2tlbnM7Ci0gICAgY29uc3Qg
Ym9vbCBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uOwogCiAgICAgLy8gRklYTUUtTkVXUEFSU0VS
OiBXZSB3YW50IHRvIGNhY2hlIFN0eWxlUHJvcGVydGllcyBvbmNlIHdlIHN1cHBvcnQgQGFwcGx5
LgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
LmNwcAppbmRleCAzODk1N2U0MDMwYzIzOGY0Zjc3NTUyY2YyOTNlNTExMGE3OTEzOTY4Li43N2E1
MjNlNGQ3ZGRhZGYwMzBhMTI0MDVkZTdmYzJmY2M3YTExNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwCkBAIC0zMCw2ICszMCw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZS5oIgogCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVy
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIENTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdApAQCAtNDAsMTEgKzQzLDcyIEBAIFN0cmluZyBD
U1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICB9CiAg
ICAgcmV0dXJuIG1fc3RyaW5nVmFsdWU7CiB9Ci0gICAgCi1ib29sIENTU1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Q
cm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25z
dAorCitzdGF0aWMgYm9vbCByZXNvbHZlVG9rZW5SYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBW
ZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKKwor
c3RhdGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2soQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVy
dHlTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsK
KyAgICByYW5nZS5jb25zdW1lKCk7CisgICAgcmV0dXJuIHJlc29sdmVUb2tlblJhbmdlKHJhbmdl
LCByZXN1bHQsIHN0YXRlKTsKK30KKworc3RhdGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJl
c3VsdCwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQogewotICAgIEFTU0VSVCht
X2RhdGEpOwotICAgIHJldHVybiBtX2RhdGEtPmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKG5hbWUs
IHN0eWxlLCBzZWVuUHJvcGVydGllcywgaW52YWxpZFByb3BlcnRpZXMpOworICAgIGF1dG8mIHJl
Z2lzdGVyZWRQcm9wZXJ0aWVzID0gc3RhdGUuc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5nZXRD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKTsKKyAgICBhdXRvJiBzdHlsZSA9ICpzdGF0
ZS5zdHlsZVJlc29sdmVyLT5zdHlsZSgpOworCisgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2Uo
KTsKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKTsKKyAgICBT
dHJpbmcgdmFyaWFibGVOYW1lID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52
YWx1ZSgpLnRvU3RyaW5nKCk7CisgICAgQVNTRVJUKHJhbmdlLmF0RW5kKCkgfHwgKHJhbmdlLnBl
ZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbikpOworCisgICAgLy8gQXBwbHkgdGhpcyB2YXJpYWJs
ZSBmaXJzdCwgaW4gY2FzZSBpdCBpcyBzdGlsbCB1bnJlc29sdmVkCisgICAgc3RhdGUuc3R5bGVS
ZXNvbHZlci0+YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFtZSwgc3RhdGUp
OworCisgICAgLy8gQXBwbHkgZmFsbGJhY2sgdG8gZGV0ZWN0IGN5Y2xlcworICAgIFZlY3RvcjxD
U1NQYXJzZXJUb2tlbj4gZmFsbGJhY2tSZXN1bHQ7CisgICAgcmVzb2x2ZVZhcmlhYmxlRmFsbGJh
Y2soQ1NTUGFyc2VyVG9rZW5SYW5nZShyYW5nZSksIGZhbGxiYWNrUmVzdWx0LCBzdGF0ZSk7CisK
KyAgICBhdXRvKiBwcm9wZXJ0eSA9IHN0eWxlLmdldEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFt
ZSk7CisKKyAgICBpZiAoIXByb3BlcnR5IHx8IHByb3BlcnR5LT5pc1Vuc2V0KCkgfHwgcHJvcGVy
dHktPmlzSW52YWxpZCgpKSB7CisgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVk
UHJvcGVydGllcy5nZXQodmFyaWFibGVOYW1lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYg
cmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHJlZ2lz
dGVyZWQtPmluaXRpYWxWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4g
cmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2socmFuZ2UsIHJlc3VsdCwgc3RhdGUpOworICAgIH0KKwor
ICAgIEFTU0VSVChwcm9wZXJ0eS0+aXNSZXNvbHZlZCgpKTsKKyAgICByZXN1bHQuYXBwZW5kVmVj
dG9yKHByb3BlcnR5LT50b2tlbnMoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IGJvb2wgcmVzb2x2ZVRva2VuUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9y
PENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3Rh
dGUpCit7CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5k
KCkpIHsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVW
YXIgfHwgcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUVudikKKyAgICAgICAg
ICAgIHN1Y2Nlc3MgJj0gcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKHJhbmdlLmNvbnN1bWVCbG9j
aygpLCByZXN1bHQsIHN0YXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChyYW5nZS5jb25zdW1lKCkpOworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwor
UmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6cmVzb2x2
ZVZhcmlhYmxlUmVmZXJlbmNlcyhBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpIGNv
bnN0Cit7CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICBD
U1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlID0gbV9kYXRhLT50b2tlblJhbmdlKCk7CisKKyAgICBp
ZiAoIXJlc29sdmVUb2tlblJhbmdlKHJhbmdlLCByZXNvbHZlZFRva2Vucywgc3RhdGUpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0
ZShyZXNvbHZlZFRva2Vucyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oCmluZGV4IDIyODk2NGVk
NzY5NDQwNTkzOTVjMTBjNjRhZWYyYzAxMDZkODFmN2YuLmQ3MGUzMjdjMTA2ZGRhYWU4MjNmZjk5
YmZhMmE5Y2JiYThiNjA2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWUuaApAQCAtMjksMjggKzI5LDMwIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4uaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdl
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYXJpYWJsZURhdGEuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1
Y3QgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGU7CitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdl
OworCiBjbGFzcyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IGNyZWF0
ZShSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIGRhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKFdURk1vdmUoZGF0YSkpKTsKLSAg
ICB9Ci0KLSAgICBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YVZhbHVlKCkgY29uc3QKKyAg
ICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IGNyZWF0ZShjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGEuZ2V0
KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUocmFuZ2UpKSk7CiAgICAgfQogCi0gICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YSA9PSBvdGhlci5tX2RhdGE7IH0KKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
ID09IG90aGVyLm1fZGF0YS5nZXQoKTsgfQogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29u
c3Q7CiAKLSAgICBib29sIGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Q
cm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25z
dDsKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2Vz
KEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZShSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIGRhdGEpCkBAIC01
OSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxDU1NWYXJp
YWJsZURhdGE+IG1fZGF0YTsKKyAgICBSZWY8Q1NTVmFyaWFibGVEYXRhPiBtX2RhdGE7CiAgICAg
bXV0YWJsZSBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKICAgICBtdXRhYmxlIGJvb2wgbV9zZXJpYWxp
emVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
UmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVn
aXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggMzczMThkYTY1OThmZDExNTkzMDY5Y2EyMjE1
NWZkYjY0YjU0ZDdhZC4uYjhlZjZhOTUyMTNkZWEyNTA3ZDVkZjc1MTFmYTkxM2Y5MjgyMjlhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5LmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1By
b3BlcnR5UGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmgi
CiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiRE9NQ1NTTmFtZXNwYWNlLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aCIKLSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDI4ICs0MiwzMyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5OjpyZWdpc3RlclByb3BlcnR5
KERvY3VtZW50JiBkb2N1bQogewogICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBp
bml0aWFsVmFsdWU7CiAgICAgaWYgKCFkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgaW5pdGlhbFZhbHVlID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRl
V2l0aFZhcmlhYmxlRGF0YShkZXNjcmlwdG9yLm5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRl
KENTU1BhcnNlclRva2VuUmFuZ2UoVmVjdG9yPENTU1BhcnNlclRva2VuPigpKSwgZmFsc2UpKTsK
LSAgICAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVudCk7CisgICAgICAgIENTU1Rva2VuaXpl
ciB0b2tlbml6ZXIoZGVzY3JpcHRvci5pbml0aWFsVmFsdWUpOwogICAgICAgICBTdHlsZVJlc29s
dmVyIHN0eWxlUmVzb2x2ZXIoZG9jdW1lbnQpOwogCi0gICAgICAgIGF1dG8gcHJpbWl0aXZlVmFs
ID0gcGFyc2VyLnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlDdXN0b20sIGRlc2NyaXB0b3Iu
aW5pdGlhbFZhbHVlKTsKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWwgfHwgIXByaW1pdGl2ZVZh
bC0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAvLyBXZSBuZWVkIHRvIGluaXRpYWxpemUg
dGhpcyBzbyB0aGF0IHdlIGNhbiBzdWNjZXNzZnVsbHkgcGFyc2UgY29tcHV0YXRpb25hbGx5IGRl
cGVuZGVudCB2YWx1ZXMgKGxpa2UgZW0gdW5pdHMpLgorICAgICAgICAvLyBXZSBkb24ndCBhY3R1
YWxseSBuZWVkIHRoZSB2YWx1ZXMgdG8gYmUgYWNjdXJhdGUsIHNpbmNlIHRoZXkgd2lsbCBiZSBy
ZWplY3RlZCBsYXRlciBhbnl3YXkKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLnNldFN0
eWxlKHN0eWxlUmVzb2x2ZXIuZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsKKyAgICAgICAgc3R5
bGVSZXNvbHZlci51cGRhdGVGb250KCk7CisKKyAgICAgICAgaW5pdGlhbFZhbHVlID0gQ1NTUHJv
cGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGRlc2NyaXB0b3IubmFt
ZSwgZGVzY3JpcHRvci5zeW50YXgsIHRva2VuaXplci50b2tlblJhbmdlKCksIHN0eWxlUmVzb2x2
ZXIsIHN0cmljdENTU1BhcnNlckNvbnRleHQoKSk7CisKKyAgICAgICAgaWYgKCFpbml0aWFsVmFs
dWUgfHwgIWluaXRpYWxWYWx1ZS0+aXNSZXNvbHZlZCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAiVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3Qg
cGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguIiB9OwogCiAgICAgICAgIEhhc2hTZXQ8Q1NTUHJv
cGVydHlJRD4gZGVwZW5kZW5jaWVzOwotICAgICAgICBwcmltaXRpdmVWYWwtPmNvbGxlY3REaXJl
Y3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7Ci0gICAgICAgIHByaW1p
dGl2ZVZhbC0+Y29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVu
ZGVuY2llcyk7CisgICAgICAgIGluaXRpYWxWYWx1ZS0+Y29sbGVjdERpcmVjdENvbXB1dGF0aW9u
YWxEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTsKKyAgICAgICAgaW5pdGlhbFZhbHVlLT5jb2xs
ZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTsKIAog
ICAgICAgICBpZiAoIWRlcGVuZGVuY2llcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU3ludGF4RXJyb3IsICJUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBtdXN0IGJl
IGNvbXB1dGF0aW9uYWxseSBpbmRlcGVuZGVudC4iIH07Ci0KLSAgICAgICAgaW5pdGlhbFZhbHVl
LT5zZXRSZXNvbHZlZFR5cGVkVmFsdWUoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVu
Z3RoKHN0eWxlUmVzb2x2ZXIsICpwcmltaXRpdmVWYWwpKTsKICAgICB9CiAKLSAgICBDU1NSZWdp
c3RlcmVkQ3VzdG9tUHJvcGVydHkgcHJvcGVydHkgeyBkZXNjcmlwdG9yLm5hbWUsIGRlc2NyaXB0
b3IuaW5oZXJpdHMsIFdURk1vdmUoaW5pdGlhbFZhbHVlKSB9OworICAgIENTU1JlZ2lzdGVyZWRD
dXN0b21Qcm9wZXJ0eSBwcm9wZXJ0eSB7IGRlc2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5zeW50
YXgsIGRlc2NyaXB0b3IuaW5oZXJpdHMsIFdURk1vdmUoaW5pdGlhbFZhbHVlKSB9OwogICAgIGlm
ICghZG9jdW1lbnQucmVnaXN0ZXJDU1NQcm9wZXJ0eShXVEZNb3ZlKHByb3BlcnR5KSkpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIHBy
b3BlcnR5IGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZC4iIH07CiAKKyAgICBkb2N1bWVudC5z
dHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCk7CisKICAgICByZXR1
cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGUyOGIzNGMwZDkxZTc3ODVhNDdhNzhjOGJjMTMw
OTA1NmZmYTExOWMuLjczZTFhNjdkNGQ5YjYxY2E3YzgwYmM2OGU3OWQyZTYwZmJmNGM2ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC0yMjYsNyArMjI2LDcgQEAgYm9vbCBQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246OmlzUHJvcGVydHlJbXBsaWNpdChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmEKIEV4
Y2VwdGlvbk9yPHZvaWQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVy
dHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0
IFN0cmluZyYgcHJpb3JpdHkpCiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11
dGF0aW9uU2NvcGUodGhpcyk7Ci0gICAgCisKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQg
PSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlO
YW1lKHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUN1c3Rv
bTsKQEAgLTI0MSw5ICsyNDEsMTYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3AKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIGJvb2wgY2hhbmdlZDsKLSAgICBpZiAocHJvcGVydHlJRCA9PSBD
U1NQcm9wZXJ0eUN1c3RvbSkKLSAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldEN1
c3RvbVByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29u
dGV4dCgpKTsKLSAgICBlbHNlCisgICAgaWYgKFVOTElLRUxZKHByb3BlcnR5SUQgPT0gQ1NTUHJv
cGVydHlDdXN0b20pKSB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxwdHI7CisK
KyAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgIGRvY3VtZW50ID0gJnBh
cmVudEVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9j
dW1lbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCktPm93bmVyRG9jdW1lbnQoKTsKKworICAgICAgICBj
aGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0Q3VzdG9tUHJvcGVydHkoZG9jdW1lbnQsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4dCgpKTsKKyAgICB9IGVs
c2UKICAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5
SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7CiAKICAgICBkaWRNdXRh
dGUoY2hhbmdlZCA/IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggMGM0N2RhMjJlZmVhMTBiYTdmYWQ5MTI4M2Fk
MzFhZjM2OTE3NGQxZC4uMjAwMGZkYzFmNTVlMjFjNjY4NzFmYjkwYTFkNTdmYmY0YzdmN2EyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtMTg3OSwxMyArMTg3
OSwxMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJva2VD
b2xvcihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdgogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewotICAgIGlmIChyZWdpc3RlcmVkKSB7CisgICAg
aWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAg
YXV0byBpbml0aWFsVmFsdWUgPSByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWVDb3B5KCk7CiAgICAg
ICAgIGFwcGx5VmFsdWVDdXN0b21Qcm9wZXJ0eShzdHlsZVJlc29sdmVyLCByZWdpc3RlcmVkLCAq
aW5pdGlhbFZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gaW52YWxp
ZCA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZUlu
dmFsaWQpOworICAgIGF1dG8gaW52YWxpZCA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0
ZVVucmVzb2x2ZWQobmFtZSwgQ1NTVmFsdWVJbnZhbGlkKTsKICAgICBhcHBseVZhbHVlQ3VzdG9t
UHJvcGVydHkoc3R5bGVSZXNvbHZlciwgcmVnaXN0ZXJlZCwgaW52YWxpZC5nZXQoKSk7CiB9CiAK
QEAgLTE5MDAsMTIgKzE5MDAsMTMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0eShTdHlsZVJlc29sdmVyJiBzdHlsZVIKIAogaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
KiByZWdpc3RlcmVkLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlJiB2YWx1ZSkKIHsKKyAgICBBU1NF
UlQodmFsdWUuaXNSZXNvbHZlZCgpKTsKICAgICBjb25zdCBhdXRvJiBuYW1lID0gdmFsdWUubmFt
ZSgpOwogCiAgICAgaWYgKCFyZWdpc3RlcmVkIHx8IHJlZ2lzdGVyZWQtPmluaGVyaXRzKQotICAg
ICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFs
dWUobmFtZSwgbWFrZVJlZih2YWx1ZSksIHJlZ2lzdGVyZWQpOworICAgICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJl
Zih2YWx1ZSkpOwogICAgIGVsc2UKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRO
b25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIG1ha2VSZWYodmFsdWUpLCByZWdp
c3RlcmVkKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXROb25Jbmhlcml0ZWRD
dXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIG1ha2VSZWYodmFsdWUpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA1
ZDc4ZjhjMTdmZTFkZWYxYjIyZmZkZTQ0ZTE1MmRiNGY2NWIwN2ViLi41YWNiNDhmOTExYTM3MTc4
ZmFlOGE4MGUxNzgzZTY5Yjc1ODhjYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
aWVzLmNwcApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIkNTU0RlZmVycmVkUGFyc2VyLmgi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUGVuZGluZ1N1YnN0aXR1dGlv
blZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NU
b2tlbml6ZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NT
VmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCkBAIC03NzksNyArNzgxLDcg
QEAgYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gc2V0UHJvcGVydHkocHJvcGVy
dHlJRCwgdmFsdWUsIGltcG9ydGFudCwgcGFyc2VyQ29udGV4dCk7CiB9CiAKLWJvb2wgTXV0YWJs
ZVN0eWxlUHJvcGVydGllczo6c2V0Q3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJDb250
ZXh0IHBhcnNlckNvbnRleHQpCitib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3Rv
bVByb3BlcnR5KGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJDb250
ZXh0IHBhcnNlckNvbnRleHQpCiB7CiAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1w
dHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0aGUgcHJvcGVydHkgaW4gYm90aCBJRSBhbmQgR2Vja28u
CiAgICAgLy8gU2V0dGluZyBpdCB0byBudWxsIHNlZW1zIHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0
ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVhdCBpdCBqdXN0IHRoZSBzYW1lLgpAQCAtNzg3LDYgKzc4
OSwxNyBAQCBib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdAogICAgICAgICByZXR1cm4gcmVtb3ZlQ3Vz
dG9tUHJvcGVydHkocHJvcGVydHlOYW1lKTsKIAogICAgIHBhcnNlckNvbnRleHQubW9kZSA9IGNz
c1BhcnNlck1vZGUoKTsKKworICAgIFN0cmluZyBzeW50YXggPSAiKiI7CisgICAgYXV0byogcmVn
aXN0ZXJlZCA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9w
ZXJ0eVNldCgpLmdldChwcm9wZXJ0eU5hbWUpIDogbnVsbHB0cjsKKworICAgIGlmIChyZWdpc3Rl
cmVkKQorICAgICAgICBzeW50YXggPSByZWdpc3RlcmVkLT5zeW50YXg7CisKKyAgICBDU1NUb2tl
bml6ZXIgdG9rZW5pemVyKHZhbHVlKTsKKyAgICBpZiAoIUNTU1Byb3BlcnR5UGFyc2VyOjpjYW5Q
YXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShzeW50YXgsIHRva2VuaXplci50b2tlblJhbmdl
KCksIHBhcnNlckNvbnRleHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBXaGVu
IHJlcGxhY2luZyBhbiBleGlzdGluZyBwcm9wZXJ0eSB2YWx1ZSwgdGhpcyBtb3ZlcyB0aGUgcHJv
cGVydHkgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KICAgICAvLyBGaXJlZm94IHByZXNlcnZlcyB0
aGUgcG9zaXRpb24sIGFuZCBNU0lFIG1vdmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgYmVnaW5uaW5n
LgogICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZSgqdGhpcywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1wb3J0YW50LCBwYXJzZXJDb250ZXh0KSA9PSBDU1NQYXJz
ZXI6OlBhcnNlUmVzdWx0OjpDaGFuZ2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5o
CmluZGV4IDNmNGI2NWFiNzI4OGRkMGYzYjE2MWJhNDFiZDUwNWRmMmUzNzU1MGMuLjgzOWE1NDQz
ZjkxNzhhMjJlMzBiNmYwODdiMmMxOTk4NjRjZjM1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0aWVzLmgKQEAgLTI0OSw3ICsyNDksNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPENTU1By
b3BlcnR5LCA0PiBtX3Byb3BlcnR5VmVjdG9yOwogCiAgICAgLy8gTWV0aG9kcyBmb3IgcXVlcnlp
bmcgYW5kIGFsdGVyaW5nIENTUyBjdXN0b20gcHJvcGVydGllcy4KLSAgICBib29sIHNldEN1c3Rv
bVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4dCk7CisgICAgYm9vbCBzZXRDdXN0b21Q
cm9wZXJ0eShjb25zdCBEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4dCk7CiAgICAg
Ym9vbCByZW1vdmVDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3Ry
aW5nKiByZXR1cm5UZXh0ID0gbnVsbHB0cik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKaW5kZXggZDRlMDZiY2NmMzM2MGQxY2E0MGMwNzI4MDJmNDUwMGM1OWZk
YTA1Yi4uZmQ0Y2ZlZWZhNWM3MjgwODZjNDc0MmFmMjIxNjk0NWM5M2Y2ZDYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzI3LDcgKzMyNyw3IEBAIGlubGluZSB2b2lk
IFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IHN0eWxlKQogICAgIHVwZGF0ZUNvbnZlcnNpb25EYXRhKCk7CiB9CiAKLXZvaWQgU3R5bGVS
ZXNvbHZlcjo6U3RhdGU6OnNldFBhcmVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gcGFyZW50U3R5bGUpCitpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0UGFy
ZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwYXJlbnRTdHlsZSkKIHsKICAg
ICBtX293bmVkUGFyZW50U3R5bGUgPSBXVEZNb3ZlKHBhcmVudFN0eWxlKTsKICAgICBtX3BhcmVu
dFN0eWxlID0gbV9vd25lZFBhcmVudFN0eWxlLmdldCgpOwpAQCAtNDI5LDIxICs0MjksMjEgQEAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZy
YW1lKGNvbnN0IFJlbmRlclN0eWxlKgogICAgIENhc2NhZGVkUHJvcGVydGllcyBjYXNjYWRlKGRp
cmVjdGlvbiwgd3JpdGluZ01vZGUpOwogICAgIGNhc2NhZGUuYWRkTm9ybWFsTWF0Y2hlcyhyZXN1
bHQsIDAsIHJlc3VsdC5tYXRjaGVkUHJvcGVydGllcygpLnNpemUoKSAtIDEpOwogCi0gICAgLy8g
UmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20sICZyZXN1
bHQpOwotCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9w
ZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCAmcmVzdWx0KTsKKyAgICBBcHBseUNhc2Nh
ZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgJmNhc2NhZGUsICZyZXN1bHQgfTsK
KyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFBy
aW9yaXR5UHJvcGVydHksIGFwcGx5U3RhdGUpOwogCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRp
cnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAgICAgdXBkYXRlRm9udCgpOwogCi0gICAgLy8gTm93IGRv
IHJlc3Qgb2YgdGhlIHByb3BlcnRpZXMuCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2Fz
Y2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZyZXN1bHQp
OworICAgIC8vIE5vdyByZXNvbHZlIHJlbWFpbmluZyBjdXN0b20gcHJvcGVydGllcyBhbmQgdGhl
IHJlc3QsIGluIGFueSBvcmRlcgorICAgIGZvciAoYXV0byBpdCA9IGNhc2NhZGUuY3VzdG9tUHJv
cGVydGllcygpLmJlZ2luKCk7IGl0ICE9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgp
OyArK2l0KQorICAgICAgICBhcHBseUNhc2NhZGVkQ3VzdG9tUHJvcGVydHkoaXQtPmtleSwgYXBw
bHlTdGF0ZSk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RMb3dQcmlvcml0eVBy
b3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksIGFwcGx5U3RhdGUpOwogCiAgICAgLy8gSWYgb3VyIGZv
bnQgZ290IGRpcnRpZWQgYnkgb25lIG9mIHRoZSBub24tZXNzZW50aWFsIGZvbnQgcHJvcHMsIHVw
ZGF0ZSBpdCBhIHNlY29uZCB0aW1lLgogICAgIHVwZGF0ZUZvbnQoKTsKIAotICAgIGNhc2NhZGUu
YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsICZyZXN1bHQpOworICAgIGNhc2NhZGUuYXBw
bHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwogCiAgICAgYWRqdXN0UmVu
ZGVyU3R5bGUoKnN0YXRlLnN0eWxlKCksICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBudWxscHRyLCBu
dWxscHRyKTsKIApAQCAtNjM1LDE3ICs2MzUsMTggQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKICAgICBDYXNj
YWRlZFByb3BlcnRpZXMgY2FzY2FkZShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKTsKICAgICBjYXNj
YWRlLmFkZE5vcm1hbE1hdGNoZXMocmVzdWx0LCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMo
KS5zaXplKCkgLSAxKTsKIAotICAgIC8vIFJlc29sdmUgY3VzdG9tIHByb3BlcnRpZXMgZmlyc3Qu
Ci0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlDdXN0b20s
IENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVzdWx0KTsKLQotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0
aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwg
JnJlc3VsdCk7CisgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRo
aXMsICZjYXNjYWRlLCAmcmVzdWx0IH07CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmly
c3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBseVN0YXRlKTsKIAog
ICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCB1cGRhdGUgaXQgbm93LgogICAgIHVwZGF0
ZUZvbnQoKTsKIAotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93
UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCAmcmVzdWx0KTsKKyAgICAvLyBOb3cg
cmVzb2x2ZSByZW1haW5pbmcgY3VzdG9tIHByb3BlcnRpZXMgYW5kIHRoZSByZXN0LCBpbiBhbnkg
b3JkZXIKKyAgICBmb3IgKGF1dG8gaXQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5iZWdp
bigpOyBpdCAhPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKTsgKytpdCkKKyAgICAg
ICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5U3RhdGUpOworICAg
IGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENT
U1Byb3BlcnR5LCBhcHBseVN0YXRlKTsKIAotICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3Bl
cnRpZXMoKnRoaXMsICZyZXN1bHQpOworICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRp
ZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwogCiAgICAgLy8gTm93IHJldHVybiB0aGUgc3R5bGUuCiAg
ICAgcmV0dXJuIG1fc3RhdGUudGFrZVN0eWxlKCk7CkBAIC0xMzcxLDE3ICsxMzcyLDIwIEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3Vs
dCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAgICAgIGNhc2NhZGUuYWRkTm9ybWFsTWF0Y2hlcyht
YXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5y
YW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJbmhlcml0ZWRPbmx5KTsKICAgICAgICAgY2FzY2FkZS5h
ZGRJbXBvcnRhbnRNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RV
QVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkp
OwogCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5
V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgJm1hdGNo
UmVzdWx0KTsKLSAgICAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1YnkoKTsKKyAg
ICAgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMsICZjYXNj
YWRlLCAmbWF0Y2hSZXN1bHQgfTsKIAotICAgICAgICAvLyBSZXNvbHZlIGN1c3RvbSB2YXJpYWJs
ZXMgZmlyc3QuCi0gICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1By
b3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0eUN1c3RvbSwgJm1hdGNoUmVzdWx0KTsKKyAgICAgICAg
YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sIENT
U1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBhcHBseVN0YXRlKTsKKyAgICAgICAgYWRqdXN0
U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1YnkoKTsKIAotICAgICAgICAvLyBTdGFydCBieSBhcHBs
eWluZyBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBtYXkgZGVwZW5kIG9uLgotICAg
ICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBs
YXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisgICAgICAgIGFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0aWVzKGZpcnN0Q1NTUHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0
eSwgYXBwbHlTdGF0ZSk7CiAKKyAgICAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIHVw
ZGF0ZSBpdCBub3cuCiAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLSAgICAgICAgYXBwbHlDYXNjYWRl
ZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJv
cGVydHksICZtYXRjaFJlc3VsdCk7CisKKyAgICAgICAgLy8gTm93IHJlc29sdmUgcmVtYWluaW5n
IGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVyCisgICAgICAgIGZv
ciAoYXV0byBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2luKCk7IGl0ICE9IGNh
c2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOyArK2l0KQorICAgICAgICAgICAgYXBwbHlD
YXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0LT5rZXksIGFwcGx5U3RhdGUpOworICAgICAgICBhcHBs
eUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9w
ZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKICAgICAgICAgc3RhdGUuY2FjaGVCb3JkZXJBbmRCYWNrZ3Jv
dW5kKCk7CiAgICAgfQpAQCAtMTM5MiwxNiArMTM5NiwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBj
b25zdAogICAgIGNhc2NhZGUuYWRkSW1wb3J0YW50TWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hS
ZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1
bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7CiAgICAgY2FzY2FkZS5hZGRJbXBvcnRhbnRNYXRjaGVz
KG1hdGNoUmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0
LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogCi0gICAgLy8gUmVzb2x2
ZSBjdXN0b20gcHJvcGVydGllcyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhj
YXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20sICZtYXRjaFJlc3Vs
dCk7CiAKLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eVdl
YmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sICZtYXRjaFJl
c3VsdCk7CisgICAgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMs
ICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQgfTsKIAotICAgIC8vIEFkanVzdCB0aGUgZm9udCBzaXpl
IHRvIGJlIHNtYWxsZXIgaWYgcnVieS1wb3NpdGlvbiBpcyBpbnRlci1jaGFyYWN0ZXIuCisgICAg
YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sIENT
U1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBhcHBseVN0YXRlKTsKICAgICBhZGp1c3RTdHls
ZUZvckludGVyQ2hhcmFjdGVyUnVieSgpOwogCi0gICAgLy8gU3RhcnQgYnkgYXBwbHlpbmcgcHJv
cGVydGllcyB0aGF0IG90aGVyIHByb3BlcnRpZXMgbWF5IGRlcGVuZCBvbi4KLSAgICBhcHBseUNh
c2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9y
aXR5UHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMo
Zmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVByb3BlcnR5LCBhcHBseVN0YXRlKTsK
IAogICAgIC8vIElmIHRoZSBlZmZlY3RpdmUgem9vbSB2YWx1ZSBjaGFuZ2VzLCB3ZSBjYW4ndCB1
c2UgdGhlIG1hdGNoZWQgcHJvcGVydGllcyBjYWNoZS4gU3RhcnQgb3Zlci4KICAgICBpZiAoY2Fj
aGVJdGVtICYmIGNhY2hlSXRlbS0+cmVuZGVyU3R5bGUtPmVmZmVjdGl2ZVpvb20oKSAhPSBzdGF0
ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpCkBAIC0xNDE0LDEzICsxNDE1LDE1IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYg
bWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAgaWYgKGNhY2hlSXRlbSAmJiBjYWNoZUl0ZW0tPnJlbmRl
clN0eWxlLT5mb250RGVzY3JpcHRpb24oKSAhPSBzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMobWF0Y2hSZXN1bHQs
IGVsZW1lbnQsIERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7CiAKLSAgICAvLyBBcHBs
eSBwcm9wZXJ0aWVzIHRoYXQgbm8gb3RoZXIgcHJvcGVydGllcyBkZXBlbmQgb24uCi0gICAgYXBw
bHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBs
YXN0Q1NTUHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisgICAgLy8gTm93IHJlc29sdmUgcmVtYWlu
aW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVyCisgICAgZm9y
IChhdXRvIGl0ID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gY2Fz
Y2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7ICsraXQpCisgICAgICAgIGFwcGx5Q2FzY2Fk
ZWRDdXN0b21Qcm9wZXJ0eShpdC0+a2V5LCBhcHBseVN0YXRlKTsKKyAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhmaXJzdExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBw
bHlTdGF0ZSk7CiAKICAgICAvLyBGaW5hbGx5LCBzb21lIHByb3BlcnRpZXMgbXVzdCBiZSBhcHBs
aWVkIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgcGFyc2VkLgogICAgIC8vIFRoZXJlIGFyZSBzb21l
IENTUyBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0IHRoZSBzYW1lIFJlbmRlclN0eWxlIHZhbHVlcywK
ICAgICAvLyBzbyB0byBwcmVzZXJ2ZSBiZWhhdmlvciwgd2UgcXVldWUgdGhlbSB1cCBkdXJpbmcg
Y2FzY2FkZSBhbmQgZmx1c2ggaGVyZS4KLSAgICBjYXNjYWRlLmFwcGx5RGVmZXJyZWRQcm9wZXJ0
aWVzKCp0aGlzLCAmbWF0Y2hSZXN1bHQpOworICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3Bl
cnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwogCiAgICAgQVNTRVJUKCFzdGF0ZS5mb250RGlydHko
KSk7CiAKQEAgLTE0NDEsOCArMTQ0NCw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBzdGQ6CiAKIHZv
aWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5
SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKKyAgICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0
ZSBhcHBseVN0YXRlIHsgdGhpcywgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIGlmICh2YWx1ZSkK
LSAgICAgICAgYXBwbHlQcm9wZXJ0eShpZCwgdmFsdWUpOworICAgICAgICBhcHBseVByb3BlcnR5
KGlkLCB2YWx1ZSwgYXBwbHlTdGF0ZSk7CiB9CiAKIGlubGluZSBib29sIGlzVmFsaWRWaXNpdGVk
TGlua1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpCkBAIC0xNjA5LDE2ICsxNjEzLDE4IEBAIFN0
eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQ
cm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgU3R5
bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFs
dWUsIFNlbGVjdG9yQ2hlY2tlcjo6TGlua01hdGNoTWFzayBsaW5rTWF0Y2hNYXNrLCBjb25zdCBN
YXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBBcHBseUNhc2NhZGVkUHJvcGVy
dHlTdGF0ZSYgYXBwbHlTdGF0ZSwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrIGxpbmtN
YXRjaE1hc2spCiB7CisgICAgYXV0byogbWF0Y2hSZXN1bHQgPSBhcHBseVN0YXRlLm1hdGNoUmVz
dWx0OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWlzU2hvcnRoYW5kQ1NTUHJvcGVydHkoaWQp
LCAiU2hvcnRoYW5kIHByb3BlcnR5IGlkID0gJWQgd2Fzbid0IGV4cGFuZGVkIGF0IHBhcnNpbmcg
dGltZSIsIGlkKTsKIAogICAgIFN0YXRlJiBzdGF0ZSA9IG1fc3RhdGU7CiAKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlVG9BcHBseSA9IHZhbHVlOwogICAgIGlmICh2YWx1ZS0+aGFzVmFyaWFi
bGVSZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgdmFsdWVUb0FwcGx5ID0gcmVzb2x2ZWRWYXJpYWJs
ZVZhbHVlKGlkLCAqdmFsdWUpOwotICAgICAgICBpZiAoIXZhbHVlVG9BcHBseSkgeworICAgICAg
ICB2YWx1ZVRvQXBwbHkgPSByZXNvbHZlZFZhcmlhYmxlVmFsdWUoaWQsICp2YWx1ZSwgYXBwbHlT
dGF0ZSk7CisgICAgICAgIC8vIElmIGFwcGxpZWRQcm9wZXJ0aWVzIGFscmVhZHkgaGFzIHRoaXMg
aWQsIHRoZW4gd2UgZGV0ZWN0ZWQgYSBjeWNsZSwgYW5kIHRoaXMgdmFsdWUgc2hvdWxkIGJlIHVu
c2V0LgorICAgICAgICBpZiAoIXZhbHVlVG9BcHBseSB8fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9w
ZXJ0aWVzLmdldChpZCkpIHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNJbmhlcml0
ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgZWxz
ZQpAQCAtMTYyOSw3ICsxNjM1LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5
KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgU2VsZWN0b3JDaGUKICAgICBpZiAo
Q1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpIHsKICAgICAgICAgQ1NT
UHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9w
ZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0YXRlLnN0eWxlKCktPndyaXRp
bmdNb2RlKCkpOwogICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwotICAgICAgICByZXR1cm4g
YXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFsdWVUb0FwcGx5LmdldCgpLCBsaW5rTWF0Y2hNYXNrLCBt
YXRjaFJlc3VsdCk7CisgICAgICAgIHJldHVybiBhcHBseVByb3BlcnR5KG5ld0lkLCB2YWx1ZVRv
QXBwbHkuZ2V0KCksIGFwcGx5U3RhdGUsIGxpbmtNYXRjaE1hc2spOwogICAgIH0KIAogICAgIENT
U1ZhbHVlKiB2YWx1ZVRvQ2hlY2tGb3JJbmhlcml0SW5pdGlhbCA9IHZhbHVlVG9BcHBseS5nZXQo
KTsKQEAgLTE2NDAsNyArMTY0Niw5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlCiAKICAgICBp
ZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0b20pIHsKICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1
ZSA9ICZkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqdmFsdWVUb0FwcGx5KTsKLSAg
ICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlEID0gY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWVJ
RCgpOworICAgICAgICBBU1NFUlQoY3VzdG9tUHJvcGVydHlWYWx1ZS0+aXNSZXNvbHZlZCgpKTsK
KyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4oY3VzdG9tUHJv
cGVydHlWYWx1ZS0+dmFsdWUoKSkpCisgICAgICAgICAgICBjdXN0b21Qcm9wZXJ0eVZhbHVlSUQg
PSBXVEY6OmdldDxDU1NWYWx1ZUlEPihjdXN0b21Qcm9wZXJ0eVZhbHVlLT52YWx1ZSgpKTsKICAg
ICAgICAgYXV0byYgbmFtZSA9IGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUoKTsKICAgICAgICAg
Y3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkID0gZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHlTZXQoKS5nZXQobmFtZSk7CiAgICAgfQpAQCAtMTY2NywxMyArMTY3NSwxMyBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NT
VmFsdWUqIHZhbHVlLCBTZWxlY3RvckNoZQogICAgICAgICAgICAgICAgIGlmIChjdXN0b21Qcm9w
ZXJ0eVJlZ2lzdGVyZWQgJiYgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVkLT5pbmhlcml0cyAmJiBy
b2xsYmFjay0+aGFzQ3VzdG9tUHJvcGVydHkoY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpKSkg
ewogICAgICAgICAgICAgICAgICAgICBhdXRvIHByb3BlcnR5ID0gcm9sbGJhY2stPmN1c3RvbVBy
b3BlcnR5KGN1c3RvbVByb3BlcnR5VmFsdWUtPm5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGx5UHJvcGVydHkocHJvcGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtN
YXRjaE1hc2tdLCBsaW5rTWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5r
TWF0Y2hNYXNrXSwgYXBwbHlTdGF0ZSwgbGlua01hdGNoTWFzayk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJv
bGxiYWNrLT5oYXNQcm9wZXJ0eShpZCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBwcm9wZXJ0
eSA9IHJvbGxiYWNrLT5wcm9wZXJ0eShpZCk7CiAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5
LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdKQotICAgICAgICAgICAgICAgICAgICBhcHBseVByb3Bl
cnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgbGlua01h
dGNoTWFzaywgbWF0Y2hSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5
KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgYXBwbHlTdGF0
ZSwgbGlua01hdGNoTWFzayk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCkBAIC0xNzAyLDEwICsxNzEwLDEwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlCiAgICAg
U3R5bGVCdWlsZGVyOjphcHBseVByb3BlcnR5KGlkLCAqdGhpcywgKnZhbHVlVG9BcHBseSwgaXNJ
bml0aWFsLCBpc0luaGVyaXQsIGN1c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCk7CiB9CiAKLVJlZlB0
cjxDU1NWYWx1ZT4gU3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpIGNvbnN0CitSZWZQdHI8Q1NTVmFs
dWU+IFN0eWxlUmVzb2x2ZXI6OnJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BJRCwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYg
c3RhdGUpIGNvbnN0CiB7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVudCgpKTsKLSAgICBy
ZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKHByb3BJRCwgdmFs
dWUsIGRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCksICptX3N0
YXRlLnN0eWxlKCkpOworICAgIHJldHVybiBwYXJzZXIucGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJl
ZmVyZW5jZXMocHJvcElELCB2YWx1ZSwgc3RhdGUpOwogfQogCiBSZWZQdHI8U3R5bGVJbWFnZT4g
U3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFnZShDU1NWYWx1ZSYgdmFsdWUpCkBAIC0yMjI3LDEzICsy
MjM1LDEzIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRJbXBv
cnRhbnRNYXRjaGVzKGNvbnN0IE1hdGNoUmVzdWx0JiBtCiAgICAgICAgIGFkZE1hdGNoKG1hdGNo
UmVzdWx0LCBtYXRjaC5pbmRleCwgdHJ1ZSwgaW5oZXJpdGVkT25seSk7CiB9CiAKLXZvaWQgU3R5
bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphcHBseURlZmVycmVkUHJvcGVydGllcyhT
dHlsZVJlc29sdmVyJiByZXNvbHZlciwgY29uc3QgTWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0KQor
dm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OmFwcGx5RGVmZXJyZWRQcm9w
ZXJ0aWVzKFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0
ZSYgYXBwbHlTdGF0ZSkKIHsKICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9kZWZlcnJlZFBy
b3BlcnRpZXMpCi0gICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyLCBtYXRjaFJlc3VsdCk7
CisgICAgICAgIHByb3BlcnR5LmFwcGx5KHJlc29sdmVyLCBhcHBseVN0YXRlKTsKIH0KIAotdm9p
ZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHls
ZVJlc29sdmVyJiByZXNvbHZlciwgY29uc3QgTWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0KQordm9p
ZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHls
ZVJlc29sdmVyJiByZXNvbHZlciwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIGFwcGx5U3Rh
dGUpCiB7CiAgICAgU3RhdGUmIHN0YXRlID0gcmVzb2x2ZXIuc3RhdGUoKTsKICAgICBzdGF0ZS5z
ZXRDYXNjYWRlTGV2ZWwobGV2ZWwpOwpAQCAtMjI0Miw3ICsyMjUwLDcgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVy
JiByZXNvbHZlciwKICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1
bHRdKSB7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVl
KTsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxz
ZSk7Ci0gICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9y
Q2hlY2tlcjo6TWF0Y2hEZWZhdWx0XSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIG1h
dGNoUmVzdWx0KTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVb
U2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdLCBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoRGVmYXVsdCk7CiAgICAgfQogCiAgICAgaWYgKHN0YXRlLnN0eWxlKCktPmluc2lk
ZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpOb3RJbnNpZGUpCkBAIC0yMjUxLDQzICsyMjU5LDExMiBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5
KFN0eWxlUmVzb2x2ZXImIHJlc29sdmVyLAogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNr
ZXI6Ok1hdGNoTGlua10pIHsKICAgICAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxh
clN0eWxlKHRydWUpOwogICAgICAgICBzdGF0ZS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlu
a1N0eWxlKGZhbHNlKTsKLSAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFs
dWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaExpbmtdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlu
aywgbWF0Y2hSZXN1bHQpOworICAgICAgICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NW
YWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10sIGFwcGx5U3RhdGUsIFNlbGVjdG9yQ2hl
Y2tlcjo6TWF0Y2hMaW5rKTsKICAgICB9CiAKICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVj
a2VyOjpNYXRjaFZpc2l0ZWRdKSB7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1Jl
Z3VsYXJTdHlsZShmYWxzZSk7CiAgICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0
ZWRMaW5rU3R5bGUodHJ1ZSk7Ci0gICAgICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNz
c1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkXSwgU2VsZWN0b3JDaGVja2VyOjpN
YXRjaFZpc2l0ZWQsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0
eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdLCBhcHBseVN0YXRl
LCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCk7CiAgICAgfQogCiAgICAgc3RhdGUuc2V0
QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwogICAgIHN0YXRlLnNldEFwcGx5UHJv
cGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2UpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKENhc2NhZGVkUHJvcGVydGllcyYgY2FzY2FkZSwgaW50
IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHksIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRj
aFJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5
KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQog
ewotICAgIGZvciAoaW50IGlkID0gZmlyc3RQcm9wZXJ0eTsgaWQgPD0gbGFzdFByb3BlcnR5OyAr
K2lkKSB7Ci0gICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0PENT
U1Byb3BlcnR5SUQ+KGlkKTsKLSAgICAgICAgaWYgKCFjYXNjYWRlLmhhc1Byb3BlcnR5KHByb3Bl
cnR5SUQpKQorICAgIGlmIChzdGF0ZS5hcHBsaWVkQ3VzdG9tUHJvcGVydGllcy5jb250YWlucyhu
YW1lKSB8fCAhc3RhdGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmNvbnRhaW5zKG5hbWUp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3RhdGUuY2FzY2FkZS0+
Y3VzdG9tUHJvcGVydGllcygpLmdldChuYW1lKTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IHsg
U2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5r
LCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoVmlzaXRlZCB9KSB7CisgICAgICAgIGlmICghcHJvcGVy
dHkuY3NzVmFsdWVbaW5kZXhdKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q3VzdG9tKSB7Ci0gICAgICAgICAgICAvLyBBcHBseSBm
b250IHNpemUgZmlyc3QsIHNpbmNlIGN1c3RvbSBwcm9wZXJ0aWVzIG1heSByZWx5IG9uIGl0IGZv
ciByZWxhdGl2ZSB1bml0IGNhbGN1bGF0aW9ucwotICAgICAgICAgICAgLy8gT25jZSBpdCBpcyBh
cHBsaWVkIGFuZCB0aGUgY3VzdG9tIHByb3BlcnR5IHZhbHVlcyBhcmUgc2V0LCBpdCB3aWxsIGJl
IGFwcGxpZWQgYWdhaW4sIHdoaWNoIHNob3VsZAotICAgICAgICAgICAgLy8gaGFuZGxlIGFueSBm
b250LXNpemUgcHJvcGVydGllcyB0aGF0IHJlbHkgb24gcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVy
dGllcy4KLSAgICAgICAgICAgIC8vIEZJWE1FIGN5Y2xlcyBzaG91bGQgYmUgZGV0ZWN0ZWQuCi0g
ICAgICAgICAgICBpZiAoY2FzY2FkZS5oYXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplKSkK
LSAgICAgICAgICAgICAgICBjYXNjYWRlLnByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpLmFw
cGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7Ci0gICAgICAgICAgICB1cGRhdGVGb250KCk7Ci0KLSAg
ICAgICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBDYXNjYWRlZFByb3BlcnRpZXM6OlByb3Bl
cnR5Pjo6aXRlcmF0b3IgZW5kID0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7Ci0g
ICAgICAgICAgICBmb3IgKEhhc2hNYXA8QXRvbWljU3RyaW5nLCBDYXNjYWRlZFByb3BlcnRpZXM6
OlByb3BlcnR5Pjo6aXRlcmF0b3IgaXQgPSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAgICAgaXQtPnZhbHVlLmFwcGx5KCp0
aGlzLCBtYXRjaFJlc3VsdCk7Ci0gICAgICAgICAgICBtX3N0YXRlLnN0eWxlKCktPmNoZWNrVmFy
aWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVzKGRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5U2V0KCksIG1fc3RhdGUucGFyZW50U3R5bGUoKSwgKnRoaXMpOworICAgICAgICBp
ZiAoaW5kZXggIT0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQgJiYgdGhpcy0+c3RhdGUo
KS5zdHlsZSgpLT5pbnNpZGVMaW5rKCkgPT0gSW5zaWRlTGluazo6Tm90SW5zaWRlKQogICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IHZh
bHVlVG9BcHBseSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZShkb3duY2FzdDxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJvcGVydHkuY3NzVmFsdWVbaW5kZXhdKSk7CisKKyAgICAg
ICAgaWYgKHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLmNvbnRhaW5zKG5hbWUpKSB7
CisgICAgICAgICAgICAvLyBXZSBhcmUgaW4gYSBjeWNsZSwgc28gcmVzZXQgdGhlIHZhbHVlLgor
ICAgICAgICAgICAgc3RhdGUuYXBwbGllZEN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOworICAg
ICAgICAgICAgLy8gUmVzb2x2ZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgcmVzZXQgaXRzIGRlcGVu
ZGVuY2llcworICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENTU1Zh
cmlhYmxlUmVmZXJlbmNlVmFsdWU+Pih2YWx1ZVRvQXBwbHktPnZhbHVlKCkpKQorICAgICAgICAg
ICAgICAgIHJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUN1c3RvbSwgdmFsdWVUb0Fw
cGx5LmdldCgpLCBzdGF0ZSk7CisgICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobmFtZSwgQ1NTVmFsdWVVbnNldCk7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllc0N1c3RvbS5hZGQobmFtZSk7
CisKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENTU1ZhcmlhYmxlUmVm
ZXJlbmNlVmFsdWU+Pih2YWx1ZVRvQXBwbHktPnZhbHVlKCkpKSB7CisgICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlID0gcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3Bl
cnR5Q3VzdG9tLCB2YWx1ZVRvQXBwbHkuZ2V0KCksIHN0YXRlKTsKKworICAgICAgICAgICAgaWYg
KCFwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZVVuc2V0KTsKKworICAgICAg
ICAgICAgdmFsdWVUb0FwcGx5ID0gZG93bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnBh
cnNlZFZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGF0ZS5pblByb2dyZXNzUHJv
cGVydGllc0N1c3RvbS5jb250YWlucyhuYW1lKSkgeworICAgICAgICAgICAgaWYgKGluZGV4ID09
IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0KSB7CisgICAgICAgICAgICAgICAgdGhpcy0+
c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUodHJ1ZSk7CisgICAgICAgICAg
ICAgICAgdGhpcy0+c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZh
bHNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGluZGV4ID09IFNlbGVjdG9y
Q2hlY2tlcjo6TWF0Y2hMaW5rKSB7CisgICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUoKS5zZXRB
cHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpcy0+
c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGluZGV4ID09IFNlbGVjdG9yQ2hlY2tlcjo6TWF0
Y2hWaXNpdGVkKSB7CisgICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUoKS5zZXRBcHBseVByb3Bl
cnR5VG9SZWd1bGFyU3R5bGUoZmFsc2UpOworICAgICAgICAgICAgICAgIHRoaXMtPnN0YXRlKCku
c2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZSh0cnVlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlDdXN0b20sIHZhbHVlVG9BcHBs
eS5wdHIoKSwgc3RhdGUsIGluZGV4KTsKICAgICAgICAgfQotICAgICAgICBhdXRvJiBwcm9wZXJ0
eSA9IGNhc2NhZGUucHJvcGVydHkocHJvcGVydHlJRCk7CisgICAgICAgIHN0YXRlLmluUHJvZ3Jl
c3NQcm9wZXJ0aWVzQ3VzdG9tLnJlbW92ZShuYW1lKTsKKyAgICAgICAgc3RhdGUuYXBwbGllZEN1
c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOworICAgIH0KK30KKwordm9pZCBTdHlsZVJlc29sdmVy
OjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9w
ZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQoreworICAgIGlmIChMSUtF
TFkoc3RhdGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmlzRW1wdHkoKSkpCisgICAgICAg
IHJldHVybiBhcHBseUNhc2NhZGVkUHJvcGVydGllc0ltcGw8Q3VzdG9tUHJvcGVydHlDeWNsZVRy
YWNraW5nOjpEaXNhYmxlZD4oZmlyc3RQcm9wZXJ0eSwgbGFzdFByb3BlcnR5LCBzdGF0ZSk7Cisg
ICAgcmV0dXJuIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzSW1wbDxDdXN0b21Qcm9wZXJ0eUN5Y2xl
VHJhY2tpbmc6OkVuYWJsZWQ+KGZpcnN0UHJvcGVydHksIGxhc3RQcm9wZXJ0eSwgc3RhdGUpOwor
fQorCit0ZW1wbGF0ZTxTdHlsZVJlc29sdmVyOjpDdXN0b21Qcm9wZXJ0eUN5Y2xlVHJhY2tpbmcg
VHJhY2tDeWNsZXM+CitpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJv
cGVydGllc0ltcGwoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHksIEFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKK3sKKyAgICBmb3IgKGludCBpZCA9IGZpcnN0UHJv
cGVydHk7IGlkIDw9IGxhc3RQcm9wZXJ0eTsgKytpZCkgeworICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCk7CisgICAgICAgIGlm
ICghc3RhdGUuY2FzY2FkZS0+aGFzUHJvcGVydHkocHJvcGVydHlJRCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgQVNTRVJUKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlDdXN0b20p
OworICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IHN0YXRlLmNhc2NhZGUtPnByb3BlcnR5KHByb3Bl
cnR5SUQpOwogICAgICAgICBBU1NFUlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIo
cHJvcGVydHlJRCkpOwotICAgICAgICBwcm9wZXJ0eS5hcHBseSgqdGhpcywgbWF0Y2hSZXN1bHQp
OworCisgICAgICAgIGlmIChUcmFja0N5Y2xlcyA9PSBDdXN0b21Qcm9wZXJ0eUN5Y2xlVHJhY2tp
bmc6OkRpc2FibGVkKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFueSBjdXN0
b20gcHJvcGVydGllcywgdGhlbiB0aGVyZSBjYW4ndCBiZSBhbnkgY3ljbGVzLgorICAgICAgICAg
ICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5nZXQocHJvcGVy
dHlJRCkpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGluIGEgY3ljbGUgKGVnLiBzZXR0
aW5nIGZvbnQgc2l6ZSB1c2luZyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZSBjb250
YWluaW5nIGVtKS4KKyAgICAgICAgICAgICAgICAvLyBTbyB0aGlzIHZhbHVlIHNob3VsZCBiZSB1
bnNldC4KKyAgICAgICAgICAgICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5zZXQocHJvcGVy
dHlJRCk7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyBpbiBhIGN5Y2xlLCBh
bmQgb25seSB0aGUgcm9vdCBvZiB0aGUgY2FsbCBzdGFjayB3aWxsIGhhdmUgZmlyc3RQcm9wZXJ0
eSAhPSBsYXN0UHJvcGVydHkuCisgICAgICAgICAgICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkg
PT0gbGFzdFByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMuc2V0KHByb3BlcnR5
SUQpOworICAgICAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAgICAg
ICAgIHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAg
IHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlELCBmYWxzZSk7CisgICAg
ICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDQ3MDNj
ZWZjM2JjMmMzYjZiNzQ5NzQ5ODc0MzVjYWU1ZGNlNWU0YmEuLmYxOWE1MDA5OWJkYzAxMzg4Njgx
ODAyZDM2YjBhMzFjZjgzYmRmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgPGJp
dHNldD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTI2Nyw3ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIENhc2NhZGVk
UHJvcGVydGllcyhUZXh0RGlyZWN0aW9uLCBXcml0aW5nTW9kZSk7CiAKICAgICAgICAgc3RydWN0
IFByb3BlcnR5IHsKLSAgICAgICAgICAgIHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIGNvbnN0
IE1hdGNoUmVzdWx0Kik7CisgICAgICAgICAgICB2b2lkIGFwcGx5KFN0eWxlUmVzb2x2ZXImLCBB
cHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOwogCiAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlE
IGlkOwogICAgICAgICAgICAgQ2FzY2FkZUxldmVsIGxldmVsOwpAQCAtMjgxLDcgKzI4Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgdm9pZCBhZGROb3JtYWxNYXRjaGVzKGNvbnN0IE1hdGNoUmVzdWx0
JiwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5ID0gZmFs
c2UpOwogICAgICAgICB2b2lkIGFkZEltcG9ydGFudE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQm
LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxz
ZSk7CiAKLSAgICAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVy
JiwgY29uc3QgTWF0Y2hSZXN1bHQqKTsKKyAgICAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVy
dGllcyhTdHlsZVJlc29sdmVyJiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKIAogICAg
ICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgUHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkg
eyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0aWVzOyB9CiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJv
cGVydHkoY29uc3QgU3RyaW5nJikgY29uc3Q7CkBAIC0zMDIsNyArMzAzLDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgVGV4dERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKICAgICAgICAgV3JpdGluZ01vZGUg
bV93cml0aW5nTW9kZTsKICAgICB9OwotICAgIAorCisgICAgdm9pZCBhcHBseUNhc2NhZGVkUHJv
cGVydGllcyhpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRl
ZFByb3BlcnR5U3RhdGUmKTsKKyAgICB2b2lkIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShj
b25zdCBTdHJpbmcmIG5hbWUsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7CisKIHByaXZh
dGU6CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBmaXhlcyB1cCB0aGUgZGVmYXVsdCBmb250IHNpemUg
aWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSBjdXJyZW50IGdlbmVyaWMgZm9udCBmYW1pbHkgaGFzIGNo
YW5nZWQuIC1kd2gKICAgICB2b2lkIGNoZWNrRm9yR2VuZXJpY0ZhbWlseUNoYW5nZShSZW5kZXJT
dHlsZSosIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7CkBAIC0zMjEsNyArMzI1LDEw
IEBAIHByaXZhdGU6CiAgICAgZW51bSBTaG91bGRVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlIHsg
RG9Ob3RVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlID0gMCwgVXNlTWF0Y2hlZFByb3BlcnRpZXND
YWNoZSB9OwogICAgIHZvaWQgYXBwbHlNYXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3Vs
dCYsIGNvbnN0IEVsZW1lbnQmLCBTaG91bGRVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlID0gVXNl
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7CiAKLSAgICB2b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0
aWVzKENhc2NhZGVkUHJvcGVydGllcyYsIGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3Bl
cnR5LCBjb25zdCBNYXRjaFJlc3VsdCopOworICAgIGVudW0gQ3VzdG9tUHJvcGVydHlDeWNsZVRy
YWNraW5nIHsgRW5hYmxlZCA9IDAsIERpc2FibGVkIH07CisgICAgdGVtcGxhdGU8Q3VzdG9tUHJv
cGVydHlDeWNsZVRyYWNraW5nPgorICAgIGlubGluZSB2b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0
aWVzSW1wbChpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRl
ZFByb3BlcnR5U3RhdGUmKTsKKwogICAgIHZvaWQgY2FzY2FkZU1hdGNoZXMoQ2FzY2FkZWRQcm9w
ZXJ0aWVzJiwgY29uc3QgTWF0Y2hSZXN1bHQmLCBib29sIGltcG9ydGFudCwgaW50IHN0YXJ0SW5k
ZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5KTsKIAogICAgIHZvaWQgbWF0Y2hQ
YWdlUnVsZXMoTWF0Y2hSZXN1bHQmLCBSdWxlU2V0KiwgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlz
Rmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKQEAgLTQ1NSwxMiArNDYyLDEyIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2Rl
KSB7IG1fc3RhdGUuc2V0V3JpdGluZ01vZGUod3JpdGluZ01vZGUpOyB9CiAgICAgdm9pZCBzZXRU
ZXh0T3JpZW50YXRpb24oVGV4dE9yaWVudGF0aW9uIHRleHRPcmllbnRhdGlvbikgeyBtX3N0YXRl
LnNldFRleHRPcmllbnRhdGlvbih0ZXh0T3JpZW50YXRpb24pOyB9CiAKLSAgICBSZWZQdHI8Q1NT
VmFsdWU+IHJlc29sdmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1
ZSYpIGNvbnN0OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENT
U1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlJiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUm
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgp
OwogCi0gICAgdm9pZCBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKiwgU2Vs
ZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1
bHQsIGNvbnN0IE1hdGNoUmVzdWx0KiA9IG51bGxwdHIpOworICAgIHZvaWQgYXBwbHlQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiwg
U2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERl
ZmF1bHQpOwogCiAgICAgdm9pZCBhcHBseVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1Zh
bHVlKik7CiAKQEAgLTUyNCw2ICs1MzEsMTkgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IE1hdGNoUmFuZ2VzJiwgY29uc3QgTWF0Y2hSYW5nZXMmKTsKIH07CiAK
Ky8vIFN0YXRlIHRvIHVzZSB3aGVuIGFwcGx5aW5nIHByb3BlcnRpZXMsIHRvIGtlZXAgdHJhY2sg
b2Ygd2hpY2ggY3VzdG9tIGFuZCBoaWdoLXByaW9yaXR5CisvLyBwcm9wZXJ0aWVzIGhhdmUgYmVl
biByZXNvbHZlZC4KK3N0cnVjdCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSB7CisgICAgU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcjsKKyAgICBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFBy
b3BlcnRpZXMqIGNhc2NhZGU7CisgICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hSZXN1bHQq
IG1hdGNoUmVzdWx0OworICAgIEJpdG1hcDxudW1DU1NQcm9wZXJ0aWVzPiBhcHBsaWVkUHJvcGVy
dGllcyA9IHsgfTsKKyAgICBIYXNoU2V0PFN0cmluZz4gYXBwbGllZEN1c3RvbVByb3BlcnRpZXMg
PSB7IH07CisgICAgQml0bWFwPG51bUNTU1Byb3BlcnRpZXM+IGluUHJvZ3Jlc3NQcm9wZXJ0aWVz
ID0geyB9OworICAgIEhhc2hTZXQ8U3RyaW5nPiBpblByb2dyZXNzUHJvcGVydGllc0N1c3RvbSA9
IHsgfTsKK307CisKKwogaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JB
dHRyaWJ1dGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nICZhdHRy
aWJ1dGVOYW1lKSBjb25zdAogewogICAgIEFTU0VSVCghYXR0cmlidXRlTmFtZS5pc0VtcHR5KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCmluZGV4IDlkZjBmZDQ1OWY5
MDczMzI0NDBkNWU4YTliODE2YjE2NTI0ZGNlZGMuLjBkNmFlZjA4ZjkyNGYwNzg4OWQyY2ExNDEw
OGNlNTdhMTg0NWJkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZUNvbG9yLmgiCisjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxl
U2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTc3
LDggKzE3OCwxMCBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbkZvckluc3BlY3Rv
cihjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjbwogICAgIENTU1BhcnNlckltcGw6
OnBhcnNlRGVjbGFyYXRpb25MaXN0Rm9ySW5zcGVjdG9yKHN0cmluZywgY29udGV4dCwgb2JzZXJ2
ZXIpOwogfQogCi1SZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJp
YWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVydHlJRCBwcm9wSUQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVy
dGllcywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcElE
LCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0
ZSkKIHsKKyAgICBBU1NFUlQoKHByb3BJRCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiB2YWx1ZS5p
c0N1c3RvbVByb3BlcnR5VmFsdWUoKSkgfHwgKHByb3BJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSAm
JiAhdmFsdWUuaXNDdXN0b21Qcm9wZXJ0eVZhbHVlKCkpKTsKKyAgICBhdXRvJiBzdHlsZSA9ICpz
dGF0ZS5zdHlsZVJlc29sdmVyLT5zdHlsZSgpOwogICAgIGF1dG8gZGlyZWN0aW9uID0gc3R5bGUu
ZGlyZWN0aW9uKCk7CiAgICAgYXV0byB3cml0aW5nTW9kZSA9IHN0eWxlLndyaXRpbmdNb2RlKCk7
CiAKQEAgLTE5MCwxMiArMTkzLDExIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJCiAgICAgICAg
IGlmIChDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KHNob3J0aGFuZElEKSkK
ICAgICAgICAgICAgIHNob3J0aGFuZElEID0gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25B
d2FyZVByb3BlcnR5KHNob3J0aGFuZElELCBkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKTsKICAgICAg
ICAgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSogc2hvcnRoYW5kVmFsdWUgPSBwZW5kaW5nU3Vi
c3RpdHV0aW9uLnNob3J0aGFuZFZhbHVlKCk7Ci0gICAgICAgIGNvbnN0IENTU1ZhcmlhYmxlRGF0
YSogdmFyaWFibGVEYXRhID0gc2hvcnRoYW5kVmFsdWUtPnZhcmlhYmxlRGF0YVZhbHVlKCk7Ci0g
ICAgICAgIEFTU0VSVCh2YXJpYWJsZURhdGEpOwotICAgICAgICAKLSAgICAgICAgVmVjdG9yPENT
U1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKLSAgICAgICAgaWYgKCF2YXJpYWJsZURhdGEt
PnJlc29sdmVUb2tlblJhbmdlKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCB2YXJpYWJsZURhdGEtPnRv
a2VucygpLCByZXNvbHZlZFRva2Vucywgc3R5bGUpKQorCisgICAgICAgIGF1dG8gcmVzb2x2ZWRE
YXRhID0gc2hvcnRoYW5kVmFsdWUtPnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoc3RhdGUpOwor
ICAgICAgICBpZiAoIXJlc29sdmVkRGF0YSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9rZW5zID0gcmVzb2x2ZWRE
YXRhLT50b2tlbnMoKTsKICAgICAgICAgCiAgICAgICAgIFBhcnNlZFByb3BlcnR5VmVjdG9yIHBh
cnNlZFByb3BlcnRpZXM7CiAgICAgICAgIGlmICghQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmFs
dWUoc2hvcnRoYW5kSUQsIGZhbHNlLCByZXNvbHZlZFRva2VucywgbV9jb250ZXh0LCBwYXJzZWRQ
cm9wZXJ0aWVzLCBTdHlsZVJ1bGU6OlN0eWxlKSkKQEAgLTIwOSwzMSArMjExLDMzIEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhD
U1NQcm9wZXJ0eUlEIHByb3BJCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGNvbnN0IENTU1ZhcmlhYmxlRGF0YSogdmFyaWFibGVEYXRhID0gbnVsbHB0cjsKLQogICAgIGlm
ICh2YWx1ZS5pc1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUoKSkgewogICAgICAgICBjb25zdCBDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlJiB2YWx1ZVdpdGhSZWZlcmVuY2VzID0gZG93bmNhc3Q8Q1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4odmFsdWUpOwotICAgICAgICB2YXJpYWJsZURhdGEgPSB2
YWx1ZVdpdGhSZWZlcmVuY2VzLnZhcmlhYmxlRGF0YVZhbHVlKCk7Ci0gICAgICAgIEFTU0VSVCh2
YXJpYWJsZURhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRGF0YSA9IHZhbHVlV2l0aFJlZmVy
ZW5jZXMucmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhzdGF0ZSk7CisgICAgICAgIGlmICghcmVz
b2x2ZWREYXRhKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBD
U1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShwcm9wSUQsIHJlc29sdmVkRGF0YS0+
dG9rZW5zKCksIG1fY29udGV4dCk7CiAgICAgfQogCi0gICAgaWYgKHZhbHVlLmlzQ3VzdG9tUHJv
cGVydHlWYWx1ZSgpKSB7Ci0gICAgICAgIGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIGN1
c3RvbVByb3BWYWx1ZSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KHZhbHVlKTsK
KyAgICBjb25zdCBhdXRvJiBjdXN0b21Qcm9wVmFsdWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlPih2YWx1ZSk7CisgICAgY29uc3QgYXV0byYgdmFsdWVXaXRoUmVmZXJlbmNlcyA9
IFdURjo6Z2V0PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4oY3VzdG9tUHJvcFZhbHVl
LnZhbHVlKCkpLmdldCgpOwogCi0gICAgICAgIGlmIChjdXN0b21Qcm9wVmFsdWUucmVzb2x2ZWRU
eXBlZFZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSgqY3VzdG9tUHJvcFZhbHVlLnJlc29sdmVkVHlwZWRWYWx1ZSgpLCBzdHlsZSk7CisgICAgYXV0
byYgbmFtZSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KHZhbHVlKS5uYW1lKCk7
CisgICAgYXV0byogcmVnaXN0ZXJlZCA9IHN0YXRlLnN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCku
Z2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCkuZ2V0KG5hbWUpOworICAgIGF1dG8m
IHN5bnRheCA9IHJlZ2lzdGVyZWQgPyByZWdpc3RlcmVkLT5zeW50YXggOiAiKiI7CisgICAgYXV0
byByZXNvbHZlZERhdGEgPSB2YWx1ZVdpdGhSZWZlcmVuY2VzLnJlc29sdmVWYXJpYWJsZVJlZmVy
ZW5jZXMoc3RhdGUpOwogCi0gICAgICAgIHZhcmlhYmxlRGF0YSA9IGN1c3RvbVByb3BWYWx1ZS52
YWx1ZSgpOwotICAgIH0KLQotICAgIGlmICghdmFyaWFibGVEYXRhKQorICAgIGlmICghcmVzb2x2
ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxDU1NQYXJzZXJU
b2tlbj4gcmVzb2x2ZWRUb2tlbnM7Ci0gICAgaWYgKCF2YXJpYWJsZURhdGEtPnJlc29sdmVUb2tl
blJhbmdlKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCB2YXJpYWJsZURhdGEtPnRva2VucygpLCByZXNv
bHZlZFRva2Vucywgc3R5bGUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGSVhN
RSBoYW5kbGUgUkVNIGN5Y2xlcy4KKyAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGRlcGVuZGVu
Y2llczsKKyAgICBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5
VmFsdWVEZXBlbmRlbmNpZXMoc3ludGF4LCBmYWxzZSwgZGVwZW5kZW5jaWVzLCByZXNvbHZlZERh
dGEtPnRva2VucygpLCBtX2NvbnRleHQpOworCisgICAgZm9yIChhdXRvIGlkIDogZGVwZW5kZW5j
aWVzKQorICAgICAgICBzdGF0ZS5zdHlsZVJlc29sdmVyLT5hcHBseUNhc2NhZGVkUHJvcGVydGll
cyhpZCwgaWQsIHN0YXRlKTsKIAotICAgIHJldHVybiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VT
aW5nbGVWYWx1ZShwcm9wSUQsIHJlc29sdmVkVG9rZW5zLCBtX2NvbnRleHQpOworICAgIHJldHVy
biBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwg
c3ludGF4LCByZXNvbHZlZERhdGEtPnRva2VucygpLCAqc3RhdGUuc3R5bGVSZXNvbHZlciwgbV9j
b250ZXh0KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjxkb3VibGU+PiBDU1NQYXJzZXI6
OnBhcnNlS2V5ZnJhbWVLZXlMaXN0KGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXIuaAppbmRleCAwOWJhNGIwMzBhNmM1ZjZhMmE1ZjEyYTY5MWIw
MDhjYjUyNWVlYTNjLi40NzA2M2NkZmI5YTI1NWM1NmJmZGM0NWY2Y2U0YjAzNjQ0MTEwMGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGU7
CiBjbGFzcyBDU1NQYXJzZXJPYnNlcnZlcjsKIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKIGNsYXNz
IENvbG9yOwpAQCAtNzcsNyArNzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhcnNlU2VsZWN0
b3IoY29uc3QgU3RyaW5nJiwgQ1NTU2VsZWN0b3JMaXN0Jik7CiAKLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IHBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQsIGNvbnN0
IENTU1ZhbHVlJiwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiwgY29uc3Qg
UmVuZGVyU3R5bGUmKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlVmFsdWVXaXRoVmFyaWFi
bGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlJiwgQXBwbHlDYXNjYWRl
ZFByb3BlcnR5U3RhdGUmKTsKIAogICAgIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFN0
cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOwogICAgIHN0YXRpYyBDb2xvciBwYXJzZVN5c3Rl
bUNvbG9yKGNvbnN0IFN0cmluZyYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggMjFmZWJh
Y2M0Y2ZiYWE1MTFiYmFlYTY0NzVmMTYwZDUzMjVkYzBmNi4uYzNhMjNiNTk5ZThlYjRkNzljYTlm
OTNlZGM2NDRmZjBiYTMxZDgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDU1NDb250
ZW50RGlzdHJpYnV0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVBy
b3BlcnR5VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5oIgogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCkBA
IC03Myw4ICs3NCwxMCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNp
bmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgogI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMu
aCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0
aW9ucy5oIgorI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDxiaXRzZXQ+CiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAg
LTIxMywxMiArMjE2LDEzIEBAIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJRChTdHJpbmdWaWV3
IHN0cmluZykKICAgICAKIHVzaW5nIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM7
CiAKLUNTU1Byb3BlcnR5UGFyc2VyOjpDU1NQcm9wZXJ0eVBhcnNlcihjb25zdCBDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVmVjdG9y
PENTU1Byb3BlcnR5LCAyNTY+KiBwYXJzZWRQcm9wZXJ0aWVzKQorQ1NTUHJvcGVydHlQYXJzZXI6
OkNTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4qIHBh
cnNlZFByb3BlcnRpZXMsIGJvb2wgY29uc3VtZVdoaXRlc3BhY2UpCiAgICAgOiBtX3JhbmdlKHJh
bmdlKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3BhcnNlZFByb3BlcnRpZXMo
cGFyc2VkUHJvcGVydGllcykKIHsKLSAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7Cisg
ICAgaWYgKGNvbnN1bWVXaGl0ZXNwYWNlKQorICAgICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNw
YWNlKCk7CiB9CiAKIHZvaWQgQ1NTUHJvcGVydHlQYXJzZXI6OmFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIENTU1Byb3BlcnR5SUQgY3VycmVudFNob3J0aGFuZCwgUmVmPENTU1Zh
bHVlPiYmIHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCkKQEAgLTI3OCw2ICsy
ODIsMjcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb24KICAgICByZXR1cm4gdmFsdWU7CiB9CiAK
K2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVl
KGNvbnN0IFN0cmluZyYgc3ludGF4LCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMs
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgQ1NTUHJvcGVydHlQYXJz
ZXIgcGFyc2VyKHRva2VucywgY29udGV4dCwgbnVsbHB0cik7CisgICAgcmV0dXJuIHBhcnNlci5j
YW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShzeW50YXgpOworfQorCitSZWZQdHI8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Q
cm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50YXgsIGNv
bnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywgY29uc3QgU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NQ
cm9wZXJ0eVBhcnNlciBwYXJzZXIodG9rZW5zLCBjb250ZXh0LCBudWxscHRyLCBmYWxzZSk7Cisg
ICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IHZhbHVlID0gcGFyc2VyLnBhcnNlVHlw
ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHN5bnRheCwgc3R5bGVSZXNvbHZlcik7CisgICAg
aWYgKCF2YWx1ZSB8fCAhcGFyc2VyLm1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIHZhbHVlOworfQorCit2b2lkIENTU1Byb3BlcnR5UGFyc2VyOjpj
b2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVuZGVuY2llcyhjb25zdCBTdHJpbmcm
IHN5bnRheCwgYm9vbCBpc1Jvb3QsIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mIGRlcGVuZGVuY2ll
cywgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0KQoreworICAgIENTU1Byb3BlcnR5UGFyc2VyIHBhcnNlcih0b2tlbnMsIGNv
bnRleHQsIG51bGxwdHIpOworICAgIHBhcnNlci5jb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlW
YWx1ZURlcGVuZGVuY2llcyhzeW50YXgsIGlzUm9vdCwgZGVwZW5kZW5jaWVzKTsKK30KKwogc3Rh
dGljIGJvb2wgaXNMZWdhY3lCcmVha1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkK
IHsKICAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKQEAgLTMyMCw3ICszNDUsNyBAQCBib29sIENT
U1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZhbHVlU3RhcnQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LCBib29sIGltcG9ydGFudAogICAgIH0KIAogICAgIGlmIChDU1NWYXJpYWJsZVBhcnNlcjo6Y29u
dGFpbnNWYWxpZFZhcmlhYmxlUmVmZXJlbmNlcyhvcmlnaW5hbFJhbmdlLCBtX2NvbnRleHQpKSB7
Ci0gICAgICAgIFJlZlB0cjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiB2YXJpYWJsZSA9IENT
U1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNyZWF0ZShDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShv
cmlnaW5hbFJhbmdlKSk7CisgICAgICAgIFJlZlB0cjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
PiB2YXJpYWJsZSA9IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6OmNyZWF0ZShvcmlnaW5hbFJh
bmdlKTsKIAogICAgICAgICBpZiAoaXNTaG9ydGhhbmQpIHsKICAgICAgICAgICAgIFJlZlB0cjxD
U1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFsdWU+IHBlbmRpbmdWYWx1ZSA9IENTU1BlbmRpbmdTdWJz
dGl0dXRpb25WYWx1ZTo6Y3JlYXRlKHByb3BlcnR5SUQsIHZhcmlhYmxlLnJlbGVhc2VOb25OdWxs
KCkpOwpAQCAtMzg4Niw3ICszOTExLDYgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBh
cnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MKICAgICBj
YXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKICAg
ICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgotICAgIGNhc2UgQ1NTUHJvcGVydHlDdXN0b206IC8v
IEZJWE1FOiBwYXJzaW5nIGEgcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVydHkgc2hvdWxkIGJlIGJh
c2VkIG9uIGl0cyBzeW50YXguCiAgICAgICAgIHJldHVybiBjb25zdW1lV2lkdGhPckhlaWdodCht
X3JhbmdlLCBtX2NvbnRleHQsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKICAgICBjYXNlIENTU1By
b3BlcnR5TWluSW5saW5lU2l6ZToKICAgICBjYXNlIENTU1Byb3BlcnR5TWluQmxvY2tTaXplOgpA
QCAtNDI1Niw2ICs0MjgwLDY0IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6
OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAgfQogfQog
Citib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1
ZShjb25zdCBTdHJpbmcmIHN5bnRheCkKK3sKKyAgICBpZiAoc3ludGF4ICE9ICIqIikgeworICAg
ICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisKKyAgICAgICAgLy8gRmlyc3QgY2hl
Y2sgZm9yIGtleXdvcmRzCisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBtX3JhbmdlLnBlZWsoKS5p
ZCgpOworICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVl
SW5pdGlhbCB8fCBpZCA9PSBDU1NWYWx1ZVJldmVydCkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgICAgIGF1dG8gbG9jYWxSYW5nZSA9IG1fcmFuZ2U7CisgICAgICAgIHdoaWxlICgh
bG9jYWxSYW5nZS5hdEVuZCgpKSB7CisgICAgICAgICAgICBhdXRvIGlkID0gbG9jYWxSYW5nZS5j
b25zdW1lKCkuZnVuY3Rpb25JZCgpOworICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmFy
IHx8IGlkID09IENTU1ZhbHVlRW52KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBG
b3IgdmFyaWFibGVzLCB3ZSBqdXN0IHBlcm1pdCBldmVyeXRoaW5nCisgICAgICAgIH0KKworICAg
ICAgICBhdXRvIHByaW1pdGl2ZVZhbCA9IGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1f
Y29udGV4dCk7CisgICAgICAgIGlmIChwcmltaXRpdmVWYWwgJiYgcHJpbWl0aXZlVmFsLT5pc1By
aW1pdGl2ZVZhbHVlKCkgJiYgbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFs
dWVEZXBlbmRlbmNpZXMoY29uc3QgU3RyaW5nJiBzeW50YXgsIGJvb2wgaXNSb290LCBIYXNoU2V0
PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRlbmNpZXMpCit7CisgICAgaWYgKHN5bnRheCAhPSAiKiIp
IHsKKyAgICAgICAgbV9yYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOworICAgICAgICBhdXRvIHBy
aW1pdGl2ZVZhbCA9IGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCk7Cisg
ICAgICAgIGlmICghbV9yYW5nZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsICYmIHByaW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7
CisgICAgICAgICAgICBwcmltaXRpdmVWYWwtPmNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVw
ZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7CisgICAgICAgICAgICBpZiAoaXNSb290KQorICAgICAg
ICAgICAgICAgIHByaW1pdGl2ZVZhbC0+Y29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVw
ZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1JlZlB0cjxD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3Rv
bVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN5bnRheCwg
Y29uc3QgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKK3sKKyAgICBpZiAoc3ludGF4ICE9
ICIqIikgeworICAgICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIGF1
dG8gcHJpbWl0aXZlVmFsID0gY29uc3VtZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0
KTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbCAmJiBwcmltaXRpdmVWYWwtPmlzUHJpbWl0aXZl
VmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVh
dGVTeW50YXhMZW5ndGgobmFtZSwgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3Ro
KHN0eWxlUmVzb2x2ZXIsICpwcmltaXRpdmVWYWwpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBh
dXRvIHByb3BlcnR5VmFsdWUgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVTeW50YXhB
bGwobmFtZSwgQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUobV9yYW5nZSkpOworICAgICAgICB3aGls
ZSAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgICAgIG1fcmFuZ2UuY29uc3VtZSgpOworICAg
ICAgICByZXR1cm4geyBXVEZNb3ZlKHByb3BlcnR5VmFsdWUpIH07CisgICAgfQorCisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb25zdW1lRm9u
dEZhY2VVbmljb2RlUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5o
CmluZGV4IDdkYjc0NTNjMGQ4NDk5ZWExM2UwMGQ5N2NmMmUwYzUyNGY0NThiMjYuLjFkYzA1ZWY4
OGRhYzI2MGFlNjEwNzIyOWI4ZGE5NmNjNGIxN2U3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgQ1NT
UHJvcGVydHk7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQ7
CiBjbGFzcyBTdHlsZVNoZWV0Q29udGVudHM7CitjbGFzcyBTdHlsZVJlc29sdmVyOwogICAgIAog
Ly8gSW5wdXRzOiBQcm9wZXJ0eUlELCBpc0ltcG9ydGFudCBib29sLCBDU1NQYXJzZXJUb2tlblJh
bmdlLgogLy8gT3V0cHV0czogVmVjdG9yIG9mIENTU1Byb3BlcnRpZXMKQEAgLTQ1LDE0ICs0Niwy
MCBAQCBwdWJsaWM6CiAKICAgICAvLyBQYXJzZXMgYSBub24tc2hvcnRoYW5kIENTUyBwcm9wZXJ0
eQogICAgIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVy
dHlJRCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
KTsKKyAgICBzdGF0aWMgYm9vbCBjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25z
dCBTdHJpbmcmIHN5bnRheCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+
IHBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBzeW50YXgsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBTdHlsZVJl
c29sdmVyJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOworICAgIHN0YXRpYyB2b2lkIGNvbGxl
Y3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZhbHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYgc3lu
dGF4LCBib29sIGlzUm9vdCwgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVzLCBj
b25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogCiBw
cml2YXRlOgotICAgIENTU1Byb3BlcnR5UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2Um
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+Kik7Cisg
ICAgQ1NTUHJvcGVydHlQYXJzZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmLCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4qLCBib29sIGNvbnN1bWVX
aGl0ZXNwYWNlID0gdHJ1ZSk7CiAKICAgICAvLyBGSVhNRTogUmVuYW1lIG9uY2UgdGhlIENTU1Bh
cnNlclZhbHVlLWJhc2VkIHBhcnNlVmFsdWUgaXMgcmVtb3ZlZAogICAgIGJvb2wgcGFyc2VWYWx1
ZVN0YXJ0KENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIGNvbnN1bWVD
U1NXaWRlS2V5d29yZChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAgICAgUmVmUHRy
PENTU1ZhbHVlPiBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQg
PSBDU1NQcm9wZXJ0eUludmFsaWQpOworICAgIGJvb2wgY2FuUGFyc2VUeXBlZEN1c3RvbVByb3Bl
cnR5VmFsdWUoY29uc3QgU3RyaW5nJiBzeW50YXgpOworICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlPiBwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBjb25zdCBTdHlsZVJlc29sdmVyJik7CisgICAgdm9p
ZCBjb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVuZGVuY2llcyhjb25zdCBTdHJp
bmcmIHN5bnRheCwgYm9vbCBpc1Jvb3QsIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mIGRlcGVuZGVu
Y2llcyk7CiAKICAgICBib29sIGluUXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4
dC5tb2RlID09IEhUTUxRdWlya3NNb2RlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAKaW5kZXggODcwODZlMzZhYjgwZDFkNTgzOTZiY2Fh
Zjk0OTEyMzNiZDVkMjIyMS4uMWJlMjNiOWZlYzhmNWVjZGFkNGViODQ0ODUzZjllMDJjYTVhOTIw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5j
cHAKQEAgLTE4OSw4ICsxODksOCBAQCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NT
VmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25WYWx1ZShjb25zdCBBdAogICAgIGlmICh0
eXBlID09IENTU1ZhbHVlSW52YWxpZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYg
KHR5cGUgPT0gQ1NTVmFsdWVJbnRlcm5hbFZhcmlhYmxlVmFsdWUpCi0gICAgICAgIHJldHVybiBD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoVmFyaWFibGVEYXRhKHZhcmlhYmxlTmFt
ZSwgQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUocmFuZ2UsIGhhc1JlZmVyZW5jZXMgfHwgaGFzQXRB
cHBseVJ1bGUpKTsKLSAgICByZXR1cm4gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0
aElEKHZhcmlhYmxlTmFtZSwgdHlwZSk7CisgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlOjpjcmVhdGVVbnJlc29sdmVkKHZhcmlhYmxlTmFtZSwgQ1NTVmFyaWFibGVSZWZlcmVu
Y2VWYWx1ZTo6Y3JlYXRlKHJhbmdlKSk7CisgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFs
dWU6OmNyZWF0ZVVucmVzb2x2ZWQodmFyaWFibGVOYW1lLCB0eXBlKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJv
cGVydHlNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3Bw
CmluZGV4IDkwZmQxMzkzMWI3MDQxZTI5YjlmNjc5YWMzYTFkMTM0OGM2MjBiOTcuLjZjMTA4Yzg4
ODcxNWY2N2ZhOTgxODYwMGFiZGIxNTEwNGZhYWMyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db25zdGFudFByb3BlcnR5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29uc3RhbnRQcm9wZXJ0eU1hcC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDb25zdGFudFBy
b3BlcnR5TWFwOjpzZXRWYWx1ZUZvclByb3BlcnR5KENvbnN0YW50UHJvcGVydHkgcHJvcGVydHks
IFJlZjxDU1MKICAgICAgICAgYnVpbGRWYWx1ZXMoKTsKIAogICAgIGF1dG8mIG5hbWUgPSBuYW1l
Rm9yUHJvcGVydHkocHJvcGVydHkpOwotICAgIG1fdmFsdWVzLT5zZXQobmFtZSwgQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aFZhcmlhYmxlRGF0YShuYW1lLCBXVEZNb3ZlKGRhdGEp
KSk7CisgICAgbV92YWx1ZXMtPnNldChuYW1lLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVh
dGVTeW50YXhBbGwobmFtZSwgV1RGTW92ZShkYXRhKSkpOwogfQogCiB2b2lkIENvbnN0YW50UHJv
cGVydHlNYXA6OmJ1aWxkVmFsdWVzKCkKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgUmVmPENT
U1ZhcmlhYmxlRGF0YT4gdmFyaWFibGVEYXRhRm9yUG9zaXRpdmVQaXhlbExlbmd0aChmbG9hdCBs
ZW5ndGhJblB4KQogCiAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiB0b2tlbnMgeyB0b2tlbiB9
OwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgdG9rZW5SYW5nZSh0b2tlbnMpOwotICAgIHJldHVy
biBDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZSh0b2tlblJhbmdlLCBmYWxzZSk7CisgICAgcmV0dXJu
IENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHRva2VuUmFuZ2UpOwogfQogCiBzdGF0aWMgUmVmPENT
U1ZhcmlhYmxlRGF0YT4gdmFyaWFibGVEYXRhRm9yUG9zaXRpdmVEdXJhdGlvbihTZWNvbmRzIGR1
cmF0aW9uSW5TZWNvbmRzKQpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiB2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZUR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb25J
blNlCiAKICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2VucyB7IHRva2VuIH07CiAgICAg
Q1NTUGFyc2VyVG9rZW5SYW5nZSB0b2tlblJhbmdlKHRva2Vucyk7Ci0gICAgcmV0dXJuIENTU1Zh
cmlhYmxlRGF0YTo6Y3JlYXRlKHRva2VuUmFuZ2UsIGZhbHNlKTsKKyAgICByZXR1cm4gQ1NTVmFy
aWFibGVEYXRhOjpjcmVhdGUodG9rZW5SYW5nZSk7CiB9CiAKIHZvaWQgQ29uc3RhbnRQcm9wZXJ0
eU1hcDo6dXBkYXRlQ29uc3RhbnRzRm9yU2FmZUFyZWFJbnNldHMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggZGI4NWQ3ZDA5M2Y1Mjg0
Y2JlYjgwMmVlODcwMDgwOGUzOTJhNzFlZC4uYzg1MjU4ODUwMjQ3NzBkOWM1YjVkNDkxOWVkNjVi
YzZlYjExOTU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCkBAIC0yMjk5LDg5ICsyMjk5LDYgQEAgYm9vbCBSZW5kZXJTdHlsZTo6aGFzUmVm
ZXJlbmNlRmlsdGVyT25seSgpIGNvbnN0CiAgICAgcmV0dXJuIGZpbHRlck9wZXJhdGlvbnMuc2l6
ZSgpID09IDEgJiYgZmlsdGVyT3BlcmF0aW9ucy5hdCgwKS0+dHlwZSgpID09IEZpbHRlck9wZXJh
dGlvbjo6UkVGRVJFTkNFOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjpjaGVja1ZhcmlhYmxlc0lu
Q3VzdG9tUHJvcGVydGllcyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmIHJl
Z2lzdGVyZWRQcm9wZXJ0aWVzLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0
IFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCi17Ci0gICAgYm9vbCBzaG91bGRVcGRhdGVJ
bmhlcml0ZWQgPSBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWlu
c1ZhcmlhYmxlcyB8fCBtX3JhcmVJbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250
YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllczsKLSAgICBib29sIHNob3VsZFVwZGF0
ZU5vbkluaGVyaXRlZCA9IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMt
PmNvbnRhaW5zVmFyaWFibGVzIHx8IG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmN1c3RvbVByb3Bl
cnRpZXMtPmNvbnRhaW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzOwotICAgIGF1dG8q
IGluaGVyaXRlZFByb3BlcnR5RGF0YSA9IHNob3VsZFVwZGF0ZUluaGVyaXRlZCA/ICZtX3JhcmVJ
bmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkgOiBudWxscHRy
OwotICAgIGF1dG8qIG5vbkluaGVyaXRlZFByb3BlcnR5RGF0YSA9IHNob3VsZFVwZGF0ZU5vbklu
aGVyaXRlZCA/ICZtX3JhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRp
ZXMuYWNjZXNzKCkgOiBudWxscHRyOwotCi0gICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGludmFs
aWRQcm9wZXJ0aWVzOwotCi0gICAgZm9yIChhdXRvKiBjdXN0b21Qcm9wZXJ0eURhdGEgOiB7IGlu
aGVyaXRlZFByb3BlcnR5RGF0YSwgbm9uSW5oZXJpdGVkUHJvcGVydHlEYXRhIH0pIHsKLSAgICAg
ICAgaWYgKCFjdXN0b21Qcm9wZXJ0eURhdGEpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICAvLyBPdXIgZmlyc3QgcGFzcyBjaGVja3MgdGhlIHZhcmlhYmxlcyBmb3IgdmFsaWRpdHkg
YW5kIHJlcGxhY2VzIGFueSBwcm9wZXJ0aWVzIHRoYXQgYmVjYW1lCi0gICAgICAgIC8vIGludmFs
aWQgd2l0aCBlbXB0eSB2YWx1ZXMuCi0gICAgICAgIGF1dG8mIGN1c3RvbVByb3BlcnRpZXMgPSBj
dXN0b21Qcm9wZXJ0eURhdGEtPnZhbHVlczsKLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGN1
c3RvbVByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGlmICghZW50cnkudmFsdWUtPmNvbnRhaW5z
VmFyaWFibGVzKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBIYXNo
U2V0PEF0b21pY1N0cmluZz4gc2VlblByb3BlcnRpZXM7Ci0gICAgICAgICAgICBlbnRyeS52YWx1
ZS0+Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMoZW50cnkua2V5LCAqdGhpcywgc2VlblByb3BlcnRp
ZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gaW52YWxp
ZFZhbHVlID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlSW52YWxpZCgpOwotCi0gICAg
ICAgIC8vIE5vdyBpbnNlcnQgaW52YWxpZCB2YWx1ZXMsIG9yIGRlZmF1bHRzIGlmIHRoZSBwcm9w
ZXJ0eSBpcyByZWdpc3RlcmVkLgotICAgICAgICBpZiAoIWludmFsaWRQcm9wZXJ0aWVzLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IGludmFsaWRQcm9wZXJ0
aWVzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXN0b21Qcm9wZXJ0aWVzLmNvbnRhaW5zKHBy
b3BlcnR5KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgY29uc3QgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KiBw
YXJlbnRQcm9wZXJ0eSA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBwYXJlbnRTdHlsZS0+aW5o
ZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpLmZpbmQocHJvcGVydHkpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoaXRlcmF0b3IgIT0gcGFyZW50U3R5bGUtPmluaGVyaXRlZEN1c3RvbVByb3BlcnRp
ZXMoKS5lbmQoKSAmJiBpdGVyYXRvci5nZXQoKSAmJiBpdGVyYXRvci5nZXQoKS0+dmFsdWUpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRQcm9wZXJ0eSA9ICZpdGVyYXRvci5nZXQoKS0+
dmFsdWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYXV0byogcmVnaXN0
ZXJlZCA9IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldChwcm9wZXJ0eSk7Ci0KLSAgICAgICAgICAg
ICAgICBpZiAocmVnaXN0ZXJlZCAmJiByZWdpc3RlcmVkLT5pbmhlcml0cyAmJiBwYXJlbnRQcm9w
ZXJ0eSkKLSAgICAgICAgICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllcy5zZXQocHJvcGVydHks
IHBhcmVudFByb3BlcnR5LT5jb3B5UmVmKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJl
Z2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGN1c3RvbVByb3BlcnRpZXMuc2V0KHByb3BlcnR5LCByZWdpc3RlcmVkLT5pbml0aWFsVmFs
dWVDb3B5KCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY3Vz
dG9tUHJvcGVydGllcy5zZXQocHJvcGVydHksIGludmFsaWRWYWx1ZS5jb3B5UmVmKCkpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTm93IHRoYXQgYWxsIG9mIHRoZSBw
cm9wZXJ0aWVzIGhhdmUgYmVlbiB0ZXN0ZWQgZm9yIHZhbGlkaXR5IGFuZCByZXBsYWNlZCB3aXRo
Ci0gICAgICAgIC8vIGludmFsaWQgdmFsdWVzIGlmIHRoZXkgZmFpbGVkLCB3ZSBjYW4gcGVyZm9y
bSB2YXJpYWJsZSBzdWJzdGl0dXRpb24gb24gdGhlIHZhbGlkIHZhbHVlcy4KLSAgICAgICAgVmVj
dG9yPFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPj4gcmVzb2x2ZWRWYWx1ZXM7Ci0gICAgICAg
IGZvciAoYXV0byBlbnRyeSA6IGN1c3RvbVByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGlmICgh
ZW50cnkudmFsdWUtPmNvbnRhaW5zVmFyaWFibGVzKCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBlbnRyeS52YWx1ZS0+cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhy
ZWdpc3RlcmVkUHJvcGVydGllcywgcmVzb2x2ZWRWYWx1ZXMsICp0aGlzKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFdpdGggYWxsIHJlc3VsdHMgY29tcHV0ZWQsIHdlIGNhbiBub3cgbXV0YXRl
IG91ciB0YWJsZSB0byBlbGltaW5hdGUgdGhlIHZhcmlhYmxlcyBhbmQKLSAgICAgICAgLy8gaG9s
ZCB0aGUgZmluYWwgdmFsdWVzLiBUaGlzIHdheSB3aGVuIHdlIGluaGVyaXQsIHdlIGRvbid0IGVu
ZCB1cCByZXN1YnN0aXR1dGluZyB2YXJpYWJsZXMsIGV0Yy4KLSAgICAgICAgZm9yIChhdXRvJiBy
ZXNvbHZlZFZhbHVlIDogcmVzb2x2ZWRWYWx1ZXMpCi0gICAgICAgICAgICBjdXN0b21Qcm9wZXJ0
aWVzLnNldChyZXNvbHZlZFZhbHVlLT5uYW1lKCksIHJlc29sdmVkVmFsdWUuY29weVJlZigpKTsK
LQotICAgICAgICAvLyBGaW5hbGx5IHdlIGNhbiByZXNvbHZlIHJlZ2lzdGVyZWQgY3VzdG9tIHBy
b3BlcnRpZXMgdG8gdGhlaXIgdHlwZWQgdmFsdWVzLgotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogY3VzdG9tUHJvcGVydGllcykgewotICAgICAgICAgICAgYXV0byYgbmFtZSA9IGVudHJ5LnZh
bHVlLT5uYW1lKCk7Ci0gICAgICAgICAgICBhdXRvKiByZWdpc3RlcmVkID0gcmVnaXN0ZXJlZFBy
b3BlcnRpZXMuZ2V0KG5hbWUpOwotCi0gICAgICAgICAgICBpZiAoIXJlZ2lzdGVyZWQpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGF1dG8gcHJpbWl0aXZlVmFsID0g
c3R5bGVSZXNvbHZlci5yZXNvbHZlZFZhcmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlDdXN0b20sICpl
bnRyeS52YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbCB8fCAhcHJpbWl0aXZl
VmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZW50cnkudmFsdWUgPSBp
bnZhbGlkVmFsdWUuY29weVJlZigpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGVudHJ5LnZhbHVlLT5zZXRSZXNvbHZlZFR5cGVkVmFsdWUoU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0TGVuZ3RoKHN0eWxlUmVzb2x2ZXIsICpwcmltaXRpdmVWYWwpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGN1c3RvbVByb3BlcnR5RGF0YS0+Y29udGFpbnNWYXJpYWJsZXMgPSBmYWxz
ZTsKLSAgICAgICAgY3VzdG9tUHJvcGVydHlEYXRhLT5jb250YWluc1VucmVzb2x2ZWRSZWdpc3Rl
cmVkUHJvcGVydGllcyA9IGZhbHNlOwotICAgIH0KLX0KLQogZmxvYXQgUmVuZGVyU3R5bGU6Om91
dGxpbmVXaWR0aCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUu
c3R5bGUoKSA9PSBCb3JkZXJTdHlsZTo6Tm9uZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggZGQyNDJlNzZkM2U4MTA5Y2I4OTA3ODU3OWIyYzhh
YjQxYmQ4N2U1MC4uNzA4ZTZiZjAxNDI3Y2UxZjA4MmNkMTVhY2IxYzNlMDZkMTNiODIzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTE4Niw4
ICsxODYsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCYgaW5o
ZXJpdGVkQ3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERh
dGEtPmN1c3RvbVByb3BlcnRpZXMtPnZhbHVlczsgfQogICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5
VmFsdWVNYXAmIG5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBt
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT52YWx1ZXM7IH0KICAgICBj
b25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKiBnZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9t
aWNTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lkIHNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFs
dWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4m
JiB2YWx1ZSwgYm9vbCBpc1JlZ2lzdGVyZWQgPSBmYWxzZSkgeyByZXR1cm4gbV9yYXJlSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3Bl
cnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSksIGlzUmVnaXN0ZXJlZCk7IH0KLSAgICB2b2lk
IHNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSwgYm9vbCBpc1JlZ2lzdGVy
ZWQgPSBmYWxzZSkgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0
b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92
ZSh2YWx1ZSksIGlzUmVnaXN0ZXJlZCk7IH0KKyAgICB2b2lkIHNldEluaGVyaXRlZEN1c3RvbVBy
b3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4mJiB2YWx1ZSkgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5j
dXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RG
TW92ZSh2YWx1ZSkpOyB9CisgICAgdm9pZCBzZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+
JiYgdmFsdWUpIHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9t
UHJvcGVydGllcy5hY2Nlc3MoKS5zZXRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUo
dmFsdWUpKTsgfQogCiAgICAgdm9pZCBzZXRIYXNWaWV3cG9ydFVuaXRzKGJvb2wgdiA9IHRydWUp
IHsgbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNWaWV3cG9ydFVuaXRzID0gdjsgfQogICAgIGJvb2wg
aGFzVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFz
Vmlld3BvcnRVbml0czsgfQpAQCAtNzk1LDggKzc5NSw2IEBAIHB1YmxpYzoKICAgICBBcHBsZVBh
eUJ1dHRvblR5cGUgYXBwbGVQYXlCdXR0b25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QXBwbGVQYXlCdXR0b25UeXBlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBsZVBheUJ1
dHRvblR5cGUpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgY2hlY2tWYXJpYWJsZXNJbkN1c3RvbVBy
b3BlcnRpZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiwgY29uc3QgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBTdHlsZVJlc29sdmVyJik7Ci0KIC8vIGF0dHJp
YnV0ZSBzZXR0ZXIgbWV0aG9kcwogCiAgICAgdm9pZCBzZXREaXNwbGF5KERpc3BsYXlUeXBlIHYp
IHsgbV9ub25Jbmhlcml0ZWRGbGFncy5lZmZlY3RpdmVEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHYpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCmluZGV4IDFiY2RiMjJlOGU5ZDNiYzM5NDExMzA0
ODQyOGRiM2U2ODc4NTgyZGQuLjEzMmU2ZjUyNTYwZTY1Y2FjNTRlNGM1YjUzZmQ3ZDQxMDM1Zjc1
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUN1c3RvbVByb3BlcnR5RGF0YS5oCkBAIC0yMiw2ICsyMiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NWYXJpYWJs
ZVJlZmVyZW5jZVZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNyw5ICszOCw2
IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDdXN0b21Q
cm9wZXJ0eURhdGEmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRhaW5zVmFy
aWFibGVzICE9IG90aGVyLmNvbnRhaW5zVmFyaWFibGVzKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCiAgICAgICAgIGlmICh2YWx1ZXMuc2l6ZSgpICE9IG90aGVyLnZhbHVlcy5zaXplKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU0LDI2ICs1MiwxOCBAQCBwdWJsaWM6
CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90
aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAotICAgIHZvaWQg
c2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZhbHVlLCBib29sIGlzUmVnaXN0ZXJlZCkKKyAgICB2b2lk
IHNldEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS0+
Y29udGFpbnNWYXJpYWJsZXMoKSkKLSAgICAgICAgICAgIGNvbnRhaW5zVmFyaWFibGVzID0gdHJ1
ZTsKLSAgICAgICAgaWYgKGlzUmVnaXN0ZXJlZCkKLSAgICAgICAgICAgIGNvbnRhaW5zVW5yZXNv
bHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzID0gdHJ1ZTsKICAgICAgICAgdmFsdWVzLnNldChuYW1l
LCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgfQogCiAgICAgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCB2
YWx1ZXM7Ci0gICAgYm9vbCBjb250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBj
b250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllcyB7IGZhbHNlIH07CiAKIHByaXZh
dGU6CiAgICAgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgU3R5bGVD
dXN0b21Qcm9wZXJ0eURhdGEoY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90aGVyKQog
ICAgICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCkKICAgICAgICAg
LCB2YWx1ZXMob3RoZXIudmFsdWVzKQotICAgICAgICAsIGNvbnRhaW5zVmFyaWFibGVzKG90aGVy
LmNvbnRhaW5zVmFyaWFibGVzKQotICAgICAgICAsIGNvbnRhaW5zVW5yZXNvbHZlZFJlZ2lzdGVy
ZWRQcm9wZXJ0aWVzKG90aGVyLmNvbnRhaW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVz
KQogICAgIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY4YTBkNWI1MDViZDczZGQ3M2U4OWFkYjNkMThhNTAw
ZDcyOWRmYjQuLmI2N2YzZGY5OWY2MmZmYzBjYzVhYWUwOWU0MzM4YzdjZmZkYTk0OGIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxOC0xMC0yOSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWlj
aGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIEN1c3RvbSBQcm9wZXJ0aWVzIEFQSSBTaG91
bGQgU3VwcG9ydCBzeW50YXg9IioiIGFuZCAiPGxlbmd0aD4iLCBhbmQgaGFuZGxlIGN5Y2xlcyBw
cm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUu
aHRtbDogQWRkZWQuCisKIDIwMTgtMTAtMzEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF1ZGl0OiBzaG93IG1ldGFkYXRhIGZvciBy
ZXN1bHRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiZTU3YTVmMjJhY2Q0NmNj
OTJlZGExMDI0YjE1ZmY4NDZjMjk4MzNlLi5jZGY2MTVmOGY2ZmEwNGJiOWE0OWY1OTM0MmI4M2Y4
NTJlOTAxYzE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxOC0xMC0yOSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+
CisKKyAgICAgICAgQ1NTIEN1c3RvbSBQcm9wZXJ0aWVzIEFQSSBTaG91bGQgU3VwcG9ydCBzeW50
YXg9IioiIGFuZCAiPGxlbmd0aD4iLCBhbmQgaGFuZGxlIGN5Y2xlcyBwcm9wZXJseQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDQyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3lu
dGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJp
dGFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZh
bHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNl
LXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJl
bmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQ6CisKIDIwMTgtMTAtMzEgIFlV
SEFOIFdVICA8eXVoYW5fd3VAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hv
dWxkIGZpcmUgZGF0YWF2YWlsYWJsZSBldmVudCB3aGVuIGFsbCB0cmFja3MgYXJlIGVuZGVkIGFu
ZCBzdG9wKCkgaXMgY2FsbGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXBy
b3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20t
cHJvcGVydGllcy1hcGkvY3Jhc2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZjBmZjVlOTAw
NzFkZTk5ZWYwYWJmODliODc4MDI2YmRkMTBiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDggQEAKK1RoaXMgaXMgdGV4dAorCisKK1BBU1MgRmFsbGJhY2sgaXMgaGFuZGxlZCBjb3Jy
ZWN0bHksIGFuZCB3ZSBkb24ndCBjcmFzaCAKK1BBU1MgU2V0dGluZyB0aGUgaW5saW5lIHN0eWxl
IGlzIGhhbmRsZWQgY29ycmVjdGx5IAorUEFTUyBDU1MucmVnaXN0ZXJQcm9wZXJ0eSAKK1BBU1Mg
U2V0dGluZyB0aGUgaW5saW5lIHN0eWxlIGlzIGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gcmVnaXN0
ZXJlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFw
aS9jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFz
aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmMmNkNzBhMmEzMWRlYWI5OWYwMDMyYzQxZmVhN2E1YzhhYjdm
OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMt
YXBpL2NyYXNoLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVl
c0VuYWJsZWQ9dHJ1ZSBdIC0tPgorPCEtLSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5j
b20vY2hyb21pdW0vc3JjLysvMDFjZTQzMTQwOWUzYTAxOTg1ODY3NzYyNmE5ODNjNTUxNjhkYTZk
Yy90aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvY3VzdG9tLXByb3BlcnRpZXMvcmVnaXN0
ZXItcHJvcGVydHkuaHRtbCAtLT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3Rlc3QxIHsKKyAgICBmb250LXNpemU6
IHZhcigtLWZvbywgMzBweCk7CisgICAgLS1mb286IHZhcigtLWJhciwgMjBweCk7CisgICAgLS1i
YXI6IHZhcigtLWJheiwgdmFyKC0tZm9vKSk7CisgIH0KKzwvc3R5bGU+Cis8ZGl2PgorICA8aDIg
aWQ9dGVzdDE+VGhpcyBpcyB0ZXh0PC9oMj4KKzwvZGl2PgorPHNjcmlwdD4KK3ZhciBjb21wdXRl
ZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0MSk7Cit2YXIgaW5saW5lU3R5bGUgPSB0ZXN0
MS5zdHlsZTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0
eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcnKTsKKyAgYXNzZXJ0X2VxdWFs
cyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmFyJyksICcnKTsKKyAgYXNzZXJ0
X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBw
eCcpOworfSwgIkZhbGxiYWNrIGlzIGhhbmRsZWQgY29ycmVjdGx5LCBhbmQgd2UgZG9uJ3QgY3Jh
c2giKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0t
YmF6JywgJyAgIDQwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYmF6JyksICcgNDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1mb28nKSwgJycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXInKSwgJycpOworICBhc3NlcnRfZXF1YWxz
KGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJyA0MHB4Jyk7CisgIGFz
c2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwg
JzMwcHgnKTsKKyAgaW5saW5lU3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tYmF6Jyk7CisgIGFzc2Vy
dF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnJyk7Cisg
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZvbycpLCAn
Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJh
cicpLCAnJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCdmb250LXNpemUnKSwgJzMwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcnKTsKK30sICJTZXR0aW5nIHRoZSBpbmxpbmUgc3R5
bGUgaXMgaGFuZGxlZCBjb3JyZWN0bHkiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgQ1NTLnJl
Z2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWZvbycsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlh
bFZhbHVlOiAnMjAwcHgnLCBpbmhlcml0czogdHJ1ZX0pOworICBDU1MucmVnaXN0ZXJQcm9wZXJ0
eSh7bmFtZTogJy0tYmFyJywgc3ludGF4OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcyMDBw
eCcsIGluaGVyaXRzOiB0cnVlfSk7CisgIENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1i
YXonLCBzeW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzIwMHB4JywgaW5oZXJpdHM6
IHRydWV9KTsKK30sICJDU1MucmVnaXN0ZXJQcm9wZXJ0eSIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iYXonLCAnICAgNDBweCcpOworICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJzQwcHgn
KTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZm9v
JyksICcyMDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1iYXInKSwgJzIwMHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnNDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyksICcyMDBweCcpOworICBpbmxp
bmVTdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1iYXonKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRl
ZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcyMDBweCcpOworICBhc3NlcnRfZXF1
YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1mb28nKSwgJzIwMHB4Jyk7Cisg
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAn
MjAwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
J2ZvbnQtc2l6ZScpLCAnMjAwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcyMDBweCcpOworfSwgIlNldHRpbmcgdGhlIGlubGlu
ZSBzdHlsZSBpcyBoYW5kbGVkIGNvcnJlY3RseSB3aGVuIHJlZ2lzdGVyZWQiKTsKKworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5
Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBp
L2N5Y2xlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q0ODZlYjIwYTY5YjlhNTk5NTEwOWJl
MDhiYjM0NWU0NGY5NjgwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1jdXN0
b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACit0
ZXN0CisKK3Rlc3QKKwordGVzdAorCit0ZXN0CisKK3Rlc3QKKworCitQQVNTIFJlZ2lzdHJhdGlv
biBpcyBzdWNjZXNzZnVsIAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVu
dCAxIAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAyIAorUEFTUyBK
UyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAzIAorUEFTUyBKUyBBdHRyaWJ1dGVz
IGFyZSB2YWxpZCBmb3IgZWxlbWVudCA0IAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBm
b3IgZWxlbWVudCA1IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3Bl
cnRpZXMtYXBpL2N5Y2xlcy5odG1sIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVz
LWFwaS9jeWNsZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWMyNGM4ODQ0ODliMzg5OTJjNWQ2MmFkNzU2
MmVmZGQwMmJjOTJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1w
cm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbApAQCAtMCwwICsxLDEzMCBAQAorPCFET0NUWVBFIGh0
bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTQ3VzdG9tUHJvcGVy
dGllc0FuZFZhbHVlc0VuYWJsZWQ9dHJ1ZSBdIC0tPgorPCEtLSBodHRwczovL2Nocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjLysvMDFjZTQzMTQwOWUzYTAxOTg1ODY3NzYyNmE5
ODNjNTUxNjhkYTZkYy90aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvY3VzdG9tLXByb3Bl
cnRpZXMvcmVnaXN0ZXItcHJvcGVydHkuaHRtbCAtLT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhcmVudDEgewor
ICAgIHdpZHRoOiA1MDBweDsKKyAgICBiYWNrZ3JvdW5kOiBibHVlOworICB9CisgICNjaGlsZDEg
eworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIGZvbnQtc2l6ZTogMTBweDsKKyAgICAtLWE6
IDEwZW07CisgICAgd2lkdGg6IHZhcigtLWEpOworICB9CisKKyAgI3BhcmVudDIgeworICAgIHdp
ZHRoOiA1MDBweDsKKyAgICBiYWNrZ3JvdW5kOiBibHVlOworICAgIC0tYTogMTBlbTsKKyAgICBm
b250LXNpemU6IGNhbGMoIHZhcigtLWEpICsgLTE1MHB4KTsKKyAgfQorICAjY2hpbGQyIHsKKyAg
ICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICB3aWR0aDogdmFyKC0tYSk7CisgIH0KKworICAjcGFy
ZW50MyB7CisgICAgd2lkdGg6IDUwMHB4OworICAgIGJhY2tncm91bmQ6IGJsdWU7CisgICAgLS1i
OiAxMGVtOworICAgIGZvbnQtc2l6ZTogY2FsYyggdmFyKC0tYikgKyAtMTUwcHgpOworICB9Cisg
ICNjaGlsZDMgeworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIHdpZHRoOiB2YXIoLS1iKTsK
KyAgfQorCisgICNwYXJlbnQ0IHsKKyAgICB3aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3VuZDog
Ymx1ZTsKKyAgICAtLWI6IDEwZW07CisgICAgZm9udC1zaXplOiBjYWxjKCB2YXIoLS1iKSArIC0x
NTBweCk7CisgIH0KKyAgI2NoaWxkNCB7CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgLS1h
OiB2YXIoLS1iKTsKKyAgICBmb250LXNpemU6IHZhcigtLWEpOworICAgIHdpZHRoOiB2YXIoLS1h
KTsKKyAgfQorCisgICNwYXJlbnQ1IHsKKyAgICB3aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3Vu
ZDogYmx1ZTsKKyAgICAtLWI6IDVlbTsKKyAgICBmb250LXNpemU6IGNhbGMoIHZhcigtLWIpICsg
LTcwcHgpOworICB9CisgICNjaGlsZDUgeworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIC0t
YzogdmFyKC0tYik7CisgICAgZm9udC1zaXplOiB2YXIoLS1jKTsKKyAgICB3aWR0aDogdmFyKC0t
Yyk7CisgIH0KKzwvc3R5bGU+Cis8ZGl2PgorICA8ZGl2IGlkPSJwYXJlbnQxIj48ZGl2IGlkPSJj
aGlsZDEiPjxwPnRlc3Q8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InBhcmVudDIiPjxkaXYg
aWQ9ImNoaWxkMiI+PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icGFyZW50MyI+
PGRpdiBpZD0iY2hpbGQzIj48cD50ZXN0PC9wPjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJwYXJl
bnQ0Ij48ZGl2IGlkPSJjaGlsZDQiPjxwPnRlc3Q8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9
InBhcmVudDUiPjxkaXYgaWQ9ImNoaWxkNSI+PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KKzwvZGl2
PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdF9wcm9wKGlkLCBwcm9wLCBleHBlY3RlZCkgewor
ICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGlkKSkuZ2V0UHJvcGVydHlWYWx1ZShwcm9wKS50cmltKCksIGV4cGVjdGVkKTsKK30K
KwordGVzdChmdW5jdGlvbigpIHsKKyAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoeworICAgIG5hbWU6
ICctLWEnLAorICAgIHN5bnRheDogJzxsZW5ndGg+JywKKyAgICBpbmhlcml0czogdHJ1ZSwKKyAg
ICBpbml0aWFsVmFsdWU6ICcyMDBweCcKKyAgfSkKK30sICJSZWdpc3RyYXRpb24gaXMgc3VjY2Vz
c2Z1bCIpOwordGVzdChmdW5jdGlvbigpIHsKKyAgdGVzdF9wcm9wKCdjaGlsZDEnLCAnd2lkdGgn
LCAnMTAwcHgnKTsKKyAgdGVzdF9wcm9wKCdjaGlsZDEnLCAnLS1hJywgJzEwMHB4Jyk7CisgIHRl
c3RfcHJvcCgnY2hpbGQxJywgJy0tYicsICcnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQxJywgJy0t
YScsICcyMDBweCcpOworICB0ZXN0X3Byb3AoJ3BhcmVudDEnLCAnLS1iJywgJycpOworfSwgIkpT
IEF0dHJpYnV0ZXMgYXJlIHZhbGlkIGZvciBlbGVtZW50IDEiKTsKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgIHRlc3RfcHJvcCgnY2hpbGQyJywgJ3dpZHRoJywgJzE2MHB4Jyk7CisgIHRlc3RfcHJvcCgn
Y2hpbGQyJywgJy0tYScsICcxNjBweCcpOworICB0ZXN0X3Byb3AoJ2NoaWxkMicsICctLWInLCAn
Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQyJywgJ2ZvbnQtc2l6ZScsICcxNnB4Jyk7CisgIHRlc3Rf
cHJvcCgncGFyZW50MicsICctLWEnLCAnMTYwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQyJywg
Jy0tYicsICcnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQyJywgJ2ZvbnQtc2l6ZScsICcxNnB4Jyk7
Cit9LCAiSlMgQXR0cmlidXRlcyBhcmUgdmFsaWQgZm9yIGVsZW1lbnQgMiIpOwordGVzdChmdW5j
dGlvbigpIHsKKyAgdGVzdF9wcm9wKCdjaGlsZDMnLCAnd2lkdGgnLCAnMTAwcHgnKTsKKyAgdGVz
dF9wcm9wKCdjaGlsZDMnLCAnLS1hJywgJzIwMHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQzJywg
Jy0tYicsICcxMGVtJyk7CisgIHRlc3RfcHJvcCgnY2hpbGQzJywgJ2ZvbnQtc2l6ZScsICcxMHB4
Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50MycsICctLWEnLCAnMjAwcHgnKTsKKyAgdGVzdF9wcm9w
KCdwYXJlbnQzJywgJy0tYicsICcxMGVtJyk7CisgIHRlc3RfcHJvcCgncGFyZW50MycsICdmb250
LXNpemUnLCAnMTBweCcpOworfSwgIkpTIEF0dHJpYnV0ZXMgYXJlIHZhbGlkIGZvciBlbGVtZW50
IDMiKTsKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHRlc3RfcHJvcCgnY2hpbGQ0JywgJ3dpZHRoJywg
JzEwMHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQ0JywgJy0tYScsICcxMDBweCcpOworICB0ZXN0
X3Byb3AoJ2NoaWxkNCcsICctLWInLCAnMTBlbScpOworICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICdm
b250LXNpemUnLCAnMTBweCcpOworICB0ZXN0X3Byb3AoJ3BhcmVudDQnLCAnLS1hJywgJzIwMHB4
Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50NCcsICctLWInLCAnMTBlbScpOworICB0ZXN0X3Byb3Ao
J3BhcmVudDQnLCAnZm9udC1zaXplJywgJzEwcHgnKTsKK30sICJKUyBBdHRyaWJ1dGVzIGFyZSB2
YWxpZCBmb3IgZWxlbWVudCA0Iik7Cit0ZXN0KGZ1bmN0aW9uKCkgeworICB0ZXN0X3Byb3AoJ2No
aWxkNScsICd3aWR0aCcsICcyNTBweCcpOworICB0ZXN0X3Byb3AoJ2NoaWxkNScsICctLWMnLCAn
NWVtJyk7CisgIHRlc3RfcHJvcCgnY2hpbGQ1JywgJy0tYicsICc1ZW0nKTsKKyAgdGVzdF9wcm9w
KCdjaGlsZDUnLCAnZm9udC1zaXplJywgJzUwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQ1Jywg
Jy0tYScsICcyMDBweCcpOworICB0ZXN0X3Byb3AoJ3BhcmVudDUnLCAnLS1iJywgJzVlbScpOwor
ICB0ZXN0X3Byb3AoJ3BhcmVudDUnLCAnZm9udC1zaXplJywgJzEwcHgnKTsKK30sICJKUyBBdHRy
aWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA1Iik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNTY4MTYyNjUyOWZiZjEwYjFjNTBmZjAwYzM3MTExYTkwZWM2YzFi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFw
aS9pbmxpbmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK3Rlc3QKKworCitQQVNTIENT
U09NIHNldHRlcnMgZnVuY3Rpb24gYXMgZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0
aWVzIAorUEFTUyBDU1MucmVnaXN0ZXJQcm9wZXJ0eSAKK1BBU1MgRm9ybWVybHkgdmFsaWQgdmFs
dWVzIGFyZSBzdGlsbCByZWFkYWJsZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRl
ZCBhcyB0aGUgdW5zZXQgdmFsdWUgCitQQVNTIFZhbHVlcyBub3QgbWF0Y2hpbmcgdGhlIHJlZ2lz
dGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQgCitQQVNTIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9t
IGlubGluZSBzdHlsZXMgCitQQVNTIFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NP
TSAKK1BBU1MgVmFsaWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyAKK1BBU1Mg
VmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgCitQQVNTIFZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdp
dGhvdXQgdmFsaWRhdGlvbiAKK1BBU1MgVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2
YWxpZGF0aW9uLCBldmVuIHdoZW4gaXQgaXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlIAor
UEFTUyBWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlkYXRpb24sIGV2ZW4gd2hl
biBpdCBpcyBvYnZpb3VzIHRoZXkgd2lsbCBub3QgcGFyc2UgKHR5cGVkKSAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbCBiL0xh
eW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTFiYTdmZWJjMDYzOTQ0NjViY2NmZWQ4NGNlYTlmZTIzMTU0ZWIwNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWwK
QEAgLTAsMCArMSwxMjAgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgZXhwZXJpbWVudGFsOkNTU0N1c3RvbVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkPXRydWUg
XSAtLT4KKzwhLS0gaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny
Yy8rLzAxY2U0MzE0MDllM2EwMTk4NTg2Nzc2MjZhOTgzYzU1MTY4ZGE2ZGMvdGhpcmRfcGFydHkv
V2ViS2l0L0xheW91dFRlc3RzL2N1c3RvbS1wcm9wZXJ0aWVzL3JlZ2lzdGVyLXByb3BlcnR5Lmh0
bWwgLS0+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorCis8c3R5bGU+CisgICN0ZXN0MSB7CisgICAgLS1hOiAxMGVtOworICAgIC0tYjogMTBl
bTsKKyAgfQorPC9zdHlsZT4KKzxkaXY+CisgIDxkaXYgaWQ9dGVzdDE+PHA+dGVzdDwvcD48L2Rp
dj4KKzwvZGl2PgorPHNjcmlwdD4KKwordmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0
eWxlKHRlc3QxKTsKK3ZhciBpbmxpbmVTdHlsZSA9IHRlc3QxLnN0eWxlOwordmFyIHNoZWV0U3R5
bGUgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgLy8gTm90aGluZyByZWdpc3RlcmVkIHlldCwgd2hhdGV2ZXIgeW91IHNw
ZWNpZnkgd29ya3MKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFs
dWUoJy0tYScpLCAnIDEwZW0nKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoJy0tYicpLCAnIDEwZW0nKTsKKworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0
eSgnLS1hJywgJ2hlbGxvJyk7CisgIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnYm9u
am91cicpOworCisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1hJyksICdoZWxsbycpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5
VmFsdWUoJy0tYicpLCAnYm9uam91cicpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1
dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7Cit9LCAiQ1NTT00g
c2V0dGVycyBmdW5jdGlvbiBhcyBleHBlY3RlZCBmb3IgdW5yZWdpc3RlcmVkIHByb3BlcnRpZXMi
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICct
LWEnLCBzeW50YXg6ICc8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTogJzBweCcsIGluaGVyaXRzOiBm
YWxzZX0pOworICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tcmVnaXN0ZXJlZCcsIHN5
bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnMHB4JywgaW5oZXJpdHM6IGZhbHNlfSk7
Cit9LCAiQ1NTLnJlZ2lzdGVyUHJvcGVydHkiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNz
ZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2hlbGxvJyk7
CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdi
b25qb3VyJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWEnKSwgJzBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7Cit9LCAiRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFy
ZSBzdGlsbCByZWFkYWJsZSBmcm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0
aGUgdW5zZXQgdmFsdWUiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0
UHJvcGVydHkoJy0tYScsICdoaScpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywg
J2hpJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1h
JyksICdoZWxsbycpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFs
dWUoJy0tYicpLCAnaGknKTsKK30sICJWYWx1ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVk
IHR5cGUgY2FuJ3QgYmUgc2V0Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIGlubGluZVN0eWxl
LnJlbW92ZVByb3BlcnR5KCctLWEnKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYics
ICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEn
KSwgJycpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YicpLCAnJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCctLWEnKSwgJzE2MHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCctLWInKSwgJyAxMGVtJyk7Cit9LCAiVmFsdWVzIGNhbiBiZSByZW1vdmVkIGZy
b20gaW5saW5lIHN0eWxlcyIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBzaGVldFN0eWxlLnNl
dFByb3BlcnR5KCctLWEnLCAnYmFuYW5hJyk7IC8vIEludmFsaWQsIG5vIGNoYW5nZQorICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcxNjBweCcp
OworICBzaGVldFN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnMjBweCcpOworICBhc3NlcnRfZXF1
YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcyMHB4Jyk7CisgIHNo
ZWV0U3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICdpbml0aWFsJyk7CisgIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOworfSwgIlN0eWxl
c2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJzMwZW0nKTsKKyAgaW5saW5lU3R5bGUu
c2V0UHJvcGVydHkoJy0tYicsICcyMGVtJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICczMGVtJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5l
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICcyMGVtJyk7CisgIGFzc2VydF9lcXVhbHMo
Y29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzQ4MHB4Jyk7CisgIGFzc2Vy
dF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJzIwZW0nKTsK
KyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICdpbmhlcml0Jyk7CisgIGFzc2VydF9l
cXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdpbmhlcml0Jyk7Cisg
IGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBw
eCcpOworfSwgIlZhbGlkIHZhbHVlcyBjYW4gYmUgc2V0IG9uIGlubGluZSBzdHlsZXMiKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcgMjBw
eCcpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tYikgKyAx
MHB4KScpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YicpLCAnIDIwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWEnKSwgJ2NhbGModmFyKC0tYikgKyAxMHB4KScpOworICBhc3NlcnRfZXF1YWxzKGNv
bXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICcgMjBweCcpOworICBhc3NlcnRf
ZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICczMHB4Jyk7Cit9
LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5s
aW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICdoZWxsbycpOworICBpbmxpbmVTdHlsZS5zZXRQ
cm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tYikgKyAxNXB4KScpOworICBhc3NlcnRfZXF1YWxz
KGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0
X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2NhbGModmFyKC0t
YikgKyAxNXB4KScpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1iJyksICdoZWxsbycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1hJyksICcwcHgnKTsKK30sICJWYXIgdmFsdWVzIGFyZSBhY2NlcHRl
ZCB3aXRob3V0IHZhbGlkYXRpb24iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5
bGUuc2V0UHJvcGVydHkoJy0tYicsICdoZWxsbycpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0
eSgnLS1hJywgJ2NhbGModmFyKC0tYikgMTVweCknKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7CisgIGFzc2VydF9lcXVhbHMo
aW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLWIpIDE1cHgp
Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWIn
KSwgJ2hlbGxvJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCctLWEnKSwgJzBweCcpOworfSwgIlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQg
dmFsaWRhdGlvbiwgZXZlbiB3aGVuIGl0IGlzIG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywg
J2hlbGxvJyk7CisgIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnY2FsYyh2YXIoLS1y
ZWdpc3RlcmVkKSAxNXB4KScpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2NhbGModmFyKC0tcmVnaXN0ZXJlZCkgMTVweCknKTsK
KyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAn
aGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tYScpLCAnMHB4Jyk7Cit9LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxp
ZGF0aW9uLCBldmVuIHdoZW4gaXQgaXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlICh0eXBl
ZCkiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVy
LXByb3BlcnR5LXN5bnRheC1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkv
cmVnaXN0ZXItcHJvcGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IGU5ZTJm
ZTczOGFiM2EyZGJkYWZkOTEwYjY0NjYxZDJhZGQ4M2UwM2QuLjJlYTc4ZTI5ODA2MDY4ZTViM2Mz
ZjZlYzc5ZjZiZjlhOGE2YjE4Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0
ZXItcHJvcGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVl
cy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0x
LDUgKzEsNSBAQAogCi1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQg
VGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50
YXguCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgCiBGQUlMIHN5
bnRheDonICogJywgaW5pdGlhbFZhbHVlOidiJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2
YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIFBBU1Mgc3ludGF4Oic8
bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonMnB4JyBpcyB2YWxpZCAKIEZBSUwgc3ludGF4OicgPG51
bWJlcj4nLCBpbml0aWFsVmFsdWU6JzUnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVl
IGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgpAQCAtOSwxMSArOSwxMSBAQCBG
QUlMIHN5bnRheDonIDxsZW5ndGg+KyB8IDxwZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonMnB4
IDhweCcgaXMgdmFsaWQgVGhlIGdpdgogUEFTUyBzeW50YXg6JzxsZW5ndGg+fDxwZXJjZW50YWdl
Pnw8bGVuZ3RoLXBlcmNlbnRhZ2U+JywgaW5pdGlhbFZhbHVlOicycHgnIGlzIHZhbGlkIAogRkFJ
TCBzeW50YXg6Jzxjb2xvcj4gfCA8aW1hZ2U+IHwgPHVybD4gfCA8aW50ZWdlcj4gfCA8YW5nbGU+
JywgaW5pdGlhbFZhbHVlOidyZWQnIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRv
ZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBzeW50YXg6Jzx0aW1lPiB8
IDxyZXNvbHV0aW9uPiB8IDx0cmFuc2Zvcm0tbGlzdD4gfCA8Y3VzdG9tLWlkZW50PicsIGluaXRp
YWxWYWx1ZToncmVkJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBw
YXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVl
Oic6PiBoZWxsbycgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFy
c2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCi1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTon
KFsgYnJhY2tldHMgXSkgeyB5YXkgKD8/KX0nIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZh
bHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgotRkFJTCBzeW50YXg6Jyon
LCBpbml0aWFsVmFsdWU6J3llcCAndGhpcyBpcyB2YWxpZCB0b28nJyBpcyB2YWxpZCBUaGUgZ2l2
ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZB
SUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bm1hdGNoZWQgb3BlbmluZyBicmFja2V0IGlz
IHZhbGlkIDooJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJz
ZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOici
JyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhl
IGdpdmVuIHN5bnRheC4KK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycg
aXMgdmFsaWQgCitQQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkg
eyB5YXkgKD8/KX0nIGlzIHZhbGlkIAorUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3ll
cCAndGhpcyBpcyB2YWxpZCB0b28nJyBpcyB2YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlh
bFZhbHVlOid1bm1hdGNoZWQgb3BlbmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCAK
K1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4
Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonMCcgaXMgdmFsaWQgCiBQQVNTIHN5bnRheDonPGxl
bmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwcHggLyo6KSovJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4
Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonIGNhbGMoLTJweCknIGlzIHZhbGlkIApAQCAtNjMs
NyArNjMsNyBAQCBiYW5hbmFccgogRkFJTCBzeW50YXg6J2JhDAogfAluYVxyfG55YScsIGluaXRp
YWxWYWx1ZTonbnlhJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBw
YXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgc3ludGF4OidudWxsJywgaW5pdGlhbFZh
bHVlOidudWxsJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJz
ZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZBSUwgc3ludGF4Oid1bmRlZmluZWQnLCBpbml0aWFs
VmFsdWU6J3VuZGVmaW5lZCcgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBu
b3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitQQVNTIHN5bnRheDondW5kZWZpbmVkJywg
aW5pdGlhbFZhbHVlOid1bmRlZmluZWQnIGlzIHZhbGlkIAogRkFJTCBzeW50YXg6J2FycmF5Jywg
aW5pdGlhbFZhbHVlOidhcnJheScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9l
cyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCiBQQVNTIHN5bnRheDonYmFuYW5hLG55
YScsIGluaXRpYWxWYWx1ZTonYmFuYW5hJyBpcyBpbnZhbGlkIAogUEFTUyBzeW50YXg6J2JhbmFu
XDYxJywgaW5pdGlhbFZhbHVlOidiYW5hbmEnIGlzIGludmFsaWQgCkBAIC04NSwzNiArODUsMzYg
QEAgUEFTUyBzeW50YXg6J3Vuc2V0JywgaW5pdGlhbFZhbHVlOid1bnNldCcgaXMgaW52YWxpZAog
RkFJTCBzeW50YXg6JzxsZW5ndGg+fGluaXRpYWwnLCBpbml0aWFsVmFsdWU6JzEwcHgnIGlzIGlu
dmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5
KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUs
IGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBGQUlMIHN5bnRheDonPGxlbmd0aD58
SU5IRVJJVCcsIGluaXRpYWxWYWx1ZTonMTBweCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBm
dW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDog
c3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRp
ZCBub3QgdGhyb3cKIEZBSUwgc3ludGF4Oic8cGVyY2VudGFnZT58dW5zRXQnLCBpbml0aWFsVmFs
dWU6JzIlJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVn
aXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTog
aW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotUEFTUyBzeW50
YXg6JyonLCBpbml0aWFsVmFsdWU6J2luaXRpYWwnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDon
KicsIGluaXRpYWxWYWx1ZTonaW5oZXJpdCcgaXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywg
aW5pdGlhbFZhbHVlOid1bnNldCcgaXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlh
bFZhbHVlOidyZXZlcnQnIGlzIGludmFsaWQgCitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1
ZTonaW5pdGlhbCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NT
LnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFs
dWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwg
c3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidpbmhlcml0JyBpcyBpbnZhbGlkIGFzc2VydF90aHJv
d3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3lu
dGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9
KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Vuc2V0JyBp
cyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9w
ZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZh
bHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBp
bml0aWFsVmFsdWU6J3JldmVydCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAi
KCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBp
bml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhy
b3cKIFBBU1Mgc3ludGF4Oic8Y3VzdG9tLWlkZW50PicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcg
aXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8Y3VzdG9tLWlkZW50PisnLCBpbml0aWFsVmFsdWU6
J2ZvbyBpbmhlcml0IGJhcicgaXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZh
bHVlOicpJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbKV0n
IGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTond2hlZSEnIGlzIGlu
dmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIgotJyBpcyBpbnZhbGlkIAot
UEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3VybChtb28gJycpJyBpcyBpbnZhbGlkIAot
UEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3NlbWk7Y29sb24nIGlzIGludmFsaWQgCi1Q
QVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKGludmFsaWQgdmFyIHJlZiknIGlzIGlu
dmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKC0tZm9vKScgaXMgaW52
YWxpZCAKK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOicpJyBpcyBpbnZhbGlkIGFzc2Vy
dF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFt
ZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czog
ZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6Jyhb
KV0nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3Rl
clByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0
aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRheDon
KicsIGluaXRpYWxWYWx1ZTond2hlZSEnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rp
b24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRh
eCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90
IHRocm93CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonIgorJyBpcyBpbnZhbGlkIGFz
c2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTog
bmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0
czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6
J3VybChtb28gJycpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBD
U1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxW
YWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJ
TCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3NlbWk7Y29sb24nIGlzIGludmFsaWQgYXNzZXJ0
X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1l
LCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBm
YWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFy
KGludmFsaWQgdmFyIHJlZiknIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigp
ID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5p
dGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93
CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKC0tZm9vKScgaXMgaW52YWxpZCBh
c3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6
IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJp
dHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4OidiYW5hbmEnLCBpbml0aWFs
VmFsdWU6J2JBbkFuQScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRp
YWxWYWx1ZTondmFyKC0tbW9vKScgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPics
IGluaXRpYWxWYWx1ZTonMTAnIGlzIGludmFsaWQgCiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBp
bml0aWFsVmFsdWU6JzEwJScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkg
PT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0
aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cK
IEZBSUwgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg1cHggKyAxMCUpJyBp
cyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9w
ZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZh
bHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwogUEFTUyBzeW50YXg6JzxsZW5n
dGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDVweCAqIDNweCAvIDZweCknIGlzIGludmFsaWQgCi1Q
QVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgCitG
QUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgYXNz
ZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBu
YW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRz
OiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFs
VmFsdWU6JzEwdm1pbicgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4g
Q1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFs
VmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLVBB
U1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBp
bnZhbGlkIAotUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDRweCAr
IGNhbGMoOCAqIDJlbSkpJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6JzxsZW5ndGg+KycsIGlu
aXRpYWxWYWx1ZTonY2FsYygyZXggKyAxNnB4KScgaXMgaW52YWxpZCAKK0ZBSUwgc3ludGF4Oic8
bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBpbnZhbGlkIGFzc2Vy
dF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFt
ZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czog
ZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZh
bHVlOidjYWxjKDRweCArIGNhbGMoOCAqIDJlbSkpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6
IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4
OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIg
ZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JzxsZW5ndGg+KycsIGluaXRpYWxWYWx1ZTonY2Fs
YygyZXggKyAxNnB4KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4g
Q1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFs
VmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBB
U1Mgc3ludGF4Oic8bGVuZ3RoPisnLCBpbml0aWFsVmFsdWU6JzEwcHggY2FsYygyMHB4ICsgNHJl
bSknIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4rJywg
aW5pdGlhbFZhbHVlOidjYWxjKDEwMHZoIC0gMTBweCkgMzBweCcgaXMgaW52YWxpZCAKIFBBU1Mg
c3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonMTBweDsnIGlzIGludmFsaWQgCi1QQVNT
IHN5bnRheDonPGxlbmd0aC1wZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonY2FsYygycHggKyAx
MCUgKyA3ZXgpJyBpcyBpbnZhbGlkIAorRkFJTCBzeW50YXg6JzxsZW5ndGgtcGVyY2VudGFnZT4n
LCBpbml0aWFsVmFsdWU6J2NhbGMoMnB4ICsgMTAlICsgN2V4KScgaXMgaW52YWxpZCBhc3NlcnRf
dGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUs
IHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZh
bHNlfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwgc3ludGF4Oic8cGVyY2VudGFnZT4nLCBpbml0aWFs
VmFsdWU6JzAnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5y
ZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVl
OiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBQQVNTIHN5
bnRheDonPGludGVnZXI+JywgaW5pdGlhbFZhbHVlOicxLjAnIGlzIGludmFsaWQgCiBQQVNTIHN5
bnRheDonPGludGVnZXI+JywgaW5pdGlhbFZhbHVlOicxZTAnIGlzIGludmFsaWQgCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
cHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhl
cml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggZmMyN2IwZGYyOTk1YTdiN2Y0ZWEwZDc3NWMwZDdi
NzUxZjFlZDEwYi4uNTY1NGU4MmM2YTgyYTRjMmUyOWNiMWYzNTYwNDEyMjVkMjExZTIzYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFu
Y2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0
aWVzLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApAQCAtMiw2ICsyLDYgQEAKIFBBU1MgUmVnaXN0
ZXJlZCBwcm9wZXJ0aWVzIGFyZSBjb3JyZWN0bHkgaW5oZXJpdGVkIChvciBub3QpIGRlcGVuZGlu
ZyBvbiB0aGUgaW5oZXJpdHMgZmxhZy4gCiBQQVNTIEV4cGxpY2l0bHkgaW5oZXJpdGluZyBmcm9t
IGEgcGFyZW50IHdpdGggYW4gaW52YWxpZCB2YWx1ZSByZXN1bHRzIGluIGluaXRpYWwgdmFsdWUu
IAogUEFTUyBFeHBsaWNpdGx5IGluaGVyaXRpbmcgZnJvbSBhIHBhcmVudCB3aXRoIG5vIHZhbHVl
IHJlc3VsdHMgaW4gaW5pdGlhbCB2YWx1ZS4gCi1GQUlMIFJlZmVyZW5jZSB0byB1bmRlZmluZWQg
dmFyaWFibGUgcmVzdWx0cyBpbiBpbmhlcml0ZWQgdmFsdWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIjQycHgiIGJ1dCBnb3QgIjBweCIKLUZBSUwgUmVmZXJlbmNlIHRvIHN5bnRheC1pbmNvbXBh
dGlibGUgdmFyaWFibGUgcmVzdWx0cyBpbiBpbmhlcml0ZWQgdmFsdWUgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgIjQycHgiIGJ1dCBnb3QgIjBweCIKK1BBU1MgUmVmZXJlbmNlIHRvIHVuZGVmaW5l
ZCB2YXJpYWJsZSByZXN1bHRzIGluIGluaGVyaXRlZCB2YWx1ZSAKK1BBU1MgUmVmZXJlbmNlIHRv
IHN5bnRheC1pbmNvbXBhdGlibGUgdmFyaWFibGUgcmVzdWx0cyBpbiBpbmhlcml0ZWQgdmFsdWUg
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3Nv
bS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nz
b20tZXhwZWN0ZWQudHh0CmluZGV4IDBkNTU2MWY0OGU1NjdlMzYyNzkyNmE0MTFhNzVlMGVjYjRi
MDY4NTUuLmVmY2M1YzJlY2Y4ZWY1YThlNDJmODJkZmM2M2U0ZmIxODJhNDc5ZWYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1w
cm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVj
dGVkLnR4dApAQCAtMiw4ICsyLDggQEAKIFBBU1MgQ1NTT00gc2V0dGVycyBmdW5jdGlvbiBhcyBl
eHBlY3RlZCBmb3IgdW5yZWdpc3RlcmVkIHByb3BlcnRpZXMgCiBGQUlMIENTUy5yZWdpc3RlclBy
b3BlcnR5IFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2
ZW4gc3ludGF4LgogRkFJTCBGb3JtZXJseSB2YWxpZCB2YWx1ZXMgYXJlIHN0aWxsIHJlYWRhYmxl
IGZyb20gaW5saW5lIHN0eWxlcyBidXQgYXJlIGNvbXB1dGVkIGFzIHRoZSB1bnNldCB2YWx1ZSBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYmx1ZSIgYnV0IGdvdCAiaGVsbG8iCi1GQUlMIFZhbHVl
cyBub3QgbWF0Y2hpbmcgdGhlIHJlZ2lzdGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgIjUiIGJ1dCBnb3QgImhpIgorRkFJTCBWYWx1ZXMgbm90IG1hdGNoaW5n
IHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3QgYmUgc2V0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJoZWxsbyIgYnV0IGdvdCAiMjAiCiBGQUlMIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlu
bGluZSBzdHlsZXMgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInJlZCIgYnV0IGdvdCAiIHJlZCIK
LUZBSUwgU3R5bGVzaGVldHMgY2FuIGJlIG1vZGlmaWVkIGJ5IENTU09NIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICIxMHB4IiBidXQgZ290ICIwcHgiCitQQVNTIFN0eWxlc2hlZXRzIGNhbiBiZSBt
b2RpZmllZCBieSBDU1NPTSAKIEZBSUwgVmFsaWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5l
IHN0eWxlcyBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYmx1ZSIgYnV0IGdvdCAiIGJsdWUiCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5k
ZXggMWU0ZDI3MGFlNjhmMWViMTc2NmUzYWM3MmQzNWJkNTAxMjYwZWY3Ni4uNjZmYmJjYTk5MDlj
YjlmYzU0OTY4YzI4ZTIyNmY4ZWVjODQxNDQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFw
aS90eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90
eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBAIENPTlNPTEUgTUVT
U0FHRTogbGluZSAzNDA6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDU1NV
bnBhcnNlZFZhbHVlCiAKIEhhcm5lc3MgRXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IENTU1VucGFyc2VkVmFsdWUKIAotRkFJTCBDb21w
dXRlZCAqIGlzIHJlaWZpZWQgYXMgQ1NTVW5wYXJzZWRWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2
YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KK0ZBSUwgQ29tcHV0ZWQg
KiBpcyByZWlmaWVkIGFzIENTU1VucGFyc2VkVmFsdWUgdGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAndGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAoKScsICd0YXJn
ZXQuY29tcHV0ZWRTdHlsZU1hcCcgaXMgdW5kZWZpbmVkKQogRkFJTCBDb21wdXRlZCA8YW5nbGU+
IGlzIHJlaWZpZWQgYXMgQ1NTVW5pdFZhbHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMg
bm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBDb21wdXRlZCA8Y29sb3I+IGlz
IHJlaWZpZWQgYXMgQ1NTU3R5bGVWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGN1c3RvbS1pZGVu
dD4gaXMgcmVpZmllZCBhcyBDU1NLZXl3b3JkVmFsdWUgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUg
ZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12
YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9w
ZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQKaW5kZXggMmJlZGY2ODkyNzJlNTIwNjMxOGIzMGZh
ZmFkNTQ4MTJlZGVkYWE5MS4uOTMxNDUxMjFhMWMzNDZhMmM4MjYwMWZiOGQzZGYxNTlhMDI5ZmMy
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQt
cHJvcGVydGllcy1jeWNsZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFy
LXJlZmVyZW5jZS1yZWdpc3RlcmVkLXByb3BlcnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAt
MSw2ICsxLDYgQEAKIAotRkFJTCBBIHZhcigpIGN5Y2xlIGJldHdlZW4gdHdvIHJlZ2lzdGVyZWQg
cHJvcGVydGllcyBpcyBoYW5kbGVkIGNvcnJlY3RseS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
IjJweCIgYnV0IGdvdCAiM3B4IgotRkFJTCBBIHZhcigpIGN5Y2xlIGJldHdlZW4gYSByZWdpc3Rl
cmVkIHByb3BlcnRpZXMgYW5kIGFuIHVucmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBoYW5kbGVkIGNv
cnJlY3RseS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjFweCIgYnV0IGdvdCAiMnB4IgorUEFT
UyBBIHZhcigpIGN5Y2xlIGJldHdlZW4gdHdvIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBpcyBoYW5k
bGVkIGNvcnJlY3RseS4gCitQQVNTIEEgdmFyKCkgY3ljbGUgYmV0d2VlbiBhIHJlZ2lzdGVyZWQg
cHJvcGVydGllcyBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVj
dGx5LiAKIFBBU1MgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgdHdvIHVucmVnaXN0ZXJlZCBwcm9w
ZXJ0aWVzIGlzIGhhbmRsZWQgY29ycmVjdGx5LiAKLUZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVu
IGEgc3ludGF4OicqJyBwcm9wZXJ0eSBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhh
bmRsZWQgY29ycmVjdGx5LiBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBm
b3IgdGhlIGdpdmVuIHN5bnRheC4KK1BBU1MgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4
OicqJyBwcm9wZXJ0eSBhbmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29y
cmVjdGx5LiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJl
Z2lzdGVyZWQtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1y
ZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBkYjUzNWU0
Yzg4ODYxMjY3MGQwZDJkMzc0YzU4YjVmNGUwNGQxOTgxLi4zOWU2NzVkNDM0YWUxYTkwZTUyZGE5
ZWFiNmY0MDI2NjRkOWMwMzczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZl
cmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1
ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApA
QCAtMSw1ICsxLDUgQEAKIAotRkFJTCB2YXIoKSByZWZlcmVuY2VzIHdvcmsgd2l0aCByZWdpc3Rl
cmVkIHByb3BlcnRpZXMgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjE1cHgiIGJ1dCBnb3QgIjEw
JSIKK0ZBSUwgdmFyKCkgcmVmZXJlbmNlcyB3b3JrIHdpdGggcmVnaXN0ZXJlZCBwcm9wZXJ0aWVz
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIgIDEwcHgiIGJ1dCBnb3QgIiAxMHB4IgogRkFJTCBS
ZWZlcmVuY2VzIHRvIHJlZ2lzdGVyZWQgdmFyKCktcHJvcGVydGllcyB3b3JrIGluIHJlZ2lzdGVy
ZWQgbGlzdHMgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjFweCwgMTBweCwgMnB4IiBidXQgZ290
ICIwcHgiCiBGQUlMIFJlZmVyZW5jZXMgdG8gbWl4ZWQgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3Rl
cmVkIHZhcigpLXByb3BlcnRpZXMgd29yayBpbiByZWdpc3RlcmVkIGxpc3RzIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkICIxcHgsIDIwcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4IgogRkFJTCBS
ZWdpc3RlcmVkIGxpc3RzIG1heSBiZSBjb25jYXRlbmF0ZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgIjFweCwgMTBweCwgMnB4LCAxcHgsIDIwcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353575</attachid>
            <date>2018-10-31 20:09:20 -0700</date>
            <delta_ts>2018-10-31 20:34:24 -0700</delta_ts>
            <desc>Changes from rolled out patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7648</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggMzgzYWM4ZWU0ZjYuLjczZTFhNjdkNGQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAt
MjI3LDMwICsyMjcsMzAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3AKIHsKICAgICBTdHlsZUF0
dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKIAotICAgIGlmICghd2ls
bE11dGF0ZSgpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbnVsbHB0cjsKLQotICAgIGlmIChwYXJlbnRFbGVtZW50KCkpCi0gICAgICAgIGRvY3VtZW50
ID0gJnBhcmVudEVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKLSAgICBlbHNlCi0gICAgICAgIGRvY3Vt
ZW50ID0gcGFyZW50U3R5bGVTaGVldCgpLT5vd25lckRvY3VtZW50KCk7Ci0gICAgCiAgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAg
IGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQogICAgICAgICBwcm9wZXJ0
eUlEID0gQ1NTUHJvcGVydHlDdXN0b207CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICBy
ZXR1cm4geyB9OwogCisgICAgaWYgKCF3aWxsTXV0YXRlKCkpCisgICAgICAgIHJldHVybiB7IH07
CisKICAgICBib29sIGltcG9ydGFudCA9IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocHJpb3JpdHks
ICJpbXBvcnRhbnQiKTsKICAgICBpZiAoIWltcG9ydGFudCAmJiAhcHJpb3JpdHkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYm9vbCBjaGFuZ2VkOwotICAgIGlmIChwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5Q3VzdG9tKQorICAgIGlmIChVTkxJS0VMWShwcm9wZXJ0eUlE
ID09IENTU1Byb3BlcnR5Q3VzdG9tKSkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBu
dWxscHRyOworCisgICAgICAgIGlmIChwYXJlbnRFbGVtZW50KCkpCisgICAgICAgICAgICBkb2N1
bWVudCA9ICZwYXJlbnRFbGVtZW50KCktPmRvY3VtZW50KCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGRvY3VtZW50ID0gcGFyZW50U3R5bGVTaGVldCgpLT5vd25lckRvY3VtZW50KCk7CisK
ICAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldEN1c3RvbVByb3BlcnR5KGRvY3Vt
ZW50LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7
Ci0gICAgZWxzZQorICAgIH0gZWxzZQogICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+
c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4
dCgpKTsKIAogICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFu
Z2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyMGY1YjJlMzBjMC4u
ZmQ0Y2ZlZWZhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTMyMSwx
MyArMzIxLDEzIEBAIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjp1cGRhdGVDb252
ZXJzaW9uRGF0YSgpCiAgICAgbV9jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhID0gQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YShtX3N0eWxlLmdldCgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIG1fZWxl
bWVudCA/IG1fZWxlbWVudC0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKTsKIH0K
IAotdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZSkKK2lubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRT
dHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogewogICAgIG1fc3R5bGUg
PSBXVEZNb3ZlKHN0eWxlKTsKICAgICB1cGRhdGVDb252ZXJzaW9uRGF0YSgpOwogfQogCi12b2lk
IFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+IHBhcmVudFN0eWxlKQoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6
OnNldFBhcmVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFyZW50U3R5bGUp
CiB7CiAgICAgbV9vd25lZFBhcmVudFN0eWxlID0gV1RGTW92ZShwYXJlbnRTdHlsZSk7CiAgICAg
bV9wYXJlbnRTdHlsZSA9IG1fb3duZWRQYXJlbnRTdHlsZS5nZXQoKTsKQEAgLTE2MjQsNyArMTYy
NCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
LCBDU1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgaWYgKHZhbHVlLT5oYXNWYXJpYWJs
ZVJlZmVyZW5jZXMoKSkgewogICAgICAgICB2YWx1ZVRvQXBwbHkgPSByZXNvbHZlZFZhcmlhYmxl
VmFsdWUoaWQsICp2YWx1ZSwgYXBwbHlTdGF0ZSk7CiAgICAgICAgIC8vIElmIGFwcGxpZWRQcm9w
ZXJ0aWVzIGFscmVhZHkgaGFzIHRoaXMgaWQsIHRoZW4gd2UgZGV0ZWN0ZWQgYSBjeWNsZSwgYW5k
IHRoaXMgdmFsdWUgc2hvdWxkIGJlIHVuc2V0LgotICAgICAgICBpZiAoIXZhbHVlVG9BcHBseSB8
fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmNvbnRhaW5zKGlkKSkgeworICAgICAgICBp
ZiAoIXZhbHVlVG9BcHBseSB8fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmdldChpZCkp
IHsKICAgICAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkp
CiAgICAgICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZQpAQCAtMjMzMCw2ICsy
MzMwLDE0IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5
KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBwbHlDYXNjYWRlCiB9CiAKIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJv
cGVydHksIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAoTElL
RUxZKHN0YXRlLmNhc2NhZGUtPmN1c3RvbVByb3BlcnRpZXMoKS5pc0VtcHR5KCkpKQorICAgICAg
ICByZXR1cm4gYXBwbHlDYXNjYWRlZFByb3BlcnRpZXNJbXBsPEN1c3RvbVByb3BlcnR5Q3ljbGVU
cmFja2luZzo6RGlzYWJsZWQ+KGZpcnN0UHJvcGVydHksIGxhc3RQcm9wZXJ0eSwgc3RhdGUpOwor
ICAgIHJldHVybiBhcHBseUNhc2NhZGVkUHJvcGVydGllc0ltcGw8Q3VzdG9tUHJvcGVydHlDeWNs
ZVRyYWNraW5nOjpFbmFibGVkPihmaXJzdFByb3BlcnR5LCBsYXN0UHJvcGVydHksIHN0YXRlKTsK
K30KKwordGVtcGxhdGU8U3R5bGVSZXNvbHZlcjo6Q3VzdG9tUHJvcGVydHlDeWNsZVRyYWNraW5n
IFRyYWNrQ3ljbGVzPgoraW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlDYXNjYWRlZFBy
b3BlcnRpZXNJbXBsKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBBcHBseUNh
c2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCiB7CiAgICAgZm9yIChpbnQgaWQgPSBmaXJzdFBy
b3BlcnR5OyBpZCA8PSBsYXN0UHJvcGVydHk7ICsraWQpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwpAQCAtMjMzOSwx
OSArMjM0NywyNCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVz
KGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LAogICAgICAgICBhdXRvJiBwcm9w
ZXJ0eSA9IHN0YXRlLmNhc2NhZGUtPnByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgICAgICBBU1NF
UlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwogCi0gICAg
ICAgIGlmIChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5jb250YWlucyhwcm9wZXJ0eUlEKSkg
ewotICAgICAgICAgICAgLy8gV2UgYXJlIGluIGEgY3ljbGUgKGVnLiBzZXR0aW5nIGZvbnQgc2l6
ZSB1c2luZyByZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZSBjb250YWluaW5nIGVtKQot
ICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUgdW5zZXQKLSAgICAgICAgICAg
IHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAgICAgICAgIC8v
IFRoaXMgcHJvcGVydHkgaXMgaW4gYSBjeWNsZSwgYW5kIG9ubHkgdGhlIHJvb3Qgb2YgdGhlIGNh
bGwgc3RhY2sgd2lsbCBoYXZlIGZpcnN0UHJvcGVydHkgIT0gbGFzdFByb3BlcnR5LgotICAgICAg
ICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIGlmIChUcmFja0N5Y2xlcyA9PSBDdXN0b21Q
cm9wZXJ0eUN5Y2xlVHJhY2tpbmc6OkRpc2FibGVkKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBk
b24ndCBoYXZlIGFueSBjdXN0b20gcHJvcGVydGllcywgdGhlbiB0aGVyZSBjYW4ndCBiZSBhbnkg
Y3ljbGVzLgorICAgICAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShzdGF0ZS5pblByb2dyZXNzUHJv
cGVydGllcy5nZXQocHJvcGVydHlJRCkpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGlu
IGEgY3ljbGUgKGVnLiBzZXR0aW5nIGZvbnQgc2l6ZSB1c2luZyByZWdpc3RlcmVkIGN1c3RvbSBw
cm9wZXJ0eSB2YWx1ZSBjb250YWluaW5nIGVtKS4KKyAgICAgICAgICAgICAgICAvLyBTbyB0aGlz
IHZhbHVlIHNob3VsZCBiZSB1bnNldC4KKyAgICAgICAgICAgICAgICBzdGF0ZS5hcHBsaWVkUHJv
cGVydGllcy5zZXQocHJvcGVydHlJRCk7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBwcm9wZXJ0
eSBpcyBpbiBhIGN5Y2xlLCBhbmQgb25seSB0aGUgcm9vdCBvZiB0aGUgY2FsbCBzdGFjayB3aWxs
IGhhdmUgZmlyc3RQcm9wZXJ0eSAhPSBsYXN0UHJvcGVydHkuCisgICAgICAgICAgICAgICAgQVNT
RVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGll
cy5hZGQocHJvcGVydHlJRCk7Ci0gICAgICAgIHByb3BlcnR5LmFwcGx5KCp0aGlzLCBzdGF0ZSk7
Ci0gICAgICAgIHN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eUlEKTsKLSAgICAg
ICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMucmVtb3ZlKHByb3BlcnR5SUQpOworICAgICAg
ICAgICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMuc2V0KHByb3BlcnR5SUQpOworICAgICAg
ICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAgICAgICAgIHN0YXRlLmFw
cGxpZWRQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHN0YXRlLmluUHJv
Z3Jlc3NQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlELCBmYWxzZSk7CisgICAgICAgIH0KICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDZkODhmNjAxOWEyLi5mMTlh
NTAwOTliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSA8Yml0c2V0PgogI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvQml0bWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtMzI0LDYgKzMyNSwxMCBAQCBwcml2YXRlOgogICAgIGVudW0gU2hvdWxkVXNlTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZSB7IERvTm90VXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSA9IDAsIFVzZU1h
dGNoZWRQcm9wZXJ0aWVzQ2FjaGUgfTsKICAgICB2b2lkIGFwcGx5TWF0Y2hlZFByb3BlcnRpZXMo
Y29uc3QgTWF0Y2hSZXN1bHQmLCBjb25zdCBFbGVtZW50JiwgU2hvdWxkVXNlTWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSA9IFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOwogCisgICAgZW51bSBDdXN0
b21Qcm9wZXJ0eUN5Y2xlVHJhY2tpbmcgeyBFbmFibGVkID0gMCwgRGlzYWJsZWQgfTsKKyAgICB0
ZW1wbGF0ZTxDdXN0b21Qcm9wZXJ0eUN5Y2xlVHJhY2tpbmc+CisgICAgaW5saW5lIHZvaWQgYXBw
bHlDYXNjYWRlZFByb3BlcnRpZXNJbXBsKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3Bl
cnR5LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYpOworCiAgICAgdm9pZCBjYXNjYWRlTWF0
Y2hlcyhDYXNjYWRlZFByb3BlcnRpZXMmLCBjb25zdCBNYXRjaFJlc3VsdCYsIGJvb2wgaW1wb3J0
YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkpOwog
CiAgICAgdm9pZCBtYXRjaFBhZ2VSdWxlcyhNYXRjaFJlc3VsdCYsIFJ1bGVTZXQqLCBib29sIGlz
TGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwpAQCAt
NTMyLDkgKzUzNyw5IEBAIHN0cnVjdCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSB7CiAgICAg
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcjsKICAgICBTdHlsZVJlc29sdmVyOjpDYXNjYWRl
ZFByb3BlcnRpZXMqIGNhc2NhZGU7CiAgICAgY29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hSZXN1
bHQqIG1hdGNoUmVzdWx0OwotICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gYXBwbGllZFByb3Bl
cnRpZXMgPSB7IH07CisgICAgQml0bWFwPG51bUNTU1Byb3BlcnRpZXM+IGFwcGxpZWRQcm9wZXJ0
aWVzID0geyB9OwogICAgIEhhc2hTZXQ8U3RyaW5nPiBhcHBsaWVkQ3VzdG9tUHJvcGVydGllcyA9
IHsgfTsKLSAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGluUHJvZ3Jlc3NQcm9wZXJ0aWVzID0g
eyB9OworICAgIEJpdG1hcDxudW1DU1NQcm9wZXJ0aWVzPiBpblByb2dyZXNzUHJvcGVydGllcyA9
IHsgfTsKICAgICBIYXNoU2V0PFN0cmluZz4gaW5Qcm9ncmVzc1Byb3BlcnRpZXNDdXN0b20gPSB7
IH07CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353576</attachid>
            <date>2018-10-31 20:34:25 -0700</date>
            <delta_ts>2018-11-01 13:35:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191042-20181031203425.patch</filename>
            <type>text/plain</type>
            <size>131702</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJmMzk2Y2U4MTFjYjgw
ZDZmODhhMGJlY2EyMzNmMGYyNTdiODczMi4uNTlmNDNlOWY3OTMwMTQ3NzQxMmEzNTAxOWM3NDFj
YTBkYjQ1NjYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxOC0xMC0yOSAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIEN1
c3RvbSBQcm9wZXJ0aWVzIEFQSSBTaG91bGQgU3VwcG9ydCBzeW50YXg9IioiIGFuZCAiPGxlbmd0
aD4iLCBhbmQgaGFuZGxlIGN5Y2xlcyBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgY29kZSBzbyB0aGF0OgorICAgICAgICAt
IEFsbCBwcm9wZXJ0aWVzIGFwcGxpZWQgaW4gU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRjaGVkUHJv
cGVydGllcyBhcmUgb25seSBhcHBsaWVkIG9uY2UuIAorICAgICAgICAtIEN1c3RvbSBwcm9wZXJ0
aWVzIGFyZSBvbmx5IHJlc29sdmVkIG9uY2UsIGluIFN0eWxlUmVzb2x2ZXIsIHdoZW4gdGhleSBh
cmUgYXBwbGllZCB0byB0aGUgUmVuZGVyU3R5bGUuIFRoZXkgd2VyZSBwcmV2aW91c2x5IHJlc29s
dmVkCisgICAgICAgICAgZXZlcnkgdGltZSB0aGV5IHdlcmUgcmVmZXJlbmNlZCwgYW5kIGFnYWlu
IGluIFJlbmRlclN0eWxlLgorICAgICAgICAtIFRoZSBmb250LXNpemUgcHJvcGVydHkgaXMgYXBw
bGllZCBhZnRlciBpdHMgdmFyaWFibGUgcmVmZXJlbmNlcywgYnV0IGJlZm9yZSBjdXN0b20gcHJv
cGVydGllcyB0aGF0IGRlcGVuZCBvbiBpdC4KKyAgICAgICAgLSBDeWNsZXMgYXJlIGRldGVjdGVk
IGF0IHRoZSBzYW1lIHRpbWUgYXMgcmVzb2x1dGlvbi4KKyAgICAgICAgLSBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJyBjdXN0b20gcHJvcGVydGllcyBjYW5ub3QgYmUgc2V0IGZyb20gSmF2YXNjcmlw
dCBvciBXZWJLaXRMZWdhY3kgaWYgdGhleSBkbyBub3QgcGFyc2UgZm9yIHRoZSBwcm9wZXJ0eSdz
IHR5cGUuCisgICAgICAgICAgSWYgdGhleSBjb250YWluIHZhcigtLS4uLikgcmVmZXJlbmNlcywg
aG93ZXZlciwgdGhlbiB0aGV5IGNhbiBiZSBzZXQgYmVjYXVzZSB3ZSBjYW5ub3QgY2hlY2sgaWYg
dGhlIHJlZmVyZW5jZXMgYXJlIHZhbGlkIGZyb20gc2V0UHJvcGVydHkuCisgICAgICAgICAgVGhp
cyBiZWhhdmlvdXIgbWF0Y2hlcyBjaHJvbWUsIGJ1dCBpcyBub3QgZG9jdW1lbnRlZCBpbiB0aGUg
c3BlYy4gCisgICAgICAgIC0gQ3VzdG9tIHByb3BlcnR5IHZhbHVlcyBoYXZlIG1vcmUgZXhwbGlj
aXQgcmVzb2x2ZWQvdW5yZXNvbHZlZCBzdGF0ZS4KKyAgICAgICAgLSBSZW5kZXJTdHlsZSBvbmx5
IGV2ZXIgaG9sZHMgcmVzb2x2ZWQgY3VzdG9tIHByb3BlcnRpZXMsIGFuZCBTdHlsZVJlc29sdmVy
OjpDYXNjYWRlZFByb3BlcnRpZXMgb25seSBob2xkcyB1bnJlc29sdmVkIHByb3BlcnRpZXMuCisK
KyAgICAgICAgVGVzdHM6IGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2guaHRtbAorICAg
ICAgICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbAorICAgICAg
ICAgICAgICAgY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjp0b2tlbnMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6
cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRSZXNvbHZlZFR5cGVkVmFsdWUpOiBEZWxl
dGVkLgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAgICog
Y3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSk6
CisgICAgICAgICogY3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oOgorICAgICAgICAq
IGNzcy9DU1NWYXJpYWJsZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVE
YXRhOjpDU1NWYXJpYWJsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRh
Ojpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JDeWNsZXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
c1dpdGhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJs
ZURhdGE6OnJlc29sdmVWYXJpYWJsZUZhbGxiYWNrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZh
cmlhYmxlUmVmZXJlbmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZURhdGE6OnJlc29sdmVUb2tlblJhbmdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBjc3MvQ1NTVmFyaWFibGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURh
dGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZVJl
c29sdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlRGF0YTo6bmVl
ZHNWYXJpYWJsZVJlc29sdXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVmFyaWFibGVEYXRhOjpDU1NWYXJpYWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGNz
cy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29s
dmVWYXJpYWJsZUZhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVWYXJpYWJsZVJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlVG9rZW5SYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpyZXNvbHZlVmFyaWFibGVSZWZl
cmVuY2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBj
c3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zhcmlh
YmxlUmVmZXJlbmNlVmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlOjp2YXJpYWJsZURhdGFWYWx1ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVydHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVnaXN0ZXJQcm9wZXJ0
eSk6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1c3RvbVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUN1c3RvbVByb3Bl
cnR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JQYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6YXBwbHlEZWZl
cnJlZFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2Fk
ZWRQcm9wZXJ0aWVzOjpQcm9wZXJ0eTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5j
ZXMpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6Q1NTUHJvcGVydHlQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29sbGVjdFBhcnNlZEN1c3Rv
bVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlci5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTVmFyaWFibGVQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVjbGFyYXRpb25W
YWx1ZSk6CisgICAgICAgICogZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29uc3RhbnRQcm9wZXJ0eU1hcDo6c2V0VmFsdWVGb3JQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjp2YXJpYWJsZURhdGFGb3JQb3NpdGl2ZVBpeGVsTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnZhcmlhYmxlRGF0YUZvclBvc2l0aXZlRHVyYXRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5vbkluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6Om9wZXJhdG9yPT0gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OnNldEN1c3Rv
bVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21Qcm9wZXJ0eURh
dGE6OlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIw
MTgtMTAtMzEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW01lZGlhU3RyZWFtXSBEb24ndCByZXZlYWwgZGV2aWNlIElEcyB1bnRpbCB0aGUgdXNlciBo
YXMgZ3JhbnRlZCBwZXJtaXNzaW9uIHRvIGNhcHR1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYzc3NjQ4ZWUxZDgzNDlm
YjM2YjEwNzE1NDVjMzgxZmE3MzI3MDljOC4uMDc0OWQ5YTRkNjgxMTU2Y2U2Njk3MjlkOTFkODBi
MzNiYWI2MThhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI2MTIsMjEgKzI2MTIsMjMgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmlu
ZyYgcHJvcGUKICAgICBhdXRvKiByZWdpc3RlcmVkID0gc3R5bGVkRWxlbWVudC0+ZG9jdW1lbnQo
KS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQocHJvcGVydHlOYW1lKTsK
ICAgICBhdXRvKiB2YWx1ZSA9IHN0eWxlLT5nZXRDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUp
OwogCi0gICAgaWYgKHJlZ2lzdGVyZWQpIHsKLSAgICAgICAgLy8gVE9ETyB0aGlzIHNob3VsZCBi
ZSBkb25lIGJhc2VkIG9uIHRoZSBzeW50YXgKLSAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5y
ZXNvbHZlZFR5cGVkVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKCp2YWx1ZS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCksICpzdHlsZSk7Ci0K
LSAgICAgICAgaWYgKHJlZ2lzdGVyZWQtPmluaXRpYWxWYWx1ZSgpICYmIHJlZ2lzdGVyZWQtPmlu
aXRpYWxWYWx1ZSgpLT5yZXNvbHZlZFR5cGVkVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiB6
b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKCpyZWdpc3RlcmVkLT5pbml0aWFsVmFsdWUo
KS0+cmVzb2x2ZWRUeXBlZFZhbHVlKCksICpzdHlsZSk7CisgICAgaWYgKHJlZ2lzdGVyZWQgJiYg
IXZhbHVlKQorICAgICAgICByZXR1cm4gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlQ29weSgpOwog
CisgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogCi0gICAg
aWYgKHZhbHVlKQorICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0
IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBSZWZQdHI8Q1NTVmFsdWU+KCk7CisgICAgfSwgWyZd
KGNvbnN0IENTU1ZhbHVlSUQmKSB7CiAgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlOjpjcmVhdGUoKnZhbHVlKTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIH0sIFsmXShj
b25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYpIHsKKyAgICAgICAgcmV0dXJuIENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZSgqdmFsdWUpOworICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZh
bHVlKSB7CisgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHZh
bHVlLCAqc3R5bGUpOworICAgIH0pOworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIHZh
bHVlLT52YWx1ZSgpKTsKIH0KIAogU3RyaW5nIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmN1c3Rv
bVByb3BlcnR5VGV4dChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAppbmRleCA3YzE2ZTg0MWRlYWZlZTJl
MjE5MjU4ZWM0OTViNzgwZjQxNjUyNjM4Li5lNjk2NmZmOWJkYzE0NDI2YThjODk5ODA4ZDM0N2Zh
YThjMmUxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFs
dWUuY3BwCkBAIC0yNyw4MCArMjcsNjMgQEAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlLmgiCiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitib29sIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9uYW1lICE9IG90aGVyLm1f
bmFtZSB8fCBtX3ZhbHVlLmluZGV4KCkgIT0gb3RoZXIubV92YWx1ZS5pbmRleCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0o
Y29uc3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgeworICAgICAgICBy
ZXR1cm4gdmFsdWUuZ2V0KCkgPT0gV1RGOjpnZXQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWU+PihvdGhlci5tX3ZhbHVlKS5nZXQoKTsKKyAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYg
dmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09IFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG90
aGVyLm1fdmFsdWUpOworICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFs
dWUpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmdldCgpID09IFdURjo6Z2V0PFJlZjxDU1NWYXJp
YWJsZURhdGE+PihvdGhlci5tX3ZhbHVlKS5nZXQoKTsKKyAgICB9LCBbJl0oY29uc3QgTGVuZ3Ro
JiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gdmFsdWUgPT0gV1RGOjpnZXQ8TGVuZ3RoPihvdGhl
ci5tX3ZhbHVlKTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3Zh
bHVlKTsKK30KKwogU3RyaW5nIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogewogICAgIGlmICghbV9zZXJpYWxpemVkKSB7CiAgICAgICAgIG1fc2VyaWFsaXpl
ZCA9IHRydWU7Ci0gICAgICAgIGlmIChtX3Jlc29sdmVkVHlwZWRWYWx1ZSkgLy8gRklYTUU6IFVu
aXQgc2hvdWxkIGJlIGJhc2VkIG9uIHN5bnRheC4KLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fcmVzb2x2ZWRUeXBlZFZhbHVlLT52YWx1ZSgp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y3NzVGV4dCgpOwotICAgICAgICBlbHNlIGlm
IChtX3ZhbHVlKQotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IG1fdmFsdWUtPnRva2VuUmFu
Z2UoKS5zZXJpYWxpemUoKTsKLSAgICAgICAgZWxzZSBpZiAobV92YWx1ZUlkICE9IENTU1ZhbHVl
SW52YWxpZCkKLSAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSBnZXRWYWx1ZU5hbWUobV92YWx1
ZUlkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGVtcHR5U3Ry
aW5nKCk7CisKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29u
c3QgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgeworICAgICAgICAgICAg
bV9zdHJpbmdWYWx1ZSA9IHZhbHVlLT5jc3NUZXh0KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBD
U1NWYWx1ZUlEJiB2YWx1ZSkgeworICAgICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IGdldFZhbHVl
TmFtZSh2YWx1ZSk7CisgICAgICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYg
dmFsdWUpIHsKKyAgICAgICAgICAgIG1fc3RyaW5nVmFsdWUgPSB2YWx1ZS0+dG9rZW5SYW5nZSgp
LnNlcmlhbGl6ZSgpOworICAgICAgICB9LCBbJl0oY29uc3QgTGVuZ3RoJiB2YWx1ZSkgeworICAg
ICAgICAgICAgbV9zdHJpbmdWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUu
dmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCktPmNzc1RleHQoKTsKKyAgICAgICAg
fSk7CisgICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7CiAgICAgfQogICAgIHJl
dHVybiBtX3N0cmluZ1ZhbHVlOwogfQogCi1WZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IENTU0N1c3Rv
bVByb3BlcnR5VmFsdWU6OnRva2Vucyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
CitWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OnRva2Vucygp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVzb2x2ZWRUeXBlZFZhbHVlKSB7Ci0gICAgICAgIFZlY3Rv
cjxDU1NQYXJzZXJUb2tlbj4gcmVzdWx0OworICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVz
dWx0OworCisgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgUmVm
PENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYpIHsKKyAgICAgICAgLy8gRG8gbm90
aGluZworICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcih2YWx1ZS0+dG9rZW5zKCkpOworICAgIH0sIFsmXShj
b25zdCBMZW5ndGgmKSB7CiAgICAgICAgIENTU1Rva2VuaXplciB0b2tlbml6ZXIoY3NzVGV4dCgp
KTsKIAogICAgICAgICBhdXRvIHRva2VuaXplclJhbmdlID0gdG9rZW5pemVyLnRva2VuUmFuZ2Uo
KTsKICAgICAgICAgd2hpbGUgKCF0b2tlbml6ZXJSYW5nZS5hdEVuZCgpKQogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZCh0b2tlbml6ZXJSYW5nZS5jb25zdW1lKCkpOworICAgIH0pOworICAgIFdU
Rjo6dmlzaXQodmlzaXRvciwgbV92YWx1ZSk7CiAKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9Ci0KLSAgICBpZiAoIW1fdmFsdWUpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBpZiAo
bV9jb250YWluc1ZhcmlhYmxlcykgewotICAgICAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJl
c3VsdDsKLSAgICAgICAgLy8gRklYTUU6IEF2b2lkIGRvaW5nIHRoaXMgd29yayBtb3JlIHRoYW4g
b25jZS4KLSAgICAgICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92
YWx1ZS0+cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5
bGUpOwotICAgICAgICBpZiAocmVzb2x2ZWREYXRhKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZFZlY3RvcihyZXNvbHZlZERhdGEtPnRva2VucygpKTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQotICAgIHJldHVybiBtX3ZhbHVlLT50b2tlbnMoKTsKLX0KLQotYm9vbCBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSGFzaFNldDxBdG9taWNTdHJp
bmc+JiBzZWVuUHJvcGVydGllcywgSGFzaFNldDxBdG9taWNTdHJpbmc+JiBpbnZhbGlkUHJvcGVy
dGllcykgY29uc3QKLXsKLSAgICBBU1NFUlQoY29udGFpbnNWYXJpYWJsZXMoKSk7Ci0gICAgaWYg
KG1fdmFsdWUpCi0gICAgICAgIHJldHVybiBtX3ZhbHVlLT5jaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
cyhuYW1lLCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpyZXNvbHZlVmFy
aWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYgcmVn
aXN0ZXJlZFByb3BlcnRpZXMsIFZlY3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiBy
ZXNvbHZlZFZhbHVlcywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAotewotICAgIEFT
U0VSVChjb250YWluc1ZhcmlhYmxlcygpKTsKLSAgICBpZiAoIW1fdmFsdWUpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBBU1NFUlQobV92YWx1ZS0+bmVlZHNWYXJpYWJsZVJlc29sdXRpb24o
KSk7Ci0gICAgUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gcmVzb2x2ZWREYXRhID0gbV92YWx1ZS0+
cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpOwot
ICAgIGlmIChyZXNvbHZlZERhdGEpCi0gICAgICAgIHJlc29sdmVkVmFsdWVzLmFwcGVuZChDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoVmFyaWFibGVEYXRhKG1fbmFtZSwgcmVzb2x2
ZWREYXRhLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc29sdmVkVmFs
dWVzLmFwcGVuZChDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRoSUQobV9uYW1lLCBD
U1NWYWx1ZUludmFsaWQpKTsKLX0KLQotdm9pZCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpzZXRS
ZXNvbHZlZFR5cGVkVmFsdWUoTGVuZ3RoIGxlbmd0aCkKLXsKLSAgICBBU1NFUlQobGVuZ3RoLmlz
U3BlY2lmaWVkKCkpOwotICAgIG1fcmVzb2x2ZWRUeXBlZFZhbHVlID0gV1RGTW92ZShsZW5ndGgp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZS5oCmluZGV4IGJiMDkyMTQ1ZGU1MWZiNmU2YjM5ZDk5NTRkMzY0OTJk
YmNjZDZmNTUuLjYyNWUxOTUxMWUyZGRhZGJhZDQ3YzY5MTczMzlkNDk5NzExOGY0OTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaApAQCAtMjcsMzEgKzI3
LDQ2IEBACiAKICNpbmNsdWRlICJDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaCIKICNpbmNs
dWRlICJDU1NWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1ZhcmlhYmxlRGF0YS5oIgorI2luY2x1ZGUg
IkNTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQ
YXJzZXJUb2tlbjsKK2NsYXNzIENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU7CiBjbGFzcyBSZW5k
ZXJTdHlsZTsKIAogY2xhc3MgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSBmaW5hbCA6IHB1YmxpYyBD
U1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVl
PiBjcmVhdGVXaXRoVmFyaWFibGVEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUmVmPENT
U1ZhcmlhYmxlRGF0YT4mJiB2YWx1ZSkKKyAgICB1c2luZyBWYXJpYW50VmFsdWUgPSBWYXJpYW50
PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiwgQ1NTVmFsdWVJRCwgUmVmPENTU1Zhcmlh
YmxlRGF0YT4sIExlbmd0aD47CisKKyAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+IGNyZWF0ZVVucmVzb2x2ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTVmFy
aWFibGVSZWZlcmVuY2VWYWx1ZT4mJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1l
LCB7IFdURk1vdmUodmFsdWUpIH0pKTsKICAgICB9Ci0gICAgCi0gICAgc3RhdGljIFJlZjxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVXaXRoSUQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBDU1NWYWx1ZUlEIHZhbHVlKQorCisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlPiBjcmVhdGVVbnJlc29sdmVkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgQ1NTVmFsdWVJ
RCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWUobmFtZSwgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IHZhbHVlIH0pKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVdpdGhJRChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgaWQpCisgICAgeworICAgICAgICBBU1NFUlQoaWQg
PT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NW
YWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVlUmV2ZXJ0IHx8IGlkID09IENTU1ZhbHVlSW52YWxp
ZCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUo
bmFtZSwgeyBpZCB9KSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPiBjcmVhdGVTeW50YXhBbGwoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NT
VmFyaWFibGVEYXRhPiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCB7IFdURk1vdmUodmFsdWUpIH0pKTsKICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBjcmVhdGVJ
bnZhbGlkKCkKKyAgICBzdGF0aWMgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGNyZWF0ZVN5
bnRheExlbmd0aChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIExlbmd0aCB2YWx1ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1c3RvbVByb3BlcnR5VmFsdWUoZW1w
dHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIHsgV1RGTW92ZSh2YWx1ZSkgfSkpOwogICAg
IH0KIAogICAgIHN0YXRpYyBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gY3JlYXRlKGNvbnN0
IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKQpAQCAtNjIsNzAgKzc3LDQ5IEBAIHB1Ymxp
YzoKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgCi0gICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZSA9PSBvdGhlci5tX25hbWUgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlICYmIG1f
dmFsdWVJZCA9PSBvdGhlci5tX3ZhbHVlSWQ7IH0KLQotICAgIGJvb2wgY29udGFpbnNWYXJpYWJs
ZXMoKSBjb25zdCB7IEFTU0VSVCghbV9jb250YWluc1ZhcmlhYmxlcyB8fCAhbV9yZXNvbHZlZFR5
cGVkVmFsdWUpOyByZXR1cm4gbV9jb250YWluc1ZhcmlhYmxlczsgfQotICAgIGJvb2wgY2hlY2tW
YXJpYWJsZXNGb3JDeWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJT
dHlsZSYsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRv
bWljU3RyaW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwotCi0gICAgdm9pZCByZXNvbHZl
VmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYs
IFZlY3RvcjxSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4+JiwgY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdDsKKyAgICBib29sIGlzUmVzb2x2ZWQoKSBjb25zdCAgeyByZXR1cm4gIVdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+PihtX3ZhbHVlKTsg
fQorICAgIGJvb2wgaXNVbnNldCgpIGNvbnN0ICB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPENTU1ZhbHVlSUQ+KG1fdmFsdWUpICYmIFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG1fdmFsdWUp
ID09IENTU1ZhbHVlVW5zZXQ7IH0KKyAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0ICB7IHJldHVy
biBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KG1fdmFsdWUpICYmIFdURjo6Z2V0
PENTU1ZhbHVlSUQ+KG1fdmFsdWUpID09IENTU1ZhbHVlSW52YWxpZDsgfQogCi0gICAgQ1NTVmFs
dWVJRCB2YWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZUlkOyB9Ci0gICAgQ1NTVmFyaWFi
bGVEYXRhKiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7IH0KLSAgICBWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2Vucyhjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHlTZXQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OworICAgIGNvbnN0IFZhcmlhbnRWYWx1
ZSYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKLSAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPExlbmd0aD4mIHJlc29sdmVkVHlwZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b2x2ZWRUeXBlZFZhbHVlOyB9Ci0gICAgdm9pZCBzZXRSZXNvbHZlZFR5cGVkVmFsdWUoTGVuZ3Ro
KTsKKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHRva2VucygpIGNvbnN0OworICAgIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIG90aGVyKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBzZXJpYWxpemVkVmFsdWUpCi0gICAgICAgIDogQ1NTVmFsdWUoQ3Vz
dG9tUHJvcGVydHlDbGFzcykKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3N0
cmluZ1ZhbHVlKHNlcmlhbGl6ZWRWYWx1ZSkKLSAgICAgICAgLCBtX3NlcmlhbGl6ZWQodHJ1ZSkK
LSAgICB7Ci0gICAgfQotCi0gICAgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIENTU1ZhbHVlSUQgaWQpCi0gICAgICAgIDogQ1NTVmFsdWUoQ3VzdG9tUHJv
cGVydHlDbGFzcykKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX3ZhbHVlSWQo
aWQpCi0gICAgewotICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09
IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NWYWx1ZVVuc2V0IHx8IGlkID09IENTU1ZhbHVl
UmV2ZXJ0IHx8IGlkID09IENTU1ZhbHVlSW52YWxpZCk7Ci0gICAgfQotICAgIAotICAgIENTU0N1
c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTVmFyaWFi
bGVEYXRhPiYmIHZhbHVlKQorICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBWYXJpYW50VmFsdWUmJiB2YWx1ZSkKICAgICAgICAgOiBDU1NWYWx1ZShD
dXN0b21Qcm9wZXJ0eUNsYXNzKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1f
dmFsdWUoV1RGTW92ZSh2YWx1ZSkpCi0gICAgICAgICwgbV92YWx1ZUlkKENTU1ZhbHVlSW50ZXJu
YWxWYXJpYWJsZVZhbHVlKQotICAgICAgICAsIG1fY29udGFpbnNWYXJpYWJsZXMobV92YWx1ZS0+
bmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSkKKyAgICAgICAgLCBtX3NlcmlhbGl6ZWQoZmFsc2Up
CiAgICAgewogICAgIH0KIAogICAgIENTU0N1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQ1NTQ3Vz
dG9tUHJvcGVydHlWYWx1ZSYgb3RoZXIpCiAgICAgICAgIDogQ1NTVmFsdWUoQ3VzdG9tUHJvcGVy
dHlDbGFzcykKICAgICAgICAgLCBtX25hbWUob3RoZXIubV9uYW1lKQotICAgICAgICAsIG1fdmFs
dWUob3RoZXIubV92YWx1ZS5jb3B5UmVmKCkpCi0gICAgICAgICwgbV92YWx1ZUlkKG90aGVyLm1f
dmFsdWVJZCkKKyAgICAgICAgLCBtX3ZhbHVlKENTU1ZhbHVlVW5zZXQpCiAgICAgICAgICwgbV9z
dHJpbmdWYWx1ZShvdGhlci5tX3N0cmluZ1ZhbHVlKQotICAgICAgICAsIG1fY29udGFpbnNWYXJp
YWJsZXMob3RoZXIubV9jb250YWluc1ZhcmlhYmxlcykKICAgICAgICAgLCBtX3NlcmlhbGl6ZWQo
b3RoZXIubV9zZXJpYWxpemVkKQotICAgICAgICAsIG1fcmVzb2x2ZWRUeXBlZFZhbHVlKG90aGVy
Lm1fcmVzb2x2ZWRUeXBlZFZhbHVlKQogICAgIHsKKyAgICAgICAgLy8gTm8gY29weSBjb25zdHJ1
Y3RvciBmb3IgUmVmPENTU1ZhcmlhYmxlRGF0YT4sIHNvIHdlIGhhdmUgdG8gZG8gdGhpcyBvdXJz
ZWx2ZXMKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3Qg
UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+JiB2YWx1ZSkgeworICAgICAgICAgICAgbV92
YWx1ZSA9IHZhbHVlLmNvcHlSZWYoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IENTU1ZhbHVlSUQm
IHZhbHVlKSB7CisgICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIH0sIFsmXShj
b25zdCBSZWY8Q1NTVmFyaWFibGVEYXRhPiYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fdmFsdWUg
PSB2YWx1ZS5jb3B5UmVmKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZhbHVlKSB7
CisgICAgICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIH0pOworICAgICAgICBXVEY6
OnZpc2l0KHZpc2l0b3IsIG90aGVyLm1fdmFsdWUpOwogICAgIH0KICAgICAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcgbV9uYW1lOwotICAgIAotICAgIFJlZlB0cjxDU1NWYXJpYWJsZURhdGE+IG1f
dmFsdWU7Ci0gICAgQ1NTVmFsdWVJRCBtX3ZhbHVlSWQgeyBDU1NWYWx1ZUludmFsaWQgfTsKKyAg
ICBWYXJpYW50VmFsdWUgbV92YWx1ZTsKICAgICAKICAgICBtdXRhYmxlIFN0cmluZyBtX3N0cmlu
Z1ZhbHVlOwotICAgIGJvb2wgbV9jb250YWluc1ZhcmlhYmxlcyB7IGZhbHNlIH07CiAgICAgbXV0
YWJsZSBib29sIG1fc2VyaWFsaXplZCB7IGZhbHNlIH07Ci0KLSAgICAvLyBGSVhNRTogSXQgc2hv
dWxkIG5vdCBiZSBwb3NzaWJsZSB0byBleHByZXNzIGFuIGludmFsaWQgc3RhdGUsIHN1Y2ggYXMg
Y29udGFpbnNWYXJpYWJsZXMoKSAmJiByZXNvbHZlZFR5cGVkVmFsdWUoKS4KLSAgICBzdGQ6Om9w
dGlvbmFsPExlbmd0aD4gbV9yZXNvbHZlZFR5cGVkVmFsdWU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHkuY3BwCmluZGV4IDNlYTdiOTJjMDA5OTczMDk2YTAzZTk1ZTllNmEyNjc1NGE1Y2E4
OGEuLjc5ZWY3ZmU2YjAzY2Q2Y2ZmN2ZiOWVhODE5YjE2MDc2ZGU0NTU4ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuY3BwCkBAIC0z
MCw4ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUmVnaXN0ZXJlZEN1c3Rv
bVByb3BlcnR5OjpDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1l
LCBib29sIGluaGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFs
VmFsdWUpCitDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHk6OkNTU1JlZ2lzdGVyZWRDdXN0b21Q
cm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGlu
aGVyaXRzLCBSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiBpbml0aWFsVmFsdWUpCiAg
ICAgOiBuYW1lKG5hbWUpCisgICAgLCBzeW50YXgoc3ludGF4KQogICAgICwgaW5oZXJpdHMoaW5o
ZXJpdHMpCiAgICAgLCBtX2luaXRpYWxWYWx1ZShXVEZNb3ZlKGluaXRpYWxWYWx1ZSkpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5LmgKaW5k
ZXggMzQyN2VhYTNjM2FiNzQ3YzA1MTg1ZjM5MzViNmI1YjJkMjZhZWUzYS4uZGZjZjBiZGMzOWVk
NTQwYzNkMWRhYTRjMDVhNjRjMGY1OTE1MzkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkuaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNz
IENTU0N1c3RvbVByb3BlcnR5VmFsdWU7CiAKIHN0cnVjdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJv
cGVydHkgewogICAgIGNvbnN0IFN0cmluZyBuYW1lOwotICAgIC8qIFRPRE8gc3ludGF4ICovCisg
ICAgY29uc3QgU3RyaW5nIHN5bnRheDsKICAgICBjb25zdCBib29sIGluaGVyaXRzOwogCi0gICAg
Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpbmhl
cml0cywgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgaW5pdGlhbFZhbHVlKTsKKyAg
ICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHN5bnRheCwgYm9vbCBpbmhlcml0cywgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+JiYgaW5pdGlhbFZhbHVlKTsKIAogICAgIGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUq
IGluaXRpYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbFZhbHVlLmdldCgpOyB9CiAg
ICAgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IGluaXRpYWxWYWx1ZUNvcHkoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKaW5kZXggOTg5OTM1MzE3NTlj
OGM5M2Y3NzU3ZTMxOTg5YjFkNjA5ODEyMGM1Mi4uNjA0Y2ExODM0MzRiNjU4Njc0ZDNkOGMwNzI5
YTQxMTA5MTU4ZDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgYm9vbCBDU1NWYXJpYWJsZURhdGE6Om9wZXJhdG9yPT0oY29uc3QgQ1NT
VmFyaWFibGVEYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdG9rZW5zKCkgPT0gb3RoZXIu
dG9rZW5zKCk7CiB9CiAKLXZvaWQgQ1NTVmFyaWFibGVEYXRhOjpjb25zdW1lQW5kVXBkYXRlVG9r
ZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQorQ1NTVmFyaWFibGVEYXRhOjpD
U1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIENTU1BhcnNlclRva2VuUmFuZ2UgbG9j
YWxSYW5nZSA9IHJhbmdlOwpAQCAtNzcsMTA5ICs3Nyw0IEBAIHZvaWQgQ1NTVmFyaWFibGVEYXRh
Ojpjb25zdW1lQW5kVXBkYXRlVG9rZW5zKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQogICAgICAgICB1cGRhdGVUb2tlbnM8VUNoYXI+KHJhbmdlKTsKIH0KIAotQ1NTVmFyaWFibGVE
YXRhOjpDU1NWYXJpYWJsZURhdGEoY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGJv
b2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24pCi0gICAgOiBtX25lZWRzVmFyaWFibGVSZXNvbHV0
aW9uKG5lZWRzVmFyaWFibGVSZXNvbHV0aW9uKQotewotICAgIGNvbnN1bWVBbmRVcGRhdGVUb2tl
bnMocmFuZ2UpOwotfQotCi1ib29sIENTU1ZhcmlhYmxlRGF0YTo6Y2hlY2tWYXJpYWJsZXNGb3JD
eWNsZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0Ci17Ci0gICAgaWYgKGludmFsaWRQcm9wZXJ0
aWVzLmNvbnRhaW5zKG5hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgSGFz
aFNldDxBdG9taWNTdHJpbmc+IG5ld1NlZW5Qcm9wZXJ0aWVzID0gc2VlblByb3BlcnRpZXM7Ci0g
ICAgbmV3U2VlblByb3BlcnRpZXMuYWRkKG5hbWUpOwotICAgIAotICAgIGJvb2wgdmFsaWQgPSBj
aGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhSYW5nZShtX3Rva2Vucywgc3R5bGUsIG5ld1NlZW5Q
cm9wZXJ0aWVzLCBpbnZhbGlkUHJvcGVydGllcyk7Ci0gICAgaWYgKCF2YWxpZCkKLSAgICAgICAg
aW52YWxpZFByb3BlcnRpZXMuYWRkKG5hbWUpOwotICAgIAotICAgIHJldHVybiB2YWxpZDsKLX0K
LSAgICAKLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpjaGVja1ZhcmlhYmxlc0ZvckN5Y2xlc1dpdGhS
YW5nZShDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3Ry
aW5nPiYgaW52YWxpZFByb3BlcnRpZXMpIGNvbnN0Ci17Ci0gICAgd2hpbGUgKCFyYW5nZS5hdEVu
ZCgpKSB7Ci0gICAgICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVl
VmFyIHx8IHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVFbnYpIHsKLSAgICAg
ICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYmxvY2sgPSByYW5nZS5jb25zdW1lQmxvY2soKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgYmxvY2suY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChibG9jay5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pOwotICAg
ICAgICAgICAgQXRvbWljU3RyaW5nIHZhcmlhYmxlTmFtZSA9IGJsb2NrLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b0F0b21pY1N0cmluZygpOwotICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLmF0RW5kKCkgfHwgYmxvY2sucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsK
LSAgICAgICAgICAgIGlmIChzZWVuUHJvcGVydGllcy5jb250YWlucyh2YXJpYWJsZU5hbWUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgYXV0byogdmFsdWUg
PSBzdHlsZS5nZXRDdXN0b21Qcm9wZXJ0eSh2YXJpYWJsZU5hbWUpOwotICAgICAgICAgICAgaWYg
KHZhbHVlICYmIHZhbHVlLT5jb250YWluc1ZhcmlhYmxlcygpICYmICF2YWx1ZS0+Y2hlY2tWYXJp
YWJsZXNGb3JDeWNsZXModmFyaWFibGVOYW1lLCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFs
aWRQcm9wZXJ0aWVzKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
ICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IENvbW1hVG9rZW4pIHsKLSAgICAgICAgICAg
ICAgICAvLyBGYWxsYmFjay4KLSAgICAgICAgICAgICAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzV2l0aFJhbmdlKGJsb2Nr
LCBzdHlsZSwgc2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByYW5nZS5jb25zdW1lKCk7Ci0gICAgfQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIENTU1ZhcmlhYmxlRGF0YTo6cmVzb2x2ZVZhcmlh
YmxlRmFsbGJhY2soY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3Rl
cmVkUHJvcGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNl
clRva2VuPiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Ci17Ci0gICAg
aWYgKHJhbmdlLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NFUlQocmFu
Z2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsKLSAgICByYW5nZS5jb25zdW1lKCk7Ci0g
ICAgcmV0dXJuIHJlc29sdmVUb2tlblJhbmdlKHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwg
cmVzdWx0LCBzdHlsZSk7Ci19Ci0KLWJvb2wgQ1NTVmFyaWFibGVEYXRhOjpyZXNvbHZlVmFyaWFi
bGVSZWZlcmVuY2UoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiByZWdpc3Rl
cmVkUHJvcGVydGllcywgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9yPENTU1BhcnNl
clRva2VuPiYgcmVzdWx0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0Ci17Ci0gICAg
cmFuZ2UuY29uc3VtZVdoaXRlc3BhY2UoKTsKLSAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUo
KSA9PSBJZGVudFRva2VuKTsKLSAgICBBdG9taWNTdHJpbmcgdmFyaWFibGVOYW1lID0gcmFuZ2Uu
Y29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpLnRvQXRvbWljU3RyaW5nKCk7Ci0g
ICAgQVNTRVJUKHJhbmdlLmF0RW5kKCkgfHwgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gQ29tbWFU
b2tlbikpOwotICAgIAotICAgIGF1dG8qIHByb3BlcnR5ID0gc3R5bGUuZ2V0Q3VzdG9tUHJvcGVy
dHkodmFyaWFibGVOYW1lKTsKLSAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHktPnJlc29sdmVk
VHlwZWRWYWx1ZSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRv
a2VucyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKCFwcm9wZXJ0eSB8fCAhcHJvcGVydHktPnZhbHVlKCkpIHsKLSAg
ICAgICAgYXV0byogcmVnaXN0ZXJlZCA9IHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLmdldCh2YXJpYWJs
ZU5hbWUpOwotICAgICAgICBpZiAocmVnaXN0ZXJlZCAmJiByZWdpc3RlcmVkLT5pbml0aWFsVmFs
dWUoKSkKLSAgICAgICAgICAgIHByb3BlcnR5ID0gcmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiByZXNvbHZlVmFyaWFibGVGYWxsYmFj
ayhyZWdpc3RlcmVkUHJvcGVydGllcywgcmFuZ2UsIHJlc3VsdCwgc3R5bGUpOwotICAgIH0KLSAg
ICBBU1NFUlQocHJvcGVydHkpOwotICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IocHJvcGVydHktPnRv
a2VucyhyZWdpc3RlcmVkUHJvcGVydGllcywgc3R5bGUpKTsKLSAgICAKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotUmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gQ1NTVmFyaWFibGVEYXRhOjpyZXNvbHZl
VmFyaWFibGVSZWZlcmVuY2VzKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYg
cmVnaXN0ZXJlZFByb3BlcnRpZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKLXsK
LSAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHJlc29sdmVkVG9rZW5zOwotICAgIENTU1BhcnNl
clRva2VuUmFuZ2UgcmFuZ2UgPSBtX3Rva2VuczsKLSAgICBpZiAoIXJlc29sdmVUb2tlblJhbmdl
KHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCByYW5nZSwgcmVzb2x2ZWRUb2tlbnMsIHN0eWxlKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRl
UmVzb2x2ZWQocmVzb2x2ZWRUb2tlbnMsICp0aGlzKTsKLX0KLSAgICAKLWJvb2wgQ1NTVmFyaWFi
bGVEYXRhOjpyZXNvbHZlVG9rZW5SYW5nZShjb25zdCBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVy
dHlTZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBW
ZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXN1bHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkg
Y29uc3QKLXsKLSAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgIHdoaWxlICghcmFuZ2UuYXRF
bmQoKSkgewotICAgICAgICBpZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1
ZVZhciB8fCByYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlRW52KQotICAgICAg
ICAgICAgc3VjY2VzcyAmPSByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2UocmVnaXN0ZXJlZFByb3Bl
cnRpZXMsIHJhbmdlLmNvbnN1bWVCbG9jaygpLCByZXN1bHQsIHN0eWxlKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyYW5nZS5jb25zdW1lKCkpOwotICAgIH0KLSAg
ICByZXR1cm4gc3VjY2VzczsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhcmlhYmxlRGF0YS5oCmluZGV4IDAwOGE2ZmE0MjMwNzcwNDk5MzMxNzA3YTc0Yzdk
NmNkNmQyMjcyZTEuLjM5NmUwNjliOWM0NjUyYzhlODdmN2NhZDgyOTkwMzllYzBjZWQxNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVEYXRhLmgKQEAgLTQzLDE0ICs0Myw5IEBAIGNsYXNz
IENTU1ZhcmlhYmxlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1ZhcmlhYmxlRGF0YT4gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1ZhcmlhYmxlRGF0YSk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+
IGNyZWF0ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYm9vbCBuZWVkc1Zhcmlh
YmxlUmVzb2x1dGlvbiA9IHRydWUpCisgICAgc3RhdGljIFJlZjxDU1NWYXJpYWJsZURhdGE+IGNy
ZWF0ZShjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlRGF0YShyYW5nZSwgbmVlZHNWYXJpYWJsZVJl
c29sdXRpb24pKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlRGF0YT4gY3Jl
YXRlUmVzb2x2ZWQoY29uc3QgVmVjdG9yPENTU1BhcnNlclRva2VuPiYgcmVzb2x2ZWRUb2tlbnMs
IGNvbnN0IENTU1ZhcmlhYmxlRGF0YSYgdW5yZXNvbHZlZERhdGEpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NWYXJpYWJsZURhdGEocmVzb2x2ZWRUb2tlbnMsIHVucmVz
b2x2ZWREYXRhLm1fYmFja2luZ1N0cmluZykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NWYXJpYWJsZURhdGEocmFuZ2UpKTsKICAgICB9CiAKICAgICBDU1NQYXJzZXJUb2tlblJh
bmdlIHRva2VuUmFuZ2UoKSB7IHJldHVybiBtX3Rva2VuczsgfQpAQCAtNTksMzYgKzU0LDEyIEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYXJpYWJsZURhdGEmIG90
aGVyKSBjb25zdDsKIAotICAgIGJvb2wgbmVlZHNWYXJpYWJsZVJlc29sdXRpb24oKSBjb25zdCB7
IHJldHVybiBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uOyB9Ci0KLSAgICBib29sIGNoZWNrVmFy
aWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5
bGUmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Qcm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21p
Y1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25zdDsKLQotICAgIFJlZlB0cjxDU1NWYXJp
YWJsZURhdGE+IHJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKLSAgICBib29sIHJl
c29sdmVUb2tlblJhbmdlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENT
U1BhcnNlclRva2VuUmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0OwotCiBwcml2YXRlOgotICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiwgYm9vbCBuZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbik7Ci0KLSAgICAv
LyBXZSBjYW4gc2FmZWx5IGNvcHkgdGhlIHRva2VucyAod2hpY2ggaGF2ZSByYXcgcG9pbnRlcnMg
dG8gc3Vic3RyaW5ncykgYmVjYXVzZQotICAgIC8vIFN0eWxlUHJvcGVydHlTZXRzIGNvbnRhaW4g
cmVmZXJlbmNlcyB0byBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlcywgd2hpY2gKLSAgICAvLyBwb2lu
dCB0byB0aGUgdW5yZXNvbHZlZCBDU1NWYXJpYWJsZURhdGEgdmFsdWVzIHRoYXQgb3duIHRoZSBi
YWNraW5nIHN0cmluZ3MKLSAgICAvLyB0aGlzIHdpbGwgcG90ZW50aWFsbHkgcmVmZXJlbmNlLgot
ICAgIENTU1ZhcmlhYmxlRGF0YShjb25zdCBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiByZXNvbHZl
ZFRva2VucywgU3RyaW5nIGJhY2tpbmdTdHJpbmcpCi0gICAgICAgIDogbV9iYWNraW5nU3RyaW5n
KGJhY2tpbmdTdHJpbmcpCi0gICAgICAgICwgbV90b2tlbnMocmVzb2x2ZWRUb2tlbnMpCi0gICAg
ICAgICwgbV9uZWVkc1ZhcmlhYmxlUmVzb2x1dGlvbihmYWxzZSkKLSAgICB7IH0KLQotICAgIHZv
aWQgY29uc3VtZUFuZFVwZGF0ZVRva2Vucyhjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJik7Cisg
ICAgQ1NTVmFyaWFibGVEYXRhKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHVwZGF0ZVRva2Vucyhjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJik7Ci0gICAgCi0gICAgYm9vbCBjaGVja1ZhcmlhYmxlc0ZvckN5Y2xl
c1dpdGhSYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYsIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
aW52YWxpZFByb3BlcnRpZXMpIGNvbnN0OwotICAgIGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlKGNvbnN0IENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCYsIENTU1BhcnNlclRva2Vu
UmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
OwotICAgIGJvb2wgcmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2soY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0JiwgQ1NTUGFyc2VyVG9rZW5SYW5nZSwgVmVjdG9yPENTU1BhcnNlclRv
a2VuPiYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKICAgICBTdHJpbmcgbV9iYWNraW5n
U3RyaW5nOwogICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gbV90b2tlbnM7Ci0gICAgY29uc3Qg
Ym9vbCBtX25lZWRzVmFyaWFibGVSZXNvbHV0aW9uOwogCiAgICAgLy8gRklYTUUtTkVXUEFSU0VS
OiBXZSB3YW50IHRvIGNhY2hlIFN0eWxlUHJvcGVydGllcyBvbmNlIHdlIHN1cHBvcnQgQGFwcGx5
LgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5j
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVl
LmNwcAppbmRleCAzODk1N2U0MDMwYzIzOGY0Zjc3NTUyY2YyOTNlNTExMGE3OTEzOTY4Li43N2E1
MjNlNGQ3ZGRhZGYwMzBhMTI0MDVkZTdmYzJmY2M3YTExNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWUuY3BwCkBAIC0zMCw2ICszMCw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1
ZS5oIgogCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVy
LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIENTU1ZhcmlhYmxlUmVmZXJlbmNl
VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdApAQCAtNDAsMTEgKzQzLDcyIEBAIFN0cmluZyBD
U1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICB9CiAg
ICAgcmV0dXJuIG1fc3RyaW5nVmFsdWU7CiB9Ci0gICAgCi1ib29sIENTU1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWU6OmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Q
cm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25z
dAorCitzdGF0aWMgYm9vbCByZXNvbHZlVG9rZW5SYW5nZShDU1NQYXJzZXJUb2tlblJhbmdlLCBW
ZWN0b3I8Q1NTUGFyc2VyVG9rZW4+JiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKKwor
c3RhdGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2soQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZSwgVmVjdG9yPENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVy
dHlTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKHJhbmdlLmF0RW5kKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBDb21tYVRva2VuKTsK
KyAgICByYW5nZS5jb25zdW1lKCk7CisgICAgcmV0dXJuIHJlc29sdmVUb2tlblJhbmdlKHJhbmdl
LCByZXN1bHQsIHN0YXRlKTsKK30KKworc3RhdGljIGJvb2wgcmVzb2x2ZVZhcmlhYmxlUmVmZXJl
bmNlKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2UsIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHJl
c3VsdCwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQogewotICAgIEFTU0VSVCht
X2RhdGEpOwotICAgIHJldHVybiBtX2RhdGEtPmNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKG5hbWUs
IHN0eWxlLCBzZWVuUHJvcGVydGllcywgaW52YWxpZFByb3BlcnRpZXMpOworICAgIGF1dG8mIHJl
Z2lzdGVyZWRQcm9wZXJ0aWVzID0gc3RhdGUuc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5nZXRD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKTsKKyAgICBhdXRvJiBzdHlsZSA9ICpzdGF0
ZS5zdHlsZVJlc29sdmVyLT5zdHlsZSgpOworCisgICAgcmFuZ2UuY29uc3VtZVdoaXRlc3BhY2Uo
KTsKKyAgICBBU1NFUlQocmFuZ2UucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKTsKKyAgICBT
dHJpbmcgdmFyaWFibGVOYW1lID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52
YWx1ZSgpLnRvU3RyaW5nKCk7CisgICAgQVNTRVJUKHJhbmdlLmF0RW5kKCkgfHwgKHJhbmdlLnBl
ZWsoKS50eXBlKCkgPT0gQ29tbWFUb2tlbikpOworCisgICAgLy8gQXBwbHkgdGhpcyB2YXJpYWJs
ZSBmaXJzdCwgaW4gY2FzZSBpdCBpcyBzdGlsbCB1bnJlc29sdmVkCisgICAgc3RhdGUuc3R5bGVS
ZXNvbHZlci0+YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFtZSwgc3RhdGUp
OworCisgICAgLy8gQXBwbHkgZmFsbGJhY2sgdG8gZGV0ZWN0IGN5Y2xlcworICAgIFZlY3RvcjxD
U1NQYXJzZXJUb2tlbj4gZmFsbGJhY2tSZXN1bHQ7CisgICAgcmVzb2x2ZVZhcmlhYmxlRmFsbGJh
Y2soQ1NTUGFyc2VyVG9rZW5SYW5nZShyYW5nZSksIGZhbGxiYWNrUmVzdWx0LCBzdGF0ZSk7CisK
KyAgICBhdXRvKiBwcm9wZXJ0eSA9IHN0eWxlLmdldEN1c3RvbVByb3BlcnR5KHZhcmlhYmxlTmFt
ZSk7CisKKyAgICBpZiAoIXByb3BlcnR5IHx8IHByb3BlcnR5LT5pc1Vuc2V0KCkgfHwgcHJvcGVy
dHktPmlzSW52YWxpZCgpKSB7CisgICAgICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSByZWdpc3RlcmVk
UHJvcGVydGllcy5nZXQodmFyaWFibGVOYW1lKTsKKyAgICAgICAgaWYgKHJlZ2lzdGVyZWQgJiYg
cmVnaXN0ZXJlZC0+aW5pdGlhbFZhbHVlKCkpCisgICAgICAgICAgICBwcm9wZXJ0eSA9IHJlZ2lz
dGVyZWQtPmluaXRpYWxWYWx1ZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4g
cmVzb2x2ZVZhcmlhYmxlRmFsbGJhY2socmFuZ2UsIHJlc3VsdCwgc3RhdGUpOworICAgIH0KKwor
ICAgIEFTU0VSVChwcm9wZXJ0eS0+aXNSZXNvbHZlZCgpKTsKKyAgICByZXN1bHQuYXBwZW5kVmVj
dG9yKHByb3BlcnR5LT50b2tlbnMoKSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj
IGJvb2wgcmVzb2x2ZVRva2VuUmFuZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgVmVjdG9y
PENTU1BhcnNlclRva2VuPiYgcmVzdWx0LCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3Rh
dGUpCit7CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5k
KCkpIHsKKyAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVW
YXIgfHwgcmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUVudikKKyAgICAgICAg
ICAgIHN1Y2Nlc3MgJj0gcmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlKHJhbmdlLmNvbnN1bWVCbG9j
aygpLCByZXN1bHQsIHN0YXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChyYW5nZS5jb25zdW1lKCkpOworICAgIH0KKyAgICByZXR1cm4gc3VjY2VzczsKK30KKwor
UmVmUHRyPENTU1ZhcmlhYmxlRGF0YT4gQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6cmVzb2x2
ZVZhcmlhYmxlUmVmZXJlbmNlcyhBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpIGNv
bnN0Cit7CisgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRva2VuczsKKyAgICBD
U1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlID0gbV9kYXRhLT50b2tlblJhbmdlKCk7CisKKyAgICBp
ZiAoIXJlc29sdmVUb2tlblJhbmdlKHJhbmdlLCByZXNvbHZlZFRva2Vucywgc3RhdGUpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0
ZShyZXNvbHZlZFRva2Vucyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZS5oCmluZGV4IDIyODk2NGVk
NzY5NDQwNTkzOTVjMTBjNjRhZWYyYzAxMDZkODFmN2YuLmQ3MGUzMjdjMTA2ZGRhYWU4MjNmZjk5
YmZhMmE5Y2JiYThiNjA2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWUuaApAQCAtMjksMjggKzI5LDMwIEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4uaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJhbmdl
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYXJpYWJsZURhdGEuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1
Y3QgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGU7CitjbGFzcyBDU1NQYXJzZXJUb2tlblJhbmdl
OworCiBjbGFzcyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IGNyZWF0
ZShSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIGRhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlKFdURk1vdmUoZGF0YSkpKTsKLSAg
ICB9Ci0KLSAgICBDU1NWYXJpYWJsZURhdGEqIHZhcmlhYmxlRGF0YVZhbHVlKCkgY29uc3QKKyAg
ICBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+IGNyZWF0ZShjb25zdCBDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RhdGEuZ2V0
KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFs
dWUoQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUocmFuZ2UpKSk7CiAgICAgfQogCi0gICAgYm9vbCBl
cXVhbHMoY29uc3QgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YSA9PSBvdGhlci5tX2RhdGE7IH0KKyAgICBib29sIGVxdWFscyhjb25zdCBDU1NW
YXJpYWJsZVJlZmVyZW5jZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgp
ID09IG90aGVyLm1fZGF0YS5nZXQoKTsgfQogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29u
c3Q7CiAKLSAgICBib29sIGNoZWNrVmFyaWFibGVzRm9yQ3ljbGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgUmVuZGVyU3R5bGUmLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIHNlZW5Q
cm9wZXJ0aWVzLCBIYXNoU2V0PEF0b21pY1N0cmluZz4mIGludmFsaWRQcm9wZXJ0aWVzKSBjb25z
dDsKKyAgICBSZWZQdHI8Q1NTVmFyaWFibGVEYXRhPiByZXNvbHZlVmFyaWFibGVSZWZlcmVuY2Vz
KEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NT
VmFyaWFibGVSZWZlcmVuY2VWYWx1ZShSZWY8Q1NTVmFyaWFibGVEYXRhPiYmIGRhdGEpCkBAIC01
OSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxDU1NWYXJp
YWJsZURhdGE+IG1fZGF0YTsKKyAgICBSZWY8Q1NTVmFyaWFibGVEYXRhPiBtX2RhdGE7CiAgICAg
bXV0YWJsZSBTdHJpbmcgbV9zdHJpbmdWYWx1ZTsKICAgICBtdXRhYmxlIGJvb2wgbV9zZXJpYWxp
emVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
UmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUmVn
aXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKaW5kZXggMzczMThkYTY1OThmZDExNTkzMDY5Y2EyMjE1
NWZkYjY0YjU0ZDdhZC4uYTg5MDY2OWY2NTUwMTA2MzZiZTIxYTdhOThkYTVmMzBkYTAyMDM2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1JlZ2lzdGVyQ3VzdG9tUHJvcGVy
dHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5LmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAKICNpbmNsdWRlICJDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1By
b3BlcnR5UGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5Lmgi
CiAjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCiAjaW5jbHVkZSAiRE9NQ1NTTmFtZXNwYWNlLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aCIKLSNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDI4ICs0MiwzMyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5OjpyZWdpc3RlclByb3BlcnR5
KERvY3VtZW50JiBkb2N1bQogewogICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBp
bml0aWFsVmFsdWU7CiAgICAgaWYgKCFkZXNjcmlwdG9yLmluaXRpYWxWYWx1ZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgaW5pdGlhbFZhbHVlID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRl
V2l0aFZhcmlhYmxlRGF0YShkZXNjcmlwdG9yLm5hbWUsIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRl
KENTU1BhcnNlclRva2VuUmFuZ2UoVmVjdG9yPENTU1BhcnNlclRva2VuPigpKSwgZmFsc2UpKTsK
LSAgICAgICAgQ1NTUGFyc2VyIHBhcnNlcihkb2N1bWVudCk7CisgICAgICAgIENTU1Rva2VuaXpl
ciB0b2tlbml6ZXIoZGVzY3JpcHRvci5pbml0aWFsVmFsdWUpOwogICAgICAgICBTdHlsZVJlc29s
dmVyIHN0eWxlUmVzb2x2ZXIoZG9jdW1lbnQpOwogCi0gICAgICAgIGF1dG8gcHJpbWl0aXZlVmFs
ID0gcGFyc2VyLnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlDdXN0b20sIGRlc2NyaXB0b3Iu
aW5pdGlhbFZhbHVlKTsKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWwgfHwgIXByaW1pdGl2ZVZh
bC0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAvLyBXZSBuZWVkIHRvIGluaXRpYWxpemUg
dGhpcyBzbyB0aGF0IHdlIGNhbiBzdWNjZXNzZnVsbHkgcGFyc2UgY29tcHV0YXRpb25hbGx5IGRl
cGVuZGVudCB2YWx1ZXMgKGxpa2UgZW0gdW5pdHMpLgorICAgICAgICAvLyBXZSBkb24ndCBhY3R1
YWxseSBuZWVkIHRoZSB2YWx1ZXMgdG8gYmUgYWNjdXJhdGUsIHNpbmNlIHRoZXkgd2lsbCBiZSBy
ZWplY3RlZCBsYXRlciBhbnl3YXkKKyAgICAgICAgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5
VG9TdHlsZShDU1NQcm9wZXJ0eUludmFsaWQsIG51bGxwdHIsIHN0eWxlUmVzb2x2ZXIuZGVmYXVs
dFN0eWxlRm9yRWxlbWVudCgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci51cGRhdGVGb250KCk7
CisKKyAgICAgICAgaW5pdGlhbFZhbHVlID0gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRD
dXN0b21Qcm9wZXJ0eVZhbHVlKGRlc2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5zeW50YXgsIHRv
a2VuaXplci50b2tlblJhbmdlKCksIHN0eWxlUmVzb2x2ZXIsIHN0cmljdENTU1BhcnNlckNvbnRl
eHQoKSk7CisKKyAgICAgICAgaWYgKCFpbml0aWFsVmFsdWUgfHwgIWluaXRpYWxWYWx1ZS0+aXNS
ZXNvbHZlZCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yLCAi
VGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50
YXguIiB9OwogCiAgICAgICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gZGVwZW5kZW5jaWVzOwot
ICAgICAgICBwcmltaXRpdmVWYWwtPmNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5j
aWVzKGRlcGVuZGVuY2llcyk7Ci0gICAgICAgIHByaW1pdGl2ZVZhbC0+Y29sbGVjdERpcmVjdFJv
b3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7CisgICAgICAgIGluaXRp
YWxWYWx1ZS0+Y29sbGVjdERpcmVjdENvbXB1dGF0aW9uYWxEZXBlbmRlbmNpZXMoZGVwZW5kZW5j
aWVzKTsKKyAgICAgICAgaW5pdGlhbFZhbHVlLT5jb2xsZWN0RGlyZWN0Um9vdENvbXB1dGF0aW9u
YWxEZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTsKIAogICAgICAgICBpZiAoIWRlcGVuZGVuY2ll
cy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3Is
ICJUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBtdXN0IGJlIGNvbXB1dGF0aW9uYWxseSBpbmRlcGVu
ZGVudC4iIH07Ci0KLSAgICAgICAgaW5pdGlhbFZhbHVlLT5zZXRSZXNvbHZlZFR5cGVkVmFsdWUo
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKHN0eWxlUmVzb2x2ZXIsICpwcmlt
aXRpdmVWYWwpKTsKICAgICB9CiAKLSAgICBDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHkgcHJv
cGVydHkgeyBkZXNjcmlwdG9yLm5hbWUsIGRlc2NyaXB0b3IuaW5oZXJpdHMsIFdURk1vdmUoaW5p
dGlhbFZhbHVlKSB9OworICAgIENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eSBwcm9wZXJ0eSB7
IGRlc2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5zeW50YXgsIGRlc2NyaXB0b3IuaW5oZXJpdHMs
IFdURk1vdmUoaW5pdGlhbFZhbHVlKSB9OwogICAgIGlmICghZG9jdW1lbnQucmVnaXN0ZXJDU1NQ
cm9wZXJ0eShXVEZNb3ZlKHByb3BlcnR5KSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIHByb3BlcnR5IGhhcyBhbHJlYWR5IGJlZW4g
cmVnaXN0ZXJlZC4iIH07CiAKKyAgICBkb2N1bWVudC5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5
bGVTaGVldEVudmlyb25tZW50KCk7CisKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IGUyOGIzNGMwZDkxZTc3ODVhNDdhNzhjOGJjMTMwOTA1NmZmYTExOWMuLjczZTFhNjdkNGQ5
YjYxY2E3YzgwYmM2OGU3OWQyZTYwZmJmNGM2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMjYsNyArMjI2
LDcgQEAgYm9vbCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmlzUHJvcGVydHlJbXBs
aWNpdChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmEKIEV4Y2VwdGlvbk9yPHZvaWQ+IFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHkpCiB7CiAg
ICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7Ci0gICAg
CisKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5
TmFtZSk7CiAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpCiAgICAg
ICAgIHByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUN1c3RvbTsKQEAgLTI0MSw5ICsyNDEsMTYgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9w
ZXJ0eShjb25zdCBTdHJpbmcmIHByb3AKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGJvb2wg
Y2hhbmdlZDsKLSAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSkKLSAgICAg
ICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldEN1c3RvbVByb3BlcnR5KHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4dCgpKTsKLSAgICBlbHNlCisgICAg
aWYgKFVOTElLRUxZKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDdXN0b20pKSB7CisgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKHBhcmVudEVsZW1l
bnQoKSkKKyAgICAgICAgICAgIGRvY3VtZW50ID0gJnBhcmVudEVsZW1lbnQoKS0+ZG9jdW1lbnQo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9jdW1lbnQgPSBwYXJlbnRTdHlsZVNoZWV0
KCktPm93bmVyRG9jdW1lbnQoKTsKKworICAgICAgICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+
c2V0Q3VzdG9tUHJvcGVydHkoZG9jdW1lbnQsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFu
dCwgY3NzUGFyc2VyQ29udGV4dCgpKTsKKyAgICB9IGVsc2UKICAgICAgICAgY2hhbmdlZCA9IG1f
cHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNz
c1BhcnNlckNvbnRleHQoKSk7CiAKICAgICBkaWRNdXRhdGUoY2hhbmdlZCA/IFByb3BlcnR5Q2hh
bmdlZCA6IE5vQ2hhbmdlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgK
aW5kZXggMGM0N2RhMjJlZmVhMTBiYTdmYWQ5MTI4M2FkMzFhZjM2OTE3NGQxZC4uMjAwMGZkYzFm
NTVlMjFjNjY4NzFmYjkwYTFkNTdmYmY0YzdmN2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDdXN0b20uaApAQCAtMTg3OSwxMyArMTg3OSwxMyBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTdHJva2VDb2xvcihTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdgogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEN1
c3RvbVByb3BlcnR5KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1JlZ2lz
dGVyZWRDdXN0b21Qcm9wZXJ0eSogcmVnaXN0ZXJlZCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQogewotICAgIGlmIChyZWdpc3RlcmVkKSB7CisgICAgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0
ZXJlZC0+aW5pdGlhbFZhbHVlKCkpIHsKICAgICAgICAgYXV0byBpbml0aWFsVmFsdWUgPSByZWdp
c3RlcmVkLT5pbml0aWFsVmFsdWVDb3B5KCk7CiAgICAgICAgIGFwcGx5VmFsdWVDdXN0b21Qcm9w
ZXJ0eShzdHlsZVJlc29sdmVyLCByZWdpc3RlcmVkLCAqaW5pdGlhbFZhbHVlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gaW52YWxpZCA9IENTU0N1c3RvbVByb3BlcnR5VmFs
dWU6OmNyZWF0ZVdpdGhJRChuYW1lLCBDU1NWYWx1ZUludmFsaWQpOworICAgIGF1dG8gaW52YWxp
ZCA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVVucmVzb2x2ZWQobmFtZSwgQ1NTVmFs
dWVJbnZhbGlkKTsKICAgICBhcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoc3R5bGVSZXNvbHZlciwg
cmVnaXN0ZXJlZCwgaW52YWxpZC5nZXQoKSk7CiB9CiAKQEAgLTE5MDAsMTIgKzE5MDAsMTMgQEAg
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDdXN0b21Qcm9wZXJ0
eShTdHlsZVJlc29sdmVyJiBzdHlsZVIKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlQ3VzdG9tUHJvcGVydHkoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
Y29uc3QgQ1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5KiByZWdpc3RlcmVkLCBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlJiB2YWx1ZSkKIHsKKyAgICBBU1NFUlQodmFsdWUuaXNSZXNvbHZlZCgpKTsK
ICAgICBjb25zdCBhdXRvJiBuYW1lID0gdmFsdWUubmFtZSgpOwogCiAgICAgaWYgKCFyZWdpc3Rl
cmVkIHx8IHJlZ2lzdGVyZWQtPmluaGVyaXRzKQotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1ZSks
IHJlZ2lzdGVyZWQpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEluaGVyaXRl
ZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgbWFrZVJlZih2YWx1ZSkpOwogICAgIGVsc2UKLSAg
ICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0
eVZhbHVlKG5hbWUsIG1ha2VSZWYodmFsdWUpLCByZWdpc3RlcmVkKTsKKyAgICAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUs
IG1ha2VSZWYodmFsdWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCA1ZDc4ZjhjMTdmZTFkZWYxYjIyZmZkZTQ0
ZTE1MmRiNGY2NWIwN2ViLi41YWNiNDhmOTExYTM3MTc4ZmFlOGE4MGUxNzgzZTY5Yjc1ODhjYjU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMjgsNiArMjgsOCBA
QAogI2luY2x1ZGUgIkNTU0RlZmVycmVkUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CiAjaW5jbHVkZSAiQ1NTUGVuZGluZ1N1YnN0aXR1dGlvblZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
UHJvcGVydHlQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVQb29sLmgiCkBAIC03NzksNyArNzgxLDcgQEAgYm9vbCBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYKICAgICByZXR1cm4gc2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwg
cGFyc2VyQ29udGV4dCk7CiB9CiAKLWJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0Q3Vz
dG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQpCitib29s
IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KGNvbnN0IERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQpCiB7CiAg
ICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0
aGUgcHJvcGVydHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCiAgICAgLy8gU2V0dGluZyBpdCB0byBu
dWxsIHNlZW1zIHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVh
dCBpdCBqdXN0IHRoZSBzYW1lLgpAQCAtNzg3LDYgKzc4OSwxNyBAQCBib29sIE11dGFibGVTdHls
ZVByb3BlcnRpZXM6OnNldEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
LCBjb25zdAogICAgICAgICByZXR1cm4gcmVtb3ZlQ3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1l
KTsKIAogICAgIHBhcnNlckNvbnRleHQubW9kZSA9IGNzc1BhcnNlck1vZGUoKTsKKworICAgIFN0
cmluZyBzeW50YXggPSAiKiI7CisgICAgYXV0byogcmVnaXN0ZXJlZCA9IGRvY3VtZW50ID8gZG9j
dW1lbnQtPmdldENTU1JlZ2lzdGVyZWRDdXN0b21Qcm9wZXJ0eVNldCgpLmdldChwcm9wZXJ0eU5h
bWUpIDogbnVsbHB0cjsKKworICAgIGlmIChyZWdpc3RlcmVkKQorICAgICAgICBzeW50YXggPSBy
ZWdpc3RlcmVkLT5zeW50YXg7CisKKyAgICBDU1NUb2tlbml6ZXIgdG9rZW5pemVyKHZhbHVlKTsK
KyAgICBpZiAoIUNTU1Byb3BlcnR5UGFyc2VyOjpjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlW
YWx1ZShzeW50YXgsIHRva2VuaXplci50b2tlblJhbmdlKCksIHBhcnNlckNvbnRleHQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBXaGVuIHJlcGxhY2luZyBhbiBleGlzdGluZyBw
cm9wZXJ0eSB2YWx1ZSwgdGhpcyBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGVuZCBvZiB0aGUg
bGlzdC4KICAgICAvLyBGaXJlZm94IHByZXNlcnZlcyB0aGUgcG9zaXRpb24sIGFuZCBNU0lFIG1v
dmVzIHRoZSBwcm9wZXJ0eSB0byB0aGUgYmVnaW5uaW5nLgogICAgIHJldHVybiBDU1NQYXJzZXI6
OnBhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZSgqdGhpcywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgaW1w
b3J0YW50LCBwYXJzZXJDb250ZXh0KSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpDaGFuZ2Vk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IDNmNGI2NWFiNzI4OGRkMGYz
YjE2MWJhNDFiZDUwNWRmMmUzNzU1MGMuLjgzOWE1NDQzZjkxNzhhMjJlMzBiNmYwODdiMmMxOTk4
NjRjZjM1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKQEAgLTI0OSw3ICsy
NDksNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCA0PiBtX3Byb3BlcnR5VmVj
dG9yOwogCiAgICAgLy8gTWV0aG9kcyBmb3IgcXVlcnlpbmcgYW5kIGFsdGVyaW5nIENTUyBjdXN0
b20gcHJvcGVydGllcy4KLSAgICBib29sIHNldEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgQ1NTUGFy
c2VyQ29udGV4dCk7CisgICAgYm9vbCBzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBEb2N1bWVudCos
IGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGlt
cG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4dCk7CiAgICAgYm9vbCByZW1vdmVDdXN0b21Qcm9wZXJ0
eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgU3RyaW5nKiByZXR1cm5UZXh0ID0gbnVsbHB0
cik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZDRl
MDZiY2NmMzM2MGQxY2E0MGMwNzI4MDJmNDUwMGM1OWZkYTA1Yi4uZmQ0Y2ZlZWZhNWM3MjgwODZj
NDc0MmFmMjIxNjk0NWM5M2Y2ZDYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMzI3LDcgKzMyNyw3IEBAIGlubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpz
ZXRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIHVwZGF0ZUNv
bnZlcnNpb25EYXRhKCk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFBhcmVu
dFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gcGFyZW50U3R5bGUpCitpbmxpbmUg
dm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0UGFyZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRy
PFJlbmRlclN0eWxlPiBwYXJlbnRTdHlsZSkKIHsKICAgICBtX293bmVkUGFyZW50U3R5bGUgPSBX
VEZNb3ZlKHBhcmVudFN0eWxlKTsKICAgICBtX3BhcmVudFN0eWxlID0gbV9vd25lZFBhcmVudFN0
eWxlLmdldCgpOwpAQCAtNDI5LDIxICs0MjksMjEgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvcktleWZyYW1lKGNvbnN0IFJlbmRlclN0eWxlKgog
ICAgIENhc2NhZGVkUHJvcGVydGllcyBjYXNjYWRlKGRpcmVjdGlvbiwgd3JpdGluZ01vZGUpOwog
ICAgIGNhc2NhZGUuYWRkTm9ybWFsTWF0Y2hlcyhyZXN1bHQsIDAsIHJlc3VsdC5tYXRjaGVkUHJv
cGVydGllcygpLnNpemUoKSAtIDEpOwogCi0gICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJvcGVydGll
cyBmaXJzdC4KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0
eUN1c3RvbSwgQ1NTUHJvcGVydHlDdXN0b20sICZyZXN1bHQpOwotCi0gICAgYXBwbHlDYXNjYWRl
ZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQcmlvcml0eVBy
b3BlcnR5LCAmcmVzdWx0KTsKKyAgICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0
YXRlIHsgdGhpcywgJmNhc2NhZGUsICZyZXN1bHQgfTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksIGFwcGx5U3Rh
dGUpOwogCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAg
ICAgdXBkYXRlRm9udCgpOwogCi0gICAgLy8gTm93IGRvIHJlc3Qgb2YgdGhlIHByb3BlcnRpZXMu
Ci0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmlyc3RMb3dQcmlvcml0eVBy
b3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZyZXN1bHQpOworICAgIC8vIE5vdyByZXNvbHZlIHJl
bWFpbmluZyBjdXN0b20gcHJvcGVydGllcyBhbmQgdGhlIHJlc3QsIGluIGFueSBvcmRlcgorICAg
IGZvciAoYXV0byBpdCA9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmJlZ2luKCk7IGl0ICE9
IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygpLmVuZCgpOyArK2l0KQorICAgICAgICBhcHBseUNh
c2NhZGVkQ3VzdG9tUHJvcGVydHkoaXQtPmtleSwgYXBwbHlTdGF0ZSk7CisgICAgYXBwbHlDYXNj
YWRlZFByb3BlcnRpZXMoZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHks
IGFwcGx5U3RhdGUpOwogCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQgYnkgb25lIG9m
IHRoZSBub24tZXNzZW50aWFsIGZvbnQgcHJvcHMsIHVwZGF0ZSBpdCBhIHNlY29uZCB0aW1lLgog
ICAgIHVwZGF0ZUZvbnQoKTsKIAotICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMo
KnRoaXMsICZyZXN1bHQpOworICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRo
aXMsIGFwcGx5U3RhdGUpOwogCiAgICAgYWRqdXN0UmVuZGVyU3R5bGUoKnN0YXRlLnN0eWxlKCks
ICpzdGF0ZS5wYXJlbnRTdHlsZSgpLCBudWxscHRyLCBudWxscHRyKTsKIApAQCAtNjM1LDE3ICs2
MzUsMTggQEAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBTdHlsZVJlc29sdmVyOjpzdHls
ZUZvclBhZ2UoaW50IHBhZ2VJbmRleCkKICAgICBDYXNjYWRlZFByb3BlcnRpZXMgY2FzY2FkZShk
aXJlY3Rpb24sIHdyaXRpbmdNb2RlKTsKICAgICBjYXNjYWRlLmFkZE5vcm1hbE1hdGNoZXMocmVz
dWx0LCAwLCByZXN1bHQubWF0Y2hlZFByb3BlcnRpZXMoKS5zaXplKCkgLSAxKTsKIAotICAgIC8v
IFJlc29sdmUgY3VzdG9tIHByb3BlcnRpZXMgZmlyc3QuCi0gICAgYXBwbHlDYXNjYWRlZFByb3Bl
cnRpZXMoY2FzY2FkZSwgQ1NTUHJvcGVydHlDdXN0b20sIENTU1Byb3BlcnR5Q3VzdG9tLCAmcmVz
dWx0KTsKLQotICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0Q1NTUHJv
cGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgJnJlc3VsdCk7CisgICAgQXBwbHlDYXNj
YWRlZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmcmVzdWx0IH07
CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhpZ2hQ
cmlvcml0eVByb3BlcnR5LCBhcHBseVN0YXRlKTsKIAogICAgIC8vIElmIG91ciBmb250IGdvdCBk
aXJ0aWVkLCB1cGRhdGUgaXQgbm93LgogICAgIHVwZGF0ZUZvbnQoKTsKIAotICAgIGFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENT
U1Byb3BlcnR5LCAmcmVzdWx0KTsKKyAgICAvLyBOb3cgcmVzb2x2ZSByZW1haW5pbmcgY3VzdG9t
IHByb3BlcnRpZXMgYW5kIHRoZSByZXN0LCBpbiBhbnkgb3JkZXIKKyAgICBmb3IgKGF1dG8gaXQg
PSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBjYXNjYWRlLmN1c3Rv
bVByb3BlcnRpZXMoKS5lbmQoKTsgKytpdCkKKyAgICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVBy
b3BlcnR5KGl0LT5rZXksIGFwcGx5U3RhdGUpOworICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVz
KGZpcnN0TG93UHJpb3JpdHlQcm9wZXJ0eSwgbGFzdENTU1Byb3BlcnR5LCBhcHBseVN0YXRlKTsK
IAotICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsICZyZXN1bHQpOwor
ICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUpOwog
CiAgICAgLy8gTm93IHJldHVybiB0aGUgc3R5bGUuCiAgICAgcmV0dXJuIG1fc3RhdGUudGFrZVN0
eWxlKCk7CkBAIC0xMzcxLDE3ICsxMzcyLDIwIEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlN
YXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAg
ICAgICAgIGNhc2NhZGUuYWRkTm9ybWFsTWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQu
cmFuZ2VzLmZpcnN0VUFSdWxlLCBtYXRjaFJlc3VsdC5yYW5nZXMubGFzdFVBUnVsZSwgYXBwbHlJ
bmhlcml0ZWRPbmx5KTsKICAgICAgICAgY2FzY2FkZS5hZGRJbXBvcnRhbnRNYXRjaGVzKG1hdGNo
UmVzdWx0LCBtYXRjaFJlc3VsdC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdl
cy5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogCi0gICAgICAgIGFwcGx5Q2FzY2Fk
ZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uLCBDU1NQ
cm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgJm1hdGNoUmVzdWx0KTsKLSAgICAgICAgYWRqdXN0
U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1YnkoKTsKKyAgICAgICAgQXBwbHlDYXNjYWRlZFByb3Bl
cnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQgfTsKIAot
ICAgICAgICAvLyBSZXNvbHZlIGN1c3RvbSB2YXJpYWJsZXMgZmlyc3QuCi0gICAgICAgIGFwcGx5
Q2FzY2FkZWRQcm9wZXJ0aWVzKGNhc2NhZGUsIENTU1Byb3BlcnR5Q3VzdG9tLCBDU1NQcm9wZXJ0
eUN1c3RvbSwgJm1hdGNoUmVzdWx0KTsKKyAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMo
Q1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0
aW9uLCBhcHBseVN0YXRlKTsKKyAgICAgICAgYWRqdXN0U3R5bGVGb3JJbnRlckNoYXJhY3RlclJ1
YnkoKTsKIAotICAgICAgICAvLyBTdGFydCBieSBhcHBseWluZyBwcm9wZXJ0aWVzIHRoYXQgb3Ro
ZXIgcHJvcGVydGllcyBtYXkgZGVwZW5kIG9uLgotICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVy
dGllcyhjYXNjYWRlLCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHks
ICZtYXRjaFJlc3VsdCk7CisgICAgICAgIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKGZpcnN0Q1NT
UHJvcGVydHksIGxhc3RIaWdoUHJpb3JpdHlQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKKyAgICAg
ICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIHVwZGF0ZSBpdCBub3cuCiAgICAgICAgIHVw
ZGF0ZUZvbnQoKTsKLSAgICAgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2FzY2FkZSwgZmly
c3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZtYXRjaFJlc3VsdCk7CisK
KyAgICAgICAgLy8gTm93IHJlc29sdmUgcmVtYWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFuZCB0
aGUgcmVzdCwgaW4gYW55IG9yZGVyCisgICAgICAgIGZvciAoYXV0byBpdCA9IGNhc2NhZGUuY3Vz
dG9tUHJvcGVydGllcygpLmJlZ2luKCk7IGl0ICE9IGNhc2NhZGUuY3VzdG9tUHJvcGVydGllcygp
LmVuZCgpOyArK2l0KQorICAgICAgICAgICAgYXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGl0
LT5rZXksIGFwcGx5U3RhdGUpOworICAgICAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJz
dExvd1ByaW9yaXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKICAg
ICAgICAgc3RhdGUuY2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCk7CiAgICAgfQpAQCAtMTM5Miwx
NiArMTM5NiwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5TWF0Y2hlZFByb3BlcnRpZXMo
Y29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBjb25zdAogICAgIGNhc2NhZGUuYWRkSW1w
b3J0YW50TWF0Y2hlcyhtYXRjaFJlc3VsdCwgbWF0Y2hSZXN1bHQucmFuZ2VzLmZpcnN0VXNlclJ1
bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VXNlclJ1bGUsIGFwcGx5SW5oZXJpdGVkT25seSk7
CiAgICAgY2FzY2FkZS5hZGRJbXBvcnRhbnRNYXRjaGVzKG1hdGNoUmVzdWx0LCBtYXRjaFJlc3Vs
dC5yYW5nZXMuZmlyc3RVQVJ1bGUsIG1hdGNoUmVzdWx0LnJhbmdlcy5sYXN0VUFSdWxlLCBhcHBs
eUluaGVyaXRlZE9ubHkpOwogCi0gICAgLy8gUmVzb2x2ZSBjdXN0b20gcHJvcGVydGllcyBmaXJz
dC4KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eUN1c3Rv
bSwgQ1NTUHJvcGVydHlDdXN0b20sICZtYXRjaFJlc3VsdCk7CiAKLSAgICBhcHBseUNhc2NhZGVk
UHJvcGVydGllcyhjYXNjYWRlLCBDU1NQcm9wZXJ0eVdlYmtpdFJ1YnlQb3NpdGlvbiwgQ1NTUHJv
cGVydHlXZWJraXRSdWJ5UG9zaXRpb24sICZtYXRjaFJlc3VsdCk7CisgICAgQXBwbHlDYXNjYWRl
ZFByb3BlcnR5U3RhdGUgYXBwbHlTdGF0ZSB7IHRoaXMsICZjYXNjYWRlLCAmbWF0Y2hSZXN1bHQg
fTsKIAotICAgIC8vIEFkanVzdCB0aGUgZm9udCBzaXplIHRvIGJlIHNtYWxsZXIgaWYgcnVieS1w
b3NpdGlvbiBpcyBpbnRlci1jaGFyYWN0ZXIuCisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMo
Q1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb24sIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0
aW9uLCBhcHBseVN0YXRlKTsKICAgICBhZGp1c3RTdHlsZUZvckludGVyQ2hhcmFjdGVyUnVieSgp
OwogCi0gICAgLy8gU3RhcnQgYnkgYXBwbHlpbmcgcHJvcGVydGllcyB0aGF0IG90aGVyIHByb3Bl
cnRpZXMgbWF5IGRlcGVuZCBvbi4KLSAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhjYXNjYWRl
LCBmaXJzdENTU1Byb3BlcnR5LCBsYXN0SGlnaFByaW9yaXR5UHJvcGVydHksICZtYXRjaFJlc3Vs
dCk7CisgICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoZmlyc3RDU1NQcm9wZXJ0eSwgbGFzdEhp
Z2hQcmlvcml0eVByb3BlcnR5LCBhcHBseVN0YXRlKTsKIAogICAgIC8vIElmIHRoZSBlZmZlY3Rp
dmUgem9vbSB2YWx1ZSBjaGFuZ2VzLCB3ZSBjYW4ndCB1c2UgdGhlIG1hdGNoZWQgcHJvcGVydGll
cyBjYWNoZS4gU3RhcnQgb3Zlci4KICAgICBpZiAoY2FjaGVJdGVtICYmIGNhY2hlSXRlbS0+cmVu
ZGVyU3R5bGUtPmVmZmVjdGl2ZVpvb20oKSAhPSBzdGF0ZS5zdHlsZSgpLT5lZmZlY3RpdmVab29t
KCkpCkBAIC0xNDE0LDEzICsxNDE1LDE1IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlNYXRj
aGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIGNvbnN0CiAgICAg
aWYgKGNhY2hlSXRlbSAmJiBjYWNoZUl0ZW0tPnJlbmRlclN0eWxlLT5mb250RGVzY3JpcHRpb24o
KSAhPSBzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGFw
cGx5TWF0Y2hlZFByb3BlcnRpZXMobWF0Y2hSZXN1bHQsIGVsZW1lbnQsIERvTm90VXNlTWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZSk7CiAKLSAgICAvLyBBcHBseSBwcm9wZXJ0aWVzIHRoYXQgbm8gb3Ro
ZXIgcHJvcGVydGllcyBkZXBlbmQgb24uCi0gICAgYXBwbHlDYXNjYWRlZFByb3BlcnRpZXMoY2Fz
Y2FkZSwgZmlyc3RMb3dQcmlvcml0eVByb3BlcnR5LCBsYXN0Q1NTUHJvcGVydHksICZtYXRjaFJl
c3VsdCk7CisgICAgLy8gTm93IHJlc29sdmUgcmVtYWluaW5nIGN1c3RvbSBwcm9wZXJ0aWVzIGFu
ZCB0aGUgcmVzdCwgaW4gYW55IG9yZGVyCisgICAgZm9yIChhdXRvIGl0ID0gY2FzY2FkZS5jdXN0
b21Qcm9wZXJ0aWVzKCkuYmVnaW4oKTsgaXQgIT0gY2FzY2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCku
ZW5kKCk7ICsraXQpCisgICAgICAgIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShpdC0+a2V5
LCBhcHBseVN0YXRlKTsKKyAgICBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhmaXJzdExvd1ByaW9y
aXR5UHJvcGVydHksIGxhc3RDU1NQcm9wZXJ0eSwgYXBwbHlTdGF0ZSk7CiAKICAgICAvLyBGaW5h
bGx5LCBzb21lIHByb3BlcnRpZXMgbXVzdCBiZSBhcHBsaWVkIGluIHRoZSBvcmRlciB0aGV5IHdl
cmUgcGFyc2VkLgogICAgIC8vIFRoZXJlIGFyZSBzb21lIENTUyBwcm9wZXJ0aWVzIHRoYXQgYWZm
ZWN0IHRoZSBzYW1lIFJlbmRlclN0eWxlIHZhbHVlcywKICAgICAvLyBzbyB0byBwcmVzZXJ2ZSBi
ZWhhdmlvciwgd2UgcXVldWUgdGhlbSB1cCBkdXJpbmcgY2FzY2FkZSBhbmQgZmx1c2ggaGVyZS4K
LSAgICBjYXNjYWRlLmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCp0aGlzLCAmbWF0Y2hSZXN1bHQp
OworICAgIGNhc2NhZGUuYXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKnRoaXMsIGFwcGx5U3RhdGUp
OwogCiAgICAgQVNTRVJUKCFzdGF0ZS5mb250RGlydHkoKSk7CiAKQEAgLTE0NDEsOCArMTQ0NCw5
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJ
RCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBzdGQ6CiAKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkK
IHsKKyAgICBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSBhcHBseVN0YXRlIHsgdGhpcywgbnVs
bHB0ciwgbnVsbHB0ciB9OwogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgYXBwbHlQcm9wZXJ0eShp
ZCwgdmFsdWUpOworICAgICAgICBhcHBseVByb3BlcnR5KGlkLCB2YWx1ZSwgYXBwbHlTdGF0ZSk7
CiB9CiAKIGlubGluZSBib29sIGlzVmFsaWRWaXNpdGVkTGlua1Byb3BlcnR5KENTU1Byb3BlcnR5
SUQgaWQpCkBAIC0xNjA5LDE2ICsxNjEzLDE4IEBAIFN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJv
cGVydGllcyogU3R5bGVSZXNvbHZlcjo6Y2FzY2FkZWRQcm9wZXJ0aWVzRm9yUm9sbGJhY2soCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlY2tlcjo6TGlu
a01hdGNoTWFzayBsaW5rTWF0Y2hNYXNrLCBjb25zdCBNYXRjaFJlc3VsdCogbWF0Y2hSZXN1bHQp
Cit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NT
VmFsdWUqIHZhbHVlLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSwgU2Vs
ZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hNYXNrIGxpbmtNYXRjaE1hc2spCiB7CisgICAgYXV0byog
bWF0Y2hSZXN1bHQgPSBhcHBseVN0YXRlLm1hdGNoUmVzdWx0OwogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIWlzU2hvcnRoYW5kQ1NTUHJvcGVydHkoaWQpLCAiU2hvcnRoYW5kIHByb3BlcnR5IGlk
ID0gJWQgd2Fzbid0IGV4cGFuZGVkIGF0IHBhcnNpbmcgdGltZSIsIGlkKTsKIAogICAgIFN0YXRl
JiBzdGF0ZSA9IG1fc3RhdGU7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlVG9BcHBseSA9
IHZhbHVlOwogICAgIGlmICh2YWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2VzKCkpIHsKLSAgICAg
ICAgdmFsdWVUb0FwcGx5ID0gcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKGlkLCAqdmFsdWUpOwotICAg
ICAgICBpZiAoIXZhbHVlVG9BcHBseSkgeworICAgICAgICB2YWx1ZVRvQXBwbHkgPSByZXNvbHZl
ZFZhcmlhYmxlVmFsdWUoaWQsICp2YWx1ZSwgYXBwbHlTdGF0ZSk7CisgICAgICAgIC8vIElmIGFw
cGxpZWRQcm9wZXJ0aWVzIGFscmVhZHkgaGFzIHRoaXMgaWQsIHRoZW4gd2UgZGV0ZWN0ZWQgYSBj
eWNsZSwgYW5kIHRoaXMgdmFsdWUgc2hvdWxkIGJlIHVuc2V0LgorICAgICAgICBpZiAoIXZhbHVl
VG9BcHBseSB8fCBhcHBseVN0YXRlLmFwcGxpZWRQcm9wZXJ0aWVzLmdldChpZCkpIHsKICAgICAg
ICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAg
ICAgICAgICAgdmFsdWVUb0FwcGx5ID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJ
bmhlcml0ZWRWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZQpAQCAtMTYyOSw3ICsxNjM1LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1Zh
bHVlKiB2YWx1ZSwgU2VsZWN0b3JDaGUKICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9u
QXdhcmVQcm9wZXJ0eShpZCkpIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBuZXdJZCA9IENTU1By
b3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+
ZGlyZWN0aW9uKCksIHN0YXRlLnN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwogICAgICAgICBBU1NF
UlQobmV3SWQgIT0gaWQpOwotICAgICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0eShuZXdJZCwgdmFs
dWVUb0FwcGx5LmdldCgpLCBsaW5rTWF0Y2hNYXNrLCBtYXRjaFJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBhcHBseVByb3BlcnR5KG5ld0lkLCB2YWx1ZVRvQXBwbHkuZ2V0KCksIGFwcGx5U3RhdGUs
IGxpbmtNYXRjaE1hc2spOwogICAgIH0KIAogICAgIENTU1ZhbHVlKiB2YWx1ZVRvQ2hlY2tGb3JJ
bmhlcml0SW5pdGlhbCA9IHZhbHVlVG9BcHBseS5nZXQoKTsKQEAgLTE2NDAsNyArMTY0Niw5IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NW
YWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlCiAKICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlDdXN0
b20pIHsKICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZSA9ICZkb3duY2FzdDxDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlPigqdmFsdWVUb0FwcGx5KTsKLSAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1
ZUlEID0gY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWVJRCgpOworICAgICAgICBBU1NFUlQoY3Vz
dG9tUHJvcGVydHlWYWx1ZS0+aXNSZXNvbHZlZCgpKTsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4oY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSkpCisg
ICAgICAgICAgICBjdXN0b21Qcm9wZXJ0eVZhbHVlSUQgPSBXVEY6OmdldDxDU1NWYWx1ZUlEPihj
dXN0b21Qcm9wZXJ0eVZhbHVlLT52YWx1ZSgpKTsKICAgICAgICAgYXV0byYgbmFtZSA9IGN1c3Rv
bVByb3BlcnR5VmFsdWUtPm5hbWUoKTsKICAgICAgICAgY3VzdG9tUHJvcGVydHlSZWdpc3RlcmVk
ID0gZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQobmFt
ZSk7CiAgICAgfQpAQCAtMTY2NywxMyArMTY3NSwxMyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBTZWxlY3RvckNo
ZQogICAgICAgICAgICAgICAgIGlmIChjdXN0b21Qcm9wZXJ0eVJlZ2lzdGVyZWQgJiYgY3VzdG9t
UHJvcGVydHlSZWdpc3RlcmVkLT5pbmhlcml0cyAmJiByb2xsYmFjay0+aGFzQ3VzdG9tUHJvcGVy
dHkoY3VzdG9tUHJvcGVydHlWYWx1ZS0+bmFtZSgpKSkgewogICAgICAgICAgICAgICAgICAgICBh
dXRvIHByb3BlcnR5ID0gcm9sbGJhY2stPmN1c3RvbVByb3BlcnR5KGN1c3RvbVByb3BlcnR5VmFs
dWUtPm5hbWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5jc3NWYWx1ZVts
aW5rTWF0Y2hNYXNrXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkocHJv
cGVydHkuaWQsIHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2tdLCBsaW5rTWF0Y2hNYXNr
LCBtYXRjaFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHBy
b3BlcnR5LmlkLCBwcm9wZXJ0eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgYXBwbHlTdGF0ZSwg
bGlua01hdGNoTWFzayk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHJvbGxiYWNrLT5oYXNQcm9wZXJ0eShpZCkp
IHsKICAgICAgICAgICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IHJvbGxiYWNrLT5wcm9wZXJ0eShp
ZCk7CiAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LmNzc1ZhbHVlW2xpbmtNYXRjaE1hc2td
KQotICAgICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0
eS5jc3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgbGlua01hdGNoTWFzaywgbWF0Y2hSZXN1bHQpOwor
ICAgICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHByb3BlcnR5LmlkLCBwcm9wZXJ0eS5j
c3NWYWx1ZVtsaW5rTWF0Y2hNYXNrXSwgYXBwbHlTdGF0ZSwgbGlua01hdGNoTWFzayk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xNzAyLDEwICsxNzEwLDEw
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUsIFNlbGVjdG9yQ2hlCiAgICAgU3R5bGVCdWlsZGVyOjphcHBseVByb3Bl
cnR5KGlkLCAqdGhpcywgKnZhbHVlVG9BcHBseSwgaXNJbml0aWFsLCBpc0luaGVyaXQsIGN1c3Rv
bVByb3BlcnR5UmVnaXN0ZXJlZCk7CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZT4gU3R5bGVSZXNvbHZl
cjo6cmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpIGNvbnN0CitSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUmVzb2x2ZXI6OnJlc29s
dmVkVmFyaWFibGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJRCwgY29uc3QgQ1NTVmFsdWUmIHZh
bHVlLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CiAgICAgQ1NT
UGFyc2VyIHBhcnNlcihkb2N1bWVudCgpKTsKLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWVX
aXRoVmFyaWFibGVSZWZlcmVuY2VzKHByb3BJRCwgdmFsdWUsIGRvY3VtZW50KCkuZ2V0Q1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCksICptX3N0YXRlLnN0eWxlKCkpOworICAgIHJldHVy
biBwYXJzZXIucGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMocHJvcElELCB2YWx1ZSwg
c3RhdGUpOwogfQogCiBSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6c3R5bGVJbWFn
ZShDU1NWYWx1ZSYgdmFsdWUpCkBAIC0yMjI3LDEzICsyMjM1LDEzIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjphZGRJbXBvcnRhbnRNYXRjaGVzKGNvbnN0IE1hdGNo
UmVzdWx0JiBtCiAgICAgICAgIGFkZE1hdGNoKG1hdGNoUmVzdWx0LCBtYXRjaC5pbmRleCwgdHJ1
ZSwgaW5oZXJpdGVkT25seSk7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9w
ZXJ0aWVzOjphcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVyJiByZXNvbHZlciwg
Y29uc3QgTWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVyOjpDYXNj
YWRlZFByb3BlcnRpZXM6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKFN0eWxlUmVzb2x2ZXImIHJl
c29sdmVyLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0ZSYgYXBwbHlTdGF0ZSkKIHsKICAgICBm
b3IgKGF1dG8mIHByb3BlcnR5IDogbV9kZWZlcnJlZFByb3BlcnRpZXMpCi0gICAgICAgIHByb3Bl
cnR5LmFwcGx5KHJlc29sdmVyLCBtYXRjaFJlc3VsdCk7CisgICAgICAgIHByb3BlcnR5LmFwcGx5
KHJlc29sdmVyLCBhcHBseVN0YXRlKTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRl
ZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwgY29u
c3QgTWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0KQordm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRl
ZFByb3BlcnRpZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwgQXBw
bHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIGFwcGx5U3RhdGUpCiB7CiAgICAgU3RhdGUmIHN0YXRl
ID0gcmVzb2x2ZXIuc3RhdGUoKTsKICAgICBzdGF0ZS5zZXRDYXNjYWRlTGV2ZWwobGV2ZWwpOwpA
QCAtMjI0Miw3ICsyMjUwLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRp
ZXM6OlByb3BlcnR5OjphcHBseShTdHlsZVJlc29sdmVyJiByZXNvbHZlciwKICAgICBpZiAoY3Nz
VmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHRdKSB7CiAgICAgICAgIHN0YXRlLnNl
dEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKTsKICAgICAgICAgc3RhdGUuc2V0QXBw
bHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSk7Ci0gICAgICAgIHJlc29sdmVyLmFw
cGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hEZWZhdWx0XSwg
U2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIG1hdGNoUmVzdWx0KTsKKyAgICAgICAgcmVz
b2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaERl
ZmF1bHRdLCBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoRGVmYXVsdCk7CiAgICAg
fQogCiAgICAgaWYgKHN0YXRlLnN0eWxlKCktPmluc2lkZUxpbmsoKSA9PSBJbnNpZGVMaW5rOjpO
b3RJbnNpZGUpCkBAIC0yMjUxLDQzICsyMjU5LDExMiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OkNh
c2NhZGVkUHJvcGVydGllczo6UHJvcGVydHk6OmFwcGx5KFN0eWxlUmVzb2x2ZXImIHJlc29sdmVy
LAogICAgIGlmIChjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGlua10pIHsKICAgICAg
ICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKHRydWUpOwogICAgICAgICBz
dGF0ZS5zZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKLSAgICAgICAg
cmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRj
aExpbmtdLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNoTGluaywgbWF0Y2hSZXN1bHQpOworICAgICAg
ICByZXNvbHZlci5hcHBseVByb3BlcnR5KGlkLCBjc3NWYWx1ZVtTZWxlY3RvckNoZWNrZXI6Ok1h
dGNoTGlua10sIGFwcGx5U3RhdGUsIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rKTsKICAgICB9
CiAKICAgICBpZiAoY3NzVmFsdWVbU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWRdKSB7CiAg
ICAgICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZShmYWxzZSk7CiAgICAg
ICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUodHJ1ZSk7Ci0gICAg
ICAgIHJlc29sdmVyLmFwcGx5UHJvcGVydHkoaWQsIGNzc1ZhbHVlW1NlbGVjdG9yQ2hlY2tlcjo6
TWF0Y2hWaXNpdGVkXSwgU2VsZWN0b3JDaGVja2VyOjpNYXRjaFZpc2l0ZWQsIG1hdGNoUmVzdWx0
KTsKKyAgICAgICAgcmVzb2x2ZXIuYXBwbHlQcm9wZXJ0eShpZCwgY3NzVmFsdWVbU2VsZWN0b3JD
aGVja2VyOjpNYXRjaFZpc2l0ZWRdLCBhcHBseVN0YXRlLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNo
VmlzaXRlZCk7CiAgICAgfQogCiAgICAgc3RhdGUuc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0
eWxlKHRydWUpOwogICAgIHN0YXRlLnNldEFwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUo
ZmFsc2UpOwogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVz
KENhc2NhZGVkUHJvcGVydGllcyYgY2FzY2FkZSwgaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0
UHJvcGVydHksIGNvbnN0IE1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdCkKK3ZvaWQgU3R5bGVSZXNv
bHZlcjo6YXBwbHlDYXNjYWRlZEN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgQXBw
bHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmIHN0YXRlKQogewotICAgIGZvciAoaW50IGlkID0gZmly
c3RQcm9wZXJ0eTsgaWQgPD0gbGFzdFByb3BlcnR5OyArK2lkKSB7Ci0gICAgICAgIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGlkKTsKLSAgICAg
ICAgaWYgKCFjYXNjYWRlLmhhc1Byb3BlcnR5KHByb3BlcnR5SUQpKQorICAgIGlmIChzdGF0ZS5h
cHBsaWVkQ3VzdG9tUHJvcGVydGllcy5jb250YWlucyhuYW1lKSB8fCAhc3RhdGUuY2FzY2FkZS0+
Y3VzdG9tUHJvcGVydGllcygpLmNvbnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIHByb3BlcnR5ID0gc3RhdGUuY2FzY2FkZS0+Y3VzdG9tUHJvcGVydGllcygpLmdldChu
YW1lKTsKKworICAgIGZvciAoYXV0byBpbmRleCA6IHsgU2VsZWN0b3JDaGVja2VyOjpNYXRjaERl
ZmF1bHQsIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rLCBTZWxlY3RvckNoZWNrZXI6Ok1hdGNo
VmlzaXRlZCB9KSB7CisgICAgICAgIGlmICghcHJvcGVydHkuY3NzVmFsdWVbaW5kZXhdKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5
Q3VzdG9tKSB7Ci0gICAgICAgICAgICAvLyBBcHBseSBmb250IHNpemUgZmlyc3QsIHNpbmNlIGN1
c3RvbSBwcm9wZXJ0aWVzIG1heSByZWx5IG9uIGl0IGZvciByZWxhdGl2ZSB1bml0IGNhbGN1bGF0
aW9ucwotICAgICAgICAgICAgLy8gT25jZSBpdCBpcyBhcHBsaWVkIGFuZCB0aGUgY3VzdG9tIHBy
b3BlcnR5IHZhbHVlcyBhcmUgc2V0LCBpdCB3aWxsIGJlIGFwcGxpZWQgYWdhaW4sIHdoaWNoIHNo
b3VsZAotICAgICAgICAgICAgLy8gaGFuZGxlIGFueSBmb250LXNpemUgcHJvcGVydGllcyB0aGF0
IHJlbHkgb24gcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVydGllcy4KLSAgICAgICAgICAgIC8vIEZJ
WE1FIGN5Y2xlcyBzaG91bGQgYmUgZGV0ZWN0ZWQuCi0gICAgICAgICAgICBpZiAoY2FzY2FkZS5o
YXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplKSkKLSAgICAgICAgICAgICAgICBjYXNjYWRl
LnByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpLmFwcGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7
Ci0gICAgICAgICAgICB1cGRhdGVGb250KCk7Ci0KLSAgICAgICAgICAgIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5Pjo6aXRlcmF0b3IgZW5kID0gY2Fz
Y2FkZS5jdXN0b21Qcm9wZXJ0aWVzKCkuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBDYXNjYWRlZFByb3BlcnRpZXM6OlByb3BlcnR5Pjo6aXRlcmF0b3IgaXQg
PSBjYXNjYWRlLmN1c3RvbVByb3BlcnRpZXMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0g
ICAgICAgICAgICAgICAgaXQtPnZhbHVlLmFwcGx5KCp0aGlzLCBtYXRjaFJlc3VsdCk7Ci0gICAg
ICAgICAgICBtX3N0YXRlLnN0eWxlKCktPmNoZWNrVmFyaWFibGVzSW5DdXN0b21Qcm9wZXJ0aWVz
KGRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0KCksIG1fc3RhdGUu
cGFyZW50U3R5bGUoKSwgKnRoaXMpOworICAgICAgICBpZiAoaW5kZXggIT0gU2VsZWN0b3JDaGVj
a2VyOjpNYXRjaERlZmF1bHQgJiYgdGhpcy0+c3RhdGUoKS5zdHlsZSgpLT5pbnNpZGVMaW5rKCkg
PT0gSW5zaWRlTGluazo6Tm90SW5zaWRlKQogICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IHZhbHVlVG9BcHBseSA9IENTU0N1c3RvbVBy
b3BlcnR5VmFsdWU6OmNyZWF0ZShkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPigqcHJv
cGVydHkuY3NzVmFsdWVbaW5kZXhdKSk7CisKKyAgICAgICAgaWYgKHN0YXRlLmluUHJvZ3Jlc3NQ
cm9wZXJ0aWVzQ3VzdG9tLmNvbnRhaW5zKG5hbWUpKSB7CisgICAgICAgICAgICAvLyBXZSBhcmUg
aW4gYSBjeWNsZSwgc28gcmVzZXQgdGhlIHZhbHVlLgorICAgICAgICAgICAgc3RhdGUuYXBwbGll
ZEN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGlz
IHZhbHVlIHNvIHRoYXQgd2UgcmVzZXQgaXRzIGRlcGVuZGVuY2llcworICAgICAgICAgICAgaWYg
KFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+Pih2
YWx1ZVRvQXBwbHktPnZhbHVlKCkpKQorICAgICAgICAgICAgICAgIHJlc29sdmVkVmFyaWFibGVW
YWx1ZShDU1NQcm9wZXJ0eUN1c3RvbSwgdmFsdWVUb0FwcGx5LmdldCgpLCBzdGF0ZSk7CisgICAg
ICAgICAgICB2YWx1ZVRvQXBwbHkgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVXaXRo
SUQobmFtZSwgQ1NTVmFsdWVVbnNldCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0ZS5pblBy
b2dyZXNzUHJvcGVydGllc0N1c3RvbS5hZGQobmFtZSk7CisKKyAgICAgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+Pih2YWx1ZVRvQXBw
bHktPnZhbHVlKCkpKSB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVl
ID0gcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5Q3VzdG9tLCB2YWx1ZVRvQXBwbHku
Z2V0KCksIHN0YXRlKTsKKworICAgICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSkKKyAgICAgICAg
ICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVdpdGhJ
RChuYW1lLCBDU1NWYWx1ZVVuc2V0KTsKKworICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gZG93
bmNhc3Q8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4oKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllc0N1c3RvbS5jb250YWlucyhu
YW1lKSkgeworICAgICAgICAgICAgaWYgKGluZGV4ID09IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hE
ZWZhdWx0KSB7CisgICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5
VG9SZWd1bGFyU3R5bGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUoKS5zZXRB
cHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGluZGV4ID09IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hMaW5rKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5
bGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpcy0+c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5
VG9WaXNpdGVkTGlua1N0eWxlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGluZGV4ID09IFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2hWaXNpdGVkKSB7CisgICAgICAgICAg
ICAgICAgdGhpcy0+c3RhdGUoKS5zZXRBcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUoZmFsc2Up
OworICAgICAgICAgICAgICAgIHRoaXMtPnN0YXRlKCkuc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRl
ZExpbmtTdHlsZSh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGx5UHJvcGVy
dHkoQ1NTUHJvcGVydHlDdXN0b20sIHZhbHVlVG9BcHBseS5wdHIoKSwgc3RhdGUsIGluZGV4KTsK
ICAgICAgICAgfQotICAgICAgICBhdXRvJiBwcm9wZXJ0eSA9IGNhc2NhZGUucHJvcGVydHkocHJv
cGVydHlJRCk7CisgICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tLnJlbW92
ZShuYW1lKTsKKyAgICAgICAgc3RhdGUuYXBwbGllZEN1c3RvbVByb3BlcnRpZXMuYWRkKG5hbWUp
OworICAgIH0KK30KKwordm9pZCBTdHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGll
cyhpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3Bl
cnR5U3RhdGUmIHN0YXRlKQoreworICAgIGlmIChMSUtFTFkoc3RhdGUuY2FzY2FkZS0+Y3VzdG9t
UHJvcGVydGllcygpLmlzRW1wdHkoKSkpCisgICAgICAgIHJldHVybiBhcHBseUNhc2NhZGVkUHJv
cGVydGllc0ltcGw8Q3VzdG9tUHJvcGVydHlDeWNsZVRyYWNraW5nOjpEaXNhYmxlZD4oZmlyc3RQ
cm9wZXJ0eSwgbGFzdFByb3BlcnR5LCBzdGF0ZSk7CisgICAgcmV0dXJuIGFwcGx5Q2FzY2FkZWRQ
cm9wZXJ0aWVzSW1wbDxDdXN0b21Qcm9wZXJ0eUN5Y2xlVHJhY2tpbmc6OkVuYWJsZWQ+KGZpcnN0
UHJvcGVydHksIGxhc3RQcm9wZXJ0eSwgc3RhdGUpOworfQorCit0ZW1wbGF0ZTxTdHlsZVJlc29s
dmVyOjpDdXN0b21Qcm9wZXJ0eUN5Y2xlVHJhY2tpbmcgVHJhY2tDeWNsZXM+CitpbmxpbmUgdm9p
ZCBTdHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllc0ltcGwoaW50IGZpcnN0UHJv
cGVydHksIGludCBsYXN0UHJvcGVydHksIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0
ZSkKK3sKKyAgICBmb3IgKGludCBpZCA9IGZpcnN0UHJvcGVydHk7IGlkIDw9IGxhc3RQcm9wZXJ0
eTsgKytpZCkgeworICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPihpZCk7CisgICAgICAgIGlmICghc3RhdGUuY2FzY2FkZS0+aGFzUHJv
cGVydHkocHJvcGVydHlJRCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgQVNTRVJU
KHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlDdXN0b20pOworICAgICAgICBhdXRvJiBwcm9wZXJ0
eSA9IHN0YXRlLmNhc2NhZGUtPnByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgICAgICBBU1NFUlQo
IXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIocHJvcGVydHlJRCkpOwotICAgICAgICBw
cm9wZXJ0eS5hcHBseSgqdGhpcywgbWF0Y2hSZXN1bHQpOworCisgICAgICAgIGlmIChUcmFja0N5
Y2xlcyA9PSBDdXN0b21Qcm9wZXJ0eUN5Y2xlVHJhY2tpbmc6OkRpc2FibGVkKSB7CisgICAgICAg
ICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFueSBjdXN0b20gcHJvcGVydGllcywgdGhlbiB0aGVy
ZSBjYW4ndCBiZSBhbnkgY3ljbGVzLgorICAgICAgICAgICAgcHJvcGVydHkuYXBwbHkoKnRoaXMs
IHN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5pblByb2dyZXNzUHJvcGVydGllcy5nZXQocHJvcGVydHlJRCkpKSB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgYXJlIGluIGEgY3ljbGUgKGVnLiBzZXR0aW5nIGZvbnQgc2l6ZSB1c2luZyByZWdp
c3RlcmVkIGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZSBjb250YWluaW5nIGVtKS4KKyAgICAgICAgICAg
ICAgICAvLyBTbyB0aGlzIHZhbHVlIHNob3VsZCBiZSB1bnNldC4KKyAgICAgICAgICAgICAgICBz
dGF0ZS5hcHBsaWVkUHJvcGVydGllcy5zZXQocHJvcGVydHlJRCk7CisgICAgICAgICAgICAgICAg
Ly8gVGhpcyBwcm9wZXJ0eSBpcyBpbiBhIGN5Y2xlLCBhbmQgb25seSB0aGUgcm9vdCBvZiB0aGUg
Y2FsbCBzdGFjayB3aWxsIGhhdmUgZmlyc3RQcm9wZXJ0eSAhPSBsYXN0UHJvcGVydHkuCisgICAg
ICAgICAgICAgICAgQVNTRVJUKGZpcnN0UHJvcGVydHkgPT0gbGFzdFByb3BlcnR5KTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RhdGUu
aW5Qcm9ncmVzc1Byb3BlcnRpZXMuc2V0KHByb3BlcnR5SUQpOworICAgICAgICAgICAgcHJvcGVy
dHkuYXBwbHkoKnRoaXMsIHN0YXRlKTsKKyAgICAgICAgICAgIHN0YXRlLmFwcGxpZWRQcm9wZXJ0
aWVzLnNldChwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHN0YXRlLmluUHJvZ3Jlc3NQcm9wZXJ0
aWVzLnNldChwcm9wZXJ0eUlELCBmYWxzZSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDQ3MDNjZWZjM2JjMmMzYjZiNzQ5NzQ5ODc0MzVj
YWU1ZGNlNWU0YmEuLmYxOWE1MDA5OWJkYzAxMzg4NjgxODAyZDM2YjBhMzFjZjgzYmRmNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgPGJpdHNldD4KICNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTI2Nyw3ICsy
NjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIENhc2NhZGVkUHJvcGVydGllcyhUZXh0RGlyZWN0aW9u
LCBXcml0aW5nTW9kZSk7CiAKICAgICAgICAgc3RydWN0IFByb3BlcnR5IHsKLSAgICAgICAgICAg
IHZvaWQgYXBwbHkoU3R5bGVSZXNvbHZlciYsIGNvbnN0IE1hdGNoUmVzdWx0Kik7CisgICAgICAg
ICAgICB2b2lkIGFwcGx5KFN0eWxlUmVzb2x2ZXImLCBBcHBseUNhc2NhZGVkUHJvcGVydHlTdGF0
ZSYpOwogCiAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIGlkOwogICAgICAgICAgICAgQ2FzY2Fk
ZUxldmVsIGxldmVsOwpAQCAtMjgxLDcgKzI4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBh
ZGROb3JtYWxNYXRjaGVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgaW50IHN0YXJ0SW5kZXgsIGludCBl
bmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5ID0gZmFsc2UpOwogICAgICAgICB2b2lkIGFkZElt
cG9ydGFudE1hdGNoZXMoY29uc3QgTWF0Y2hSZXN1bHQmLCBpbnQgc3RhcnRJbmRleCwgaW50IGVu
ZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxzZSk7CiAKLSAgICAgICAgdm9pZCBhcHBs
eURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVyJiwgY29uc3QgTWF0Y2hSZXN1bHQqKTsK
KyAgICAgICAgdm9pZCBhcHBseURlZmVycmVkUHJvcGVydGllcyhTdHlsZVJlc29sdmVyJiwgQXBw
bHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKIAogICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgUHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0
aWVzOyB9CiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJikgY29u
c3Q7CkBAIC0zMDIsNyArMzAzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgVGV4dERpcmVjdGlvbiBt
X2RpcmVjdGlvbjsKICAgICAgICAgV3JpdGluZ01vZGUgbV93cml0aW5nTW9kZTsKICAgICB9Owot
ICAgIAorCisgICAgdm9pZCBhcHBseUNhc2NhZGVkUHJvcGVydGllcyhpbnQgZmlyc3RQcm9wZXJ0
eSwgaW50IGxhc3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKKyAgICB2
b2lkIGFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIEFwcGx5
Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJik7CisKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBmdW5jdGlv
biBmaXhlcyB1cCB0aGUgZGVmYXVsdCBmb250IHNpemUgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSBj
dXJyZW50IGdlbmVyaWMgZm9udCBmYW1pbHkgaGFzIGNoYW5nZWQuIC1kd2gKICAgICB2b2lkIGNo
ZWNrRm9yR2VuZXJpY0ZhbWlseUNoYW5nZShSZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlclN0eWxl
KiBwYXJlbnRTdHlsZSk7CkBAIC0zMjEsNyArMzI1LDEwIEBAIHByaXZhdGU6CiAgICAgZW51bSBT
aG91bGRVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlIHsgRG9Ob3RVc2VNYXRjaGVkUHJvcGVydGll
c0NhY2hlID0gMCwgVXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSB9OwogICAgIHZvaWQgYXBwbHlN
YXRjaGVkUHJvcGVydGllcyhjb25zdCBNYXRjaFJlc3VsdCYsIGNvbnN0IEVsZW1lbnQmLCBTaG91
bGRVc2VNYXRjaGVkUHJvcGVydGllc0NhY2hlID0gVXNlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7
CiAKLSAgICB2b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzKENhc2NhZGVkUHJvcGVydGllcyYs
IGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBjb25zdCBNYXRjaFJlc3VsdCop
OworICAgIGVudW0gQ3VzdG9tUHJvcGVydHlDeWNsZVRyYWNraW5nIHsgRW5hYmxlZCA9IDAsIERp
c2FibGVkIH07CisgICAgdGVtcGxhdGU8Q3VzdG9tUHJvcGVydHlDeWNsZVRyYWNraW5nPgorICAg
IGlubGluZSB2b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzSW1wbChpbnQgZmlyc3RQcm9wZXJ0
eSwgaW50IGxhc3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKKwogICAg
IHZvaWQgY2FzY2FkZU1hdGNoZXMoQ2FzY2FkZWRQcm9wZXJ0aWVzJiwgY29uc3QgTWF0Y2hSZXN1
bHQmLCBib29sIGltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGludCBlbmRJbmRleCwgYm9vbCBp
bmhlcml0ZWRPbmx5KTsKIAogICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoTWF0Y2hSZXN1bHQmLCBS
dWxlU2V0KiwgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcm
IHBhZ2VOYW1lKTsKQEAgLTQ1NSwxMiArNDYyLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdy
aXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IG1fc3RhdGUuc2V0V3JpdGluZ01v
ZGUod3JpdGluZ01vZGUpOyB9CiAgICAgdm9pZCBzZXRUZXh0T3JpZW50YXRpb24oVGV4dE9yaWVu
dGF0aW9uIHRleHRPcmllbnRhdGlvbikgeyBtX3N0YXRlLnNldFRleHRPcmllbnRhdGlvbih0ZXh0
T3JpZW50YXRpb24pOyB9CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc29sdmVkVmFyaWFibGVW
YWx1ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NWYWx1ZSYpIGNvbnN0OworICAgIFJlZlB0cjxD
U1NWYWx1ZT4gcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1Zh
bHVlJiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwogCi0gICAgdm9pZCBhcHBseVByb3Bl
cnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKiwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0Y2hN
YXNrID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQsIGNvbnN0IE1hdGNoUmVzdWx0KiA9
IG51bGxwdHIpOworICAgIHZvaWQgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1
ZSosIEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiwgU2VsZWN0b3JDaGVja2VyOjpMaW5rTWF0
Y2hNYXNrID0gU2VsZWN0b3JDaGVja2VyOjpNYXRjaERlZmF1bHQpOwogCiAgICAgdm9pZCBhcHBs
eVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CiAKQEAgLTUyNCw2ICs1MzEs
MTkgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1hdGNoUmFu
Z2VzJiwgY29uc3QgTWF0Y2hSYW5nZXMmKTsKIH07CiAKKy8vIFN0YXRlIHRvIHVzZSB3aGVuIGFw
cGx5aW5nIHByb3BlcnRpZXMsIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggY3VzdG9tIGFuZCBoaWdo
LXByaW9yaXR5CisvLyBwcm9wZXJ0aWVzIGhhdmUgYmVlbiByZXNvbHZlZC4KK3N0cnVjdCBBcHBs
eUNhc2NhZGVkUHJvcGVydHlTdGF0ZSB7CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZl
cjsKKyAgICBTdHlsZVJlc29sdmVyOjpDYXNjYWRlZFByb3BlcnRpZXMqIGNhc2NhZGU7CisgICAg
Y29uc3QgU3R5bGVSZXNvbHZlcjo6TWF0Y2hSZXN1bHQqIG1hdGNoUmVzdWx0OworICAgIEJpdG1h
cDxudW1DU1NQcm9wZXJ0aWVzPiBhcHBsaWVkUHJvcGVydGllcyA9IHsgfTsKKyAgICBIYXNoU2V0
PFN0cmluZz4gYXBwbGllZEN1c3RvbVByb3BlcnRpZXMgPSB7IH07CisgICAgQml0bWFwPG51bUNT
U1Byb3BlcnRpZXM+IGluUHJvZ3Jlc3NQcm9wZXJ0aWVzID0geyB9OworICAgIEhhc2hTZXQ8U3Ry
aW5nPiBpblByb2dyZXNzUHJvcGVydGllc0N1c3RvbSA9IHsgfTsKK307CisKKwogaW5saW5lIGJv
b2wgU3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nICZhdHRyaWJ1dGVOYW1lKSBjb25zdAogewogICAg
IEFTU0VSVCghYXR0cmlidXRlTmFtZS5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXIuY3BwCmluZGV4IDlkZjBmZDQ1OWY5MDczMzI0NDBkNWU4YTliODE2YjE2NTI0
ZGNlZGMuLjBkNmFlZjA4ZjkyNGYwNzg4OWQyY2ExNDEwOGNlNTdhMTg0NWJkZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTdHlsZUNvbG9yLmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1
ZGUgIlN0eWxlUnVsZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTc3LDggKzE3OCwxMCBAQCB2b2lkIENTU1Bh
cnNlcjo6cGFyc2VEZWNsYXJhdGlvbkZvckluc3BlY3Rvcihjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0LCBjbwogICAgIENTU1BhcnNlckltcGw6OnBhcnNlRGVjbGFyYXRpb25MaXN0Rm9y
SW5zcGVjdG9yKHN0cmluZywgY29udGV4dCwgb2JzZXJ2ZXIpOwogfQogCi1SZWZQdHI8Q1NTVmFs
dWU+IENTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5jZXMoQ1NTUHJvcGVy
dHlJRCBwcm9wSUQsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgY29uc3QgQ1NTUmVnaXN0ZXJlZEN1
c3RvbVByb3BlcnR5U2V0JiByZWdpc3RlcmVkUHJvcGVydGllcywgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlKQorUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFi
bGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcElELCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUs
IEFwcGx5Q2FzY2FkZWRQcm9wZXJ0eVN0YXRlJiBzdGF0ZSkKIHsKKyAgICBBU1NFUlQoKHByb3BJ
RCA9PSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiB2YWx1ZS5pc0N1c3RvbVByb3BlcnR5VmFsdWUoKSkg
fHwgKHByb3BJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSAmJiAhdmFsdWUuaXNDdXN0b21Qcm9wZXJ0
eVZhbHVlKCkpKTsKKyAgICBhdXRvJiBzdHlsZSA9ICpzdGF0ZS5zdHlsZVJlc29sdmVyLT5zdHls
ZSgpOwogICAgIGF1dG8gZGlyZWN0aW9uID0gc3R5bGUuZGlyZWN0aW9uKCk7CiAgICAgYXV0byB3
cml0aW5nTW9kZSA9IHN0eWxlLndyaXRpbmdNb2RlKCk7CiAKQEAgLTE5MCwxMiArMTkzLDExIEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJl
bmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJCiAgICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KHNob3J0aGFuZElEKSkKICAgICAgICAgICAgIHNob3J0aGFuZElE
ID0gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KHNob3J0aGFuZElE
LCBkaXJlY3Rpb24sIHdyaXRpbmdNb2RlKTsKICAgICAgICAgQ1NTVmFyaWFibGVSZWZlcmVuY2VW
YWx1ZSogc2hvcnRoYW5kVmFsdWUgPSBwZW5kaW5nU3Vic3RpdHV0aW9uLnNob3J0aGFuZFZhbHVl
KCk7Ci0gICAgICAgIGNvbnN0IENTU1ZhcmlhYmxlRGF0YSogdmFyaWFibGVEYXRhID0gc2hvcnRo
YW5kVmFsdWUtPnZhcmlhYmxlRGF0YVZhbHVlKCk7Ci0gICAgICAgIEFTU0VSVCh2YXJpYWJsZURh
dGEpOwotICAgICAgICAKLSAgICAgICAgVmVjdG9yPENTU1BhcnNlclRva2VuPiByZXNvbHZlZFRv
a2VuczsKLSAgICAgICAgaWYgKCF2YXJpYWJsZURhdGEtPnJlc29sdmVUb2tlblJhbmdlKHJlZ2lz
dGVyZWRQcm9wZXJ0aWVzLCB2YXJpYWJsZURhdGEtPnRva2VucygpLCByZXNvbHZlZFRva2Vucywg
c3R5bGUpKQorCisgICAgICAgIGF1dG8gcmVzb2x2ZWREYXRhID0gc2hvcnRoYW5kVmFsdWUtPnJl
c29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoc3RhdGUpOworICAgICAgICBpZiAoIXJlc29sdmVkRGF0
YSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBWZWN0b3I8Q1NTUGFyc2Vy
VG9rZW4+IHJlc29sdmVkVG9rZW5zID0gcmVzb2x2ZWREYXRhLT50b2tlbnMoKTsKICAgICAgICAg
CiAgICAgICAgIFBhcnNlZFByb3BlcnR5VmVjdG9yIHBhcnNlZFByb3BlcnRpZXM7CiAgICAgICAg
IGlmICghQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmFsdWUoc2hvcnRoYW5kSUQsIGZhbHNlLCBy
ZXNvbHZlZFRva2VucywgbV9jb250ZXh0LCBwYXJzZWRQcm9wZXJ0aWVzLCBTdHlsZVJ1bGU6OlN0
eWxlKSkKQEAgLTIwOSwzMSArMjExLDMzIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJlbmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IENTU1ZhcmlhYmxlRGF0YSog
dmFyaWFibGVEYXRhID0gbnVsbHB0cjsKLQogICAgIGlmICh2YWx1ZS5pc1ZhcmlhYmxlUmVmZXJl
bmNlVmFsdWUoKSkgewogICAgICAgICBjb25zdCBDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlJiB2
YWx1ZVdpdGhSZWZlcmVuY2VzID0gZG93bmNhc3Q8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4o
dmFsdWUpOwotICAgICAgICB2YXJpYWJsZURhdGEgPSB2YWx1ZVdpdGhSZWZlcmVuY2VzLnZhcmlh
YmxlRGF0YVZhbHVlKCk7Ci0gICAgICAgIEFTU0VSVCh2YXJpYWJsZURhdGEpOworICAgICAgICBh
dXRvIHJlc29sdmVkRGF0YSA9IHZhbHVlV2l0aFJlZmVyZW5jZXMucmVzb2x2ZVZhcmlhYmxlUmVm
ZXJlbmNlcyhzdGF0ZSk7CisgICAgICAgIGlmICghcmVzb2x2ZWREYXRhKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VT
aW5nbGVWYWx1ZShwcm9wSUQsIHJlc29sdmVkRGF0YS0+dG9rZW5zKCksIG1fY29udGV4dCk7CiAg
ICAgfQogCi0gICAgaWYgKHZhbHVlLmlzQ3VzdG9tUHJvcGVydHlWYWx1ZSgpKSB7Ci0gICAgICAg
IGNvbnN0IENTU0N1c3RvbVByb3BlcnR5VmFsdWUmIGN1c3RvbVByb3BWYWx1ZSA9IGRvd25jYXN0
PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KHZhbHVlKTsKKyAgICBjb25zdCBhdXRvJiBjdXN0b21Q
cm9wVmFsdWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSk7CisgICAg
Y29uc3QgYXV0byYgdmFsdWVXaXRoUmVmZXJlbmNlcyA9IFdURjo6Z2V0PFJlZjxDU1NWYXJpYWJs
ZVJlZmVyZW5jZVZhbHVlPj4oY3VzdG9tUHJvcFZhbHVlLnZhbHVlKCkpLmdldCgpOwogCi0gICAg
ICAgIGlmIChjdXN0b21Qcm9wVmFsdWUucmVzb2x2ZWRUeXBlZFZhbHVlKCkpCi0gICAgICAgICAg
ICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgqY3VzdG9tUHJvcFZhbHVlLnJlc29s
dmVkVHlwZWRWYWx1ZSgpLCBzdHlsZSk7CisgICAgYXV0byYgbmFtZSA9IGRvd25jYXN0PENTU0N1
c3RvbVByb3BlcnR5VmFsdWU+KHZhbHVlKS5uYW1lKCk7CisgICAgYXV0byogcmVnaXN0ZXJlZCA9
IHN0YXRlLnN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVBy
b3BlcnR5U2V0KCkuZ2V0KG5hbWUpOworICAgIGF1dG8mIHN5bnRheCA9IHJlZ2lzdGVyZWQgPyBy
ZWdpc3RlcmVkLT5zeW50YXggOiAiKiI7CisgICAgYXV0byByZXNvbHZlZERhdGEgPSB2YWx1ZVdp
dGhSZWZlcmVuY2VzLnJlc29sdmVWYXJpYWJsZVJlZmVyZW5jZXMoc3RhdGUpOwogCi0gICAgICAg
IHZhcmlhYmxlRGF0YSA9IGN1c3RvbVByb3BWYWx1ZS52YWx1ZSgpOwotICAgIH0KLQotICAgIGlm
ICghdmFyaWFibGVEYXRhKQorICAgIGlmICghcmVzb2x2ZWREYXRhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gcmVzb2x2ZWRUb2tlbnM7Ci0g
ICAgaWYgKCF2YXJpYWJsZURhdGEtPnJlc29sdmVUb2tlblJhbmdlKHJlZ2lzdGVyZWRQcm9wZXJ0
aWVzLCB2YXJpYWJsZURhdGEtPnRva2VucygpLCByZXNvbHZlZFRva2Vucywgc3R5bGUpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGSVhNRSBoYW5kbGUgUkVNIGN5Y2xlcy4KKyAg
ICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGRlcGVuZGVuY2llczsKKyAgICBDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoc3ludGF4
LCBmYWxzZSwgZGVwZW5kZW5jaWVzLCByZXNvbHZlZERhdGEtPnRva2VucygpLCBtX2NvbnRleHQp
OworCisgICAgZm9yIChhdXRvIGlkIDogZGVwZW5kZW5jaWVzKQorICAgICAgICBzdGF0ZS5zdHls
ZVJlc29sdmVyLT5hcHBseUNhc2NhZGVkUHJvcGVydGllcyhpZCwgaWQsIHN0YXRlKTsKIAotICAg
IHJldHVybiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShwcm9wSUQsIHJlc29s
dmVkVG9rZW5zLCBtX2NvbnRleHQpOworICAgIHJldHVybiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFy
c2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgc3ludGF4LCByZXNvbHZlZERhdGEtPnRv
a2VucygpLCAqc3RhdGUuc3R5bGVSZXNvbHZlciwgbV9jb250ZXh0KTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFZlY3Rvcjxkb3VibGU+PiBDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVLZXlMaXN0KGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaApp
bmRleCAwOWJhNGIwMzBhNmM1ZjZhMmE1ZjEyYTY5MWIwMDhjYjUyNWVlYTNjLi40NzA2M2NkZmI5
YTI1NWM1NmJmZGM0NWY2Y2U0YjAzNjQ0MTEwMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dHJ1Y3QgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGU7CiBjbGFzcyBDU1NQYXJzZXJPYnNlcnZl
cjsKIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKIGNsYXNzIENvbG9yOwpAQCAtNzcsNyArNzgsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHBhcnNlU2VsZWN0b3IoY29uc3QgU3RyaW5nJiwgQ1NTU2Vs
ZWN0b3JMaXN0Jik7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlVmFsdWVXaXRoVmFyaWFi
bGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlJiwgY29uc3QgQ1NTUmVn
aXN0ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKKyAgICBSZWZQ
dHI8Q1NTVmFsdWU+IHBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5
SUQsIGNvbnN0IENTU1ZhbHVlJiwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUmKTsKIAogICAg
IHN0YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFs
c2UpOwogICAgIHN0YXRpYyBDb2xvciBwYXJzZVN5c3RlbUNvbG9yKGNvbnN0IFN0cmluZyYsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggMjFmZWJhY2M0Y2ZiYWE1MTFiYmFlYTY0NzVmMTYw
ZDUzMjVkYzBmNi4uYzNhMjNiNTk5ZThlYjRkNzljYTlmOTNlZGM2NDRmZjBiYTMxZDgyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3VzdG9tSWRl
bnRWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0N1c3RvbVByb3BlcnR5VmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NGb250RmFjZVNyY1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZlYXR1cmVWYWx1ZS5o
IgogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCkBAIC03Myw4ICs3NCwxMCBAQAogI2luY2x1
ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVh
bS5oIgogI2luY2x1ZGUgIlNWR1BhdGhVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIlN0eWxl
UmVzb2x2ZXIuaCIKICNpbmNsdWRlIDxiaXRzZXQ+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTIxMywxMiArMjE2LDEzIEBAIENTU1By
b3BlcnR5SUQgY3NzUHJvcGVydHlJRChTdHJpbmdWaWV3IHN0cmluZykKICAgICAKIHVzaW5nIG5h
bWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM7CiAKLUNTU1Byb3BlcnR5UGFyc2VyOjpD
U1NQcm9wZXJ0eVBhcnNlcihjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+KiBwYXJz
ZWRQcm9wZXJ0aWVzKQorQ1NTUHJvcGVydHlQYXJzZXI6OkNTU1Byb3BlcnR5UGFyc2VyKGNvbnN0
IENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4qIHBhcnNlZFByb3BlcnRpZXMsIGJvb2wgY29u
c3VtZVdoaXRlc3BhY2UpCiAgICAgOiBtX3JhbmdlKHJhbmdlKQogICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX3BhcnNlZFByb3BlcnRpZXMocGFyc2VkUHJvcGVydGllcykKIHsKLSAg
ICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgaWYgKGNvbnN1bWVXaGl0ZXNwYWNl
KQorICAgICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CiB9CiAKIHZvaWQgQ1NTUHJv
cGVydHlQYXJzZXI6OmFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1Byb3Bl
cnR5SUQgY3VycmVudFNob3J0aGFuZCwgUmVmPENTU1ZhbHVlPiYmIHZhbHVlLCBib29sIGltcG9y
dGFudCwgYm9vbCBpbXBsaWNpdCkKQEAgLTI3OCw2ICsyODIsMjcgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBjb24KICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK2Jvb2wgQ1NTUHJvcGVydHlQYXJzZXI6
OmNhblBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyYgc3ludGF4LCBj
b25zdCBDU1NQYXJzZXJUb2tlblJhbmdlJiB0b2tlbnMsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCit7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHRva2VucywgY29udGV4
dCwgbnVsbHB0cik7CisgICAgcmV0dXJuIHBhcnNlci5jYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVy
dHlWYWx1ZShzeW50YXgpOworfQorCitSZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NT
UHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2Um
IHRva2VucywgY29uc3QgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBDU1NQcm9wZXJ0eVBhcnNlciBwYXJzZXIodG9r
ZW5zLCBjb250ZXh0LCBudWxscHRyLCBmYWxzZSk7CisgICAgUmVmUHRyPENTU0N1c3RvbVByb3Bl
cnR5VmFsdWU+IHZhbHVlID0gcGFyc2VyLnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKG5h
bWUsIHN5bnRheCwgc3R5bGVSZXNvbHZlcik7CisgICAgaWYgKCF2YWx1ZSB8fCAhcGFyc2VyLm1f
cmFuZ2UuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHZhbHVl
OworfQorCit2b2lkIENTU1Byb3BlcnR5UGFyc2VyOjpjb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVy
dHlWYWx1ZURlcGVuZGVuY2llcyhjb25zdCBTdHJpbmcmIHN5bnRheCwgYm9vbCBpc1Jvb3QsIEhh
c2hTZXQ8Q1NTUHJvcGVydHlJRD4mIGRlcGVuZGVuY2llcywgY29uc3QgQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgdG9rZW5zLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIENT
U1Byb3BlcnR5UGFyc2VyIHBhcnNlcih0b2tlbnMsIGNvbnRleHQsIG51bGxwdHIpOworICAgIHBh
cnNlci5jb2xsZWN0UGFyc2VkQ3VzdG9tUHJvcGVydHlWYWx1ZURlcGVuZGVuY2llcyhzeW50YXgs
IGlzUm9vdCwgZGVwZW5kZW5jaWVzKTsKK30KKwogc3RhdGljIGJvb2wgaXNMZWdhY3lCcmVha1By
b3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBzd2l0Y2ggKHByb3BlcnR5
SUQpIHsKQEAgLTMyMCw3ICszNDUsNyBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVZh
bHVlU3RhcnQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBib29sIGltcG9ydGFudAogICAgIH0K
IAogICAgIGlmIChDU1NWYXJpYWJsZVBhcnNlcjo6Y29udGFpbnNWYWxpZFZhcmlhYmxlUmVmZXJl
bmNlcyhvcmlnaW5hbFJhbmdlLCBtX2NvbnRleHQpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYXJp
YWJsZVJlZmVyZW5jZVZhbHVlPiB2YXJpYWJsZSA9IENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU6
OmNyZWF0ZShDU1NWYXJpYWJsZURhdGE6OmNyZWF0ZShvcmlnaW5hbFJhbmdlKSk7CisgICAgICAg
IFJlZlB0cjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiB2YXJpYWJsZSA9IENTU1ZhcmlhYmxl
UmVmZXJlbmNlVmFsdWU6OmNyZWF0ZShvcmlnaW5hbFJhbmdlKTsKIAogICAgICAgICBpZiAoaXNT
aG9ydGhhbmQpIHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NQZW5kaW5nU3Vic3RpdHV0aW9uVmFs
dWU+IHBlbmRpbmdWYWx1ZSA9IENTU1BlbmRpbmdTdWJzdGl0dXRpb25WYWx1ZTo6Y3JlYXRlKHBy
b3BlcnR5SUQsIHZhcmlhYmxlLnJlbGVhc2VOb25OdWxsKCkpOwpAQCAtMzg4Niw3ICszOTExLDYg
QEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MKICAgICBjYXNlIENTU1Byb3BlcnR5TWluSGVpZ2h0
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlXaWR0aDoKICAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0
OgotICAgIGNhc2UgQ1NTUHJvcGVydHlDdXN0b206IC8vIEZJWE1FOiBwYXJzaW5nIGEgcmVnaXN0
ZXJlZCBjdXN0b20gcHJvcGVydHkgc2hvdWxkIGJlIGJhc2VkIG9uIGl0cyBzeW50YXguCiAgICAg
ICAgIHJldHVybiBjb25zdW1lV2lkdGhPckhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQsIFVuaXRs
ZXNzUXVpcms6OkFsbG93KTsKICAgICBjYXNlIENTU1Byb3BlcnR5TWluSW5saW5lU2l6ZToKICAg
ICBjYXNlIENTU1Byb3BlcnR5TWluQmxvY2tTaXplOgpAQCAtNDI1Niw2ICs0MjgwLDY0IEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAgICAgfQogfQogCitib29sIENTU1Byb3BlcnR5UGFyc2Vy
OjpjYW5QYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHN5bnRheCkK
K3sKKyAgICBpZiAoc3ludGF4ICE9ICIqIikgeworICAgICAgICBtX3JhbmdlLmNvbnN1bWVXaGl0
ZXNwYWNlKCk7CisKKyAgICAgICAgLy8gRmlyc3QgY2hlY2sgZm9yIGtleXdvcmRzCisgICAgICAg
IENTU1ZhbHVlSUQgaWQgPSBtX3JhbmdlLnBlZWsoKS5pZCgpOworICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlSW5pdGlhbCB8fCBpZCA9PSBDU1NWYWx1
ZVJldmVydCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGF1dG8gbG9jYWxS
YW5nZSA9IG1fcmFuZ2U7CisgICAgICAgIHdoaWxlICghbG9jYWxSYW5nZS5hdEVuZCgpKSB7Cisg
ICAgICAgICAgICBhdXRvIGlkID0gbG9jYWxSYW5nZS5jb25zdW1lKCkuZnVuY3Rpb25JZCgpOwor
ICAgICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlVmFyIHx8IGlkID09IENTU1ZhbHVlRW52KQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBGb3IgdmFyaWFibGVzLCB3ZSBqdXN0IHBl
cm1pdCBldmVyeXRoaW5nCisgICAgICAgIH0KKworICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbCA9
IGNvbnN1bWVXaWR0aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAgIGlmIChw
cmltaXRpdmVWYWwgJiYgcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgbV9yYW5n
ZS5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDU1NQcm9wZXJ0eVBhcnNl
cjo6Y29sbGVjdFBhcnNlZEN1c3RvbVByb3BlcnR5VmFsdWVEZXBlbmRlbmNpZXMoY29uc3QgU3Ry
aW5nJiBzeW50YXgsIGJvb2wgaXNSb290LCBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+JiBkZXBlbmRl
bmNpZXMpCit7CisgICAgaWYgKHN5bnRheCAhPSAiKiIpIHsKKyAgICAgICAgbV9yYW5nZS5jb25z
dW1lV2hpdGVzcGFjZSgpOworICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbCA9IGNvbnN1bWVXaWR0
aE9ySGVpZ2h0KG1fcmFuZ2UsIG1fY29udGV4dCk7CisgICAgICAgIGlmICghbV9yYW5nZS5hdEVu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsICYmIHBy
aW1pdGl2ZVZhbC0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgICAgICBwcmltaXRpdmVW
YWwtPmNvbGxlY3REaXJlY3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7
CisgICAgICAgICAgICBpZiAoaXNSb290KQorICAgICAgICAgICAgICAgIHByaW1pdGl2ZVZhbC0+
Y29sbGVjdERpcmVjdFJvb3RDb21wdXRhdGlvbmFsRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcyk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK1JlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBD
U1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN5bnRheCwgY29uc3QgU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlcikKK3sKKyAgICBpZiAoc3ludGF4ICE9ICIqIikgeworICAgICAgICBtX3Jhbmdl
LmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIGF1dG8gcHJpbWl0aXZlVmFsID0gY29uc3Vt
ZVdpZHRoT3JIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0KTsKKyAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbCAmJiBwcmltaXRpdmVWYWwtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVTeW50YXhMZW5ndGgobmFtZSwgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKHN0eWxlUmVzb2x2ZXIsICpwcmltaXRp
dmVWYWwpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVTeW50YXhBbGwobmFtZSwgQ1NTVmFyaWFibGVEYXRh
OjpjcmVhdGUobV9yYW5nZSkpOworICAgICAgICB3aGlsZSAoIW1fcmFuZ2UuYXRFbmQoKSkKKyAg
ICAgICAgICAgIG1fcmFuZ2UuY29uc3VtZSgpOworICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHBy
b3BlcnR5VmFsdWUpIH07CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHN0YXRp
YyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb25zdW1lRm9udEZhY2VVbmljb2RlUmFuZ2UoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVz
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oCmluZGV4IDdkYjc0NTNjMGQ4NDk5ZWEx
M2UwMGQ5N2NmMmUwYzUyNGY0NThiMjYuLjFkYzA1ZWY4OGRhYzI2MGFlNjEwNzIyOWI4ZGE5NmNj
NGIxN2U3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBDU1NWYWx1
ZTsKIGNsYXNzIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQ7CiBjbGFzcyBTdHlsZVNoZWV0Q29udGVu
dHM7CitjbGFzcyBTdHlsZVJlc29sdmVyOwogICAgIAogLy8gSW5wdXRzOiBQcm9wZXJ0eUlELCBp
c0ltcG9ydGFudCBib29sLCBDU1NQYXJzZXJUb2tlblJhbmdlLgogLy8gT3V0cHV0czogVmVjdG9y
IG9mIENTU1Byb3BlcnRpZXMKQEAgLTQ1LDE0ICs0NiwyMCBAQCBwdWJsaWM6CiAKICAgICAvLyBQ
YXJzZXMgYSBub24tc2hvcnRoYW5kIENTUyBwcm9wZXJ0eQogICAgIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IHBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKKyAgICBzdGF0aWMgYm9vbCBjYW5Q
YXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIHN5bnRheCwgY29uc3Qg
Q1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+IHBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0
eVZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzeW50YXgsIGNvbnN0IENT
U1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYpOworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RQYXJzZWRDdXN0b21Qcm9wZXJ0eVZh
bHVlRGVwZW5kZW5jaWVzKGNvbnN0IFN0cmluZyYgc3ludGF4LCBib29sIGlzUm9vdCwgSGFzaFNl
dDxDU1NQcm9wZXJ0eUlEPiYgZGVwZW5kZW5jaWVzLCBjb25zdCBDU1NQYXJzZXJUb2tlblJhbmdl
JiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogCiBwcml2YXRlOgotICAgIENTU1Byb3BlcnR5
UGFyc2VyKGNvbnN0IENTU1BhcnNlclRva2VuUmFuZ2UmLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiwgVmVjdG9yPENTU1Byb3BlcnR5LCAyNTY+Kik7CisgICAgQ1NTUHJvcGVydHlQYXJzZXIoY29u
c3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBWZWN0b3I8
Q1NTUHJvcGVydHksIDI1Nj4qLCBib29sIGNvbnN1bWVXaGl0ZXNwYWNlID0gdHJ1ZSk7CiAKICAg
ICAvLyBGSVhNRTogUmVuYW1lIG9uY2UgdGhlIENTU1BhcnNlclZhbHVlLWJhc2VkIHBhcnNlVmFs
dWUgaXMgcmVtb3ZlZAogICAgIGJvb2wgcGFyc2VWYWx1ZVN0YXJ0KENTU1Byb3BlcnR5SUQsIGJv
b2wgaW1wb3J0YW50KTsKICAgICBib29sIGNvbnN1bWVDU1NXaWRlS2V5d29yZChDU1NQcm9wZXJ0
eUlELCBib29sIGltcG9ydGFudCk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNpbmdsZVZh
bHVlKENTU1Byb3BlcnR5SUQsIENTU1Byb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUludmFsaWQpOwor
ICAgIGJvb2wgY2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBz
eW50YXgpOworICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBwYXJzZVR5cGVkQ3Vz
dG9tUHJvcGVydHlWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3ludGF4
LCBjb25zdCBTdHlsZVJlc29sdmVyJik7CisgICAgdm9pZCBjb2xsZWN0UGFyc2VkQ3VzdG9tUHJv
cGVydHlWYWx1ZURlcGVuZGVuY2llcyhjb25zdCBTdHJpbmcmIHN5bnRheCwgYm9vbCBpc1Jvb3Qs
IEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4mIGRlcGVuZGVuY2llcyk7CiAKICAgICBib29sIGluUXVp
cmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5tb2RlID09IEhUTUxRdWlya3NNb2Rl
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTVmFyaWFibGVQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5j
cHAKaW5kZXggODcwODZlMzZhYjgwZDFkNTgzOTZiY2FhZjk0OTEyMzNiZDVkMjIyMS4uMWJlMjNi
OWZlYzhmNWVjZGFkNGViODQ0ODUzZjllMDJjYTVhOTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NWYXJpYWJsZVBhcnNlci5jcHAKQEAgLTE4OSw4ICsxODksOCBAQCBS
ZWZQdHI8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4gQ1NTVmFyaWFibGVQYXJzZXI6OnBhcnNlRGVj
bGFyYXRpb25WYWx1ZShjb25zdCBBdAogICAgIGlmICh0eXBlID09IENTU1ZhbHVlSW52YWxpZCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKHR5cGUgPT0gQ1NTVmFsdWVJbnRlcm5h
bFZhcmlhYmxlVmFsdWUpCi0gICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpj
cmVhdGVXaXRoVmFyaWFibGVEYXRhKHZhcmlhYmxlTmFtZSwgQ1NTVmFyaWFibGVEYXRhOjpjcmVh
dGUocmFuZ2UsIGhhc1JlZmVyZW5jZXMgfHwgaGFzQXRBcHBseVJ1bGUpKTsKLSAgICByZXR1cm4g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0aElEKHZhcmlhYmxlTmFtZSwgdHlwZSk7
CisgICAgICAgIHJldHVybiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVVbnJlc29sdmVk
KHZhcmlhYmxlTmFtZSwgQ1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZTo6Y3JlYXRlKHJhbmdlKSk7
CisgICAgcmV0dXJuIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZVVucmVzb2x2ZWQodmFy
aWFibGVOYW1lLCB0eXBlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnN0YW50UHJvcGVydHlNYXAuY3BwCmluZGV4IDkwZmQxMzkzMWI3MDQxZTI5
YjlmNjc5YWMzYTFkMTM0OGM2MjBiOTcuLjZjMTA4Yzg4ODcxNWY2N2ZhOTgxODYwMGFiZGIxNTEw
NGZhYWMyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db25zdGFudFByb3BlcnR5
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29uc3RhbnRQcm9wZXJ0eU1hcC5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDb25zdGFudFByb3BlcnR5TWFwOjpzZXRWYWx1ZUZvclBy
b3BlcnR5KENvbnN0YW50UHJvcGVydHkgcHJvcGVydHksIFJlZjxDU1MKICAgICAgICAgYnVpbGRW
YWx1ZXMoKTsKIAogICAgIGF1dG8mIG5hbWUgPSBuYW1lRm9yUHJvcGVydHkocHJvcGVydHkpOwot
ICAgIG1fdmFsdWVzLT5zZXQobmFtZSwgQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlV2l0
aFZhcmlhYmxlRGF0YShuYW1lLCBXVEZNb3ZlKGRhdGEpKSk7CisgICAgbV92YWx1ZXMtPnNldChu
YW1lLCBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGVTeW50YXhBbGwobmFtZSwgV1RGTW92
ZShkYXRhKSkpOwogfQogCiB2b2lkIENvbnN0YW50UHJvcGVydHlNYXA6OmJ1aWxkVmFsdWVzKCkK
QEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlRGF0YT4gdmFyaWFibGVE
YXRhRm9yUG9zaXRpdmVQaXhlbExlbmd0aChmbG9hdCBsZW5ndGhJblB4KQogCiAgICAgVmVjdG9y
PENTU1BhcnNlclRva2VuPiB0b2tlbnMgeyB0b2tlbiB9OwogICAgIENTU1BhcnNlclRva2VuUmFu
Z2UgdG9rZW5SYW5nZSh0b2tlbnMpOwotICAgIHJldHVybiBDU1NWYXJpYWJsZURhdGE6OmNyZWF0
ZSh0b2tlblJhbmdlLCBmYWxzZSk7CisgICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRl
KHRva2VuUmFuZ2UpOwogfQogCiBzdGF0aWMgUmVmPENTU1ZhcmlhYmxlRGF0YT4gdmFyaWFibGVE
YXRhRm9yUG9zaXRpdmVEdXJhdGlvbihTZWNvbmRzIGR1cmF0aW9uSW5TZWNvbmRzKQpAQCAtMTIy
LDcgKzEyMiw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFyaWFibGVEYXRhPiB2YXJpYWJsZURhdGFGb3JQ
b3NpdGl2ZUR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb25JblNlCiAKICAgICBWZWN0b3I8Q1NTUGFy
c2VyVG9rZW4+IHRva2VucyB7IHRva2VuIH07CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSB0b2tl
blJhbmdlKHRva2Vucyk7Ci0gICAgcmV0dXJuIENTU1ZhcmlhYmxlRGF0YTo6Y3JlYXRlKHRva2Vu
UmFuZ2UsIGZhbHNlKTsKKyAgICByZXR1cm4gQ1NTVmFyaWFibGVEYXRhOjpjcmVhdGUodG9rZW5S
YW5nZSk7CiB9CiAKIHZvaWQgQ29uc3RhbnRQcm9wZXJ0eU1hcDo6dXBkYXRlQ29uc3RhbnRzRm9y
U2FmZUFyZWFJbnNldHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKaW5kZXggZGI4NWQ3ZDA5M2Y1Mjg0Y2JlYjgwMmVlODcwMDgwOGUzOTJhNzFl
ZC4uYzg1MjU4ODUwMjQ3NzBkOWM1YjVkNDkxOWVkNjViYzZlYjExOTU3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0yMjk5LDg5ICsy
Mjk5LDYgQEAgYm9vbCBSZW5kZXJTdHlsZTo6aGFzUmVmZXJlbmNlRmlsdGVyT25seSgpIGNvbnN0
CiAgICAgcmV0dXJuIGZpbHRlck9wZXJhdGlvbnMuc2l6ZSgpID09IDEgJiYgZmlsdGVyT3BlcmF0
aW9ucy5hdCgwKS0+dHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOwogfQogCi12
b2lkIFJlbmRlclN0eWxlOjpjaGVja1ZhcmlhYmxlc0luQ3VzdG9tUHJvcGVydGllcyhjb25zdCBD
U1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQmIHJlZ2lzdGVyZWRQcm9wZXJ0aWVzLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIpCi17Ci0gICAgYm9vbCBzaG91bGRVcGRhdGVJbmhlcml0ZWQgPSBtX3JhcmVJbmhlcml0
ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1ZhcmlhYmxlcyB8fCBtX3JhcmVJbmhl
cml0ZWREYXRhLT5jdXN0b21Qcm9wZXJ0aWVzLT5jb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVk
UHJvcGVydGllczsKLSAgICBib29sIHNob3VsZFVwZGF0ZU5vbkluaGVyaXRlZCA9IG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVmFyaWFibGVzIHx8IG1f
cmFyZU5vbkluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPmNvbnRhaW5zVW5yZXNvbHZl
ZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzOwotICAgIGF1dG8qIGluaGVyaXRlZFByb3BlcnR5RGF0YSA9
IHNob3VsZFVwZGF0ZUluaGVyaXRlZCA/ICZtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1
c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkgOiBudWxscHRyOwotICAgIGF1dG8qIG5vbkluaGVyaXRl
ZFByb3BlcnR5RGF0YSA9IHNob3VsZFVwZGF0ZU5vbkluaGVyaXRlZCA/ICZtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLmN1c3RvbVByb3BlcnRpZXMuYWNjZXNzKCkgOiBudWxscHRyOwot
Ci0gICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IGludmFsaWRQcm9wZXJ0aWVzOwotCi0gICAgZm9y
IChhdXRvKiBjdXN0b21Qcm9wZXJ0eURhdGEgOiB7IGluaGVyaXRlZFByb3BlcnR5RGF0YSwgbm9u
SW5oZXJpdGVkUHJvcGVydHlEYXRhIH0pIHsKLSAgICAgICAgaWYgKCFjdXN0b21Qcm9wZXJ0eURh
dGEpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBPdXIgZmlyc3QgcGFzcyBj
aGVja3MgdGhlIHZhcmlhYmxlcyBmb3IgdmFsaWRpdHkgYW5kIHJlcGxhY2VzIGFueSBwcm9wZXJ0
aWVzIHRoYXQgYmVjYW1lCi0gICAgICAgIC8vIGludmFsaWQgd2l0aCBlbXB0eSB2YWx1ZXMuCi0g
ICAgICAgIGF1dG8mIGN1c3RvbVByb3BlcnRpZXMgPSBjdXN0b21Qcm9wZXJ0eURhdGEtPnZhbHVl
czsKLSAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGN1c3RvbVByb3BlcnRpZXMpIHsKLSAgICAg
ICAgICAgIGlmICghZW50cnkudmFsdWUtPmNvbnRhaW5zVmFyaWFibGVzKCkpCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBIYXNoU2V0PEF0b21pY1N0cmluZz4gc2VlblBy
b3BlcnRpZXM7Ci0gICAgICAgICAgICBlbnRyeS52YWx1ZS0+Y2hlY2tWYXJpYWJsZXNGb3JDeWNs
ZXMoZW50cnkua2V5LCAqdGhpcywgc2VlblByb3BlcnRpZXMsIGludmFsaWRQcm9wZXJ0aWVzKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gaW52YWxpZFZhbHVlID0gQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZTo6Y3JlYXRlSW52YWxpZCgpOwotCi0gICAgICAgIC8vIE5vdyBpbnNlcnQgaW52YWxp
ZCB2YWx1ZXMsIG9yIGRlZmF1bHRzIGlmIHRoZSBwcm9wZXJ0eSBpcyByZWdpc3RlcmVkLgotICAg
ICAgICBpZiAoIWludmFsaWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZm9y
IChhdXRvJiBwcm9wZXJ0eSA6IGludmFsaWRQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjdXN0b21Qcm9wZXJ0aWVzLmNvbnRhaW5zKHByb3BlcnR5KSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY29uc3Qg
UmVmUHRyPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+KiBwYXJlbnRQcm9wZXJ0eSA9IG51bGxwdHI7
Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmVudFN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBwYXJlbnRTdHlsZS0+aW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygp
LmZpbmQocHJvcGVydHkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaXRlcmF0b3IgIT0gcGFy
ZW50U3R5bGUtPmluaGVyaXRlZEN1c3RvbVByb3BlcnRpZXMoKS5lbmQoKSAmJiBpdGVyYXRvci5n
ZXQoKSAmJiBpdGVyYXRvci5nZXQoKS0+dmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBw
YXJlbnRQcm9wZXJ0eSA9ICZpdGVyYXRvci5nZXQoKS0+dmFsdWU7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgYXV0byogcmVnaXN0ZXJlZCA9IHJlZ2lzdGVyZWRQcm9wZXJ0
aWVzLmdldChwcm9wZXJ0eSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAocmVnaXN0ZXJlZCAmJiBy
ZWdpc3RlcmVkLT5pbmhlcml0cyAmJiBwYXJlbnRQcm9wZXJ0eSkKLSAgICAgICAgICAgICAgICAg
ICAgY3VzdG9tUHJvcGVydGllcy5zZXQocHJvcGVydHksIHBhcmVudFByb3BlcnR5LT5jb3B5UmVm
KCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lzdGVyZWQgJiYgcmVnaXN0ZXJlZC0+
aW5pdGlhbFZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAgIGN1c3RvbVByb3BlcnRpZXMuc2V0
KHByb3BlcnR5LCByZWdpc3RlcmVkLT5pbml0aWFsVmFsdWVDb3B5KCkpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY3VzdG9tUHJvcGVydGllcy5zZXQocHJvcGVy
dHksIGludmFsaWRWYWx1ZS5jb3B5UmVmKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gTm93IHRoYXQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIGhhdmUgYmVlbiB0ZXN0
ZWQgZm9yIHZhbGlkaXR5IGFuZCByZXBsYWNlZCB3aXRoCi0gICAgICAgIC8vIGludmFsaWQgdmFs
dWVzIGlmIHRoZXkgZmFpbGVkLCB3ZSBjYW4gcGVyZm9ybSB2YXJpYWJsZSBzdWJzdGl0dXRpb24g
b24gdGhlIHZhbGlkIHZhbHVlcy4KLSAgICAgICAgVmVjdG9yPFJlZjxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPj4gcmVzb2x2ZWRWYWx1ZXM7Ci0gICAgICAgIGZvciAoYXV0byBlbnRyeSA6IGN1c3Rv
bVByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGlmICghZW50cnkudmFsdWUtPmNvbnRhaW5zVmFy
aWFibGVzKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBlbnRyeS52
YWx1ZS0+cmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhyZWdpc3RlcmVkUHJvcGVydGllcywgcmVz
b2x2ZWRWYWx1ZXMsICp0aGlzKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdpdGggYWxsIHJl
c3VsdHMgY29tcHV0ZWQsIHdlIGNhbiBub3cgbXV0YXRlIG91ciB0YWJsZSB0byBlbGltaW5hdGUg
dGhlIHZhcmlhYmxlcyBhbmQKLSAgICAgICAgLy8gaG9sZCB0aGUgZmluYWwgdmFsdWVzLiBUaGlz
IHdheSB3aGVuIHdlIGluaGVyaXQsIHdlIGRvbid0IGVuZCB1cCByZXN1YnN0aXR1dGluZyB2YXJp
YWJsZXMsIGV0Yy4KLSAgICAgICAgZm9yIChhdXRvJiByZXNvbHZlZFZhbHVlIDogcmVzb2x2ZWRW
YWx1ZXMpCi0gICAgICAgICAgICBjdXN0b21Qcm9wZXJ0aWVzLnNldChyZXNvbHZlZFZhbHVlLT5u
YW1lKCksIHJlc29sdmVkVmFsdWUuY29weVJlZigpKTsKLQotICAgICAgICAvLyBGaW5hbGx5IHdl
IGNhbiByZXNvbHZlIHJlZ2lzdGVyZWQgY3VzdG9tIHByb3BlcnRpZXMgdG8gdGhlaXIgdHlwZWQg
dmFsdWVzLgotICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY3VzdG9tUHJvcGVydGllcykgewot
ICAgICAgICAgICAgYXV0byYgbmFtZSA9IGVudHJ5LnZhbHVlLT5uYW1lKCk7Ci0gICAgICAgICAg
ICBhdXRvKiByZWdpc3RlcmVkID0gcmVnaXN0ZXJlZFByb3BlcnRpZXMuZ2V0KG5hbWUpOwotCi0g
ICAgICAgICAgICBpZiAoIXJlZ2lzdGVyZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgIGF1dG8gcHJpbWl0aXZlVmFsID0gc3R5bGVSZXNvbHZlci5yZXNvbHZlZFZh
cmlhYmxlVmFsdWUoQ1NTUHJvcGVydHlDdXN0b20sICplbnRyeS52YWx1ZSk7Ci0gICAgICAgICAg
ICBpZiAoIXByaW1pdGl2ZVZhbCB8fCAhcHJpbWl0aXZlVmFsLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgZW50cnkudmFsdWUgPSBpbnZhbGlkVmFsdWUuY29weVJlZigpOwot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGVudHJ5LnZhbHVlLT5zZXRSZXNvbHZl
ZFR5cGVkVmFsdWUoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoKHN0eWxlUmVz
b2x2ZXIsICpwcmltaXRpdmVWYWwpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGN1c3RvbVByb3Bl
cnR5RGF0YS0+Y29udGFpbnNWYXJpYWJsZXMgPSBmYWxzZTsKLSAgICAgICAgY3VzdG9tUHJvcGVy
dHlEYXRhLT5jb250YWluc1VucmVzb2x2ZWRSZWdpc3RlcmVkUHJvcGVydGllcyA9IGZhbHNlOwot
ICAgIH0KLX0KLQogZmxvYXQgUmVuZGVyU3R5bGU6Om91dGxpbmVXaWR0aCgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fYmFja2dyb3VuZERhdGEtPm91dGxpbmUuc3R5bGUoKSA9PSBCb3JkZXJTdHlsZTo6
Tm9uZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggZGQyNDJlNzZkM2U4MTA5Y2I4OTA3ODU3OWIyYzhhYjQxYmQ4N2U1MC4uNzA4ZTZiZjAxNDI3
Y2UxZjA4MmNkMTVhY2IxYzNlMDZkMTNiODIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTE4Niw4ICsxODYsOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCYgaW5oZXJpdGVkQ3VzdG9tUHJvcGVydGllcygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmN1c3RvbVByb3BlcnRpZXMtPnZh
bHVlczsgfQogICAgIGNvbnN0IEN1c3RvbVByb3BlcnR5VmFsdWVNYXAmIG5vbkluaGVyaXRlZEN1
c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5j
dXN0b21Qcm9wZXJ0aWVzLT52YWx1ZXM7IH0KICAgICBjb25zdCBDU1NDdXN0b21Qcm9wZXJ0eVZh
bHVlKiBnZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKLSAgICB2
b2lkIHNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSwgYm9vbCBpc1JlZ2lzdGVy
ZWQgPSBmYWxzZSkgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Q
cm9wZXJ0aWVzLmFjY2VzcygpLnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2
YWx1ZSksIGlzUmVnaXN0ZXJlZCk7IH0KLSAgICB2b2lkIHNldE5vbkluaGVyaXRlZEN1c3RvbVBy
b3BlcnR5VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZT4mJiB2YWx1ZSwgYm9vbCBpc1JlZ2lzdGVyZWQgPSBmYWxzZSkgeyByZXR1cm4gbV9y
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2VzcygpLnNl
dEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSksIGlzUmVnaXN0ZXJlZCk7
IH0KKyAgICB2b2lkIHNldEluaGVyaXRlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkgeyByZXR1
cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXN0b21Qcm9wZXJ0aWVzLmFjY2Vzcygp
LnNldEN1c3RvbVByb3BlcnR5VmFsdWUobmFtZSwgV1RGTW92ZSh2YWx1ZSkpOyB9CisgICAgdm9p
ZCBzZXROb25Jbmhlcml0ZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFsdWU+JiYgdmFsdWUpIHsgcmV0dXJuIG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkuY3VzdG9tUHJvcGVydGllcy5hY2Nlc3MoKS5zZXRD
dXN0b21Qcm9wZXJ0eVZhbHVlKG5hbWUsIFdURk1vdmUodmFsdWUpKTsgfQogCiAgICAgdm9pZCBz
ZXRIYXNWaWV3cG9ydFVuaXRzKGJvb2wgdiA9IHRydWUpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5o
YXNWaWV3cG9ydFVuaXRzID0gdjsgfQogICAgIGJvb2wgaGFzVmlld3BvcnRVbml0cygpIGNvbnN0
IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzVmlld3BvcnRVbml0czsgfQpAQCAtNzk1
LDggKzc5NSw2IEBAIHB1YmxpYzoKICAgICBBcHBsZVBheUJ1dHRvblR5cGUgYXBwbGVQYXlCdXR0
b25UeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXBwbGVQYXlCdXR0b25UeXBlPiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5hcHBsZVBheUJ1dHRvblR5cGUpOyB9CiAjZW5kaWYKIAot
ICAgIHZvaWQgY2hlY2tWYXJpYWJsZXNJbkN1c3RvbVByb3BlcnRpZXMoY29uc3QgQ1NTUmVnaXN0
ZXJlZEN1c3RvbVByb3BlcnR5U2V0JiwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBj
b25zdCBTdHlsZVJlc29sdmVyJik7Ci0KIC8vIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcwogCiAg
ICAgdm9pZCBzZXREaXNwbGF5KERpc3BsYXlUeXBlIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5l
ZmZlY3RpdmVEaXNwbGF5ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0
YS5oCmluZGV4IDFiY2RiMjJlOGU5ZDNiYzM5NDExMzA0ODQyOGRiM2U2ODc4NTgyZGQuLjEzMmU2
ZjUyNTYwZTY1Y2FjNTRlNGM1YjUzZmQ3ZDQxMDM1Zjc1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCkBA
IC0yMiw2ICsyMiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU0N1c3RvbVByb3Bl
cnR5VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zNyw5ICszOCw2IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90aGVyKSBjb25z
dAogICAgIHsKLSAgICAgICAgaWYgKGNvbnRhaW5zVmFyaWFibGVzICE9IG90aGVyLmNvbnRhaW5z
VmFyaWFibGVzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgICAgIGlmICh2YWx1
ZXMuc2l6ZSgpICE9IG90aGVyLnZhbHVlcy5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKQEAgLTU0LDI2ICs1MiwxOCBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsgfQogICAgIAotICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYmIHZh
bHVlLCBib29sIGlzUmVnaXN0ZXJlZCkKKyAgICB2b2lkIHNldEN1c3RvbVByb3BlcnR5VmFsdWUo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2
YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmICh2YWx1ZS0+Y29udGFpbnNWYXJpYWJsZXMoKSkKLSAg
ICAgICAgICAgIGNvbnRhaW5zVmFyaWFibGVzID0gdHJ1ZTsKLSAgICAgICAgaWYgKGlzUmVnaXN0
ZXJlZCkKLSAgICAgICAgICAgIGNvbnRhaW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVz
ID0gdHJ1ZTsKICAgICAgICAgdmFsdWVzLnNldChuYW1lLCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAg
fQogCiAgICAgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCB2YWx1ZXM7Ci0gICAgYm9vbCBjb250YWlu
c1ZhcmlhYmxlcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBjb250YWluc1VucmVzb2x2ZWRSZWdpc3Rl
cmVkUHJvcGVydGllcyB7IGZhbHNlIH07CiAKIHByaXZhdGU6CiAgICAgU3R5bGVDdXN0b21Qcm9w
ZXJ0eURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEoY29uc3Qg
U3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90aGVyKQogICAgICAgICA6IFJlZkNvdW50ZWQ8U3R5
bGVDdXN0b21Qcm9wZXJ0eURhdGE+KCkKICAgICAgICAgLCB2YWx1ZXMob3RoZXIudmFsdWVzKQot
ICAgICAgICAsIGNvbnRhaW5zVmFyaWFibGVzKG90aGVyLmNvbnRhaW5zVmFyaWFibGVzKQotICAg
ICAgICAsIGNvbnRhaW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzKG90aGVyLmNvbnRh
aW5zVW5yZXNvbHZlZFJlZ2lzdGVyZWRQcm9wZXJ0aWVzKQogICAgIHsgfQogfTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDY4YTBkNWI1MDViZDczZGQ3M2U4OWFkYjNkMThhNTAwZDcyOWRmYjQuLmI2N2YzZGY5OWY2MmZm
YzBjYzVhYWUwOWU0MzM4YzdjZmZkYTk0OGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0x
MC0yOSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ1NTIEN1c3RvbSBQcm9wZXJ0aWVzIEFQSSBTaG91bGQgU3VwcG9ydCBzeW50YXg9IioiIGFu
ZCAiPGxlbmd0aD4iLCBhbmQgaGFuZGxlIGN5Y2xlcyBwcm9wZXJseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDQyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3BlcnRpZXMt
YXBpL2NyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY3NzLWN1c3RvbS1wcm9w
ZXJ0aWVzLWFwaS9jcmFzaC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MtY3VzdG9tLXByb3Bl
cnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNzcy1jdXN0
b20tcHJvcGVydGllcy1hcGkvY3ljbGVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNzcy1jdXN0
b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
Y3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbDogQWRkZWQuCisKIDIwMTgtMTAt
MzEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IEF1ZGl0OiBzaG93IG1ldGFkYXRhIGZvciByZXN1bHRzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCBiZTU3YTVmMjJhY2Q0NmNjOTJlZGExMDI0YjE1ZmY4NDZjMjk4MzNl
Li5jZGY2MTVmOGY2ZmEwNGJiOWE0OWY1OTM0MmI4M2Y4NTJlOTAxYzE4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0xMC0yOSAgSnVzdGluIE1p
Y2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1NTIEN1c3RvbSBQ
cm9wZXJ0aWVzIEFQSSBTaG91bGQgU3VwcG9ydCBzeW50YXg9IioiIGFuZCAiPGxlbmd0aD4iLCBh
bmQgaGFuZGxlIGN5Y2xlcyBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVz
LXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVz
LWFwaS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS9y
ZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdHlwZWRvbS50ZW50YXRp
dmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXBy
b3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1j
eWNsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXByb3BlcnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGll
cy1leHBlY3RlZC50eHQ6CisKIDIwMTgtMTAtMzEgIFlVSEFOIFdVICA8eXVoYW5fd3VAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1lZGlhUmVjb3JkZXIgc2hvdWxkIGZpcmUgZGF0YWF2YWlsYWJsZSBl
dmVudCB3aGVuIGFsbCB0cmFja3MgYXJlIGVuZGVkIGFuZCBzdG9wKCkgaXMgY2FsbGVkCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3Jhc2gtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZjBmZjVlOTAwNzFkZTk5ZWYwYWJmODliODc4MDI2YmRk
MTBiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRp
ZXMtYXBpL2NyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaXMgdGV4dAor
CisKK1BBU1MgRmFsbGJhY2sgaXMgaGFuZGxlZCBjb3JyZWN0bHksIGFuZCB3ZSBkb24ndCBjcmFz
aCAKK1BBU1MgU2V0dGluZyB0aGUgaW5saW5lIHN0eWxlIGlzIGhhbmRsZWQgY29ycmVjdGx5IAor
UEFTUyBDU1MucmVnaXN0ZXJQcm9wZXJ0eSAKK1BBU1MgU2V0dGluZyB0aGUgaW5saW5lIHN0eWxl
IGlzIGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gcmVnaXN0ZXJlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sIGIvTGF5b3V0VGVz
dHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jcmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMmNk
NzBhMmEzMWRlYWI5OWYwMDMyYzQxZmVhN2E1YzhhYjdmOWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2NyYXNoLmh0bWwKQEAgLTAsMCAr
MSw2MyBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBleHBlcmlt
ZW50YWw6Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVlc0VuYWJsZWQ9dHJ1ZSBdIC0tPgorPCEt
LSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjLysvMDFjZTQz
MTQwOWUzYTAxOTg1ODY3NzYyNmE5ODNjNTUxNjhkYTZkYy90aGlyZF9wYXJ0eS9XZWJLaXQvTGF5
b3V0VGVzdHMvY3VzdG9tLXByb3BlcnRpZXMvcmVnaXN0ZXItcHJvcGVydHkuaHRtbCAtLT4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisKKzxz
dHlsZT4KKyAgI3Rlc3QxIHsKKyAgICBmb250LXNpemU6IHZhcigtLWZvbywgMzBweCk7CisgICAg
LS1mb286IHZhcigtLWJhciwgMjBweCk7CisgICAgLS1iYXI6IHZhcigtLWJheiwgdmFyKC0tZm9v
KSk7CisgIH0KKzwvc3R5bGU+Cis8ZGl2PgorICA8aDIgaWQ9dGVzdDE+VGhpcyBpcyB0ZXh0PC9o
Mj4KKzwvZGl2PgorPHNjcmlwdD4KK3ZhciBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHls
ZSh0ZXN0MSk7Cit2YXIgaW5saW5lU3R5bGUgPSB0ZXN0MS5zdHlsZTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0t
YmF6JyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFs
dWUoJy0tZm9vJyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3Bl
cnR5VmFsdWUoJy0tYmFyJyksICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdl
dFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMzBweCcpOworfSwgIkZhbGxiYWNrIGlzIGhh
bmRsZWQgY29ycmVjdGx5LCBhbmQgd2UgZG9uJ3QgY3Jhc2giKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYmF6JywgJyAgIDQwcHgnKTsKKyAgYXNz
ZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6JyksICcgNDBw
eCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1m
b28nKSwgJycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1iYXInKSwgJycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVy
dHlWYWx1ZSgnLS1iYXonKSwgJyA0MHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHls
ZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgJzMwcHgnKTsKKyAgaW5saW5lU3R5bGUu
cmVtb3ZlUHJvcGVydHkoJy0tYmF6Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWJheicpLCAnJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWZvbycpLCAnJyk7CisgIGFzc2VydF9lcXVhbHMoY29t
cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnJyk7CisgIGFzc2VydF9lcXVh
bHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgJzMwcHgnKTsK
KyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6Jyks
ICcnKTsKK30sICJTZXR0aW5nIHRoZSBpbmxpbmUgc3R5bGUgaXMgaGFuZGxlZCBjb3JyZWN0bHki
KTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICct
LWZvbycsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOiAnMjAwcHgnLCBpbmhlcml0
czogdHJ1ZX0pOworICBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogJy0tYmFyJywgc3ludGF4
OiAnPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6ICcyMDBweCcsIGluaGVyaXRzOiB0cnVlfSk7Cisg
IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiAnLS1iYXonLCBzeW50YXg6ICc8bGVuZ3RoPics
IGluaXRpYWxWYWx1ZTogJzIwMHB4JywgaW5oZXJpdHM6IHRydWV9KTsKK30sICJDU1MucmVnaXN0
ZXJQcm9wZXJ0eSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBpbmxpbmVTdHlsZS5zZXRQcm9w
ZXJ0eSgnLS1iYXonLCAnICAgNDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1iYXonKSwgJzQwcHgnKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21w
dXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tZm9vJyksICcyMDBweCcpOworICBhc3NlcnRf
ZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iYXInKSwgJzIwMHB4Jyk7
CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJheicp
LCAnNDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnZm9udC1zaXplJyksICcyMDBweCcpOworICBpbmxpbmVTdHlsZS5yZW1vdmVQcm9wZXJ0eSgn
LS1iYXonKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Jy0tYmF6JyksICcyMDBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1mb28nKSwgJzIwMHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWJhcicpLCAnMjAwcHgnKTsKKyAgYXNzZXJ0X2VxdWFs
cyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2ZvbnQtc2l6ZScpLCAnMjAwcHgnKTsK
KyAgYXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYmF6Jyks
ICcyMDBweCcpOworfSwgIlNldHRpbmcgdGhlIGlubGluZSBzdHlsZSBpcyBoYW5kbGVkIGNvcnJl
Y3RseSB3aGVuIHJlZ2lzdGVyZWQiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2Q0ODZlYjIwYTY5YjlhNTk5NTEwOWJlMDhiYjM0NWU0NGY5NjgwOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJvcGVydGllcy1hcGkvY3ljbGVz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACit0ZXN0CisKK3Rlc3QKKwordGVzdAorCit0
ZXN0CisKK3Rlc3QKKworCitQQVNTIFJlZ2lzdHJhdGlvbiBpcyBzdWNjZXNzZnVsIAorUEFTUyBK
UyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCAxIAorUEFTUyBKUyBBdHRyaWJ1dGVz
IGFyZSB2YWxpZCBmb3IgZWxlbWVudCAyIAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBm
b3IgZWxlbWVudCAzIAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA0
IAorUEFTUyBKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA1IAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jc3MtY3VzdG9tLXByb3BlcnRpZXMtYXBpL2N5Y2xlcy5odG1sIGIv
TGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZWMyNGM4ODQ0ODliMzg5OTJjNWQ2MmFkNzU2MmVmZGQwMmJjOTJhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9jeWNsZXMuaHRt
bApAQCAtMCwwICsxLDEzMCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5u
ZXIgWyBleHBlcmltZW50YWw6Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVlc0VuYWJsZWQ9dHJ1
ZSBdIC0tPgorPCEtLSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v
c3JjLysvMDFjZTQzMTQwOWUzYTAxOTg1ODY3NzYyNmE5ODNjNTUxNjhkYTZkYy90aGlyZF9wYXJ0
eS9XZWJLaXQvTGF5b3V0VGVzdHMvY3VzdG9tLXByb3BlcnRpZXMvcmVnaXN0ZXItcHJvcGVydHku
aHRtbCAtLT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhcmVudDEgeworICAgIHdpZHRoOiA1MDBweDsKKyAgICBi
YWNrZ3JvdW5kOiBibHVlOworICB9CisgICNjaGlsZDEgeworICAgIGJhY2tncm91bmQ6IGdyZWVu
OworICAgIGZvbnQtc2l6ZTogMTBweDsKKyAgICAtLWE6IDEwZW07CisgICAgd2lkdGg6IHZhcigt
LWEpOworICB9CisKKyAgI3BhcmVudDIgeworICAgIHdpZHRoOiA1MDBweDsKKyAgICBiYWNrZ3Jv
dW5kOiBibHVlOworICAgIC0tYTogMTBlbTsKKyAgICBmb250LXNpemU6IGNhbGMoIHZhcigtLWEp
ICsgLTE1MHB4KTsKKyAgfQorICAjY2hpbGQyIHsKKyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAg
ICB3aWR0aDogdmFyKC0tYSk7CisgIH0KKworICAjcGFyZW50MyB7CisgICAgd2lkdGg6IDUwMHB4
OworICAgIGJhY2tncm91bmQ6IGJsdWU7CisgICAgLS1iOiAxMGVtOworICAgIGZvbnQtc2l6ZTog
Y2FsYyggdmFyKC0tYikgKyAtMTUwcHgpOworICB9CisgICNjaGlsZDMgeworICAgIGJhY2tncm91
bmQ6IGdyZWVuOworICAgIHdpZHRoOiB2YXIoLS1iKTsKKyAgfQorCisgICNwYXJlbnQ0IHsKKyAg
ICB3aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAtLWI6IDEwZW07Cisg
ICAgZm9udC1zaXplOiBjYWxjKCB2YXIoLS1iKSArIC0xNTBweCk7CisgIH0KKyAgI2NoaWxkNCB7
CisgICAgYmFja2dyb3VuZDogZ3JlZW47CisgICAgLS1hOiB2YXIoLS1iKTsKKyAgICBmb250LXNp
emU6IHZhcigtLWEpOworICAgIHdpZHRoOiB2YXIoLS1hKTsKKyAgfQorCisgICNwYXJlbnQ1IHsK
KyAgICB3aWR0aDogNTAwcHg7CisgICAgYmFja2dyb3VuZDogYmx1ZTsKKyAgICAtLWI6IDVlbTsK
KyAgICBmb250LXNpemU6IGNhbGMoIHZhcigtLWIpICsgLTcwcHgpOworICB9CisgICNjaGlsZDUg
eworICAgIGJhY2tncm91bmQ6IGdyZWVuOworICAgIC0tYzogdmFyKC0tYik7CisgICAgZm9udC1z
aXplOiB2YXIoLS1jKTsKKyAgICB3aWR0aDogdmFyKC0tYyk7CisgIH0KKzwvc3R5bGU+Cis8ZGl2
PgorICA8ZGl2IGlkPSJwYXJlbnQxIj48ZGl2IGlkPSJjaGlsZDEiPjxwPnRlc3Q8L3A+PC9kaXY+
PC9kaXY+CisgIDxkaXYgaWQ9InBhcmVudDIiPjxkaXYgaWQ9ImNoaWxkMiI+PHA+dGVzdDwvcD48
L2Rpdj48L2Rpdj4KKyAgPGRpdiBpZD0icGFyZW50MyI+PGRpdiBpZD0iY2hpbGQzIj48cD50ZXN0
PC9wPjwvZGl2PjwvZGl2PgorICA8ZGl2IGlkPSJwYXJlbnQ0Ij48ZGl2IGlkPSJjaGlsZDQiPjxw
PnRlc3Q8L3A+PC9kaXY+PC9kaXY+CisgIDxkaXYgaWQ9InBhcmVudDUiPjxkaXYgaWQ9ImNoaWxk
NSI+PHA+dGVzdDwvcD48L2Rpdj48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
dGVzdF9wcm9wKGlkLCBwcm9wLCBleHBlY3RlZCkgeworICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSkuZ2V0UHJvcGVydHlW
YWx1ZShwcm9wKS50cmltKCksIGV4cGVjdGVkKTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAg
Q1NTLnJlZ2lzdGVyUHJvcGVydHkoeworICAgIG5hbWU6ICctLWEnLAorICAgIHN5bnRheDogJzxs
ZW5ndGg+JywKKyAgICBpbmhlcml0czogdHJ1ZSwKKyAgICBpbml0aWFsVmFsdWU6ICcyMDBweCcK
KyAgfSkKK30sICJSZWdpc3RyYXRpb24gaXMgc3VjY2Vzc2Z1bCIpOwordGVzdChmdW5jdGlvbigp
IHsKKyAgdGVzdF9wcm9wKCdjaGlsZDEnLCAnd2lkdGgnLCAnMTAwcHgnKTsKKyAgdGVzdF9wcm9w
KCdjaGlsZDEnLCAnLS1hJywgJzEwMHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQxJywgJy0tYics
ICcnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQxJywgJy0tYScsICcyMDBweCcpOworICB0ZXN0X3By
b3AoJ3BhcmVudDEnLCAnLS1iJywgJycpOworfSwgIkpTIEF0dHJpYnV0ZXMgYXJlIHZhbGlkIGZv
ciBlbGVtZW50IDEiKTsKK3Rlc3QoZnVuY3Rpb24oKSB7CisgIHRlc3RfcHJvcCgnY2hpbGQyJywg
J3dpZHRoJywgJzE2MHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQyJywgJy0tYScsICcxNjBweCcp
OworICB0ZXN0X3Byb3AoJ2NoaWxkMicsICctLWInLCAnJyk7CisgIHRlc3RfcHJvcCgnY2hpbGQy
JywgJ2ZvbnQtc2l6ZScsICcxNnB4Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50MicsICctLWEnLCAn
MTYwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQyJywgJy0tYicsICcnKTsKKyAgdGVzdF9wcm9w
KCdwYXJlbnQyJywgJ2ZvbnQtc2l6ZScsICcxNnB4Jyk7Cit9LCAiSlMgQXR0cmlidXRlcyBhcmUg
dmFsaWQgZm9yIGVsZW1lbnQgMiIpOwordGVzdChmdW5jdGlvbigpIHsKKyAgdGVzdF9wcm9wKCdj
aGlsZDMnLCAnd2lkdGgnLCAnMTAwcHgnKTsKKyAgdGVzdF9wcm9wKCdjaGlsZDMnLCAnLS1hJywg
JzIwMHB4Jyk7CisgIHRlc3RfcHJvcCgnY2hpbGQzJywgJy0tYicsICcxMGVtJyk7CisgIHRlc3Rf
cHJvcCgnY2hpbGQzJywgJ2ZvbnQtc2l6ZScsICcxMHB4Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50
MycsICctLWEnLCAnMjAwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQzJywgJy0tYicsICcxMGVt
Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50MycsICdmb250LXNpemUnLCAnMTBweCcpOworfSwgIkpT
IEF0dHJpYnV0ZXMgYXJlIHZhbGlkIGZvciBlbGVtZW50IDMiKTsKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgIHRlc3RfcHJvcCgnY2hpbGQ0JywgJ3dpZHRoJywgJzEwMHB4Jyk7CisgIHRlc3RfcHJvcCgn
Y2hpbGQ0JywgJy0tYScsICcxMDBweCcpOworICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICctLWInLCAn
MTBlbScpOworICB0ZXN0X3Byb3AoJ2NoaWxkNCcsICdmb250LXNpemUnLCAnMTBweCcpOworICB0
ZXN0X3Byb3AoJ3BhcmVudDQnLCAnLS1hJywgJzIwMHB4Jyk7CisgIHRlc3RfcHJvcCgncGFyZW50
NCcsICctLWInLCAnMTBlbScpOworICB0ZXN0X3Byb3AoJ3BhcmVudDQnLCAnZm9udC1zaXplJywg
JzEwcHgnKTsKK30sICJKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxlbWVudCA0Iik7Cit0
ZXN0KGZ1bmN0aW9uKCkgeworICB0ZXN0X3Byb3AoJ2NoaWxkNScsICd3aWR0aCcsICcyNTBweCcp
OworICB0ZXN0X3Byb3AoJ2NoaWxkNScsICctLWMnLCAnNWVtJyk7CisgIHRlc3RfcHJvcCgnY2hp
bGQ1JywgJy0tYicsICc1ZW0nKTsKKyAgdGVzdF9wcm9wKCdjaGlsZDUnLCAnZm9udC1zaXplJywg
JzUwcHgnKTsKKyAgdGVzdF9wcm9wKCdwYXJlbnQ1JywgJy0tYScsICcyMDBweCcpOworICB0ZXN0
X3Byb3AoJ3BhcmVudDUnLCAnLS1iJywgJzVlbScpOworICB0ZXN0X3Byb3AoJ3BhcmVudDUnLCAn
Zm9udC1zaXplJywgJzEwcHgnKTsKK30sICJKUyBBdHRyaWJ1dGVzIGFyZSB2YWxpZCBmb3IgZWxl
bWVudCA1Iik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nzcy1jdXN0b20t
cHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0
b20tcHJvcGVydGllcy1hcGkvaW5saW5lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTY4MTYy
NjUyOWZiZjEwYjFjNTBmZjAwYzM3MTExYTkwZWM2YzFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvY3NzLWN1c3RvbS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTUgQEAKK3Rlc3QKKworCitQQVNTIENTU09NIHNldHRlcnMgZnVuY3Rpb24gYXMg
ZXhwZWN0ZWQgZm9yIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIAorUEFTUyBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSAKK1BBU1MgRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFkYWJsZSBm
cm9tIGlubGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFsdWUgCitQ
QVNTIFZhbHVlcyBub3QgbWF0Y2hpbmcgdGhlIHJlZ2lzdGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQg
CitQQVNTIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlubGluZSBzdHlsZXMgCitQQVNTIFN0
eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSAKK1BBU1MgVmFsaWQgdmFsdWVzIGNh
biBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyAKK1BBU1MgVmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQg
CitQQVNTIFZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlvbiAKK1BBU1Mg
VmFyIHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uLCBldmVuIHdoZW4gaXQg
aXMgb2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlIAorUEFTUyBWYXIgdmFsdWVzIGFyZSBhY2Nl
cHRlZCB3aXRob3V0IHZhbGlkYXRpb24sIGV2ZW4gd2hlbiBpdCBpcyBvYnZpb3VzIHRoZXkgd2ls
bCBub3QgcGFyc2UgKHR5cGVkKSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzLWN1c3Rv
bS1wcm9wZXJ0aWVzLWFwaS9pbmxpbmUuaHRtbCBiL0xheW91dFRlc3RzL2Nzcy1jdXN0b20tcHJv
cGVydGllcy1hcGkvaW5saW5lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFiYTdmZWJjMDYzOTQ0NjViY2Nm
ZWQ4NGNlYTlmZTIzMTU0ZWIwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nzcy1j
dXN0b20tcHJvcGVydGllcy1hcGkvaW5saW5lLmh0bWwKQEAgLTAsMCArMSwxMjAgQEAKKzwhRE9D
VFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU0N1c3Rv
bVByb3BlcnRpZXNBbmRWYWx1ZXNFbmFibGVkPXRydWUgXSAtLT4KKzwhLS0gaHR0cHM6Ly9jaHJv
bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYy8rLzAxY2U0MzE0MDllM2EwMTk4NTg2
Nzc2MjZhOTgzYzU1MTY4ZGE2ZGMvdGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzL2N1c3Rv
bS1wcm9wZXJ0aWVzL3JlZ2lzdGVyLXByb3BlcnR5Lmh0bWwgLS0+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+CisgICN0ZXN0
MSB7CisgICAgLS1hOiAxMGVtOworICAgIC0tYjogMTBlbTsKKyAgfQorPC9zdHlsZT4KKzxkaXY+
CisgIDxkaXYgaWQ9dGVzdDE+PHA+dGVzdDwvcD48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KKwor
dmFyIGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHRlc3QxKTsKK3ZhciBpbmxpbmVT
dHlsZSA9IHRlc3QxLnN0eWxlOwordmFyIHNoZWV0U3R5bGUgPSBkb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5jc3NSdWxlc1swXS5zdHlsZTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgLy8gTm90aGlu
ZyByZWdpc3RlcmVkIHlldCwgd2hhdGV2ZXIgeW91IHNwZWNpZnkgd29ya3MKKyAgYXNzZXJ0X2Vx
dWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnIDEwZW0nKTsKKyAg
YXNzZXJ0X2VxdWFscyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDEw
ZW0nKTsKKworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2hlbGxvJyk7CisgIGlu
bGluZVN0eWxlLnNldFByb3BlcnR5KCctLWInLCAnYm9uam91cicpOworCisgIGFzc2VydF9lcXVh
bHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycpOworICBhc3Nl
cnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnYm9uam91cicp
OworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyks
ICdoZWxsbycpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgnLS1iJyksICdib25qb3VyJyk7Cit9LCAiQ1NTT00gc2V0dGVycyBmdW5jdGlvbiBhcyBleHBl
Y3RlZCBmb3IgdW5yZWdpc3RlcmVkIHByb3BlcnRpZXMiKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6ICctLWEnLCBzeW50YXg6ICc8bGVuZ3RoPics
IGluaXRpYWxWYWx1ZTogJzBweCcsIGluaGVyaXRzOiBmYWxzZX0pOworICBDU1MucmVnaXN0ZXJQ
cm9wZXJ0eSh7bmFtZTogJy0tcmVnaXN0ZXJlZCcsIHN5bnRheDogJzxsZW5ndGg+JywgaW5pdGlh
bFZhbHVlOiAnMHB4JywgaW5oZXJpdHM6IGZhbHNlfSk7Cit9LCAiQ1NTLnJlZ2lzdGVyUHJvcGVy
dHkiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2hlbGxvJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5l
U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdib25qb3VyJyk7CisgIGFzc2VydF9lcXVh
bHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOworICBhc3Nl
cnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdib25qb3Vy
Jyk7Cit9LCAiRm9ybWVybHkgdmFsaWQgdmFsdWVzIGFyZSBzdGlsbCByZWFkYWJsZSBmcm9tIGlu
bGluZSBzdHlsZXMgYnV0IGFyZSBjb21wdXRlZCBhcyB0aGUgdW5zZXQgdmFsdWUiKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYScsICdoaScpOwor
ICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hpJyk7CisgIGFzc2VydF9lcXVhbHMo
aW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICdoZWxsbycpOworICBhc3NlcnRf
ZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGknKTsKK30sICJW
YWx1ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2FuJ3QgYmUgc2V0Iik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgIGlubGluZVN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWEnKTsK
KyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcnKTsKKyAgYXNzZXJ0X2VxdWFscyhp
bmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJycpOworICBhc3NlcnRfZXF1YWxz
KGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnJyk7CisgIGFzc2VydF9lcXVh
bHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzE2MHB4Jyk7CisgIGFz
c2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJyAxMGVt
Jyk7Cit9LCAiVmFsdWVzIGNhbiBiZSByZW1vdmVkIGZyb20gaW5saW5lIHN0eWxlcyIpOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICBzaGVldFN0eWxlLnNldFByb3BlcnR5KCctLWEnLCAnYmFuYW5h
Jyk7IC8vIEludmFsaWQsIG5vIGNoYW5nZQorICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcxNjBweCcpOworICBzaGVldFN0eWxlLnNldFByb3Bl
cnR5KCctLWEnLCAnMjBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1hJyksICcyMHB4Jyk7CisgIHNoZWV0U3R5bGUuc2V0UHJvcGVydHkoJy0t
YScsICdpbml0aWFsJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCctLWEnKSwgJzBweCcpOworfSwgIlN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBi
eSBDU1NPTSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0
eSgnLS1hJywgJzMwZW0nKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcyMGVt
Jyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyks
ICczMGVtJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgn
LS1iJyksICcyMGVtJyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0
eVZhbHVlKCctLWEnKSwgJzQ4MHB4Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRTdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJzIwZW0nKTsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVy
dHkoJy0tYScsICdpbmhlcml0Jyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJv
cGVydHlWYWx1ZSgnLS1hJyksICdpbmhlcml0Jyk7CisgIGFzc2VydF9lcXVhbHMoY29tcHV0ZWRT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOworfSwgIlZhbGlkIHZhbHVlcyBj
YW4gYmUgc2V0IG9uIGlubGluZSBzdHlsZXMiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5s
aW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICcgMjBweCcpOworICBpbmxpbmVTdHlsZS5zZXRQ
cm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tYikgKyAxMHB4KScpOworICBhc3NlcnRfZXF1YWxz
KGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnIDIwcHgnKTsKKyAgYXNzZXJ0
X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2NhbGModmFyKC0t
YikgKyAxMHB4KScpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1iJyksICcgMjBweCcpOworICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZSgnLS1hJyksICczMHB4Jyk7Cit9LCAiVmFyIHZhbHVlcyBhcmUgYWNjZXB0
ZWQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0t
YicsICdoZWxsbycpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFy
KC0tYikgKyAxNXB4KScpOworICBhc3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5
VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQ
cm9wZXJ0eVZhbHVlKCctLWEnKSwgJ2NhbGModmFyKC0tYikgKyAxNXB4KScpOworICBhc3NlcnRf
ZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1iJyksICdoZWxsbycpOwor
ICBhc3NlcnRfZXF1YWxzKGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLS1hJyksICcw
cHgnKTsKK30sICJWYXIgdmFsdWVzIGFyZSBhY2NlcHRlZCB3aXRob3V0IHZhbGlkYXRpb24iKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoJy0tYicsICdo
ZWxsbycpOworICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1hJywgJ2NhbGModmFyKC0tYikg
MTVweCknKTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCct
LWInKSwgJ2hlbGxvJyk7CisgIGFzc2VydF9lcXVhbHMoaW5saW5lU3R5bGUuZ2V0UHJvcGVydHlW
YWx1ZSgnLS1hJyksICdjYWxjKHZhcigtLWIpIDE1cHgpJyk7CisgIGFzc2VydF9lcXVhbHMoY29t
cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWInKSwgJ2hlbGxvJyk7CisgIGFzc2VydF9l
cXVhbHMoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwgJzBweCcpOworfSwg
IlZhciB2YWx1ZXMgYXJlIGFjY2VwdGVkIHdpdGhvdXQgdmFsaWRhdGlvbiwgZXZlbiB3aGVuIGl0
IGlzIG9idmlvdXMgdGhleSB3aWxsIG5vdCBwYXJzZSIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgnLS1iJywgJ2hlbGxvJyk7CisgIGlubGluZVN0eWxl
LnNldFByb3BlcnR5KCctLWEnLCAnY2FsYyh2YXIoLS1yZWdpc3RlcmVkKSAxNXB4KScpOworICBh
c3NlcnRfZXF1YWxzKGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8n
KTsKKyAgYXNzZXJ0X2VxdWFscyhpbmxpbmVTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctLWEnKSwg
J2NhbGModmFyKC0tcmVnaXN0ZXJlZCkgMTVweCknKTsKKyAgYXNzZXJ0X2VxdWFscyhjb21wdXRl
ZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYicpLCAnaGVsbG8nKTsKKyAgYXNzZXJ0X2VxdWFs
cyhjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy0tYScpLCAnMHB4Jyk7Cit9LCAiVmFy
IHZhbHVlcyBhcmUgYWNjZXB0ZWQgd2l0aG91dCB2YWxpZGF0aW9uLCBldmVuIHdoZW4gaXQgaXMg
b2J2aW91cyB0aGV5IHdpbGwgbm90IHBhcnNlICh0eXBlZCkiKTsKKworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3JlZ2lzdGVyLXByb3BlcnR5LXN5bnRheC1wYXJzaW5n
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3ludGF4
LXBhcnNpbmctZXhwZWN0ZWQudHh0CmluZGV4IGU5ZTJmZTczOGFiM2EyZGJkYWZkOTEwYjY0NjYx
ZDJhZGQ4M2UwM2QuLjJlYTc4ZTI5ODA2MDY4ZTViM2MzZjZlYzc5ZjZiZjlhOGE2YjE4Y2QgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHktc3ludGF4LXBhcnNp
bmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXItcHJvcGVydHkt
c3ludGF4LXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1GQUlMIHN5bnRh
eDonKicsIGluaXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUg
ZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXguCitQQVNTIHN5bnRheDonKicsIGlu
aXRpYWxWYWx1ZTonYScgaXMgdmFsaWQgCiBGQUlMIHN5bnRheDonICogJywgaW5pdGlhbFZhbHVl
OidiJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3Ig
dGhlIGdpdmVuIHN5bnRheC4KIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTon
MnB4JyBpcyB2YWxpZCAKIEZBSUwgc3ludGF4OicgPG51bWJlcj4nLCBpbml0aWFsVmFsdWU6JzUn
IGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUg
Z2l2ZW4gc3ludGF4LgpAQCAtOSwxMSArOSwxMSBAQCBGQUlMIHN5bnRheDonIDxsZW5ndGg+KyB8
IDxwZXJjZW50YWdlPicsIGluaXRpYWxWYWx1ZTonMnB4IDhweCcgaXMgdmFsaWQgVGhlIGdpdgog
UEFTUyBzeW50YXg6JzxsZW5ndGg+fDxwZXJjZW50YWdlPnw8bGVuZ3RoLXBlcmNlbnRhZ2U+Jywg
aW5pdGlhbFZhbHVlOicycHgnIGlzIHZhbGlkIAogRkFJTCBzeW50YXg6Jzxjb2xvcj4gfCA8aW1h
Z2U+IHwgPHVybD4gfCA8aW50ZWdlcj4gfCA8YW5nbGU+JywgaW5pdGlhbFZhbHVlOidyZWQnIGlz
IHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2
ZW4gc3ludGF4LgogRkFJTCBzeW50YXg6Jzx0aW1lPiB8IDxyZXNvbHV0aW9uPiB8IDx0cmFuc2Zv
cm0tbGlzdD4gfCA8Y3VzdG9tLWlkZW50PicsIGluaXRpYWxWYWx1ZToncmVkJyBpcyB2YWxpZCBU
aGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRh
eC4KLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMgdmFsaWQgVGhl
IGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBzeW50YXgu
Ci1GQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5YXkgKD8/
KX0nIGlzIHZhbGlkIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0
aGUgZ2l2ZW4gc3ludGF4LgotRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAndGhp
cyBpcyB2YWxpZCB0b28nJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5v
dCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KLUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZh
bHVlOid1bm1hdGNoZWQgb3BlbmluZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCBUaGUg
Z2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4K
LUZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOiciJyBpcyB2YWxpZCBUaGUgZ2l2ZW4gaW5p
dGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KK1BBU1Mgc3lu
dGF4OicqJywgaW5pdGlhbFZhbHVlOic6PiBoZWxsbycgaXMgdmFsaWQgCitQQVNTIHN5bnRheDon
KicsIGluaXRpYWxWYWx1ZTonKFsgYnJhY2tldHMgXSkgeyB5YXkgKD8/KX0nIGlzIHZhbGlkIAor
UEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3llcCAndGhpcyBpcyB2YWxpZCB0b28nJyBp
cyB2YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bm1hdGNoZWQgb3Blbmlu
ZyBicmFja2V0IGlzIHZhbGlkIDooJyBpcyB2YWxpZCAKK1BBU1Mgc3ludGF4OicqJywgaW5pdGlh
bFZhbHVlOiciJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1
ZTonMCcgaXMgdmFsaWQgCiBQQVNTIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEw
cHggLyo6KSovJyBpcyB2YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1
ZTonIGNhbGMoLTJweCknIGlzIHZhbGlkIApAQCAtNjMsNyArNjMsNyBAQCBiYW5hbmFccgogRkFJ
TCBzeW50YXg6J2JhDAogfAluYVxyfG55YScsIGluaXRpYWxWYWx1ZTonbnlhJyBpcyB2YWxpZCBU
aGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRh
eC4KIEZBSUwgc3ludGF4OidudWxsJywgaW5pdGlhbFZhbHVlOidudWxsJyBpcyB2YWxpZCBUaGUg
Z2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4K
LUZBSUwgc3ludGF4Oid1bmRlZmluZWQnLCBpbml0aWFsVmFsdWU6J3VuZGVmaW5lZCcgaXMgdmFs
aWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZlbiBz
eW50YXguCitQQVNTIHN5bnRheDondW5kZWZpbmVkJywgaW5pdGlhbFZhbHVlOid1bmRlZmluZWQn
IGlzIHZhbGlkIAogRkFJTCBzeW50YXg6J2FycmF5JywgaW5pdGlhbFZhbHVlOidhcnJheScgaXMg
dmFsaWQgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBnaXZl
biBzeW50YXguCiBQQVNTIHN5bnRheDonYmFuYW5hLG55YScsIGluaXRpYWxWYWx1ZTonYmFuYW5h
JyBpcyBpbnZhbGlkIAogUEFTUyBzeW50YXg6J2JhbmFuXDYxJywgaW5pdGlhbFZhbHVlOidiYW5h
bmEnIGlzIGludmFsaWQgCkBAIC04NSwzNiArODUsMzYgQEAgUEFTUyBzeW50YXg6J3Vuc2V0Jywg
aW5pdGlhbFZhbHVlOid1bnNldCcgaXMgaW52YWxpZAogRkFJTCBzeW50YXg6JzxsZW5ndGg+fGlu
aXRpYWwnLCBpbml0aWFsVmFsdWU6JzEwcHgnIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVu
Y3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5
bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQg
bm90IHRocm93CiBGQUlMIHN5bnRheDonPGxlbmd0aD58SU5IRVJJVCcsIGluaXRpYWxWYWx1ZTon
MTBweCcgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lz
dGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGlu
aXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwgc3ludGF4
Oic8cGVyY2VudGFnZT58dW5zRXQnLCBpbml0aWFsVmFsdWU6JzIlJyBpcyBpbnZhbGlkIGFzc2Vy
dF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFt
ZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czog
ZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwotUEFTUyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J2lu
aXRpYWwnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5oZXJp
dCcgaXMgaW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOid1bnNldCcgaXMg
aW52YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOidyZXZlcnQnIGlzIGludmFs
aWQgCitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcgaXMgaW52YWxpZCBh
c3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6
IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJp
dHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKK0ZBSUwgc3ludGF4OicqJywgaW5pdGlhbFZhbHVl
Oidpbmhlcml0JyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1Mu
cmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1
ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBz
eW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3Vuc2V0JyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6
IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4
OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIg
ZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3JldmVydCcgaXMg
aW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVy
dHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1
ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4Oic8Y3VzdG9t
LWlkZW50PicsIGluaXRpYWxWYWx1ZTonaW5pdGlhbCcgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4
Oic8Y3VzdG9tLWlkZW50PisnLCBpbml0aWFsVmFsdWU6J2ZvbyBpbmhlcml0IGJhcicgaXMgaW52
YWxpZCAKLVBBU1Mgc3ludGF4OicqJywgaW5pdGlhbFZhbHVlOicpJyBpcyBpbnZhbGlkIAotUEFT
UyBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbKV0nIGlzIGludmFsaWQgCi1QQVNTIHN5bnRh
eDonKicsIGluaXRpYWxWYWx1ZTond2hlZSEnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKics
IGluaXRpYWxWYWx1ZTonIgotJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFs
VmFsdWU6J3VybChtb28gJycpJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6JyonLCBpbml0aWFs
VmFsdWU6J3NlbWk7Y29sb24nIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKicsIGluaXRpYWxW
YWx1ZTondmFyKGludmFsaWQgdmFyIHJlZiknIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonKics
IGluaXRpYWxWYWx1ZTondmFyKC0tZm9vKScgaXMgaW52YWxpZCAKK0ZBSUwgc3ludGF4OicqJywg
aW5pdGlhbFZhbHVlOicpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9
PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRp
YWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwor
RkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6JyhbKV0nIGlzIGludmFsaWQgYXNzZXJ0X3Ro
cm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBz
eW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxz
ZX0pIiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTond2hlZSEn
IGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclBy
b3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFs
VmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRheDonKics
IGluaXRpYWxWYWx1ZTonIgorJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIo
KSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGlu
aXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJv
dworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFsdWU6J3VybChtb28gJycpJyBpcyBpbnZhbGlk
IGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFt
ZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhl
cml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50YXg6JyonLCBpbml0aWFsVmFs
dWU6J3NlbWk7Y29sb24nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+
IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlh
bFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitG
QUlMIHN5bnRheDonKicsIGluaXRpYWxWYWx1ZTondmFyKGludmFsaWQgdmFyIHJlZiknIGlzIGlu
dmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5
KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUs
IGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93CitGQUlMIHN5bnRheDonKicsIGluaXRp
YWxWYWx1ZTondmFyKC0tZm9vKScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAi
KCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBp
bml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhy
b3cKIFBBU1Mgc3ludGF4OidiYW5hbmEnLCBpbml0aWFsVmFsdWU6J2JBbkFuQScgaXMgaW52YWxp
ZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTondmFyKC0tbW9vKScgaXMg
aW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTonMTAnIGlzIGlu
dmFsaWQgCiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwJScgaXMgaW52
YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHko
e25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwg
aW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZBSUwgc3ludGF4Oic8bGVuZ3RoPics
IGluaXRpYWxWYWx1ZTonY2FsYyg1cHggKyAxMCUpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6
IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4
OiBzeW50YXgsIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIg
ZGlkIG5vdCB0aHJvdwogUEFTUyBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxj
KDVweCAqIDNweCAvIDZweCknIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonPGxlbmd0aD4nLCBp
bml0aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgCitGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBp
bml0aWFsVmFsdWU6JzEwZW0nIGlzIGludmFsaWQgYXNzZXJ0X3Rocm93czogZnVuY3Rpb24gIigp
ID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBuYW1lLCBzeW50YXg6IHN5bnRheCwgaW5p
dGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRzOiBmYWxzZX0pIiBkaWQgbm90IHRocm93
CiBGQUlMIHN5bnRheDonPGxlbmd0aD4nLCBpbml0aWFsVmFsdWU6JzEwdm1pbicgaXMgaW52YWxp
ZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25h
bWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5o
ZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKLVBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGlu
aXRpYWxWYWx1ZTonY2FsYyg0cHggKyAzZW0pJyBpcyBpbnZhbGlkIAotUEFTUyBzeW50YXg6Jzxs
ZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDRweCArIGNhbGMoOCAqIDJlbSkpJyBpcyBpbnZh
bGlkIAotUEFTUyBzeW50YXg6JzxsZW5ndGg+KycsIGluaXRpYWxWYWx1ZTonY2FsYygyZXggKyAx
NnB4KScgaXMgaW52YWxpZCAKK0ZBSUwgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRpYWxWYWx1ZTon
Y2FsYyg0cHggKyAzZW0pJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9
PiBDU1MucmVnaXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRp
YWxWYWx1ZTogaW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdwor
RkFJTCBzeW50YXg6JzxsZW5ndGg+JywgaW5pdGlhbFZhbHVlOidjYWxjKDRweCArIGNhbGMoOCAq
IDJlbSkpJyBpcyBpbnZhbGlkIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiBDU1MucmVn
aXN0ZXJQcm9wZXJ0eSh7bmFtZTogbmFtZSwgc3ludGF4OiBzeW50YXgsIGluaXRpYWxWYWx1ZTog
aW5pdGlhbFZhbHVlLCBpbmhlcml0czogZmFsc2V9KSIgZGlkIG5vdCB0aHJvdworRkFJTCBzeW50
YXg6JzxsZW5ndGg+KycsIGluaXRpYWxWYWx1ZTonY2FsYygyZXggKyAxNnB4KScgaXMgaW52YWxp
ZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4gQ1NTLnJlZ2lzdGVyUHJvcGVydHkoe25h
bWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5o
ZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPisnLCBp
bml0aWFsVmFsdWU6JzEwcHggY2FsYygyMHB4ICsgNHJlbSknIGlzIGludmFsaWQgCiBQQVNTIHN5
bnRheDonPHBlcmNlbnRhZ2U+IHwgPGxlbmd0aD4rJywgaW5pdGlhbFZhbHVlOidjYWxjKDEwMHZo
IC0gMTBweCkgMzBweCcgaXMgaW52YWxpZCAKIFBBU1Mgc3ludGF4Oic8bGVuZ3RoPicsIGluaXRp
YWxWYWx1ZTonMTBweDsnIGlzIGludmFsaWQgCi1QQVNTIHN5bnRheDonPGxlbmd0aC1wZXJjZW50
YWdlPicsIGluaXRpYWxWYWx1ZTonY2FsYygycHggKyAxMCUgKyA3ZXgpJyBpcyBpbnZhbGlkIAor
RkFJTCBzeW50YXg6JzxsZW5ndGgtcGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6J2NhbGMoMnB4
ICsgMTAlICsgN2V4KScgaXMgaW52YWxpZCBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiKCkgPT4g
Q1NTLnJlZ2lzdGVyUHJvcGVydHkoe25hbWU6IG5hbWUsIHN5bnRheDogc3ludGF4LCBpbml0aWFs
VmFsdWU6IGluaXRpYWxWYWx1ZSwgaW5oZXJpdHM6IGZhbHNlfSkiIGRpZCBub3QgdGhyb3cKIEZB
SUwgc3ludGF4Oic8cGVyY2VudGFnZT4nLCBpbml0aWFsVmFsdWU6JzAnIGlzIGludmFsaWQgYXNz
ZXJ0X3Rocm93czogZnVuY3Rpb24gIigpID0+IENTUy5yZWdpc3RlclByb3BlcnR5KHtuYW1lOiBu
YW1lLCBzeW50YXg6IHN5bnRheCwgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsIGluaGVyaXRz
OiBmYWxzZX0pIiBkaWQgbm90IHRocm93CiBQQVNTIHN5bnRheDonPGludGVnZXI+JywgaW5pdGlh
bFZhbHVlOicxLjAnIGlzIGludmFsaWQgCiBQQVNTIHN5bnRheDonPGludGVnZXI+JywgaW5pdGlh
bFZhbHVlOicxZTAnIGlzIGludmFsaWQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Jl
Z2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1
ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydGllcy1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKaW5k
ZXggZmMyN2IwZGYyOTk1YTdiN2Y0ZWEwZDc3NWMwZDdiNzUxZjFlZDEwYi4uNTY1NGU4MmM2YTgy
YTRjMmUyOWNiMWYzNTYwNDEyMjVkMjExZTIzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFw
aS9yZWdpc3RlcmVkLXByb3BlcnRpZXMtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0
aWVzLXZhbHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWluaGVyaXRhbmNlLWV4cGVjdGVk
LnR4dApAQCAtMiw2ICsyLDYgQEAKIFBBU1MgUmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGFyZSBjb3Jy
ZWN0bHkgaW5oZXJpdGVkIChvciBub3QpIGRlcGVuZGluZyBvbiB0aGUgaW5oZXJpdHMgZmxhZy4g
CiBQQVNTIEV4cGxpY2l0bHkgaW5oZXJpdGluZyBmcm9tIGEgcGFyZW50IHdpdGggYW4gaW52YWxp
ZCB2YWx1ZSByZXN1bHRzIGluIGluaXRpYWwgdmFsdWUuIAogUEFTUyBFeHBsaWNpdGx5IGluaGVy
aXRpbmcgZnJvbSBhIHBhcmVudCB3aXRoIG5vIHZhbHVlIHJlc3VsdHMgaW4gaW5pdGlhbCB2YWx1
ZS4gCi1GQUlMIFJlZmVyZW5jZSB0byB1bmRlZmluZWQgdmFyaWFibGUgcmVzdWx0cyBpbiBpbmhl
cml0ZWQgdmFsdWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjQycHgiIGJ1dCBnb3QgIjBweCIK
LUZBSUwgUmVmZXJlbmNlIHRvIHN5bnRheC1pbmNvbXBhdGlibGUgdmFyaWFibGUgcmVzdWx0cyBp
biBpbmhlcml0ZWQgdmFsdWUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjQycHgiIGJ1dCBnb3Qg
IjBweCIKK1BBU1MgUmVmZXJlbmNlIHRvIHVuZGVmaW5lZCB2YXJpYWJsZSByZXN1bHRzIGluIGlu
aGVyaXRlZCB2YWx1ZSAKK1BBU1MgUmVmZXJlbmNlIHRvIHN5bnRheC1pbmNvbXBhdGlibGUgdmFy
aWFibGUgcmVzdWx0cyBpbiBpbmhlcml0ZWQgdmFsdWUgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZh
bHVlcy1hcGkvcmVnaXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12
YWx1ZXMtYXBpL3JlZ2lzdGVyZWQtcHJvcGVydHktY3Nzb20tZXhwZWN0ZWQudHh0CmluZGV4IDBk
NTU2MWY0OGU1NjdlMzYyNzkyNmE0MTFhNzVlMGVjYjRiMDY4NTUuLmVmY2M1YzJlY2Y4ZWY1YThl
NDJmODJkZmM2M2U0ZmIxODJhNDc5ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvcmVn
aXN0ZXJlZC1wcm9wZXJ0eS1jc3NvbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFw
aS9yZWdpc3RlcmVkLXByb3BlcnR5LWNzc29tLWV4cGVjdGVkLnR4dApAQCAtMiw4ICsyLDggQEAK
IFBBU1MgQ1NTT00gc2V0dGVycyBmdW5jdGlvbiBhcyBleHBlY3RlZCBmb3IgdW5yZWdpc3RlcmVk
IHByb3BlcnRpZXMgCiBGQUlMIENTUy5yZWdpc3RlclByb3BlcnR5IFRoZSBnaXZlbiBpbml0aWFs
IHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4gc3ludGF4LgogRkFJTCBGb3JtZXJs
eSB2YWxpZCB2YWx1ZXMgYXJlIHN0aWxsIHJlYWRhYmxlIGZyb20gaW5saW5lIHN0eWxlcyBidXQg
YXJlIGNvbXB1dGVkIGFzIHRoZSB1bnNldCB2YWx1ZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
Ymx1ZSIgYnV0IGdvdCAiaGVsbG8iCi1GQUlMIFZhbHVlcyBub3QgbWF0Y2hpbmcgdGhlIHJlZ2lz
dGVyZWQgdHlwZSBjYW4ndCBiZSBzZXQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjUiIGJ1dCBn
b3QgImhpIgorRkFJTCBWYWx1ZXMgbm90IG1hdGNoaW5nIHRoZSByZWdpc3RlcmVkIHR5cGUgY2Fu
J3QgYmUgc2V0IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJoZWxsbyIgYnV0IGdvdCAiMjAiCiBG
QUlMIFZhbHVlcyBjYW4gYmUgcmVtb3ZlZCBmcm9tIGlubGluZSBzdHlsZXMgYXNzZXJ0X2VxdWFs
czogZXhwZWN0ZWQgInJlZCIgYnV0IGdvdCAiIHJlZCIKLUZBSUwgU3R5bGVzaGVldHMgY2FuIGJl
IG1vZGlmaWVkIGJ5IENTU09NIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMHB4IiBidXQgZ290
ICIwcHgiCitQQVNTIFN0eWxlc2hlZXRzIGNhbiBiZSBtb2RpZmllZCBieSBDU1NPTSAKIEZBSUwg
VmFsaWQgdmFsdWVzIGNhbiBiZSBzZXQgb24gaW5saW5lIHN0eWxlcyBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiYmx1ZSIgYnV0IGdvdCAiIGJsdWUiCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVl
cy1hcGkvdHlwZWRvbS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90
eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMWU0ZDI3MGFlNjhmMWViMTc2NmUz
YWM3MmQzNWJkNTAxMjYwZWY3Ni4uNjZmYmJjYTk5MDljYjlmYzU0OTY4YzI4ZTIyNmY4ZWVjODQx
NDQzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2ZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFsdWVzLWFwaS90eXBlZG9tLnRlbnRhdGl2ZS1leHBlY3Rl
ZC50eHQKQEAgLTIsNyArMiw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAzNDA6IFJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBDU1NVbnBhcnNlZFZhbHVlCiAKIEhhcm5lc3Mg
RXJyb3IgKEZBSUwpLCBtZXNzYWdlID0gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IENTU1VucGFyc2VkVmFsdWUKIAotRkFJTCBDb21wdXRlZCAqIGlzIHJlaWZpZWQgYXMgQ1NT
VW5wYXJzZWRWYWx1ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3Ig
dGhlIGdpdmVuIHN5bnRheC4KK0ZBSUwgQ29tcHV0ZWQgKiBpcyByZWlmaWVkIGFzIENTU1VucGFy
c2VkVmFsdWUgdGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
dGFyZ2V0LmNvbXB1dGVkU3R5bGVNYXAoKScsICd0YXJnZXQuY29tcHV0ZWRTdHlsZU1hcCcgaXMg
dW5kZWZpbmVkKQogRkFJTCBDb21wdXRlZCA8YW5nbGU+IGlzIHJlaWZpZWQgYXMgQ1NTVW5pdFZh
bHVlIFRoZSBnaXZlbiBpbml0aWFsIHZhbHVlIGRvZXMgbm90IHBhcnNlIGZvciB0aGUgZ2l2ZW4g
c3ludGF4LgogRkFJTCBDb21wdXRlZCA8Y29sb3I+IGlzIHJlaWZpZWQgYXMgQ1NTU3R5bGVWYWx1
ZSBUaGUgZ2l2ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5
bnRheC4KIEZBSUwgQ29tcHV0ZWQgPGN1c3RvbS1pZGVudD4gaXMgcmVpZmllZCBhcyBDU1NLZXl3
b3JkVmFsdWUgVGhlIGdpdmVuIGluaXRpYWwgdmFsdWUgZG9lcyBub3QgcGFyc2UgZm9yIHRoZSBn
aXZlbiBzeW50YXguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2Ut
cmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMt
YXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0aWVzLWN5Y2xlcy1leHBlY3RlZC50
eHQKaW5kZXggMmJlZGY2ODkyNzJlNTIwNjMxOGIzMGZhZmFkNTQ4MTJlZGVkYWE5MS4uOTMxNDUx
MjFhMWMzNDZhMmM4MjYwMWZiOGQzZGYxNTlhMDI5ZmMyNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3BlcnRpZXMtdmFs
dWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1jeWNsZXMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1wcm9wZXJ0aWVzLXZhbHVlcy1hcGkvdmFyLXJlZmVyZW5jZS1yZWdpc3RlcmVkLXBy
b3BlcnRpZXMtY3ljbGVzLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDYgQEAKIAotRkFJTCBBIHZh
cigpIGN5Y2xlIGJldHdlZW4gdHdvIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBpcyBoYW5kbGVkIGNv
cnJlY3RseS4gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjJweCIgYnV0IGdvdCAiM3B4IgotRkFJ
TCBBIHZhcigpIGN5Y2xlIGJldHdlZW4gYSByZWdpc3RlcmVkIHByb3BlcnRpZXMgYW5kIGFuIHVu
cmVnaXN0ZXJlZCBwcm9wZXJ0eSBpcyBoYW5kbGVkIGNvcnJlY3RseS4gYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgIjFweCIgYnV0IGdvdCAiMnB4IgorUEFTUyBBIHZhcigpIGN5Y2xlIGJldHdlZW4g
dHdvIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBpcyBoYW5kbGVkIGNvcnJlY3RseS4gCitQQVNTIEEg
dmFyKCkgY3ljbGUgYmV0d2VlbiBhIHJlZ2lzdGVyZWQgcHJvcGVydGllcyBhbmQgYW4gdW5yZWdp
c3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAKIFBBU1MgQSB2YXIoKSBjeWNs
ZSBiZXR3ZWVuIGEgdHdvIHVucmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGlzIGhhbmRsZWQgY29ycmVj
dGx5LiAKLUZBSUwgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4OicqJyBwcm9wZXJ0eSBh
bmQgYW4gdW5yZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiBUaGUgZ2l2
ZW4gaW5pdGlhbCB2YWx1ZSBkb2VzIG5vdCBwYXJzZSBmb3IgdGhlIGdpdmVuIHN5bnRheC4KK1BB
U1MgQSB2YXIoKSBjeWNsZSBiZXR3ZWVuIGEgc3ludGF4OicqJyBwcm9wZXJ0eSBhbmQgYW4gdW5y
ZWdpc3RlcmVkIHByb3BlcnR5IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXByb3Bl
cnRpZXMtdmFsdWVzLWFwaS92YXItcmVmZXJlbmNlLXJlZ2lzdGVyZWQtcHJvcGVydGllcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9w
ZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBkYjUzNWU0Yzg4ODYxMjY3MGQwZDJkMzc0YzU4YjVm
NGUwNGQxOTgxLi4zOWU2NzVkNDM0YWUxYTkwZTUyZGE5ZWFiNmY0MDI2NjRkOWMwMzczIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVnaXN0ZXJlZC1wcm9wZXJ0
aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtcHJvcGVydGllcy12YWx1ZXMtYXBpL3Zhci1yZWZlcmVuY2UtcmVn
aXN0ZXJlZC1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCB2
YXIoKSByZWZlcmVuY2VzIHdvcmsgd2l0aCByZWdpc3RlcmVkIHByb3BlcnRpZXMgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgIjE1cHgiIGJ1dCBnb3QgIjEwJSIKK0ZBSUwgdmFyKCkgcmVmZXJlbmNl
cyB3b3JrIHdpdGggcmVnaXN0ZXJlZCBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICIgIDEwcHgiIGJ1dCBnb3QgIiAxMHB4IgogRkFJTCBSZWZlcmVuY2VzIHRvIHJlZ2lzdGVyZWQg
dmFyKCktcHJvcGVydGllcyB3b3JrIGluIHJlZ2lzdGVyZWQgbGlzdHMgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgIjFweCwgMTBweCwgMnB4IiBidXQgZ290ICIwcHgiCiBGQUlMIFJlZmVyZW5jZXMg
dG8gbWl4ZWQgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkIHZhcigpLXByb3BlcnRpZXMgd29y
ayBpbiByZWdpc3RlcmVkIGxpc3RzIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxcHgsIDIwcHgs
IDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4IgogRkFJTCBSZWdpc3RlcmVkIGxpc3RzIG1heSBiZSBj
b25jYXRlbmF0ZWQgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjFweCwgMTBweCwgMnB4LCAxcHgs
IDIwcHgsIDEwcHgsIDJweCIgYnV0IGdvdCAiMHB4Igo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353577</attachid>
            <date>2018-10-31 20:35:42 -0700</date>
            <delta_ts>2018-10-31 20:35:42 -0700</delta_ts>
            <desc>Changes from rolled-out patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8657</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3Bl
cnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5
LmNwcAppbmRleCBiOGVmNmE5NTIxMy4uYTg5MDY2OWY2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NSZWdpc3RlckN1c3RvbVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eS5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NQ1NTUmVnaXN0ZXJDdXN0b21Qcm9wZXJ0eTo6cmVn
aXN0ZXJQcm9wZXJ0eShEb2N1bWVudCYgZG9jdW0KIAogICAgICAgICAvLyBXZSBuZWVkIHRvIGlu
aXRpYWxpemUgdGhpcyBzbyB0aGF0IHdlIGNhbiBzdWNjZXNzZnVsbHkgcGFyc2UgY29tcHV0YXRp
b25hbGx5IGRlcGVuZGVudCB2YWx1ZXMgKGxpa2UgZW0gdW5pdHMpLgogICAgICAgICAvLyBXZSBk
b24ndCBhY3R1YWxseSBuZWVkIHRoZSB2YWx1ZXMgdG8gYmUgYWNjdXJhdGUsIHNpbmNlIHRoZXkg
d2lsbCBiZSByZWplY3RlZCBsYXRlciBhbnl3YXkKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdGF0
ZSgpLnNldFN0eWxlKHN0eWxlUmVzb2x2ZXIuZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsKKyAg
ICAgICAgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9TdHlsZShDU1NQcm9wZXJ0eUludmFs
aWQsIG51bGxwdHIsIHN0eWxlUmVzb2x2ZXIuZGVmYXVsdFN0eWxlRm9yRWxlbWVudCgpKTsKICAg
ICAgICAgc3R5bGVSZXNvbHZlci51cGRhdGVGb250KCk7CiAKICAgICAgICAgaW5pdGlhbFZhbHVl
ID0gQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVHlwZWRDdXN0b21Qcm9wZXJ0eVZhbHVlKGRlc2Ny
aXB0b3IubmFtZSwgZGVzY3JpcHRvci5zeW50YXgsIHRva2VuaXplci50b2tlblJhbmdlKCksIHN0
eWxlUmVzb2x2ZXIsIHN0cmljdENTU1BhcnNlckNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDM4
M2FjOGVlNGY2Li43M2UxYTY3ZDRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIyNywzMCArMjI3LDMwIEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJv
cGVydHkoY29uc3QgU3RyaW5nJiBwcm9wCiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNj
b3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAKLSAgICBpZiAoIXdpbGxNdXRhdGUoKSkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxwdHI7Ci0KLSAg
ICBpZiAocGFyZW50RWxlbWVudCgpKQotICAgICAgICBkb2N1bWVudCA9ICZwYXJlbnRFbGVtZW50
KCktPmRvY3VtZW50KCk7Ci0gICAgZWxzZQotICAgICAgICBkb2N1bWVudCA9IHBhcmVudFN0eWxl
U2hlZXQoKS0+b3duZXJEb2N1bWVudCgpOwotICAgIAogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoaXNDdXN0b21Qcm9w
ZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKICAgICAgICAgcHJvcGVydHlJRCA9IENTU1Byb3BlcnR5
Q3VzdG9tOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAorICAg
IGlmICghd2lsbE11dGF0ZSgpKQorICAgICAgICByZXR1cm4geyB9OworCiAgICAgYm9vbCBpbXBv
cnRhbnQgPSBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHByaW9yaXR5LCAiaW1wb3J0YW50Iik7CiAg
ICAgaWYgKCFpbXBvcnRhbnQgJiYgIXByaW9yaXR5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIGJvb2wgY2hhbmdlZDsKLSAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9w
ZXJ0eUN1c3RvbSkKKyAgICBpZiAoVU5MSUtFTFkocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUN1
c3RvbSkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0cjsKKworICAgICAg
ICBpZiAocGFyZW50RWxlbWVudCgpKQorICAgICAgICAgICAgZG9jdW1lbnQgPSAmcGFyZW50RWxl
bWVudCgpLT5kb2N1bWVudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudCA9
IHBhcmVudFN0eWxlU2hlZXQoKS0+b3duZXJEb2N1bWVudCgpOworCiAgICAgICAgIGNoYW5nZWQg
PSBtX3Byb3BlcnR5U2V0LT5zZXRDdXN0b21Qcm9wZXJ0eShkb2N1bWVudCwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJDb250ZXh0KCkpOwotICAgIGVsc2UKKyAgICB9
IGVsc2UKICAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3Bl
cnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7CiAKICAgICBkaWRN
dXRhdGUoY2hhbmdlZCA/IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMjBmNWIyZTMwYzAuLmZkNGNmZWVmYTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zMjEsMTMgKzMyMSwxMyBAQCBpbmxp
bmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6dXBkYXRlQ29udmVyc2lvbkRhdGEoKQogICAg
IG1fY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEo
bV9zdHlsZS5nZXQoKSwgbV9yb290RWxlbWVudFN0eWxlLCBtX2VsZW1lbnQgPyBtX2VsZW1lbnQt
PmRvY3VtZW50KCkucmVuZGVyVmlldygpIDogbnVsbHB0cik7CiB9CiAKLXZvaWQgU3R5bGVSZXNv
bHZlcjo6U3RhdGU6OnNldFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUp
CitpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0U3R5bGUoc3RkOjp1bmlxdWVf
cHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKICAgICBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7
CiAgICAgdXBkYXRlQ29udmVyc2lvbkRhdGEoKTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpT
dGF0ZTo6c2V0UGFyZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBwYXJlbnRT
dHlsZSkKK2lubGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZShz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHBhcmVudFN0eWxlKQogewogICAgIG1fb3duZWRQ
YXJlbnRTdHlsZSA9IFdURk1vdmUocGFyZW50U3R5bGUpOwogICAgIG1fcGFyZW50U3R5bGUgPSBt
X293bmVkUGFyZW50U3R5bGUuZ2V0KCk7CkBAIC0xNjI0LDcgKzE2MjQsNyBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBBcHBseUNhc2NhZAogICAgIGlmICh2YWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2VzKCkpIHsK
ICAgICAgICAgdmFsdWVUb0FwcGx5ID0gcmVzb2x2ZWRWYXJpYWJsZVZhbHVlKGlkLCAqdmFsdWUs
IGFwcGx5U3RhdGUpOwogICAgICAgICAvLyBJZiBhcHBsaWVkUHJvcGVydGllcyBhbHJlYWR5IGhh
cyB0aGlzIGlkLCB0aGVuIHdlIGRldGVjdGVkIGEgY3ljbGUsIGFuZCB0aGlzIHZhbHVlIHNob3Vs
ZCBiZSB1bnNldC4KLSAgICAgICAgaWYgKCF2YWx1ZVRvQXBwbHkgfHwgYXBwbHlTdGF0ZS5hcHBs
aWVkUHJvcGVydGllcy5jb250YWlucyhpZCkpIHsKKyAgICAgICAgaWYgKCF2YWx1ZVRvQXBwbHkg
fHwgYXBwbHlTdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5nZXQoaWQpKSB7CiAgICAgICAgICAgICBp
ZiAoQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkoaWQpKQogICAgICAgICAgICAgICAg
IHZhbHVlVG9BcHBseSA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSW5oZXJpdGVk
VmFsdWUoKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTIzMzAsNiArMjMzMCwxNCBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5h
bWUsIEFwcGx5Q2FzY2FkZQogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQ
cm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5LCBBcHBseUNhc2Nh
ZGVkUHJvcGVydHlTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKExJS0VMWShzdGF0ZS5jYXNjYWRl
LT5jdXN0b21Qcm9wZXJ0aWVzKCkuaXNFbXB0eSgpKSkKKyAgICAgICAgcmV0dXJuIGFwcGx5Q2Fz
Y2FkZWRQcm9wZXJ0aWVzSW1wbDxDdXN0b21Qcm9wZXJ0eUN5Y2xlVHJhY2tpbmc6OkRpc2FibGVk
PihmaXJzdFByb3BlcnR5LCBsYXN0UHJvcGVydHksIHN0YXRlKTsKKyAgICByZXR1cm4gYXBwbHlD
YXNjYWRlZFByb3BlcnRpZXNJbXBsPEN1c3RvbVByb3BlcnR5Q3ljbGVUcmFja2luZzo6RW5hYmxl
ZD4oZmlyc3RQcm9wZXJ0eSwgbGFzdFByb3BlcnR5LCBzdGF0ZSk7Cit9CisKK3RlbXBsYXRlPFN0
eWxlUmVzb2x2ZXI6OkN1c3RvbVByb3BlcnR5Q3ljbGVUcmFja2luZyBUcmFja0N5Y2xlcz4KK2lu
bGluZSB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5Q2FzY2FkZWRQcm9wZXJ0aWVzSW1wbChpbnQg
Zmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3Rh
dGUmIHN0YXRlKQogewogICAgIGZvciAoaW50IGlkID0gZmlyc3RQcm9wZXJ0eTsgaWQgPD0gbGFz
dFByb3BlcnR5OyArK2lkKSB7CiAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0
YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGlkKTsKQEAgLTIzMzksMTkgKzIzNDcsMjQgQEAgdm9p
ZCBTdHlsZVJlc29sdmVyOjphcHBseUNhc2NhZGVkUHJvcGVydGllcyhpbnQgZmlyc3RQcm9wZXJ0
eSwgaW50IGxhc3RQcm9wZXJ0eSwKICAgICAgICAgYXV0byYgcHJvcGVydHkgPSBzdGF0ZS5jYXNj
YWRlLT5wcm9wZXJ0eShwcm9wZXJ0eUlEKTsKICAgICAgICAgQVNTRVJUKCFzaG91bGRBcHBseVBy
b3BlcnR5SW5QYXJzZU9yZGVyKHByb3BlcnR5SUQpKTsKIAotICAgICAgICBpZiAoc3RhdGUuaW5Q
cm9ncmVzc1Byb3BlcnRpZXMuY29udGFpbnMocHJvcGVydHlJRCkpIHsKLSAgICAgICAgICAgIC8v
IFdlIGFyZSBpbiBhIGN5Y2xlIChlZy4gc2V0dGluZyBmb250IHNpemUgdXNpbmcgcmVnaXN0ZXJl
ZCBjdXN0b20gcHJvcGVydHkgdmFsdWUgY29udGFpbmluZyBlbSkKLSAgICAgICAgICAgIC8vIFNv
IHRoaXMgdmFsdWUgc2hvdWxkIGJlIHVuc2V0Ci0gICAgICAgICAgICBzdGF0ZS5hcHBsaWVkUHJv
cGVydGllcy5hZGQocHJvcGVydHlJRCk7Ci0gICAgICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGlz
IGluIGEgY3ljbGUsIGFuZCBvbmx5IHRoZSByb290IG9mIHRoZSBjYWxsIHN0YWNrIHdpbGwgaGF2
ZSBmaXJzdFByb3BlcnR5ICE9IGxhc3RQcm9wZXJ0eS4KLSAgICAgICAgICAgIEFTU0VSVChmaXJz
dFByb3BlcnR5ID09IGxhc3RQcm9wZXJ0eSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoVHJhY2tDeWNsZXMgPT0gQ3VzdG9tUHJvcGVydHlDeWNsZVRyYWNr
aW5nOjpEaXNhYmxlZCkgeworICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgY3Vz
dG9tIHByb3BlcnRpZXMsIHRoZW4gdGhlcmUgY2FuJ3QgYmUgYW55IGN5Y2xlcy4KKyAgICAgICAg
ICAgIHByb3BlcnR5LmFwcGx5KCp0aGlzLCBzdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMuZ2V0KHByb3Bl
cnR5SUQpKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBpbiBhIGN5Y2xlIChlZy4gc2V0
dGluZyBmb250IHNpemUgdXNpbmcgcmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVydHkgdmFsdWUgY29u
dGFpbmluZyBlbSkuCisgICAgICAgICAgICAgICAgLy8gU28gdGhpcyB2YWx1ZSBzaG91bGQgYmUg
dW5zZXQuCisgICAgICAgICAgICAgICAgc3RhdGUuYXBwbGllZFByb3BlcnRpZXMuc2V0KHByb3Bl
cnR5SUQpOworICAgICAgICAgICAgICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgaW4gYSBjeWNsZSwg
YW5kIG9ubHkgdGhlIHJvb3Qgb2YgdGhlIGNhbGwgc3RhY2sgd2lsbCBoYXZlIGZpcnN0UHJvcGVy
dHkgIT0gbGFzdFByb3BlcnR5LgorICAgICAgICAgICAgICAgIEFTU0VSVChmaXJzdFByb3BlcnR5
ID09IGxhc3RQcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICB9CiAKLSAgICAgICAgc3RhdGUuaW5Qcm9ncmVzc1Byb3BlcnRpZXMuYWRkKHByb3BlcnR5SUQp
OwotICAgICAgICBwcm9wZXJ0eS5hcHBseSgqdGhpcywgc3RhdGUpOwotICAgICAgICBzdGF0ZS5h
cHBsaWVkUHJvcGVydGllcy5hZGQocHJvcGVydHlJRCk7Ci0gICAgICAgIHN0YXRlLmluUHJvZ3Jl
c3NQcm9wZXJ0aWVzLnJlbW92ZShwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHN0YXRlLmluUHJv
Z3Jlc3NQcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlEKTsKKyAgICAgICAgICAgIHByb3BlcnR5LmFw
cGx5KCp0aGlzLCBzdGF0ZSk7CisgICAgICAgICAgICBzdGF0ZS5hcHBsaWVkUHJvcGVydGllcy5z
ZXQocHJvcGVydHlJRCk7CisgICAgICAgICAgICBzdGF0ZS5pblByb2dyZXNzUHJvcGVydGllcy5z
ZXQocHJvcGVydHlJRCwgZmFsc2UpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaAppbmRleCA2ZDg4ZjYwMTlhMi4uZjE5YTUwMDk5YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNlbGVj
dG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgPGJpdHNldD4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8d3RmL0JpdG1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTMyNCw2ICszMjUsMTAg
QEAgcHJpdmF0ZToKICAgICBlbnVtIFNob3VsZFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgeyBE
b05vdFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgPSAwLCBVc2VNYXRjaGVkUHJvcGVydGllc0Nh
Y2hlIH07CiAgICAgdm9pZCBhcHBseU1hdGNoZWRQcm9wZXJ0aWVzKGNvbnN0IE1hdGNoUmVzdWx0
JiwgY29uc3QgRWxlbWVudCYsIFNob3VsZFVzZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUgPSBVc2VN
YXRjaGVkUHJvcGVydGllc0NhY2hlKTsKIAorICAgIGVudW0gQ3VzdG9tUHJvcGVydHlDeWNsZVRy
YWNraW5nIHsgRW5hYmxlZCA9IDAsIERpc2FibGVkIH07CisgICAgdGVtcGxhdGU8Q3VzdG9tUHJv
cGVydHlDeWNsZVRyYWNraW5nPgorICAgIGlubGluZSB2b2lkIGFwcGx5Q2FzY2FkZWRQcm9wZXJ0
aWVzSW1wbChpbnQgZmlyc3RQcm9wZXJ0eSwgaW50IGxhc3RQcm9wZXJ0eSwgQXBwbHlDYXNjYWRl
ZFByb3BlcnR5U3RhdGUmKTsKKwogICAgIHZvaWQgY2FzY2FkZU1hdGNoZXMoQ2FzY2FkZWRQcm9w
ZXJ0aWVzJiwgY29uc3QgTWF0Y2hSZXN1bHQmLCBib29sIGltcG9ydGFudCwgaW50IHN0YXJ0SW5k
ZXgsIGludCBlbmRJbmRleCwgYm9vbCBpbmhlcml0ZWRPbmx5KTsKIAogICAgIHZvaWQgbWF0Y2hQ
YWdlUnVsZXMoTWF0Y2hSZXN1bHQmLCBSdWxlU2V0KiwgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlz
Rmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKQEAgLTUzMiw5ICs1MzcsOSBAQCBz
dHJ1Y3QgQXBwbHlDYXNjYWRlZFByb3BlcnR5U3RhdGUgewogICAgIFN0eWxlUmVzb2x2ZXIqIHN0
eWxlUmVzb2x2ZXI7CiAgICAgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzKiBjYXNj
YWRlOwogICAgIGNvbnN0IFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0KiBtYXRjaFJlc3VsdDsK
LSAgICBIYXNoU2V0PENTU1Byb3BlcnR5SUQ+IGFwcGxpZWRQcm9wZXJ0aWVzID0geyB9OworICAg
IEJpdG1hcDxudW1DU1NQcm9wZXJ0aWVzPiBhcHBsaWVkUHJvcGVydGllcyA9IHsgfTsKICAgICBI
YXNoU2V0PFN0cmluZz4gYXBwbGllZEN1c3RvbVByb3BlcnRpZXMgPSB7IH07Ci0gICAgSGFzaFNl
dDxDU1NQcm9wZXJ0eUlEPiBpblByb2dyZXNzUHJvcGVydGllcyA9IHsgfTsKKyAgICBCaXRtYXA8
bnVtQ1NTUHJvcGVydGllcz4gaW5Qcm9ncmVzc1Byb3BlcnRpZXMgPSB7IH07CiAgICAgSGFzaFNl
dDxTdHJpbmc+IGluUHJvZ3Jlc3NQcm9wZXJ0aWVzQ3VzdG9tID0geyB9OwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>