<?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>88746</bug_id>
          
          <creation_ts>2012-06-10 20:38:45 -0700</creation_ts>
          <short_desc>[Form] Replace InputNumber type to Decimal type and drop InputNumber</short_desc>
          <delta_ts>2012-06-14 04:54:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>80009</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>645688</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-06-10 20:38:45 -0700</bug_when>
    <thetext>We introduced InputNumber as alias of double and Decimal type for reducing patch size.
Now, both decimal arithmetic and integration into input type is landed.
There is no reason to have InputNumber type.

This is the final step of introducing decimal arithmetic for input type number and range.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645710</commentid>
    <comment_count>1</comment_count>
      <attachid>146777</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-10 21:24:02 -0700</bug_when>
    <thetext>Created attachment 146777
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645712</commentid>
    <comment_count>2</comment_count>
      <attachid>146777</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-10 21:25:15 -0700</bug_when>
    <thetext>Comment on attachment 146777
Patch 1

Could you review this patch?
Thanks in advance.

* Local build on CR-Linux with enable all input types
* This patch is almost mechanical change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648781</commentid>
    <comment_count>3</comment_count>
      <attachid>146777</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-13 21:29:31 -0700</bug_when>
    <thetext>Comment on attachment 146777
Patch 1

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

&gt; Source/WebCore/ChangeLog:4
&gt;  2012-06-10  Yoshifumi Inoue  &lt;yosin@chromium.org&gt;
&gt;  
&gt; +        [Form] Replace InputNumber type to Decimal type and drop InputNumber
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=88746

A ChangeLog diff should start at the beginning of the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648821</commentid>
    <comment_count>4</comment_count>
      <attachid>147490</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-13 22:49:07 -0700</bug_when>
    <thetext>Created attachment 147490
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649004</commentid>
    <comment_count>5</comment_count>
      <attachid>147490</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 02:45:22 -0700</bug_when>
    <thetext>Comment on attachment 147490
Patch 2

Rejecting attachment 147490 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/12953497</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649020</commentid>
    <comment_count>6</comment_count>
      <attachid>147538</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-14 02:57:20 -0700</bug_when>
    <thetext>Created attachment 147538
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649071</commentid>
    <comment_count>7</comment_count>
      <attachid>147538</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 04:54:01 -0700</bug_when>
    <thetext>Comment on attachment 147538
Patch 3

Clearing flags on attachment: 147538

Committed r120313: &lt;http://trac.webkit.org/changeset/120313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649072</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 04:54:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146777</attachid>
            <date>2012-06-10 21:24:02 -0700</date>
            <delta_ts>2012-06-13 22:49:02 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-88746-20120611132401.patch</filename>
            <type>text/plain</type>
            <size>62345</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU5MWY2ZTUyY2ZlMGUw
ZWQ2OTMyMjM4NWRkMzdhMWVhYjRkNzgzMC4uM2M0ZjBhMzc4YmVhZTU2Y2JiNThiNTJhNzcxZjQ4
NjM1N2U3MjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExNiBAQAogMjAxMi0wNi0xMCAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtGb3JtXSBSZXBs
YWNlIElucHV0TnVtYmVyIHR5cGUgdG8gRGVjaW1hbCB0eXBlIGFuZCBkcm9wIElucHV0TnVtYmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODc0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggcmVtb3ZlcyBJbnB1dE51bWJlciBpbnRyb2R1Y2VkIGJ5IHIxMTk1NDAgYnkgcmVwbGFjaW5n
CisgICAgICAgIElucHV0TnVtYmVyIHR5cGUgdG8gRGVjaW1hbCB0eXBlIGFuZCBjaGFuZ2luZyBj
b252ZXJ0RG91YmxlVG9EZWNpbWFsCisgICAgICAgIGFuZCBjb252ZXJ0RGVjaW1hbFRvRG91Ymxl
IHRvIERlY2ltYWw6OmZyb21Eb3VibGUgYW5kCisgICAgICAgIERlY2ltYWw6OnRvRG91YmxlLCBy
ZXNwZWN0aXZlbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHBhdGNoIGRvZXNuJ3Qg
Y2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRW
YWx1ZUFzRGVjaW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemVXaXRoQ29tcG9uZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29u
ZHMpOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAg
IChCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvRGF0ZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZVRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRlVGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBo
dG1sL0RhdGVUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChEYXRlVGltZUlucHV0VHlwZSk6Cisg
ICAgICAgICogaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5oOgorICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91Ymxl
KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c2V0VmFsdWVBc0RlY2ltYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpyYW5nZVVuZGVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnJhbmdlT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRU
eXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
OjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6bWF4aW11bSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlzSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OmlzT3V0T2ZSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0
ZXBNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnZhbGlkYXRpb25NZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb051bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXJPck5hTik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OmFwcGx5U3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmdldEFsbG93ZWRW
YWx1ZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgIChJbnB1dFR5cGUpOgor
ICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9u
dGhJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJDb3JlOjpN
b250aElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRo
SW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKToKKyAgICAgICAgKiBodG1sL01vbnRoSW5wdXRUeXBl
Lmg6CisgICAgICAgIChNb250aElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFz
RGVjaW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAg
ICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmg6CisgICAgICAgIChOdW1iZXJJbnB1dFR5cGUpOgor
ICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5z
dXJlTWF4aW11bSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWVB
c0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUpOgorICAgICAgICAqIGh0bWwv
UmFuZ2VJbnB1dFR5cGUuaDoKKyAgICAgICAgKFJhbmdlSW5wdXRUeXBlKToKKyAgICAgICAgKiBo
dG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OlN0ZXBSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2VwdGFibGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JTdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFu
Z2U6OnBhcnNlU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnJvdW5kQnlTdGVw
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAg
KiBodG1sL1N0ZXBSYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpTdGVwRGVz
Y3JpcHRpb246OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChTdGVwUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U3RlcFJhbmdlOjptYXhpbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5n
ZTo6bWluaW11bSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnN0ZXApOgorICAgICAg
ICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpzdGVwQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVw
UmFuZ2U6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnByb3Bv
cnRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjp2YWx1ZUZyb21Q
cm9wb3J0aW9uKToKKyAgICAgICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRt
bC9UaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChUaW1lSW5wdXRUeXBlKToKKyAgICAgICAgKiBo
dG1sL1dlZWtJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6
Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp3cml0
ZURvY3VtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2xpZGVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2xpZGVyVGh1bWI6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVt
YkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KToKKworMjAxMi0wNi0xMCAgWW9zaGlmdW1p
IElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtGb3Jtc10gSW50cm9kdWNl
IERlY2ltYWwgYmVoaW5kIHRoZSBJbnB1dE51bWJlciB0eXBlCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODM4MwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggYzc2NjE5NDUyMjc4OWNi
MWI0NDZkNGEyNmRiMDcwNWQxYTMyZWVjZS4uNDg0NzFjYjY1YWY1NDkzYzFkMzkzNzlkY2ZjZmQy
Y2ZjZGZiN2ZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBkb3VibGUgQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlOjp2YWx1ZUFzRG91YmxlKCkgY29uc3QKICAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShl
bGVtZW50KCktPnZhbHVlKCkpOwogfQogCi12b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6
c2V0VmFsdWVBc0lucHV0TnVtYmVyKGNvbnN0IElucHV0TnVtYmVyJiBuZXdWYWx1ZSwgVGV4dEZp
ZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QKK3Zv
aWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1ZUFzRGVjaW1hbChjb25zdCBEZWNp
bWFsJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNl
cHRpb25Db2RlJikgY29uc3QKIHsKICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShu
ZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOwogfQpAQCAtODAsMTMgKzgwLDEzIEBAIGJvb2wgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2goKSBjb25zdAogICAgIHJldHVybiB0
eXBlTWlzbWF0Y2hGb3IoZWxlbWVudCgpLT52YWx1ZSgpKTsKIH0KIAotSW5wdXROdW1iZXIgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAorRGVj
aW1hbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNv
bnN0CiB7CiAgICAgZG91YmxlIG1zID0gY3VycmVudFRpbWVNUygpOwogICAgIGRvdWJsZSB1dGNP
ZmZzZXQgPSBjYWxjdWxhdGVVVENPZmZzZXQoKTsKICAgICBkb3VibGUgZHN0T2Zmc2V0ID0gY2Fs
Y3VsYXRlRFNUT2Zmc2V0KG1zLCB1dGNPZmZzZXQpOwogICAgIGludCBvZmZzZXQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KCh1dGNPZmZzZXQgKyBkc3RPZmZzZXQpIC8gbXNQZXJNaW51dGUpOwotICAgIHJl
dHVybiBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihtcyArIChvZmZzZXQgKiBtc1Blck1pbnV0
ZSkpOworICAgIHJldHVybiBEZWNpbWFsOjpmcm9tRG91YmxlKG1zICsgKG9mZnNldCAqIG1zUGVy
TWludXRlKSk7CiB9CiAKIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjppc1N0ZXBwYWJs
ZSgpIGNvbnN0CkBAIC0xMTgsMTAgKzExOCwxMCBAQCBkb3VibGUgQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYgc291cmNlKSBjb25zdAogICAgIHJl
dHVybiBtc2VjOwogfQogCi1JbnB1dE51bWJlciBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBh
cnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IElucHV0TnVtYmVyJiBkZWZh
dWx0VmFsdWUpIGNvbnN0CitEZWNpbWFsIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6cGFyc2VU
b051bWJlcihjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZhbHVl
KSBjb25zdAogewogICAgIGNvbnN0IGRvdWJsZSBkb3VibGVWYWx1ZSA9IHBhcnNlVG9Eb3VibGUo
c291cmNlKTsKLSAgICByZXR1cm4gaXNmaW5pdGUoZG91YmxlVmFsdWUpID8gY29udmVydERvdWJs
ZVRvSW5wdXROdW1iZXIoZG91YmxlVmFsdWUpIDogZGVmYXVsdFZhbHVlOworICAgIHJldHVybiBp
c2Zpbml0ZShkb3VibGVWYWx1ZSkgPyBEZWNpbWFsOjpmcm9tRG91YmxlKGRvdWJsZVZhbHVlKSA6
IGRlZmF1bHRWYWx1ZTsKIH0KIAogYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNl
VG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmIHNvdXJjZSwgRGF0ZUNvbXBvbmVudHMqIG91
dCkgY29uc3QKQEAgLTEzNCwxOSArMTM0LDE5IEBAIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiBzb3VyY2UsIERhdGVDCiAg
ICAgcmV0dXJuIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKHNvdXJjZS5jaGFyYWN0ZXJz
KCksIHNvdXJjZS5sZW5ndGgoKSwgb3V0KTsKIH0KIAotU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IElucHV0TnVtYmVyJiB2YWx1ZSkgY29uc3QKK1N0cmlu
ZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJiB2YWx1
ZSkgY29uc3QKIHsKICAgICBpZiAoIXZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwotICAgIGlmICghc2V0TWlsbGlzZWNv
bmRUb0RhdGVDb21wb25lbnRzKGNvbnZlcnRJbnB1dE51bWJlclRvRG91YmxlKHZhbHVlKSwgJmRh
dGUpKQorICAgIGlmICghc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKHZhbHVlLnRvRG91
YmxlKCksICZkYXRlKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBzZXJp
YWxpemVXaXRoQ29tcG9uZW50cyhkYXRlKTsKIH0KIAogU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRh
dGUpIGNvbnN0CiB7Ci0gICAgSW5wdXROdW1iZXIgc3RlcDsKKyAgICBEZWNpbWFsIHN0ZXA7CiAg
ICAgaWYgKCFlbGVtZW50KCktPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQogICAgICAgICBy
ZXR1cm4gZGF0ZS50b1N0cmluZygpOwogICAgIGlmIChzdGVwLnJlbWFpbmRlcihtc2VjUGVyTWlu
dXRlKS5pc1plcm8oKSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBTdHJpbmcgQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjpzZXJpYWxpemVXaXRoQ29tcG9uZW50cyhjb25zdCBEYXRlQ29tcG9uZW50cyYg
ZAogCiBTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemVXaXRoTWlsbGlz
ZWNvbmRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gc2VyaWFsaXplKGNvbnZl
cnREb3VibGVUb0lucHV0TnVtYmVyKHZhbHVlKSk7CisgICAgcmV0dXJuIHNlcmlhbGl6ZShEZWNp
bWFsOjpmcm9tRG91YmxlKHZhbHVlKSk7CiB9CiAKIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmxvY2FsaXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKaW5kZXgg
NTBmMDYzYzc4MjhmNmQ1Y2M5ZTVkN2ViNTMzNzgzMjdlMmJiNGNlNi4uMTY1OGMxZmUwNzIyYjNj
YzQxYTMyMzk4MDdiNmUxYjA4MGZhZWQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEJhc2VEYXRl
QW5kVGltZUlucHV0VHlwZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgewogcHJvdGVjdGVk
OgogICAgIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50
KSA6IFRleHRGaWVsZElucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIElu
cHV0TnVtYmVyIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgSW5wdXROdW1iZXIm
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmLCBEYXRlQ29tcG9uZW50cyop
IGNvbnN0IE9WRVJSSURFOwogICAgIFN0cmluZyBzZXJpYWxpemVXaXRoQ29tcG9uZW50cyhjb25z
dCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0OwogCkBAIC01MywxMyArNTMsMTMgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRG91YmxlKCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNJbnB1dE51bWJlcihjb25zdCBJbnB1dE51
bWJlciYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0RlY2ltYWwoY29uc3QgRGVjaW1hbCYs
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIElucHV0TnVtYmVyIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IElucHV0TnVtYmVyJikgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwm
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlz
ZWNvbmRzKGRvdWJsZSkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVWYWx1ZShj
b25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB2aXNpYmxl
VmFsdWUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RGF0ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3Bw
CmluZGV4IDEwNDQ0N2VhNWE2NmFjMWU2MGE4MGIzMTM5YzVkNWNmNzQyOGJhZmEuLmY1ZDFhMDI5
M2I5ZDIyYjhkOGQ4MWY2Y2I0ODljYmI5NGJhOTgzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
SW5wdXRUeXBlLmNwcApAQCAtNzMsMTAgKzczLDEwIEBAIFN0ZXBSYW5nZSBEYXRlSW5wdXRUeXBl
OjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QK
IHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0
aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRlRGVmYXVsdFN0ZXAsIGRhdGVEZWZhdWx0U3RlcEJh
c2UsIGRhdGVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxk
QmVJbnRlZ2VyKSk7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwQmFzZSA9IHBhcnNlVG9O
dW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKLSAgICBjb25z
dCBJbnB1dE51bWJlciBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKERhdGVDb21wb25l
bnRzOjptaW5pbXVtRGF0ZSgpKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWF4aW11bSA9IHBh
cnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBjb252ZXJ0
RG91YmxlVG9JbnB1dE51bWJlcihEYXRlQ29tcG9uZW50czo6bWF4aW11bURhdGUoKSkpOwotICAg
IGNvbnN0IElucHV0TnVtYmVyIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFu
ZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBB
dHRyKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVu
dCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKKyAgICBjb25zdCBEZWNpbWFsIG1p
bmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRy
KSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGUoKSkpOwor
ICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0
R2V0QXR0cmlidXRlKG1heEF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRz
OjptYXhpbXVtRGF0ZSgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gU3RlcFJhbmdlOjpw
YXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFz
dEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2Us
IG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKaW5kZXggY2QzY2E3OTcyNTBhZWQxNGRj
Njk1YzQ2MjZiYzJlYWEyNmQyYjk2YS4uNzhhOTE4NGY2NTEzMjgwYTE5YzU0NTUyZTA3N2Y4Y2Jk
ZjNjYjhlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5jcHAKQEAg
LTYyLDE5ICs2MiwxOSBAQCBEYXRlQ29tcG9uZW50czo6VHlwZSBEYXRlVGltZUlucHV0VHlwZTo6
ZGF0ZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWU7CiB9
CiAKLUlucHV0TnVtYmVyIERhdGVUaW1lSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAo
KSBjb25zdAorRGVjaW1hbCBEYXRlVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVw
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoY3VycmVu
dFRpbWVNUygpKTsKKyAgICByZXR1cm4gRGVjaW1hbDo6ZnJvbURvdWJsZShjdXJyZW50VGltZU1T
KCkpOwogfQogCiBTdGVwUmFuZ2UgRGF0ZVRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlv
biwgKGRhdGVUaW1lRGVmYXVsdFN0ZXAsIGRhdGVUaW1lRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGlt
ZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVn
ZXIpKTsKIAotICAgIGNvbnN0IElucHV0TnVtYmVyIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwotICAgIGNvbnN0IElucHV0
TnVtYmVyIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShtaW5BdHRyKSwgY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6Om1p
bmltdW1EYXRlVGltZSgpKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWF4aW11bSA9IHBhcnNl
VG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBjb252ZXJ0RG91
YmxlVG9JbnB1dE51bWJlcihEYXRlQ29tcG9uZW50czo6bWF4aW11bURhdGVUaW1lKCkpKTsKLSAg
ICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhh
bmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVw
QXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7CisgICAgY29uc3QgRGVjaW1hbCBt
aW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0
ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlVGltZSgp
KSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkt
PmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBv
bmVudHM6Om1heGltdW1EYXRlVGltZSgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gU3Rl
cFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uo
c3RlcEJhc2UsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaAppbmRleCBkODdiZmE1ZDQ3YWRm
Yjc4MmFmYTA4Y2Q0MDA0YzZiMWUzZDY1MWQyLi5kMWY0YTc4YWExZWI1NTc2MzdjZjAxZWQzYjI1
NmYxZjJlNjJjOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5w
dXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oCkBA
IC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgRGF0ZUNvbXBv
bmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0ZXBS
YW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIElucHV0TnVtYmVyIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhk
b3VibGUsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IGlzRGF0ZVRpbWVGaWVsZCgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKaW5kZXggMTY0YWIwNDEwNWEwYWRjMmYwZGNi
MWQ1MzRlYWEzOGU0YjE0YmVjYi4uMzhlNDQ5ZmJhNDJiOTFkZmY1NDQyMWE3MTZjMjI0ZmUwNTU5
ZmI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUu
Y3BwCkBAIC03NywxMCArNzcsMTAgQEAgU3RlcFJhbmdlIERhdGVUaW1lTG9jYWxJbnB1dFR5cGU6
OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW4KIHsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVw
RGVzY3JpcHRpb24sIChkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXAsIGRhdGVUaW1lTG9jYWxEZWZh
dWx0U3RlcEJhc2UsIGRhdGVUaW1lTG9jYWxTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2Nh
bGVkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBz
dGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0
dHIpLCAwKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBtaW5pbXVtID0gcGFyc2VUb051bWJlcihl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0lucHV0
TnVtYmVyKERhdGVDb21wb25lbnRzOjptaW5pbXVtRGF0ZVRpbWUoKSkpOwotICAgIGNvbnN0IElu
cHV0TnVtYmVyIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShtYXhBdHRyKSwgY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6
Om1heGltdW1EYXRlVGltZSgpKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcCA9IFN0ZXBS
YW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50
KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBC
YXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciks
IDApOworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21w
b25lbnRzOjptaW5pbXVtRGF0ZVRpbWUoKSkpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9
IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBEZWNp
bWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptYXhpbXVtRGF0ZVRpbWUoKSkpOworICAg
IGNvbnN0IERlY2ltYWwgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGlu
Zywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIp
KTsKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVw
LCBzdGVwRGVzY3JpcHRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAppbmRleCBjNmNmMWY0OTcxZTZhZDYyZGRiYzVmMzc5ZGRiNzhiOTNjMzRjZThjLi40
ZjliZTdmZTVjMTI3Zjg3YTlhZGQ0OWRjNmIwMGZiNGI0MjM3MWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTI3NCw3ICsyNzQsNyBAQCBib29sIEhUTUxJ
bnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHdpbGxWYWxpZGF0
ZSgpICYmIG1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUoKSk7CiB9CiAKLWJvb2wgSFRN
TElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChJbnB1dE51bWJlciogc3RlcCkgY29u
c3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKiBz
dGVwKSBjb25zdAogewogICAgIHJldHVybiBtX2lucHV0VHlwZS0+Z2V0QWxsb3dlZFZhbHVlU3Rl
cChzdGVwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggYTVj
MTk5ODM1YmZmZTIzZmFjZDBhYjlmYzQyNjc4ZGQ0N2QzYTVlZC4uOTI4Y2IyNjI3YTI4YTkwY2Q5
ZDgyNjY1ZGMxODVjNjQ2OWQ2YjFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBtYXhpbXVtKCkgY29u
c3Q7CiAgICAgLy8gU2V0cyB0aGUgImFsbG93ZWQgdmFsdWUgc3RlcCIgZGVmaW5lZCBpbiB0aGUg
SFRNTCBzcGVjIHRvIHRoZSBzcGVjaWZpZWQgZG91YmxlIHBvaW50ZXIuCiAgICAgLy8gUmV0dXJu
cyBmYWxzZSBpZiB0aGVyZSBpcyBubyAiYWxsb3dlZCB2YWx1ZSBzdGVwLiIKLSAgICBib29sIGdl
dEFsbG93ZWRWYWx1ZVN0ZXAoSW5wdXROdW1iZXIqKSBjb25zdDsKKyAgICBib29sIGdldEFsbG93
ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0OwogICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdDsKIAogICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBI
VE1MSW5wdXRFbGVtZW50OjpzdGVwVXAoKSBhbmQgc3RlcERvd24oKS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAppbmRleCA5YmI2MDI5NmM4ZWY2MjQ5YTZhZDBmMjY1MDMwOWEwMTg5MWI5NjAy
Li4wNWViZTRkMDNlZDg5NzIxZjkyMjRjOWM5ZTQ2MGYwNTdkMzkzN2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCkBAIC0yMTIsMTAgKzIxMiwxMCBAQCBkb3VibGUgSW5wdXRUeXBlOjp2
YWx1ZUFzRG91YmxlKCkgY29uc3QKIAogdm9pZCBJbnB1dFR5cGU6OnNldFZhbHVlQXNEb3VibGUo
ZG91YmxlIGRvdWJsZVZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3Is
IEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIHNldFZhbHVlQXNJbnB1dE51bWJlcihj
b252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihkb3VibGVWYWx1ZSksIGV2ZW50QmVoYXZpb3IsIGVj
KTsKKyAgICBzZXRWYWx1ZUFzRGVjaW1hbChEZWNpbWFsOjpmcm9tRG91YmxlKGRvdWJsZVZhbHVl
KSwgZXZlbnRCZWhhdmlvciwgZWMpOwogfQogCi12b2lkIElucHV0VHlwZTo6c2V0VmFsdWVBc0lu
cHV0TnVtYmVyKGNvbnN0IElucHV0TnVtYmVyJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit2b2lkIElucHV0VHlwZTo6c2V0VmFsdWVBc0RlY2ltYWwo
Y29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAogewogICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiB9CkBAIC0yNTYsNyArMjU2
LDcgQEAgYm9vbCBJbnB1dFR5cGU6OnJhbmdlVW5kZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUp
IGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBjb25zdCBJbnB1dE51bWJlciBudW1lcmljVmFsdWUgPSBwYXJzZVRvTnVtYmVyT3JOYU4o
dmFsdWUpOworICAgIGNvbnN0IERlY2ltYWwgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb051bWJlck9y
TmFOKHZhbHVlKTsKICAgICBpZiAoIW51bWVyaWNWYWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTI2OCwyNiArMjY4LDI2IEBAIGJvb2wgSW5wdXRUeXBlOjpyYW5n
ZU92ZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJs
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBudW1l
cmljVmFsdWUgPSBwYXJzZVRvTnVtYmVyT3JOYU4odmFsdWUpOworICAgIGNvbnN0IERlY2ltYWwg
bnVtZXJpY1ZhbHVlID0gcGFyc2VUb051bWJlck9yTmFOKHZhbHVlKTsKICAgICBpZiAoIW51bWVy
aWNWYWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
bnVtZXJpY1ZhbHVlID4gY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkubWF4aW11bSgpOwogfQog
Ci1JbnB1dE51bWJlciBJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CitE
ZWNpbWFsIElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gMDsKIH0KIAogZG91YmxlIElucHV0VHlwZTo6bWluaW11bSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGNvbnZlcnRJbnB1dE51bWJlclRvRG91YmxlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RB
bnkpLm1pbmltdW0oKSk7CisgICAgcmV0dXJuIGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1p
bmltdW0oKS50b0RvdWJsZSgpOwogfQogCiBkb3VibGUgSW5wdXRUeXBlOjptYXhpbXVtKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gY29udmVydElucHV0TnVtYmVyVG9Eb3VibGUoY3JlYXRlU3RlcFJh
bmdlKFJlamVjdEFueSkubWF4aW11bSgpKTsKKyAgICByZXR1cm4gY3JlYXRlU3RlcFJhbmdlKFJl
amVjdEFueSkubWF4aW11bSgpLnRvRG91YmxlKCk7CiB9CiAKIGJvb2wgSW5wdXRUeXBlOjpzaXpl
U2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50LCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0CkBA
IC0zMDEsNyArMzAxLDcgQEAgYm9vbCBJbnB1dFR5cGU6OmlzSW5SYW5nZShjb25zdCBTdHJpbmcm
IHZhbHVlKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb051bWJl
ck9yTmFOKHZhbHVlKTsKKyAgICBjb25zdCBEZWNpbWFsIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9O
dW1iZXJPck5hTih2YWx1ZSk7CiAgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIElucHV0VHlwZTo6
aXNPdXRPZlJhbmdlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBw
YWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBu
dW1lcmljVmFsdWUgPSBwYXJzZVRvTnVtYmVyT3JOYU4odmFsdWUpOworICAgIGNvbnN0IERlY2lt
YWwgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb051bWJlck9yTmFOKHZhbHVlKTsKICAgICBpZiAoIW51
bWVyaWNWYWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMzI3LDcg
KzMyNyw3IEBAIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1
ZSkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGNvbnN0IElucHV0TnVtYmVyIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9OdW1iZXJPck5h
Tih2YWx1ZSk7CisgICAgY29uc3QgRGVjaW1hbCBudW1lcmljVmFsdWUgPSBwYXJzZVRvTnVtYmVy
T3JOYU4odmFsdWUpOwogICAgIGlmICghbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMzY1LDcgKzM2NSw3IEBAIFN0cmluZyBJbnB1dFR5cGU6OnZh
bGlkYXRpb25NZXNzYWdlKCkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgbnVtZXJpY1Zh
bHVlID0gcGFyc2VUb051bWJlck9yTmFOKHZhbHVlKTsKKyAgICBjb25zdCBEZWNpbWFsIG51bWVy
aWNWYWx1ZSA9IHBhcnNlVG9OdW1iZXJPck5hTih2YWx1ZSk7CiAgICAgaWYgKCFudW1lcmljVmFs
dWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKQEAgLTQ1OCwx
MyArNDU4LDEzIEBAIHZvaWQgSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiAgICAg
fQogfQogCi1JbnB1dE51bWJlciBJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgSW5wdXROdW1iZXImIGRlZmF1bHRWYWx1ZSkgY29uc3QKK0RlY2ltYWwgSW5wdXRU
eXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmIGRlZmF1bHRW
YWx1ZSkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZGVm
YXVsdFZhbHVlOwogfQogCi1JbnB1dE51bWJlciBJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXJPck5h
Tihjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QKK0RlY2ltYWwgSW5wdXRUeXBlOjpwYXJzZVRv
TnVtYmVyT3JOYU4oY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBh
cnNlVG9OdW1iZXIoc3RyaW5nLCBEZWNpbWFsOjpuYW4oKSk7CiB9CkBAIC00NzUsNyArNDc1LDcg
QEAgYm9vbCBJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmLCBE
YXRlQ29tcG9uZW50cyopIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgSW5w
dXRUeXBlOjpzZXJpYWxpemUoY29uc3QgSW5wdXROdW1iZXImKSBjb25zdAorU3RyaW5nIElucHV0
VHlwZTo6c2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdAogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTg3OSwxOCArODc5LDE4IEBAIHZv
aWQgSW5wdXRUeXBlOjphcHBseVN0ZXAoaW50IGNvdW50LCBBbnlTdGVwSGFuZGxpbmcgYW55U3Rl
cEhhbmRsaW5nLCBUZXh0RmllbGRFCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25z
dCBJbnB1dE51bWJlciBjdXJyZW50ID0gcGFyc2VUb051bWJlck9yTmFOKGVsZW1lbnQoKS0+dmFs
dWUoKSk7CisgICAgY29uc3QgRGVjaW1hbCBjdXJyZW50ID0gcGFyc2VUb051bWJlck9yTmFOKGVs
ZW1lbnQoKS0+dmFsdWUoKSk7CiAgICAgaWYgKCFjdXJyZW50LmlzRmluaXRlKCkpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBJ
bnB1dE51bWJlciBuZXdWYWx1ZSA9IGN1cnJlbnQgKyBzdGVwUmFuZ2Uuc3RlcCgpICogY291bnQ7
CisgICAgRGVjaW1hbCBuZXdWYWx1ZSA9IGN1cnJlbnQgKyBzdGVwUmFuZ2Uuc3RlcCgpICogY291
bnQ7CiAgICAgaWYgKCFuZXdWYWx1ZS5pc0Zpbml0ZSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBJbnB1dE51
bWJlciBhY2NlcHRhYmxlRXJyb3JWYWx1ZSA9IHN0ZXBSYW5nZS5hY2NlcHRhYmxlRXJyb3IoKTsK
KyAgICBjb25zdCBEZWNpbWFsIGFjY2VwdGFibGVFcnJvclZhbHVlID0gc3RlcFJhbmdlLmFjY2Vw
dGFibGVFcnJvcigpOwogICAgIGlmIChuZXdWYWx1ZSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkgPCAt
YWNjZXB0YWJsZUVycm9yVmFsdWUpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTA5LDEzICs5MDksMTMgQEAgdm9pZCBJbnB1dFR5cGU6OmFw
cGx5U3RlcChpbnQgY291bnQsIEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIFRleHRG
aWVsZEUKICAgICBpZiAobmV3VmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgpKQogICAgICAgICBu
ZXdWYWx1ZSA9IHN0ZXBSYW5nZS5tYXhpbXVtKCk7CiAKLSAgICBzZXRWYWx1ZUFzSW5wdXROdW1i
ZXIobmV3VmFsdWUsIGV2ZW50QmVoYXZpb3IsIGVjKTsKKyAgICBzZXRWYWx1ZUFzRGVjaW1hbChu
ZXdWYWx1ZSwgZXZlbnRCZWhhdmlvciwgZWMpOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFj
Y2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgICBlbGVtZW50KCktPmRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihlbGVtZW50KCktPnJlbmRlcmVyKCksIEFY
T2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKIH0KIAotYm9vbCBJbnB1dFR5cGU6
OmdldEFsbG93ZWRWYWx1ZVN0ZXAoSW5wdXROdW1iZXIqIHN0ZXApIGNvbnN0Citib29sIElucHV0
VHlwZTo6Z2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKiBzdGVwKSBjb25zdAogewogICAgIFN0
ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwogICAgICpzdGVw
ID0gc3RlcFJhbmdlLnN0ZXAoKTsKQEAgLTk4OCw3ICs5ODgsNyBAQCB2b2lkIElucHV0VHlwZTo6
c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgIGlmICghc3RlcFJhbmdlLmhhc1N0ZXAoKSkK
ICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IElucHV0TnVtYmVyIHN0ZXAgPSBzdGVwUmFuZ2Uu
c3RlcCgpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IHN0ZXBSYW5nZS5zdGVwKCk7CiAKICAg
ICBpbnQgc2lnbjsKICAgICBpZiAoc3RlcCA+IDApCkBAIC05OTksMjAgKzk5OSwyMCBAQCB2b2lk
IElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgICAgICBzaWduID0gMDsK
IAogICAgIFN0cmluZyBjdXJyZW50U3RyaW5nVmFsdWUgPSBlbGVtZW50KCktPnZhbHVlKCk7Ci0g
ICAgSW5wdXROdW1iZXIgY3VycmVudCA9IHBhcnNlVG9OdW1iZXJPck5hTihjdXJyZW50U3RyaW5n
VmFsdWUpOworICAgIERlY2ltYWwgY3VycmVudCA9IHBhcnNlVG9OdW1iZXJPck5hTihjdXJyZW50
U3RyaW5nVmFsdWUpOwogICAgIGlmICghY3VycmVudC5pc0Zpbml0ZSgpKSB7CiAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGN1cnJlbnQgPSBkZWZhdWx0VmFsdWVGb3JTdGVwVXAo
KTsKLSAgICAgICAgY29uc3QgSW5wdXROdW1iZXIgbmV4dERpZmYgPSBzdGVwICogbjsKKyAgICAg
ICAgY29uc3QgRGVjaW1hbCBuZXh0RGlmZiA9IHN0ZXAgKiBuOwogICAgICAgICBpZiAoY3VycmVu
dCA8IHN0ZXBSYW5nZS5taW5pbXVtKCkgLSBuZXh0RGlmZikKICAgICAgICAgICAgIGN1cnJlbnQg
PSBzdGVwUmFuZ2UubWluaW11bSgpIC0gbmV4dERpZmY7CiAgICAgICAgIGlmIChjdXJyZW50ID4g
c3RlcFJhbmdlLm1heGltdW0oKSAtIG5leHREaWZmKQogICAgICAgICAgICAgY3VycmVudCA9IHN0
ZXBSYW5nZS5tYXhpbXVtKCkgLSBuZXh0RGlmZjsKLSAgICAgICAgc2V0VmFsdWVBc0lucHV0TnVt
YmVyKGN1cnJlbnQsIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCwgZWMpOworICAgICAgICBz
ZXRWYWx1ZUFzRGVjaW1hbChjdXJyZW50LCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQsIGVj
KTsKICAgICB9CiAgICAgaWYgKChzaWduID4gMCAmJiBjdXJyZW50IDwgc3RlcFJhbmdlLm1pbmlt
dW0oKSkgfHwgKHNpZ24gPCAwICYmIGN1cnJlbnQgPiBzdGVwUmFuZ2UubWF4aW11bSgpKSkgewog
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBzZXRWYWx1ZUFzSW5wdXROdW1iZXIo
c2lnbiA+IDAgPyBzdGVwUmFuZ2UubWluaW11bSgpIDogc3RlcFJhbmdlLm1heGltdW0oKSwgRGlz
cGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50LCBlYyk7CisgICAgICAgIHNldFZhbHVlQXNEZWNpbWFs
KHNpZ24gPiAwID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0ZXBSYW5nZS5tYXhpbXVtKCksIERp
c3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCwgZWMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1
ZSgpKSkgewpAQCAtMTAzMSw3ICsxMDMxLDcgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21S
ZW5kZXJlcihpbnQgbikKICAgICAgICAgICAgIGlmIChuZXdWYWx1ZSA+IHN0ZXBSYW5nZS5tYXhp
bXVtKCkpCiAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBzdGVwUmFuZ2UubWF4aW11bSgpOwog
Ci0gICAgICAgICAgICBzZXRWYWx1ZUFzSW5wdXROdW1iZXIobmV3VmFsdWUsIG4gPT0gMSB8fCBu
ID09IC0xID8gRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50IDogRGlzcGF0Y2hOb0V2ZW50LCBl
Yyk7CisgICAgICAgICAgICBzZXRWYWx1ZUFzRGVjaW1hbChuZXdWYWx1ZSwgbiA9PSAxIHx8IG4g
PT0gLTEgPyBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQgOiBEaXNwYXRjaE5vRXZlbnQsIGVj
KTsKICAgICAgICAgICAgIGlmIChuID4gMSkKICAgICAgICAgICAgICAgICBhcHBseVN0ZXAobiAt
IDEsIEFueUlzRGVmYXVsdFN0ZXAsIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCwgZWMpOwog
ICAgICAgICAgICAgZWxzZSBpZiAobiA8IC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXgg
YjZiOWI3ODgyMmFkZDc1MDVkZmJjN2ZhZmRiYjMyN2IyOTM3YTAyYS4uOGE5Zjg2YTNjMDQ5ZDM2
YWQzZTgxNGU4ZWYzMTJjOWJjNzg3MDVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0x
MzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGF0ZShk
b3VibGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFz
RG91YmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEb3VibGUoZG91Ymxl
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlQXNJbnB1dE51bWJlcihjb25zdCBJbnB1dE51bWJlciYsIFRleHRG
aWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VmFsdWVBc0RlY2ltYWwoY29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZp
b3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIC8vIFZhbGlkYXRpb24gZnVuY3Rpb25z
CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdDsKQEAgLTE1Niwx
MiArMTU2LDEyIEBAIHB1YmxpYzoKICAgICBib29sIHJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAgICAgYm9vbCBpc0luUmFuZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAg
Ym9vbCBpc091dE9mUmFuZ2UoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnB1
dE51bWJlciBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdDsKKyAgICB2aXJ0dWFsIERlY2lt
YWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Q7CiAgICAgZG91YmxlIG1pbmltdW0oKSBj
b25zdDsKICAgICBkb3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaXpl
U2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNp
emUpIGNvbnN0OwogICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKElucHV0TnVtYmVyKikgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCopIGNvbnN0Owog
ICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdGVwVXAoaW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIHN0ZXBVcEZyb21SZW5kZXJlcihpbnQpOwpAQCAtMjYxLDEwICsyNjEsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGRlZmF1bHRUb29sVGlwKCkgY29uc3Q7CiAK
ICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9yIHRoZSB0eXBlLCBhbmQgcmV0
dXJuCi0gICAgLy8gdGhlIElucHV0TnVtYmVyIHZhbHVlIGZvciB0aGUgcGFyc2luZyByZXN1bHQg
aWYgdGhlIHBhcnNpbmcKKyAgICAvLyB0aGUgRGVjaW1hbCB2YWx1ZSBmb3IgdGhlIHBhcnNpbmcg
cmVzdWx0IGlmIHRoZSBwYXJzaW5nCiAgICAgLy8gc3VjY2VlZHM7IFJldHVybnMgZGVmYXVsdFZh
bHVlIG90aGVyd2lzZS4gVGhpcyBmdW5jdGlvbiBjYW4KICAgICAvLyByZXR1cm4gTmFOIG9yIElu
ZmluaXR5IG9ubHkgaWYgZGVmYXVsdFZhbHVlIGlzIE5hTiBvciBJbmZpbml0eS4KLSAgICB2aXJ0
dWFsIElucHV0TnVtYmVyIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgSW5wdXRO
dW1iZXImIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgdmlydHVhbCBEZWNpbWFsIHBhcnNlVG9O
dW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZhbHVlKSBjb25zdDsK
IAogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgdGhpcyBJbnB1dFR5cGUs
IGFuZCByZXR1cm5zIHRydWUgaWYgaXQKICAgICAvLyBpcyBzdWNjZXNzZnVsbHkgcGFyc2VkLiBB
biBpbnN0YW5jZSBwb2ludGVkIGJ5IHRoZSBEYXRlQ29tcG9uZW50cyoKQEAgLTI3MiwxMCArMjcy
LDEwIEBAIHB1YmxpYzoKICAgICAvLyBmYWlscy4gVGhlIERhdGVDb21wb25lbnRzKiBwYXJhbWV0
ZXIgbWF5IGJlIDAuCiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25z
dCBTdHJpbmcmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0OwogCi0gICAgLy8gQ3JlYXRlIGEgc3Ry
aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgSW5wdXROdW1iZXIgdmFsdWUgZm9y
IHRoZQorICAgIC8vIENyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lm
aWVkIERlY2ltYWwgdmFsdWUgZm9yIHRoZQogICAgIC8vIGlucHV0IHR5cGUuIElmIE5hTiBvciBJ
bmZpbml0eSBpcyBzcGVjaWZpZWQsIHRoaXMgcmV0dXJucyBhbiBlbXB0eQogICAgIC8vIHN0cmlu
Zy4gVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3IgdHlwZXMgd2l0aG91dCB2YWx1ZUFzTnVt
YmVyLgotICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBJbnB1dE51bWJlciYpIGNv
bnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbmRldGVybWluYXRlQXBwZWFyYW5jZSgpIGNv
bnN0OwogCkBAIC0yODksNyArMjg5LDcgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICB2b2lkIGRpc3Bh
dGNoU2ltdWxhdGVkQ2xpY2tJZkFjdGl2ZShLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAgICAgQ2hy
b21lKiBjaHJvbWUoKSBjb25zdDsKLSAgICBJbnB1dE51bWJlciBwYXJzZVRvTnVtYmVyT3JOYU4o
Y29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgRGVjaW1hbCBwYXJzZVRvTnVtYmVyT3JOYU4oY29u
c3QgU3RyaW5nJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgLy8gSGVscGVyIGZvciBzdGVwVXAo
KS9zdGVwRG93bigpLiBBZGRzIHN0ZXAgdmFsdWUgKiBjb3VudCB0byB0aGUgY3VycmVudCB2YWx1
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKaW5kZXggYTExYTczNTFiZTlm
N2ZhNzVkZDJmOThiMTBmYTliNDcxY2NmZDhjMy4uYzliZWJiMTM1NmUyOGQ1OWFkMmZmZjA0ZmRh
MjEyYjNjNjBhODRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKQEAg
LTgyLDcgKzgyLDcgQEAgU3RyaW5nIE1vbnRoSW5wdXRUeXBlOjpzZXJpYWxpemVXaXRoTWlsbGlz
ZWNvbmRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gc2VyaWFsaXplV2l0aENvbXBv
bmVudHMoZGF0ZSk7CiB9CiAKLUlucHV0TnVtYmVyIE1vbnRoSW5wdXRUeXBlOjpkZWZhdWx0VmFs
dWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBNb250aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVl
Rm9yU3RlcFVwKCkgY29uc3QKIHsKICAgICBkb3VibGUgY3VycmVudCA9IGN1cnJlbnRUaW1lTVMo
KTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2FsY3VsYXRlVVRDT2Zmc2V0KCk7CkBAIC05NCwy
OCArOTQsMjggQEAgSW5wdXROdW1iZXIgTW9udGhJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0
ZXBVcCgpIGNvbnN0CiAgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgo
Y3VycmVudCk7CiAgICAgZG91YmxlIG1vbnRocyA9IGRhdGUubW9udGhzU2luY2VFcG9jaCgpOwog
ICAgIEFTU0VSVChpc2Zpbml0ZShtb250aHMpKTsKLSAgICByZXR1cm4gY29udmVydERvdWJsZVRv
SW5wdXROdW1iZXIobW9udGhzKTsKKyAgICByZXR1cm4gRGVjaW1hbDo6ZnJvbURvdWJsZShtb250
aHMpOwogfQogCiBTdGVwUmFuZ2UgTW9udGhJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlT
dGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KG1vbnRoRGVmYXVsdFN0ZXAsIG1vbnRoRGVmYXVsdFN0ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZh
Y3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKIAotICAg
IGNvbnN0IElucHV0TnVtYmVyIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKERhdGVD
b21wb25lbnRzOjptaW5pbXVtTW9udGgoKSkpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1pbmlt
dW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwg
Y29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1Nb250aCgp
KSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWF4aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVu
dCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJl
cihEYXRlQ29tcG9uZW50czo6bWF4aW11bU1vbnRoKCkpKTsKLSAgICBjb25zdCBJbnB1dE51bWJl
ciBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3Jp
cHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0
IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11
bU1vbnRoKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShE
YXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGlt
dW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwg
RGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWF4aW11bU1vbnRoKCkpKTsKKyAg
ICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxp
bmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRy
KSk7CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3Rl
cCwgc3RlcERlc2NyaXB0aW9uKTsKIH0KIAotSW5wdXROdW1iZXIgTW9udGhJbnB1dFR5cGU6OnBh
cnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0IElucHV0TnVtYmVyJiBkZWZhdWx0
VmFsdWUpIGNvbnN0CitEZWNpbWFsIE1vbnRoSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0
IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7CiAgICAg
RGF0ZUNvbXBvbmVudHMgZGF0ZTsKICAgICBpZiAoIXBhcnNlVG9EYXRlQ29tcG9uZW50cyhzcmMs
ICZkYXRlKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKICAgICBkb3VibGUgbW9udGhz
ID0gZGF0ZS5tb250aHNTaW5jZUVwb2NoKCk7CiAgICAgQVNTRVJUKGlzZmluaXRlKG1vbnRocykp
OwotICAgIHJldHVybiBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihtb250aHMpOworICAgIHJl
dHVybiBEZWNpbWFsOjpmcm9tRG91YmxlKG1vbnRocyk7CiB9CiAKIGJvb2wgTW9udGhJbnB1dFR5
cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRzKiBvdXQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01vbnRoSW5wdXRUeXBlLmgKaW5kZXggMmJmMzcyNzdjYjZmOThjMWJmOWY2NGIyZjE1NDE0
NjQ2Yjk4NjM5Ny4uOGYyNGZhNzg1MjgwMTc0NzFhMGEwYTgwMzU5MTc5Yzg4MmFiNWRiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaApAQCAtNDcsOCArNDcsOCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoZG91YmxlKSBjb25z
dCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIElucHV0TnVtYmVyIHBhcnNlVG9OdW1iZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgSW5wdXROdW1iZXImKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IElucHV0TnVtYmVyIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2lt
YWwmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBz
ZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNv
bnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4
IDFkNmE0NzkxOGVmOTk3ZWRmM2QzZTQ3ZjU1YWM2NDI1NGU3YzI0NDAuLmViMTU3ZjEwYzJkN2Zj
NTVlNzU3MzA0ZDM5NmJiN2FkODhlY2Y0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklu
cHV0VHlwZS5jcHAKQEAgLTEyNCwxMCArMTI0LDEwIEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpz
ZXRWYWx1ZUFzRG91YmxlKGRvdWJsZSBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBl
CiAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemVGb3JOdW1iZXJUeXBlKG5ld1ZhbHVl
KSwgZXZlbnRCZWhhdmlvcik7CiB9CiAKLXZvaWQgTnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFz
SW5wdXROdW1iZXIoY29uc3QgSW5wdXROdW1iZXImIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJl
aGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAordm9pZCBOdW1i
ZXJJbnB1dFR5cGU6OnNldFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVlLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJs
ZT46Om1heCBmb3IgbnVtYmVyIGlucHV0IHR5cGUuCi0gICAgY29uc3QgSW5wdXROdW1iZXIgZmxv
YXRNYXggPSBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihudW1lcmljX2xpbWl0czxmbG9hdD46
Om1heCgpKTsKKyAgICBjb25zdCBEZWNpbWFsIGZsb2F0TWF4ID0gRGVjaW1hbDo6ZnJvbURvdWJs
ZShudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKICAgICBpZiAobmV3VmFsdWUgPCAtZmxv
YXRNYXgpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTUzLDEyICsxNTMsMTIgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVNaXNtYXRj
aCgpIGNvbnN0CiBTdGVwUmFuZ2UgTnVtYmVySW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55
U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3JpcHRpb24s
IChudW1iZXJEZWZhdWx0U3RlcCwgbnVtYmVyRGVmYXVsdFN0ZXBCYXNlLCBudW1iZXJTdGVwU2Nh
bGVGYWN0b3IpKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwQmFzZSA9IHBhcnNlVG9EZWNp
bWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIG51
bWJlckRlZmF1bHRTdGVwQmFzZSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNl
VG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0
ciksIG51bWJlckRlZmF1bHRTdGVwQmFzZSk7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2Ug
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4IGZvciBudW1iZXIgaW5wdXQgdHlwZS4KLSAgICBj
b25zdCBJbnB1dE51bWJlciBmbG9hdE1heCA9IGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKG51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1pbmlt
dW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwg
LWZsb2F0TWF4KTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBtYXhpbXVtID0gcGFyc2VUb051bWJl
cihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIGZsb2F0TWF4KTsKLSAgICBj
b25zdCBJbnB1dE51bWJlciBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRs
aW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0
cikpOworICAgIGNvbnN0IERlY2ltYWwgZmxvYXRNYXggPSBEZWNpbWFsOjpmcm9tRG91YmxlKG51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9
IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAtZmxv
YXRNYXgpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVu
dCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBmbG9hdE1heCk7CisgICAgY29uc3QgRGVj
aW1hbCBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVz
Y3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJl
dHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNj
cmlwdGlvbik7CiB9CiAKQEAgLTIwNSwxMiArMjA1LDEyIEBAIHZvaWQgTnVtYmVySW5wdXRUeXBl
OjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqIGV2ZW50KQogICAgIGhhbmRsZVdoZWVsRXZl
bnRGb3JTcGluQnV0dG9uKGV2ZW50KTsKIH0KIAotSW5wdXROdW1iZXIgTnVtYmVySW5wdXRUeXBl
OjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBJbnB1dE51bWJlciYgZGVm
YXVsdFZhbHVlKSBjb25zdAorRGVjaW1hbCBOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIo
Y29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKHNyYywgZGVmYXVsdFZhbHVl
KTsKIH0KIAotU3RyaW5nIE51bWJlcklucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IElucHV0TnVt
YmVyJiB2YWx1ZSkgY29uc3QKK1N0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25z
dCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIXZhbHVlLmlzRmluaXRlKCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TnVtYmVySW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5o
CmluZGV4IGJjZWRjOTYwOThlNmVmOGZhMWY0NzQ2ZDA2MDJhNWM2Nzc0OGU2NjEuLmZlMTZlNWZh
MDk0NjBjMzZiMjhhNzYxZDBlYzliODI1ZmRhMmFmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1i
ZXJJbnB1dFR5cGUuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRG91YmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHNldFZhbHVlQXNEb3VibGUoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBF
eGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
QXNJbnB1dE51bWJlcihjb25zdCBJbnB1dE51bWJlciYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3Is
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFs
dWVBc0RlY2ltYWwoY29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNo
Rm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB0eXBl
TWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2l6ZVNob3VsZElu
Y2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25z
dCBPVkVSUklERTsKQEAgLTUyLDggKzUyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0ZXBS
YW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IElucHV0TnVtYmVyJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcg
c2VyaWFsaXplKGNvbnN0IElucHV0TnVtYmVyJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFs
JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJsdXJFdmVudCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplVmFsdWUoY29uc3QgU3RyaW5nJikg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3Qg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGZiOGJl
MGVlZGU2YzhkNmQxOGJmYjc2YjY5NTQ0NTlmNDBiYmEwZjEuLmZkMTFjYmFhNzk1YzYxODliYmNj
MTJhNDhmOWIyNzE1ZDUwMTNhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgcmFuZ2VEZWZhdWx0U3RlcCA9
IDE7CiBzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVsdFN0ZXBCYXNlID0gMDsKIHN0YXRpYyBj
b25zdCBpbnQgcmFuZ2VTdGVwU2NhbGVGYWN0b3IgPSAxOwogCi1zdGF0aWMgSW5wdXROdW1iZXIg
ZW5zdXJlTWF4aW11bShjb25zdCBJbnB1dE51bWJlciYgcHJvcG9zZWRWYWx1ZSwgY29uc3QgSW5w
dXROdW1iZXImIG1pbmltdW0sIGNvbnN0IElucHV0TnVtYmVyJiBmYWxsYmFja1ZhbHVlKQorc3Rh
dGljIERlY2ltYWwgZW5zdXJlTWF4aW11bShjb25zdCBEZWNpbWFsJiBwcm9wb3NlZFZhbHVlLCBj
b25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNpbWFsJiBmYWxsYmFja1ZhbHVlKQogewog
ICAgIHJldHVybiBwcm9wb3NlZFZhbHVlID49IG1pbmltdW0gPyBwcm9wb3NlZFZhbHVlIDogc3Rk
OjptYXgobWluaW11bSwgZmFsbGJhY2tWYWx1ZSk7CiB9CkBAIC04NSw3ICs4NSw3IEBAIGRvdWJs
ZSBSYW5nZUlucHV0VHlwZTo6dmFsdWVBc0RvdWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcnNl
VG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CiB9CiAKLXZvaWQgUmFu
Z2VJbnB1dFR5cGU6OnNldFZhbHVlQXNJbnB1dE51bWJlcihjb25zdCBJbnB1dE51bWJlciYgbmV3
VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0Cit2b2lkIFJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZUFzRGVjaW1hbChjb25zdCBE
ZWNpbWFsJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBF
eGNlcHRpb25Db2RlJikgY29uc3QKIHsKICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6
ZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOwogfQpAQCAtOTksMTYgKzk5LDE2IEBAIFN0ZXBS
YW5nZSBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlT
dGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVw
UmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAocmFuZ2VEZWZhdWx0U3Rl
cCwgcmFuZ2VEZWZhdWx0U3RlcEJhc2UsIHJhbmdlU3RlcFNjYWxlRmFjdG9yKSk7CiAKLSAgICBj
b25zdCBJbnB1dE51bWJlciBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWluQXR0ciksIHJhbmdlRGVmYXVsdE1pbmltdW0pOwotICAgIGNvbnN0IElu
cHV0TnVtYmVyIG1heGltdW0gPSBlbnN1cmVNYXhpbXVtKHBhcnNlVG9OdW1iZXIoZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCByYW5nZURlZmF1bHRNYXhpbXVtKSwgbWluaW11
bSwgcmFuZ2VEZWZhdWx0TWF4aW11bSk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFy
c2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIHJhbmdlRGVm
YXVsdE1pbmltdW0pOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IGVuc3VyZU1heGltdW0o
cGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJhbmdl
RGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5nZURlZmF1bHRNYXhpbXVtKTsKIAogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgcHJlY2lzaW9uVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUocHJlY2lzaW9uQXR0cik7CiAgICAgaWYgKCFwcmVjaXNpb25WYWx1ZS5pc051bGwoKSkg
ewotICAgICAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gZXF1YWxJZ25vcmluZ0Nhc2UocHJl
Y2lzaW9uVmFsdWUsICJmbG9hdCIpID8gRGVjaW1hbDo6bmFuKCkgOiAxOworICAgICAgICBjb25z
dCBEZWNpbWFsIHN0ZXAgPSBlcXVhbElnbm9yaW5nQ2FzZShwcmVjaXNpb25WYWx1ZSwgImZsb2F0
IikgPyBEZWNpbWFsOjpuYW4oKSA6IDE7CiAgICAgICAgIHJldHVybiBTdGVwUmFuZ2UobWluaW11
bSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAg
ICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhh
bmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVw
QXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFu
eVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1
dGUoc3RlcEF0dHIpKTsKICAgICByZXR1cm4gU3RlcFJhbmdlKG1pbmltdW0sIG1pbmltdW0sIG1h
eGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZl
bnQpCiAKICAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7CiAK
LSAgICBjb25zdCBJbnB1dE51bWJlciBjdXJyZW50ID0gcGFyc2VUb051bWJlck9yTmFOKGVsZW1l
bnQoKS0+dmFsdWUoKSk7CisgICAgY29uc3QgRGVjaW1hbCBjdXJyZW50ID0gcGFyc2VUb051bWJl
ck9yTmFOKGVsZW1lbnQoKS0+dmFsdWUoKSk7CiAgICAgQVNTRVJUKGN1cnJlbnQuaXNGaW5pdGUo
KSk7CiAKICAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkp
KTsKQEAgLTE0OSw4ICsxNDksOCBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3du
RXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgdXNl
IHN0ZXBVcCgpIGZvciB0aGUgc3RlcCB2YWx1ZSAiYW55Ii4gU28sIHdlIGluY3JlYXNlCiAgICAg
Ly8gb3IgZGVjcmVhc2UgdGhlIHZhbHVlIGJ5IDEvMTAwIG9mIHRoZSB2YWx1ZSByYW5nZS4gSXMg
aXQgcmVhc29uYWJsZT8KLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gZXF1YWxJZ25vcmlu
Z0Nhc2UoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSwgImFueSIpID8gKHN0
ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11bSgpKSAvIDEwMCA6IHN0ZXBSYW5n
ZS5zdGVwKCk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgYmlnU3RlcCA9IG1heCgoc3RlcFJhbmdl
Lm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkpIC8gMTAsIHN0ZXApOworICAgIGNvbnN0
IERlY2ltYWwgc3RlcCA9IGVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShzdGVwQXR0ciksICJhbnkiKSA/IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdl
Lm1pbmltdW0oKSkgLyAxMDAgOiBzdGVwUmFuZ2Uuc3RlcCgpOworICAgIGNvbnN0IERlY2ltYWwg
YmlnU3RlcCA9IG1heCgoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkp
IC8gMTAsIHN0ZXApOwogCiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gZmFsc2U7CiAgICAgaWYgKGVs
ZW1lbnQoKS0+cmVuZGVyZXIoKSkgewpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUmFuZ2VJbnB1
dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAg
aXNWZXJ0aWNhbCA9IHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0IHx8IHBhcnQgPT0gTWVkaWFW
b2x1bWVTbGlkZXJQYXJ0OwogICAgIH0KIAotICAgIElucHV0TnVtYmVyIG5ld1ZhbHVlOworICAg
IERlY2ltYWwgbmV3VmFsdWU7CiAgICAgaWYgKGtleSA9PSAiVXAiKQogICAgICAgICBuZXdWYWx1
ZSA9IGN1cnJlbnQgKyBzdGVwOwogICAgIGVsc2UgaWYgKGtleSA9PSAiRG93biIpCkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJv
YXJkRXZlbnQqIGV2ZW50KQogICAgIGlmIChuZXdWYWx1ZSAhPSBjdXJyZW50KSB7CiAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRC
ZWhhdmlvciA9IERpc3BhdGNoQ2hhbmdlRXZlbnQ7Ci0gICAgICAgIHNldFZhbHVlQXNJbnB1dE51
bWJlcihuZXdWYWx1ZSwgZXZlbnRCZWhhdmlvciwgZWMpOworICAgICAgICBzZXRWYWx1ZUFzRGVj
aW1hbChuZXdWYWx1ZSwgZXZlbnRCZWhhdmlvciwgZWMpOwogCiAgICAgICAgIGlmIChBWE9iamVj
dENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICAgICAgZWxlbWVudCgpLT5k
b2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oZWxlbWVudCgpLT5y
ZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CkBAIC0yMTMs
MTIgKzIxMywxMiBAQCBSZW5kZXJPYmplY3QqIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgYwogICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTbGlkZXIoZWxlbWVudCgpKTsKIH0KIAotSW5wdXROdW1iZXIgUmFuZ2VJbnB1
dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0IElucHV0TnVtYmVy
JiBkZWZhdWx0VmFsdWUpIGNvbnN0CitEZWNpbWFsIFJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvTnVt
YmVyKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShzcmMsIGRlZmF1bHRW
YWx1ZSk7CiB9CiAKLVN0cmluZyBSYW5nZUlucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IElucHV0
TnVtYmVyJiB2YWx1ZSkgY29uc3QKK1N0cmluZyBSYW5nZUlucHV0VHlwZTo6c2VyaWFsaXplKGNv
bnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewogICAgIGlmICghdmFsdWUuaXNGaW5pdGUoKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIFN0cmluZyBSYW5n
ZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6
OnNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdAogewogICAg
IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIGNv
bnN0IElucHV0TnVtYmVyIHByb3Bvc2VkTnVtZXJpY1ZhbHVlID0gcGFyc2VUb051bWJlcihwcm9w
b3NlZFZhbHVlLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkpOworICAgIGNvbnN0IERlY2ltYWwg
cHJvcG9zZWROdW1lcmljVmFsdWUgPSBwYXJzZVRvTnVtYmVyKHByb3Bvc2VkVmFsdWUsIHN0ZXBS
YW5nZS5kZWZhdWx0VmFsdWUoKSk7CiAgICAgcmV0dXJuIHNlcmlhbGl6ZUZvck51bWJlclR5cGUo
c3RlcFJhbmdlLmNsYW1wVmFsdWUocHJvcG9zZWROdW1lcmljVmFsdWUpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IDBjOGEyYTkyZGVjMDBmZTJhMjI5MWFkZjhm
ZWU2ZmM1NTM1OWE1ZDkuLmZmOGY0MDI4ZjIwNzU5ZTgxZTdkNjUzYTYzOGQ5MzEyODc3YTBiOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSYW5nZUNvbnRyb2woKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBkb3VibGUgdmFsdWVBc0RvdWJsZSgpIGNvbnN0IE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzSW5wdXROdW1iZXIoY29uc3QgSW5wdXRO
dW1iZXImLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwm
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWlyZWQoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdCBPVkVSUklE
RTsKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5
ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IElucHV0TnVtYmVyJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2Vy
aWFsaXplKGNvbnN0IElucHV0TnVtYmVyJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBE
ZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNl
bmRNb3VzZUV2ZW50cykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1pbk9yTWF4QXR0cmli
dXRlQ2hhbmdlZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBT
dHJpbmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgT1ZFUlJJ
REU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5kZXggOTlmOWRlNmIzZmY2MDRmMWEyY2Fk
NTIzMDUyNmJkMzQxMDU0YzQwZC4uYzdjODhmY2Y5MDU2NGM5OTM2ZjQ3NjMxODZhZDliODNjMzUy
NjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBTdGVw
UmFuZ2U6OlN0ZXBSYW5nZShjb25zdCBTdGVwUmFuZ2UmIHN0ZXBSYW5nZSkKIHsKIH0KIAotU3Rl
cFJhbmdlOjpTdGVwUmFuZ2UoY29uc3QgSW5wdXROdW1iZXImIHN0ZXBCYXNlLCBjb25zdCBJbnB1
dE51bWJlciYgbWluaW11bSwgY29uc3QgSW5wdXROdW1iZXImIG1heGltdW0sIGNvbnN0IElucHV0
TnVtYmVyJiBzdGVwLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbikKK1N0
ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IERlY2ltYWwmIHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFs
JiBtaW5pbXVtLCBjb25zdCBEZWNpbWFsJiBtYXhpbXVtLCBjb25zdCBEZWNpbWFsJiBzdGVwLCBj
b25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbikKICAgICA6IG1fbWF4aW11bSht
YXhpbXVtKQogICAgICwgbV9taW5pbXVtKG1pbmltdW0pCiAgICAgLCBtX3N0ZXAoc3RlcC5pc0Zp
bml0ZSgpID8gc3RlcCA6IDEpCkBAIC02NSwxNCArNjUsMTQgQEAgU3RlcFJhbmdlOjpTdGVwUmFu
Z2UoY29uc3QgSW5wdXROdW1iZXImIHN0ZXBCYXNlLCBjb25zdCBJbnB1dE51bWJlciYgbWluaW11
bSwgY28KICAgICBBU1NFUlQobV9zdGVwQmFzZS5pc0Zpbml0ZSgpKTsKIH0KIAotSW5wdXROdW1i
ZXIgU3RlcFJhbmdlOjphY2NlcHRhYmxlRXJyb3IoKSBjb25zdAorRGVjaW1hbCBTdGVwUmFuZ2U6
OmFjY2VwdGFibGVFcnJvcigpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2Ug
REJMX01BTlRfRElHIGluc3RlYWQgb2YgRkxUX01BTlRfRElHIHJlZ2FyZGluZyB0byBIVE1MNSBz
cGVjaWZpY2F0aW9uLgogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdHdv
UG93ZXJPZkZsb2F0TWFudGlzc2FCaXRzLCAoRGVjaW1hbDo6UG9zaXRpdmUsIDAsIFVJTlQ2NF9D
KDEpIDw8IEZMVF9NQU5UX0RJRykpOwogICAgIHJldHVybiBtX3N0ZXAgLyB0d29Qb3dlck9mRmxv
YXRNYW50aXNzYUJpdHM7CiB9CiAKLUlucHV0TnVtYmVyIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZv
clN0ZXAoY29uc3QgSW5wdXROdW1iZXImIGN1cnJlbnRWYWx1ZSwgY29uc3QgSW5wdXROdW1iZXIm
IG5ld1ZhbHVlKSBjb25zdAorRGVjaW1hbCBTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JTdGVwKGNv
bnN0IERlY2ltYWwmIGN1cnJlbnRWYWx1ZSwgY29uc3QgRGVjaW1hbCYgbmV3VmFsdWUpIGNvbnN0
CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBEZWNpbWFsLCB0ZW5Qb3dlck9mMjEs
IChEZWNpbWFsOjpQb3NpdGl2ZSwgMjEsIDEpKTsKICAgICBpZiAobmV3VmFsdWUgPj0gdGVuUG93
ZXJPZjIxKQpAQCAtODEsMjAgKzgxLDIwIEBAIElucHV0TnVtYmVyIFN0ZXBSYW5nZTo6YWxpZ25W
YWx1ZUZvclN0ZXAoY29uc3QgSW5wdXROdW1iZXImIGN1cnJlbnRWYWx1ZSwgY29uc3QKICAgICBy
ZXR1cm4gc3RlcE1pc21hdGNoKGN1cnJlbnRWYWx1ZSkgPyBuZXdWYWx1ZSA6IHJvdW5kQnlTdGVw
KG5ld1ZhbHVlLCBtX3N0ZXBCYXNlKTsKIH0KIAotSW5wdXROdW1iZXIgU3RlcFJhbmdlOjpjbGFt
cFZhbHVlKGNvbnN0IElucHV0TnVtYmVyJiB2YWx1ZSkgY29uc3QKK0RlY2ltYWwgU3RlcFJhbmdl
OjpjbGFtcFZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewotICAgIGNvbnN0IElu
cHV0TnVtYmVyIGluUmFuZ2VWYWx1ZSA9IG1heChtX21pbmltdW0sIG1pbih2YWx1ZSwgbV9tYXhp
bXVtKSk7CisgICAgY29uc3QgRGVjaW1hbCBpblJhbmdlVmFsdWUgPSBtYXgobV9taW5pbXVtLCBt
aW4odmFsdWUsIG1fbWF4aW11bSkpOwogICAgIGlmICghbV9oYXNTdGVwKQogICAgICAgICByZXR1
cm4gaW5SYW5nZVZhbHVlOwogICAgIC8vIFJvdW5kcyBpblJhbmdlVmFsdWUgdG8gbWluaW11bSAr
IE4gKiBzdGVwLgotICAgIGNvbnN0IElucHV0TnVtYmVyIHJvdW5kZWRWYWx1ZSA9IHJvdW5kQnlT
dGVwKGluUmFuZ2VWYWx1ZSwgbV9taW5pbXVtKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBjbGFt
cGVkVmFsdWUgPSByb3VuZGVkVmFsdWUgPiBtX21heGltdW0gPyByb3VuZGVkVmFsdWUgLSBtX3N0
ZXAgOiByb3VuZGVkVmFsdWU7CisgICAgY29uc3QgRGVjaW1hbCByb3VuZGVkVmFsdWUgPSByb3Vu
ZEJ5U3RlcChpblJhbmdlVmFsdWUsIG1fbWluaW11bSk7CisgICAgY29uc3QgRGVjaW1hbCBjbGFt
cGVkVmFsdWUgPSByb3VuZGVkVmFsdWUgPiBtX21heGltdW0gPyByb3VuZGVkVmFsdWUgLSBtX3N0
ZXAgOiByb3VuZGVkVmFsdWU7CiAgICAgQVNTRVJUKGNsYW1wZWRWYWx1ZSA+PSBtX21pbmltdW0p
OwogICAgIEFTU0VSVChjbGFtcGVkVmFsdWUgPD0gbV9tYXhpbXVtKTsKICAgICByZXR1cm4gY2xh
bXBlZFZhbHVlOwogfQogCi1JbnB1dE51bWJlciBTdGVwUmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVw
SGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNj
cmlwdGlvbiwgY29uc3QgU3RyaW5nJiBzdGVwU3RyaW5nKQorRGVjaW1hbCBTdGVwUmFuZ2U6OnBh
cnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBjb25zdCBTdGVwRGVzY3Jp
cHRpb24mIHN0ZXBEZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiBzdGVwU3RyaW5nKQogewogICAg
IGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZXBEZXNjcmlwdGlv
bi5kZWZhdWx0VmFsdWUoKTsKQEAgLTEzNiwyMSArMTM2LDIxIEBAIElucHV0TnVtYmVyIFN0ZXBS
YW5nZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0
ZXBEZXNjCiAgICAgcmV0dXJuIHN0ZXA7CiB9CiAKLUlucHV0TnVtYmVyIFN0ZXBSYW5nZTo6cm91
bmRCeVN0ZXAoY29uc3QgSW5wdXROdW1iZXImIHZhbHVlLCBjb25zdCBJbnB1dE51bWJlciYgYmFz
ZSkgY29uc3QKK0RlY2ltYWwgU3RlcFJhbmdlOjpyb3VuZEJ5U3RlcChjb25zdCBEZWNpbWFsJiB2
YWx1ZSwgY29uc3QgRGVjaW1hbCYgYmFzZSkgY29uc3QKIHsKICAgICByZXR1cm4gYmFzZSArICgo
dmFsdWUgLSBiYXNlKSAvIG1fc3RlcCkucm91bmQoKSAqIG1fc3RlcDsKIH0KIAotYm9vbCBTdGVw
UmFuZ2U6OnN0ZXBNaXNtYXRjaChjb25zdCBJbnB1dE51bWJlciYgdmFsdWVGb3JDaGVjaykgY29u
c3QKK2Jvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2goY29uc3QgRGVjaW1hbCYgdmFsdWVGb3JD
aGVjaykgY29uc3QKIHsKICAgICBpZiAoIW1faGFzU3RlcCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghdmFsdWVGb3JDaGVjay5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgdmFsdWUgPSAodmFsdWVGb3JDaGVjayAtIG1fc3Rl
cEJhc2UpLmFicygpOworICAgIGNvbnN0IERlY2ltYWwgdmFsdWUgPSAodmFsdWVGb3JDaGVjayAt
IG1fc3RlcEJhc2UpLmFicygpOwogICAgIGlmICghdmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIC8vIElucHV0TnVtYmVyJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUg
aXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3VycmVudCB2YWx1ZQorICAgIC8vIERlY2ltYWwn
cyBmcmFjdGlvbmFsIHBhcnQgc2l6ZSBpcyBEQkxfTUFOX0RJRy1iaXQuIElmIHRoZSBjdXJyZW50
IHZhbHVlCiAgICAgLy8gaXMgZ3JlYXRlciB0aGFuIHN0ZXAqMl5EQkxfTUFOVF9ESUcsIHRoZSBm
b2xsb3dpbmcgY29tcHV0YXRpb24gZm9yCiAgICAgLy8gcmVtYWluZGVyIG1ha2VzIG5vIHNlbnNl
LgogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1hbCwgdHdvUG93ZXJPZkRvdWJs
ZU1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBEQkxf
TUFOVF9ESUcpKTsKQEAgLTE1OSwxMCArMTU5LDEwIEBAIGJvb2wgU3RlcFJhbmdlOjpzdGVwTWlz
bWF0Y2goY29uc3QgSW5wdXROdW1iZXImIHZhbHVlRm9yQ2hlY2spIGNvbnN0CiAgICAgLy8gVGhl
IGNvbXB1dGF0aW9uIGZvbGxvd3MgSFRNTDUgNC4xMC43LjIuMTAgYFRoZSBzdGVwIGF0dHJpYnV0
ZScgOgogICAgIC8vIC4uLiB0aGF0IG51bWJlciBzdWJ0cmFjdGVkIGZyb20gdGhlIHN0ZXAgYmFz
ZSBpcyBub3QgYW4gaW50ZWdyYWwgbXVsdGlwbGUKICAgICAvLyBvZiB0aGUgYWxsb3dlZCB2YWx1
ZSBzdGVwLCB0aGUgZWxlbWVudCBpcyBzdWZmZXJpbmcgZnJvbSBhIHN0ZXAgbWlzbWF0Y2guCi0g
ICAgY29uc3QgSW5wdXROdW1iZXIgcmVtYWluZGVyID0gKHZhbHVlIC0gbV9zdGVwICogKHZhbHVl
IC8gbV9zdGVwKS5yb3VuZCgpKS5hYnMoKTsKKyAgICBjb25zdCBEZWNpbWFsIHJlbWFpbmRlciA9
ICh2YWx1ZSAtIG1fc3RlcCAqICh2YWx1ZSAvIG1fc3RlcCkucm91bmQoKSkuYWJzKCk7CiAgICAg
Ly8gQWNjZXB0cyBlcnJvcyBpbiBsb3dlciBmcmFjdGlvbmFsIHBhcnQgd2hpY2ggSUVFRSA3NTQg
c2luZ2xlLXByZWNpc2lvbgogICAgIC8vIGNhbid0IHJlcHJlc2VudC4KLSAgICBjb25zdCBJbnB1
dE51bWJlciBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA9IGFjY2VwdGFibGVFcnJvcigpOworICAg
IGNvbnN0IERlY2ltYWwgY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IgPSBhY2NlcHRhYmxlRXJyb3Io
KTsKICAgICByZXR1cm4gY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IgPCByZW1haW5kZXIgJiYgcmVt
YWluZGVyIDwgKG1fc3RlcCAtIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvU3RlcFJhbmdlLmgKaW5kZXggYjI5ZmE2Y2ExYTc0ZWYzNzEzODdjZDdiODQ5ZDFjNzk4NDMz
NWVkOS4uNjNhYjc1NjFhMmZlMDc1MzJmYzRmN2QzOWY2Nzg2ZjY4OTk5MWMyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1N0ZXBSYW5nZS5oCkBAIC0zMSwxOSArMzEsNiBAQCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50
OwogCiBlbnVtIEFueVN0ZXBIYW5kbGluZyB7IFJlamVjdEFueSwgQW55SXNEZWZhdWx0U3RlcCB9
OwogCi0vLyBGSVhNRTogV2Ugc2hvdWxkIHJlbmFtZSBJbnB1dE51bWJlciB0byBEZWNpbWFsIGlu
IGFsbCBwbGFjZXMuCi10eXBlZGVmIERlY2ltYWwgSW5wdXROdW1iZXI7Ci0KLWlubGluZSBJbnB1
dE51bWJlciBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihkb3VibGUgZG91YmxlVmFsdWUpCi17
Ci0gICAgcmV0dXJuIERlY2ltYWw6OmZyb21Eb3VibGUoZG91YmxlVmFsdWUpOwotfQotCi1pbmxp
bmUgZG91YmxlIGNvbnZlcnRJbnB1dE51bWJlclRvRG91YmxlKGNvbnN0IElucHV0TnVtYmVyJiBu
dW1lcmljVmFsdWUpCi17Ci0gICAgcmV0dXJuIG51bWVyaWNWYWx1ZS50b0RvdWJsZSgpOwotfQot
CiBjbGFzcyBTdGVwUmFuZ2UgewogcHVibGljOgogICAgIGVudW0gU3RlcFZhbHVlU2hvdWxkQmUg
ewpAQCAtNzQsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIElucHV0TnVtYmVyIGRlZmF1bHRWYWx1ZSgpIGNvbnN0CisgICAgICAgIERlY2ltYWwgZGVm
YXVsdFZhbHVlKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRT
dGVwICogc3RlcFNjYWxlRmFjdG9yOwogICAgICAgICB9CkBAIC04MiwyNyArNjksMjcgQEAgcHVi
bGljOgogCiAgICAgU3RlcFJhbmdlKCk7CiAgICAgU3RlcFJhbmdlKGNvbnN0IFN0ZXBSYW5nZSYp
OwotICAgIFN0ZXBSYW5nZShjb25zdCBJbnB1dE51bWJlciYgc3RlcEJhc2UsIGNvbnN0IElucHV0
TnVtYmVyJiBtaW5pbXVtLCBjb25zdCBJbnB1dE51bWJlciYgbWF4aW11bSwgY29uc3QgSW5wdXRO
dW1iZXImIHN0ZXAsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYpOwotICAgIElucHV0TnVtYmVyIGFj
Y2VwdGFibGVFcnJvcigpIGNvbnN0OwotICAgIElucHV0TnVtYmVyIGFsaWduVmFsdWVGb3JTdGVw
KGNvbnN0IElucHV0TnVtYmVyJiBjdXJyZW50VmFsdWUsIGNvbnN0IElucHV0TnVtYmVyJiBuZXdW
YWx1ZSkgY29uc3Q7Ci0gICAgSW5wdXROdW1iZXIgY2xhbXBWYWx1ZShjb25zdCBJbnB1dE51bWJl
ciYgdmFsdWUpIGNvbnN0OworICAgIFN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBzdGVwQmFzZSwg
Y29uc3QgRGVjaW1hbCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgbWF4aW11bSwgY29uc3QgRGVj
aW1hbCYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9uJik7CisgICAgRGVjaW1hbCBhY2NlcHRh
YmxlRXJyb3IoKSBjb25zdDsKKyAgICBEZWNpbWFsIGFsaWduVmFsdWVGb3JTdGVwKGNvbnN0IERl
Y2ltYWwmIGN1cnJlbnRWYWx1ZSwgY29uc3QgRGVjaW1hbCYgbmV3VmFsdWUpIGNvbnN0OworICAg
IERlY2ltYWwgY2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3Q7CiAgICAgYm9v
bCBoYXNTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9oYXNTdGVwOyB9Ci0gICAgSW5wdXROdW1iZXIg
bWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQotICAgIElucHV0TnVtYmVyIG1p
bmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07IH0KLSAgICBzdGF0aWMgSW5wdXROdW1i
ZXIgcGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2NyaXB0aW9uJiwgY29u
c3QgU3RyaW5nJik7Ci0gICAgSW5wdXROdW1iZXIgc3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rl
cDsgfQotICAgIElucHV0TnVtYmVyIHN0ZXBCYXNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGVwQmFz
ZTsgfQorICAgIERlY2ltYWwgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQor
ICAgIERlY2ltYWwgbWluaW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bTsgfQorICAgIHN0
YXRpYyBEZWNpbWFsIHBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlw
dGlvbiYsIGNvbnN0IFN0cmluZyYpOworICAgIERlY2ltYWwgc3RlcCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RlcDsgfQorICAgIERlY2ltYWwgc3RlcEJhc2UoKSBjb25zdCB7IHJldHVybiBtX3N0ZXBC
YXNlOyB9CiAgICAgaW50IHN0ZXBTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcERl
c2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsgfQotICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0
IElucHV0TnVtYmVyJikgY29uc3Q7CisgICAgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgRGVjaW1h
bCYpIGNvbnN0OwogCiAgICAgLy8gQ2xhbXAgdGhlIG1pZGRsZSB2YWx1ZSBhY2NvcmRpbmcgdG8g
dGhlIHN0ZXAKLSAgICBJbnB1dE51bWJlciBkZWZhdWx0VmFsdWUoKSBjb25zdAorICAgIERlY2lt
YWwgZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBjbGFtcFZhbHVl
KChtX21pbmltdW0gKyBtX21heGltdW0pIC8gMik7CiAgICAgfQogCiAgICAgLy8gTWFwIHZhbHVl
IGludG8gMC0xIHJhbmdlCi0gICAgSW5wdXROdW1iZXIgcHJvcG9ydGlvbkZyb21WYWx1ZShjb25z
dCBJbnB1dE51bWJlciYgdmFsdWUpIGNvbnN0CisgICAgRGVjaW1hbCBwcm9wb3J0aW9uRnJvbVZh
bHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fbWlu
aW11bSA9PSBtX21heGltdW0pCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTExMSwxOSArOTgs
MTkgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIE1hcCBmcm9tIDAtMSByYW5nZSB0byB2YWx1
ZQotICAgIElucHV0TnVtYmVyIHZhbHVlRnJvbVByb3BvcnRpb24oY29uc3QgSW5wdXROdW1iZXIm
IHByb3BvcnRpb24pIGNvbnN0CisgICAgRGVjaW1hbCB2YWx1ZUZyb21Qcm9wb3J0aW9uKGNvbnN0
IERlY2ltYWwmIHByb3BvcnRpb24pIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9taW5p
bXVtICsgcHJvcG9ydGlvbiAqIChtX21heGltdW0gLSBtX21pbmltdW0pOwogICAgIH0KIAogcHJp
dmF0ZToKICAgICBTdGVwUmFuZ2UmIG9wZXJhdG9yID0oY29uc3QgU3RlcFJhbmdlJik7Ci0gICAg
SW5wdXROdW1iZXIgcm91bmRCeVN0ZXAoY29uc3QgSW5wdXROdW1iZXImIHZhbHVlLCBjb25zdCBJ
bnB1dE51bWJlciYgYmFzZSkgY29uc3Q7CisgICAgRGVjaW1hbCByb3VuZEJ5U3RlcChjb25zdCBE
ZWNpbWFsJiB2YWx1ZSwgY29uc3QgRGVjaW1hbCYgYmFzZSkgY29uc3Q7CiAKLSAgICBjb25zdCBJ
bnB1dE51bWJlciBtX21heGltdW07IC8vIG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVtLgotICAg
IGNvbnN0IElucHV0TnVtYmVyIG1fbWluaW11bTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBtX3N0
ZXA7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbV9zdGVwQmFzZTsKKyAgICBjb25zdCBEZWNpbWFs
IG1fbWF4aW11bTsgLy8gbWF4aW11bSBtdXN0IGJlID49IG1pbmltdW0uCisgICAgY29uc3QgRGVj
aW1hbCBtX21pbmltdW07CisgICAgY29uc3QgRGVjaW1hbCBtX3N0ZXA7CisgICAgY29uc3QgRGVj
aW1hbCBtX3N0ZXBCYXNlOwogICAgIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiBtX3N0ZXBEZXNjcmlw
dGlvbjsKICAgICBjb25zdCBib29sIG1faGFzU3RlcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1l
SW5wdXRUeXBlLmNwcAppbmRleCA1Mzc5MmE5OThhOTI4OTMyYTVjMmI3NDRlNDU4MzVhNDliNjNh
Y2RlLi4wNTJiODg3NTYxNzNlY2E5Mjk5MmVhNTk5N2FiZDU5NjIxNzcyNThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgRGF0ZUNvbXBvbmVu
dHM6OlR5cGUgVGltZUlucHV0VHlwZTo6ZGF0ZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBEYXRl
Q29tcG9uZW50czo6VGltZTsKIH0KIAotSW5wdXROdW1iZXIgVGltZUlucHV0VHlwZTo6ZGVmYXVs
dFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZh
bHVlRm9yU3RlcFVwKCkgY29uc3QKIHsKICAgICBkb3VibGUgY3VycmVudCA9IGN1cnJlbnRUaW1l
TVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2FsY3VsYXRlVVRDT2Zmc2V0KCk7CkBAIC03
NiwxNyArNzYsMTcgQEAgSW5wdXROdW1iZXIgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKCkgY29uc3QKICAgICBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlTWlkbmlnaHQoY3Vy
cmVudCk7CiAgICAgZG91YmxlIG1pbGxpc2Vjb25kcyA9IGRhdGUubWlsbGlzZWNvbmRzU2luY2VF
cG9jaCgpOwogICAgIEFTU0VSVChpc2Zpbml0ZShtaWxsaXNlY29uZHMpKTsKLSAgICByZXR1cm4g
Y29udmVydERvdWJsZVRvSW5wdXROdW1iZXIobWlsbGlzZWNvbmRzKTsKKyAgICByZXR1cm4gRGVj
aW1hbDo6ZnJvbURvdWJsZShtaWxsaXNlY29uZHMpOwogfQogCiBTdGVwUmFuZ2UgVGltZUlucHV0
VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNv
bnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNj
cmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAodGltZURlZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0
ZXBCYXNlLCB0aW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNo
b3VsZEJlSW50ZWdlcikpOwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcEJhc2UgPSBwYXJz
ZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7Ci0gICAg
Y29uc3QgSW5wdXROdW1iZXIgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0
R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihEYXRlQ29t
cG9uZW50czo6bWluaW11bVRpbWUoKSkpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1heGltdW0g
PSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgY29u
dmVydERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6Om1heGltdW1UaW1lKCkpKTsK
LSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3Rl
cEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShz
dGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7CisgICAgY29uc3QgRGVjaW1h
bCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWlu
QXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1UaW1lKCkp
KTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9u
ZW50czo6bWF4aW11bVRpbWUoKSkpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IFN0ZXBSYW5n
ZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCkt
PmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBC
YXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwRGVzY3JpcHRpb24pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCmluZGV4IDgyODc1ZTU3NDAzYjFhODJjZjMxZGY0ZDli
NmEyZjk0NGJhOGRjOWEuLmM5ZDViMGNkZDA3NzEyYjg3N2VhYTdjMTkyYzZlYTg0MWRhNTBkZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZh
dGU6CiAgICAgVGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IEJhc2VE
YXRlQW5kVGltZUlucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBE
YXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgSW5wdXROdW1iZXIgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJ
bnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21w
b25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCmluZGV4IGY4YWVhMGFjMTZlMzAzYThiZDQzNWIyZWM5
YjgyNmEyMDk2M2I3ZjIuLmM4ODFhZThjMWEzYjZjZjQ3MjM0ZGYzOGRiMWNkNjFjOWQzMzBkYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcApAQCAtNjUsMTAgKzY1LDEwIEBA
IFN0ZXBSYW5nZSBXZWVrSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5n
IGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVwRGVzY3JpcHRpb24sICh3ZWVrRGVmYXVs
dFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJhc2UsIHdlZWtTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5n
ZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CiAKLSAgICBjb25zdCBJbnB1dE51
bWJlciBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBt
aW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0
ciksIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKERhdGVDb21wb25lbnRzOjptaW5pbXVtV2Vl
aygpKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWF4aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxl
bWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBjb252ZXJ0RG91YmxlVG9JbnB1dE51
bWJlcihEYXRlQ29tcG9uZW50czo6bWF4aW11bVdlZWsoKSkpOwotICAgIGNvbnN0IElucHV0TnVt
YmVyIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNj
cmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CisgICAgY29u
c3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0
cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsKKyAgICBjb25zdCBEZWNpbWFs
IG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5B
dHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bVdlZWsoKSkp
OworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25l
bnRzOjptYXhpbXVtV2VlaygpKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gU3RlcFJhbmdl
OjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJh
c2UsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3Bw
CmluZGV4IGFiOGMyZWQ5MTA5YmY5ODEzNGY2YTM4MjI1OWI4Njc1ZGNiMWQ5YmIuLjUzNThjY2Fm
N2EzZGYyZTMzYTAzZWJmMGM4ODkxMWIwYzA4ODJiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcApAQCAtMjA4LDcgKzIw
OCw3IEBAIHZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp3cml0ZURvY3VtZW50KERvY3VtZW50
V3JpdGVyJiB3cml0ZXIpCiAgICAgU3RyaW5nIG1pblN0cmluZyA9IGRhdGUudG9TdHJpbmcoKTsK
ICAgICBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKGlucHV0LT5tYXhpbXVt
KCkpOwogICAgIFN0cmluZyBtYXhTdHJpbmcgPSBkYXRlLnRvU3RyaW5nKCk7Ci0gICAgSW5wdXRO
dW1iZXIgc3RlcDsKKyAgICBEZWNpbWFsIHN0ZXA7CiAgICAgU3RyaW5nIHN0ZXBTdHJpbmcgPSBp
bnB1dC0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7CiAgICAgaWYgKHN0ZXBTdHJpbmcuaXNF
bXB0eSgpIHx8ICFpbnB1dC0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCiAgICAgICAgIHN0
ZXBTdHJpbmcgPSAiMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcAppbmRleCA0ZTcxNGEwMzkxZTQ2Y2IxZWQyYmExZWVhNTQxNDJiMjdi
NTA5NDQ2Li5lZGUzMDA4M2IwNTM5NDFmNDMxNDY4NGQ5MTY1MDJjNzQ0MzcyNjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAg
LTUxLDEwICs1MSwxMCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWlubGluZSBzdGF0aWMgSW5wdXROdW1iZXIgc2xpZGVyUG9zaXRpb24oSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkKK2lubGluZSBzdGF0aWMgRGVjaW1hbCBzbGlkZXJQb3NpdGlvbihI
VE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAgIGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFu
Z2UoZWxlbWVudC0+Y3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwotICAgIGNvbnN0IElucHV0
TnVtYmVyIG9sZFZhbHVlID0gcGFyc2VUb0RlY2ltYWxGb3JOdW1iZXJUeXBlKGVsZW1lbnQtPnZh
bHVlKCksIHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKSk7CisgICAgY29uc3QgRGVjaW1hbCBvbGRW
YWx1ZSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50LT52YWx1ZSgpLCBzdGVw
UmFuZ2UuZGVmYXVsdFZhbHVlKCkpOwogICAgIHJldHVybiBzdGVwUmFuZ2UucHJvcG9ydGlvbkZy
b21WYWx1ZShzdGVwUmFuZ2UuY2xhbXBWYWx1ZShvbGRWYWx1ZSkpOwogfQogCkBAIC0xMTAsNyAr
MTEwLDcgQEAgdm9pZCBSZW5kZXJTbGlkZXJUaHVtYjo6bGF5b3V0KCkKICAgICBIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dCA9IG5vZGUoKS0+c2hhZG93QW5jZXN0b3JOb2RlKCktPnRvSW5wdXRFbGVt
ZW50KCk7CiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gc3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNs
aWRlclRodW1iVmVydGljYWxQYXJ0IHx8IHN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBNZWRpYVZv
bHVtZVNsaWRlclRodW1iUGFydDsKIAotICAgIGRvdWJsZSBmcmFjdGlvbiA9IGNvbnZlcnRJbnB1
dE51bWJlclRvRG91YmxlKHNsaWRlclBvc2l0aW9uKGlucHV0KSAqIDEwMCk7CisgICAgZG91Ymxl
IGZyYWN0aW9uID0gKHNsaWRlclBvc2l0aW9uKGlucHV0KSAqIDEwMCkudG9Eb3VibGUoKTsKICAg
ICBpZiAoaXNWZXJ0aWNhbCkKICAgICAgICAgc3R5bGUoKS0+c2V0VG9wKExlbmd0aCgxMDAgLSBm
cmFjdGlvbiwgUGVyY2VudCkpOwogICAgIGVsc2UgaWYgKHN0eWxlKCktPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSkKQEAgLTIzNiwxMCArMjM2LDEwIEBAIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50
OjpzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgaWYg
KHBvc2l0aW9uID09IGN1cnJlbnRQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29u
c3QgSW5wdXROdW1iZXIgcmF0aW8gPSBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihzdGF0aWNf
Y2FzdDxkb3VibGU+KHBvc2l0aW9uKSAvIHRyYWNrU2l6ZSk7Ci0gICAgY29uc3QgSW5wdXROdW1i
ZXIgZnJhY3Rpb24gPSBpc1ZlcnRpY2FsIHx8ICFyZW5kZXJCb3goKS0+c3R5bGUoKS0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gSW5wdXROdW1iZXIoMSkgLSByYXRpbyA6IHJhdGlvOworICAg
IGNvbnN0IERlY2ltYWwgcmF0aW8gPSBEZWNpbWFsOjpmcm9tRG91YmxlKHN0YXRpY19jYXN0PGRv
dWJsZT4ocG9zaXRpb24pIC8gdHJhY2tTaXplKTsKKyAgICBjb25zdCBEZWNpbWFsIGZyYWN0aW9u
ID0gaXNWZXJ0aWNhbCB8fCAhcmVuZGVyQm94KCktPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSA/IERlY2ltYWwoMSkgLSByYXRpbyA6IHJhdGlvOwogICAgIFN0ZXBSYW5nZSBzdGVw
UmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKLSAgICBjb25zdCBJbnB1
dE51bWJlciB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5nZS52YWx1ZUZyb21Q
cm9wb3J0aW9uKGZyYWN0aW9uKSk7CisgICAgY29uc3QgRGVjaW1hbCB2YWx1ZSA9IHN0ZXBSYW5n
ZS5jbGFtcFZhbHVlKHN0ZXBSYW5nZS52YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CiAK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBubyBsb25nZXIgYmVpbmcgc2V0IGZyb20gcmVuZGVyZXIu
IENvbnNpZGVyIHVwZGF0aW5nIHRoZSBtZXRob2QgbmFtZS4KICAgICBpbnB1dC0+c2V0VmFsdWVG
cm9tUmVuZGVyZXIoc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147490</attachid>
            <date>2012-06-13 22:49:07 -0700</date>
            <delta_ts>2012-06-14 02:57:14 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-88746-20120614144907.patch</filename>
            <type>text/plain</type>
            <size>62237</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk4YWYwNzU0MTg0OGJk
NTlmMDg5Y2I1Nzg5NDE4YzlkYjZkNmZiOS4uZWUzZWI3MDU1NzY4YzVlOWE4MDdhODhkYTZlOTM1
MWM3NWE2MjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMi0wNi0xNCAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtGb3JtXSBSZXBs
YWNlIElucHV0TnVtYmVyIHR5cGUgdG8gRGVjaW1hbCB0eXBlIGFuZCBkcm9wIElucHV0TnVtYmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODc0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggcmVtb3ZlcyBJbnB1dE51bWJlciBpbnRyb2R1Y2VkIGJ5IHIxMTk1NDAgYnkgcmVwbGFjaW5n
CisgICAgICAgIElucHV0TnVtYmVyIHR5cGUgdG8gRGVjaW1hbCB0eXBlIGFuZCBjaGFuZ2luZyBj
b252ZXJ0RG91YmxlVG9EZWNpbWFsCisgICAgICAgIGFuZCBjb252ZXJ0RGVjaW1hbFRvRG91Ymxl
IHRvIERlY2ltYWw6OmZyb21Eb3VibGUgYW5kCisgICAgICAgIERlY2ltYWw6OnRvRG91YmxlLCBy
ZXNwZWN0aXZlbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHBhdGNoIGRvZXNuJ3Qg
Y2hhbmdlIGJlaGF2aW9yLgorCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRW
YWx1ZUFzRGVjaW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemVXaXRoQ29tcG9uZW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29u
ZHMpOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAg
IChCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvRGF0ZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZVRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRlVGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBo
dG1sL0RhdGVUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChEYXRlVGltZUlucHV0VHlwZSk6Cisg
ICAgICAgICogaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICog
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVs
ZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5oOgorICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91Ymxl
KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c2V0VmFsdWVBc0RlY2ltYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpyYW5nZVVuZGVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnJhbmdlT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRU
eXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
OjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6bWF4aW11bSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmlzSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OmlzT3V0T2ZSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0
ZXBNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnZhbGlkYXRpb25NZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb051bWJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXJPck5hTik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OmFwcGx5U3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmdldEFsbG93ZWRW
YWx1ZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVy
ZXIpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgIChJbnB1dFR5cGUpOgor
ICAgICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9u
dGhJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJDb3JlOjpN
b250aElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRo
SW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKToKKyAgICAgICAgKiBodG1sL01vbnRoSW5wdXRUeXBl
Lmg6CisgICAgICAgIChNb250aElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFz
RGVjaW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAg
ICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmg6CisgICAgICAgIChOdW1iZXJJbnB1dFR5cGUpOgor
ICAgICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5z
dXJlTWF4aW11bSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWVB
c0RlY2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUpOgorICAgICAgICAqIGh0bWwv
UmFuZ2VJbnB1dFR5cGUuaDoKKyAgICAgICAgKFJhbmdlSW5wdXRUeXBlKToKKyAgICAgICAgKiBo
dG1sL1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OlN0ZXBSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2VwdGFibGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JTdGVwKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFu
Z2U6OnBhcnNlU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnJvdW5kQnlTdGVw
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAg
KiBodG1sL1N0ZXBSYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpTdGVwRGVz
Y3JpcHRpb246OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChTdGVwUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U3RlcFJhbmdlOjptYXhpbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5n
ZTo6bWluaW11bSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnN0ZXApOgorICAgICAg
ICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpzdGVwQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVw
UmFuZ2U6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnByb3Bv
cnRpb25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjp2YWx1ZUZyb21Q
cm9wb3J0aW9uKToKKyAgICAgICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKToKKyAgICAgICAg
KFdlYkNvcmU6OlRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRt
bC9UaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChUaW1lSW5wdXRUeXBlKToKKyAgICAgICAgKiBo
dG1sL1dlZWtJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6
Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp3cml0
ZURvY3VtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2xpZGVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2xpZGVyVGh1bWI6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVt
YkVsZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KToKKwogMjAxMi0wNi0xMyAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENyZWF0ZSBh
IENDU3RyZWFtVmlkZW9EcmF3UXVhZCB1c2VkIGZvciBTdHJlYW1UZXh0dXJlIHZpZGVvIG91dHB1
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3Bw
CmluZGV4IGM3NjYxOTQ1MjI3ODljYjFiNDQ2ZDRhMjZkYjA3MDVkMWEzMmVlY2UuLjQ4NDcxY2I2
NWFmNTQ5M2MxZDM5Mzc5ZGNmY2ZkMmNmY2RmYjdmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgZG91
YmxlIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dmFsdWVBc0RvdWJsZSgpIGNvbnN0CiAgICAg
cmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT52YWx1ZSgpKTsKIH0KIAotdm9pZCBCYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNldFZhbHVlQXNJbnB1dE51bWJlcihjb25zdCBJbnB1dE51
bWJlciYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciwgRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0Cit2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0VmFs
dWVBc0RlY2ltYWwoY29uc3QgRGVjaW1hbCYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZp
b3IgZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0CiB7CiAgICAgZWxlbWVudCgp
LT5zZXRWYWx1ZShzZXJpYWxpemUobmV3VmFsdWUpLCBldmVudEJlaGF2aW9yKTsKIH0KQEAgLTgw
LDEzICs4MCwxMyBAQCBib29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dHlwZU1pc21hdGNo
KCkgY29uc3QKICAgICByZXR1cm4gdHlwZU1pc21hdGNoRm9yKGVsZW1lbnQoKS0+dmFsdWUoKSk7
CiB9CiAKLUlucHV0TnVtYmVyIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVl
Rm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpkZWZh
dWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewogICAgIGRvdWJsZSBtcyA9IGN1cnJlbnRUaW1l
TVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2FsY3VsYXRlVVRDT2Zmc2V0KCk7CiAgICAg
ZG91YmxlIGRzdE9mZnNldCA9IGNhbGN1bGF0ZURTVE9mZnNldChtcywgdXRjT2Zmc2V0KTsKICAg
ICBpbnQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8aW50PigodXRjT2Zmc2V0ICsgZHN0T2Zmc2V0KSAv
IG1zUGVyTWludXRlKTsKLSAgICByZXR1cm4gY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIobXMg
KyAob2Zmc2V0ICogbXNQZXJNaW51dGUpKTsKKyAgICByZXR1cm4gRGVjaW1hbDo6ZnJvbURvdWJs
ZShtcyArIChvZmZzZXQgKiBtc1Blck1pbnV0ZSkpOwogfQogCiBib29sIEJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6aXNTdGVwcGFibGUoKSBjb25zdApAQCAtMTE4LDEwICsxMTgsMTAgQEAgZG91
YmxlIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcm
IHNvdXJjZSkgY29uc3QKICAgICByZXR1cm4gbXNlYzsKIH0KIAotSW5wdXROdW1iZXIgQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBJbnB1dE51bWJlciYgZGVmYXVsdFZhbHVlKSBjb25zdAorRGVjaW1hbCBCYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IERlY2ltYWwmIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKICAgICBjb25zdCBkb3VibGUgZG91Ymxl
VmFsdWUgPSBwYXJzZVRvRG91YmxlKHNvdXJjZSk7Ci0gICAgcmV0dXJuIGlzZmluaXRlKGRvdWJs
ZVZhbHVlKSA/IGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKGRvdWJsZVZhbHVlKSA6IGRlZmF1
bHRWYWx1ZTsKKyAgICByZXR1cm4gaXNmaW5pdGUoZG91YmxlVmFsdWUpID8gRGVjaW1hbDo6ZnJv
bURvdWJsZShkb3VibGVWYWx1ZSkgOiBkZWZhdWx0VmFsdWU7CiB9CiAKIGJvb2wgQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIERhdGVDb21wb25lbnRzKiBvdXQpIGNvbnN0CkBAIC0xMzQsMTkgKzEzNCwxOSBAQCBib29s
IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0
cmluZyYgc291cmNlLCBEYXRlQwogICAgIHJldHVybiBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRl
cm5hbChzb3VyY2UuY2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3RoKCksIG91dCk7CiB9CiAKLVN0
cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBJbnB1dE51bWJl
ciYgdmFsdWUpIGNvbnN0CitTdHJpbmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxp
emUoY29uc3QgRGVjaW1hbCYgdmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKCF2YWx1ZS5pc0Zpbml0
ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsK
LSAgICBpZiAoIXNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhjb252ZXJ0SW5wdXROdW1i
ZXJUb0RvdWJsZSh2YWx1ZSksICZkYXRlKSkKKyAgICBpZiAoIXNldE1pbGxpc2Vjb25kVG9EYXRl
Q29tcG9uZW50cyh2YWx1ZS50b0RvdWJsZSgpLCAmZGF0ZSkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICByZXR1cm4gc2VyaWFsaXplV2l0aENvbXBvbmVudHMoZGF0ZSk7CiB9CiAKIFN0
cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhDb21wb25lbnRzKGNv
bnN0IERhdGVDb21wb25lbnRzJiBkYXRlKSBjb25zdAogewotICAgIElucHV0TnVtYmVyIHN0ZXA7
CisgICAgRGVjaW1hbCBzdGVwOwogICAgIGlmICghZWxlbWVudCgpLT5nZXRBbGxvd2VkVmFsdWVT
dGVwKCZzdGVwKSkKICAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoKTsKICAgICBpZiAoc3Rl
cC5yZW1haW5kZXIobXNlY1Blck1pbnV0ZSkuaXNaZXJvKCkpCkBAIC0xNTgsNyArMTU4LDcgQEAg
U3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplV2l0aENvbXBvbmVudHMo
Y29uc3QgRGF0ZUNvbXBvbmVudHMmIGQKIAogU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZTo6c2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUgdmFsdWUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHNlcmlhbGl6ZShjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcih2YWx1ZSkpOworICAg
IHJldHVybiBzZXJpYWxpemUoRGVjaW1hbDo6ZnJvbURvdWJsZSh2YWx1ZSkpOwogfQogCiBTdHJp
bmcgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYg
cHJvcG9zZWRWYWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5oCmluZGV4IDUwZjA2M2M3ODI4ZjZkNWNjOWU1ZDdlYjUzMzc4MzI3ZTJi
YjRjZTYuLjE2NThjMWZlMDcyMmIzY2M0MWEzMjM5ODA3YjZlMWIwODBmYWVkNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUgOiBwdWJsaWMgVGV4dEZpZWxk
SW5wdXRUeXBlIHsKIHByb3RlY3RlZDoKICAgICBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoSFRN
TElucHV0RWxlbWVudCogZWxlbWVudCkgOiBUZXh0RmllbGRJbnB1dFR5cGUoZWxlbWVudCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IElucHV0TnVtYmVyJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNp
bWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3Ry
aW5nJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKICAgICBTdHJpbmcgc2VyaWFs
aXplV2l0aENvbXBvbmVudHMoY29uc3QgRGF0ZUNvbXBvbmVudHMmKSBjb25zdDsKIApAQCAtNTMs
MTMgKzUzLDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgdmFsdWVBc0RhdGUoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0RhdGUoZG91YmxlLCBF
eGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBkb3VibGUgdmFsdWVB
c0RvdWJsZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzSW5w
dXROdW1iZXIoY29uc3QgSW5wdXROdW1iZXImLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNl
cHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNE
ZWNpbWFsKGNvbnN0IERlY2ltYWwmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25D
b2RlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaEZvcihj
b25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21h
dGNoKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBkZWZhdWx0VmFs
dWVGb3JTdGVwVXAoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIERlY2ltYWwgZGVmYXVs
dFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU3Rl
cHBhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZl
bnQoV2hlZWxFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShj
b25zdCBJbnB1dE51bWJlciYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHNl
cmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJp
bmcgc2VyaWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUpIGNvbnN0OwogICAgIHZpcnR1YWwg
U3RyaW5nIGxvY2FsaXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRlSW5wdXRUeXBlLmNwcAppbmRleCAxMDQ0NDdlYTVhNjZhYzFlNjBhODBiMzEzOWM1
ZDVjZjc0MjhiYWZhLi5mNWQxYTAyOTNiOWQyMmI4ZDhkODFmNmNiNDg5Y2JiOTRiYTk4M2EyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKQEAgLTczLDEwICs3MywxMCBAQCBT
dGVwUmFuZ2UgRGF0ZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBh
bnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAoZGF0ZURlZmF1bHRT
dGVwLCBkYXRlRGVmYXVsdFN0ZXBCYXNlLCBkYXRlU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6
OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOwogCi0gICAgY29uc3QgSW5wdXROdW1i
ZXIgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZSht
aW5BdHRyKSwgMCk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWluaW11bSA9IHBhcnNlVG9OdW1i
ZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBjb252ZXJ0RG91YmxlVG9J
bnB1dE51bWJlcihEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGUoKSkpOwotICAgIGNvbnN0IElu
cHV0TnVtYmVyIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShtYXhBdHRyKSwgY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6
Om1heGltdW1EYXRlKCkpKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gU3RlcFJhbmdl
OjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2Ug
PSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7
CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVu
dHM6Om1pbmltdW1EYXRlKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRv
TnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGVjaW1hbDo6ZnJv
bURvdWJsZShEYXRlQ29tcG9uZW50czo6bWF4aW11bURhdGUoKSkpOworICAgIGNvbnN0IERlY2lt
YWwgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2Ny
aXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKICAgICByZXR1
cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwRGVzY3Jp
cHRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwCmlu
ZGV4IGNkM2NhNzk3MjUwYWVkMTRkYzY5NWM0NjI2YmMyZWFhMjZkMmI5NmEuLjc4YTkxODRmNjUx
MzI4MGExOWM1NDU1MmUwNzdmOGNiZGYzY2I4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZVRpbWVJbnB1dFR5cGUuY3BwCkBAIC02MiwxOSArNjIsMTkgQEAgRGF0ZUNvbXBvbmVudHM6OlR5
cGUgRGF0ZVRpbWVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gRGF0ZUNv
bXBvbmVudHM6OkRhdGVUaW1lOwogfQogCi1JbnB1dE51bWJlciBEYXRlVGltZUlucHV0VHlwZTo6
ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgRGF0ZVRpbWVJbnB1dFR5cGU6
OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnREb3Vi
bGVUb0lucHV0TnVtYmVyKGN1cnJlbnRUaW1lTVMoKSk7CisgICAgcmV0dXJuIERlY2ltYWw6OmZy
b21Eb3VibGUoY3VycmVudFRpbWVNUygpKTsKIH0KIAogU3RlcFJhbmdlIERhdGVUaW1lSW5wdXRU
eXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29u
c3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2Ny
aXB0aW9uLCBzdGVwRGVzY3JpcHRpb24sIChkYXRlVGltZURlZmF1bHRTdGVwLCBkYXRlVGltZURl
ZmF1bHRTdGVwQmFzZSwgZGF0ZVRpbWVTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6U2NhbGVk
U3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKSk7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVw
QmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIp
LCAwKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVt
ZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0lucHV0TnVt
YmVyKERhdGVDb21wb25lbnRzOjptaW5pbXVtRGF0ZVRpbWUoKSkpOwotICAgIGNvbnN0IElucHV0
TnVtYmVyIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShtYXhBdHRyKSwgY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6Om1h
eGltdW1EYXRlVGltZSgpKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcCA9IFN0ZXBSYW5n
ZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCkt
PmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNl
ID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDAp
OworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25l
bnRzOjptaW5pbXVtRGF0ZVRpbWUoKSkpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBh
cnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBEZWNpbWFs
Ojpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptYXhpbXVtRGF0ZVRpbWUoKSkpOworICAgIGNv
bnN0IERlY2ltYWwgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywg
c3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsK
ICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBz
dGVwRGVzY3JpcHRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rh
dGVUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBl
LmgKaW5kZXggZDg3YmZhNWQ0N2FkZmI3ODJhZmEwOGNkNDAwNGM2YjFlM2Q2NTFkMi4uZDFmNGE3
OGFhMWViNTU3NjM3Y2YwMWVkM2IyNTZmMWYyZTYyYzkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RGF0ZVRpbWVJbnB1dFR5cGUuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGlu
ZykgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBkZWZhdWx0VmFsdWVG
b3JTdGVwVXAoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIERlY2ltYWwgZGVmYXVsdFZh
bHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9E
YXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRl
Q29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNl
Y29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBpc0RhdGVUaW1lRmllbGQoKSBjb25zdCBPVkVSUklERTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCmluZGV4
IDE2NGFiMDQxMDVhMGFkYzJmMGRjYjFkNTM0ZWFhMzhlNGIxNGJlY2IuLjM4ZTQ0OWZiYTQyYjkx
ZGZmNTQ0MjFhNzE2YzIyNGZlMDU1OWZiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
YXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcApAQCAtNzcsMTAgKzc3LDEwIEBAIFN0ZXBSYW5nZSBE
YXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFu
eVN0ZXBIYW5kbGluCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6
OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAoZGF0ZVRpbWVMb2NhbERlZmF1bHRT
dGVwLCBkYXRlVGltZUxvY2FsRGVmYXVsdFN0ZXBCYXNlLCBkYXRlVGltZUxvY2FsU3RlcFNjYWxl
RmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOwogCi0g
ICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWlu
aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIp
LCBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGVU
aW1lKCkpKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBtYXhpbXVtID0gcGFyc2VUb051bWJlcihl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIGNvbnZlcnREb3VibGVUb0lucHV0
TnVtYmVyKERhdGVDb21wb25lbnRzOjptYXhpbXVtRGF0ZVRpbWUoKSkpOwotICAgIGNvbnN0IElu
cHV0TnVtYmVyIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0
ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7Cisg
ICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0
R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1h
bDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpKTsKKyAgICBj
b25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShtYXhBdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWF4
aW11bURhdGVUaW1lKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBTdGVwUmFuZ2U6OnBh
cnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0
R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwg
bWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZWQ1YjBjNjNlMmJhMDFkYzg0MzJk
ZmE0ZTMwNDA5ZDc3ZjgzYzAwOS4uZTAwMTUwM2QxNzI4M2UwN2ExN2Q2NTZjNjYwMWExMjJmM2Zl
MzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0yNzQs
NyArMjc0LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goKSBjb25zdAog
ICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+c3RlcE1pc21hdGNoKHZh
bHVlKCkpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXAo
SW5wdXROdW1iZXIqIHN0ZXApIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93
ZWRWYWx1ZVN0ZXAoRGVjaW1hbCogc3RlcCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnB1dFR5
cGUtPmdldEFsbG93ZWRWYWx1ZVN0ZXAoc3RlcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCmluZGV4IDg4MmRjZGQyYjA4ZTZiN2QzYzEzZDNlMDM4MTdhZGI3YzE3MmZh
N2IuLjA1ZDUwODQ5MzQ3MTliNzU2MGU1Y2VjMDg4ZGUzYmYwODIwNTdkNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAg
ICBkb3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAgIC8vIFNldHMgdGhlICJhbGxvd2VkIHZhbHVl
IHN0ZXAiIGRlZmluZWQgaW4gdGhlIEhUTUwgc3BlYyB0byB0aGUgc3BlY2lmaWVkIGRvdWJsZSBw
b2ludGVyLgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gImFsbG93ZWQgdmFs
dWUgc3RlcC4iCi0gICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKElucHV0TnVtYmVyKikgY29u
c3Q7CisgICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqKSBjb25zdDsKICAgICBT
dGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3Q7CiAKICAgICAv
LyBJbXBsZW1lbnRhdGlvbnMgb2YgSFRNTElucHV0RWxlbWVudDo6c3RlcFVwKCkgYW5kIHN0ZXBE
b3duKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggYTcyYzE3NDdiNTY5YzA0MDdk
MjhhYWMyNWUzYzk5YzQ1MzQ0OWNlZC4uZGZjNTBlMDBiZDhhYjBkMjdhZjNjNTlmYjQ0YTUxZjEy
MDY4ODc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMjEyLDEwICsyMTIsMTAg
QEAgZG91YmxlIElucHV0VHlwZTo6dmFsdWVBc0RvdWJsZSgpIGNvbnN0CiAKIHZvaWQgSW5wdXRU
eXBlOjpzZXRWYWx1ZUFzRG91YmxlKGRvdWJsZSBkb3VibGVWYWx1ZSwgVGV4dEZpZWxkRXZlbnRC
ZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKLSAgICBz
ZXRWYWx1ZUFzSW5wdXROdW1iZXIoY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoZG91YmxlVmFs
dWUpLCBldmVudEJlaGF2aW9yLCBlYyk7CisgICAgc2V0VmFsdWVBc0RlY2ltYWwoRGVjaW1hbDo6
ZnJvbURvdWJsZShkb3VibGVWYWx1ZSksIGV2ZW50QmVoYXZpb3IsIGVjKTsKIH0KIAotdm9pZCBJ
bnB1dFR5cGU6OnNldFZhbHVlQXNJbnB1dE51bWJlcihjb25zdCBJbnB1dE51bWJlciYsIFRleHRG
aWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAordm9pZCBJbnB1dFR5
cGU6OnNldFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOwogfQpAQCAtMjU2LDcgKzI1Niw3IEBAIGJvb2wgSW5wdXRUeXBlOjpyYW5nZVVuZGVyZmxv
dyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgbnVtZXJpY1ZhbHVl
ID0gcGFyc2VUb051bWJlck9yTmFOKHZhbHVlKTsKKyAgICBjb25zdCBEZWNpbWFsIG51bWVyaWNW
YWx1ZSA9IHBhcnNlVG9OdW1iZXJPck5hTih2YWx1ZSk7CiAgICAgaWYgKCFudW1lcmljVmFsdWUu
aXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNjgsMjYgKzI2OCwyNiBA
QCBib29sIElucHV0VHlwZTo6cmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25z
dAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Y29uc3QgSW5wdXROdW1iZXIgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb051bWJlck9yTmFOKHZhbHVl
KTsKKyAgICBjb25zdCBEZWNpbWFsIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9OdW1iZXJPck5hTih2
YWx1ZSk7CiAgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcmV0dXJuIG51bWVyaWNWYWx1ZSA+IGNyZWF0ZVN0ZXBSYW5nZShSZWpl
Y3RBbnkpLm1heGltdW0oKTsKIH0KIAotSW5wdXROdW1iZXIgSW5wdXRUeXBlOjpkZWZhdWx0VmFs
dWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0
ZXBVcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGRvdWJsZSBJbnB1dFR5cGU6Om1p
bmltdW0oKSBjb25zdAogewotICAgIHJldHVybiBjb252ZXJ0SW5wdXROdW1iZXJUb0RvdWJsZShj
cmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5taW5pbXVtKCkpOworICAgIHJldHVybiBjcmVhdGVT
dGVwUmFuZ2UoUmVqZWN0QW55KS5taW5pbXVtKCkudG9Eb3VibGUoKTsKIH0KIAogZG91YmxlIElu
cHV0VHlwZTo6bWF4aW11bSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRJbnB1dE51bWJl
clRvRG91YmxlKGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1heGltdW0oKSk7CisgICAgcmV0
dXJuIGNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpLm1heGltdW0oKS50b0RvdWJsZSgpOwogfQog
CiBib29sIElucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCwgaW50JiBw
cmVmZXJyZWRTaXplKSBjb25zdApAQCAtMzAxLDcgKzMwMSw3IEBAIGJvb2wgSW5wdXRUeXBlOjpp
c0luUmFuZ2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBhYmxl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IElucHV0TnVtYmVyIG51bWVy
aWNWYWx1ZSA9IHBhcnNlVG9OdW1iZXJPck5hTih2YWx1ZSk7CisgICAgY29uc3QgRGVjaW1hbCBu
dW1lcmljVmFsdWUgPSBwYXJzZVRvTnVtYmVyT3JOYU4odmFsdWUpOwogICAgIGlmICghbnVtZXJp
Y1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0zMTQsNyArMzE0
LDcgQEAgYm9vbCBJbnB1dFR5cGU6OmlzT3V0T2ZSYW5nZShjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgY29uc3QgSW5wdXROdW1iZXIgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb051bWJlck9yTmFOKHZh
bHVlKTsKKyAgICBjb25zdCBEZWNpbWFsIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9OdW1iZXJPck5h
Tih2YWx1ZSk7CiAgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKQEAgLTMyNyw3ICszMjcsNyBAQCBib29sIElucHV0VHlwZTo6c3RlcE1pc21h
dGNoKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBudW1lcmljVmFs
dWUgPSBwYXJzZVRvTnVtYmVyT3JOYU4odmFsdWUpOworICAgIGNvbnN0IERlY2ltYWwgbnVtZXJp
Y1ZhbHVlID0gcGFyc2VUb051bWJlck9yTmFOKHZhbHVlKTsKICAgICBpZiAoIW51bWVyaWNWYWx1
ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM2NSw3ICszNjUsNyBA
QCBTdHJpbmcgSW5wdXRUeXBlOjp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0CiAgICAgaWYgKCFp
c1N0ZXBwYWJsZSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGNvbnN0
IElucHV0TnVtYmVyIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9OdW1iZXJPck5hTih2YWx1ZSk7Cisg
ICAgY29uc3QgRGVjaW1hbCBudW1lcmljVmFsdWUgPSBwYXJzZVRvTnVtYmVyT3JOYU4odmFsdWUp
OwogICAgIGlmICghbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCkBAIC00NTgsMTMgKzQ1OCwxMyBAQCB2b2lkIElucHV0VHlwZTo6ZGVzdHJv
eVNoYWRvd1N1YnRyZWUoKQogICAgIH0KIH0KIAotSW5wdXROdW1iZXIgSW5wdXRUeXBlOjpwYXJz
ZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IElucHV0TnVtYmVyJiBkZWZhdWx0VmFsdWUp
IGNvbnN0CitEZWNpbWFsIElucHV0VHlwZTo6cGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKIH0KIAotSW5wdXROdW1iZXIgSW5wdXRU
eXBlOjpwYXJzZVRvTnVtYmVyT3JOYU4oY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0CitEZWNp
bWFsIElucHV0VHlwZTo6cGFyc2VUb051bWJlck9yTmFOKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBj
b25zdAogewogICAgIHJldHVybiBwYXJzZVRvTnVtYmVyKHN0cmluZywgRGVjaW1hbDo6bmFuKCkp
OwogfQpAQCAtNDc1LDcgKzQ3NSw3IEBAIGJvb2wgSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBv
bmVudHMoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotU3RyaW5nIElucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IElucHV0TnVtYmVy
JikgY29uc3QKK1N0cmluZyBJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29u
c3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CkBA
IC04ODAsMTggKzg4MCwxOCBAQCB2b2lkIElucHV0VHlwZTo6YXBwbHlTdGVwKGludCBjb3VudCwg
QW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgY3VycmVudCA9IHBhcnNlVG9OdW1i
ZXJPck5hTihlbGVtZW50KCktPnZhbHVlKCkpOworICAgIGNvbnN0IERlY2ltYWwgY3VycmVudCA9
IHBhcnNlVG9OdW1iZXJPck5hTihlbGVtZW50KCktPnZhbHVlKCkpOwogICAgIGlmICghY3VycmVu
dC5pc0Zpbml0ZSgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgSW5wdXROdW1iZXIgbmV3VmFsdWUgPSBjdXJyZW50ICsgc3Rl
cFJhbmdlLnN0ZXAoKSAqIGNvdW50OworICAgIERlY2ltYWwgbmV3VmFsdWUgPSBjdXJyZW50ICsg
c3RlcFJhbmdlLnN0ZXAoKSAqIGNvdW50OwogICAgIGlmICghbmV3VmFsdWUuaXNGaW5pdGUoKSkg
ewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgYWNjZXB0YWJsZUVycm9yVmFsdWUgPSBzdGVwUmFu
Z2UuYWNjZXB0YWJsZUVycm9yKCk7CisgICAgY29uc3QgRGVjaW1hbCBhY2NlcHRhYmxlRXJyb3JW
YWx1ZSA9IHN0ZXBSYW5nZS5hY2NlcHRhYmxlRXJyb3IoKTsKICAgICBpZiAobmV3VmFsdWUgLSBz
dGVwUmFuZ2UubWluaW11bSgpIDwgLWFjY2VwdGFibGVFcnJvclZhbHVlKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTkxMCwxMyArOTEwLDEz
IEBAIHZvaWQgSW5wdXRUeXBlOjphcHBseVN0ZXAoaW50IGNvdW50LCBBbnlTdGVwSGFuZGxpbmcg
YW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFCiAgICAgaWYgKG5ld1ZhbHVlID4gc3RlcFJhbmdl
Lm1heGltdW0oKSkKICAgICAgICAgbmV3VmFsdWUgPSBzdGVwUmFuZ2UubWF4aW11bSgpOwogCi0g
ICAgc2V0VmFsdWVBc0lucHV0TnVtYmVyKG5ld1ZhbHVlLCBldmVudEJlaGF2aW9yLCBlYyk7Cisg
ICAgc2V0VmFsdWVBc0RlY2ltYWwobmV3VmFsdWUsIGV2ZW50QmVoYXZpb3IsIGVjKTsKIAogICAg
IGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICAgZWxl
bWVudCgpLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24oZWxl
bWVudCgpLT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7
CiB9CiAKLWJvb2wgSW5wdXRUeXBlOjpnZXRBbGxvd2VkVmFsdWVTdGVwKElucHV0TnVtYmVyKiBz
dGVwKSBjb25zdAorYm9vbCBJbnB1dFR5cGU6OmdldEFsbG93ZWRWYWx1ZVN0ZXAoRGVjaW1hbCog
c3RlcCkgY29uc3QKIHsKICAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShS
ZWplY3RBbnkpKTsKICAgICAqc3RlcCA9IHN0ZXBSYW5nZS5zdGVwKCk7CkBAIC05ODksNyArOTg5
LDcgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKICAgICBpZiAo
IXN0ZXBSYW5nZS5oYXNTdGVwKCkpCiAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBJbnB1dE51
bWJlciBzdGVwID0gc3RlcFJhbmdlLnN0ZXAoKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBz
dGVwUmFuZ2Uuc3RlcCgpOwogCiAgICAgaW50IHNpZ247CiAgICAgaWYgKHN0ZXAgPiAwKQpAQCAt
MTAwMCwyMCArMTAwMCwyMCBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGlu
dCBuKQogICAgICAgICBzaWduID0gMDsKIAogICAgIFN0cmluZyBjdXJyZW50U3RyaW5nVmFsdWUg
PSBlbGVtZW50KCktPnZhbHVlKCk7Ci0gICAgSW5wdXROdW1iZXIgY3VycmVudCA9IHBhcnNlVG9O
dW1iZXJPck5hTihjdXJyZW50U3RyaW5nVmFsdWUpOworICAgIERlY2ltYWwgY3VycmVudCA9IHBh
cnNlVG9OdW1iZXJPck5hTihjdXJyZW50U3RyaW5nVmFsdWUpOwogICAgIGlmICghY3VycmVudC5p
c0Zpbml0ZSgpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGN1cnJlbnQg
PSBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKTsKLSAgICAgICAgY29uc3QgSW5wdXROdW1iZXIgbmV4
dERpZmYgPSBzdGVwICogbjsKKyAgICAgICAgY29uc3QgRGVjaW1hbCBuZXh0RGlmZiA9IHN0ZXAg
KiBuOwogICAgICAgICBpZiAoY3VycmVudCA8IHN0ZXBSYW5nZS5taW5pbXVtKCkgLSBuZXh0RGlm
ZikKICAgICAgICAgICAgIGN1cnJlbnQgPSBzdGVwUmFuZ2UubWluaW11bSgpIC0gbmV4dERpZmY7
CiAgICAgICAgIGlmIChjdXJyZW50ID4gc3RlcFJhbmdlLm1heGltdW0oKSAtIG5leHREaWZmKQog
ICAgICAgICAgICAgY3VycmVudCA9IHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBuZXh0RGlmZjsKLSAg
ICAgICAgc2V0VmFsdWVBc0lucHV0TnVtYmVyKGN1cnJlbnQsIERpc3BhdGNoSW5wdXRBbmRDaGFu
Z2VFdmVudCwgZWMpOworICAgICAgICBzZXRWYWx1ZUFzRGVjaW1hbChjdXJyZW50LCBEaXNwYXRj
aElucHV0QW5kQ2hhbmdlRXZlbnQsIGVjKTsKICAgICB9CiAgICAgaWYgKChzaWduID4gMCAmJiBj
dXJyZW50IDwgc3RlcFJhbmdlLm1pbmltdW0oKSkgfHwgKHNpZ24gPCAwICYmIGN1cnJlbnQgPiBz
dGVwUmFuZ2UubWF4aW11bSgpKSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAg
ICBzZXRWYWx1ZUFzSW5wdXROdW1iZXIoc2lnbiA+IDAgPyBzdGVwUmFuZ2UubWluaW11bSgpIDog
c3RlcFJhbmdlLm1heGltdW0oKSwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50LCBlYyk7Cisg
ICAgICAgIHNldFZhbHVlQXNEZWNpbWFsKHNpZ24gPiAwID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6
IHN0ZXBSYW5nZS5tYXhpbXVtKCksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCwgZWMpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIGlmIChzdGVw
TWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgewpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgdm9p
ZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKICAgICAgICAgICAgIGlmIChu
ZXdWYWx1ZSA+IHN0ZXBSYW5nZS5tYXhpbXVtKCkpCiAgICAgICAgICAgICAgICAgbmV3VmFsdWUg
PSBzdGVwUmFuZ2UubWF4aW11bSgpOwogCi0gICAgICAgICAgICBzZXRWYWx1ZUFzSW5wdXROdW1i
ZXIobmV3VmFsdWUsIG4gPT0gMSB8fCBuID09IC0xID8gRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2
ZW50IDogRGlzcGF0Y2hOb0V2ZW50LCBlYyk7CisgICAgICAgICAgICBzZXRWYWx1ZUFzRGVjaW1h
bChuZXdWYWx1ZSwgbiA9PSAxIHx8IG4gPT0gLTEgPyBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZl
bnQgOiBEaXNwYXRjaE5vRXZlbnQsIGVjKTsKICAgICAgICAgICAgIGlmIChuID4gMSkKICAgICAg
ICAgICAgICAgICBhcHBseVN0ZXAobiAtIDEsIEFueUlzRGVmYXVsdFN0ZXAsIERpc3BhdGNoSW5w
dXRBbmRDaGFuZ2VFdmVudCwgZWMpOwogICAgICAgICAgICAgZWxzZSBpZiAobiA8IC0xKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggYmUyNWQ0OWYzNGM5N2ViY2JmNWViY2Y5YTc5NThiMWVh
ZDcwYjQyOC4uMzg2MDUxZmFjYjcxMGE2YjU2YmRiN2E4ZjBhNTk5N2M2MzUxYjIwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oCkBAIC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRG91YmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHNldFZhbHVlQXNEb3VibGUoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRp
b25Db2RlJikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNJbnB1dE51bWJlcihj
b25zdCBJbnB1dE51bWJlciYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0RlY2ltYWwoY29uc3QgRGVjaW1h
bCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAg
IC8vIFZhbGlkYXRpb24gZnVuY3Rpb25zCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1l
c3NhZ2UoKSBjb25zdDsKQEAgLTE1NywxMiArMTU3LDEyIEBAIHB1YmxpYzoKICAgICBib29sIHJh
bmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBpc0luUmFuZ2UoY29u
c3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBpc091dE9mUmFuZ2UoY29uc3QgU3RyaW5nJikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Q7
CiAgICAgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAgICBkb3VibGUgbWF4aW11bSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1
bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0OwogICAgIGJvb2wgc3RlcE1pc21hdGNo
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBnZXRBbGxvd2VkVmFsdWVT
dGVwKElucHV0TnVtYmVyKikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGdldEFsbG93ZWRWYWx1
ZVN0ZXAoRGVjaW1hbCopIGNvbnN0OwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBS
YW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdGVwVXAoaW50
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBVcEZyb21SZW5kZXJlcihp
bnQpOwpAQCAtMjYzLDEwICsyNjMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGRl
ZmF1bHRUb29sVGlwKCkgY29uc3Q7CiAKICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJp
bmcgZm9yIHRoZSB0eXBlLCBhbmQgcmV0dXJuCi0gICAgLy8gdGhlIElucHV0TnVtYmVyIHZhbHVl
IGZvciB0aGUgcGFyc2luZyByZXN1bHQgaWYgdGhlIHBhcnNpbmcKKyAgICAvLyB0aGUgRGVjaW1h
bCB2YWx1ZSBmb3IgdGhlIHBhcnNpbmcgcmVzdWx0IGlmIHRoZSBwYXJzaW5nCiAgICAgLy8gc3Vj
Y2VlZHM7IFJldHVybnMgZGVmYXVsdFZhbHVlIG90aGVyd2lzZS4gVGhpcyBmdW5jdGlvbiBjYW4K
ICAgICAvLyByZXR1cm4gTmFOIG9yIEluZmluaXR5IG9ubHkgaWYgZGVmYXVsdFZhbHVlIGlzIE5h
TiBvciBJbmZpbml0eS4KLSAgICB2aXJ0dWFsIElucHV0TnVtYmVyIHBhcnNlVG9OdW1iZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW5wdXROdW1iZXImIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAg
dmlydHVhbCBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVjaW1h
bCYgZGVmYXVsdFZhbHVlKSBjb25zdDsKIAogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0
cmluZyBmb3IgdGhpcyBJbnB1dFR5cGUsIGFuZCByZXR1cm5zIHRydWUgaWYgaXQKICAgICAvLyBp
cyBzdWNjZXNzZnVsbHkgcGFyc2VkLiBBbiBpbnN0YW5jZSBwb2ludGVkIGJ5IHRoZSBEYXRlQ29t
cG9uZW50cyoKQEAgLTI3NCwxMCArMjc0LDEwIEBAIHB1YmxpYzoKICAgICAvLyBmYWlscy4gVGhl
IERhdGVDb21wb25lbnRzKiBwYXJhbWV0ZXIgbWF5IGJlIDAuCiAgICAgdmlydHVhbCBib29sIHBh
cnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0
OwogCi0gICAgLy8gQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGVjaWZp
ZWQgSW5wdXROdW1iZXIgdmFsdWUgZm9yIHRoZQorICAgIC8vIENyZWF0ZSBhIHN0cmluZyByZXBy
ZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIERlY2ltYWwgdmFsdWUgZm9yIHRoZQogICAgIC8v
IGlucHV0IHR5cGUuIElmIE5hTiBvciBJbmZpbml0eSBpcyBzcGVjaWZpZWQsIHRoaXMgcmV0dXJu
cyBhbiBlbXB0eQogICAgIC8vIHN0cmluZy4gVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3Ig
dHlwZXMgd2l0aG91dCB2YWx1ZUFzTnVtYmVyLgotICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6
ZShjb25zdCBJbnB1dE51bWJlciYpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6
ZShjb25zdCBEZWNpbWFsJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbmRl
dGVybWluYXRlQXBwZWFyYW5jZSgpIGNvbnN0OwogCkBAIC0yOTEsNyArMjkxLDcgQEAgcHJvdGVj
dGVkOgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Vs
ZW1lbnQ7IH0KICAgICB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2tJZkFjdGl2ZShLZXlib2Fy
ZEV2ZW50KikgY29uc3Q7CiAgICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdDsKLSAgICBJbnB1dE51
bWJlciBwYXJzZVRvTnVtYmVyT3JOYU4oY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgRGVjaW1h
bCBwYXJzZVRvTnVtYmVyT3JOYU4oY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgLy8gSGVscGVyIGZvciBzdGVwVXAoKS9zdGVwRG93bigpLiBBZGRzIHN0ZXAgdmFsdWUgKiBj
b3VudCB0byB0aGUgY3VycmVudCB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTW9udGhJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlw
ZS5jcHAKaW5kZXggYTExYTczNTFiZTlmN2ZhNzVkZDJmOThiMTBmYTliNDcxY2NmZDhjMy4uYzli
ZWJiMTM1NmUyOGQ1OWFkMmZmZjA0ZmRhMjEyYjNjNjBhODRmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9Nb250aElucHV0VHlwZS5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgU3RyaW5nIE1vbnRoSW5wdXRU
eXBlOjpzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICBy
ZXR1cm4gc2VyaWFsaXplV2l0aENvbXBvbmVudHMoZGF0ZSk7CiB9CiAKLUlucHV0TnVtYmVyIE1v
bnRoSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAorRGVjaW1hbCBNb250
aElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIHsKICAgICBkb3VibGUg
Y3VycmVudCA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2FsY3Vs
YXRlVVRDT2Zmc2V0KCk7CkBAIC05NCwyOCArOTQsMjggQEAgSW5wdXROdW1iZXIgTW9udGhJbnB1
dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiAgICAgZGF0ZS5zZXRNaWxsaXNl
Y29uZHNTaW5jZUVwb2NoRm9yTW9udGgoY3VycmVudCk7CiAgICAgZG91YmxlIG1vbnRocyA9IGRh
dGUubW9udGhzU2luY2VFcG9jaCgpOwogICAgIEFTU0VSVChpc2Zpbml0ZShtb250aHMpKTsKLSAg
ICByZXR1cm4gY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIobW9udGhzKTsKKyAgICByZXR1cm4g
RGVjaW1hbDo6ZnJvbURvdWJsZShtb250aHMpOwogfQogCiBTdGVwUmFuZ2UgTW9udGhJbnB1dFR5
cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25z
dAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKG1vbnRoRGVmYXVsdFN0ZXAsIG1vbnRoRGVmYXVsdFN0
ZXBCYXNlLCBtb250aFN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRTdGVwVmFsdWVT
aG91bGRCZUludGVnZXIpKTsKIAotICAgIGNvbnN0IElucHV0TnVtYmVyIHN0ZXBCYXNlID0gcGFy
c2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnRE
b3VibGVUb0lucHV0TnVtYmVyKERhdGVDb21wb25lbnRzOjptaW5pbXVtTW9udGgoKSkpOwotICAg
IGNvbnN0IElucHV0TnVtYmVyIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFz
dEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNv
bXBvbmVudHM6Om1pbmltdW1Nb250aCgpKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWF4aW11
bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBj
b252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihEYXRlQ29tcG9uZW50czo6bWF4aW11bU1vbnRoKCkp
KTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55
U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVy
KGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJs
ZShEYXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1p
bmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRy
KSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpKTsK
KyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFz
dEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50
czo6bWF4aW11bU1vbnRoKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBTdGVwUmFuZ2U6
OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShzdGVwQmFz
ZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsKIH0KIAotSW5wdXRO
dW1iZXIgTW9udGhJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzcmMsIGNv
bnN0IElucHV0TnVtYmVyJiBkZWZhdWx0VmFsdWUpIGNvbnN0CitEZWNpbWFsIE1vbnRoSW5wdXRU
eXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZh
dWx0VmFsdWUpIGNvbnN0CiB7CiAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKICAgICBpZiAoIXBh
cnNlVG9EYXRlQ29tcG9uZW50cyhzcmMsICZkYXRlKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRW
YWx1ZTsKICAgICBkb3VibGUgbW9udGhzID0gZGF0ZS5tb250aHNTaW5jZUVwb2NoKCk7CiAgICAg
QVNTRVJUKGlzZmluaXRlKG1vbnRocykpOwotICAgIHJldHVybiBjb252ZXJ0RG91YmxlVG9JbnB1
dE51bWJlcihtb250aHMpOworICAgIHJldHVybiBEZWNpbWFsOjpmcm9tRG91YmxlKG1vbnRocyk7
CiB9CiAKIGJvb2wgTW9udGhJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFs
KGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRz
KiBvdXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRU
eXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgKaW5kZXggMmJmMzcy
NzdjYjZmOThjMWJmOWY2NGIyZjE1NDE0NjQ2Yjk4NjM5Ny4uOGYyNGZhNzg1MjgwMTc0NzFhMGEw
YTgwMzU5MTc5Yzg4MmFiNWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250
aElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaApA
QCAtNDcsOCArNDcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHM6OlR5
cGUgZGF0ZVR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFz
RGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZVdpdGhN
aWxsaXNlY29uZHMoZG91YmxlKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIElucHV0TnVt
YmVyIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgSW5wdXROdW1iZXImKSBjb25z
dCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIElucHV0TnVtYmVyIGRlZmF1bHRWYWx1ZUZvclN0ZXBV
cCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IERlY2ltYWwgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNv
bnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91
YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9O
dW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDFkNmE0NzkxOGVmOTk3ZWRmM2QzZTQ3ZjU1YWM2NDI1
NGU3YzI0NDAuLmViMTU3ZjEwYzJkN2ZjNTVlNzU3MzA0ZDM5NmJiN2FkODhlY2Y0NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTEyNCwxMCArMTI0LDEwIEBA
IHZvaWQgTnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91YmxlKGRvdWJsZSBuZXdWYWx1ZSwg
VGV4dEZpZWxkRXZlbnRCZWhhdmlvciBlCiAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxp
emVGb3JOdW1iZXJUeXBlKG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CiB9CiAKLXZvaWQgTnVt
YmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzSW5wdXROdW1iZXIoY29uc3QgSW5wdXROdW1iZXImIG5l
d1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAordm9pZCBOdW1iZXJJbnB1dFR5cGU6OnNldFZhbHVlQXNEZWNpbWFsKGNv
bnN0IERlY2ltYWwmIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZp
b3IsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
dXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVtYmVyIGlucHV0IHR5cGUuCi0g
ICAgY29uc3QgSW5wdXROdW1iZXIgZmxvYXRNYXggPSBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJl
cihudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKKyAgICBjb25zdCBEZWNpbWFsIGZsb2F0
TWF4ID0gRGVjaW1hbDo6ZnJvbURvdWJsZShudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsK
ICAgICBpZiAobmV3VmFsdWUgPCAtZmxvYXRNYXgpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTUzLDEyICsxNTMsMTIgQEAgYm9vbCBOdW1i
ZXJJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiBTdGVwUmFuZ2UgTnVtYmVySW5wdXRU
eXBlOjpjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29u
c3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2Ny
aXB0aW9uLCBzdGVwRGVzY3JpcHRpb24sIChudW1iZXJEZWZhdWx0U3RlcCwgbnVtYmVyRGVmYXVs
dFN0ZXBCYXNlLCBudW1iZXJTdGVwU2NhbGVGYWN0b3IpKTsKLSAgICBjb25zdCBJbnB1dE51bWJl
ciBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWluQXR0ciksIG51bWJlckRlZmF1bHRTdGVwQmFzZSk7CisgICAgY29uc3Qg
RGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCkt
PmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIG51bWJlckRlZmF1bHRTdGVwQmFzZSk7CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCB1c2UgbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4IGZvciBu
dW1iZXIgaW5wdXQgdHlwZS4KLSAgICBjb25zdCBJbnB1dE51bWJlciBmbG9hdE1heCA9IGNvbnZl
cnREb3VibGVUb0lucHV0TnVtYmVyKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwotICAg
IGNvbnN0IElucHV0TnVtYmVyIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFz
dEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgLWZsb2F0TWF4KTsKLSAgICBjb25zdCBJbnB1dE51bWJl
ciBtYXhpbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4
QXR0ciksIGZsb2F0TWF4KTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gU3RlcFJhbmdl
OjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgZmxvYXRNYXgg
PSBEZWNpbWFsOjpmcm9tRG91YmxlKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOworICAg
IGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCAtZmxvYXRNYXgpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11
bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBm
bG9hdE1heCk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAo
YW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0s
IG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKQEAgLTIwNSwxMiArMjA1LDEy
IEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50KFdoZWVsRXZlbnQqIGV2
ZW50KQogICAgIGhhbmRsZVdoZWVsRXZlbnRGb3JTcGluQnV0dG9uKGV2ZW50KTsKIH0KIAotSW5w
dXROdW1iZXIgTnVtYmVySW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc3Jj
LCBjb25zdCBJbnB1dE51bWJlciYgZGVmYXVsdFZhbHVlKSBjb25zdAorRGVjaW1hbCBOdW1iZXJJ
bnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiBzcmMsIGNvbnN0IERlY2ltYWwm
IGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKICAgICByZXR1cm4gcGFyc2VUb0RlY2ltYWxGb3JOdW1i
ZXJUeXBlKHNyYywgZGVmYXVsdFZhbHVlKTsKIH0KIAotU3RyaW5nIE51bWJlcklucHV0VHlwZTo6
c2VyaWFsaXplKGNvbnN0IElucHV0TnVtYmVyJiB2YWx1ZSkgY29uc3QKK1N0cmluZyBOdW1iZXJJ
bnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKIHsKICAgICBp
ZiAoIXZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL051bWJlcklucHV0VHlwZS5oCmluZGV4IGJjZWRjOTYwOThlNmVmOGZhMWY0NzQ2ZDA2
MDJhNWM2Nzc0OGU2NjEuLmZlMTZlNWZhMDk0NjBjMzZiMjhhNzYxZDBlYzliODI1ZmRhMmFmMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaApAQCAtNDQsNyArNDQsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRG91YmxlKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEb3VibGUoZG91YmxlLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNJbnB1dE51bWJlcihjb25zdCBJbnB1dE51bWJlciYs
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0RlY2ltYWwoY29uc3QgRGVjaW1hbCYsIFRleHRG
aWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwg
aW50JiBwcmVmZXJyZWRTaXplKSBjb25zdCBPVkVSUklERTsKQEAgLTUyLDggKzUyLDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRs
aW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxF
dmVudChXaGVlbEV2ZW50KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBwYXJz
ZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IElucHV0TnVtYmVyJikgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IElucHV0TnVtYmVyJikgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5n
IHNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUJsdXJFdmVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGxvY2Fs
aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJp
bmcgdmlzaWJsZVZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwCmluZGV4IGZiOGJlMGVlZGU2YzhkNmQxOGJmYjc2YjY5NTQ0NTlmNDBiYmEw
ZjEuLmZkMTFjYmFhNzk1YzYxODliYmNjMTJhNDhmOWIyNzE1ZDUwMTNhN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBjb25z
dCBpbnQgcmFuZ2VEZWZhdWx0U3RlcCA9IDE7CiBzdGF0aWMgY29uc3QgaW50IHJhbmdlRGVmYXVs
dFN0ZXBCYXNlID0gMDsKIHN0YXRpYyBjb25zdCBpbnQgcmFuZ2VTdGVwU2NhbGVGYWN0b3IgPSAx
OwogCi1zdGF0aWMgSW5wdXROdW1iZXIgZW5zdXJlTWF4aW11bShjb25zdCBJbnB1dE51bWJlciYg
cHJvcG9zZWRWYWx1ZSwgY29uc3QgSW5wdXROdW1iZXImIG1pbmltdW0sIGNvbnN0IElucHV0TnVt
YmVyJiBmYWxsYmFja1ZhbHVlKQorc3RhdGljIERlY2ltYWwgZW5zdXJlTWF4aW11bShjb25zdCBE
ZWNpbWFsJiBwcm9wb3NlZFZhbHVlLCBjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNp
bWFsJiBmYWxsYmFja1ZhbHVlKQogewogICAgIHJldHVybiBwcm9wb3NlZFZhbHVlID49IG1pbmlt
dW0gPyBwcm9wb3NlZFZhbHVlIDogc3RkOjptYXgobWluaW11bSwgZmFsbGJhY2tWYWx1ZSk7CiB9
CkBAIC04NSw3ICs4NSw3IEBAIGRvdWJsZSBSYW5nZUlucHV0VHlwZTo6dmFsdWVBc0RvdWJsZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+
dmFsdWUoKSk7CiB9CiAKLXZvaWQgUmFuZ2VJbnB1dFR5cGU6OnNldFZhbHVlQXNJbnB1dE51bWJl
cihjb25zdCBJbnB1dE51bWJlciYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZl
bnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Cit2b2lkIFJhbmdlSW5wdXRUeXBlOjpz
ZXRWYWx1ZUFzRGVjaW1hbChjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRC
ZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QKIHsKICAgICBlbGVt
ZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOwogfQpA
QCAtOTksMTYgKzk5LDE2IEBAIFN0ZXBSYW5nZSBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJh
bmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2Ny
aXB0aW9uLCAocmFuZ2VEZWZhdWx0U3RlcCwgcmFuZ2VEZWZhdWx0U3RlcEJhc2UsIHJhbmdlU3Rl
cFNjYWxlRmFjdG9yKSk7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBtaW5pbXVtID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIHJhbmdlRGVmYXVs
dE1pbmltdW0pOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1heGltdW0gPSBlbnN1cmVNYXhpbXVt
KHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCByYW5n
ZURlZmF1bHRNYXhpbXVtKSwgbWluaW11bSwgcmFuZ2VEZWZhdWx0TWF4aW11bSk7CisgICAgY29u
c3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUobWluQXR0ciksIHJhbmdlRGVmYXVsdE1pbmltdW0pOworICAgIGNvbnN0IERlY2ltYWwg
bWF4aW11bSA9IGVuc3VyZU1heGltdW0ocGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWF4QXR0ciksIHJhbmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5nZURl
ZmF1bHRNYXhpbXVtKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlY2lzaW9uVmFsdWUg
PSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUocHJlY2lzaW9uQXR0cik7CiAgICAgaWYgKCFw
cmVjaXNpb25WYWx1ZS5pc051bGwoKSkgewotICAgICAgICBjb25zdCBJbnB1dE51bWJlciBzdGVw
ID0gZXF1YWxJZ25vcmluZ0Nhc2UocHJlY2lzaW9uVmFsdWUsICJmbG9hdCIpID8gRGVjaW1hbDo6
bmFuKCkgOiAxOworICAgICAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBlcXVhbElnbm9yaW5nQ2Fz
ZShwcmVjaXNpb25WYWx1ZSwgImZsb2F0IikgPyBEZWNpbWFsOjpuYW4oKSA6IDE7CiAgICAgICAg
IHJldHVybiBTdGVwUmFuZ2UobWluaW11bSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERl
c2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gU3RlcFJh
bmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9
IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKICAgICByZXR1cm4gU3RlcFJh
bmdlKG1pbmltdW0sIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9
CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3du
RXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAKICAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2
ZW50LT5rZXlJZGVudGlmaWVyKCk7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBjdXJyZW50ID0g
cGFyc2VUb051bWJlck9yTmFOKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgY29uc3QgRGVjaW1h
bCBjdXJyZW50ID0gcGFyc2VUb051bWJlck9yTmFOKGVsZW1lbnQoKS0+dmFsdWUoKSk7CiAgICAg
QVNTRVJUKGN1cnJlbnQuaXNGaW5pdGUoKSk7CiAKICAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNy
ZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKQEAgLTE0OSw4ICsxNDksOCBAQCB2b2lkIFJhbmdl
SW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAKICAg
ICAvLyBGSVhNRTogV2UgY2FuJ3QgdXNlIHN0ZXBVcCgpIGZvciB0aGUgc3RlcCB2YWx1ZSAiYW55
Ii4gU28sIHdlIGluY3JlYXNlCiAgICAgLy8gb3IgZGVjcmVhc2UgdGhlIHZhbHVlIGJ5IDEvMTAw
IG9mIHRoZSB2YWx1ZSByYW5nZS4gSXMgaXQgcmVhc29uYWJsZT8KLSAgICBjb25zdCBJbnB1dE51
bWJlciBzdGVwID0gZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KHN0ZXBBdHRyKSwgImFueSIpID8gKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWlu
aW11bSgpKSAvIDEwMCA6IHN0ZXBSYW5nZS5zdGVwKCk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIg
YmlnU3RlcCA9IG1heCgoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkp
IC8gMTAsIHN0ZXApOworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IGVxdWFsSWdub3JpbmdDYXNl
KGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0ciksICJhbnkiKSA/IChzdGVwUmFu
Z2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkgLyAxMDAgOiBzdGVwUmFuZ2Uuc3Rl
cCgpOworICAgIGNvbnN0IERlY2ltYWwgYmlnU3RlcCA9IG1heCgoc3RlcFJhbmdlLm1heGltdW0o
KSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkpIC8gMTAsIHN0ZXApOwogCiAgICAgYm9vbCBpc1ZlcnRp
Y2FsID0gZmFsc2U7CiAgICAgaWYgKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSkgewpAQCAtMTU4LDcg
KzE1OCw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2Fy
ZEV2ZW50KiBldmVudCkKICAgICAgICAgaXNWZXJ0aWNhbCA9IHBhcnQgPT0gU2xpZGVyVmVydGlj
YWxQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJQYXJ0OwogICAgIH0KIAotICAgIElu
cHV0TnVtYmVyIG5ld1ZhbHVlOworICAgIERlY2ltYWwgbmV3VmFsdWU7CiAgICAgaWYgKGtleSA9
PSAiVXAiKQogICAgICAgICBuZXdWYWx1ZSA9IGN1cnJlbnQgKyBzdGVwOwogICAgIGVsc2UgaWYg
KGtleSA9PSAiRG93biIpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6
aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIGlmIChuZXdWYWx1
ZSAhPSBjdXJyZW50KSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgIFRleHRG
aWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvciA9IERpc3BhdGNoQ2hhbmdlRXZlbnQ7Ci0g
ICAgICAgIHNldFZhbHVlQXNJbnB1dE51bWJlcihuZXdWYWx1ZSwgZXZlbnRCZWhhdmlvciwgZWMp
OworICAgICAgICBzZXRWYWx1ZUFzRGVjaW1hbChuZXdWYWx1ZSwgZXZlbnRCZWhhdmlvciwgZWMp
OwogCiAgICAgICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQog
ICAgICAgICAgICAgZWxlbWVudCgpLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnBvc3RO
b3RpZmljYXRpb24oZWxlbWVudCgpLT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWFZhbHVl
Q2hhbmdlZCwgdHJ1ZSk7CkBAIC0yMTMsMTIgKzIxMywxMiBAQCBSZW5kZXJPYmplY3QqIFJhbmdl
SW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KikgYwogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTbGlkZXIoZWxlbWVudCgpKTsKIH0K
IAotSW5wdXROdW1iZXIgUmFuZ2VJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5n
JiBzcmMsIGNvbnN0IElucHV0TnVtYmVyJiBkZWZhdWx0VmFsdWUpIGNvbnN0CitEZWNpbWFsIFJh
bmdlSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNp
bWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBhcnNlVG9EZWNpbWFsRm9y
TnVtYmVyVHlwZShzcmMsIGRlZmF1bHRWYWx1ZSk7CiB9CiAKLVN0cmluZyBSYW5nZUlucHV0VHlw
ZTo6c2VyaWFsaXplKGNvbnN0IElucHV0TnVtYmVyJiB2YWx1ZSkgY29uc3QKK1N0cmluZyBSYW5n
ZUlucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewogICAg
IGlmICghdmFsdWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjYz
LDcgKzI2Myw3IEBAIFN0cmluZyBSYW5nZUlucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0
CiBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9w
b3NlZFZhbHVlKSBjb25zdAogewogICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2UoY3JlYXRlU3RlcFJh
bmdlKFJlamVjdEFueSkpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIHByb3Bvc2VkTnVtZXJpY1Zh
bHVlID0gcGFyc2VUb051bWJlcihwcm9wb3NlZFZhbHVlLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVl
KCkpOworICAgIGNvbnN0IERlY2ltYWwgcHJvcG9zZWROdW1lcmljVmFsdWUgPSBwYXJzZVRvTnVt
YmVyKHByb3Bvc2VkVmFsdWUsIHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKSk7CiAgICAgcmV0dXJu
IHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc3RlcFJhbmdlLmNsYW1wVmFsdWUocHJvcG9zZWROdW1l
cmljVmFsdWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCmluZGV4IDBj
OGEyYTkyZGVjMDBmZTJhMjI5MWFkZjhmZWU2ZmM1NTM1OWE1ZDkuLmZmOGY0MDI4ZjIwNzU5ZTgx
ZTdkNjUzYTYzOGQ5MzEyODc3YTBiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSYW5nZUNv
bnRyb2woKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYg
Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBkb3VibGUgdmFs
dWVBc0RvdWJsZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFz
SW5wdXROdW1iZXIoY29uc3QgSW5wdXROdW1iZXImLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBF
eGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
QXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRp
b25Db2RlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUmVxdWly
ZWQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNT
dGVwcGFibGUoKSBjb25zdCBPVkVSUklERTsKQEAgLTU0LDggKzU0LDggQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVT
aGFkb3dTdWJ0cmVlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBwYXJzZVRv
TnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IElucHV0TnVtYmVyJikgY29uc3QgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IElucHV0TnVtYmVyJikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHNl
cmlhbGl6ZShjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIG1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZp
ZWxkRXZlbnRCZWhhdmlvcikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1N0ZXBSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKaW5k
ZXggOTlmOWRlNmIzZmY2MDRmMWEyY2FkNTIzMDUyNmJkMzQxMDU0YzQwZC4uYzdjODhmY2Y5MDU2
NGM5OTM2ZjQ3NjMxODZhZDliODNjMzUyNjI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9TdGVwUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmNw
cApAQCAtNTEsNyArNTEsNyBAQCBTdGVwUmFuZ2U6OlN0ZXBSYW5nZShjb25zdCBTdGVwUmFuZ2Um
IHN0ZXBSYW5nZSkKIHsKIH0KIAotU3RlcFJhbmdlOjpTdGVwUmFuZ2UoY29uc3QgSW5wdXROdW1i
ZXImIHN0ZXBCYXNlLCBjb25zdCBJbnB1dE51bWJlciYgbWluaW11bSwgY29uc3QgSW5wdXROdW1i
ZXImIG1heGltdW0sIGNvbnN0IElucHV0TnVtYmVyJiBzdGVwLCBjb25zdCBTdGVwRGVzY3JpcHRp
b24mIHN0ZXBEZXNjcmlwdGlvbikKK1N0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IERlY2ltYWwm
IHN0ZXBCYXNlLCBjb25zdCBEZWNpbWFsJiBtaW5pbXVtLCBjb25zdCBEZWNpbWFsJiBtYXhpbXVt
LCBjb25zdCBEZWNpbWFsJiBzdGVwLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlw
dGlvbikKICAgICA6IG1fbWF4aW11bShtYXhpbXVtKQogICAgICwgbV9taW5pbXVtKG1pbmltdW0p
CiAgICAgLCBtX3N0ZXAoc3RlcC5pc0Zpbml0ZSgpID8gc3RlcCA6IDEpCkBAIC02NSwxNCArNjUs
MTQgQEAgU3RlcFJhbmdlOjpTdGVwUmFuZ2UoY29uc3QgSW5wdXROdW1iZXImIHN0ZXBCYXNlLCBj
b25zdCBJbnB1dE51bWJlciYgbWluaW11bSwgY28KICAgICBBU1NFUlQobV9zdGVwQmFzZS5pc0Zp
bml0ZSgpKTsKIH0KIAotSW5wdXROdW1iZXIgU3RlcFJhbmdlOjphY2NlcHRhYmxlRXJyb3IoKSBj
b25zdAorRGVjaW1hbCBTdGVwUmFuZ2U6OmFjY2VwdGFibGVFcnJvcigpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCB1c2UgREJMX01BTlRfRElHIGluc3RlYWQgb2YgRkxUX01BTlRf
RElHIHJlZ2FyZGluZyB0byBIVE1MNSBzcGVjaWZpY2F0aW9uLgogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgRGVjaW1hbCwgdHdvUG93ZXJPZkZsb2F0TWFudGlzc2FCaXRzLCAoRGVjaW1h
bDo6UG9zaXRpdmUsIDAsIFVJTlQ2NF9DKDEpIDw8IEZMVF9NQU5UX0RJRykpOwogICAgIHJldHVy
biBtX3N0ZXAgLyB0d29Qb3dlck9mRmxvYXRNYW50aXNzYUJpdHM7CiB9CiAKLUlucHV0TnVtYmVy
IFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAoY29uc3QgSW5wdXROdW1iZXImIGN1cnJlbnRW
YWx1ZSwgY29uc3QgSW5wdXROdW1iZXImIG5ld1ZhbHVlKSBjb25zdAorRGVjaW1hbCBTdGVwUmFu
Z2U6OmFsaWduVmFsdWVGb3JTdGVwKGNvbnN0IERlY2ltYWwmIGN1cnJlbnRWYWx1ZSwgY29uc3Qg
RGVjaW1hbCYgbmV3VmFsdWUpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBEZWNpbWFsLCB0ZW5Qb3dlck9mMjEsIChEZWNpbWFsOjpQb3NpdGl2ZSwgMjEsIDEpKTsKICAg
ICBpZiAobmV3VmFsdWUgPj0gdGVuUG93ZXJPZjIxKQpAQCAtODEsMjAgKzgxLDIwIEBAIElucHV0
TnVtYmVyIFN0ZXBSYW5nZTo6YWxpZ25WYWx1ZUZvclN0ZXAoY29uc3QgSW5wdXROdW1iZXImIGN1
cnJlbnRWYWx1ZSwgY29uc3QKICAgICByZXR1cm4gc3RlcE1pc21hdGNoKGN1cnJlbnRWYWx1ZSkg
PyBuZXdWYWx1ZSA6IHJvdW5kQnlTdGVwKG5ld1ZhbHVlLCBtX3N0ZXBCYXNlKTsKIH0KIAotSW5w
dXROdW1iZXIgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGNvbnN0IElucHV0TnVtYmVyJiB2YWx1ZSkg
Y29uc3QKK0RlY2ltYWwgU3RlcFJhbmdlOjpjbGFtcFZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVl
KSBjb25zdAogewotICAgIGNvbnN0IElucHV0TnVtYmVyIGluUmFuZ2VWYWx1ZSA9IG1heChtX21p
bmltdW0sIG1pbih2YWx1ZSwgbV9tYXhpbXVtKSk7CisgICAgY29uc3QgRGVjaW1hbCBpblJhbmdl
VmFsdWUgPSBtYXgobV9taW5pbXVtLCBtaW4odmFsdWUsIG1fbWF4aW11bSkpOwogICAgIGlmICgh
bV9oYXNTdGVwKQogICAgICAgICByZXR1cm4gaW5SYW5nZVZhbHVlOwogICAgIC8vIFJvdW5kcyBp
blJhbmdlVmFsdWUgdG8gbWluaW11bSArIE4gKiBzdGVwLgotICAgIGNvbnN0IElucHV0TnVtYmVy
IHJvdW5kZWRWYWx1ZSA9IHJvdW5kQnlTdGVwKGluUmFuZ2VWYWx1ZSwgbV9taW5pbXVtKTsKLSAg
ICBjb25zdCBJbnB1dE51bWJlciBjbGFtcGVkVmFsdWUgPSByb3VuZGVkVmFsdWUgPiBtX21heGlt
dW0gPyByb3VuZGVkVmFsdWUgLSBtX3N0ZXAgOiByb3VuZGVkVmFsdWU7CisgICAgY29uc3QgRGVj
aW1hbCByb3VuZGVkVmFsdWUgPSByb3VuZEJ5U3RlcChpblJhbmdlVmFsdWUsIG1fbWluaW11bSk7
CisgICAgY29uc3QgRGVjaW1hbCBjbGFtcGVkVmFsdWUgPSByb3VuZGVkVmFsdWUgPiBtX21heGlt
dW0gPyByb3VuZGVkVmFsdWUgLSBtX3N0ZXAgOiByb3VuZGVkVmFsdWU7CiAgICAgQVNTRVJUKGNs
YW1wZWRWYWx1ZSA+PSBtX21pbmltdW0pOwogICAgIEFTU0VSVChjbGFtcGVkVmFsdWUgPD0gbV9t
YXhpbXVtKTsKICAgICByZXR1cm4gY2xhbXBlZFZhbHVlOwogfQogCi1JbnB1dE51bWJlciBTdGVw
UmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nLCBjb25zdCBT
dGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbiwgY29uc3QgU3RyaW5nJiBzdGVwU3RyaW5n
KQorRGVjaW1hbCBTdGVwUmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhh
bmRsaW5nLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mIHN0ZXBEZXNjcmlwdGlvbiwgY29uc3QgU3Ry
aW5nJiBzdGVwU3RyaW5nKQogewogICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZXBEZXNjcmlwdGlvbi5kZWZhdWx0VmFsdWUoKTsKQEAgLTEzNiwyMSArMTM2
LDIxIEBAIElucHV0TnVtYmVyIFN0ZXBSYW5nZTo6cGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZyBh
bnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBEZXNjCiAgICAgcmV0dXJuIHN0ZXA7CiB9CiAKLUlu
cHV0TnVtYmVyIFN0ZXBSYW5nZTo6cm91bmRCeVN0ZXAoY29uc3QgSW5wdXROdW1iZXImIHZhbHVl
LCBjb25zdCBJbnB1dE51bWJlciYgYmFzZSkgY29uc3QKK0RlY2ltYWwgU3RlcFJhbmdlOjpyb3Vu
ZEJ5U3RlcChjb25zdCBEZWNpbWFsJiB2YWx1ZSwgY29uc3QgRGVjaW1hbCYgYmFzZSkgY29uc3QK
IHsKICAgICByZXR1cm4gYmFzZSArICgodmFsdWUgLSBiYXNlKSAvIG1fc3RlcCkucm91bmQoKSAq
IG1fc3RlcDsKIH0KIAotYm9vbCBTdGVwUmFuZ2U6OnN0ZXBNaXNtYXRjaChjb25zdCBJbnB1dE51
bWJlciYgdmFsdWVGb3JDaGVjaykgY29uc3QKK2Jvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2go
Y29uc3QgRGVjaW1hbCYgdmFsdWVGb3JDaGVjaykgY29uc3QKIHsKICAgICBpZiAoIW1faGFzU3Rl
cCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghdmFsdWVGb3JDaGVjay5pc0Zpbml0
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgdmFsdWUg
PSAodmFsdWVGb3JDaGVjayAtIG1fc3RlcEJhc2UpLmFicygpOworICAgIGNvbnN0IERlY2ltYWwg
dmFsdWUgPSAodmFsdWVGb3JDaGVjayAtIG1fc3RlcEJhc2UpLmFicygpOwogICAgIGlmICghdmFs
dWUuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIElucHV0TnVtYmVy
J3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0LiBJZiB0aGUgY3VycmVu
dCB2YWx1ZQorICAgIC8vIERlY2ltYWwncyBmcmFjdGlvbmFsIHBhcnQgc2l6ZSBpcyBEQkxfTUFO
X0RJRy1iaXQuIElmIHRoZSBjdXJyZW50IHZhbHVlCiAgICAgLy8gaXMgZ3JlYXRlciB0aGFuIHN0
ZXAqMl5EQkxfTUFOVF9ESUcsIHRoZSBmb2xsb3dpbmcgY29tcHV0YXRpb24gZm9yCiAgICAgLy8g
cmVtYWluZGVyIG1ha2VzIG5vIHNlbnNlLgogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
RGVjaW1hbCwgdHdvUG93ZXJPZkRvdWJsZU1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0aXZl
LCAwLCBVSU5UNjRfQygxKSA8PCBEQkxfTUFOVF9ESUcpKTsKQEAgLTE1OSwxMCArMTU5LDEwIEBA
IGJvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2goY29uc3QgSW5wdXROdW1iZXImIHZhbHVlRm9y
Q2hlY2spIGNvbnN0CiAgICAgLy8gVGhlIGNvbXB1dGF0aW9uIGZvbGxvd3MgSFRNTDUgNC4xMC43
LjIuMTAgYFRoZSBzdGVwIGF0dHJpYnV0ZScgOgogICAgIC8vIC4uLiB0aGF0IG51bWJlciBzdWJ0
cmFjdGVkIGZyb20gdGhlIHN0ZXAgYmFzZSBpcyBub3QgYW4gaW50ZWdyYWwgbXVsdGlwbGUKICAg
ICAvLyBvZiB0aGUgYWxsb3dlZCB2YWx1ZSBzdGVwLCB0aGUgZWxlbWVudCBpcyBzdWZmZXJpbmcg
ZnJvbSBhIHN0ZXAgbWlzbWF0Y2guCi0gICAgY29uc3QgSW5wdXROdW1iZXIgcmVtYWluZGVyID0g
KHZhbHVlIC0gbV9zdGVwICogKHZhbHVlIC8gbV9zdGVwKS5yb3VuZCgpKS5hYnMoKTsKKyAgICBj
b25zdCBEZWNpbWFsIHJlbWFpbmRlciA9ICh2YWx1ZSAtIG1fc3RlcCAqICh2YWx1ZSAvIG1fc3Rl
cCkucm91bmQoKSkuYWJzKCk7CiAgICAgLy8gQWNjZXB0cyBlcnJvcyBpbiBsb3dlciBmcmFjdGlv
bmFsIHBhcnQgd2hpY2ggSUVFRSA3NTQgc2luZ2xlLXByZWNpc2lvbgogICAgIC8vIGNhbid0IHJl
cHJlc2VudC4KLSAgICBjb25zdCBJbnB1dE51bWJlciBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA9
IGFjY2VwdGFibGVFcnJvcigpOworICAgIGNvbnN0IERlY2ltYWwgY29tcHV0ZWRBY2NlcHRhYmxl
RXJyb3IgPSBhY2NlcHRhYmxlRXJyb3IoKTsKICAgICByZXR1cm4gY29tcHV0ZWRBY2NlcHRhYmxl
RXJyb3IgPCByZW1haW5kZXIgJiYgcmVtYWluZGVyIDwgKG1fc3RlcCAtIGNvbXB1dGVkQWNjZXB0
YWJsZUVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFu
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKaW5kZXggYjI5ZmE2Y2ExYTc0
ZWYzNzEzODdjZDdiODQ5ZDFjNzk4NDMzNWVkOS4uNjNhYjc1NjFhMmZlMDc1MzJmYzRmN2QzOWY2
Nzg2ZjY4OTk5MWMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCkBAIC0zMSwxOSArMzEsNiBA
QCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogCiBlbnVtIEFueVN0ZXBIYW5kbGluZyB7IFJlamVj
dEFueSwgQW55SXNEZWZhdWx0U3RlcCB9OwogCi0vLyBGSVhNRTogV2Ugc2hvdWxkIHJlbmFtZSBJ
bnB1dE51bWJlciB0byBEZWNpbWFsIGluIGFsbCBwbGFjZXMuCi10eXBlZGVmIERlY2ltYWwgSW5w
dXROdW1iZXI7Ci0KLWlubGluZSBJbnB1dE51bWJlciBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJl
cihkb3VibGUgZG91YmxlVmFsdWUpCi17Ci0gICAgcmV0dXJuIERlY2ltYWw6OmZyb21Eb3VibGUo
ZG91YmxlVmFsdWUpOwotfQotCi1pbmxpbmUgZG91YmxlIGNvbnZlcnRJbnB1dE51bWJlclRvRG91
YmxlKGNvbnN0IElucHV0TnVtYmVyJiBudW1lcmljVmFsdWUpCi17Ci0gICAgcmV0dXJuIG51bWVy
aWNWYWx1ZS50b0RvdWJsZSgpOwotfQotCiBjbGFzcyBTdGVwUmFuZ2UgewogcHVibGljOgogICAg
IGVudW0gU3RlcFZhbHVlU2hvdWxkQmUgewpAQCAtNzQsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIElucHV0TnVtYmVyIGRlZmF1bHRWYWx1ZSgpIGNv
bnN0CisgICAgICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOwogICAgICAgICB9
CkBAIC04MiwyNyArNjksMjcgQEAgcHVibGljOgogCiAgICAgU3RlcFJhbmdlKCk7CiAgICAgU3Rl
cFJhbmdlKGNvbnN0IFN0ZXBSYW5nZSYpOwotICAgIFN0ZXBSYW5nZShjb25zdCBJbnB1dE51bWJl
ciYgc3RlcEJhc2UsIGNvbnN0IElucHV0TnVtYmVyJiBtaW5pbXVtLCBjb25zdCBJbnB1dE51bWJl
ciYgbWF4aW11bSwgY29uc3QgSW5wdXROdW1iZXImIHN0ZXAsIGNvbnN0IFN0ZXBEZXNjcmlwdGlv
biYpOwotICAgIElucHV0TnVtYmVyIGFjY2VwdGFibGVFcnJvcigpIGNvbnN0OwotICAgIElucHV0
TnVtYmVyIGFsaWduVmFsdWVGb3JTdGVwKGNvbnN0IElucHV0TnVtYmVyJiBjdXJyZW50VmFsdWUs
IGNvbnN0IElucHV0TnVtYmVyJiBuZXdWYWx1ZSkgY29uc3Q7Ci0gICAgSW5wdXROdW1iZXIgY2xh
bXBWYWx1ZShjb25zdCBJbnB1dE51bWJlciYgdmFsdWUpIGNvbnN0OworICAgIFN0ZXBSYW5nZShj
b25zdCBEZWNpbWFsJiBzdGVwQmFzZSwgY29uc3QgRGVjaW1hbCYgbWluaW11bSwgY29uc3QgRGVj
aW1hbCYgbWF4aW11bSwgY29uc3QgRGVjaW1hbCYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9u
Jik7CisgICAgRGVjaW1hbCBhY2NlcHRhYmxlRXJyb3IoKSBjb25zdDsKKyAgICBEZWNpbWFsIGFs
aWduVmFsdWVGb3JTdGVwKGNvbnN0IERlY2ltYWwmIGN1cnJlbnRWYWx1ZSwgY29uc3QgRGVjaW1h
bCYgbmV3VmFsdWUpIGNvbnN0OworICAgIERlY2ltYWwgY2xhbXBWYWx1ZShjb25zdCBEZWNpbWFs
JiB2YWx1ZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9oYXNT
dGVwOyB9Ci0gICAgSW5wdXROdW1iZXIgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11
bTsgfQotICAgIElucHV0TnVtYmVyIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21pbmltdW07
IH0KLSAgICBzdGF0aWMgSW5wdXROdW1iZXIgcGFyc2VTdGVwKEFueVN0ZXBIYW5kbGluZywgY29u
c3QgU3RlcERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgSW5wdXROdW1iZXIgc3Rl
cCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcDsgfQotICAgIElucHV0TnVtYmVyIHN0ZXBCYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGVwQmFzZTsgfQorICAgIERlY2ltYWwgbWF4aW11bSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIERlY2ltYWwgbWluaW11bSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWluaW11bTsgfQorICAgIHN0YXRpYyBEZWNpbWFsIHBhcnNlU3RlcChBbnlTdGVwSGFu
ZGxpbmcsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYsIGNvbnN0IFN0cmluZyYpOworICAgIERlY2lt
YWwgc3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RlcDsgfQorICAgIERlY2ltYWwgc3RlcEJhc2Uo
KSBjb25zdCB7IHJldHVybiBtX3N0ZXBCYXNlOyB9CiAgICAgaW50IHN0ZXBTY2FsZUZhY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RlcERlc2NyaXB0aW9uLnN0ZXBTY2FsZUZhY3RvcjsgfQotICAg
IGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IElucHV0TnVtYmVyJikgY29uc3Q7CisgICAgYm9vbCBz
dGVwTWlzbWF0Y2goY29uc3QgRGVjaW1hbCYpIGNvbnN0OwogCiAgICAgLy8gQ2xhbXAgdGhlIG1p
ZGRsZSB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHN0ZXAKLSAgICBJbnB1dE51bWJlciBkZWZhdWx0
VmFsdWUoKSBjb25zdAorICAgIERlY2ltYWwgZGVmYXVsdFZhbHVlKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBjbGFtcFZhbHVlKChtX21pbmltdW0gKyBtX21heGltdW0pIC8gMik7CiAg
ICAgfQogCiAgICAgLy8gTWFwIHZhbHVlIGludG8gMC0xIHJhbmdlCi0gICAgSW5wdXROdW1iZXIg
cHJvcG9ydGlvbkZyb21WYWx1ZShjb25zdCBJbnB1dE51bWJlciYgdmFsdWUpIGNvbnN0CisgICAg
RGVjaW1hbCBwcm9wb3J0aW9uRnJvbVZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKG1fbWluaW11bSA9PSBtX21heGltdW0pCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKQEAgLTExMSwxOSArOTgsMTkgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIE1h
cCBmcm9tIDAtMSByYW5nZSB0byB2YWx1ZQotICAgIElucHV0TnVtYmVyIHZhbHVlRnJvbVByb3Bv
cnRpb24oY29uc3QgSW5wdXROdW1iZXImIHByb3BvcnRpb24pIGNvbnN0CisgICAgRGVjaW1hbCB2
YWx1ZUZyb21Qcm9wb3J0aW9uKGNvbnN0IERlY2ltYWwmIHByb3BvcnRpb24pIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9taW5pbXVtICsgcHJvcG9ydGlvbiAqIChtX21heGltdW0gLSBt
X21pbmltdW0pOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBTdGVwUmFuZ2UmIG9wZXJhdG9yID0o
Y29uc3QgU3RlcFJhbmdlJik7Ci0gICAgSW5wdXROdW1iZXIgcm91bmRCeVN0ZXAoY29uc3QgSW5w
dXROdW1iZXImIHZhbHVlLCBjb25zdCBJbnB1dE51bWJlciYgYmFzZSkgY29uc3Q7CisgICAgRGVj
aW1hbCByb3VuZEJ5U3RlcChjb25zdCBEZWNpbWFsJiB2YWx1ZSwgY29uc3QgRGVjaW1hbCYgYmFz
ZSkgY29uc3Q7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBtX21heGltdW07IC8vIG1heGltdW0g
bXVzdCBiZSA+PSBtaW5pbXVtLgotICAgIGNvbnN0IElucHV0TnVtYmVyIG1fbWluaW11bTsKLSAg
ICBjb25zdCBJbnB1dE51bWJlciBtX3N0ZXA7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbV9zdGVw
QmFzZTsKKyAgICBjb25zdCBEZWNpbWFsIG1fbWF4aW11bTsgLy8gbWF4aW11bSBtdXN0IGJlID49
IG1pbmltdW0uCisgICAgY29uc3QgRGVjaW1hbCBtX21pbmltdW07CisgICAgY29uc3QgRGVjaW1h
bCBtX3N0ZXA7CisgICAgY29uc3QgRGVjaW1hbCBtX3N0ZXBCYXNlOwogICAgIGNvbnN0IFN0ZXBE
ZXNjcmlwdGlvbiBtX3N0ZXBEZXNjcmlwdGlvbjsKICAgICBjb25zdCBib29sIG1faGFzU3RlcDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcAppbmRleCA1Mzc5MmE5OThhOTI4
OTMyYTVjMmI3NDRlNDU4MzVhNDliNjNhY2RlLi4wNTJiODg3NTYxNzNlY2E5Mjk5MmVhNTk5N2Fi
ZDU5NjIxNzcyNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgVGltZUlucHV0VHlwZTo6ZGF0ZVR5cGUo
KSBjb25zdAogICAgIHJldHVybiBEYXRlQ29tcG9uZW50czo6VGltZTsKIH0KIAotSW5wdXROdW1i
ZXIgVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwg
VGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKIHsKICAgICBkb3Vi
bGUgY3VycmVudCA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICBkb3VibGUgdXRjT2Zmc2V0ID0gY2Fs
Y3VsYXRlVVRDT2Zmc2V0KCk7CkBAIC03NiwxNyArNzYsMTcgQEAgSW5wdXROdW1iZXIgVGltZUlu
cHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKICAgICBkYXRlLnNldE1pbGxp
c2Vjb25kc1NpbmNlTWlkbmlnaHQoY3VycmVudCk7CiAgICAgZG91YmxlIG1pbGxpc2Vjb25kcyA9
IGRhdGUubWlsbGlzZWNvbmRzU2luY2VFcG9jaCgpOwogICAgIEFTU0VSVChpc2Zpbml0ZShtaWxs
aXNlY29uZHMpKTsKLSAgICByZXR1cm4gY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIobWlsbGlz
ZWNvbmRzKTsKKyAgICByZXR1cm4gRGVjaW1hbDo6ZnJvbURvdWJsZShtaWxsaXNlY29uZHMpOwog
fQogCiBTdGVwUmFuZ2UgVGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5k
bGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0aW9uLCAodGltZURl
ZmF1bHRTdGVwLCB0aW1lRGVmYXVsdFN0ZXBCYXNlLCB0aW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVw
UmFuZ2U6OlNjYWxlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOwogCi0gICAgY29uc3QgSW5w
dXROdW1iZXIgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgMCk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWluaW11bSA9IHBhcnNl
VG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBjb252ZXJ0RG91
YmxlVG9JbnB1dE51bWJlcihEYXRlQ29tcG9uZW50czo6bWluaW11bVRpbWUoKSkpOwotICAgIGNv
bnN0IElucHV0TnVtYmVyIG1heGltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShtYXhBdHRyKSwgY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBv
bmVudHM6Om1heGltdW1UaW1lKCkpKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gU3Rl
cFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3Rl
cEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRy
KSwgMCk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50
KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNv
bXBvbmVudHM6Om1pbmltdW1UaW1lKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGVjaW1h
bDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWF4aW11bVRpbWUoKSkpOworICAgIGNvbnN0
IERlY2ltYWwgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3Rl
cERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKICAg
ICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVw
RGVzY3JpcHRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJ
bnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oCmluZGV4IDgy
ODc1ZTU3NDAzYjFhODJjZjMxZGY0ZDliNmEyZjk0NGJhOGRjOWEuLmM5ZDViMGNkZDA3NzEyYjg3
N2VhYTdjMTkyYzZlYTg0MWRhNTBkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5o
CkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgVGltZUlucHV0VHlwZShIVE1MSW5wdXRF
bGVtZW50KiBlbGVtZW50KSA6IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZShlbGVtZW50KSB7IH0K
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgSW5wdXROdW1iZXIgZGVmYXVsdFZhbHVlRm9yU3Rl
cFVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZv
clN0ZXBVcCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0
ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wg
c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBj
b25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3BwCmluZGV4IGY4
YWVhMGFjMTZlMzAzYThiZDQzNWIyZWM5YjgyNmEyMDk2M2I3ZjIuLmM4ODFhZThjMWEzYjZjZjQ3
MjM0ZGYzOGRiMWNkNjFjOWQzMzBkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
V2Vla0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBl
LmNwcApAQCAtNjUsMTAgKzY1LDEwIEBAIFN0ZXBSYW5nZSBXZWVrSW5wdXRUeXBlOjpjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBzdGVw
RGVzY3JpcHRpb24sICh3ZWVrRGVmYXVsdFN0ZXAsIHdlZWtEZWZhdWx0U3RlcEJhc2UsIHdlZWtT
dGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2Vy
KSk7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwQmFzZSA9IHBhcnNlVG9OdW1iZXIoZWxl
bWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlKTsK
LSAgICBjb25zdCBJbnB1dE51bWJlciBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCkt
PmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKERh
dGVDb21wb25lbnRzOjptaW5pbXVtV2VlaygpKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWF4
aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIp
LCBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihEYXRlQ29tcG9uZW50czo6bWF4aW11bVdlZWso
KSkpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChh
bnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKHN0ZXBBdHRyKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNlVG9OdW1i
ZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCB3ZWVrRGVmYXVsdFN0ZXBC
YXNlKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQo
KS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29t
cG9uZW50czo6bWluaW11bVdlZWsoKSkpOworICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBh
cnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBEZWNpbWFs
Ojpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptYXhpbXVtV2VlaygpKSk7CisgICAgY29uc3Qg
RGVjaW1hbCBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVw
RGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAg
IHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBE
ZXNjcmlwdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9D
YWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCmluZGV4IGFiOGMyZWQ5MTA5YmY5ODEzNGY2YTM4MjI1
OWI4Njc1ZGNiMWQ5YmIuLjUzNThjY2FmN2EzZGYyZTMzYTAzZWJmMGM4ODkxMWIwYzA4ODJiYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJF
bGVtZW50LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgQ2FsZW5kYXJQaWNrZXJFbGVtZW50
Ojp3cml0ZURvY3VtZW50KERvY3VtZW50V3JpdGVyJiB3cml0ZXIpCiAgICAgU3RyaW5nIG1pblN0
cmluZyA9IGRhdGUudG9TdHJpbmcoKTsKICAgICBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBv
Y2hGb3JEYXRlKGlucHV0LT5tYXhpbXVtKCkpOwogICAgIFN0cmluZyBtYXhTdHJpbmcgPSBkYXRl
LnRvU3RyaW5nKCk7Ci0gICAgSW5wdXROdW1iZXIgc3RlcDsKKyAgICBEZWNpbWFsIHN0ZXA7CiAg
ICAgU3RyaW5nIHN0ZXBTdHJpbmcgPSBpbnB1dC0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cik7
CiAgICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0eSgpIHx8ICFpbnB1dC0+Z2V0QWxsb3dlZFZhbHVl
U3RlcCgmc3RlcCkpCiAgICAgICAgIHN0ZXBTdHJpbmcgPSAiMSI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCBkMGNhNDViYjcx
Y2NhOGIzOGNiYjg0MjljMWM0OWMyNzVhNGRhM2RkLi41MDJkYWUxM2YxNTJkYzRiNDI3ZGIxZjk2
OTUxZjhkZTMyZTdhZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTUxLDEwICs1MSwxMCBAQCB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGF0aWMgSW5wdXROdW1iZXIg
c2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK2lubGluZSBzdGF0aWMg
RGVjaW1hbCBzbGlkZXJQb3NpdGlvbihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQogewogICAg
IGNvbnN0IFN0ZXBSYW5nZSBzdGVwUmFuZ2UoZWxlbWVudC0+Y3JlYXRlU3RlcFJhbmdlKFJlamVj
dEFueSkpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG9sZFZhbHVlID0gcGFyc2VUb0RlY2ltYWxG
b3JOdW1iZXJUeXBlKGVsZW1lbnQtPnZhbHVlKCksIHN0ZXBSYW5nZS5kZWZhdWx0VmFsdWUoKSk7
CisgICAgY29uc3QgRGVjaW1hbCBvbGRWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlw
ZShlbGVtZW50LT52YWx1ZSgpLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkpOwogICAgIHJldHVy
biBzdGVwUmFuZ2UucHJvcG9ydGlvbkZyb21WYWx1ZShzdGVwUmFuZ2UuY2xhbXBWYWx1ZShvbGRW
YWx1ZSkpOwogfQogCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBSZW5kZXJTbGlkZXJUaHVtYjo6
bGF5b3V0KCkKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IG5vZGUoKS0+c2hhZG93QW5j
ZXN0b3JOb2RlKCktPnRvSW5wdXRFbGVtZW50KCk7CiAgICAgYm9vbCBpc1ZlcnRpY2FsID0gaGFz
VmVydGljYWxBcHBlYXJhbmNlKGlucHV0KTsKIAotICAgIGRvdWJsZSBmcmFjdGlvbiA9IGNvbnZl
cnRJbnB1dE51bWJlclRvRG91YmxlKHNsaWRlclBvc2l0aW9uKGlucHV0KSAqIDEwMCk7CisgICAg
ZG91YmxlIGZyYWN0aW9uID0gKHNsaWRlclBvc2l0aW9uKGlucHV0KSAqIDEwMCkudG9Eb3VibGUo
KTsKICAgICBpZiAoaXNWZXJ0aWNhbCkKICAgICAgICAgc3R5bGUoKS0+c2V0VG9wKExlbmd0aCgx
MDAgLSBmcmFjdGlvbiwgUGVyY2VudCkpOwogICAgIGVsc2UgaWYgKHN0eWxlKCktPmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSkKQEAgLTI0MiwxMCArMjQyLDEwIEBAIHZvaWQgU2xpZGVyVGh1bWJF
bGVtZW50OjpzZXRQb3NpdGlvbkZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAg
ICAgaWYgKHBvc2l0aW9uID09IGN1cnJlbnRQb3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29uc3QgSW5wdXROdW1iZXIgcmF0aW8gPSBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihz
dGF0aWNfY2FzdDxkb3VibGU+KHBvc2l0aW9uKSAvIHRyYWNrU2l6ZSk7Ci0gICAgY29uc3QgSW5w
dXROdW1iZXIgZnJhY3Rpb24gPSBpc1ZlcnRpY2FsIHx8ICFyZW5kZXJCb3goKS0+c3R5bGUoKS0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gSW5wdXROdW1iZXIoMSkgLSByYXRpbyA6IHJhdGlv
OworICAgIGNvbnN0IERlY2ltYWwgcmF0aW8gPSBEZWNpbWFsOjpmcm9tRG91YmxlKHN0YXRpY19j
YXN0PGRvdWJsZT4ocG9zaXRpb24pIC8gdHJhY2tTaXplKTsKKyAgICBjb25zdCBEZWNpbWFsIGZy
YWN0aW9uID0gaXNWZXJ0aWNhbCB8fCAhcmVuZGVyQm94KCktPnN0eWxlKCktPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSA/IERlY2ltYWwoMSkgLSByYXRpbyA6IHJhdGlvOwogICAgIFN0ZXBSYW5n
ZSBzdGVwUmFuZ2UoaW5wdXQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsKLSAgICBjb25z
dCBJbnB1dE51bWJlciB2YWx1ZSA9IHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5nZS52YWx1
ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9uKSk7CisgICAgY29uc3QgRGVjaW1hbCB2YWx1ZSA9IHN0
ZXBSYW5nZS5jbGFtcFZhbHVlKHN0ZXBSYW5nZS52YWx1ZUZyb21Qcm9wb3J0aW9uKGZyYWN0aW9u
KSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBubyBsb25nZXIgYmVpbmcgc2V0IGZyb20gcmVu
ZGVyZXIuIENvbnNpZGVyIHVwZGF0aW5nIHRoZSBtZXRob2QgbmFtZS4KICAgICBpbnB1dC0+c2V0
VmFsdWVGcm9tUmVuZGVyZXIoc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147538</attachid>
            <date>2012-06-14 02:57:20 -0700</date>
            <delta_ts>2012-06-14 04:54:01 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-88746-20120614185718.patch</filename>
            <type>text/plain</type>
            <size>62229</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUyNzU4NTg2MTkxMTBl
Yjc1ZGE0NGUyODUxYWI0YjM3YmQzNGY4Zi4uMzkwYTg5YzU5YTIwNDkzZTJhMzAwMTY2NDg2Mjdm
M2RhMjAxOWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNCBAQAorMjAxMi0wNi0xNCAgWW9z
aGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtGb3JtXSBSZXBs
YWNlIElucHV0TnVtYmVyIHR5cGUgdG8gRGVjaW1hbCB0eXBlIGFuZCBkcm9wIElucHV0TnVtYmVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODc0Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
cmVtb3ZlcyBJbnB1dE51bWJlciBpbnRyb2R1Y2VkIGJ5IHIxMTk1NDAgYnkgcmVwbGFjaW5nCisg
ICAgICAgIElucHV0TnVtYmVyIHR5cGUgdG8gRGVjaW1hbCB0eXBlIGFuZCBjaGFuZ2luZyBjb252
ZXJ0RG91YmxlVG9EZWNpbWFsCisgICAgICAgIGFuZCBjb252ZXJ0RGVjaW1hbFRvRG91YmxlIHRv
IERlY2ltYWw6OmZyb21Eb3VibGUgYW5kCisgICAgICAgIERlY2ltYWw6OnRvRG91YmxlLCByZXNw
ZWN0aXZlbHkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHBhdGNoIGRvZXNuJ3QgY2hh
bmdlIGJlaGF2aW9yLgorCisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXRWYWx1
ZUFzRGVjaW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6
OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlRGF0ZUFuZFRp
bWVJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemVXaXRoQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMp
OgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwvRGF0ZUlucHV0VHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpjcmVhdGVTdGVwUmFuZ2UpOgor
ICAgICAgICAqIGh0bWwvRGF0ZVRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0ZVRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRlVGltZUlucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1s
L0RhdGVUaW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChEYXRlVGltZUlucHV0VHlwZSk6CisgICAg
ICAgICogaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5oOgorICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzZXRWYWx1ZUFzRG91YmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6c2V0VmFsdWVBc0RlY2ltYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpyYW5nZVVuZGVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGU6OnJhbmdlT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBl
OjpkZWZhdWx0VmFsdWVGb3JTdGVwVXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpt
aW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6bWF4aW11bSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGU6OmlzSW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dFR5cGU6OmlzT3V0T2ZSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnN0ZXBN
aXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OnZhbGlkYXRpb25NZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb051bWJlcik6CisgICAgICAg
IChXZWJDb3JlOjpJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXJPck5hTik6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6
OmFwcGx5U3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5cGU6OmdldEFsbG93ZWRWYWx1
ZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgIChJbnB1dFR5cGUpOgorICAg
ICAgICAqIGh0bWwvTW9udGhJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9udGhJ
bnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCk6CisgICAgICAgIChXZWJDb3JlOjpNb250
aElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5w
dXRUeXBlOjpwYXJzZVRvTnVtYmVyKToKKyAgICAgICAgKiBodG1sL01vbnRoSW5wdXRUeXBlLmg6
CisgICAgICAgIChNb250aElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1dFR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzRGVj
aW1hbCk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAq
IGh0bWwvTnVtYmVySW5wdXRUeXBlLmg6CisgICAgICAgIChOdW1iZXJJbnB1dFR5cGUpOgorICAg
ICAgICAqIGh0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5zdXJl
TWF4aW11bSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWVBc0Rl
Y2ltYWwpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpzZXJpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUpOgorICAgICAgICAqIGh0bWwvUmFu
Z2VJbnB1dFR5cGUuaDoKKyAgICAgICAgKFJhbmdlSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1s
L1N0ZXBSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OlN0ZXBSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFjY2VwdGFibGVFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpTdGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JTdGVwKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6
OnBhcnNlU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnJvdW5kQnlTdGVwKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKiBo
dG1sL1N0ZXBSYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjpTdGVwRGVzY3Jp
cHRpb246OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChTdGVwUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3RlcFJhbmdlOjptYXhpbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlN0ZXBSYW5nZTo6
bWluaW11bSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnN0ZXApOgorICAgICAgICAo
V2ViQ29yZTo6U3RlcFJhbmdlOjpzdGVwQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFu
Z2U6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGVwUmFuZ2U6OnByb3BvcnRp
b25Gcm9tVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3RlcFJhbmdlOjp2YWx1ZUZyb21Qcm9w
b3J0aW9uKToKKyAgICAgICAgKiBodG1sL1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZSk6CisgICAgICAgICogaHRtbC9U
aW1lSW5wdXRUeXBlLmg6CisgICAgICAgIChUaW1lSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1s
L1dlZWtJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vla0lucHV0VHlwZTo6Y3Jl
YXRlU3RlcFJhbmdlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FsZW5kYXJQaWNrZXJFbGVtZW50Ojp3cml0ZURv
Y3VtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2xpZGVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2xpZGVyVGh1bWI6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpTbGlkZXJUaHVtYkVs
ZW1lbnQ6OnNldFBvc2l0aW9uRnJvbVBvaW50KToKKwogMjAxMi0wNi0xNCAgRWRhZW5hIFNhbGlu
YXMgSmFzc28gIDxlZGFlbmFAYXBwbGUuY29tPgogCiAgICAgICAgIGVsLmdldEF0dHJpYnV0ZSgn
dHlwZScpIHJldHVybnMgJ251bGwnIHdoZW4gc2V0dGluZyBlbC50eXBlIHRvIG51bGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCBj
NzY2MTk0NTIyNzg5Y2IxYjQ0NmQ0YTI2ZGIwNzA1ZDFhMzJlZWNlLi40ODQ3MWNiNjVhZjU0OTNj
MWQzOTM3OWRjZmNmZDJjZmNkZmI3ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC02NSw3ICs2NSw3IEBAIGRvdWJsZSBCYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUoKSBjb25zdAogICAgIHJldHVybiBw
YXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+dmFsdWUoKSk7CiB9CiAKLXZvaWQgQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlOjpzZXRWYWx1ZUFzSW5wdXROdW1iZXIoY29uc3QgSW5wdXROdW1iZXImIG5l
d1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdAordm9pZCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNldFZhbHVlQXNEZWNp
bWFsKGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50
QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdAogewogICAgIGVsZW1lbnQoKS0+c2V0VmFs
dWUoc2VyaWFsaXplKG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CiB9CkBAIC04MCwxMyArODAs
MTMgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0
CiAgICAgcmV0dXJuIHR5cGVNaXNtYXRjaEZvcihlbGVtZW50KCktPnZhbHVlKCkpOwogfQogCi1J
bnB1dE51bWJlciBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBV
cCgpIGNvbnN0CitEZWNpbWFsIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6ZGVmYXVsdFZhbHVl
Rm9yU3RlcFVwKCkgY29uc3QKIHsKICAgICBkb3VibGUgbXMgPSBjdXJyZW50VGltZU1TKCk7CiAg
ICAgZG91YmxlIHV0Y09mZnNldCA9IGNhbGN1bGF0ZVVUQ09mZnNldCgpOwogICAgIGRvdWJsZSBk
c3RPZmZzZXQgPSBjYWxjdWxhdGVEU1RPZmZzZXQobXMsIHV0Y09mZnNldCk7CiAgICAgaW50IG9m
ZnNldCA9IHN0YXRpY19jYXN0PGludD4oKHV0Y09mZnNldCArIGRzdE9mZnNldCkgLyBtc1Blck1p
bnV0ZSk7Ci0gICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKG1zICsgKG9mZnNl
dCAqIG1zUGVyTWludXRlKSk7CisgICAgcmV0dXJuIERlY2ltYWw6OmZyb21Eb3VibGUobXMgKyAo
b2Zmc2V0ICogbXNQZXJNaW51dGUpKTsKIH0KIAogYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OmlzU3RlcHBhYmxlKCkgY29uc3QKQEAgLTExOCwxMCArMTE4LDEwIEBAIGRvdWJsZSBCYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiBzb3VyY2Up
IGNvbnN0CiAgICAgcmV0dXJuIG1zZWM7CiB9CiAKLUlucHV0TnVtYmVyIEJhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZTo6cGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgSW5w
dXROdW1iZXImIGRlZmF1bHRWYWx1ZSkgY29uc3QKK0RlY2ltYWwgQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBEZWNpbWFs
JiBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7CiAgICAgY29uc3QgZG91YmxlIGRvdWJsZVZhbHVlID0g
cGFyc2VUb0RvdWJsZShzb3VyY2UpOwotICAgIHJldHVybiBpc2Zpbml0ZShkb3VibGVWYWx1ZSkg
PyBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihkb3VibGVWYWx1ZSkgOiBkZWZhdWx0VmFsdWU7
CisgICAgcmV0dXJuIGlzZmluaXRlKGRvdWJsZVZhbHVlKSA/IERlY2ltYWw6OmZyb21Eb3VibGUo
ZG91YmxlVmFsdWUpIDogZGVmYXVsdFZhbHVlOwogfQogCiBib29sIEJhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZyYgc291cmNlLCBEYXRl
Q29tcG9uZW50cyogb3V0KSBjb25zdApAQCAtMTM0LDE5ICsxMzQsMTkgQEAgYm9vbCBCYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmIHNv
dXJjZSwgRGF0ZUMKICAgICByZXR1cm4gcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoc291
cmNlLmNoYXJhY3RlcnMoKSwgc291cmNlLmxlbmd0aCgpLCBvdXQpOwogfQogCi1TdHJpbmcgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgSW5wdXROdW1iZXImIHZhbHVl
KSBjb25zdAorU3RyaW5nIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2VyaWFsaXplKGNvbnN0
IERlY2ltYWwmIHZhbHVlKSBjb25zdAogewogICAgIGlmICghdmFsdWUuaXNGaW5pdGUoKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIERhdGVDb21wb25lbnRzIGRhdGU7Ci0gICAgaWYg
KCFzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoY29udmVydElucHV0TnVtYmVyVG9Eb3Vi
bGUodmFsdWUpLCAmZGF0ZSkpCisgICAgaWYgKCFzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVu
dHModmFsdWUudG9Eb3VibGUoKSwgJmRhdGUpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgcmV0dXJuIHNlcmlhbGl6ZVdpdGhDb21wb25lbnRzKGRhdGUpOwogfQogCiBTdHJpbmcgQmFz
ZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXJpYWxpemVXaXRoQ29tcG9uZW50cyhjb25zdCBEYXRl
Q29tcG9uZW50cyYgZGF0ZSkgY29uc3QKIHsKLSAgICBJbnB1dE51bWJlciBzdGVwOworICAgIERl
Y2ltYWwgc3RlcDsKICAgICBpZiAoIWVsZW1lbnQoKS0+Z2V0QWxsb3dlZFZhbHVlU3RlcCgmc3Rl
cCkpCiAgICAgICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKCk7CiAgICAgaWYgKHN0ZXAucmVtYWlu
ZGVyKG1zZWNQZXJNaW51dGUpLmlzWmVybygpKQpAQCAtMTU4LDcgKzE1OCw3IEBAIFN0cmluZyBC
YXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlhbGl6ZVdpdGhDb21wb25lbnRzKGNvbnN0IERh
dGVDb21wb25lbnRzJiBkCiAKIFN0cmluZyBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNlcmlh
bGl6ZVdpdGhNaWxsaXNlY29uZHMoZG91YmxlIHZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBz
ZXJpYWxpemUoY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIodmFsdWUpKTsKKyAgICByZXR1cm4g
c2VyaWFsaXplKERlY2ltYWw6OmZyb21Eb3VibGUodmFsdWUpKTsKIH0KIAogU3RyaW5nIEJhc2VE
YXRlQW5kVGltZUlucHV0VHlwZTo6bG9jYWxpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2Vk
VmFsdWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5k
VGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuaAppbmRleCA1MGYwNjNjNzgyOGY2ZDVjYzllNWQ3ZWI1MzM3ODMyN2UyYmI0Y2U2Li4x
NjU4YzFmZTA3MjJiM2NjNDFhMzIzOTgwN2I2ZTFiMDgwZmFlZDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTQyLDcgKzQyLDcgQEAg
Y2xhc3MgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlIDogcHVibGljIFRleHRGaWVsZElucHV0VHlw
ZSB7CiBwcm90ZWN0ZWQ6CiAgICAgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlKEhUTUxJbnB1dEVs
ZW1lbnQqIGVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgSW5wdXROdW1iZXIgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBJbnB1dE51bWJlciYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBwYXJz
ZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZyYsIERh
dGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7CiAgICAgU3RyaW5nIHNlcmlhbGl6ZVdpdGhD
b21wb25lbnRzKGNvbnN0IERhdGVDb21wb25lbnRzJikgY29uc3Q7CiAKQEAgLTUzLDEzICs1Mywx
MyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNEYXRlKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEYXRlKGRvdWJsZSwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNEb3VibGUo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0lucHV0TnVtYmVy
KGNvbnN0IElucHV0TnVtYmVyJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGVjaW1hbChj
b25zdCBEZWNpbWFsJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3Ry
aW5nJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgSW5wdXROdW1iZXIgZGVmYXVsdFZhbHVlRm9yU3Rl
cFVwKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZv
clN0ZXBVcCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFdoZWVs
RXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3QgSW5w
dXROdW1iZXImKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUo
Y29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlh
bGl6ZVdpdGhNaWxsaXNlY29uZHMoZG91YmxlKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBs
b2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
U3RyaW5nIHZpc2libGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZUlucHV0VHlwZS5jcHAKaW5kZXggMTA0NDQ3ZWE1YTY2YWMxZTYwYTgwYjMxMzljNWQ1Y2Y3NDI4
YmFmYS4uZjVkMWEwMjkzYjlkMjJiOGQ4ZDgxZjZjYjQ4OWNiYjk0YmE5ODNhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCkBAIC03MywxMCArNzMsMTAgQEAgU3RlcFJhbmdl
IERhdGVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhh
bmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdl
OjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKGRhdGVEZWZhdWx0U3RlcCwgZGF0
ZURlZmF1bHRTdGVwQmFzZSwgZGF0ZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpQYXJzZWRT
dGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKIAotICAgIGNvbnN0IElucHV0TnVtYmVyIHN0ZXBC
YXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciks
IDApOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgY29udmVydERvdWJsZVRvSW5wdXROdW1i
ZXIoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlKCkpKTsKLSAgICBjb25zdCBJbnB1dE51bWJl
ciBtYXhpbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4
QXR0ciksIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKERhdGVDb21wb25lbnRzOjptYXhpbXVt
RGF0ZSgpKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VT
dGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOworICAgIGNv
bnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0
cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRzOjptaW5p
bXVtRGF0ZSgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb051bWJlcihl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUo
RGF0ZUNvbXBvbmVudHM6Om1heGltdW1EYXRlKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXAg
PSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwg
ZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0ZXBS
YW5nZShzdGVwQmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9uKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmNwcAppbmRleCBjZDNj
YTc5NzI1MGFlZDE0ZGM2OTVjNDYyNmJjMmVhYTI2ZDJiOTZhLi43OGE5MTg0ZjY1MTMyODBhMTlj
NTQ1NTJlMDc3ZjhjYmRmM2NiOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Rh
dGVUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5w
dXRUeXBlLmNwcApAQCAtNjIsMTkgKzYyLDE5IEBAIERhdGVDb21wb25lbnRzOjpUeXBlIERhdGVU
aW1lSW5wdXRUeXBlOjpkYXRlVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIERhdGVDb21wb25lbnRz
OjpEYXRlVGltZTsKIH0KIAotSW5wdXROdW1iZXIgRGF0ZVRpbWVJbnB1dFR5cGU6OmRlZmF1bHRW
YWx1ZUZvclN0ZXBVcCgpIGNvbnN0CitEZWNpbWFsIERhdGVUaW1lSW5wdXRUeXBlOjpkZWZhdWx0
VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogewotICAgIHJldHVybiBjb252ZXJ0RG91YmxlVG9JbnB1
dE51bWJlcihjdXJyZW50VGltZU1TKCkpOworICAgIHJldHVybiBEZWNpbWFsOjpmcm9tRG91Ymxl
KGN1cnJlbnRUaW1lTVMoKSk7CiB9CiAKIFN0ZXBSYW5nZSBEYXRlVGltZUlucHV0VHlwZTo6Y3Jl
YXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwg
c3RlcERlc2NyaXB0aW9uLCAoZGF0ZVRpbWVEZWZhdWx0U3RlcCwgZGF0ZVRpbWVEZWZhdWx0U3Rl
cEJhc2UsIGRhdGVUaW1lU3RlcFNjYWxlRmFjdG9yLCBTdGVwUmFuZ2U6OlNjYWxlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcikpOwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcEJhc2UgPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgMCk7Ci0g
ICAgY29uc3QgSW5wdXROdW1iZXIgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihEYXRl
Q29tcG9uZW50czo6bWluaW11bURhdGVUaW1lKCkpKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBt
YXhpbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0
ciksIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKERhdGVDb21wb25lbnRzOjptYXhpbXVtRGF0
ZVRpbWUoKSkpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNl
U3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0
QXR0cmlidXRlKHN0ZXBBdHRyKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNl
VG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAwKTsKKyAgICBj
b25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShtaW5BdHRyKSwgRGVjaW1hbDo6ZnJvbURvdWJsZShEYXRlQ29tcG9uZW50czo6bWlu
aW11bURhdGVUaW1lKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvTnVt
YmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGVjaW1hbDo6ZnJvbURv
dWJsZShEYXRlQ29tcG9uZW50czo6bWF4aW11bURhdGVUaW1lKCkpKTsKKyAgICBjb25zdCBEZWNp
bWFsIHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNj
cmlwdGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0
dXJuIFN0ZXBSYW5nZShzdGVwQmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2Ny
aXB0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUlucHV0VHlwZS5oCmluZGV4
IGQ4N2JmYTVkNDdhZGZiNzgyYWZhMDhjZDQwMDRjNmIxZTNkNjUxZDIuLmQxZjRhNzhhYTFlYjU1
NzYzN2NmMDFlZDNiMjU2ZjFmMmU2MmM5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0ZVRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1l
SW5wdXRUeXBlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgSW5wdXROdW1iZXIgZGVmYXVsdFZhbHVlRm9yU3RlcFVw
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0
ZXBVcCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBv
bmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVu
dHMqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0Rh
dGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNEYXRlVGltZUZpZWxkKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcAppbmRleCAxNjRhYjA0
MTA1YTBhZGMyZjBkY2IxZDUzNGVhYTM4ZTRiMTRiZWNiLi4zOGU0NDlmYmE0MmI5MWRmZjU0NDIx
YTcxNmMyMjRmZTA1NTlmYjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lTG9jYWxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVM
b2NhbElucHV0VHlwZS5jcHAKQEAgLTc3LDEwICs3NywxMCBAQCBTdGVwUmFuZ2UgRGF0ZVRpbWVM
b2NhbElucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFu
ZGxpbgogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVz
Y3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKGRhdGVUaW1lTG9jYWxEZWZhdWx0U3RlcCwgZGF0
ZVRpbWVMb2NhbERlZmF1bHRTdGVwQmFzZSwgZGF0ZVRpbWVMb2NhbFN0ZXBTY2FsZUZhY3Rvciwg
U3RlcFJhbmdlOjpTY2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKIAotICAgIGNvbnN0
IElucHV0TnVtYmVyIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0ciksIDApOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1pbmltdW0gPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgY29udmVy
dERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlVGltZSgpKSk7
Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWF4aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihE
YXRlQ29tcG9uZW50czo6bWF4aW11bURhdGVUaW1lKCkpKTsKLSAgICBjb25zdCBJbnB1dE51bWJl
ciBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3Jp
cHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0
IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShtaW5BdHRyKSwgMCk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051
bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21E
b3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1EYXRlVGltZSgpKSk7CisgICAgY29uc3QgRGVj
aW1hbCBtYXhpbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUo
bWF4QXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1heGltdW1EYXRl
VGltZSgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAo
YW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJp
YnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0s
IG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGVkNWIwYzYzZTJiYTAxZGM4NDMyZGZhNGUzMDQw
OWQ3N2Y4M2MwMDkuLmUwMDE1MDNkMTcyODNlMDdhMTdkNjU2YzY2MDFhMTIyZjNmZTMyODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMjc0LDcgKzI3NCw3
IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKCkgY29uc3QKICAgICByZXR1
cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnN0ZXBNaXNtYXRjaCh2YWx1ZSgpKTsK
IH0KIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKElucHV0TnVt
YmVyKiBzdGVwKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVT
dGVwKERlY2ltYWwqIHN0ZXApIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5nZXRB
bGxvd2VkVmFsdWVTdGVwKHN0ZXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaAppbmRleCA4ODJkY2RkMmIwOGU2YjdkM2MxM2QzZTAzODE3YWRiN2MxNzJmYTdiLi4wNWQ1
MDg0OTM0NzE5Yjc1NjBlNWNlYzA4OGRlM2JmMDgyMDU3ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgZG91Ymxl
IG1heGltdW0oKSBjb25zdDsKICAgICAvLyBTZXRzIHRoZSAiYWxsb3dlZCB2YWx1ZSBzdGVwIiBk
ZWZpbmVkIGluIHRoZSBIVE1MIHNwZWMgdG8gdGhlIHNwZWNpZmllZCBkb3VibGUgcG9pbnRlci4K
ICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAu
IgotICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChJbnB1dE51bWJlciopIGNvbnN0OworICAg
IGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChEZWNpbWFsKikgY29uc3Q7CiAgICAgU3RlcFJhbmdl
IGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0OwogCiAgICAgLy8gSW1wbGVt
ZW50YXRpb25zIG9mIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBVcCgpIGFuZCBzdGVwRG93bigpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGE3MmMxNzQ3YjU2OWMwNDA3ZDI4YWFjMjVl
M2M5OWM0NTM0NDljZWQuLmRmYzUwZTAwYmQ4YWIwZDI3YWYzYzU5ZmI0NGE1MWYxMjA2ODg3OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTIxMiwxMCArMjEyLDEwIEBAIGRvdWJs
ZSBJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUoKSBjb25zdAogCiB2b2lkIElucHV0VHlwZTo6c2V0
VmFsdWVBc0RvdWJsZShkb3VibGUgZG91YmxlVmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3Ig
ZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0gICAgc2V0VmFsdWVB
c0lucHV0TnVtYmVyKGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKGRvdWJsZVZhbHVlKSwgZXZl
bnRCZWhhdmlvciwgZWMpOworICAgIHNldFZhbHVlQXNEZWNpbWFsKERlY2ltYWw6OmZyb21Eb3Vi
bGUoZG91YmxlVmFsdWUpLCBldmVudEJlaGF2aW9yLCBlYyk7CiB9CiAKLXZvaWQgSW5wdXRUeXBl
OjpzZXRWYWx1ZUFzSW5wdXROdW1iZXIoY29uc3QgSW5wdXROdW1iZXImLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK3ZvaWQgSW5wdXRUeXBlOjpzZXRW
YWx1ZUFzRGVjaW1hbChjb25zdCBEZWNpbWFsJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKIH0K
QEAgLTI1Niw3ICsyNTYsNyBAQCBib29sIElucHV0VHlwZTo6cmFuZ2VVbmRlcmZsb3coY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGNvbnN0IElucHV0TnVtYmVyIG51bWVyaWNWYWx1ZSA9IHBhcnNl
VG9OdW1iZXJPck5hTih2YWx1ZSk7CisgICAgY29uc3QgRGVjaW1hbCBudW1lcmljVmFsdWUgPSBw
YXJzZVRvTnVtYmVyT3JOYU4odmFsdWUpOwogICAgIGlmICghbnVtZXJpY1ZhbHVlLmlzRmluaXRl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjY4LDI2ICsyNjgsMjYgQEAgYm9vbCBJ
bnB1dFR5cGU6OnJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAgICBp
ZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IElu
cHV0TnVtYmVyIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9OdW1iZXJPck5hTih2YWx1ZSk7CisgICAg
Y29uc3QgRGVjaW1hbCBudW1lcmljVmFsdWUgPSBwYXJzZVRvTnVtYmVyT3JOYU4odmFsdWUpOwog
ICAgIGlmICghbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJldHVybiBudW1lcmljVmFsdWUgPiBjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5t
YXhpbXVtKCk7CiB9CiAKLUlucHV0TnVtYmVyIElucHV0VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3Rl
cFVwKCkgY29uc3QKK0RlY2ltYWwgSW5wdXRUeXBlOjpkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBj
b25zdAogewogICAgIHJldHVybiAwOwogfQogCiBkb3VibGUgSW5wdXRUeXBlOjptaW5pbXVtKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29udmVydElucHV0TnVtYmVyVG9Eb3VibGUoY3JlYXRlU3Rl
cFJhbmdlKFJlamVjdEFueSkubWluaW11bSgpKTsKKyAgICByZXR1cm4gY3JlYXRlU3RlcFJhbmdl
KFJlamVjdEFueSkubWluaW11bSgpLnRvRG91YmxlKCk7CiB9CiAKIGRvdWJsZSBJbnB1dFR5cGU6
Om1heGltdW0oKSBjb25zdAogewotICAgIHJldHVybiBjb252ZXJ0SW5wdXROdW1iZXJUb0RvdWJs
ZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5tYXhpbXVtKCkpOworICAgIHJldHVybiBjcmVh
dGVTdGVwUmFuZ2UoUmVqZWN0QW55KS5tYXhpbXVtKCkudG9Eb3VibGUoKTsKIH0KIAogYm9vbCBJ
bnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQsIGludCYgcHJlZmVycmVk
U2l6ZSkgY29uc3QKQEAgLTMwMSw3ICszMDEsNyBAQCBib29sIElucHV0VHlwZTo6aXNJblJhbmdl
KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBudW1lcmljVmFsdWUg
PSBwYXJzZVRvTnVtYmVyT3JOYU4odmFsdWUpOworICAgIGNvbnN0IERlY2ltYWwgbnVtZXJpY1Zh
bHVlID0gcGFyc2VUb051bWJlck9yTmFOKHZhbHVlKTsKICAgICBpZiAoIW51bWVyaWNWYWx1ZS5p
c0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMzE0LDcgKzMxNCw3IEBAIGJv
b2wgSW5wdXRUeXBlOjppc091dE9mUmFuZ2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKICAg
ICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0
IElucHV0TnVtYmVyIG51bWVyaWNWYWx1ZSA9IHBhcnNlVG9OdW1iZXJPck5hTih2YWx1ZSk7Cisg
ICAgY29uc3QgRGVjaW1hbCBudW1lcmljVmFsdWUgPSBwYXJzZVRvTnVtYmVyT3JOYU4odmFsdWUp
OwogICAgIGlmICghbnVtZXJpY1ZhbHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCkBAIC0zMjcsNyArMzI3LDcgQEAgYm9vbCBJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25z
dCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFibGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgbnVtZXJpY1ZhbHVlID0gcGFy
c2VUb051bWJlck9yTmFOKHZhbHVlKTsKKyAgICBjb25zdCBEZWNpbWFsIG51bWVyaWNWYWx1ZSA9
IHBhcnNlVG9OdW1iZXJPck5hTih2YWx1ZSk7CiAgICAgaWYgKCFudW1lcmljVmFsdWUuaXNGaW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNjUsNyArMzY1LDcgQEAgU3RyaW5n
IElucHV0VHlwZTo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAogICAgIGlmICghaXNTdGVwcGFi
bGUoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBjb25zdCBJbnB1dE51
bWJlciBudW1lcmljVmFsdWUgPSBwYXJzZVRvTnVtYmVyT3JOYU4odmFsdWUpOworICAgIGNvbnN0
IERlY2ltYWwgbnVtZXJpY1ZhbHVlID0gcGFyc2VUb051bWJlck9yTmFOKHZhbHVlKTsKICAgICBp
ZiAoIW51bWVyaWNWYWx1ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIApAQCAtNDU4LDEzICs0NTgsMTMgQEAgdm9pZCBJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dT
dWJ0cmVlKCkKICAgICB9CiB9CiAKLUlucHV0TnVtYmVyIElucHV0VHlwZTo6cGFyc2VUb051bWJl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBJbnB1dE51bWJlciYgZGVmYXVsdFZhbHVlKSBjb25zdAor
RGVjaW1hbCBJbnB1dFR5cGU6OnBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgRGVj
aW1hbCYgZGVmYXVsdFZhbHVlKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiB9CiAKLUlucHV0TnVtYmVyIElucHV0VHlwZTo6cGFy
c2VUb051bWJlck9yTmFOKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdAorRGVjaW1hbCBJbnB1
dFR5cGU6OnBhcnNlVG9OdW1iZXJPck5hTihjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QKIHsK
ICAgICByZXR1cm4gcGFyc2VUb051bWJlcihzdHJpbmcsIERlY2ltYWw6Om5hbigpKTsKIH0KQEAg
LTQ3NSw3ICs0NzUsNyBAQCBib29sIElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNv
bnN0IFN0cmluZyYsIERhdGVDb21wb25lbnRzKikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVN0cmluZyBJbnB1dFR5cGU6OnNlcmlhbGl6ZShjb25zdCBJbnB1dE51bWJlciYpIGNvbnN0
CitTdHJpbmcgSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtODgwLDE4
ICs4ODAsMTggQEAgdm9pZCBJbnB1dFR5cGU6OmFwcGx5U3RlcChpbnQgY291bnQsIEFueVN0ZXBI
YW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIFRleHRGaWVsZEUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGNvbnN0IElucHV0TnVtYmVyIGN1cnJlbnQgPSBwYXJzZVRvTnVtYmVyT3JOYU4o
ZWxlbWVudCgpLT52YWx1ZSgpKTsKKyAgICBjb25zdCBEZWNpbWFsIGN1cnJlbnQgPSBwYXJzZVRv
TnVtYmVyT3JOYU4oZWxlbWVudCgpLT52YWx1ZSgpKTsKICAgICBpZiAoIWN1cnJlbnQuaXNGaW5p
dGUoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIElucHV0TnVtYmVyIG5ld1ZhbHVlID0gY3VycmVudCArIHN0ZXBSYW5nZS5z
dGVwKCkgKiBjb3VudDsKKyAgICBEZWNpbWFsIG5ld1ZhbHVlID0gY3VycmVudCArIHN0ZXBSYW5n
ZS5zdGVwKCkgKiBjb3VudDsKICAgICBpZiAoIW5ld1ZhbHVlLmlzRmluaXRlKCkpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGNvbnN0IElucHV0TnVtYmVyIGFjY2VwdGFibGVFcnJvclZhbHVlID0gc3RlcFJhbmdlLmFjY2Vw
dGFibGVFcnJvcigpOworICAgIGNvbnN0IERlY2ltYWwgYWNjZXB0YWJsZUVycm9yVmFsdWUgPSBz
dGVwUmFuZ2UuYWNjZXB0YWJsZUVycm9yKCk7CiAgICAgaWYgKG5ld1ZhbHVlIC0gc3RlcFJhbmdl
Lm1pbmltdW0oKSA8IC1hY2NlcHRhYmxlRXJyb3JWYWx1ZSkgewogICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CkBAIC05MTAsMTMgKzkxMCwxMyBAQCB2b2lk
IElucHV0VHlwZTo6YXBwbHlTdGVwKGludCBjb3VudCwgQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBI
YW5kbGluZywgVGV4dEZpZWxkRQogICAgIGlmIChuZXdWYWx1ZSA+IHN0ZXBSYW5nZS5tYXhpbXVt
KCkpCiAgICAgICAgIG5ld1ZhbHVlID0gc3RlcFJhbmdlLm1heGltdW0oKTsKIAotICAgIHNldFZh
bHVlQXNJbnB1dE51bWJlcihuZXdWYWx1ZSwgZXZlbnRCZWhhdmlvciwgZWMpOworICAgIHNldFZh
bHVlQXNEZWNpbWFsKG5ld1ZhbHVlLCBldmVudEJlaGF2aW9yLCBlYyk7CiAKICAgICBpZiAoQVhP
YmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKICAgICAgICAgIGVsZW1lbnQoKS0+
ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQoKS0+
cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOwogfQogCi1i
b29sIElucHV0VHlwZTo6Z2V0QWxsb3dlZFZhbHVlU3RlcChJbnB1dE51bWJlciogc3RlcCkgY29u
c3QKK2Jvb2wgSW5wdXRUeXBlOjpnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqIHN0ZXApIGNv
bnN0CiB7CiAgICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55
KSk7CiAgICAgKnN0ZXAgPSBzdGVwUmFuZ2Uuc3RlcCgpOwpAQCAtOTg5LDcgKzk4OSw3IEBAIHZv
aWQgSW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIoaW50IG4pCiAgICAgaWYgKCFzdGVwUmFu
Z2UuaGFzU3RlcCgpKQogICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgc3Rl
cCA9IHN0ZXBSYW5nZS5zdGVwKCk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gc3RlcFJhbmdl
LnN0ZXAoKTsKIAogICAgIGludCBzaWduOwogICAgIGlmIChzdGVwID4gMCkKQEAgLTEwMDAsMjAg
KzEwMDAsMjAgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKICAg
ICAgICAgc2lnbiA9IDA7CiAKICAgICBTdHJpbmcgY3VycmVudFN0cmluZ1ZhbHVlID0gZWxlbWVu
dCgpLT52YWx1ZSgpOwotICAgIElucHV0TnVtYmVyIGN1cnJlbnQgPSBwYXJzZVRvTnVtYmVyT3JO
YU4oY3VycmVudFN0cmluZ1ZhbHVlKTsKKyAgICBEZWNpbWFsIGN1cnJlbnQgPSBwYXJzZVRvTnVt
YmVyT3JOYU4oY3VycmVudFN0cmluZ1ZhbHVlKTsKICAgICBpZiAoIWN1cnJlbnQuaXNGaW5pdGUo
KSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBjdXJyZW50ID0gZGVmYXVs
dFZhbHVlRm9yU3RlcFVwKCk7Ci0gICAgICAgIGNvbnN0IElucHV0TnVtYmVyIG5leHREaWZmID0g
c3RlcCAqIG47CisgICAgICAgIGNvbnN0IERlY2ltYWwgbmV4dERpZmYgPSBzdGVwICogbjsKICAg
ICAgICAgaWYgKGN1cnJlbnQgPCBzdGVwUmFuZ2UubWluaW11bSgpIC0gbmV4dERpZmYpCiAgICAg
ICAgICAgICBjdXJyZW50ID0gc3RlcFJhbmdlLm1pbmltdW0oKSAtIG5leHREaWZmOwogICAgICAg
ICBpZiAoY3VycmVudCA+IHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBuZXh0RGlmZikKICAgICAgICAg
ICAgIGN1cnJlbnQgPSBzdGVwUmFuZ2UubWF4aW11bSgpIC0gbmV4dERpZmY7Ci0gICAgICAgIHNl
dFZhbHVlQXNJbnB1dE51bWJlcihjdXJyZW50LCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQs
IGVjKTsKKyAgICAgICAgc2V0VmFsdWVBc0RlY2ltYWwoY3VycmVudCwgRGlzcGF0Y2hJbnB1dEFu
ZENoYW5nZUV2ZW50LCBlYyk7CiAgICAgfQogICAgIGlmICgoc2lnbiA+IDAgJiYgY3VycmVudCA8
IHN0ZXBSYW5nZS5taW5pbXVtKCkpIHx8IChzaWduIDwgMCAmJiBjdXJyZW50ID4gc3RlcFJhbmdl
Lm1heGltdW0oKSkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgc2V0VmFs
dWVBc0lucHV0TnVtYmVyKHNpZ24gPiAwID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0ZXBSYW5n
ZS5tYXhpbXVtKCksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCwgZWMpOworICAgICAgICBz
ZXRWYWx1ZUFzRGVjaW1hbChzaWduID4gMCA/IHN0ZXBSYW5nZS5taW5pbXVtKCkgOiBzdGVwUmFu
Z2UubWF4aW11bSgpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQsIGVjKTsKICAgICB9IGVs
c2UgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBpZiAoc3RlcE1pc21hdGNo
KGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKQEAgLTEwMzIsNyArMTAzMiw3IEBAIHZvaWQgSW5wdXRU
eXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIoaW50IG4pCiAgICAgICAgICAgICBpZiAobmV3VmFsdWUg
PiBzdGVwUmFuZ2UubWF4aW11bSgpKQogICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gc3RlcFJh
bmdlLm1heGltdW0oKTsKIAotICAgICAgICAgICAgc2V0VmFsdWVBc0lucHV0TnVtYmVyKG5ld1Zh
bHVlLCBuID09IDEgfHwgbiA9PSAtMSA/IERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCA6IERp
c3BhdGNoTm9FdmVudCwgZWMpOworICAgICAgICAgICAgc2V0VmFsdWVBc0RlY2ltYWwobmV3VmFs
dWUsIG4gPT0gMSB8fCBuID09IC0xID8gRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50IDogRGlz
cGF0Y2hOb0V2ZW50LCBlYyk7CiAgICAgICAgICAgICBpZiAobiA+IDEpCiAgICAgICAgICAgICAg
ICAgYXBwbHlTdGVwKG4gLSAxLCBBbnlJc0RlZmF1bHRTdGVwLCBEaXNwYXRjaElucHV0QW5kQ2hh
bmdlRXZlbnQsIGVjKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG4gPCAtMSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5oCmluZGV4IGJlMjVkNDlmMzRjOTdlYmNiZjVlYmNmOWE3OTU4YjFlYWQ3MGI0Mjgu
LjM4NjA1MWZhY2I3MTBhNmI1NmJkYjdhOGYwYTU5OTdjNjM1MWIyMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWVBc0RhdGUoZG91YmxlLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgdmlydHVh
bCBkb3VibGUgdmFsdWVBc0RvdWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1
ZUFzRG91YmxlKGRvdWJsZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzSW5wdXROdW1iZXIoY29uc3QgSW5w
dXROdW1iZXImLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmLCBUZXh0
RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICAvLyBWYWxp
ZGF0aW9uIGZ1bmN0aW9ucwogICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkg
Y29uc3Q7CkBAIC0xNTcsMTIgKzE1NywxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCByYW5nZU92ZXJm
bG93KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgaXNJblJhbmdlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogICAgIGJvb2wgaXNPdXRPZlJhbmdlKGNvbnN0IFN0cmluZyYpIGNvbnN0Owot
ICAgIHZpcnR1YWwgSW5wdXROdW1iZXIgZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0OwogICAgIGRv
dWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgZG91YmxlIG1heGltdW0oKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwg
aW50JiBwcmVmZXJyZWRTaXplKSBjb25zdDsKICAgICBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBT
dHJpbmcmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChJbnB1
dE51bWJlciopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKERl
Y2ltYWwqKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55
U3RlcEhhbmRsaW5nKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcFVwKGludCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwVXBGcm9tUmVuZGVyZXIoaW50KTsKQEAg
LTI2MywxMCArMjYzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBkZWZhdWx0VG9v
bFRpcCgpIGNvbnN0OwogCiAgICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciB0
aGUgdHlwZSwgYW5kIHJldHVybgotICAgIC8vIHRoZSBJbnB1dE51bWJlciB2YWx1ZSBmb3IgdGhl
IHBhcnNpbmcgcmVzdWx0IGlmIHRoZSBwYXJzaW5nCisgICAgLy8gdGhlIERlY2ltYWwgdmFsdWUg
Zm9yIHRoZSBwYXJzaW5nIHJlc3VsdCBpZiB0aGUgcGFyc2luZwogICAgIC8vIHN1Y2NlZWRzOyBS
ZXR1cm5zIGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuIFRoaXMgZnVuY3Rpb24gY2FuCiAgICAgLy8g
cmV0dXJuIE5hTiBvciBJbmZpbml0eSBvbmx5IGlmIGRlZmF1bHRWYWx1ZSBpcyBOYU4gb3IgSW5m
aW5pdHkuCi0gICAgdmlydHVhbCBJbnB1dE51bWJlciBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IElucHV0TnVtYmVyJiBkZWZhdWx0VmFsdWUpIGNvbnN0OworICAgIHZpcnR1YWwg
RGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmIGRlZmF1
bHRWYWx1ZSkgY29uc3Q7CiAKICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9y
IHRoaXMgSW5wdXRUeXBlLCBhbmQgcmV0dXJucyB0cnVlIGlmIGl0CiAgICAgLy8gaXMgc3VjY2Vz
c2Z1bGx5IHBhcnNlZC4gQW4gaW5zdGFuY2UgcG9pbnRlZCBieSB0aGUgRGF0ZUNvbXBvbmVudHMq
CkBAIC0yNzQsMTAgKzI3NCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gZmFpbHMuIFRoZSBEYXRlQ29t
cG9uZW50cyogcGFyYW1ldGVyIG1heSBiZSAwLgogICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0
ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdDsKIAotICAg
IC8vIENyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIElucHV0
TnVtYmVyIHZhbHVlIGZvciB0aGUKKyAgICAvLyBDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRp
b24gb2YgdGhlIHNwZWNpZmllZCBEZWNpbWFsIHZhbHVlIGZvciB0aGUKICAgICAvLyBpbnB1dCB0
eXBlLiBJZiBOYU4gb3IgSW5maW5pdHkgaXMgc3BlY2lmaWVkLCB0aGlzIHJldHVybnMgYW4gZW1w
dHkKICAgICAvLyBzdHJpbmcuIFRoaXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIHR5cGVzIHdp
dGhvdXQgdmFsdWVBc051bWJlci4KLSAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3Qg
SW5wdXROdW1iZXImKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoY29uc3Qg
RGVjaW1hbCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5kZXRlcm1pbmF0
ZUFwcGVhcmFuY2UoKSBjb25zdDsKIApAQCAtMjkxLDcgKzI5MSw3IEBAIHByb3RlY3RlZDoKICAg
ICBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9
CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCop
IGNvbnN0OwogICAgIENocm9tZSogY2hyb21lKCkgY29uc3Q7Ci0gICAgSW5wdXROdW1iZXIgcGFy
c2VUb051bWJlck9yTmFOKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIERlY2ltYWwgcGFyc2VU
b051bWJlck9yTmFOKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIC8vIEhl
bHBlciBmb3Igc3RlcFVwKCkvc3RlcERvd24oKS4gQWRkcyBzdGVwIHZhbHVlICogY291bnQgdG8g
dGhlIGN1cnJlbnQgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRo
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwCmlu
ZGV4IGExMWE3MzUxYmU5ZjdmYTc1ZGQyZjk4YjEwZmE5YjQ3MWNjZmQ4YzMuLmM5YmViYjEzNTZl
MjhkNTlhZDJmZmYwNGZkYTIxMmIzYzYwYTg0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJ
bnB1dFR5cGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFN0cmluZyBNb250aElucHV0VHlwZTo6c2Vy
aWFsaXplV2l0aE1pbGxpc2Vjb25kcyhkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHNl
cmlhbGl6ZVdpdGhDb21wb25lbnRzKGRhdGUpOwogfQogCi1JbnB1dE51bWJlciBNb250aElucHV0
VHlwZTo6ZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCkgY29uc3QKK0RlY2ltYWwgTW9udGhJbnB1dFR5
cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiB7CiAgICAgZG91YmxlIGN1cnJlbnQg
PSBjdXJyZW50VGltZU1TKCk7CiAgICAgZG91YmxlIHV0Y09mZnNldCA9IGNhbGN1bGF0ZVVUQ09m
ZnNldCgpOwpAQCAtOTQsMjggKzk0LDI4IEBAIElucHV0TnVtYmVyIE1vbnRoSW5wdXRUeXBlOjpk
ZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdAogICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2lu
Y2VFcG9jaEZvck1vbnRoKGN1cnJlbnQpOwogICAgIGRvdWJsZSBtb250aHMgPSBkYXRlLm1vbnRo
c1NpbmNlRXBvY2goKTsKICAgICBBU1NFUlQoaXNmaW5pdGUobW9udGhzKSk7Ci0gICAgcmV0dXJu
IGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKG1vbnRocyk7CisgICAgcmV0dXJuIERlY2ltYWw6
OmZyb21Eb3VibGUobW9udGhzKTsKIH0KIAogU3RlcFJhbmdlIE1vbnRoSW5wdXRUeXBlOjpjcmVh
dGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZykgY29uc3QKIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0ZXBSYW5nZTo6U3RlcERlc2NyaXB0aW9uLCBz
dGVwRGVzY3JpcHRpb24sIChtb250aERlZmF1bHRTdGVwLCBtb250aERlZmF1bHRTdGVwQmFzZSwg
bW9udGhTdGVwU2NhbGVGYWN0b3IsIFN0ZXBSYW5nZTo6UGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJ
bnRlZ2VyKSk7CiAKLSAgICBjb25zdCBJbnB1dE51bWJlciBzdGVwQmFzZSA9IHBhcnNlVG9OdW1i
ZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBjb252ZXJ0RG91YmxlVG9J
bnB1dE51bWJlcihEYXRlQ29tcG9uZW50czo6bWluaW11bU1vbnRoKCkpKTsKLSAgICBjb25zdCBJ
bnB1dE51bWJlciBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUobWluQXR0ciksIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKERhdGVDb21wb25lbnRz
OjptaW5pbXVtTW9udGgoKSkpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1heGltdW0gPSBwYXJz
ZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgY29udmVydERv
dWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6Om1heGltdW1Nb250aCgpKSk7Ci0gICAg
Y29uc3QgSW5wdXROdW1iZXIgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5k
bGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0
dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50
KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNv
bXBvbmVudHM6Om1pbmltdW1Nb250aCgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0g
cGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2lt
YWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1Nb250aCgpKSk7CisgICAgY29u
c3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUobWF4QXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6Om1heGlt
dW1Nb250aCgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0
ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0
dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmlt
dW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKLUlucHV0TnVtYmVyIE1v
bnRoSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBJbnB1
dE51bWJlciYgZGVmYXVsdFZhbHVlKSBjb25zdAorRGVjaW1hbCBNb250aElucHV0VHlwZTo6cGFy
c2VUb051bWJlcihjb25zdCBTdHJpbmcmIHNyYywgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZhbHVl
KSBjb25zdAogewogICAgIERhdGVDb21wb25lbnRzIGRhdGU7CiAgICAgaWYgKCFwYXJzZVRvRGF0
ZUNvbXBvbmVudHMoc3JjLCAmZGF0ZSkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiAg
ICAgZG91YmxlIG1vbnRocyA9IGRhdGUubW9udGhzU2luY2VFcG9jaCgpOwogICAgIEFTU0VSVChp
c2Zpbml0ZShtb250aHMpKTsKLSAgICByZXR1cm4gY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIo
bW9udGhzKTsKKyAgICByZXR1cm4gRGVjaW1hbDo6ZnJvbURvdWJsZShtb250aHMpOwogfQogCiBi
b29sIE1vbnRoSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyogb3V0KSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5oCmluZGV4IDJiZjM3Mjc3Y2I2Zjk4
YzFiZjlmNjRiMmYxNTQxNDY0NmI5ODYzOTcuLjhmMjRmYTc4NTI4MDE3NDcxYTBhMGE4MDM1OTE3
OWM4ODJhYjVkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmgKQEAgLTQ3LDgg
KzQ3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIERhdGVDb21wb25lbnRzOjpUeXBlIGRhdGVU
eXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBkb3VibGUgdmFsdWVBc0RhdGUoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNv
bmRzKGRvdWJsZSkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBwYXJz
ZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IElucHV0TnVtYmVyJikgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBJbnB1dE51bWJlciBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBEZWNpbWFs
IGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3Rl
cFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0
ZUNvbXBvbmVudHMqKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5w
dXRUeXBlLmNwcAppbmRleCAxZDZhNDc5MThlZjk5N2VkZjNkM2U0N2Y1NWFjNjQyNTRlN2MyNDQw
Li5lYjE1N2YxMGMyZDdmYzU1ZTc1NzMwNGQzOTZiYjdhZDg4ZWNmNDQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC0xMjQsMTAgKzEyNCwxMCBAQCB2b2lkIE51
bWJlcklucHV0VHlwZTo6c2V0VmFsdWVBc0RvdWJsZShkb3VibGUgbmV3VmFsdWUsIFRleHRGaWVs
ZEV2ZW50QmVoYXZpb3IgZQogICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFsaXplRm9yTnVt
YmVyVHlwZShuZXdWYWx1ZSksIGV2ZW50QmVoYXZpb3IpOwogfQogCi12b2lkIE51bWJlcklucHV0
VHlwZTo6c2V0VmFsdWVBc0lucHV0TnVtYmVyKGNvbnN0IElucHV0TnVtYmVyJiBuZXdWYWx1ZSwg
VGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKK3ZvaWQgTnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1ZUFzRGVjaW1hbChjb25zdCBEZWNp
bWFsJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNl
cHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXggZm9yIG51bWJlciBpbnB1dCB0eXBlLgotICAgIGNvbnN0
IElucHV0TnVtYmVyIGZsb2F0TWF4ID0gY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIobnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CisgICAgY29uc3QgRGVjaW1hbCBmbG9hdE1heCA9IERl
Y2ltYWw6OmZyb21Eb3VibGUobnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CiAgICAgaWYg
KG5ld1ZhbHVlIDwgLWZsb2F0TWF4KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CiAgICAgICAgIHJldHVybjsKQEAgLTE1MywxMiArMTUzLDEyIEBAIGJvb2wgTnVtYmVySW5wdXRU
eXBlOjp0eXBlTWlzbWF0Y2goKSBjb25zdAogU3RlcFJhbmdlIE51bWJlcklucHV0VHlwZTo6Y3Jl
YXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwg
c3RlcERlc2NyaXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFz
ZSwgbnVtYmVyU3RlcFNjYWxlRmFjdG9yKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcEJh
c2UgPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmli
dXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3RlcEJhc2UpOworICAgIGNvbnN0IERlY2ltYWwg
c3RlcEJhc2UgPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVudCgpLT5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBudW1iZXJEZWZhdWx0U3RlcEJhc2UpOwogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdXNlIG51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCBmb3IgbnVtYmVyIGlu
cHV0IHR5cGUuCi0gICAgY29uc3QgSW5wdXROdW1iZXIgZmxvYXRNYXggPSBjb252ZXJ0RG91Ymxl
VG9JbnB1dE51bWJlcihudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKLSAgICBjb25zdCBJ
bnB1dE51bWJlciBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRy
aWJ1dGUobWluQXR0ciksIC1mbG9hdE1heCk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgbWF4aW11
bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBm
bG9hdE1heCk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VT
dGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIGZsb2F0TWF4ID0gRGVjaW1h
bDo6ZnJvbURvdWJsZShudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKKyAgICBjb25zdCBE
ZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0
ZShtaW5BdHRyKSwgLWZsb2F0TWF4KTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJz
ZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgZmxvYXRNYXgp
OworICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBI
YW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3Rl
cEF0dHIpKTsKICAgICByZXR1cm4gU3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVt
LCBzdGVwLCBzdGVwRGVzY3JpcHRpb24pOwogfQogCkBAIC0yMDUsMTIgKzIwNSwxMiBAQCB2b2lk
IE51bWJlcklucHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudChXaGVlbEV2ZW50KiBldmVudCkKICAg
ICBoYW5kbGVXaGVlbEV2ZW50Rm9yU3BpbkJ1dHRvbihldmVudCk7CiB9CiAKLUlucHV0TnVtYmVy
IE51bWJlcklucHV0VHlwZTo6cGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmIHNyYywgY29uc3Qg
SW5wdXROdW1iZXImIGRlZmF1bHRWYWx1ZSkgY29uc3QKK0RlY2ltYWwgTnVtYmVySW5wdXRUeXBl
OjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0
VmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShz
cmMsIGRlZmF1bHRWYWx1ZSk7CiB9CiAKLVN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6
ZShjb25zdCBJbnB1dE51bWJlciYgdmFsdWUpIGNvbnN0CitTdHJpbmcgTnVtYmVySW5wdXRUeXBl
OjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYgdmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKCF2YWx1
ZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9O
dW1iZXJJbnB1dFR5cGUuaAppbmRleCBiY2VkYzk2MDk4ZTZlZjhmYTFmNDc0NmQwNjAyYTVjNjc3
NDhlNjYxLi5mZTE2ZTVmYTA5NDYwYzM2YjI4YTc2MWQwZWM5YjgyNWZkYTJhZjIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBkb3VibGUgdmFsdWVBc0RvdWJsZSgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRG91YmxlKGRvdWJsZSwgVGV4dEZpZWxk
RXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRWYWx1ZUFzSW5wdXROdW1iZXIoY29uc3QgSW5wdXROdW1iZXImLCBUZXh0Rmll
bGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQgZGVmYXVsdFNpemUsIGludCYgcHJl
ZmVycmVkU2l6ZSkgY29uc3QgT1ZFUlJJREU7CkBAIC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2Fy
ZEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoV2hl
ZWxFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgSW5wdXROdW1iZXIgcGFyc2VUb051bWJl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBJbnB1dE51bWJlciYpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBJbnB1dE51bWJlciYpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxp
emUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVCbHVyRXZlbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBsb2NhbGl6ZVZhbHVl
KGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIHZpc2li
bGVWYWx1ZSgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcAppbmRleCBmYjhiZTBlZWRlNmM4ZDZkMThiZmI3NmI2OTU0NDU5ZjQwYmJhMGYxLi5mZDEx
Y2JhYTc5NWM2MTg5YmJjYzEyYTQ4ZjliMjcxNWQ1MDEzYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgY29uc3QgaW50IHJh
bmdlRGVmYXVsdFN0ZXAgPSAxOwogc3RhdGljIGNvbnN0IGludCByYW5nZURlZmF1bHRTdGVwQmFz
ZSA9IDA7CiBzdGF0aWMgY29uc3QgaW50IHJhbmdlU3RlcFNjYWxlRmFjdG9yID0gMTsKIAotc3Rh
dGljIElucHV0TnVtYmVyIGVuc3VyZU1heGltdW0oY29uc3QgSW5wdXROdW1iZXImIHByb3Bvc2Vk
VmFsdWUsIGNvbnN0IElucHV0TnVtYmVyJiBtaW5pbXVtLCBjb25zdCBJbnB1dE51bWJlciYgZmFs
bGJhY2tWYWx1ZSkKK3N0YXRpYyBEZWNpbWFsIGVuc3VyZU1heGltdW0oY29uc3QgRGVjaW1hbCYg
cHJvcG9zZWRWYWx1ZSwgY29uc3QgRGVjaW1hbCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgZmFs
bGJhY2tWYWx1ZSkKIHsKICAgICByZXR1cm4gcHJvcG9zZWRWYWx1ZSA+PSBtaW5pbXVtID8gcHJv
cG9zZWRWYWx1ZSA6IHN0ZDo6bWF4KG1pbmltdW0sIGZhbGxiYWNrVmFsdWUpOwogfQpAQCAtODUs
NyArODUsNyBAQCBkb3VibGUgUmFuZ2VJbnB1dFR5cGU6OnZhbHVlQXNEb3VibGUoKSBjb25zdAog
ICAgIHJldHVybiBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPnZhbHVlKCkp
OwogfQogCi12b2lkIFJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZUFzSW5wdXROdW1iZXIoY29uc3Qg
SW5wdXROdW1iZXImIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZp
b3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdAordm9pZCBSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWVB
c0RlY2ltYWwoY29uc3QgRGVjaW1hbCYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3Ig
ZXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0CiB7CiAgICAgZWxlbWVudCgpLT5z
ZXRWYWx1ZShzZXJpYWxpemUobmV3VmFsdWUpLCBldmVudEJlaGF2aW9yKTsKIH0KQEAgLTk5LDE2
ICs5OSwxNiBAQCBTdGVwUmFuZ2UgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlT
dGVwSGFuZGxpbmcgYW55U3RlcEhhbmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgU3RlcFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwg
KHJhbmdlRGVmYXVsdFN0ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZh
Y3RvcikpOwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIo
ZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCByYW5nZURlZmF1bHRNaW5pbXVt
KTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBtYXhpbXVtID0gZW5zdXJlTWF4aW11bShwYXJzZVRv
TnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgcmFuZ2VEZWZhdWx0
TWF4aW11bSksIG1pbmltdW0sIHJhbmdlRGVmYXVsdE1heGltdW0pOworICAgIGNvbnN0IERlY2lt
YWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1p
bkF0dHIpLCByYW5nZURlZmF1bHRNaW5pbXVtKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0g
PSBlbnN1cmVNYXhpbXVtKHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KG1heEF0dHIpLCByYW5nZURlZmF1bHRNYXhpbXVtKSwgbWluaW11bSwgcmFuZ2VEZWZhdWx0TWF4
aW11bSk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHByZWNpc2lvblZhbHVlID0gZWxlbWVu
dCgpLT5mYXN0R2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIpOwogICAgIGlmICghcHJlY2lzaW9u
VmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcCA9IGVxdWFs
SWdub3JpbmdDYXNlKHByZWNpc2lvblZhbHVlLCAiZmxvYXQiKSA/IERlY2ltYWw6Om5hbigpIDog
MTsKKyAgICAgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gZXF1YWxJZ25vcmluZ0Nhc2UocHJlY2lz
aW9uVmFsdWUsICJmbG9hdCIpID8gRGVjaW1hbDo6bmFuKCkgOiAxOwogICAgICAgICByZXR1cm4g
U3RlcFJhbmdlKG1pbmltdW0sIG1pbmltdW0sIG1heGltdW0sIHN0ZXAsIHN0ZXBEZXNjcmlwdGlv
bik7CiAgICAgfQogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcCA9IFN0ZXBSYW5nZTo6cGFy
c2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBTdGVwUmFu
Z2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlwdGlvbiwgZWxlbWVudCgp
LT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJuIFN0ZXBSYW5nZShtaW5p
bXVtLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwRGVzY3JpcHRpb24pOwogfQogCkBAIC0x
NDEsNyArMTQxLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogCiAgICAgY29uc3QgU3RyaW5nJiBrZXkgPSBldmVudC0+a2V5
SWRlbnRpZmllcigpOwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgY3VycmVudCA9IHBhcnNlVG9O
dW1iZXJPck5hTihlbGVtZW50KCktPnZhbHVlKCkpOworICAgIGNvbnN0IERlY2ltYWwgY3VycmVu
dCA9IHBhcnNlVG9OdW1iZXJPck5hTihlbGVtZW50KCktPnZhbHVlKCkpOwogICAgIEFTU0VSVChj
dXJyZW50LmlzRmluaXRlKCkpOwogCiAgICAgU3RlcFJhbmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVw
UmFuZ2UoUmVqZWN0QW55KSk7CkBAIC0xNDksOCArMTQ5LDggQEAgdm9pZCBSYW5nZUlucHV0VHlw
ZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogCiAgICAgLy8gRklY
TUU6IFdlIGNhbid0IHVzZSBzdGVwVXAoKSBmb3IgdGhlIHN0ZXAgdmFsdWUgImFueSIuIFNvLCB3
ZSBpbmNyZWFzZQogICAgIC8vIG9yIGRlY3JlYXNlIHRoZSB2YWx1ZSBieSAxLzEwMCBvZiB0aGUg
dmFsdWUgcmFuZ2UuIElzIGl0IHJlYXNvbmFibGU/Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgc3Rl
cCA9IGVxdWFsSWdub3JpbmdDYXNlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0
ciksICJhbnkiKSA/IChzdGVwUmFuZ2UubWF4aW11bSgpIC0gc3RlcFJhbmdlLm1pbmltdW0oKSkg
LyAxMDAgOiBzdGVwUmFuZ2Uuc3RlcCgpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIGJpZ1N0ZXAg
PSBtYXgoKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11bSgpKSAvIDEwLCBz
dGVwKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXAgPSBlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50
KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpLCAiYW55IikgPyAoc3RlcFJhbmdlLm1heGlt
dW0oKSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkpIC8gMTAwIDogc3RlcFJhbmdlLnN0ZXAoKTsKKyAg
ICBjb25zdCBEZWNpbWFsIGJpZ1N0ZXAgPSBtYXgoKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVw
UmFuZ2UubWluaW11bSgpKSAvIDEwLCBzdGVwKTsKIAogICAgIGJvb2wgaXNWZXJ0aWNhbCA9IGZh
bHNlOwogICAgIGlmIChlbGVtZW50KCktPnJlbmRlcmVyKCkpIHsKQEAgLTE1OCw3ICsxNTgsNyBA
QCB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCog
ZXZlbnQpCiAgICAgICAgIGlzVmVydGljYWwgPSBwYXJ0ID09IFNsaWRlclZlcnRpY2FsUGFydCB8
fCBwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyUGFydDsKICAgICB9CiAKLSAgICBJbnB1dE51bWJl
ciBuZXdWYWx1ZTsKKyAgICBEZWNpbWFsIG5ld1ZhbHVlOwogICAgIGlmIChrZXkgPT0gIlVwIikK
ICAgICAgICAgbmV3VmFsdWUgPSBjdXJyZW50ICsgc3RlcDsKICAgICBlbHNlIGlmIChrZXkgPT0g
IkRvd24iKQpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtl
eWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBpZiAobmV3VmFsdWUgIT0gY3Vy
cmVudCkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgICAgICBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IgPSBEaXNwYXRjaENoYW5nZUV2ZW50OwotICAgICAgICBz
ZXRWYWx1ZUFzSW5wdXROdW1iZXIobmV3VmFsdWUsIGV2ZW50QmVoYXZpb3IsIGVjKTsKKyAgICAg
ICAgc2V0VmFsdWVBc0RlY2ltYWwobmV3VmFsdWUsIGV2ZW50QmVoYXZpb3IsIGVjKTsKIAogICAg
ICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKICAgICAgICAg
ICAgIGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0
aW9uKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQs
IHRydWUpOwpAQCAtMjEzLDEyICsyMTMsMTIgQEAgUmVuZGVyT2JqZWN0KiBSYW5nZUlucHV0VHlw
ZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGMKICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU2xpZGVyKGVsZW1lbnQoKSk7CiB9CiAKLUlucHV0
TnVtYmVyIFJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYgc3JjLCBj
b25zdCBJbnB1dE51bWJlciYgZGVmYXVsdFZhbHVlKSBjb25zdAorRGVjaW1hbCBSYW5nZUlucHV0
VHlwZTo6cGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmIHNyYywgY29uc3QgRGVjaW1hbCYgZGVm
YXVsdFZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5
cGUoc3JjLCBkZWZhdWx0VmFsdWUpOwogfQogCi1TdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OnNlcmlh
bGl6ZShjb25zdCBJbnB1dE51bWJlciYgdmFsdWUpIGNvbnN0CitTdHJpbmcgUmFuZ2VJbnB1dFR5
cGU6OnNlcmlhbGl6ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIXZh
bHVlLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI2Myw3ICsyNjMs
NyBAQCBTdHJpbmcgUmFuZ2VJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdAogU3RyaW5n
IFJhbmdlSW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1
ZSkgY29uc3QKIHsKICAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShSZWpl
Y3RBbnkpKTsKLSAgICBjb25zdCBJbnB1dE51bWJlciBwcm9wb3NlZE51bWVyaWNWYWx1ZSA9IHBh
cnNlVG9OdW1iZXIocHJvcG9zZWRWYWx1ZSwgc3RlcFJhbmdlLmRlZmF1bHRWYWx1ZSgpKTsKKyAg
ICBjb25zdCBEZWNpbWFsIHByb3Bvc2VkTnVtZXJpY1ZhbHVlID0gcGFyc2VUb051bWJlcihwcm9w
b3NlZFZhbHVlLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkpOwogICAgIHJldHVybiBzZXJpYWxp
emVGb3JOdW1iZXJUeXBlKHN0ZXBSYW5nZS5jbGFtcFZhbHVlKHByb3Bvc2VkTnVtZXJpY1ZhbHVl
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAppbmRleCAwYzhhMmE5MmRl
YzAwZmUyYTIyOTFhZGY4ZmVlNmZjNTUzNTlhNWQ5Li5mZjhmNDAyOGYyMDc1OWU4MWU3ZDY1M2E2
MzhkOTMxMjg3N2EwYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5w
dXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCkBAIC00
Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUmFuZ2VDb250cm9sKCkg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250
cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNEb3Vi
bGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0lucHV0TnVt
YmVyKGNvbnN0IElucHV0TnVtYmVyJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9u
Q29kZSYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGVjaW1h
bChjb25zdCBEZWNpbWFsJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0
ZXBIYW5kbGluZykgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU3RlcHBhYmxl
KCkgY29uc3QgT1ZFUlJJREU7CkBAIC01NCw4ICs1NCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3Vi
dHJlZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgSW5wdXROdW1iZXIgcGFyc2VUb051bWJlcihj
b25zdCBTdHJpbmcmLCBjb25zdCBJbnB1dE51bWJlciYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShjb25zdCBJbnB1dE51bWJlciYpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IERlY2ltYWwmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUo
Y29uc3QgRGVjaW1hbCYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NL
ZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50
QmVoYXZpb3IpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVw
UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuY3BwCmluZGV4IDk5Zjlk
ZTZiM2ZmNjA0ZjFhMmNhZDUyMzA1MjZiZDM0MTA1NGM0MGQuLmM3Yzg4ZmNmOTA1NjRjOTkzNmY0
NzYzMTg2YWQ5YjgzYzM1MjYyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3Rl
cFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgU3RlcFJhbmdlOjpTdGVwUmFuZ2UoY29uc3QgU3RlcFJhbmdlJiBzdGVwUmFu
Z2UpCiB7CiB9CiAKLVN0ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IElucHV0TnVtYmVyJiBzdGVw
QmFzZSwgY29uc3QgSW5wdXROdW1iZXImIG1pbmltdW0sIGNvbnN0IElucHV0TnVtYmVyJiBtYXhp
bXVtLCBjb25zdCBJbnB1dE51bWJlciYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVw
RGVzY3JpcHRpb24pCitTdGVwUmFuZ2U6OlN0ZXBSYW5nZShjb25zdCBEZWNpbWFsJiBzdGVwQmFz
ZSwgY29uc3QgRGVjaW1hbCYgbWluaW11bSwgY29uc3QgRGVjaW1hbCYgbWF4aW11bSwgY29uc3Qg
RGVjaW1hbCYgc3RlcCwgY29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3JpcHRpb24pCiAg
ICAgOiBtX21heGltdW0obWF4aW11bSkKICAgICAsIG1fbWluaW11bShtaW5pbXVtKQogICAgICwg
bV9zdGVwKHN0ZXAuaXNGaW5pdGUoKSA/IHN0ZXAgOiAxKQpAQCAtNjUsMTQgKzY1LDE0IEBAIFN0
ZXBSYW5nZTo6U3RlcFJhbmdlKGNvbnN0IElucHV0TnVtYmVyJiBzdGVwQmFzZSwgY29uc3QgSW5w
dXROdW1iZXImIG1pbmltdW0sIGNvCiAgICAgQVNTRVJUKG1fc3RlcEJhc2UuaXNGaW5pdGUoKSk7
CiB9CiAKLUlucHV0TnVtYmVyIFN0ZXBSYW5nZTo6YWNjZXB0YWJsZUVycm9yKCkgY29uc3QKK0Rl
Y2ltYWwgU3RlcFJhbmdlOjphY2NlcHRhYmxlRXJyb3IoKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgdXNlIERCTF9NQU5UX0RJRyBpbnN0ZWFkIG9mIEZMVF9NQU5UX0RJRyByZWdh
cmRpbmcgdG8gSFRNTDUgc3BlY2lmaWNhdGlvbi4KICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNv
bnN0IERlY2ltYWwsIHR3b1Bvd2VyT2ZGbG9hdE1hbnRpc3NhQml0cywgKERlY2ltYWw6OlBvc2l0
aXZlLCAwLCBVSU5UNjRfQygxKSA8PCBGTFRfTUFOVF9ESUcpKTsKICAgICByZXR1cm4gbV9zdGVw
IC8gdHdvUG93ZXJPZkZsb2F0TWFudGlzc2FCaXRzOwogfQogCi1JbnB1dE51bWJlciBTdGVwUmFu
Z2U6OmFsaWduVmFsdWVGb3JTdGVwKGNvbnN0IElucHV0TnVtYmVyJiBjdXJyZW50VmFsdWUsIGNv
bnN0IElucHV0TnVtYmVyJiBuZXdWYWx1ZSkgY29uc3QKK0RlY2ltYWwgU3RlcFJhbmdlOjphbGln
blZhbHVlRm9yU3RlcChjb25zdCBEZWNpbWFsJiBjdXJyZW50VmFsdWUsIGNvbnN0IERlY2ltYWwm
IG5ld1ZhbHVlKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgRGVjaW1h
bCwgdGVuUG93ZXJPZjIxLCAoRGVjaW1hbDo6UG9zaXRpdmUsIDIxLCAxKSk7CiAgICAgaWYgKG5l
d1ZhbHVlID49IHRlblBvd2VyT2YyMSkKQEAgLTgxLDIwICs4MSwyMCBAQCBJbnB1dE51bWJlciBT
dGVwUmFuZ2U6OmFsaWduVmFsdWVGb3JTdGVwKGNvbnN0IElucHV0TnVtYmVyJiBjdXJyZW50VmFs
dWUsIGNvbnN0CiAgICAgcmV0dXJuIHN0ZXBNaXNtYXRjaChjdXJyZW50VmFsdWUpID8gbmV3VmFs
dWUgOiByb3VuZEJ5U3RlcChuZXdWYWx1ZSwgbV9zdGVwQmFzZSk7CiB9CiAKLUlucHV0TnVtYmVy
IFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBJbnB1dE51bWJlciYgdmFsdWUpIGNvbnN0CitE
ZWNpbWFsIFN0ZXBSYW5nZTo6Y2xhbXBWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QK
IHsKLSAgICBjb25zdCBJbnB1dE51bWJlciBpblJhbmdlVmFsdWUgPSBtYXgobV9taW5pbXVtLCBt
aW4odmFsdWUsIG1fbWF4aW11bSkpOworICAgIGNvbnN0IERlY2ltYWwgaW5SYW5nZVZhbHVlID0g
bWF4KG1fbWluaW11bSwgbWluKHZhbHVlLCBtX21heGltdW0pKTsKICAgICBpZiAoIW1faGFzU3Rl
cCkKICAgICAgICAgcmV0dXJuIGluUmFuZ2VWYWx1ZTsKICAgICAvLyBSb3VuZHMgaW5SYW5nZVZh
bHVlIHRvIG1pbmltdW0gKyBOICogc3RlcC4KLSAgICBjb25zdCBJbnB1dE51bWJlciByb3VuZGVk
VmFsdWUgPSByb3VuZEJ5U3RlcChpblJhbmdlVmFsdWUsIG1fbWluaW11bSk7Ci0gICAgY29uc3Qg
SW5wdXROdW1iZXIgY2xhbXBlZFZhbHVlID0gcm91bmRlZFZhbHVlID4gbV9tYXhpbXVtID8gcm91
bmRlZFZhbHVlIC0gbV9zdGVwIDogcm91bmRlZFZhbHVlOworICAgIGNvbnN0IERlY2ltYWwgcm91
bmRlZFZhbHVlID0gcm91bmRCeVN0ZXAoaW5SYW5nZVZhbHVlLCBtX21pbmltdW0pOworICAgIGNv
bnN0IERlY2ltYWwgY2xhbXBlZFZhbHVlID0gcm91bmRlZFZhbHVlID4gbV9tYXhpbXVtID8gcm91
bmRlZFZhbHVlIC0gbV9zdGVwIDogcm91bmRlZFZhbHVlOwogICAgIEFTU0VSVChjbGFtcGVkVmFs
dWUgPj0gbV9taW5pbXVtKTsKICAgICBBU1NFUlQoY2xhbXBlZFZhbHVlIDw9IG1fbWF4aW11bSk7
CiAgICAgcmV0dXJuIGNsYW1wZWRWYWx1ZTsKIH0KIAotSW5wdXROdW1iZXIgU3RlcFJhbmdlOjpw
YXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgY29uc3QgU3RlcERlc2Ny
aXB0aW9uJiBzdGVwRGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgc3RlcFN0cmluZykKK0RlY2lt
YWwgU3RlcFJhbmdlOjpwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywg
Y29uc3QgU3RlcERlc2NyaXB0aW9uJiBzdGVwRGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgc3Rl
cFN0cmluZykKIHsKICAgICBpZiAoc3RlcFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBzdGVwRGVzY3JpcHRpb24uZGVmYXVsdFZhbHVlKCk7CkBAIC0xMzYsMjEgKzEzNiwyMSBAQCBJ
bnB1dE51bWJlciBTdGVwUmFuZ2U6OnBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcgYW55U3RlcEhh
bmRsaW5nLCBjb25zdCBTdGVwRGVzYwogICAgIHJldHVybiBzdGVwOwogfQogCi1JbnB1dE51bWJl
ciBTdGVwUmFuZ2U6OnJvdW5kQnlTdGVwKGNvbnN0IElucHV0TnVtYmVyJiB2YWx1ZSwgY29uc3Qg
SW5wdXROdW1iZXImIGJhc2UpIGNvbnN0CitEZWNpbWFsIFN0ZXBSYW5nZTo6cm91bmRCeVN0ZXAo
Y29uc3QgRGVjaW1hbCYgdmFsdWUsIGNvbnN0IERlY2ltYWwmIGJhc2UpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGJhc2UgKyAoKHZhbHVlIC0gYmFzZSkgLyBtX3N0ZXApLnJvdW5kKCkgKiBtX3N0ZXA7
CiB9CiAKLWJvb2wgU3RlcFJhbmdlOjpzdGVwTWlzbWF0Y2goY29uc3QgSW5wdXROdW1iZXImIHZh
bHVlRm9yQ2hlY2spIGNvbnN0Citib29sIFN0ZXBSYW5nZTo6c3RlcE1pc21hdGNoKGNvbnN0IERl
Y2ltYWwmIHZhbHVlRm9yQ2hlY2spIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc1N0ZXApCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXZhbHVlRm9yQ2hlY2suaXNGaW5pdGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IElucHV0TnVtYmVyIHZhbHVlID0gKHZhbHVl
Rm9yQ2hlY2sgLSBtX3N0ZXBCYXNlKS5hYnMoKTsKKyAgICBjb25zdCBEZWNpbWFsIHZhbHVlID0g
KHZhbHVlRm9yQ2hlY2sgLSBtX3N0ZXBCYXNlKS5hYnMoKTsKICAgICBpZiAoIXZhbHVlLmlzRmlu
aXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBJbnB1dE51bWJlcidzIGZyYWN0
aW9uYWwgcGFydCBzaXplIGlzIERCTF9NQU5fRElHLWJpdC4gSWYgdGhlIGN1cnJlbnQgdmFsdWUK
KyAgICAvLyBEZWNpbWFsJ3MgZnJhY3Rpb25hbCBwYXJ0IHNpemUgaXMgREJMX01BTl9ESUctYml0
LiBJZiB0aGUgY3VycmVudCB2YWx1ZQogICAgIC8vIGlzIGdyZWF0ZXIgdGhhbiBzdGVwKjJeREJM
X01BTlRfRElHLCB0aGUgZm9sbG93aW5nIGNvbXB1dGF0aW9uIGZvcgogICAgIC8vIHJlbWFpbmRl
ciBtYWtlcyBubyBzZW5zZS4KICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IERlY2ltYWws
IHR3b1Bvd2VyT2ZEb3VibGVNYW50aXNzYUJpdHMsIChEZWNpbWFsOjpQb3NpdGl2ZSwgMCwgVUlO
VDY0X0MoMSkgPDwgREJMX01BTlRfRElHKSk7CkBAIC0xNTksMTAgKzE1OSwxMCBAQCBib29sIFN0
ZXBSYW5nZTo6c3RlcE1pc21hdGNoKGNvbnN0IElucHV0TnVtYmVyJiB2YWx1ZUZvckNoZWNrKSBj
b25zdAogICAgIC8vIFRoZSBjb21wdXRhdGlvbiBmb2xsb3dzIEhUTUw1IDQuMTAuNy4yLjEwIGBU
aGUgc3RlcCBhdHRyaWJ1dGUnIDoKICAgICAvLyAuLi4gdGhhdCBudW1iZXIgc3VidHJhY3RlZCBm
cm9tIHRoZSBzdGVwIGJhc2UgaXMgbm90IGFuIGludGVncmFsIG11bHRpcGxlCiAgICAgLy8gb2Yg
dGhlIGFsbG93ZWQgdmFsdWUgc3RlcCwgdGhlIGVsZW1lbnQgaXMgc3VmZmVyaW5nIGZyb20gYSBz
dGVwIG1pc21hdGNoLgotICAgIGNvbnN0IElucHV0TnVtYmVyIHJlbWFpbmRlciA9ICh2YWx1ZSAt
IG1fc3RlcCAqICh2YWx1ZSAvIG1fc3RlcCkucm91bmQoKSkuYWJzKCk7CisgICAgY29uc3QgRGVj
aW1hbCByZW1haW5kZXIgPSAodmFsdWUgLSBtX3N0ZXAgKiAodmFsdWUgLyBtX3N0ZXApLnJvdW5k
KCkpLmFicygpOwogICAgIC8vIEFjY2VwdHMgZXJyb3MgaW4gbG93ZXIgZnJhY3Rpb25hbCBwYXJ0
IHdoaWNoIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24KICAgICAvLyBjYW4ndCByZXByZXNlbnQu
Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IgPSBhY2NlcHRh
YmxlRXJyb3IoKTsKKyAgICBjb25zdCBEZWNpbWFsIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yID0g
YWNjZXB0YWJsZUVycm9yKCk7CiAgICAgcmV0dXJuIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yIDwg
cmVtYWluZGVyICYmIHJlbWFpbmRlciA8IChtX3N0ZXAgLSBjb21wdXRlZEFjY2VwdGFibGVFcnJv
cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1N0ZXBSYW5nZS5oCmluZGV4IGIyOWZhNmNhMWE3NGVmMzcxMzg3
Y2Q3Yjg0OWQxYzc5ODQzMzVlZDkuLjYzYWI3NTYxYTJmZTA3NTMyZmM0ZjdkMzlmNjc4NmY2ODk5
OTFjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3RlcFJhbmdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9TdGVwUmFuZ2UuaApAQCAtMzEsMTkgKzMxLDYgQEAgY2xhc3Mg
SFRNTElucHV0RWxlbWVudDsKIAogZW51bSBBbnlTdGVwSGFuZGxpbmcgeyBSZWplY3RBbnksIEFu
eUlzRGVmYXVsdFN0ZXAgfTsKIAotLy8gRklYTUU6IFdlIHNob3VsZCByZW5hbWUgSW5wdXROdW1i
ZXIgdG8gRGVjaW1hbCBpbiBhbGwgcGxhY2VzLgotdHlwZWRlZiBEZWNpbWFsIElucHV0TnVtYmVy
OwotCi1pbmxpbmUgSW5wdXROdW1iZXIgY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoZG91Ymxl
IGRvdWJsZVZhbHVlKQotewotICAgIHJldHVybiBEZWNpbWFsOjpmcm9tRG91YmxlKGRvdWJsZVZh
bHVlKTsKLX0KLQotaW5saW5lIGRvdWJsZSBjb252ZXJ0SW5wdXROdW1iZXJUb0RvdWJsZShjb25z
dCBJbnB1dE51bWJlciYgbnVtZXJpY1ZhbHVlKQotewotICAgIHJldHVybiBudW1lcmljVmFsdWUu
dG9Eb3VibGUoKTsKLX0KLQogY2xhc3MgU3RlcFJhbmdlIHsKIHB1YmxpYzoKICAgICBlbnVtIFN0
ZXBWYWx1ZVNob3VsZEJlIHsKQEAgLTc0LDcgKzYxLDcgQEAgcHVibGljOgogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBJbnB1dE51bWJlciBkZWZhdWx0VmFsdWUoKSBjb25zdAorICAg
ICAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZSgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBkZWZhdWx0U3RlcCAqIHN0ZXBTY2FsZUZhY3RvcjsKICAgICAgICAgfQpAQCAtODIs
MjcgKzY5LDI3IEBAIHB1YmxpYzoKIAogICAgIFN0ZXBSYW5nZSgpOwogICAgIFN0ZXBSYW5nZShj
b25zdCBTdGVwUmFuZ2UmKTsKLSAgICBTdGVwUmFuZ2UoY29uc3QgSW5wdXROdW1iZXImIHN0ZXBC
YXNlLCBjb25zdCBJbnB1dE51bWJlciYgbWluaW11bSwgY29uc3QgSW5wdXROdW1iZXImIG1heGlt
dW0sIGNvbnN0IElucHV0TnVtYmVyJiBzdGVwLCBjb25zdCBTdGVwRGVzY3JpcHRpb24mKTsKLSAg
ICBJbnB1dE51bWJlciBhY2NlcHRhYmxlRXJyb3IoKSBjb25zdDsKLSAgICBJbnB1dE51bWJlciBh
bGlnblZhbHVlRm9yU3RlcChjb25zdCBJbnB1dE51bWJlciYgY3VycmVudFZhbHVlLCBjb25zdCBJ
bnB1dE51bWJlciYgbmV3VmFsdWUpIGNvbnN0OwotICAgIElucHV0TnVtYmVyIGNsYW1wVmFsdWUo
Y29uc3QgSW5wdXROdW1iZXImIHZhbHVlKSBjb25zdDsKKyAgICBTdGVwUmFuZ2UoY29uc3QgRGVj
aW1hbCYgc3RlcEJhc2UsIGNvbnN0IERlY2ltYWwmIG1pbmltdW0sIGNvbnN0IERlY2ltYWwmIG1h
eGltdW0sIGNvbnN0IERlY2ltYWwmIHN0ZXAsIGNvbnN0IFN0ZXBEZXNjcmlwdGlvbiYpOworICAg
IERlY2ltYWwgYWNjZXB0YWJsZUVycm9yKCkgY29uc3Q7CisgICAgRGVjaW1hbCBhbGlnblZhbHVl
Rm9yU3RlcChjb25zdCBEZWNpbWFsJiBjdXJyZW50VmFsdWUsIGNvbnN0IERlY2ltYWwmIG5ld1Zh
bHVlKSBjb25zdDsKKyAgICBEZWNpbWFsIGNsYW1wVmFsdWUoY29uc3QgRGVjaW1hbCYgdmFsdWUp
IGNvbnN0OwogICAgIGJvb2wgaGFzU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU3RlcDsgfQot
ICAgIElucHV0TnVtYmVyIG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX21heGltdW07IH0KLSAg
ICBJbnB1dE51bWJlciBtaW5pbXVtKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVtOyB9Ci0gICAg
c3RhdGljIElucHV0TnVtYmVyIHBhcnNlU3RlcChBbnlTdGVwSGFuZGxpbmcsIGNvbnN0IFN0ZXBE
ZXNjcmlwdGlvbiYsIGNvbnN0IFN0cmluZyYpOwotICAgIElucHV0TnVtYmVyIHN0ZXAoKSBjb25z
dCB7IHJldHVybiBtX3N0ZXA7IH0KLSAgICBJbnB1dE51bWJlciBzdGVwQmFzZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RlcEJhc2U7IH0KKyAgICBEZWNpbWFsIG1heGltdW0oKSBjb25zdCB7IHJldHVy
biBtX21heGltdW07IH0KKyAgICBEZWNpbWFsIG1pbmltdW0oKSBjb25zdCB7IHJldHVybiBtX21p
bmltdW07IH0KKyAgICBzdGF0aWMgRGVjaW1hbCBwYXJzZVN0ZXAoQW55U3RlcEhhbmRsaW5nLCBj
b25zdCBTdGVwRGVzY3JpcHRpb24mLCBjb25zdCBTdHJpbmcmKTsKKyAgICBEZWNpbWFsIHN0ZXAo
KSBjb25zdCB7IHJldHVybiBtX3N0ZXA7IH0KKyAgICBEZWNpbWFsIHN0ZXBCYXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGVwQmFzZTsgfQogICAgIGludCBzdGVwU2NhbGVGYWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX3N0ZXBEZXNjcmlwdGlvbi5zdGVwU2NhbGVGYWN0b3I7IH0KLSAgICBib29sIHN0
ZXBNaXNtYXRjaChjb25zdCBJbnB1dE51bWJlciYpIGNvbnN0OworICAgIGJvb2wgc3RlcE1pc21h
dGNoKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKIAogICAgIC8vIENsYW1wIHRoZSBtaWRkbGUgdmFs
dWUgYWNjb3JkaW5nIHRvIHRoZSBzdGVwCi0gICAgSW5wdXROdW1iZXIgZGVmYXVsdFZhbHVlKCkg
Y29uc3QKKyAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gY2xhbXBWYWx1ZSgobV9taW5pbXVtICsgbV9tYXhpbXVtKSAvIDIpOwogICAgIH0KIAog
ICAgIC8vIE1hcCB2YWx1ZSBpbnRvIDAtMSByYW5nZQotICAgIElucHV0TnVtYmVyIHByb3BvcnRp
b25Gcm9tVmFsdWUoY29uc3QgSW5wdXROdW1iZXImIHZhbHVlKSBjb25zdAorICAgIERlY2ltYWwg
cHJvcG9ydGlvbkZyb21WYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmIChtX21pbmltdW0gPT0gbV9tYXhpbXVtKQogICAgICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xMTEsMTkgKzk4LDE5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBNYXAgZnJvbSAw
LTEgcmFuZ2UgdG8gdmFsdWUKLSAgICBJbnB1dE51bWJlciB2YWx1ZUZyb21Qcm9wb3J0aW9uKGNv
bnN0IElucHV0TnVtYmVyJiBwcm9wb3J0aW9uKSBjb25zdAorICAgIERlY2ltYWwgdmFsdWVGcm9t
UHJvcG9ydGlvbihjb25zdCBEZWNpbWFsJiBwcm9wb3J0aW9uKSBjb25zdAogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1fbWluaW11bSArIHByb3BvcnRpb24gKiAobV9tYXhpbXVtIC0gbV9taW5pbXVt
KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgU3RlcFJhbmdlJiBvcGVyYXRvciA9KGNvbnN0IFN0
ZXBSYW5nZSYpOwotICAgIElucHV0TnVtYmVyIHJvdW5kQnlTdGVwKGNvbnN0IElucHV0TnVtYmVy
JiB2YWx1ZSwgY29uc3QgSW5wdXROdW1iZXImIGJhc2UpIGNvbnN0OworICAgIERlY2ltYWwgcm91
bmRCeVN0ZXAoY29uc3QgRGVjaW1hbCYgdmFsdWUsIGNvbnN0IERlY2ltYWwmIGJhc2UpIGNvbnN0
OwogCi0gICAgY29uc3QgSW5wdXROdW1iZXIgbV9tYXhpbXVtOyAvLyBtYXhpbXVtIG11c3QgYmUg
Pj0gbWluaW11bS4KLSAgICBjb25zdCBJbnB1dE51bWJlciBtX21pbmltdW07Ci0gICAgY29uc3Qg
SW5wdXROdW1iZXIgbV9zdGVwOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1fc3RlcEJhc2U7Cisg
ICAgY29uc3QgRGVjaW1hbCBtX21heGltdW07IC8vIG1heGltdW0gbXVzdCBiZSA+PSBtaW5pbXVt
LgorICAgIGNvbnN0IERlY2ltYWwgbV9taW5pbXVtOworICAgIGNvbnN0IERlY2ltYWwgbV9zdGVw
OworICAgIGNvbnN0IERlY2ltYWwgbV9zdGVwQmFzZTsKICAgICBjb25zdCBTdGVwRGVzY3JpcHRp
b24gbV9zdGVwRGVzY3JpcHRpb247CiAgICAgY29uc3QgYm9vbCBtX2hhc1N0ZXA7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKaW5kZXggNTM3OTJhOTk4YTkyODkzMmE1YzJi
NzQ0ZTQ1ODM1YTQ5YjYzYWNkZS4uMDUyYjg4NzU2MTczZWNhOTI5OTJlYTU5OTdhYmQ1OTYyMTc3
MjU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCkBAIC02NCw3ICs2NCw3
IEBAIERhdGVDb21wb25lbnRzOjpUeXBlIFRpbWVJbnB1dFR5cGU6OmRhdGVUeXBlKCkgY29uc3QK
ICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OlRpbWU7CiB9CiAKLUlucHV0TnVtYmVyIFRpbWVJ
bnB1dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CitEZWNpbWFsIFRpbWVJbnB1
dFR5cGU6OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiB7CiAgICAgZG91YmxlIGN1cnJl
bnQgPSBjdXJyZW50VGltZU1TKCk7CiAgICAgZG91YmxlIHV0Y09mZnNldCA9IGNhbGN1bGF0ZVVU
Q09mZnNldCgpOwpAQCAtNzYsMTcgKzc2LDE3IEBAIElucHV0TnVtYmVyIFRpbWVJbnB1dFR5cGU6
OmRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0CiAgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNT
aW5jZU1pZG5pZ2h0KGN1cnJlbnQpOwogICAgIGRvdWJsZSBtaWxsaXNlY29uZHMgPSBkYXRlLm1p
bGxpc2Vjb25kc1NpbmNlRXBvY2goKTsKICAgICBBU1NFUlQoaXNmaW5pdGUobWlsbGlzZWNvbmRz
KSk7Ci0gICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKG1pbGxpc2Vjb25kcyk7
CisgICAgcmV0dXJuIERlY2ltYWw6OmZyb21Eb3VibGUobWlsbGlzZWNvbmRzKTsKIH0KIAogU3Rl
cFJhbmdlIFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55
U3RlcEhhbmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Rl
cFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHRpbWVEZWZhdWx0U3Rl
cCwgdGltZURlZmF1bHRTdGVwQmFzZSwgdGltZVN0ZXBTY2FsZUZhY3RvciwgU3RlcFJhbmdlOjpT
Y2FsZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIpKTsKIAotICAgIGNvbnN0IElucHV0TnVtYmVy
IHN0ZXBCYXNlID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWlu
QXR0ciksIDApOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1pbmltdW0gPSBwYXJzZVRvTnVtYmVy
KGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgY29udmVydERvdWJsZVRvSW5w
dXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6Om1pbmltdW1UaW1lKCkpKTsKLSAgICBjb25zdCBJbnB1
dE51bWJlciBtYXhpbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1
dGUobWF4QXR0ciksIGNvbnZlcnREb3VibGVUb0lucHV0TnVtYmVyKERhdGVDb21wb25lbnRzOjpt
YXhpbXVtVGltZSgpKSk7Ci0gICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcCA9IFN0ZXBSYW5nZTo6
cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCktPmZh
c3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKKyAgICBjb25zdCBEZWNpbWFsIHN0ZXBCYXNlID0g
cGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIDApOwor
ICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0
R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBEZWNpbWFsOjpmcm9tRG91YmxlKERhdGVDb21wb25lbnRz
OjptaW5pbXVtVGltZSgpKSk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VUb051
bWJlcihlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIERlY2ltYWw6OmZyb21E
b3VibGUoRGF0ZUNvbXBvbmVudHM6Om1heGltdW1UaW1lKCkpKTsKKyAgICBjb25zdCBEZWNpbWFs
IHN0ZXAgPSBTdGVwUmFuZ2U6OnBhcnNlU3RlcChhbnlTdGVwSGFuZGxpbmcsIHN0ZXBEZXNjcmlw
dGlvbiwgZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHN0ZXBBdHRyKSk7CiAgICAgcmV0dXJu
IFN0ZXBSYW5nZShzdGVwQmFzZSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0
aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaAppbmRleCA4Mjg3NWU1NzQw
M2IxYTgyY2YzMWRmNGQ5YjZhMmY5NDRiYThkYzlhLi5jOWQ1YjBjZGQwNzcxMmI4NzdlYWE3YzE5
MmM2ZWE4NDFkYTUwZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1
dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuaApAQCAtNDUs
NyArNDUsNyBAQCBwcml2YXRlOgogICAgIFRpbWVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCog
ZWxlbWVudCkgOiBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIElucHV0TnVtYmVyIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVwVXAo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2Uo
QW55U3RlcEhhbmRsaW5nKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VU
b0RhdGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERh
dGVDb21wb25lbnRzKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNldE1pbGxp
c2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUsIERhdGVDb21wb25lbnRzKikgY29uc3QgT1ZF
UlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9XZWVrSW5wdXRUeXBlLmNwcAppbmRleCBmOGFlYTBhYzE2
ZTMwM2E4YmQ0MzViMmVjOWI4MjZhMjA5NjNiN2YyLi5jODgxYWU4YzFhM2I2Y2Y0NzIzNGRmMzhk
YjFjZDYxYzlkMzMwZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5jcHAKQEAg
LTY1LDEwICs2NSwxMCBAQCBTdGVwUmFuZ2UgV2Vla0lucHV0VHlwZTo6Y3JlYXRlU3RlcFJhbmdl
KEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERlc2NyaXB0
aW9uLCAod2Vla0RlZmF1bHRTdGVwLCB3ZWVrRGVmYXVsdFN0ZXBCYXNlLCB3ZWVrU3RlcFNjYWxl
RmFjdG9yLCBTdGVwUmFuZ2U6OlBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcikpOwogCi0g
ICAgY29uc3QgSW5wdXROdW1iZXIgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+
ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgd2Vla0RlZmF1bHRTdGVwQmFzZSk7Ci0gICAgY29u
c3QgSW5wdXROdW1iZXIgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0
QXR0cmlidXRlKG1pbkF0dHIpLCBjb252ZXJ0RG91YmxlVG9JbnB1dE51bWJlcihEYXRlQ29tcG9u
ZW50czo6bWluaW11bVdlZWsoKSkpOwotICAgIGNvbnN0IElucHV0TnVtYmVyIG1heGltdW0gPSBw
YXJzZVRvTnVtYmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgY29udmVy
dERvdWJsZVRvSW5wdXROdW1iZXIoRGF0ZUNvbXBvbmVudHM6Om1heGltdW1XZWVrKCkpKTsKLSAg
ICBjb25zdCBJbnB1dE51bWJlciBzdGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhh
bmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVw
QXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgc3RlcEJhc2UgPSBwYXJzZVRvTnVtYmVyKGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgd2Vla0RlZmF1bHRTdGVwQmFzZSk7Cisg
ICAgY29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWluQXR0ciksIERlY2ltYWw6OmZyb21Eb3VibGUoRGF0ZUNvbXBvbmVudHM6
Om1pbmltdW1XZWVrKCkpKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBwYXJzZVRvTnVt
YmVyKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgRGVjaW1hbDo6ZnJvbURv
dWJsZShEYXRlQ29tcG9uZW50czo6bWF4aW11bVdlZWsoKSkpOworICAgIGNvbnN0IERlY2ltYWwg
c3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0
aW9uLCBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpKTsKICAgICByZXR1cm4g
U3RlcFJhbmdlKHN0ZXBCYXNlLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwRGVzY3JpcHRp
b24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRh
clBpY2tlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQ
aWNrZXJFbGVtZW50LmNwcAppbmRleCBhYjhjMmVkOTEwOWJmOTgxMzRmNmEzODIyNTliODY3NWRj
YjFkOWJiLi41MzU4Y2NhZjdhM2RmMmUzM2EwM2ViZjBjODg5MTFiMGMwODgyYmM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5j
cHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIENhbGVuZGFyUGlja2VyRWxlbWVudDo6d3JpdGVE
b2N1bWVudChEb2N1bWVudFdyaXRlciYgd3JpdGVyKQogICAgIFN0cmluZyBtaW5TdHJpbmcgPSBk
YXRlLnRvU3RyaW5nKCk7CiAgICAgZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0
ZShpbnB1dC0+bWF4aW11bSgpKTsKICAgICBTdHJpbmcgbWF4U3RyaW5nID0gZGF0ZS50b1N0cmlu
ZygpOwotICAgIElucHV0TnVtYmVyIHN0ZXA7CisgICAgRGVjaW1hbCBzdGVwOwogICAgIFN0cmlu
ZyBzdGVwU3RyaW5nID0gaW5wdXQtPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwogICAgIGlm
IChzdGVwU3RyaW5nLmlzRW1wdHkoKSB8fCAhaW5wdXQtPmdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0
ZXApKQogICAgICAgICBzdGVwU3RyaW5nID0gIjEiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggZDBjYTQ1YmI3MWNjYThiMzhj
YmI4NDI5YzFjNDljMjc1YTRkYTNkZC4uNTAyZGFlMTNmMTUyZGM0YjQyN2RiMWY5Njk1MWY4ZGUz
MmU3YWY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1
bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVt
YkVsZW1lbnQuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RhdGljIElucHV0TnVtYmVyIHNsaWRlclBv
c2l0aW9uKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitpbmxpbmUgc3RhdGljIERlY2ltYWwg
c2xpZGVyUG9zaXRpb24oSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKIHsKICAgICBjb25zdCBT
dGVwUmFuZ2Ugc3RlcFJhbmdlKGVsZW1lbnQtPmNyZWF0ZVN0ZXBSYW5nZShSZWplY3RBbnkpKTsK
LSAgICBjb25zdCBJbnB1dE51bWJlciBvbGRWYWx1ZSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVy
VHlwZShlbGVtZW50LT52YWx1ZSgpLCBzdGVwUmFuZ2UuZGVmYXVsdFZhbHVlKCkpOworICAgIGNv
bnN0IERlY2ltYWwgb2xkVmFsdWUgPSBwYXJzZVRvRGVjaW1hbEZvck51bWJlclR5cGUoZWxlbWVu
dC0+dmFsdWUoKSwgc3RlcFJhbmdlLmRlZmF1bHRWYWx1ZSgpKTsKICAgICByZXR1cm4gc3RlcFJh
bmdlLnByb3BvcnRpb25Gcm9tVmFsdWUoc3RlcFJhbmdlLmNsYW1wVmFsdWUob2xkVmFsdWUpKTsK
IH0KIApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgUmVuZGVyU2xpZGVyVGh1bWI6OmxheW91dCgp
CiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBub2RlKCktPnNoYWRvd0FuY2VzdG9yTm9k
ZSgpLT50b0lucHV0RWxlbWVudCgpOwogICAgIGJvb2wgaXNWZXJ0aWNhbCA9IGhhc1ZlcnRpY2Fs
QXBwZWFyYW5jZShpbnB1dCk7CiAKLSAgICBkb3VibGUgZnJhY3Rpb24gPSBjb252ZXJ0SW5wdXRO
dW1iZXJUb0RvdWJsZShzbGlkZXJQb3NpdGlvbihpbnB1dCkgKiAxMDApOworICAgIGRvdWJsZSBm
cmFjdGlvbiA9IChzbGlkZXJQb3NpdGlvbihpbnB1dCkgKiAxMDApLnRvRG91YmxlKCk7CiAgICAg
aWYgKGlzVmVydGljYWwpCiAgICAgICAgIHN0eWxlKCktPnNldFRvcChMZW5ndGgoMTAwIC0gZnJh
Y3Rpb24sIFBlcmNlbnQpKTsKICAgICBlbHNlIGlmIChzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCkBAIC0yNDIsMTAgKzI0MiwxMCBAQCB2b2lkIFNsaWRlclRodW1iRWxlbWVudDo6
c2V0UG9zaXRpb25Gcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIGlmIChw
b3NpdGlvbiA9PSBjdXJyZW50UG9zaXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0
IElucHV0TnVtYmVyIHJhdGlvID0gY29udmVydERvdWJsZVRvSW5wdXROdW1iZXIoc3RhdGljX2Nh
c3Q8ZG91YmxlPihwb3NpdGlvbikgLyB0cmFja1NpemUpOwotICAgIGNvbnN0IElucHV0TnVtYmVy
IGZyYWN0aW9uID0gaXNWZXJ0aWNhbCB8fCAhcmVuZGVyQm94KCktPnN0eWxlKCktPmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSA/IElucHV0TnVtYmVyKDEpIC0gcmF0aW8gOiByYXRpbzsKKyAgICBj
b25zdCBEZWNpbWFsIHJhdGlvID0gRGVjaW1hbDo6ZnJvbURvdWJsZShzdGF0aWNfY2FzdDxkb3Vi
bGU+KHBvc2l0aW9uKSAvIHRyYWNrU2l6ZSk7CisgICAgY29uc3QgRGVjaW1hbCBmcmFjdGlvbiA9
IGlzVmVydGljYWwgfHwgIXJlbmRlckJveCgpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkgPyBEZWNpbWFsKDEpIC0gcmF0aW8gOiByYXRpbzsKICAgICBTdGVwUmFuZ2Ugc3RlcFJh
bmdlKGlucHV0LT5jcmVhdGVTdGVwUmFuZ2UoUmVqZWN0QW55KSk7Ci0gICAgY29uc3QgSW5wdXRO
dW1iZXIgdmFsdWUgPSBzdGVwUmFuZ2UuY2xhbXBWYWx1ZShzdGVwUmFuZ2UudmFsdWVGcm9tUHJv
cG9ydGlvbihmcmFjdGlvbikpOworICAgIGNvbnN0IERlY2ltYWwgdmFsdWUgPSBzdGVwUmFuZ2Uu
Y2xhbXBWYWx1ZShzdGVwUmFuZ2UudmFsdWVGcm9tUHJvcG9ydGlvbihmcmFjdGlvbikpOwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgbm8gbG9uZ2VyIGJlaW5nIHNldCBmcm9tIHJlbmRlcmVyLiBD
b25zaWRlciB1cGRhdGluZyB0aGUgbWV0aG9kIG5hbWUuCiAgICAgaW5wdXQtPnNldFZhbHVlRnJv
bVJlbmRlcmVyKHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>