<?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>207270</bug_id>
          
          <creation_ts>2020-02-05 09:12:05 -0800</creation_ts>
          <short_desc>REGRESSION(r255818): It is breaking some Mac builds (Requested by youenn on #webkit).</short_desc>
          <delta_ts>2020-02-05 09:16:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206582</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1615070</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 09:12:05 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/255818 broke the build:
It is breaking some Mac builds (Requested by youenn on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615072</commentid>
    <comment_count>1</comment_count>
      <attachid>389816</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 09:12:15 -0800</bug_when>
    <thetext>Created attachment 389816
ROLLOUT of r255818

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615074</commentid>
    <comment_count>2</comment_count>
      <attachid>389816</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 09:15:44 -0800</bug_when>
    <thetext>Comment on attachment 389816
ROLLOUT of r255818

Clearing flags on attachment: 389816

Committed r255819: &lt;https://trac.webkit.org/changeset/255819&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615075</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 09:15:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615076</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-05 09:16:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/59190256&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389816</attachid>
            <date>2020-02-05 09:12:15 -0800</date>
            <delta_ts>2020-02-05 09:15:44 -0800</delta_ts>
            <desc>ROLLOUT of r255818</desc>
            <filename>bug-207270-20200205091214.patch</filename>
            <type>text/plain</type>
            <size>138608</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjZjY3YjQyNmNmYzExZTZhNjI1MjM2
ZDUwYzgyMTk1OTMzYTBhMTkuLmE5ZGQ3N2Q3ODBjMGI0Yzk0ZDdlMjkxZTMwMjdkOTBkYTY4Mjk0
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDItMDUgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
NTU4MTguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDcyNzAKKworICAgICAgICBJdCBpcyBicmVha2luZyBzb21lIE1hYyBidWlsZHMgKFJlcXVlc3Rl
ZCBieSB5b3Vlbm4gb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hh
bmdlc2V0OgorCisgICAgICAgICJbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8g
aW1wbGVtZW50IE1lZGlhUmVjb3JkZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzI1NTgxOAorCiAyMDIwLTAyLTA1ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8g
aW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MzQ2NjM5OGNjNDY3ZDM0ZTM4
MGI3MGQyOWQ3NTQ0NzhhODM0YzM2Li5jMWZjYjkwNTRlMjAxNDQzOTk3NGFiMzhiNjlkNjJlZjI0
M2Q0MDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDItMDUgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyNTU4MTguCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDcyNzAKKworICAgICAgICBJdCBpcyBicmVha2luZyBzb21lIE1hYyBidWls
ZHMgKFJlcXVlc3RlZCBieSB5b3Vlbm4gb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAg
UmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVy
RGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIiCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY1ODIKKyAgICAgICAgaHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzI1NTgxOAorCiAyMDIwLTAyLTA1ICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVy
RGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4
IGNjZTIzZmVhN2JmZTIxYWJmNTA2OTY2ZDEzMTk1ZGU3N2UzZTk5NzkuLmVkNzNiNWZmMmJhNjZi
ODA3NWIyNzcxY2MzNzkxMjAzYWQ1ZjllYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDIwLTAyLTA1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU1ODE4LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjcwCisKKyAgICAgICAg
SXQgaXMgYnJlYWtpbmcgc29tZSBNYWMgYnVpbGRzIChSZXF1ZXN0ZWQgYnkgeW91ZW5uIG9uCisg
ICAgICAgICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAg
ICAiW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJl
Y29yZGVyIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2NTgyCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNTU4MTgK
KwogMjAyMC0wMi0wNSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvY29hXSBVc2UgQVZBc3NldFdyaXRlckRlbGVnYXRlIHRvIGltcGxlbWVudCBNZWRpYVJl
Y29yZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDk5YzFiZjAyNGE1MWY0OWY3ZGIwZjQ1NjJlYTBlZjQ3NmMwNGNm
NzEuLjBhNDQ2ODgzYTdkNWYwNzE2NmE3NWY0NDFlZGMwNjAyNTcyZDc5ZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjAtMDItMDUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTU4MTguCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyNzAKKwor
ICAgICAgICBJdCBpcyBicmVha2luZyBzb21lIE1hYyBidWlsZHMgKFJlcXVlc3RlZCBieSB5b3Vl
bm4gb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0Ogor
CisgICAgICAgICJbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50
IE1lZGlhUmVjb3JkZXIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDY1ODIKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzI1NTgxOAorCiAyMDIwLTAyLTA1ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFzc2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50
IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5o
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggNTNmYWU1OTIwNWY1OWRjYjI0
ZmJkNTgwMmEzYzliMWZhYTU0MjQyMy4uMTc1YjZmNWVhOGVkYzdhZDFmZDJjMWYyZTdmODhmMGVl
N2IyNmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU2NiwxMCArNTY2LDYgQEAKICNkZWZp
bmUgSEFWRV9PU19TSUdOUE9TVCAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCAoUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgKGRlZmluZWQgX19oYXNfaW5jbHVkZSAmJiBfX2hhc19pbmNsdWRlKDxBVkZv
dW5kYXRpb24vQVZBc3NldFdyaXRlcl9Qcml2YXRlLmg+KSkpCi0jZGVmaW5lIEhBVkVfQVZBU1NF
VFdSSVRFUkRFTEVHQVRFIDEKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
IVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogI2RlZmluZSBIQVZFX1NZ
U1RFTV9GT05UX1NUWUxFX1RJVExFXzAgMQogI2RlZmluZSBIQVZFX1NZU1RFTV9GT05UX1NUWUxF
X1RJVExFXzQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBmNTRkZjcxYTRmNDNi
M2U2ZjlkNDhiYzFjZDc0NDM3Njg3MWU5YjdmLi5mY2IwOTdlZTc1OWZmNWRmYjc2NDk4ZDUwOTBl
NGNjY2MwYzlkNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcApAQCAtMzQsMTIgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFSZWNvcmRl
clByaXZhdGU+IE1lZGlhUmVjb3JkZXJQcm92aWRlcjo6Y3JlYXRlTWVkaWFSZWNvcmRlclByaXZh
dGUoY29uc3QgTWVkaWFTdHJlYW1Qcml2YXRlJiBzdHJlYW0pCiB7Ci0jaWYgSEFWRShBVkFTU0VU
V1JJVEVSREVMRUdBVEUpCiAgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbDo6
Y3JlYXRlKHN0cmVhbSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzdHJlYW0pOwotICAgIHJl
dHVybiBudWxscHRyOwotI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMjgxYjkyYTE3YjQ5YmQ2ZTA3MThh
OTYxZjA2NDA4ODY1ZTFlYjZjLi4zOGQ3ZmE5ZTVkMDljMmNkOWQ4YzYwOGViYTM4ZTcwNTA0YTMw
OTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMTUsMTAgKzExNSw2IEBACiAJCTJFMTM0MkNDMjE1QUExMEEwMDcxOTlEMiAv
KiBVSUtpdFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTEzNDJDQTIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5oICovOyB9
OwogCQkyRTEzNDJDRDIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0TGluay5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMTM0MkNCMjE1QUExMEEw
MDcxOTlEMiAvKiBVSUtpdFNvZnRMaW5rLm1tICovOyB9OwogCQkzMTMwOEIxNDIwQTIxNzA1MDAz
RkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEzMDhCMTMyMEEyMTcwNTAwM0ZCOTI5IC8qIFN5c3RlbVByZXZp
ZXdTUEkuaCAqLzsgfTsKLQkJNDE2RTk5NTMyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJv
eFNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNkU5OTUxMjNEQUU2QkQwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAg
Ki87IH07Ci0JCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGlu
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2RTk5
NTIyM0RBRTZCRTAwRTg3MUNCIC8qIEF1ZGlvVG9vbGJveFNvZnRMaW5rLmggKi87IH07Ci0JCTQx
NkU5OTU3MjNEQUVGRjgwMEU4NzFDQiAvKiBWaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFOTk1NTIzREFFRkY3
MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwICovOyB9OwotCQk0MTZFOTk1ODIz
REFFRkY4MDBFODcxQ0IgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNkU5OTU2MjNEQUVGRjcwMEU4NzFDQiAv
KiBWaWRlb1Rvb2xib3hTb2Z0TGluay5oICovOyB9OwogCQk0NDI5NTZDRDIxOEE3MkRGMDA4MERC
NTQgLyogUmV2ZWFsU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NDI5NTZDQzIxOEE3MkRFMDA4MERCNTQgLyogUmV2ZWFsU1BJLmggKi87IH07CiAJ
CTQ0NTBGQzlGMjFGNUY2MDIwMDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NTBGQzlEMjFGNUY2MDIw
MDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQ1MEZDQTAyMUY1RjYw
MjAwNERGQTU2IC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tM
b29rU29mdExpbmsuaCAqLzsgfTsKQEAgLTI5NCwxMCArMjkwLDYgQEAKIAkJMkUxMzQyQ0IyMTVB
QTEwQTAwNzE5OUQyIC8qIFVJS2l0U29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBVSUtpdFNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTMwOEIxMzIwQTIxNzA1MDAzRkI5MjkgLyogU3lzdGVtUHJldmlld1NQSS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTeXN0ZW1QcmV2aWV3U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTM3MTE5QTc4MjBDQ0I1RkYwMDJDNkRDOSAvKiBXZWJLaXRUYXJnZXRDb25kaXRpb25h
bHMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViS2l0VGFyZ2V0Q29uZGl0aW9uYWxzLnhjY29u
ZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTZFOTk1MTIzREFFNkJEMDBFODcx
Q0IgLyogQXVkaW9Ub29sYm94U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExpbmsuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTZFOTk1MjIzREFFNkJFMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94U29mdExp
bmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Ub29sYm94U29mdExp
bmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3
MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNDE2RTk5NTYyM0RBRUZGNzAwRTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRM
aW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVG9vbGJveFNvZnRM
aW5rLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0Mjk1NkNDMjE4QTcyREUwMDgw
REI1NCAvKiBSZXZlYWxTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV2
ZWFsU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NTBGQzlEMjFGNUY2MDIw
MDRERkE1NiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFF1aWNrTG9va1NvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NDUwRkM5RTIxRjVGNjAyMDA0REZBNTYgLyogUXVpY2tMb29rU29mdExpbmsu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVpY2tMb29rU29mdExpbmsuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyOSwxMiArNTIxLDggQEAKIAkJMENGOTlD
QTUxRjczODQxQzAwN0VFNzkzIC8qIGNmICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKLQkJCQk0MTZFOTk1MTIzREFFNkJEMDBFODcxQ0IgLyogQXVkaW9Ub29sYm94
U29mdExpbmsuY3BwICovLAotCQkJCTQxNkU5OTUyMjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rv
b2xib3hTb2Z0TGluay5oICovLAogCQkJCTBDRjk5Q0E2MUY3Mzg0MzYwMDdFRTc5MyAvKiBDb3Jl
TWVkaWFTb2Z0TGluay5jcHAgKi8sCiAJCQkJMENGOTlDQTcxRjczODQzNzAwN0VFNzkzIC8qIENv
cmVNZWRpYVNvZnRMaW5rLmggKi8sCi0JCQkJNDE2RTk5NTUyM0RBRUZGNzAwRTg3MUNCIC8qIFZp
ZGVvVG9vbGJveFNvZnRMaW5rLmNwcCAqLywKLQkJCQk0MTZFOTk1NjIzREFFRkY3MDBFODcxQ0Ig
LyogVmlkZW9Ub29sYm94U29mdExpbmsuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2Y7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzI0LDcgKzcxMiw2IEBACiAJCQlmaWxlcyA9ICgK
IAkJCQk1N0ZEMzE4QjIyQjM1OTg5MDA4RDBFOEIgLyogQXBwU1NPU29mdExpbmsuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3NkNBOUQ2MjJCODU0QUIwMDMwMTQzQyAvKiBBcHBTU09TUEkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTQxNkU5OTU0MjNEQUU2QkUwMEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQwMkU5M0MyMDU2RkFBNzAwQTEzNzk3IC8q
IEF1ZGlvVG9vbGJveFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyQTEwNzgyMkI0NTZGNTAw
RjQxMEM4IC8qIEF1dGhLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3N0U4N0IyMjI2QTQ2
MDMwMEEyQUZGMCAvKiBBVkZvdW5kYXRpb25Tb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC04
NDcsNyArODM0LDYgQEAKIAkJCQkyRTEzNDJDQzIxNUFBMTBBMDA3MTk5RDIgLyogVUlLaXRTb2Z0
TGluay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MjIxRjQzQTRDNzAwMkVBQzAyIC8qIFVJ
S2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NzFGM0JFQjQ5MDBEQkMzMTcgLyog
VVJMRm9ybWF0dGluZ1NQSS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTk5NTgyM0RBRUZGODAw
RTg3MUNCIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJE
QTE1OTFGM0JFQjQ5MDBEQkMzMTcgLyogV2ViRmlsdGVyRXZhbHVhdG9yU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMTA4MjZGOTFGNTc2MjkyMDA0NzcyQUMgLyogV2ViUGFuZWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKQEAgLTk0MCw3ICs5MjYsNiBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTU3RkQzMThBMjJCMzU5M0UwMDhEMEU4QiAv
KiBBcHBTU09Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQxNkU5OTUzMjNEQUU2QkUw
MEU4NzFDQiAvKiBBdWRpb1Rvb2xib3hTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
NzdFODdCMTIyNkE0NjAyMDBBMkFGRjAgLyogQVZGb3VuZGF0aW9uU29mdExpbmsubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwQzVGRkYwRjFGNzhEOURBMDA5RUZGMUEgLyogQ2xvY2tDTS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0
TGluay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk2Nyw3ICs5NTIsNiBAQAogCQkJCUEzQUI2RTU3
MUYzRDFEREIwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUxMzQyQ0QyMTVBQTEwQTAwNzE5OUQyIC8qIFVJS2l0
U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKLQkJCQk0MTZFOTk1NzIzREFFRkY4MDBFODcxQ0Ig
LyogVmlkZW9Ub29sYm94U29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwODI2RkEx
RjU3NjI5MjAwNDc3MkFDIC8qIFdlYlBhbmVsLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NmL0F1ZGlvVG9vbGJveFNvZnRMaW5rLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxY2Y1NTA1NmFjZGE2ZjU2NTNhZGM3ZTE3ZWMwMmEyZDgyNmU0NDdm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29sYm94U29mdExpbmsuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
ZiBVU0UoQVZGT1VOREFUSU9OKQotCi0jaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVy
dGVyLmg+Ci0jaW5jbHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvRm9ybWF0Lmg+Ci0KLSNpbmNsdWRl
IDx3dGYvU29mdExpbmtpbmcuaD4KLQotU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFBB
TCwgQXVkaW9Ub29sYm94KQotCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIEF1
ZGlvVG9vbGJveCwgQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eSwgT1NTdGF0dXMsIChBdWRpb0Zvcm1h
dFByb3BlcnR5SUQgaW5Qcm9wZXJ0eUlELCBVSW50MzIgaW5TcGVjaWZpZXJTaXplLCBjb25zdCB2
b2lkKiBpblNwZWNpZmllciwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFBy
b3BlcnR5RGF0YSksIChpblByb3BlcnR5SUQsIGluU3BlY2lmaWVyU2l6ZSwgaW5TcGVjaWZpZXIs
IGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0UHJvcGVydHlEYXRhKSkKLVNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NTdGF0
dXMsIChjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0LCBj
b25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQsIEF1
ZGlvQ29udmVydGVyUmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwgaW5E
ZXN0aW5hdGlvbkZvcm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQotU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9TT1VSQ0UoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHks
IE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252
ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluUHJvcGVydHlEYXRhU2l6ZSwg
Y29uc3Qgdm9pZCogaW5Qcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0
eUlELCBpblByb3BlcnR5RGF0YVNpemUsIGluUHJvcGVydHlEYXRhKSkKLVNPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFBBTCwgQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlckdldFByb3Bl
cnR5LCBPU1N0YXR1cywgKEF1ZGlvQ29udmVydGVyUmVmIGluQXVkaW9Db252ZXJ0ZXIsIEF1ZGlv
Q29udmVydGVyUHJvcGVydHlJRCBpblByb3BlcnR5SUQsIFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFT
aXplLCB2b2lkKiBvdXRQcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRlciwgaW5Qcm9wZXJ0
eUlELCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCi0KLSNlbmRpZiAvLyBV
U0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9B
dWRpb1Rvb2xib3hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9BdWRpb1Rv
b2xib3hTb2Z0TGluay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzMxMTg3MTc0
YWMxNTU0NDM3MWRlZTAzYjE0MzJlM2U2NTYzMmUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY2YvQXVkaW9Ub29s
Ym94U29mdExpbmsuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoQVZGT1VOREFUSU9OKQotCi0jaW5jbHVkZSA8d3Rm
L1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIEF1
ZGlvVG9vbGJveCkKLQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rv
b2xib3gsIEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0
ZXJSZWYgaW5BdWRpb0NvbnZlcnRlciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVy
dHlJRCwgVUludDMyKiBpb1Byb3BlcnR5RGF0YVNpemUsIHZvaWQqIG91dFByb3BlcnR5RGF0YSks
IChpbkF1ZGlvQ29udmVydGVyLCBpblByb3BlcnR5SUQsIGlvUHJvcGVydHlEYXRhU2l6ZSwgb3V0
UHJvcGVydHlEYXRhKSkKLSNkZWZpbmUgQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eSBzb2Z0TGlu
a19BdWRpb1Rvb2xib3hfQXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eQotU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0
YXR1cywgKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQs
IGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwg
QXVkaW9Db252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBp
bkRlc3RpbmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCi0jZGVmaW5lIEF1ZGlvQ29u
dmVydGVyTmV3IHNvZnRMaW5rX0F1ZGlvVG9vbGJveF9BdWRpb0NvbnZlcnRlck5ldwotU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVy
U2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9Db252ZXJ0ZXJSZWYgaW5BdWRpb0NvbnZlcnRl
ciwgQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluUHJvcGVy
dHlEYXRhU2l6ZSwgY29uc3Qgdm9pZCogaW5Qcm9wZXJ0eURhdGEpLCAoaW5BdWRpb0NvbnZlcnRl
ciwgaW5Qcm9wZXJ0eUlELCBpblByb3BlcnR5RGF0YVNpemUsIGluUHJvcGVydHlEYXRhKSkKLSNk
ZWZpbmUgQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eSBzb2Z0TGlua19BdWRpb1Rvb2xib3hfQXVk
aW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBBdWRpb1Rvb2xib3gsIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHksIE9TU3RhdHVzLCAoQXVkaW9G
b3JtYXRQcm9wZXJ0eUlEIGluUHJvcGVydHlJRCwgVUludDMyIGluU3BlY2lmaWVyU2l6ZSwgY29u
c3Qgdm9pZCogaW5TcGVjaWZpZXIsIFVJbnQzMiogaW9Qcm9wZXJ0eURhdGFTaXplLCB2b2lkKiBv
dXRQcm9wZXJ0eURhdGEpLCAoaW5Qcm9wZXJ0eUlELCBpblNwZWNpZmllclNpemUsIGluU3BlY2lm
aWVyLCBpb1Byb3BlcnR5RGF0YVNpemUsIG91dFByb3BlcnR5RGF0YSkpCi0jZGVmaW5lIEF1ZGlv
Rm9ybWF0R2V0UHJvcGVydHkgc29mdExpbmtfQXVkaW9Ub29sYm94X0F1ZGlvRm9ybWF0R2V0UHJv
cGVydHkKLQotCi0jZW5kaWYgLy8gVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5jcHAKaW5kZXggZmEyMmNlY2MxMzczYWM3
ZmJiOTU1ZmQ2NDFmN2IyMTE2NjEzOWVlOS4uMmI4MjMxMzY1Y2I5YWFmOTM1OTdmMTg3ZmEyMmMx
NDliZTQyZmIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFT
b2Z0TGluay5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhKQogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMsIE9TU3RhdHVzLCAoQ01CbG9j
a0J1ZmZlclJlZiB0aGVTb3VyY2VCdWZmZXIsIHNpemVfdCBvZmZzZXRUb0RhdGEsIHNpemVfdCBk
YXRhTGVuZ3RoLCB2b2lkKiBkZXN0aW5hdGlvbiksICh0aGVTb3VyY2VCdWZmZXIsIG9mZnNldFRv
RGF0YSwgZGF0YUxlbmd0aCwgZGVzdGluYXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3Qs
IChDTUJsb2NrQnVmZmVyUmVmIHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQotU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0
YUJ5dGVzLCBPU1N0YXR1cywgKGNvbnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVy
UmVmIGRlc3RpbmF0aW9uQnVmZmVyLCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXpl
X3QgZGF0YUxlbmd0aCksIChzb3VyY2VCeXRlcywgZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldElu
dG9EZXN0aW5hdGlvbiwgZGF0YUxlbmd0aCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIENvcmVNZWRpYSwgQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbnMsIENGRGlj
dGlvbmFyeVJlZiwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdl
dFR5cGVJRCwgQ0ZUeXBlSUQsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyLCBDTUJsb2Nr
QnVmZmVyUmVmLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKQEAgLTEzNCwxMSAr
MTMzLDkgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
QnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0YWluLCBDTUIKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSwgT1NTdGF0dXMsIChD
TUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlLCBDTUJ1ZmZlclJlZiBidWZmZXIpLCAocXVldWUsIGJ1ZmZl
cikpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZm
ZXJRdWV1ZUlzRW1wdHksIEJvb2xlYW4sIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVl
KSkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZl
clF1ZXVlR2V0QnVmZmVyQ291bnQsIENNSXRlbUNvdW50LCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1
ZSksIChxdWV1ZSkpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRp
YSwgQ01CdWZmZXJRdWV1ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycywgY29u
c3QgQ01CdWZmZXJDYWxsYmFja3MgKiwgKCksICgpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVHZXRGaXJzdFByZXNlbnRhdGlvblRp
bWVTdGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCiBTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdl
dEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCwgQ01UaW1lLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1
ZSksIChxdWV1ZSkpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRp
YSwgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJlc2hvbGQsIE9TU3Rh
dHVzLCAoQ01CdWZmZXJRdWV1ZVJlZiBxdWV1ZSwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFj
ayB0cmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIHRyaWdnZXJSZWZjb24sIENNQnVmZmVyUXVldWVUcmln
Z2VyQ29uZGl0aW9uIHRyaWdnZXJDb25kaXRpb24sIENNSXRlbUNvdW50IHRyaWdnZXJUaHJlc2hv
bGQsIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4qIHRyaWdnZXJUb2tlbk91dCksIChxdWV1ZSwg
dHJpZ2dlckNhbGxiYWNrLCB0cmlnZ2VyUmVmY29uLCB0cmlnZ2VyQ29uZGl0aW9uLCB0cmlnZ2Vy
VGhyZXNob2xkLCB0cmlnZ2VyVG9rZW5PdXQpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhLCBPU1N0YXR1cywg
KENNQnVmZmVyUXVldWVSZWYgcXVldWUpLCAocXVldWUpKQogCiBTT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERp
c3BsYXksIENGU3RyaW5nUmVmKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBD
b3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYywgQ0ZTdHJpbmdSZWYpCkBA
IC0xNTIsOSArMTQ5LDYgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfU2FtcGwKIFNPRlRfTElOS19DT05T
VEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0Rp
c3BsYXlJbW1lZGlhdGVseSwgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Jc0RlcGVuZGVkT25C
eU90aGVycywgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUws
IENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29u
c3VtZWQsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBD
b3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxl
RHVyYXRpb24sIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfR3JhZHVhbERlY29kZXJS
ZWZyZXNoLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJp
bUR1cmF0aW9uQXRTdGFydCwgQ0ZTdHJpbmdSZWYpCiAKIFNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9FZmZlY3RpdmVS
YXRlQ2hhbmdlZCwgQ0ZTdHJpbmdSZWYpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQ
QUwsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCwgQ0ZTdHJp
bmdSZWYpCkBAIC0xNjksOSArMTYzLDYgQEAgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
UEFMLCBDb3JlTWVkaWEsIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2UKIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlclNl
dERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVy
UmVmIHNidWYsIENGQWxsb2NhdG9yUmVmIGJidWZTdHJ1Y3RBbGxvY2F0b3IsIENGQWxsb2NhdG9y
UmVmIGJidWZNZW1vcnlBbGxvY2F0b3IsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBBdWRpb0J1ZmZl
ckxpc3QgKmJ1ZmZlckxpc3QpLCAoc2J1ZiwgYmJ1ZlN0cnVjdEFsbG9jYXRvciwgYmJ1Zk1lbW9y
eUFsbG9jYXRvciwgZmxhZ3MsIGJ1ZmZlckxpc3QpKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyU2V0RGF0YVJlYWR5LCBPU1N0YXR1
cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRl
LCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKiBhc2JkLCBzaXplX3QgbGF5b3V0U2l6ZSwgY29uc3QgQXVkaW9DaGFu
bmVsTGF5b3V0KiBsYXlvdXQsIHNpemVfdCBtYWdpY0Nvb2tpZVNpemUsIGNvbnN0IHZvaWQqIG1h
Z2ljQ29va2llLCBDRkRpY3Rpb25hcnlSZWYgZXh0ZW5zaW9ucywgQ01BdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uUmVmKiBvdXREZXNjKSwgKGFsbG9jYXRvciwgYXNiZCwgbGF5b3V0U2l6ZSwgbGF5b3V0
LCBtYWdpY0Nvb2tpZVNpemUsIG1hZ2ljQ29va2llLCBleHRlbnNpb25zLCBvdXREZXNjKSkKLVNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0
RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZSwgY29uc3Qgdm9pZCosIChDTUF1ZGlvRm9ybWF0RGVz
Y3JpcHRpb25SZWYgZGVzYywgc2l6ZV90KiBzaXplT3V0KSwgKGRlc2MsIHNpemVPdXQpKQotU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbkdldFJpY2hlc3REZWNvZGFibGVGb3JtYXQsIGNvbnN0IEF1ZGlvRm9ybWF0TGlz
dEl0ZW0gKiwgKENNQXVkaW9Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQotCiBT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldEhv
c3RUaW1lQ2xvY2ssIENNQ2xvY2tSZWYsICh2b2lkKSwgKCkpCiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01DbG9ja0dldFRpbWUsIENNVGltZSwgKENNQ2xv
Y2tSZWYgY2xvY2spLCAoY2xvY2spKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEZvckVhY2hTYW1wbGUsIE9TU3RhdHVzLCAo
Q01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKCogQ01TQU1QTEVCVUZGRVJDQUxMX05P
RVNDQVBFIGNhbGxiYWNrKSggQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1D
b3VudCBpbmRleCwgdm9pZCAqcmVmY29uKSwgdm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNr
LCByZWZjb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVk
aWFTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oCmluZGV4IDgzZmY0ZDY2MjNiZGZiZTExZDk3ZjZhM2U2M2ZmZmM5YWZiNjA0MTMuLjI2OGQx
NjdmMjdkNmQzYWJiZmY1OTM1MjY3ZmMyMjIzOTEwMTBlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKQEAgLTQ5LDggKzQ5LDYgQEAgU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDb3B5
RGF0YUJ5dGVzLCBPU1N0YXQKICNkZWZpbmUgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc29m
dExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5n
dGgsIHNpemVfdCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikpCiAj
ZGVmaW5lIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJs
b2NrQnVmZmVyR2V0RGF0YUxlbmd0aAotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzLCBPU1N0YXR1cywgKGNv
bnN0IHZvaWQqIHNvdXJjZUJ5dGVzLCBDTUJsb2NrQnVmZmVyUmVmIGRlc3RpbmF0aW9uQnVmZmVy
LCBzaXplX3Qgb2Zmc2V0SW50b0Rlc3RpbmF0aW9uLCBzaXplX3QgZGF0YUxlbmd0aCksIChzb3Vy
Y2VCeXRlcywgZGVzdGluYXRpb25CdWZmZXIsIG9mZnNldEludG9EZXN0aW5hdGlvbiwgZGF0YUxl
bmd0aCkpCi0jZGVmaW5lIENNQmxvY2tCdWZmZXJSZXBsYWNlRGF0YUJ5dGVzIHNvZnRMaW5rX0Nv
cmVNZWRpYV9DTUJsb2NrQnVmZmVyUmVwbGFjZURhdGFCeXRlcwogU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNp
b25zLCBDRkRpY3Rpb25hcnlSZWYsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVz
YykpCiAjZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zIHNvZnRMaW5rX0Nv
cmVNZWRpYV9DTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucwogU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0VHlwZUlELCBD
RlR5cGVJRCwgKHZvaWQpLCAoKSkKQEAgLTIyNSwxNCArMjIzLDEwIEBAIFNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0QnVmZmVyQ291
bnQsIENNSXRlCiAjZGVmaW5lIENNQnVmZmVyUXVldWVHZXRCdWZmZXJDb3VudCBzb2Z0TGlua19D
b3JlTWVkaWFfQ01CdWZmZXJRdWV1ZUdldEJ1ZmZlckNvdW50CiBTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0
aW9uVGltZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkK
ICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUdldEZpcnN0UHJlc2VudGF0aW9uVGltZVN0YW1wIHNvZnRM
aW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlR2V0Rmlyc3RQcmVzZW50YXRpb25UaW1lU3RhbXAK
LVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1
ZXVlR2V0Q2FsbGJhY2tzRm9yVW5zb3J0ZWRTYW1wbGVCdWZmZXJzLCBjb25zdCBDTUJ1ZmZlckNh
bGxiYWNrcyAqLCAoKSwgKCkpCi0jZGVmaW5lIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JV
bnNvcnRlZFNhbXBsZUJ1ZmZlcnMgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVHZXRD
YWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUJ1ZmZlclF1ZXVlR2V0RW5kUHJlc2VudGF0aW9uVGlt
ZVN0YW1wLCBDTVRpbWUsIChDTUJ1ZmZlclF1ZXVlUmVmIHF1ZXVlKSwgKHF1ZXVlKSkKICNkZWZp
bmUgQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3Jl
TWVkaWFfQ01CdWZmZXJRdWV1ZUdldEVuZFByZXNlbnRhdGlvblRpbWVTdGFtcAogU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQnVmZmVyUXVldWVJbnN0YWxs
VHJpZ2dlcldpdGhJbnRlZ2VyVGhyZXNob2xkLCBPU1N0YXR1cywgKENNQnVmZmVyUXVldWVSZWYg
cXVldWUsIENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgdHJpZ2dlckNhbGxiYWNrLCB2b2lk
KiB0cmlnZ2VyUmVmY29uLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNvbmRpdGlvbiB0cmlnZ2VyQ29u
ZGl0aW9uLCBDTUl0ZW1Db3VudCB0cmlnZ2VyVGhyZXNob2xkLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dl
clRva2VuKiB0cmlnZ2VyVG9rZW5PdXQpLCAocXVldWUsIHRyaWdnZXJDYWxsYmFjaywgdHJpZ2dl
clJlZmNvbiwgdHJpZ2dlckNvbmRpdGlvbiwgdHJpZ2dlclRocmVzaG9sZCwgdHJpZ2dlclRva2Vu
T3V0KSkKICNkZWZpbmUgQ01CdWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyV2l0aEludGVnZXJUaHJl
c2hvbGQgc29mdExpbmtfQ29yZU1lZGlhX0NNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcldpdGhJ
bnRlZ2VyVGhyZXNob2xkCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVN
ZWRpYSwgQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEsIE9TU3RhdHVzLCAoQ01CdWZmZXJRdWV1
ZVJlZiBxdWV1ZSksIChxdWV1ZSkpCi0jZGVmaW5lIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRh
IHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YQogCiBTT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVu
dEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ01TYW1wbGVBdHRhY2ht
ZW50S2V5X0RvTm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRLZXlf
RG9Ob3REaXNwbGF5KCkKQEAgLTI2MiwxNSArMjU2LDYgQEAgU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1w
ZWQKICNkZWZpbmUga0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCBnZXRfQ29yZU1l
ZGlhX2tDTVRpbWViYXNlTm90aWZpY2F0aW9uX1RpbWVKdW1wZWQoKQogU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckNvbnN1bWVyTm90
aWZpY2F0aW9uX0J1ZmZlckNvbnN1bWVkLCBDRlN0cmluZ1JlZikKICNkZWZpbmUga0NNU2FtcGxl
QnVmZmVyQ29uc3VtZXJOb3RpZmljYXRpb25fQnVmZmVyQ29uc3VtZWQgZ2V0X0NvcmVNZWRpYV9r
Q01TYW1wbGVCdWZmZXJDb25zdW1lck5vdGlmaWNhdGlvbl9CdWZmZXJDb25zdW1lZCgpCi1TT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVy
QXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbiwgQ0ZTdHJpbmdSZWYpCi0j
ZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRW5kc1ByZXZpb3VzU2FtcGxlRHVy
YXRpb24gZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0VuZHNQcmV2
aW91c1NhbXBsZUR1cmF0aW9uKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwg
Q29yZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X0dyYWR1YWxEZWNvZGVyUmVm
cmVzaCwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlf
R3JhZHVhbERlY29kZXJSZWZyZXNoIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNo
bWVudEtleV9HcmFkdWFsRGVjb2RlclJlZnJlc2goKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBDb3JlTWVkaWEsIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNo
bWVudEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCBDRlN0cmluZ1JlZikKLSNkZWZpbmUgZ2V0X0Nv
cmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQg
Z2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0
U3RhcnQoKQotCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUsIGNvbnN0IHZvaWQqLCAoQ01B
dWRpb0Zvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MsIHNpemVfdCogc2l6ZU91dCksIChkZXNjLCBz
aXplT3V0KSkKLSNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0TWFnaWNDb29raWUg
c29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkdldE1hZ2ljQ29va2ll
CiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01BdWRpb0Zv
cm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiwgY29uc3QgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyks
IChkZXNjKSkKICNkZWZpbmUgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNE
ZXNjcmlwdGlvbiBzb2Z0TGlua19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2ssIE9TU3RhdHVz
LCAoQ0ZBbGxvY2F0b3JSZWYgc3RydWN0dXJlQWxsb2NhdG9yLCB2b2lkKiBtZW1vcnlCbG9jaywg
c2l6ZV90IGJsb2NrTGVuZ3RoLCBDRkFsbG9jYXRvclJlZiBibG9ja0FsbG9jYXRvciwgY29uc3Qg
Q01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlKiBjdXN0b21CbG9ja1NvdXJjZSwgc2l6ZV90
IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIENNQmxvY2tCdWZmZXJGbGFncyBmbGFn
cywgQ01CbG9ja0J1ZmZlclJlZiogYmxvY2tCdWZmZXJPdXQpLCAoc3RydWN0dXJlQWxsb2NhdG9y
LCBtZW1vcnlCbG9jaywgYmxvY2tMZW5ndGgsIGJsb2NrQWxsb2NhdG9yLCBjdXN0b21CbG9ja1Nv
dXJjZSwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBmbGFncywgYmxvY2tCdWZmZXJPdXQpKQpA
QCAtMjc5LDggKzI2NCw2IEBAIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29y
ZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldEF1ZGlvQnVmZmVyTGlzdFdpCiAjZGVmaW5lIENNU2Ft
cGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVkQmxvY2tCdWZmZXIgc29mdExp
bmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0QXVkaW9CdWZmZXJMaXN0V2l0aFJldGFpbmVk
QmxvY2tCdWZmZXIKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBDTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMsIENNSXRlbUNvdW50LCAoQ01TYW1wbGVCdWZm
ZXJSZWYgc2J1ZiksIChzYnVmKSkKICNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXROdW1TYW1wbGVz
IHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldE51bVNhbXBsZXMKLVNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRm9ybWF0RGVzY3Jp
cHRpb25HZXRSaWNoZXN0RGVjb2RhYmxlRm9ybWF0LCBjb25zdCBBdWRpb0Zvcm1hdExpc3RJdGVt
ICosIChDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNjKSkKLSNkZWZpbmUg
Q01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdCBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZv
cm1hdAogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2Ft
cGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZvclJhbmdlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9y
UmVmIGFsbG9jYXRvciwgQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ0ZSYW5nZSBzYW1wbGVSYW5n
ZSwgQ01TYW1wbGVCdWZmZXJSZWYqIHNCdWZPdXQpLCAoYWxsb2NhdG9yLCBzYnVmLCBzYW1wbGVS
YW5nZSwgc0J1Zk91dCkpCiAjZGVmaW5lIENNU2FtcGxlQnVmZmVyQ29weVNhbXBsZUJ1ZmZlckZv
clJhbmdlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckNvcHlTYW1wbGVCdWZmZXJG
b3JSYW5nZQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
U2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVy
UmVmIHNidWYsIENNSXRlbUNvdW50IHNpemVBcnJheUVudHJpZXMsIHNpemVfdCogc2l6ZUFycmF5
T3V0LCBDTUl0ZW1Db3VudCogc2l6ZUFycmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCBzaXpl
QXJyYXlFbnRyaWVzLCBzaXplQXJyYXlPdXQsIHNpemVBcnJheUVudHJpZXNOZWVkZWRPdXQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGlu
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRiYTM3NjE3N2EwZmU3ODBlMjFlMzc3
M2IwODZhYzJhNWIxOTEzMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NmL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaWYgVVNFKEFWRk9VTkRBVElPTikKLQotI2ltcG9ydCA8VmlkZW9Ub29s
Ym94L1ZUQ29tcHJlc3Npb25TZXNzaW9uLmg+Ci0KLSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcu
aD4KLQotU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFBBTCwgVmlkZW9Ub29sYm94KQot
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29t
cHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgQ0ZTdHJpbmdSZWYpCi1TT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Np
b25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24sIENGU3RyaW5nUmVmKQot
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gsIGtWVENvbXBy
ZXNzaW9uUHJvcGVydHlLZXlfUmVhbFRpbWUsIENGU3RyaW5nUmVmKQotCi1TT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRShQQUwsIFZpZGVvVG9vbGJveCwga1ZUVmlkZW9FbmNvZGVyU3BlY2lm
aWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyLCBDRlN0cmluZ1Jl
ZikKLQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBWaWRlb1Rvb2xib3gsIFZU
Q29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIENNVmlkZW9Db2RlY1R5cGUgY29k
ZWNUeXBlLCBDRkRpY3Rpb25hcnlSZWYgZW5jb2RlclNwZWNpZmljYXRpb24sIENGRGljdGlvbmFy
eVJlZiBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJpYnV0ZXMsIENGQWxsb2NhdG9yUmVmIGNvbXByZXNz
ZWREYXRhQWxsb2NhdG9yLCBWVENvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2sgb3V0cHV0Q2FsbGJh
Y2ssIHZvaWQqIG91dHB1dENhbGxiYWNrUmVmQ29uLCBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiog
Y29tcHJlc3Npb25TZXNzaW9uT3V0KSwgKGFsbG9jYXRvciwgd2lkdGgsIGhlaWdodCwgY29kZWNU
eXBlLCBlbmNvZGVyU3BlY2lmaWNhdGlvbiwgc291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBj
b21wcmVzc2VkRGF0YUFsbG9jYXRvciwgb3V0cHV0Q2FsbGJhY2ssIG91dHB1dENhbGxiYWNrUmVm
Q29uLCBjb21wcmVzc2lvblNlc3Npb25PdXQpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMs
IE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNlc3Npb25SZWYgc2Vzc2lvbiwgQ01UaW1lIGNvbXBs
ZXRlVW50aWxQcmVzZW50YXRpb25UaW1lU3RhbXApLCAoc2Vzc2lvbiwgY29tcGxldGVVbnRpbFBy
ZXNlbnRhdGlvblRpbWVTdGFtcCkpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUws
IFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMs
IChWVENvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDVkltYWdlQnVmZmVyUmVmIGltYWdl
QnVmZmVyLCBDTVRpbWUgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZHVyYXRpb24sIENG
RGljdGlvbmFyeVJlZiBmcmFtZVByb3BlcnRpZXMsIHZvaWQqIHNvdXJjZUZyYW1lUmVmY29uLCBW
VEVuY29kZUluZm9GbGFncyogaW5mb0ZsYWdzT3V0KSwgKHNlc3Npb24sIGltYWdlQnVmZmVyLCBw
cmVzZW50YXRpb25UaW1lU3RhbXAsIGR1cmF0aW9uLCBmcmFtZVByb3BlcnRpZXMsIHNvdXJjZUZy
YW1lUmVmY29uLCBpbmZvRmxhZ3NPdXQpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
UEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJh
bWVzLCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24pLCAoc2Vzc2lv
bikpCi0KLSNlbmRpZiAvLyBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkYTlmZTUxZTBmZjE1Y2YyM2RhZDk4MDg5YzI1OTZhZGYxOTBhZDQ2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY2YvVmlkZW9Ub29sYm94U29mdExpbmsuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBVU0UoQVZGT1VOREFUSU9O
KQotCi0jaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktf
Rk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCkKLQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9I
RUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIGtWVENvbXByZXNzaW9uUHJvcGVydHlLZXlfRXhwZWN0
ZWRGcmFtZVJhdGUsIENGU3RyaW5nUmVmKQotI2RlZmluZSBrVlRDb21wcmVzc2lvblByb3BlcnR5
S2V5X0V4cGVjdGVkRnJhbWVSYXRlIGdldF9WaWRlb1Rvb2xib3hfa1ZUQ29tcHJlc3Npb25Qcm9w
ZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURF
UihQQUwsIFZpZGVvVG9vbGJveCwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhLZXlGcmFt
ZUludGVydmFsRHVyYXRpb24sIENGU3RyaW5nUmVmKQotI2RlZmluZSBrVlRDb21wcmVzc2lvblBy
b3BlcnR5S2V5X01heEtleUZyYW1lSW50ZXJ2YWxEdXJhdGlvbiBnZXRfVmlkZW9Ub29sYm94X2tW
VENvbXByZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uKCkKLVNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgVmlkZW9Ub29sYm94LCBrVlRDb21wcmVz
c2lvblByb3BlcnR5S2V5X1JlYWxUaW1lLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga1ZUQ29tcHJl
c3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSBnZXRfVmlkZW9Ub29sYm94X2tWVENvbXByZXNzaW9u
UHJvcGVydHlLZXlfUmVhbFRpbWUoKQotCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIFZpZGVvVG9vbGJveCwga1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJk
d2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga1ZUVmlk
ZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNv
ZGVyIGdldF9WaWRlb1Rvb2xib3hfa1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlvbl9FbmFibGVI
YXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyKCkKLQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoUEFMLCBWaWRlb1Rvb2xib3gsIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlLCBP
U1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgaW50MzJfdCB3aWR0aCwgaW50MzJf
dCBoZWlnaHQsIENNVmlkZW9Db2RlY1R5cGUgY29kZWNUeXBlLCBDRkRpY3Rpb25hcnlSZWYgZW5j
b2RlclNwZWNpZmljYXRpb24sIENGRGljdGlvbmFyeVJlZiBzb3VyY2VJbWFnZUJ1ZmZlckF0dHJp
YnV0ZXMsIENGQWxsb2NhdG9yUmVmIGNvbXByZXNzZWREYXRhQWxsb2NhdG9yLCBWVENvbXByZXNz
aW9uT3V0cHV0Q2FsbGJhY2sgb3V0cHV0Q2FsbGJhY2ssIHZvaWQqIG91dHB1dENhbGxiYWNrUmVm
Q29uLCBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiogY29tcHJlc3Npb25TZXNzaW9uT3V0KSwgKGFs
bG9jYXRvciwgd2lkdGgsIGhlaWdodCwgY29kZWNUeXBlLCBlbmNvZGVyU3BlY2lmaWNhdGlvbiwg
c291cmNlSW1hZ2VCdWZmZXJBdHRyaWJ1dGVzLCBjb21wcmVzc2VkRGF0YUFsbG9jYXRvciwgb3V0
cHV0Q2FsbGJhY2ssIG91dHB1dENhbGxiYWNrUmVmQ29uLCBjb21wcmVzc2lvblNlc3Npb25PdXQp
KQotI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkNyZWF0ZSBzb2Z0TGlua19WaWRlb1Rvb2xi
b3hfVlRDb21wcmVzc2lvblNlc3Npb25DcmVhdGUKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgVmlkZW9Ub29sYm94LCBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVz
LCBPU1N0YXR1cywgKFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb24sIENNVGltZSBjb21w
bGV0ZVVudGlsUHJlc2VudGF0aW9uVGltZVN0YW1wKSwgKHNlc3Npb24sIGNvbXBsZXRlVW50aWxQ
cmVzZW50YXRpb25UaW1lU3RhbXApKQotI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBs
ZXRlRnJhbWVzIHNvZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBs
ZXRlRnJhbWVzCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJv
eCwgVlRDb21wcmVzc2lvblNlc3Npb25FbmNvZGVGcmFtZSwgT1NTdGF0dXMsIChWVENvbXByZXNz
aW9uU2Vzc2lvblJlZiBzZXNzaW9uLCBDVkltYWdlQnVmZmVyUmVmIGltYWdlQnVmZmVyLCBDTVRp
bWUgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUgZHVyYXRpb24sIENGRGljdGlvbmFyeVJl
ZiBmcmFtZVByb3BlcnRpZXMsIHZvaWQqIHNvdXJjZUZyYW1lUmVmY29uLCBWVEVuY29kZUluZm9G
bGFncyogaW5mb0ZsYWdzT3V0KSwgKHNlc3Npb24sIGltYWdlQnVmZmVyLCBwcmVzZW50YXRpb25U
aW1lU3RhbXAsIGR1cmF0aW9uLCBmcmFtZVByb3BlcnRpZXMsIHNvdXJjZUZyYW1lUmVmY29uLCBp
bmZvRmxhZ3NPdXQpKQotI2RlZmluZSBWVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lIHNv
ZnRMaW5rX1ZpZGVvVG9vbGJveF9WVENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lCi1TT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFZpZGVvVG9vbGJveCwgVlRDb21wcmVzc2lv
blNlc3Npb25QcmVwYXJlVG9FbmNvZGVGcmFtZXMsIE9TU3RhdHVzLCAoVlRDb21wcmVzc2lvblNl
c3Npb25SZWYgc2Vzc2lvbiksIChzZXNzaW9uKSkKLSNkZWZpbmUgVlRDb21wcmVzc2lvblNlc3Np
b25QcmVwYXJlVG9FbmNvZGVGcmFtZXMgc29mdExpbmtfVmlkZW9Ub29sYm94X1ZUQ29tcHJlc3Np
b25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVzCi0KLSNlbmRpZiAvLyBVU0UoQVZGT1VOREFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGU1NWQzYTgxMWIwNWI4MGRmNWRiOTY0ZTg0YzAxNTU0ZWMwODE5YTUuLmZlYmYw
NWViMDU5NzI4ZjZiZWE5ODE5MzQ2MjYwMDBmOGNiNTBhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTcsNyArMTA5Nyw2
IEBACiAJCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA1MyAvKiBXcml0YWJsZVN0cmVhbUludGVybmFs
c0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTkgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWls
dGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMx
MTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA1
MyAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVT
dHJlYW1CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTQxNkY3OTkwMjNENzUwQ0YwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTZGNzk4RjIzRDc1MENCMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tICovOyB9OwogCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxl
bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NzI1M0E5MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9Owog
CQk0MTc2MTJBRjFFM0E5OTQwMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQjFF
M0E5OTNCMDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAgKi87IH07CiAJCTQx
NzYxMkIwMUUzQTk5NDAwMEMzRDgxRCAvKiBMaWJXZWJSVENNZWRpYUVuZHBvaW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTc2MTJBQzFFM0E5OTNC
MDBDM0Q4MUQgLyogTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oICovOyB9OwpAQCAtMTEzOCw3ICsx
MTM3LDYgQEAKIAkJNDFCODc3NjIyM0RFMTA0NTAwMzYzOEI4IC8qIFJlYWx0aW1lTWVkaWFTb3Vy
Y2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUI4Nzc2MDIzREUxMDQyMDAzNjM4QjggLyogUmVhbHRpbWVNZWRpYVNvdXJjZUlkZW50
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0MUJGMjA0OTIyQkE3QkU4MDAwNEY4MTIgLyogUmVhbHRpbWVWaWRlb1NvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFCRjIwNDAyMkI5NDcx
NjAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MUM3NjBCMTBFREUwM0QzMDBDMTY1NUYgLyog
U2NyaXB0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAvKiBTY3JpcHRTdGF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxQ0Q2RjhDMjNENkU4MjEw
MEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUNENkY4QjIzRDZFODFEMDBCMTY0MjEg
LyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tICovOyB9OwogCQk0MUQwMTVDQTBGNEI1
QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRDAxNUM4MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlw
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
RDEyOUNFMUYzRDBFRjYwMEQxNUU0NyAvKiBXb3JrZXJHbG9iYWxTY29wZUNhY2hlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OEQxRjM0QzI4
MjAwNzk1NDg3IC8qIFdvcmtlckdsb2JhbFNjb3BlQ2FjaGVzLmggKi87IH07CiAJCTQxRDEyOUQw
MUYzRDBGMDUwMEQxNUU0NyAvKiBDYWNoZVF1ZXJ5T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFGQjI3OUIxRjM0Q0VGMDAwNzk1NDg3IC8q
IENhY2hlUXVlcnlPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTczNjIsOCArNzM2MCw2IEBACiAJCTQxNkQ3NTlGMjBDNjQ0MTMwMEQw
MkQyQyAvKiBOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE2RTBCMzcyMDlCQzNDMjAwNEE5NUQ5IC8qIEZldGNoSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaElkZW50aWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2RTI5QTUxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtl
clJlcG9ydGluZ1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtl
clJlcG9ydGluZ1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNkY3OThE
MjNENzUwQ0EwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxNkY3OThGMjNENzUwQ0IwMDgyOUZDMSAv
KiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNzBBMkU5MUQ4QzBDQzAwMDMxODQ1MiAvKiBKU0RPTVdy
YXBwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01XcmFw
cGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTgxMzU0QkJCQzAw
MzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDcxLDggKzc0NjcsNiBA
QAogCQk0MUM3RTEwNTFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFt
VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzQ2Fw
dHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUM3RTEwNjFFNkE1NDM2MDAyN0I0REUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2su
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FudmFzQ2FwdHVyZU1lZGlhU3Ry
ZWFtVHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDN0UxMDgxRTZBQTM3
QzAwMjdCNERFIC8qIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxQ0Q2Rjg5MjNENkU4MUMwMEIxNjQyMSAvKiBWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQxQ0Q2RjhCMjNENkU4MUQwMEIxNjQyMSAvKiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0Y4
QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaEJvZHlDb25zdW1lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQ0Y4QkU1MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJv
ZHlDb25zdW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlD
b25zdW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQwMTVDODBGNEI1Qzcx
MDA0QTY2MkYgLyogQ29udGVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29udGVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODk1LDEy
ICsxODg4OSw4IEBACiAJCTREM0MwNUQ0MjFBRjQ4MDkwMEYyODkwQSAvKiBjb2NvYSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDE2Rjc5OEQyM0Q3NTBD
QTAwODI5RkMxIC8qIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oICovLAotCQkJCTQxNkY3
OThGMjNENzUwQ0IwMDgyOUZDMSAvKiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gKi8s
CiAJCQkJNEQ3M0Y5NEMyMThDNEE4NzAwM0EzRUQ2IC8qIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaCAqLywKIAkJCQk0RDczRjk0RDIxOEM0QTg3MDAzQTNFRDYgLyogTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSAqLywKLQkJCQk0MUNENkY4OTIzRDZFODFDMDBCMTY0
MjEgLyogVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggKi8sCi0JCQkJNDFDRDZGOEIyM0Q2
RTgxRDAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSAqLywKIAkJCSk7
CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzM1NDYs
NyArMzM1MzYsNiBAQAogCQkJCUE5Nzg3Q0I0MUY1RjVDNjYwMEM1NTFDNiAvKiBBY2Nlc3NpYmls
aXR5TWVkaWFPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QwRUVFMEUxNDc0M0YzOTAw
M0VBRkEyIC8qIEF1ZGlvRGVzdGluYXRpb25JT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1
NTk2OTExNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk0MTZGNzk5MDIzRDc1MENGMDA4MjlGQzEgLyogQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBNzk4MjcxNzBBMjc5MTAwRDQ1QzU1
IC8qIEF1ZGlvU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEOEE3QkJCMTk3NzM1
RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJFODhFMEQ4MTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzQyNzksNyArMzQyNjgsNiBAQAogCQkJCTdDNzNGQjA3MTkxRUY0MTcwMDdE
RTA2MSAvKiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTNGQkM0QUYzMTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyRDVBMThGMUM1NDU5MjMwMERFMzRBMyAvKiBW
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFD
RDZGOEMyM0Q2RTgyMTAwQjE2NDIxIC8qIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJFODhFMERFMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEUxMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRl
b1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2NzE3RkEwQUM2MDBERERD
RDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRkltcGwuY3BwCmluZGV4IGYxZjY4MDQ1MjI5MzY1ZDhm
YzNiMDc5NjcyZDJjMjAzM2ZiZWEzOTMuLjczZjFkMGExNTE5ZjJjMDNiOTFkNjk1MTA1MTM1YTRm
MjBkMWRhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5jcHAKQEAg
LTI2LDEwICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNv
cmRlclByaXZhdGVBVkZJbXBsLmgiCiAKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZF
KEFWQVNTRVRXUklURVJERUxFR0FURSkKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5j
bHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgotI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgpAQCAtNjks
MTQgKzY4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbD4g
TWVkaWFSZWNvcmRlclByaXZhdGVBVkZJbXBsOjpjcmVhdGUKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQotCi0gICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgICBp
ZiAodmlkZW9UcmFjaykgewotICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IHZpZGVvVHJhY2stPnNl
dHRpbmdzKCk7Ci0gICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lkdGgoKTsKLSAgICAgICAgaGVp
Z2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7Ci0gICAgfQotICAgIGF1dG8gd3JpdGVyID0gTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZSghIWF1ZGlvVHJhY2ssIHdpZHRoLCBoZWlnaHQp
OworICAgIGF1dG8gd3JpdGVyID0gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNyZWF0ZShh
dWRpb1RyYWNrLCB2aWRlb1RyYWNrKTsKICAgICBpZiAoIXdyaXRlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTEyNyw0ICsxMTksNCBAQCBjb25zdCBTdHJpbmcmIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlQVZGSW1wbDo6bWltZVR5cGUoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxF
R0FURSkKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUFWRklt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVBVkZJbXBsLmgKaW5kZXggMzRlMmE5NmM3OTQxOGQ0ZTg2NmMxYWMyMTA0MDk4Y2M5
MzhmNDRiNS4uMGNmMGRmM2M2NGNjOTcxM2UzMDU5YmUzNmNhY2M5ZmM3Y2NjMGIzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUFWRkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlQVZGSW1wbC5oCkBAIC0yNCw3ICsyNCw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJ
VEVSREVMRUdBVEUpCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIk1lZGlh
UmVjb3JkZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oIgpAQCAtNTYsNCArNTYsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklU
RVJERUxFR0FURSkKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE0N2JmODFlMWQ0NTZjNzBjMmQ5NDRmNzA0NWE4ZTE2ZTA1OWJjZjkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
aAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotCi0j
aW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+Ci0KLXR5cGVkZWYgc3RydWN0IG9wYXF1ZUNN
U2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUF1
ZGlvQ29udmVydGVyKiBBdWRpb0NvbnZlcnRlclJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgewotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPiBjcmVhdGUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywg
dm9pZCogY2FsbGJhY2tPYmplY3QpOwotICAgIH5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Io
KTsKLQotICAgIHZvaWQgZmluaXNoKCk7Ci0gICAgdm9pZCBhZGRTYW1wbGVCdWZmZXIoQ01TYW1w
bGVCdWZmZXJSZWYpOwotICAgIENNU2FtcGxlQnVmZmVyUmVmIGdldE91dHB1dFNhbXBsZUJ1ZmZl
cigpOwotICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gdGFrZU91dHB1dFNhbXBsZUJ1
ZmZlcigpOwotCi1wcml2YXRlOgotICAgIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpOwot
ICAgIGJvb2wgaW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrLCB2b2lkKiBj
YWxsYmFja09iamVjdCk7Ci0KLSAgICBzdGF0aWMgT1NTdGF0dXMgYXVkaW9Db252ZXJ0ZXJDb21w
bGV4SW5wdXREYXRhUHJvYyhBdWRpb0NvbnZlcnRlclJlZiwgVUludDMyKiwgQXVkaW9CdWZmZXJM
aXN0KiwgQXVkaW9TdHJlYW1QYWNrZXREZXNjcmlwdGlvbioqLCB2b2lkKik7Ci0KLSAgICB2b2lk
IHByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYpOwotICAgIGJvb2wgaW5pdEF1
ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlv
blJlZiwgQXVkaW9Gb3JtYXRJRCk7Ci0gICAgc2l6ZV90IGNvbXB1dGVCdWZmZXJTaXplRm9yQXVk
aW9Gb3JtYXQoQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uLCBVSW50MzIsIEZsb2F0MzIpOwot
ICAgIHZvaWQgYXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1wbGVCdWZmZXJSZWYpOwot
ICAgIFJldGFpblB0cjxOU051bWJlcj4gZ3JhZHVhbERlY29kZXJSZWZyZXNoQ291bnQoKTsKLSAg
ICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXJXaXRoTnVtUGFja2V0cyhVSW50MzIgbnVt
UGFja2V0cywgQXVkaW9CdWZmZXJMaXN0KTsKLSAgICB2b2lkIHByb2Nlc3NTYW1wbGVCdWZmZXJz
VW50aWxMb3dXYXRlclRpbWUoQ01UaW1lKTsKLSAgICBPU1N0YXR1cyBwcm92aWRlU291cmNlRGF0
YU51bU91dHB1dFBhY2tldHMoVUludDMyKiwgQXVkaW9CdWZmZXJMaXN0KiwgQXVkaW9TdHJlYW1Q
YWNrZXREZXNjcmlwdGlvbioqKTsKLQotICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBt
X291dHB1dEJ1ZmZlclF1ZXVlOwotICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX2lu
cHV0QnVmZmVyUXVldWU7Ci0gICAgZGlzcGF0Y2hfcXVldWVfdCBtX3NlcmlhbERpc3BhdGNoUXVl
dWU7Ci0gICAgQ01UaW1lIG1fbG93V2F0ZXJUaW1lOwotICAgIGJvb2wgbV9pc0VuY29kaW5nIHsg
ZmFsc2UgfTsKLQotICAgIFJldGFpblB0cjxBdWRpb0NvbnZlcnRlclJlZj4gbV9jb252ZXJ0ZXI7
Ci0gICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fc291cmNlRm9ybWF0OwotICAgIEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX2Rlc3RpbmF0aW9uRm9ybWF0OwotICAgIFJldGFp
blB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRp
b247Ci0gICAgUmV0YWluUHRyPE5TTnVtYmVyPiBtX2dkckNvdW50TnVtOwotICAgIFVJbnQzMiBt
X21heE91dHB1dFBhY2tldFNpemU7Ci0gICAgVmVjdG9yPEF1ZGlvU3RyZWFtUGFja2V0RGVzY3Jp
cHRpb24+IG1fZGVzdGluYXRpb25QYWNrZXREZXNjcmlwdGlvbnM7Ci0KLSAgICBDTVRpbWUgbV9j
dXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wOwotICAgIENNVGltZSBtX2N1cnJlbnRP
dXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXA7Ci0gICAgQ01UaW1lIG1fcmVtYWluaW5nUHJpbWVE
dXJhdGlvbjsKLQotICAgIFZlY3RvcjxjaGFyPiBtX3NvdXJjZUJ1ZmZlcjsKLSAgICBWZWN0b3I8
Y2hhcj4gbV9kZXN0aW5hdGlvbkJ1ZmZlcjsKLQotICAgIFJldGFpblB0cjxDTUJsb2NrQnVmZmVy
UmVmPiBtX3NhbXBsZUJsb2NrQnVmZmVyOwotICAgIHNpemVfdCBtX3NhbXBsZUJsb2NrQnVmZmVy
U2l6ZTsKLSAgICBzaXplX3QgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlcjsKLSAg
ICBBdWRpb0Zvcm1hdElEIG1fb3V0cHV0Q29kZWNUeXBlOwotfTsKLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNiMTUxMjA2MGQ3MGEwYjdkNzJjMWQxYmJlZWMwZTRmNjU0Yzk1OGEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw0OTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQotCi0jaW5jbHVk
ZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9BdWRpb0NvZGVjLmg+Ci0jaW5j
bHVkZSA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVydGVyLmg+Ci0jaW5jbHVkZSA8QXVkaW9Ub29s
Ym94L0F1ZGlvRm9ybWF0Lmg+Ci0jaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0K
LSNpbXBvcnQgPHBhbC9jZi9BdWRpb1Rvb2xib3hTb2Z0TGluay5oPgotCi0jZGVmaW5lIExPV19X
QVRFUl9USU1FX0lOX1NFQ09ORFMgMC4xCi0KLXVzaW5nIG5hbWVzcGFjZSBQQUw7Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoQ01CdWZmZXJRdWV1ZVRy
aWdnZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tPYmplY3QpCi17Ci0gICAgYXV0
byBjb21wcmVzc29yID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
cj4obmV3IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcigpKTsKLSAgICBpZiAoIWNvbXByZXNz
b3ItPmluaXRpYWxpemUoY2FsbGJhY2ssIGNhbGxiYWNrT2JqZWN0KSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGNvbXByZXNzb3I7Ci19Ci0KLUF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKLSAgICA6IG1fc2VyaWFs
RGlzcGF0Y2hRdWV1ZSB7IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLkF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3NvciIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkgfQotICAgICwgbV9s
b3dXYXRlclRpbWUgeyBDTVRpbWVNYWtlV2l0aFNlY29uZHMoTE9XX1dBVEVSX1RJTUVfSU5fU0VD
T05EUywgMTAwMCkgfQotICAgICwgbV9vdXRwdXRDb2RlY1R5cGUgeyBrQXVkaW9Gb3JtYXRNUEVH
NEFBQyB9Ci17Ci19Ci0KLUF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6fkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvcigpCi17Ci0gICAgaWYgKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSkKLSAg
ICAgICAgZGlzcGF0Y2hfcmVsZWFzZShtX3NlcmlhbERpc3BhdGNoUXVldWUpOwotfQotCi1ib29s
IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6aW5pdGlhbGl6ZShDTUJ1ZmZlclF1ZXVlVHJp
Z2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkKLXsKLSAgICBDTUJ1
ZmZlclF1ZXVlUmVmIGlucHV0QnVmZmVyUXVldWU7Ci0gICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1
ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRD
YWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1ZmZlcnMoKSwgJmlucHV0QnVmZmVyUXVldWUpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVDcmVhdGUgZm9yIG1faW5wdXRCdWZmZXJRdWV1ZSBm
YWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICBtX2lucHV0QnVmZmVyUXVldWUgPSBhZG9wdENGKGlucHV0QnVmZmVyUXVldWUpOwotCi0gICAg
Q01CdWZmZXJRdWV1ZVJlZiBvdXRwdXRCdWZmZXJRdWV1ZTsKLSAgICBpZiAoYXV0byBlcnJvciA9
IENNQnVmZmVyUXVldWVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ01CdWZmZXJRdWV1
ZUdldENhbGxiYWNrc0ZvclVuc29ydGVkU2FtcGxlQnVmZmVycygpLCAmb3V0cHV0QnVmZmVyUXVl
dWUpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVDcmVhdGUgZm9yIG1fb3V0cHV0QnVmZmVy
UXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0gICAgbV9vdXRwdXRCdWZmZXJRdWV1ZSA9IGFkb3B0Q0Yob3V0cHV0QnVmZmVyUXVldWUp
OwotICAgIENNQnVmZmVyUXVldWVJbnN0YWxsVHJpZ2dlcihtX291dHB1dEJ1ZmZlclF1ZXVlLmdl
dCgpLCBjYWxsYmFjaywgY2FsbGJhY2tPYmplY3QsIGtDTUJ1ZmZlclF1ZXVlVHJpZ2dlcl9XaGVu
RGF0YUJlY29tZXNSZWFkeSwga0NNVGltZVplcm8sIE5VTEwpOwotCi0gICAgbV9pc0VuY29kaW5n
ID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OmZpbmlzaCgpCi17Ci0gICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNo
UXVldWUsIF57Ci0gICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUo
a0NNVGltZUludmFsaWQpOwotICAgICAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtF
bmRPZkRhdGEobV9vdXRwdXRCdWZmZXJRdWV1ZS5nZXQoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YSBmYWlsZWQgJWQiLCBlcnJvcik7Ci0gICAgICAg
IG1faXNFbmNvZGluZyA9IGZhbHNlOwotICAgIH0pOwotfQotCi1ib29sIEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6aW5pdEF1ZGlvQ29udmVydGVyRm9yU291cmNlRm9ybWF0RGVzY3JpcHRp
b24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiwgQXVkaW9Gb3JtYXRJ
RCBvdXRwdXRGb3JtYXRJRCkKLXsKLSAgICBjb25zdCBhdXRvICphdWRpb0Zvcm1hdExpc3RJdGVt
ID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0UmljaGVzdERlY29kYWJsZUZvcm1hdChmb3Jt
YXREZXNjcmlwdGlvbik7Ci0gICAgbV9zb3VyY2VGb3JtYXQgPSBhdWRpb0Zvcm1hdExpc3RJdGVt
LT5tQVNCRDsKLQotICAgIG1lbXNldCgmbV9kZXN0aW5hdGlvbkZvcm1hdCwgMCwgc2l6ZW9mKEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbikpOwotICAgIG1fZGVzdGluYXRpb25Gb3JtYXQubUZv
cm1hdElEID0gb3V0cHV0Rm9ybWF0SUQ7Ci0gICAgbV9kZXN0aW5hdGlvbkZvcm1hdC5tU2FtcGxl
UmF0ZSA9IG1fc291cmNlRm9ybWF0Lm1TYW1wbGVSYXRlOwotICAgIG1fZGVzdGluYXRpb25Gb3Jt
YXQubUNoYW5uZWxzUGVyRnJhbWUgPSBtX3NvdXJjZUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZTsK
LQotICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKG1fZGVzdGluYXRpb25Gb3JtYXQpOwotICAgIGlm
IChhdXRvIGVycm9yID0gQXVkaW9Gb3JtYXRHZXRQcm9wZXJ0eShrQXVkaW9Gb3JtYXRQcm9wZXJ0
eV9Gb3JtYXRJbmZvLCAwLCBOVUxMLCAmc2l6ZSwgJm1fZGVzdGluYXRpb25Gb3JtYXQpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIEF1ZGlvRm9ybWF0R2V0UHJvcGVydHkgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBBdWRpb0NvbnZlcnRlclJlZiBj
b252ZXJ0ZXI7Ci0gICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlck5ldygmbV9zb3Vy
Y2VGb3JtYXQsICZtX2Rlc3RpbmF0aW9uRm9ybWF0LCAmY29udmVydGVyKSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ciBBdWRpb0NvbnZlcnRlck5ldyBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICBtX2NvbnZlcnRlciA9IGFkb3B0Q0YoY29udmVydGVyKTsK
LQotICAgIHNpemVfdCBjb29raWVTaXplID0gMDsKLSAgICBjb25zdCB2b2lkICpjb29raWUgPSBD
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRNYWdpY0Nvb2tpZShmb3JtYXREZXNjcmlwdGlvbiwg
JmNvb2tpZVNpemUpOwotICAgIGlmIChjb29raWVTaXplKSB7Ci0gICAgICAgIGlmIChhdXRvIGVy
cm9yID0gQXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlv
Q29udmVydGVyRGVjb21wcmVzc2lvbk1hZ2ljQ29va2llLCAoVUludDMyKWNvb2tpZVNpemUsIGNv
b2tpZSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29udmVydGVyRGVjb21wcmVz
c2lvbk1hZ2ljQ29va2llIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2l6ZSA9IHNpemVvZihtX3NvdXJj
ZUZvcm1hdCk7Ci0gICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5
KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNj
cmlwdGlvbiwgJnNpemUsICZtX3NvdXJjZUZvcm1hdCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBr
QXVkaW9Db252ZXJ0ZXJDdXJyZW50SW5wdXRTdHJlYW1EZXNjcmlwdGlvbiBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICghbV9z
b3VyY2VGb3JtYXQubUJ5dGVzUGVyUGFja2V0KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAibUJ5dGVzUGVyUGFja2V0IHNob3VsZCBub3QgYmUgemVybyIpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc2l6ZSA9IHNpemVvZihtX2Rlc3RpbmF0
aW9uRm9ybWF0KTsKLSAgICBpZiAoYXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVy
dHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRPdXRwdXRTdHJlYW1E
ZXNjcmlwdGlvbiwgJnNpemUsICZtX2Rlc3RpbmF0aW9uRm9ybWF0KSkgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBn
ZXR0aW5nIGtBdWRpb0NvbnZlcnRlckN1cnJlbnRPdXRwdXRTdHJlYW1EZXNjcmlwdGlvbiBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRNUEVHNEFB
QykgewotICAgICAgICAvLyBGSVhNRTogU2V0IG91dHB1dEJpdFJhdGUgYWNjb3JkaW5nIE1lZGlh
UmVjb3JkZXJPcHRpb25zLmF1ZGlvQml0c1BlclNlY29uZC4KLSAgICAgICAgVUludDMyIG91dHB1
dEJpdFJhdGUgPSA2NDAwMDsKLSAgICAgICAgaWYgKG1fZGVzdGluYXRpb25Gb3JtYXQubVNhbXBs
ZVJhdGUgPj0gNDQxMDApCi0gICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMTkyMDAwOwotICAg
ICAgICBlbHNlIGlmIChtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlIDwgMjIwMDApCi0g
ICAgICAgICAgICBvdXRwdXRCaXRSYXRlID0gMzIwMDA7Ci0KLSAgICAgICAgc2l6ZSA9IHNpemVv
ZihvdXRwdXRCaXRSYXRlKTsKLSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRl
clNldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJFbmNvZGVCaXRS
YXRlLCBzaXplLCAmb3V0cHV0Qml0UmF0ZSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1
ZGlvQ29udmVydGVyRW5jb2RlQml0UmF0ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghbV9kZXN0
aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpIHsKLSAgICAgICAgLy8gSWYgdGhlIGRlc3Rp
bmF0aW9uIGZvcm1hdCBpcyBWQlIsIHdlIG5lZWQgdG8gZ2V0IG1heCBzaXplIHBlciBwYWNrZXQg
ZnJvbSB0aGUgY29udmVydGVyLgotICAgICAgICBzaXplID0gc2l6ZW9mKG1fbWF4T3V0cHV0UGFj
a2V0U2l6ZSk7Ci0KLSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFBy
b3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eU1heGltdW1P
dXRwdXRQYWNrZXRTaXplLCAmc2l6ZSwgJm1fbWF4T3V0cHV0UGFja2V0U2l6ZSkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIGdldHRpbmcga0F1ZGlvQ29udmVydGVyUHJvcGVydHlNYXhpbXVtT3V0cHV0UGFj
a2V0U2l6ZSBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fZGVzdGluYXRpb25CdWZmZXIucmVzZXJ2ZUNh
cGFjaXR5KGNvbXB1dGVCdWZmZXJTaXplRm9yQXVkaW9Gb3JtYXQobV9kZXN0aW5hdGlvbkZvcm1h
dCwgbV9tYXhPdXRwdXRQYWNrZXRTaXplLCBMT1dfV0FURVJfVElNRV9JTl9TRUNPTkRTKSk7Ci0g
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1CeXRlc1BlclBhY2tldCkKLSAgICAgICAgbV9k
ZXN0aW5hdGlvblBhY2tldERlc2NyaXB0aW9ucy5yZXNlcnZlQ2FwYWNpdHkobV9kZXN0aW5hdGlv
bkJ1ZmZlci5jYXBhY2l0eSgpIC8gbV9tYXhPdXRwdXRQYWNrZXRTaXplKTsKLQotICAgIHJldHVy
biB0cnVlOwotfQotCi1zaXplX3QgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjb21wdXRl
QnVmZmVyU2l6ZUZvckF1ZGlvRm9ybWF0KEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBmb3Jt
YXQsIFVJbnQzMiBtYXhPdXRwdXRQYWNrZXRTaXplLCBGbG9hdDMyIGR1cmF0aW9uKQotewotICAg
IFVJbnQzMiBudW1QYWNrZXRzID0gKGZvcm1hdC5tU2FtcGxlUmF0ZSAqIGR1cmF0aW9uKSAvIGZv
cm1hdC5tRnJhbWVzUGVyUGFja2V0OwotICAgIFVJbnQzMiBvdXRwdXRQYWNrZXRTaXplID0gZm9y
bWF0Lm1CeXRlc1BlclBhY2tldCA/IGZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtYXhPdXRwdXRQ
YWNrZXRTaXplOwotICAgIFVJbnQzMiBidWZmZXJTaXplID0gbnVtUGFja2V0cyAqIG91dHB1dFBh
Y2tldFNpemU7Ci0KLSAgICByZXR1cm4gYnVmZmVyU2l6ZTsKLX0KLQotdm9pZCBBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKENNU2FtcGxlQnVm
ZmVyUmVmIGJ1ZmZlcikKLXsKLSAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQobV9yZW1haW5pbmdQ
cmltZUR1cmF0aW9uKSkgewotICAgICAgICBBdWRpb0NvbnZlcnRlclByaW1lSW5mbyBwcmltZUlu
Zm8geyAwLCAwIH07Ci0gICAgICAgIFVJbnQzMiBzaXplID0gc2l6ZW9mKHByaW1lSW5mbyk7Ci0K
LSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29u
dmVydGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8sICZzaXplLCAmcHJpbWVJbmZv
KSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgZ2V0dGluZyBrQXVkaW9Db252ZXJ0ZXJQcmltZUluZm8gZmFp
bGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24gPSBDTVRpbWVNYWtlKHByaW1lSW5mby5s
ZWFkaW5nRnJhbWVzLCBtX2Rlc3RpbmF0aW9uRm9ybWF0Lm1TYW1wbGVSYXRlKTsKLSAgICB9Ci0K
LSAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5FKGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmlu
Z1ByaW1lRHVyYXRpb24pKSB7Ci0gICAgICAgIENNVGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2Ft
cGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsKLSAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlv
biA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRpb24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlv
bik7Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiB0cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5
QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCk7Ci0gICAgICAg
IENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJp
bUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnREaWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91
bGRQcm9wYWdhdGUpOwotICAgICAgICBDRlJlbGVhc2UodHJpbUF0U3RhcnREaWN0KTsKLSAgICAg
ICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQ
cmltZUR1cmF0aW9uLCB0cmltRHVyYXRpb24pOwotICAgIH0KLX0KLQotUmV0YWluUHRyPE5TTnVt
YmVyPiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmdyYWR1YWxEZWNvZGVyUmVmcmVzaENv
dW50KCkKLXsKLSAgICBVSW50MzIgZGVsYXlTaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKLSAgICB1
aW50MzJfdCBvcmlnaW5hbERlbGF5TW9kZSA9IDA7Ci0gICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRp
b0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVydGVyLmdldCgpLCBrQXVkaW9Db2RlY1Byb3Bl
cnR5RGVsYXlNb2RlLCAmZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yIGdldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAlZCIs
IGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICB1aW50MzJfdCBvcHRp
bWFsRGVsYXlNb2RlID0ga0F1ZGlvQ29kZWNEZWxheU1vZGVfT3B0aW1hbDsKLSAgICBpZiAoYXV0
byBlcnJvciA9IEF1ZGlvQ29udmVydGVyU2V0UHJvcGVydHkobV9jb252ZXJ0ZXIuZ2V0KCksIGtB
dWRpb0NvZGVjUHJvcGVydHlEZWxheU1vZGUsIGRlbGF5U2l6ZSwgJm9wdGltYWxEZWxheU1vZGUp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWls
ZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBV
SW50MzIgcHJpbWVTaXplID0gc2l6ZW9mKEF1ZGlvQ29kZWNQcmltZUluZm8pOwotICAgIEF1ZGlv
Q29kZWNQcmltZUluZm8gcHJpbWVJbmZvIHsgMCwgMCB9OwotICAgIGlmIChhdXRvIGVycm9yID0g
QXVkaW9Db252ZXJ0ZXJHZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQ
cm9wZXJ0eVByaW1lSW5mbywgJnByaW1lU2l6ZSwgJnByaW1lSW5mbykpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Ig
Z2V0dGluZyBrQXVkaW9Db2RlY1Byb3BlcnR5UHJpbWVJbmZvIGZhaWxlZCB3aXRoICVkIiwgZXJy
b3IpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChhdXRvIGVycm9yID0g
QXVkaW9Db252ZXJ0ZXJTZXRQcm9wZXJ0eShtX2NvbnZlcnRlci5nZXQoKSwga0F1ZGlvQ29kZWNQ
cm9wZXJ0eURlbGF5TW9kZSwgZGVsYXlTaXplLCAmb3JpZ2luYWxEZWxheU1vZGUpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIHNldHRpbmcga0F1ZGlvQ29kZWNQcm9wZXJ0eURlbGF5TW9kZSBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgcmV0dXJuIGFkb3B0
TlMoW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KHByaW1lSW5mby5sZWFkaW5nRnJhbWVzIC8gbV9k
ZXN0aW5hdGlvbkZvcm1hdC5tRnJhbWVzUGVyUGFja2V0KV0pOwotfQotCi1DTVNhbXBsZUJ1ZmZl
clJlZiBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNhbXBsZUJ1ZmZlcldpdGhOdW1QYWNr
ZXRzKFVJbnQzMiBudW1QYWNrZXRzLCBBdWRpb0J1ZmZlckxpc3QgZmlsbEJ1ZmZlckxpc3QpCi17
Ci0gICAgVmVjdG9yPGNoYXI+IGNvb2tpZTsKLSAgICBpZiAoIW1fZGVzdGluYXRpb25Gb3JtYXRE
ZXNjcmlwdGlvbikgewotICAgICAgICBVSW50MzIgY29va2llU2l6ZSA9IDA7Ci0KLSAgICAgICAg
YXV0byBlcnJvciA9IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHlJbmZvKG1fY29udmVydGVyLmdl
dCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2llU2l6ZSwg
TlVMTCk7Ci0gICAgICAgIGlmICgoZXJyb3IgPT0gbm9FcnIpICYmICEhY29va2llU2l6ZSkgewot
ICAgICAgICAgICAgY29va2llLnJlc2VydmVDYXBhY2l0eShjb29raWVTaXplKTsKLQotICAgICAg
ICAgICAgaWYgKGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckdldFByb3BlcnR5KG1fY29udmVy
dGVyLmdldCgpLCBrQXVkaW9Db252ZXJ0ZXJDb21wcmVzc2lvbk1hZ2ljQ29va2llLCAmY29va2ll
U2l6ZSwgY29va2llLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBnZXR0aW5nIGtBdWRp
b0NvbnZlcnRlckNvbXByZXNzaW9uTWFnaWNDb29raWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzdGluYXRpb25Gb3JtYXREZXNjcmlw
dGlvbjsKLSAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25D
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgJm1fZGVzdGluYXRpb25Gb3JtYXQsIDAsIE5VTEws
IGNvb2tpZVNpemUsIGNvb2tpZS5kYXRhKCksIE5VTEwsICZkZXN0aW5hdGlvbkZvcm1hdERlc2Ny
aXB0aW9uKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRl
IGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAg
ICAgfQotICAgICAgICBtX2Rlc3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24gPSBhZG9wdENGKGRl
c3RpbmF0aW9uRm9ybWF0RGVzY3JpcHRpb24pOwotICAgICAgICBtX2dkckNvdW50TnVtID0gZ3Jh
ZHVhbERlY29kZXJSZWZyZXNoQ291bnQoKTsKLSAgICB9Ci0KLSAgICBjaGFyICpkYXRhID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhKTsKLSAgICBz
aXplX3QgZGF0YVNpemUgPSBmaWxsQnVmZmVyTGlzdC5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXpl
OwotCi0gICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja0J1ZmZlcjsKLSAgICBpZiAoYXV0byBlcnJv
ciA9IENNQmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2soa0NGQWxsb2NhdG9yRGVmYXVs
dCwgTlVMTCwgZGF0YVNpemUsIGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIDAsIGRhdGFTaXpl
LCBrQ01CbG9ja0J1ZmZlckFzc3VyZU1lbW9yeU5vd0ZsYWcsICZibG9ja0J1ZmZlcikpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgQ01CbG9ja0J1ZmZlckNyZWF0ZVdpdGhNZW1vcnlCbG9jayBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgYXV0byBidWZmZXIg
PSBhZG9wdENGKGJsb2NrQnVmZmVyKTsKLQotICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1
ZmZlclJlcGxhY2VEYXRhQnl0ZXMoZGF0YSwgYnVmZmVyLmdldCgpLCAwLCBkYXRhU2l6ZSkpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlclJlcGxhY2VEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlQnVmZmVyOwotICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvU2FtcGxlQnVmZmVy
Q3JlYXRlV2l0aFBhY2tldERlc2NyaXB0aW9ucyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidWZmZXIu
Z2V0KCksIHRydWUsIE5VTEwsIE5VTEwsIG1fZGVzdGluYXRpb25Gb3JtYXREZXNjcmlwdGlvbi5n
ZXQoKSwgbnVtUGFja2V0cywgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1wLCBt
X2Rlc3RpbmF0aW9uUGFja2V0RGVzY3JpcHRpb25zLmRhdGEoKSwgJnNhbXBsZUJ1ZmZlcik7Ci0g
ICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRo
UGFja2V0RGVzY3JpcHRpb25zIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICByZXR1
cm4gbmlsOwotICAgIH0KLQotICAgIGlmIChbbV9nZHJDb3VudE51bSBpbnRWYWx1ZV0pCi0gICAg
ICAgIENNU2V0QXR0YWNobWVudChzYW1wbGVCdWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1l
bnRLZXlfR3JhZHVhbERlY29kZXJSZWZyZXNoLCAoX19icmlkZ2UgQ0ZUeXBlUmVmKW1fZ2RyQ291
bnROdW0uZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7Ci0KLSAgICBy
ZXR1cm4gc2FtcGxlQnVmZmVyOwotfQotCi1PU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OmF1ZGlvQ29udmVydGVyQ29tcGxleElucHV0RGF0YVByb2MoQXVkaW9Db252ZXJ0ZXJS
ZWYsIFVJbnQzMiAqbnVtT3V0cHV0UGFja2V0c1B0ciwgQXVkaW9CdWZmZXJMaXN0ICpidWZmZXJM
aXN0LCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uICoqcGFja2V0RGVzY3JpcHRpb25PdXQs
IHZvaWQgKmF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcikKLXsKLSAgICBhdXRvICpjb21wcmVz
c29yID0gc3RhdGljX2Nhc3Q8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKj4oYXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yKTsKLSAgICByZXR1cm4gY29tcHJlc3Nvci0+cHJvdmlkZVNvdXJj
ZURhdGFOdW1PdXRwdXRQYWNrZXRzKG51bU91dHB1dFBhY2tldHNQdHIsIGJ1ZmZlckxpc3QsIHBh
Y2tldERlc2NyaXB0aW9uT3V0KTsKLX0KLQotT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKiBudW1PdXRw
dXRQYWNrZXRzUHRyLCBBdWRpb0J1ZmZlckxpc3QqIGF1ZGlvQnVmZmVyTGlzdCwgQXVkaW9TdHJl
YW1QYWNrZXREZXNjcmlwdGlvbioqIHBhY2tldERlc2NyaXB0aW9uT3V0KQotewotICAgIGlmIChw
YWNrZXREZXNjcmlwdGlvbk91dCkKLSAgICAgICAgKnBhY2tldERlc2NyaXB0aW9uT3V0ID0gTlVM
TDsKLQotICAgIGNvbnN0IFVJbnQzMiBudW1QYWNrZXRzVG9Db3B5ID0gKm51bU91dHB1dFBhY2tl
dHNQdHI7Ci0gICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5ID0gKG51bVBhY2tldHNUb0NvcHkgKiBt
X3NvdXJjZUZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQpOwotCi0gICAgaWYgKGF1ZGlvQnVmZmVyTGlz
dC0+bU51bWJlckJ1ZmZlcnMgPT0gMSkgewotICAgICAgICBzaXplX3QgY3VycmVudE9mZnNldElu
U291cmNlQnVmZmVyID0gMDsKLQotICAgICAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNp
dHkobnVtQnl0ZXNUb0NvcHkpOwotCi0gICAgICAgIHdoaWxlIChudW1CeXRlc1RvQ29weSkgewot
ICAgICAgICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIDw9IG1fY3VycmVudE9mZnNl
dEluU2FtcGxlQmxvY2tCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9zYW1wbGVCbG9j
a0J1ZmZlcikgewotICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gbnVs
bHB0cjsKLSAgICAgICAgICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChDTUJ1ZmZlclF1ZXVlSXNF
bXB0eShtX2lucHV0QnVmZmVyUXVldWUuZ2V0KCkpKQotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1w
bGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0
YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Ci0gICAgICAgICAgICAgICAgbV9zYW1w
bGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9p
ZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0
KCkpKSkpKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIp
OwotICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudE9mZnNldEluU2FtcGxlQmxvY2tCdWZmZXIgPSAwOwot
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxl
bmd0aChtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpKTsKLSAgICAgICAgICAgICAgICBtX2N1cnJl
bnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKG1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKLSAgICAgICAgICAgICAgICBzaXplX3Qg
bnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZiA9IHN0ZDo6bWluKG51bUJ5dGVzVG9Db3B5LCAo
bV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgLSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVm
ZmVyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2NrQnVmZmVyQ29w
eURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRPZmZzZXRJblNh
bXBsZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAobV9zb3VyY2VC
dWZmZXIuZGF0YSgpICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgZmFpbGVkIHdpdGggJWQi
LCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0gbnVtQnl0ZXNUb0NvcHlG
cm9tU2FtcGxlQmJ1ZjsKLSAgICAgICAgICAgICAgICBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZm
ZXIgKz0gbnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKLSAgICAgICAgICAgICAgICBtX2N1
cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyICs9IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBs
ZUJidWY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYXVkaW9CdWZmZXJMaXN0
LT5tQnVmZmVyc1swXS5tRGF0YSA9IG1fc291cmNlQnVmZmVyLmRhdGEoKTsKLSAgICAgICAgYXVk
aW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9mZnNldElu
U291cmNlQnVmZmVyOwotICAgICAgICBhdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1OdW1i
ZXJDaGFubmVscyA9IG1fc291cmNlRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lOwotCi0gICAgICAg
ICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURh
dGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRlc1BlclBhY2tldCk7Ci0gICAgICAgIHJl
dHVybiBub0VycjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVy
QnVmZmVycyA9PSAyKTsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IGludGVybGVhdmVkIGRhdGEg
YnkgdW5pbnRlcmxlYXZpbmcgbV9zb3VyY2VCdWZmZXIgaWYgbmVlZGVkLgotICAgIEFTU0VSVCht
X3NvdXJjZUZvcm1hdC5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxl
YXZlZCk7Ci0KLSAgICBtX3NvdXJjZUJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkoMiAqIG51bUJ5dGVz
VG9Db3B5KTsKLSAgICBhdXRvKiBmaXJzdENoYW5uZWwgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7
Ci0gICAgYXV0byogc2Vjb25kQ2hhbm5lbCA9IG1fc291cmNlQnVmZmVyLmRhdGEoKSArIG51bUJ5
dGVzVG9Db3B5OwotCi0gICAgc2l6ZV90IGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZlciA9IDA7
Ci0gICAgd2hpbGUgKG51bUJ5dGVzVG9Db3B5KSB7Ci0gICAgICAgIGlmIChtX3NhbXBsZUJsb2Nr
QnVmZmVyU2l6ZSA8PSBtX2N1cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyKSB7Ci0gICAg
ICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgewotICAgICAgICAgICAgICAgIG1fc2Ft
cGxlQmxvY2tCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tC
dWZmZXJTaXplID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKENNQnVmZmVy
UXVldWVJc0VtcHR5KG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0gYWRvcHRDRigoQ01TYW1w
bGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVEZXF1ZXVlQW5kUmV0
YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Ci0gICAgICAgICAgICBtX3NhbXBsZUJs
b2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4o
Q0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkp
KSkpOwotICAgICAgICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7Ci0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOwotICAgICAgICAg
ICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0gMDsKLSAgICAgICAgICAgICAgICBtX2N1
cnJlbnRPZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyID0gMDsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXpl
ID0gQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSkg
LyAyOwotICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciA9IDA7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobV9zYW1wbGVCbG9ja0J1ZmZlcikgewotICAgICAg
ICAgICAgc2l6ZV90IG51bUJ5dGVzVG9Db3B5RnJvbVNhbXBsZUJidWYgPSBzdGQ6Om1pbihudW1C
eXRlc1RvQ29weSwgKG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplIC0gbV9jdXJyZW50T2Zmc2V0SW5T
YW1wbGVCbG9ja0J1ZmZlcikpOwotICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJsb2Nr
QnVmZmVyQ29weURhdGFCeXRlcyhtX3NhbXBsZUJsb2NrQnVmZmVyLmdldCgpLCBtX2N1cnJlbnRP
ZmZzZXRJblNhbXBsZUJsb2NrQnVmZmVyLCBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmLCAo
Zmlyc3RDaGFubmVsICsgY3VycmVudE9mZnNldEluU291cmNlQnVmZmVyKSkpIHsKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3NvciBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBmaXJzdCBjaGFubmVsIGZhaWxl
ZCB3aXRoICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhdXRvIGVycm9yID0gQ01CbG9ja0J1ZmZlckNvcHlE
YXRhQnl0ZXMobV9zYW1wbGVCbG9ja0J1ZmZlci5nZXQoKSwgbV9jdXJyZW50T2Zmc2V0SW5TYW1w
bGVCbG9ja0J1ZmZlciArIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplLCBudW1CeXRlc1RvQ29weUZy
b21TYW1wbGVCYnVmLCAoc2Vjb25kQ2hhbm5lbCArIGN1cnJlbnRPZmZzZXRJblNvdXJjZUJ1ZmZl
cikpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMgc2Vj
b25kIGNoYW5uZWwgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbnVtQnl0ZXNUb0NvcHkgLT0g
bnVtQnl0ZXNUb0NvcHlGcm9tU2FtcGxlQmJ1ZjsKLSAgICAgICAgICAgIGN1cnJlbnRPZmZzZXRJ
blNvdXJjZUJ1ZmZlciArPSBudW1CeXRlc1RvQ29weUZyb21TYW1wbGVCYnVmOwotICAgICAgICAg
ICAgbV9jdXJyZW50T2Zmc2V0SW5TYW1wbGVCbG9ja0J1ZmZlciArPSBudW1CeXRlc1RvQ29weUZy
b21TYW1wbGVCYnVmOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYXVkaW9CdWZmZXJMaXN0LT5t
QnVmZmVyc1swXS5tRGF0YSA9IGZpcnN0Q2hhbm5lbDsKLSAgICBhdWRpb0J1ZmZlckxpc3QtPm1C
dWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSBjdXJyZW50T2Zmc2V0SW5Tb3VyY2VCdWZmZXI7Ci0g
ICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOwotCi0g
ICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YSA9IHNlY29uZENoYW5uZWw7Ci0g
ICAgYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sxXS5tRGF0YUJ5dGVTaXplID0gY3VycmVudE9m
ZnNldEluU291cmNlQnVmZmVyOwotICAgIGF1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMV0ubU51
bWJlckNoYW5uZWxzID0gMTsKLQotICAgICpudW1PdXRwdXRQYWNrZXRzUHRyID0gKGF1ZGlvQnVm
ZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSAvIG1fc291cmNlRm9ybWF0Lm1CeXRl
c1BlclBhY2tldCk7Ci0gICAgcmV0dXJuIG5vRXJyOwotfQotCi12b2lkIEF1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShDTVRp
bWUgbG93V2F0ZXJUaW1lKQotewotICAgIGlmICghbV9jb252ZXJ0ZXIpIHsKLSAgICAgICAgYXV0
byBidWZmZXIgPSAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVy
UXVldWVHZXRIZWFkKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKTsKLSAgICAgICAgQVNTRVJU
KGJ1ZmZlcik7Ci0KLSAgICAgICAgbV9jdXJyZW50TmF0aXZlUHJlc2VudGF0aW9uVGltZVN0YW1w
ID0gQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKLSAgICAg
ICAgbV9jdXJyZW50T3V0cHV0UHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVCdWZmZXJH
ZXRPdXRwdXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKLQotICAgICAgICBhdXRvIGZv
cm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZm
ZXIpOwotICAgICAgICBpZiAoIWluaXRBdWRpb0NvbnZlcnRlckZvclNvdXJjZUZvcm1hdERlc2Ny
aXB0aW9uKGZvcm1hdERlc2NyaXB0aW9uLCBtX291dHB1dENvZGVjVHlwZSkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgd2hpbGUgKENNVElNRV9JU19JTlZBTElEKGxvd1dhdGVy
VGltZSkgfHwgQ01USU1FX0NPTVBBUkVfSU5MSU5FKGxvd1dhdGVyVGltZSwgPCwgQ01CdWZmZXJR
dWV1ZUdldER1cmF0aW9uKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSB7Ci0gICAgICAgIEF1
ZGlvQnVmZmVyTGlzdCBmaWxsQnVmZmVyTGlzdDsKLQotICAgICAgICBmaWxsQnVmZmVyTGlzdC5t
TnVtYmVyQnVmZmVycyA9IDE7Ci0gICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1O
dW1iZXJDaGFubmVscyA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWU7Ci0g
ICAgICAgIGZpbGxCdWZmZXJMaXN0Lm1CdWZmZXJzWzBdLm1EYXRhQnl0ZVNpemUgPSAoVUludDMy
KW1fZGVzdGluYXRpb25CdWZmZXIuY2FwYWNpdHkoKTsKLSAgICAgICAgZmlsbEJ1ZmZlckxpc3Qu
bUJ1ZmZlcnNbMF0ubURhdGEgPSBtX2Rlc3RpbmF0aW9uQnVmZmVyLmRhdGEoKTsKLQotICAgICAg
ICBVSW50MzIgb3V0cHV0UGFja2V0U2l6ZSA9IG1fZGVzdGluYXRpb25Gb3JtYXQubUJ5dGVzUGVy
UGFja2V0ID8gbV9kZXN0aW5hdGlvbkZvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgOiBtX21heE91dHB1
dFBhY2tldFNpemU7Ci0gICAgICAgIFVJbnQzMiBudW1PdXRwdXRQYWNrZXRzID0gKFVJbnQzMilt
X2Rlc3RpbmF0aW9uQnVmZmVyLmNhcGFjaXR5KCkgLyBvdXRwdXRQYWNrZXRTaXplOwotCi0gICAg
ICAgIGF1dG8gZXJyb3IgPSBBdWRpb0NvbnZlcnRlckZpbGxDb21wbGV4QnVmZmVyKG1fY29udmVy
dGVyLmdldCgpLCBhdWRpb0NvbnZlcnRlckNvbXBsZXhJbnB1dERhdGFQcm9jLCB0aGlzLCAmbnVt
T3V0cHV0UGFja2V0cywgJmZpbGxCdWZmZXJMaXN0LCBtX2Rlc3RpbmF0aW9uUGFja2V0RGVzY3Jp
cHRpb25zLmRhdGEoKSk7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQXVk
aW9Db252ZXJ0ZXJGaWxsQ29tcGxleEJ1ZmZlciBmYWlsZWQgd2l0aCAlZCIsIGVycm9yKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghbnVtT3V0cHV0UGFj
a2V0cykKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGF1dG8gYnVmZmVyID0gc2FtcGxl
QnVmZmVyV2l0aE51bVBhY2tldHMobnVtT3V0cHV0UGFja2V0cywgZmlsbEJ1ZmZlckxpc3QpOwot
Ci0gICAgICAgIGF0dGFjaFByaW1pbmdUcmltc0lmTmVlZGVkKGJ1ZmZlcik7Ci0KLSAgICAgICAg
ZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZm
ZXIsIG1fY3VycmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCk7Ci0gICAgICAgIGlmIChl
cnJvcikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJTZXRPdXRwdXRQcmVzZW50YXRp
b25UaW1lU3RhbXAgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBDTVRpbWUgbmF0aXZlRHVyYXRpb24gPSBDTVNhbXBsZUJ1
ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7Ci0gICAgICAgIG1fY3VycmVudE5hdGl2ZVByZXNlbnRh
dGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnROYXRpdmVQcmVzZW50YXRpb25UaW1l
U3RhbXAsIG5hdGl2ZUR1cmF0aW9uKTsKLQotICAgICAgICBDTVRpbWUgb3V0cHV0RHVyYXRpb24g
PSBDTVNhbXBsZUJ1ZmZlckdldE91dHB1dER1cmF0aW9uKGJ1ZmZlcik7Ci0gICAgICAgIG1fY3Vy
cmVudE91dHB1dFByZXNlbnRhdGlvblRpbWVTdGFtcCA9IENNVGltZUFkZChtX2N1cnJlbnRPdXRw
dXRQcmVzZW50YXRpb25UaW1lU3RhbXAsIG91dHB1dER1cmF0aW9uKTsKLQotICAgICAgICBlcnJv
ciA9IENNQnVmZmVyUXVldWVFbnF1ZXVlKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGJ1ZmZl
cik7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVu
cXVldWUgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpwcm9j
ZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKLXsKLSAgICBhdXRvIGVy
cm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUobV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpLCBidWZm
ZXIpOwotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwgIkF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlRW5xdWV1ZSBmYWlsZWQgd2l0aCAl
ZCIsIGVycm9yKTsKLQotICAgIHByb2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUo
bV9sb3dXYXRlclRpbWUpOwotfQotCi12b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
YWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKLXsKLSAgICBkaXNwYXRj
aF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsKLSAgICAgICAgaWYgKG1faXNFbmNvZGlu
ZykKLSAgICAgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKLSAgICB9KTsKLX0K
LQotQ01TYW1wbGVCdWZmZXJSZWYgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpnZXRPdXRw
dXRTYW1wbGVCdWZmZXIoKQotewotICAgIHJldHVybiAoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0
X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVHZXRIZWFkKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0
KCkpKSk7Ci19Ci0KLVJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCkKLXsKLSAgICByZXR1cm4gYWRv
cHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVldWVE
ZXF1ZXVlQW5kUmV0YWluKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCkpKSkpOwotfQotCi19Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRl
eCAwNTE4NjA4NmEyNTYxNjAyNDZjZDhkMzIyMTU4YzU2ODkxYTQyYzk2Li5iMTQ3Y2EyODgyOWIw
ZjEwMzBiZGE3NGEwODQyNmM0NTY1ZTk4NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtMjQsOSArMjQsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRF
UkRFTEVHQVRFKQotCi0jaW5jbHVkZSAiQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KQEAgLTM3LDE2ICszNSwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CiAKLSNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KLSNpbmNsdWRlIDxDb3Jl
TWVkaWEvQ01UaW1lLmg+Ci0KIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpD
TVNhbXBsZUJ1ZmZlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVz
Y3JpcHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7Ci10eXBlZGVmIHN0cnVjdCBvcGFxdWVD
TUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuICpDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuOwogCiBP
QkpDX0NMQVNTIEFWQXNzZXRXcml0ZXI7CiBPQkpDX0NMQVNTIEFWQXNzZXRXcml0ZXJJbnB1dDsK
LU9CSkNfQ0xBU1MgV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgV1RGIHsK
IGNsYXNzIE1lZGlhVGltZTsKQEAgLTU0LDcyICs0Niw1MSBAQCBjbGFzcyBNZWRpYVRpbWU7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OwogY2xhc3MgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiwgcHVibGljIENhbk1ha2VXZWFr
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0
aW9uOjpFYWdlcj4geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVm
UHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBjcmVhdGUoY29uc3QgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUqIGF1ZGlvVHJhY2ssIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2
aWRlb1RyYWNrKTsKICAgICBzdGF0aWMgUmVmUHRyPE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
PiBjcmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB+TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKTsKLQorICAgIAorICAgIGJvb2wgc2V0dXBXcml0ZXIo
KTsKKyAgICBib29sIHNldFZpZGVvSW5wdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICBi
b29sIHNldEF1ZGlvSW5wdXQoKTsKICAgICB2b2lkIGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENN
U2FtcGxlQnVmZmVyUmVmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0
IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0
IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKICAg
ICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpPiYmKTsKIAotICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7Ci0KIHByaXZhdGU6Ci0g
ICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoYm9vbCBoYXNBdWRpbywgYm9vbCBoYXNWaWRl
byk7CisgICAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoUmV0YWluUHRyPEFWQXNzZXRXcml0
ZXI+JiYsIFN0cmluZyYmIHBhdGgpOwogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIGJvb2wgaW5p
dGlhbGl6ZSgpOwotCi0gICAgc3RhdGljIHZvaWQgY29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVy
Q2FsbGJhY2sodm9pZCosIENNQnVmZmVyUXVldWVUcmlnZ2VyVG9rZW4pOwotICAgIHN0YXRpYyB2
b2lkIGNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQqLCBDTUJ1ZmZlclF1
ZXVlVHJpZ2dlclRva2VuKTsKLQotICAgIHZvaWQgc3RhcnRBc3NldFdyaXRlcigpOwotICAgIHZv
aWQgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoKTsKLQotICAgIGJvb2wgYXBwZW5kQ29t
cHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVyKCk7Ci0gICAgYm9vbCBhcHBlbmRDb21wcmVzc2VkVmlk
ZW9TYW1wbGVCdWZmZXIoKTsKLQotICAgIHZvaWQgcHJvY2Vzc05ld0NvbXByZXNzZWRBdWRpb1Nh
bXBsZUJ1ZmZlcnMoKTsKLSAgICB2b2lkIHByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVC
dWZmZXJzKCk7Ci0KLSAgICB2b2lkIGZsdXNoQ29tcHJlc3NlZFNhbXBsZUJ1ZmZlcnMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGFwcGVuZEVuZE9mVmlkZW9TYW1wbGVE
dXJhdGlvbklmTmVlZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0KKyAgICBSZXRh
aW5QdHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CisgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0
ZXJJbnB1dD4gbV92aWRlb0lucHV0OworICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+
IG1fYXVkaW9JbnB1dDsKKworICAgIFN0cmluZyBtX3BhdGg7CisgICAgTG9jayBtX3ZpZGVvTG9j
azsKKyAgICBMb2NrIG1fYXVkaW9Mb2NrOworICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdy
aXRpbmdTZW1hcGhvcmU7CisgICAgQmluYXJ5U2VtYXBob3JlIG1fZmluaXNoV3JpdGluZ0F1ZGlv
U2VtYXBob3JlOworICAgIEJpbmFyeVNlbWFwaG9yZSBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFw
aG9yZTsKICAgICBib29sIG1faGFzU3RhcnRlZFdyaXRpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9pc1N0b3BwZWQgeyBmYWxzZSB9OwotCi0gICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1f
d3JpdGVyOworICAgIGJvb2wgbV9pc0ZpcnN0QXVkaW9TYW1wbGUgeyB0cnVlIH07CisgICAgZGlz
cGF0Y2hfcXVldWVfdCBtX2F1ZGlvUHVsbFF1ZXVlOworICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV92
aWRlb1B1bGxRdWV1ZTsKKyAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+PiBt
X3ZpZGVvQnVmZmVyUG9vbDsKKyAgICBEZXF1ZTxSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
PiBtX2F1ZGlvQnVmZmVyUG9vbDsKIAogICAgIGJvb2wgbV9pc1N0b3BwaW5nIHsgZmFsc2UgfTsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
cjsKLQotICAgIGJvb2wgbV9oYXNBdWRpbzsKLSAgICBib29sIG1faGFzVmlkZW87Ci0KLSAgICBS
ZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9u
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVk
aW9Db21wcmVzc29yOwotICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVySW5wdXQ+IG1fYXVkaW9B
c3NldFdyaXRlcklucHV0OwotCi0gICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPiBtX3ZpZGVvQ29tcHJlc3NvcjsKLSAgICBSZXRhaW5QdHI8QVZB
c3NldFdyaXRlcklucHV0PiBtX3ZpZGVvQXNzZXRXcml0ZXJJbnB1dDsKLSAgICBDTVRpbWUgbV9s
YXN0VmlkZW9QcmVzZW50YXRpb25UaW1lOwotICAgIENNVGltZSBtX2xhc3RWaWRlb0RlY29kaW5n
VGltZTsKLSAgICBib29sIG1faGFzRW5jb2RlZFZpZGVvU2FtcGxlcyB7IGZhbHNlIH07Ci0KLSAg
ICBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRlPiBtX3dyaXRlckRlbGVnYXRlOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5tbQppbmRleCBlYzNiYjZlZjQzMjQ1ZTllMzkyOThiMDFmZmQyN2I2YmFlOWM2
MWEwLi4yMzM1NGY0Nzg0ZGUwOTJmMDQ4N2MxODU0ZmM1YjI2YTVlMjIxMWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0y
NiwzNDggKzI2LDI1MyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCIKIAotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYm
IFVTRShBVkZPVU5EQVRJT04pCiAKLSNpbmNsdWRlICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IuaCIKICNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSAi
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCiAjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJM
aXN0LmgiCiAjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWQXNzZXRXcml0ZXIuaD4KICNpbmNsdWRl
IDxBVkZvdW5kYXRpb24vQVZBc3NldFdyaXRlcklucHV0Lmg+Ci0jaW5jbHVkZSA8QVZGb3VuZGF0
aW9uL0FWQXNzZXRXcml0ZXJfUHJpdmF0ZS5oPgotI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24v
TWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRM
aW5rLmg+Ci0jaW5jbHVkZSA8d3RmL0Jsb2NrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYv
Y2YvVHlwZUNhc3RzQ0YuaD4KIAogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRM
aW5rLmg+CiAKLUBpbnRlcmZhY2UgV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIDogTlNPYmplY3Qg
PEFWQXNzZXRXcml0ZXJEZWxlZ2F0ZT4gewotICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI+IG1fd3JpdGVyOwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhXcml0ZXI6KFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXI7Ci0t
ICh2b2lkKWNsb3NlOworI3VuZGVmIEFWRW5jb2RlckJpdFJhdGVLZXkKKyNkZWZpbmUgQVZFbmNv
ZGVyQml0UmF0ZUtleSBnZXRBVkVuY29kZXJCaXRSYXRlS2V5V2l0aEZhbGxiYWNrKCkKKyN1bmRl
ZiBBVkZvcm1hdElES2V5CisjZGVmaW5lIEFWRm9ybWF0SURLZXkgZ2V0QVZGb3JtYXRJREtleVdp
dGhGYWxsYmFjaygpCisjdW5kZWYgQVZOdW1iZXJPZkNoYW5uZWxzS2V5CisjZGVmaW5lIEFWTnVt
YmVyT2ZDaGFubmVsc0tleSBnZXRBVk51bWJlck9mQ2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQor
I3VuZGVmIEFWU2FtcGxlUmF0ZUtleQorI2RlZmluZSBBVlNhbXBsZVJhdGVLZXkgZ2V0QVZTYW1w
bGVSYXRlS2V5V2l0aEZhbGxiYWNrKCkKIAotQGVuZAorbmFtZXNwYWNlIFdlYkNvcmUgewogCi1A
aW1wbGVtZW50YXRpb24gV2ViQVZBc3NldFdyaXRlckRlbGVnYXRlIHsKLX07Cit1c2luZyBuYW1l
c3BhY2UgUEFMOwogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXcml0ZXI6KFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKil3cml0ZXIKK3N0YXRpYyBOU1N0cmluZyAqZ2V0QVZG
b3JtYXRJREtleVdpdGhGYWxsYmFjaygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmIChzZWxmKQotICAgICAgICBzZWxmLT5t
X3dyaXRlciA9IG1ha2VXZWFrUHRyKHdyaXRlcik7CisgICAgaWYgKFBBTDo6Y2FuTG9hZF9BVkZv
dW5kYXRpb25fQVZGb3JtYXRJREtleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3Vu
ZGF0aW9uX0FWRm9ybWF0SURLZXkoKTsKIAotICAgIHJldHVybiBzZWxmOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhLCAiRmFpbGVkIHRvIGxvYWQgQVZGb3JtYXRJREtleSIpOworICAgIHJl
dHVybiBAIkFWRm9ybWF0SURLZXkiOwogfQogCi0tICh2b2lkKWFzc2V0V3JpdGVyOihBVkFzc2V0
V3JpdGVyICopYXNzZXRXcml0ZXIgZGlkUHJvZHVjZUZyYWdtZW50ZWRIZWFkZXJEYXRhOihOU0Rh
dGEgKilmcmFnbWVudGVkSGVhZGVyRGF0YQorc3RhdGljIE5TU3RyaW5nICpnZXRBVk51bWJlck9m
Q2hhbm5lbHNLZXlXaXRoRmFsbGJhY2soKQogewotICAgIFVOVVNFRF9QQVJBTShhc3NldFdyaXRl
cik7Ci0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAgICAgICBpZiAoYXV0byBzaXplID0g
W2ZyYWdtZW50ZWRIZWFkZXJEYXRhIGxlbmd0aF0pIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZBc3NldFdyaXRlckRlbGVnYXRl
PihzZWxmKSwgYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVudGVkSGVhZGVyRGF0YSBieXRlc10pLCBzaXplKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkU2VsZi0+bV93cml0ZXIpCi0g
ICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPm1fd3JpdGVyLT5hcHBlbmREYXRhKFdU
Rk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWTnVtYmVyT2ZD
aGFubmVsc0tleSgpKQorICAgICAgICByZXR1cm4gUEFMOjpnZXRfQVZGb3VuZGF0aW9uX0FWTnVt
YmVyT2ZDaGFubmVsc0tleSgpOwogCi0gICAgaWYgKG1fd3JpdGVyKQotICAgICAgICBtX3dyaXRl
ci0+YXBwZW5kRGF0YShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRIZWFkZXJE
YXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkSGVhZGVyRGF0YSBsZW5ndGhdKTsKKyAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYSwgIkZhaWxlZCB0byBsb2FkIEFWTnVtYmVyT2ZDaGFubmVsc0tleSIp
OworICAgIHJldHVybiBAIkFWTnVtYmVyT2ZDaGFubmVsc0tleSI7CiB9CiAKLS0gKHZvaWQpYXNz
ZXRXcml0ZXI6KEFWQXNzZXRXcml0ZXIgKilhc3NldFdyaXRlciBkaWRQcm9kdWNlRnJhZ21lbnRl
ZE1lZGlhRGF0YTooTlNEYXRhICopZnJhZ21lbnRlZE1lZGlhRGF0YSBmcmFnbWVudGVkTWVkaWFE
YXRhUmVwb3J0OihBVkZyYWdtZW50ZWRNZWRpYURhdGFSZXBvcnQgKilmcmFnbWVudGVkTWVkaWFE
YXRhUmVwb3J0CitzdGF0aWMgTlNTdHJpbmcgKmdldEFWU2FtcGxlUmF0ZUtleVdpdGhGYWxsYmFj
aygpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGFzc2V0V3JpdGVyKTsKLSAgICBVTlVTRURfUEFSQU0o
ZnJhZ21lbnRlZE1lZGlhRGF0YVJlcG9ydCk7Ci0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewot
ICAgICAgICBpZiAoYXV0byBzaXplID0gW2ZyYWdtZW50ZWRNZWRpYURhdGEgbGVuZ3RoXSkgewot
ICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGU+KHNlbGYpLCBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oW2ZyYWdtZW50ZWRNZWRpYURh
dGEgYnl0ZXNdKSwgc2l6ZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByb3Rl
Y3RlZFNlbGYtPm1fd3JpdGVyKQotICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5t
X3dyaXRlci0+YXBwZW5kRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoUEFMOjpjYW5Mb2FkX0FW
Rm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FW
Rm91bmRhdGlvbl9BVlNhbXBsZVJhdGVLZXkoKTsKIAotICAgIGlmIChtX3dyaXRlcikKLSAgICAg
ICAgbV93cml0ZXItPmFwcGVuZERhdGEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KFtmcmFnbWVu
dGVkTWVkaWFEYXRhIGJ5dGVzXSksIFtmcmFnbWVudGVkTWVkaWFEYXRhIGxlbmd0aF0pOwotfQot
Ci0tICh2b2lkKWNsb3NlCi17Ci0gICAgbV93cml0ZXIgPSBudWxscHRyOwotfQotCi1AZW5kCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIFBBTDsKLQotUmVmUHRyPE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y3Jl
YXRlKGJvb2wgaGFzQXVkaW8sIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBhdXRvIHdy
aXRlciA9IGFkb3B0UmVmKCpuZXcgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoaGFzQXVkaW8s
IHdpZHRoICYmIGhlaWdodCkpOwotICAgIGlmICghd3JpdGVyLT5pbml0aWFsaXplKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB3cml0ZXI7CisgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWEsICJGYWlsZWQgdG8gbG9hZCBBVlNhbXBsZVJhdGVLZXkiKTsKKyAgICByZXR1
cm4gQCJBVlNhbXBsZVJhdGVLZXkiOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpjb21wcmVzc2VkVmlkZW9PdXRwdXRCdWZmZXJDYWxsYmFjayh2b2lkICptZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlciwgQ01CdWZmZXJRdWV1ZVRyaWdnZXJUb2tlbikKK3N0YXRpYyBOU1N0
cmluZyAqZ2V0QVZFbmNvZGVyQml0UmF0ZUtleVdpdGhGYWxsYmFjaygpCiB7Ci0gICAgYXV0byAq
d3JpdGVyID0gc3RhdGljX2Nhc3Q8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIqPihtZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcik7Ci0gICAgd3JpdGVyLT5wcm9jZXNzTmV3Q29tcHJlc3NlZFZp
ZGVvU2FtcGxlQnVmZmVycygpOwotfQorICAgIGlmIChQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9u
X0FWRW5jb2RlckJpdFJhdGVLZXkoKSkKKyAgICAgICAgcmV0dXJuIFBBTDo6Z2V0X0FWRm91bmRh
dGlvbl9BVkVuY29kZXJCaXRSYXRlS2V5KCk7CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmNvbXByZXNzZWRBdWRpb091dHB1dEJ1ZmZlckNhbGxiYWNrKHZvaWQgKm1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyLCBDTUJ1ZmZlclF1ZXVlVHJpZ2dlclRva2VuKQotewotICAgIGF1
dG8gKndyaXRlciA9IHN0YXRpY19jYXN0PE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKj4obWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOwotICAgIHdyaXRlci0+cHJvY2Vzc05ld0NvbXByZXNz
ZWRBdWRpb1NhbXBsZUJ1ZmZlcnMoKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkZh
aWxlZCB0byBsb2FkIEFWRW5jb2RlckJpdFJhdGVLZXkiKTsKKyAgICByZXR1cm4gQCJBVkVuY29k
ZXJCaXRSYXRlS2V5IjsKIH0KIAotTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyKGJvb2wgaGFzQXVkaW8sIGJvb2wgaGFzVmlkZW8pCi0gICAgOiBt
X2hhc0F1ZGlvKGhhc0F1ZGlvKQotICAgICwgbV9oYXNWaWRlbyhoYXNWaWRlbykKK1JlZlB0cjxN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNy
ZWF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogYXVkaW9UcmFjaywgY29uc3QgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2spCiB7CisgICAgaW50IHdpZHRoID0gMCwg
aGVpZ2h0ID0gMDsKKyAgICBpZiAodmlkZW9UcmFjaykgeworICAgICAgICBhdXRvJiBzZXR0aW5n
cyA9IHZpZGVvVHJhY2stPnNldHRpbmdzKCk7CisgICAgICAgIHdpZHRoID0gc2V0dGluZ3Mud2lk
dGgoKTsKKyAgICAgICAgaGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0KCk7CisgICAgfQorICAgIHJl
dHVybiBjcmVhdGUoISFhdWRpb1RyYWNrLCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAotTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCitSZWZQdHI8
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpj
cmVhdGUoYm9vbCBoYXNBdWRpbywgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIGNsZWFy
KCk7Ci19CisgICAgTlNTdHJpbmcgKmRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShAInZpZGVvcyIpOworICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiLyVsbGQubXA0IiwgQ01DbG9ja0dldFRpbWUoQ01DbG9j
a0dldEhvc3RUaW1lQ2xvY2soKSkudmFsdWVdOworICAgIE5TU3RyaW5nICpwYXRoID0gW2RpcmVj
dG9yeSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpmaWxlbmFtZV07CiAKLWJvb2wgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmluaXRpYWxpemUoKQoteworICAgIE5TVVJMICpvdXRwdXRVUkwg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGhdOworICAgIFN0cmluZyBmaWxlUGF0aCA9IFtw
YXRoIFVURjhTdHJpbmddOwogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIG1fd3JpdGVy
ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnN0YW5jZSgpIGluaXRXaXRoRmls
ZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOworICAgIGF1dG8gYXZBc3NldFdy
aXRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5zdGFuY2UoKSBpbml0V2l0
aFVSTDpvdXRwdXRVUkwgZmlsZVR5cGU6QVZGaWxlVHlwZU1QRUc0IGVycm9yOiZlcnJvcl0pOwog
ICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
ImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxk
IiwgKGxvbmcpZXJyb3IuY29kZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgbV93cml0ZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tX
ZWJBVkFzc2V0V3JpdGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoV3JpdGVyOiB0aGlzXSk7Ci0g
ICAgW21fd3JpdGVyLmdldCgpIHNldERlbGVnYXRlOm1fd3JpdGVyRGVsZWdhdGUuZ2V0KCldOwor
ICAgIGF1dG8gd3JpdGVyID0gYWRvcHRSZWYoKm5ldyBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cihXVEZNb3ZlKGF2QXNzZXRXcml0ZXIpLCBXVEZNb3ZlKGZpbGVQYXRoKSkpOwogCi0gICAgaWYg
KG1faGFzQXVkaW8pIHsKLSAgICAgICAgbV9hdWRpb0NvbXByZXNzb3IgPSBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmNyZWF0ZShjb21wcmVzc2VkQXVkaW9PdXRwdXRCdWZmZXJDYWxsYmFj
aywgdGhpcyk7Ci0gICAgICAgIGlmICghbV9hdWRpb0NvbXByZXNzb3IpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChtX2hhc1ZpZGVvKSB7Ci0gICAgICAgIG1fdmlk
ZW9Db21wcmVzc29yID0gVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUoa0NNVmlk
ZW9Db2RlY1R5cGVfSDI2NCwgY29tcHJlc3NlZFZpZGVvT3V0cHV0QnVmZmVyQ2FsbGJhY2ssIHRo
aXMpOwotICAgICAgICBpZiAoIW1fdmlkZW9Db21wcmVzc29yKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChoYXNBdWRpbyAmJiAhd3JpdGVyLT5zZXRBdWRpb0lucHV0KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgeworICAg
ICAgICBpZiAoIXdyaXRlci0+c2V0VmlkZW9JbnB1dCh3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVy
biBXVEZNb3ZlKHdyaXRlcik7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnByb2Nlc3NOZXdDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXJzKCkKK01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcihSZXRhaW5QdHI8QVZBc3Nl
dFdyaXRlcj4mJiBhdkFzc2V0V3JpdGVyLCBTdHJpbmcmJiBmaWxlUGF0aCkKKyAgICA6IG1fd3Jp
dGVyKFdURk1vdmUoYXZBc3NldFdyaXRlcikpCisgICAgLCBtX3BhdGgoV1RGTW92ZShmaWxlUGF0
aCkpCiB7Ci0gICAgQVNTRVJUKG1faGFzVmlkZW8pOwotICAgIGlmICghbV92aWRlb0Zvcm1hdERl
c2NyaXB0aW9uKSB7Ci0gICAgICAgIG1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbiA9IENNU2FtcGxl
QnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24obV92aWRlb0NvbXByZXNzb3ItPmdldE91dHB1dFNh
bXBsZUJ1ZmZlcigpKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgdGhpc10gewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmIChtX2hhc0F1ZGlvICYmICFtX2F1
ZGlvRm9ybWF0RGVzY3JpcHRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
ICAgICBzdGFydEFzc2V0V3JpdGVyKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBpZiAoIW1f
aGFzU3RhcnRlZFdyaXRpbmcpCi0gICAgICAgIHJldHVybjsKLSAgICBhcHBlbmRDb21wcmVzc2Vk
U2FtcGxlQnVmZmVycygpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpw
cm9jZXNzTmV3Q29tcHJlc3NlZEF1ZGlvU2FtcGxlQnVmZmVycygpCitNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKIHsKLSAgICBBU1NFUlQo
bV9oYXNBdWRpbyk7Ci0gICAgaWYgKCFtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb24pIHsKLSAgICAg
ICAgbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uID0gQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNj
cmlwdGlvbihtX2F1ZGlvQ29tcHJlc3Nvci0+Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkpOwotICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlz
XSB7Ci0gICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1faGFzVmlkZW8gJiYgIW1fdmlkZW9Gb3Jt
YXREZXNjcmlwdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHN0
YXJ0QXNzZXRXcml0ZXIoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotICAgIGlmICghbV9oYXNTdGFy
dGVkV3JpdGluZykKLSAgICAgICAgcmV0dXJuOwotICAgIGFwcGVuZENvbXByZXNzZWRTYW1wbGVC
dWZmZXJzKCk7CisgICAgY2xlYXIoKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6c3RhcnRBc3NldFdyaXRlcigpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpjbGVhcigpCiB7Ci0gICAgaWYgKG1faGFzVmlkZW8pIHsKLSAgICAgICAgbV92aWRlb0Fzc2V0
V3JpdGVySW5wdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZBc3NldFdyaXRlcklucHV0SW5zdGFu
Y2UoKSBpbml0V2l0aE1lZGlhVHlwZTpBVk1lZGlhVHlwZVZpZGVvIG91dHB1dFNldHRpbmdzOm5p
bCBzb3VyY2VGb3JtYXRIaW50Om1fdmlkZW9Gb3JtYXREZXNjcmlwdGlvbi5nZXQoKV0pOwotICAg
ICAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUluUmVhbFRp
bWU6dHJ1ZV07Ci0gICAgICAgIGlmICghW21fd3JpdGVyLmdldCgpIGNhbkFkZElucHV0Om1fdmlk
ZW9Bc3NldFdyaXRlcklucHV0LmdldCgpXSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTWVkaWFTdHJlYW0sICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdy
aXRlciBmYWlsZWQgY2FuQWRkSW5wdXQgZm9yIHZpZGVvIik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgW21fd3JpdGVyLmdldCgpIGFkZElucHV0Om1fdmlkZW9Bc3Nl
dFdyaXRlcklucHV0LmdldCgpXTsKKyAgICBpZiAobV92aWRlb0lucHV0KSB7CisgICAgICAgIG1f
dmlkZW9JbnB1dC5jbGVhcigpOworICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fdmlkZW9QdWxs
UXVldWUpOwogICAgIH0KLSAgICAKLSAgICBpZiAobV9oYXNBdWRpbykgewotICAgICAgICBtX2F1
ZGlvQXNzZXRXcml0ZXJJbnB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5w
dXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFUeXBlOkFWTWVkaWFUeXBlQXVkaW8gb3V0cHV0U2V0
dGluZ3M6bmlsIHNvdXJjZUZvcm1hdEhpbnQ6bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uLmdldCgp
XSk7Ci0gICAgICAgIFttX2F1ZGlvQXNzZXRXcml0ZXJJbnB1dCBzZXRFeHBlY3RzTWVkaWFEYXRh
SW5SZWFsVGltZTp0cnVlXTsKLSAgICAgICAgaWYgKCFbbV93cml0ZXIuZ2V0KCkgY2FuQWRkSW5w
dXQ6bV9hdWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdGFy
dEFzc2V0V3JpdGVyIGZhaWxlZCBjYW5BZGRJbnB1dCBmb3IgYXVkaW8iKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBbbV93cml0ZXIuZ2V0KCkgYWRkSW5wdXQ6bV9h
dWRpb0Fzc2V0V3JpdGVySW5wdXQuZ2V0KCldOworICAgIGlmIChtX2F1ZGlvSW5wdXQpIHsKKyAg
ICAgICAgbV9hdWRpb0lucHV0LmNsZWFyKCk7CisgICAgICAgIGRpc3BhdGNoX3JlbGVhc2UobV9h
dWRpb1B1bGxRdWV1ZSk7CiAgICAgfQotICAgIAotICAgIGlmICghW21fd3JpdGVyLmdldCgpIHN0
YXJ0V3JpdGluZ10pIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RhcnRBc3NldFdyaXRlciBmYWlsZWQgc3RhcnRX
cml0aW5nIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBbbV93cml0ZXIuZ2V0KCkg
c3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOmtDTVRpbWVaZXJvXTsKLQotICAgIGFwcGVuZENvbXBy
ZXNzZWRTYW1wbGVCdWZmZXJzKCk7CisgICAgaWYgKG1fd3JpdGVyKQorICAgICAgICBtX3dyaXRl
ci5jbGVhcigpOwogCi0gICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IHRydWU7CisgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIpOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21w
cmVzc2VkQXVkaW9TYW1wbGVCdWZmZXIoKQorYm9vbCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6c2V0VmlkZW9JbnB1dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgaWYgKCFtX2F1
ZGlvQ29tcHJlc3NvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFbbV9hdWRp
b0Fzc2V0V3JpdGVySW5wdXQgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IG1fYXVkaW9Db21wcmVzc29yLT50YWtlT3V0
cHV0U2FtcGxlQnVmZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIpCisgICAgQVNTRVJUKCFtX3ZpZGVv
SW5wdXQpOworICAgIAorICAgIE5TRGljdGlvbmFyeSAqY29tcHJlc3Npb25Qcm9wZXJ0aWVzID0g
QHsKKyAgICAgICAgQVZWaWRlb0F2ZXJhZ2VCaXRSYXRlS2V5IDogW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6d2lkdGggKiBoZWlnaHQgKiAxMl0sCisgICAgICAgIEFWVmlkZW9FeHBlY3RlZFNvdXJj
ZUZyYW1lUmF0ZUtleSA6IEAoMzApLAorICAgICAgICBBVlZpZGVvTWF4S2V5RnJhbWVJbnRlcnZh
bEtleSA6IEAoMTIwKSwKKyAgICAgICAgQVZWaWRlb1Byb2ZpbGVMZXZlbEtleSA6IEFWVmlkZW9Q
cm9maWxlTGV2ZWxIMjY0TWFpbkF1dG9MZXZlbAorICAgIH07CisKKyAgICBOU0RpY3Rpb25hcnkg
KnZpZGVvU2V0dGluZ3MgPSBAeworICAgICAgICBBVlZpZGVvQ29kZWNLZXk6IEFWVmlkZW9Db2Rl
Y0gyNjQsCisgICAgICAgIEFWVmlkZW9XaWR0aEtleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
d2lkdGhdLAorICAgICAgICBBVlZpZGVvSGVpZ2h0S2V5OiBbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpoZWlnaHRdLAorICAgICAgICBBVlZpZGVvQ29tcHJlc3Npb25Qcm9wZXJ0aWVzS2V5OiBjb21w
cmVzc2lvblByb3BlcnRpZXMKKyAgICB9OworICAgIAorICAgIG1fdmlkZW9JbnB1dCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NBVkFzc2V0V3JpdGVySW5wdXRJbnN0YW5jZSgpIGluaXRXaXRoTWVkaWFU
eXBlOkFWTWVkaWFUeXBlVmlkZW8gb3V0cHV0U2V0dGluZ3M6dmlkZW9TZXR0aW5ncyBzb3VyY2VG
b3JtYXRIaW50Om5pbF0pOworICAgIFttX3ZpZGVvSW5wdXQgc2V0RXhwZWN0c01lZGlhRGF0YUlu
UmVhbFRpbWU6dHJ1ZV07CisgICAgCisgICAgaWYgKCFbbV93cml0ZXIgY2FuQWRkSW5wdXQ6bV92
aWRlb0lucHV0LmdldCgpXSkgeworICAgICAgICBtX3ZpZGVvSW5wdXQgPSBudWxscHRyOworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwgInRoZSB2aWRlbyBpbnB1dCBpcyBu
b3QgYWxsb3dlZCB0byBhZGQgdG8gdGhlIEFWQXNzZXRXcml0ZXIiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgW21fYXVkaW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBs
ZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOworICAgIH0KKyAgICBbbV93cml0ZXIgYWRkSW5wdXQ6bV92
aWRlb0lucHV0LmdldCgpXTsKKyAgICBtX3ZpZGVvUHVsbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVf
Y3JlYXRlKCJXZWJDb3JlVmlkZW9SZWNvcmRpbmdQdWxsQnVmZmVyUXVldWUiLCBESVNQQVRDSF9R
VUVVRV9TRVJJQUwpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkVmlkZW9TYW1wbGVCdWZmZXIoKQorYm9vbCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c2V0QXVkaW9JbnB1dCgpCiB7Ci0gICAgaWYgKCFt
X3ZpZGVvQ29tcHJlc3NvcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFTU0VSVCghbV9h
dWRpb0lucHV0KTsKIAotICAgIGlmICghW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlG
b3JNb3JlTWVkaWFEYXRhXSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE5TRGljdGlvbmFy
eSAqYXVkaW9TZXR0aW5ncyA9IEB7CisgICAgICAgIEFWRW5jb2RlckJpdFJhdGVLZXkgOiBAKDI4
MDAwKSwKKyAgICAgICAgQVZGb3JtYXRJREtleSA6IEAoa0F1ZGlvRm9ybWF0TVBFRzRBQUMpLAor
ICAgICAgICBBVk51bWJlck9mQ2hhbm5lbHNLZXkgOiBAKDEpLAorICAgICAgICBBVlNhbXBsZVJh
dGVLZXkgOiBAKDIyMDUwKQorICAgIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9Db21w
cmVzc29yLT50YWtlT3V0cHV0U2FtcGxlQnVmZmVyKCk7Ci0gICAgaWYgKCFidWZmZXIpCisgICAg
bV9hdWRpb0lucHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWQXNzZXRXcml0ZXJJbnB1dEluc3Rh
bmNlKCkgaW5pdFdpdGhNZWRpYVR5cGU6QVZNZWRpYVR5cGVBdWRpbyBvdXRwdXRTZXR0aW5nczph
dWRpb1NldHRpbmdzIHNvdXJjZUZvcm1hdEhpbnQ6bmlsXSk7CisgICAgW21fYXVkaW9JbnB1dCBz
ZXRFeHBlY3RzTWVkaWFEYXRhSW5SZWFsVGltZTp0cnVlXTsKKyAgICAKKyAgICBpZiAoIVttX3dy
aXRlciBjYW5BZGRJbnB1dDptX2F1ZGlvSW5wdXQuZ2V0KCldKSB7CisgICAgICAgIG1fYXVkaW9J
bnB1dCA9IG51bGxwdHI7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAi
dGhlIGF1ZGlvIGlucHV0IGlzIG5vdCBhbGxvd2VkIHRvIGFkZCB0byB0aGUgQVZBc3NldFdyaXRl
ciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2xhc3RWaWRlb1ByZXNlbnRhdGlv
blRpbWUgPSBDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChidWZmZXIuZ2V0
KCkpOwotICAgIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lID0gQ01TYW1wbGVCdWZmZXJHZXREZWNv
ZGVUaW1lU3RhbXAoYnVmZmVyLmdldCgpKTsKLSAgICBtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMg
PSB0cnVlOwotCi0gICAgW21fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpIGFwcGVuZFNhbXBs
ZUJ1ZmZlcjpidWZmZXIuZ2V0KCldOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRDb21wcmVzc2VkU2FtcGxlQnVmZmVycygpCi17
Ci0gICAgd2hpbGUgKGFwcGVuZENvbXByZXNzZWRWaWRlb1NhbXBsZUJ1ZmZlcigpIHx8IGFwcGVu
ZENvbXByZXNzZWRBdWRpb1NhbXBsZUJ1ZmZlcigpKSB7IH07Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
dm9pZCBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihBVkFzc2V0V3JpdGVy
SW5wdXQgKmFzc2V0V3JpdGVySW5wdXQsIENNVGltZSBwcmVzZW50YXRpb25UaW1lU3RhbXAsIENN
VGltZSBkZWNvZGluZ1RpbWVTdGFtcCkKLXsKLSAgICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5n
SW5mbyA9IHsga0NNVGltZUludmFsaWQsIHByZXNlbnRhdGlvblRpbWVTdGFtcCwgZGVjb2RpbmdU
aW1lU3RhbXB9OwotCi0gICAgQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyID0gTlVMTDsKLSAgICBh
dXRvIGVycm9yID0gQ01TYW1wbGVCdWZmZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVM
TCwgdHJ1ZSwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMSwgJnRpbWluZ0luZm8sIDAsIE5VTEwsICZi
dWZmZXIpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIGFwcGVuZEVuZHNQcmV2aW91c1Nh
bXBsZUR1cmF0aW9uTWFya2VyIGZhaWxlZCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSB3aXRoICVkIiwg
ZXJyb3IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8gc2FtcGxlQnVmZmVyID0g
YWRvcHRDRihidWZmZXIpOwotCi0gICAgQ01TZXRBdHRhY2htZW50KHNhbXBsZUJ1ZmZlci5nZXQo
KSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlv
biwga0NGQm9vbGVhblRydWUsIGtDTUF0dGFjaG1lbnRNb2RlX1Nob3VsZFByb3BhZ2F0ZSk7Ci0g
ICAgaWYgKCFbYXNzZXRXcml0ZXJJbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6c2FtcGxlQnVmZmVy
LmdldCgpXSkKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlciBhcHBlbmRTYW1wbGVCdWZmZXIgdG8gd3JpdGVyIGlucHV0IGZh
aWxlZCIpOwotfQotCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRFbmRP
ZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKCFtX2hhc0VuY29kZWRWaWRlb1NhbXBsZXMp
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoW21fdmlkZW9Bc3NldFdyaXRlcklucHV0IGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRh
XSkgewotICAgICAgICBhcHBlbmRFbmRzUHJldmlvdXNTYW1wbGVEdXJhdGlvbk1hcmtlcihtX3Zp
ZGVvQXNzZXRXcml0ZXJJbnB1dC5nZXQoKSwgbV9sYXN0VmlkZW9QcmVzZW50YXRpb25UaW1lLCBt
X2xhc3RWaWRlb0RlY29kaW5nVGltZSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGJsb2NrID0gbWFrZUJsb2NrUHRyKFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAod2Vha1Ro
aXMpIHsKLSAgICAgICAgICAgIGFwcGVuZEVuZHNQcmV2aW91c1NhbXBsZUR1cmF0aW9uTWFya2Vy
KG1fdmlkZW9Bc3NldFdyaXRlcklucHV0LmdldCgpLCBtX2xhc3RWaWRlb1ByZXNlbnRhdGlvblRp
bWUsIG1fbGFzdFZpZGVvRGVjb2RpbmdUaW1lKTsKLSAgICAgICAgICAgIFttX3ZpZGVvQXNzZXRX
cml0ZXJJbnB1dCBtYXJrQXNGaW5pc2hlZF07Ci0gICAgICAgIH0KLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKLSAgICB9KTsKLSAgICBbbV92aWRlb0Fzc2V0V3JpdGVySW5wdXQgcmVxdWVz
dE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2lu
Z0Jsb2NrOmJsb2NrLmdldCgpXTsKLX0KLQotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Zmx1c2hDb21wcmVzc2VkU2FtcGxlQnVmZmVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXBwZW5kQ29tcHJlc3NlZFNhbXBsZUJ1ZmZl
cnMoKTsKLSAgICBhcHBlbmRFbmRPZlZpZGVvU2FtcGxlRHVyYXRpb25JZk5lZWRlZChXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0KLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmNsZWFyKCkKLXsKLSAgICBpZiAobV93cml0ZXIpCi0gICAgICAgIG1fd3JpdGVyLmNsZWFy
KCk7Ci0KLSAgICBtX2RhdGEgPSBudWxscHRyOwotICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgW21fd3JpdGVyIGFkZElucHV0Om1fYXVkaW9J
bnB1dC5nZXQoKV07CisgICAgbV9hdWRpb1B1bGxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiV2ViQ29yZUF1ZGlvUmVjb3JkaW5nUHVsbEJ1ZmZlclF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVf
U0VSSUFMKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCiBzdGF0aWMgaW5saW5lIFJldGFpblB0
cjxDTVNhbXBsZUJ1ZmZlclJlZj4gY29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1w
KENNU2FtcGxlQnVmZmVyUmVmIG9yaWdpbmFsQnVmZmVyKQogewogICAgIENNVGltZSBzdGFydFRp
bWUgPSBDTUNsb2NrR2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKTsKICAgICBDTUl0
ZW1Db3VudCBjb3VudCA9IDA7CiAgICAgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZv
QXJyYXkob3JpZ2luYWxCdWZmZXIsIDAsIG5pbCwgJmNvdW50KTsKLQorICAgIAogICAgIFZlY3Rv
cjxDTVNhbXBsZVRpbWluZ0luZm8+IHRpbWVJbmZvKGNvdW50KTsKICAgICBDTVNhbXBsZUJ1ZmZl
ckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShvcmlnaW5hbEJ1ZmZlciwgY291bnQsIHRpbWVJbmZv
LmRhdGEoKSwgJmNvdW50KTsKLQotICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGNvdW50OyBpKysp
IHsKKyAgICAKKyAgICBmb3IgKENNSXRlbUNvdW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewog
ICAgICAgICB0aW1lSW5mb1tpXS5kZWNvZGVUaW1lU3RhbXAgPSBrQ01UaW1lSW52YWxpZDsKICAg
ICAgICAgdGltZUluZm9baV0ucHJlc2VudGF0aW9uVGltZVN0YW1wID0gc3RhcnRUaW1lOwogICAg
IH0KLQorICAgIAogICAgIENNU2FtcGxlQnVmZmVyUmVmIG5ld0J1ZmZlciA9IG51bGxwdHI7Ci0g
ICAgaWYgKGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHlXaXRoTmV3VGltaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIG9yaWdpbmFsQnVmZmVyLCBjb3VudCwgdGltZUluZm8uZGF0
YSgpLCAmbmV3QnVmZmVyKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdp
dGhOZXdUaW1pbmcgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgYXV0byBlcnJvciA9IENN
U2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
b3JpZ2luYWxCdWZmZXIsIGNvdW50LCB0aW1lSW5mby5kYXRhKCksICZuZXdCdWZmZXIpOworICAg
IGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogICAgIHJldHVybiBh
ZG9wdENGKG5ld0J1ZmZlcik7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcikK
IHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBzZXQgdGhlIHRpbWVzdGFtcHMgaWYgdGhl
eSBhcmUgYWxyZWFkeSBzZXQuCi0gICAgaWYgKGF1dG8gYnVmZmVyV2l0aEN1cnJlbnRUaW1lID0g
Y29weVNhbXBsZUJ1ZmZlcldpdGhDdXJyZW50VGltZVN0YW1wKHNhbXBsZUJ1ZmZlcikpCi0gICAg
ICAgIG1fdmlkZW9Db21wcmVzc29yLT5hZGRTYW1wbGVCdWZmZXIoYnVmZmVyV2l0aEN1cnJlbnRU
aW1lLmdldCgpKTsKKyAgICBBU1NFUlQobV92aWRlb0lucHV0KTsKKyAgICBpZiAobV9pc1N0b3Bw
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9oYXNTdGFydGVkV3JpdGluZykgewor
ICAgICAgICBpZiAoIVttX3dyaXRlciBzdGFydFdyaXRpbmddKSB7CisgICAgICAgICAgICBtX2lz
U3RvcHBlZCA9IHRydWU7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVh
bSwgImNyZWF0ZSBBVkFzc2V0V3JpdGVyIGluc3RhbmNlIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUg
JWxkIiwgKGxvbmcpW21fd3JpdGVyIGVycm9yXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgW21fd3JpdGVyIHN0YXJ0U2Vzc2lvbkF0U291cmNlVGltZTpDTUNsb2Nr
R2V0VGltZShDTUNsb2NrR2V0SG9zdFRpbWVDbG9jaygpKV07CisgICAgICAgIG1faGFzU3RhcnRl
ZFdyaXRpbmcgPSB0cnVlOworICAgICAgICBSZWZQdHI8TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI+IHByb3RlY3RlZFRoaXMgPSB0aGlzOworICAgICAgICBbbV92aWRlb0lucHV0IHJlcXVlc3RN
ZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOm1fdmlkZW9QdWxsUXVldWUgdXNpbmdCbG9jazpbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKKyAgICAgICAgICAg
IGRvIHsKKyAgICAgICAgICAgICAgICBpZiAoIVttX3ZpZGVvSW5wdXQgaXNSZWFkeUZvck1vcmVN
ZWRpYURhdGFdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9Mb2NrKTsKKyAgICAgICAgICAgICAgICBpZiAo
bV92aWRlb0J1ZmZlclBvb2wuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fdmlkZW9CdWZmZXJQb29sLnRha2VGaXJz
dCgpOworICAgICAgICAgICAgICAgIGxvY2tlci51bmxvY2tFYXJseSgpOworICAgICAgICAgICAg
ICAgIGlmICghW21fdmlkZW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IHdoaWxlICh0cnVlKTsK
KyAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCAmJiBtX3ZpZGVvQnVmZmVyUG9vbC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgICAgICBbbV92aWRlb0lucHV0IG1hcmtBc0ZpbmlzaGVkXTsKKyAg
ICAgICAgICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRlb1NlbWFwaG9yZS5zaWduYWwoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0
byBidWZmZXJXaXRoQ3VycmVudFRpbWUgPSBjb3B5U2FtcGxlQnVmZmVyV2l0aEN1cnJlbnRUaW1l
U3RhbXAoc2FtcGxlQnVmZmVyKTsKKyAgICBpZiAoIWJ1ZmZlcldpdGhDdXJyZW50VGltZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvTG9jayk7
CisgICAgbV92aWRlb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoYnVmZmVyV2l0aEN1cnJlbnRU
aW1lKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25S
ZWY+IGNyZWF0ZUF1ZGlvRm9ybWF0RGVzY3JpcHRpb24oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24pCkBAIC0zNzUsMzkgKzI4MCw2OCBAQCBzdGF0aWMgaW5saW5lIFJl
dGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0
aW9uKGNvbgogICAgIGF1dG8gYmFzaWNEZXNjcmlwdGlvbiA9IFdURjo6Z2V0PGNvbnN0IEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24o
KS5kZXNjcmlwdGlvbik7CiAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQgPSBudWxs
cHRyOwogICAgIGF1dG8gZXJyb3IgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgYmFzaWNEZXNjcmlwdGlvbiwgMCwgTlVMTCwgMCwgTlVMTCwgTlVM
TCwgJmZvcm1hdCk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhU3RyZWFtLCAiTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIgQ01BdWRpb0Zvcm1hdERl
c2NyaXB0aW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOworICAgIGlmIChlcnJvcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogICAgIHJldHVybiBhZG9wdENGKGZvcm1h
dCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBjcmVh
dGVBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IFdURjo6TWVkaWFUaW1l
JiB0aW1lLCBzaXplX3Qgc2FtcGxlQ291bnQpCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDTVNh
bXBsZUJ1ZmZlclJlZj4gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXJXaXRoUGFja2V0RGVzY3JpcHRp
b25zKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0LCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7
Ci0gICAgYXV0byBmb3JtYXQgPSBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGRlc2NyaXB0
aW9uKTsKLSAgICBpZiAoIWZvcm1hdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KKyAgICBD
TVRpbWUgc3RhcnRUaW1lID0gQ01DbG9ja0dldFRpbWUoQ01DbG9ja0dldEhvc3RUaW1lQ2xvY2so
KSk7CiAgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyID0gbnVsbHB0cjsKLSAgICBh
dXRvIGVycm9yID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlv
bnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgZmFsc2UsIE5VTEwsIE5VTEwsIGZvcm1hdC5n
ZXQoKSwgc2FtcGxlQ291bnQsIHRvQ01UaW1lKHRpbWUpLCBOVUxMLCAmc2FtcGxlQnVmZmVyKTsK
LSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlciBjcmVhdGVBdWRpb1NhbXBsZUJ1ZmZlcldpdGhQ
YWNrZXREZXNjcmlwdGlvbnMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CisgICAgYXV0byBlcnJv
ciA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25zKGtDRkFs
bG9jYXRvckRlZmF1bHQsIE5VTEwsIGZhbHNlLCBOVUxMLCBOVUxMLCBmb3JtYXQsIHNhbXBsZUNv
dW50LCBzdGFydFRpbWUsIE5VTEwsICZzYW1wbGVCdWZmZXIpOworICAgIGlmIChlcnJvcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIGF1dG8gYnVmZmVyID0gYWRvcHRDRihz
YW1wbGVCdWZmZXIpOwotCi0gICAgZXJyb3IgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFCdWZmZXJG
cm9tQXVkaW9CdWZmZXJMaXN0KGJ1ZmZlci5nZXQoKSwga0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVkaW9CdWZmZXJMaXN0PihkYXRhKS5s
aXN0KCkpOwotICAgIGlmIChlcnJvcikgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRp
YVN0cmVhbSwgIk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyIENNU2FtcGxlQnVmZmVyU2V0RGF0
YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3QgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVy
biBhZG9wdENGKHNhbXBsZUJ1ZmZlcik7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBk
YXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgV1RG
OjpNZWRpYVRpbWUmIHRpbWUsIHNpemVfdCBzYW1wbGVDb3VudCkKK3ZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVk
aW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwg
Y29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3Qgc2FtcGxlQ291bnQpCiB7Ci0gICAgaWYgKGF1
dG8gc2FtcGxlQnVmZmVyID0gY3JlYXRlQXVkaW9TYW1wbGVCdWZmZXIoZGF0YSwgZGVzY3JpcHRp
b24sIHRpbWUsIHNhbXBsZUNvdW50KSkKLSAgICAgICAgbV9hdWRpb0NvbXByZXNzb3ItPmFkZFNh
bXBsZUJ1ZmZlcihzYW1wbGVCdWZmZXIuZ2V0KCkpOworICAgIEFTU0VSVChtX2F1ZGlvSW5wdXQp
OworICAgIGlmICgoIW1faGFzU3RhcnRlZFdyaXRpbmcgJiYgbV92aWRlb0lucHV0KSB8fCBtX2lz
U3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZm9ybWF0ID0gY3JlYXRlQXVkaW9G
b3JtYXREZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7CisgICAgaWYgKCFmb3JtYXQpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAobV9pc0ZpcnN0QXVkaW9TYW1wbGUpIHsKKyAgICAgICAgaWYgKCFt
X3ZpZGVvSW5wdXQpIHsKKyAgICAgICAgICAgIC8vIGF1ZGlvLW9ubHkgcmVjb3JkaW5nLgorICAg
ICAgICAgICAgaWYgKCFbbV93cml0ZXIgc3RhcnRXcml0aW5nXSkgeworICAgICAgICAgICAgICAg
IG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBbbV93cml0ZXIgc3RhcnRTZXNzaW9uQXRTb3VyY2VUaW1lOkNNQ2xv
Y2tHZXRUaW1lKENNQ2xvY2tHZXRIb3N0VGltZUNsb2NrKCkpXTsKKyAgICAgICAgICAgIG1faGFz
U3RhcnRlZFdyaXRpbmcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG1faXNGaXJzdEF1ZGlv
U2FtcGxlID0gZmFsc2U7CisgICAgICAgIFJlZlB0cjxNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cj4gcHJvdGVjdGVkVGhpcyA9IHRoaXM7CisgICAgICAgIFttX2F1ZGlvSW5wdXQgcmVxdWVzdE1l
ZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6bV9hdWRpb1B1bGxRdWV1ZSB1c2luZ0Jsb2NrOlt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0geworICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgIGlmICghW21fYXVkaW9JbnB1dCBpc1JlYWR5Rm9yTW9yZU1l
ZGlhRGF0YV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb0xvY2spOworICAgICAgICAgICAgICAgIGlmICht
X2F1ZGlvQnVmZmVyUG9vbC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9hdWRpb0J1ZmZlclBvb2wudGFrZUZpcnN0
KCk7CisgICAgICAgICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CisgICAgICAgICAgICAg
ICAgW21fYXVkaW9JbnB1dCBhcHBlbmRTYW1wbGVCdWZmZXI6YnVmZmVyLmdldCgpXTsKKyAgICAg
ICAgICAgIH0gd2hpbGUgKHRydWUpOworICAgICAgICAgICAgaWYgKG1faXNTdG9wcGVkICYmIG1f
YXVkaW9CdWZmZXJQb29sLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFttX2F1ZGlvSW5w
dXQgbWFya0FzRmluaXNoZWRdOworICAgICAgICAgICAgICAgIG1fZmluaXNoV3JpdGluZ0F1ZGlv
U2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICAgICAgfQorICAgICAgICB9XTsKKyAgICB9CisK
KyAgICBhdXRvIHNhbXBsZUJ1ZmZlciA9IGNyZWF0ZUF1ZGlvU2FtcGxlQnVmZmVyV2l0aFBhY2tl
dERlc2NyaXB0aW9ucyhmb3JtYXQuZ2V0KCksIHNhbXBsZUNvdW50KTsKKyAgICBpZiAoIXNhbXBs
ZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZXJyb3IgPSBDTVNhbXBsZUJ1ZmZl
clNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNhbXBsZUJ1ZmZlci5nZXQoKSwga0NG
QWxsb2NhdG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZG93bmNhc3Q8V2ViQXVk
aW9CdWZmZXJMaXN0PihkYXRhKS5saXN0KCkpOworICAgIGlmIChlcnJvcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvTG9jayk7CisgICAgbV9h
dWRpb0J1ZmZlclBvb2wuYXBwZW5kKFdURk1vdmUoc2FtcGxlQnVmZmVyKSk7CiB9CiAKIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQpAQCAtNDE2LDQwICsz
NTAsMzUgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKLQotICAgIGlmICht
X3ZpZGVvQ29tcHJlc3NvcikKLSAgICAgICAgbV92aWRlb0NvbXByZXNzb3ItPmZpbmlzaCgpOwot
ICAgIGlmIChtX2F1ZGlvQ29tcHJlc3NvcikKLSAgICAgICAgbV9hdWRpb0NvbXByZXNzb3ItPmZp
bmlzaCgpOwotCiAgICAgaWYgKCFtX2hhc1N0YXJ0ZWRXcml0aW5nKQogICAgICAgICByZXR1cm47
CiAgICAgQVNTRVJUKFttX3dyaXRlciBzdGF0dXNdID09IEFWQXNzZXRXcml0ZXJTdGF0dXNXcml0
aW5nKTsKKyAgICBpZiAobV92aWRlb0lucHV0KQorICAgICAgICBtX2ZpbmlzaFdyaXRpbmdWaWRl
b1NlbWFwaG9yZS53YWl0KCk7CisKKyAgICBpZiAobV9hdWRpb0lucHV0KQorICAgICAgICBtX2Zp
bmlzaFdyaXRpbmdBdWRpb1NlbWFwaG9yZS53YWl0KCk7CiAKICAgICBtX2lzU3RvcHBpbmcgPSB0
cnVlOworICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOlt0
aGlzLCB3ZWFrUHRyID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrUHRyID0gV1RGTW92ZSh3ZWFrUHRyKSwgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1B0cikKKyAgICAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICBmbHVzaENvbXByZXNzZWRTYW1wbGVCdWZmZXJzKFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9pc1N0b3BwaW5nID0gZmFsc2U7CisgICAg
ICAgICAgICBpZiAobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgICAg
ICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9kYXRhID0gV1RGTW92ZShidWZmZXIpOwogCi0g
ICAgICAgIFttX3dyaXRlciBmbHVzaF07Ci0gICAgICAgIFttX3dyaXRlciBmaW5pc2hXcml0aW5n
V2l0aENvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
XSgpIG11dGFibGUgewotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAg
ICBtX2lzU3RvcHBpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAobV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlcikgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdU
Rk1vdmUobV9kYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIG1faXNTdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbV9oYXNTdGFydGVk
V3JpdGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfV07Ci0gICAgfSk7CisgICAgICAgICAgICBtX2lzU3RvcHBlZCA9IGZhbHNl
OworICAgICAgICAgICAgbV9oYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlOworICAgICAgICAgICAg
bV9pc0ZpcnN0QXVkaW9TYW1wbGUgPSB0cnVlOworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIG1fZmluaXNoV3JpdGluZ1NlbWFwaG9yZS5zaWduYWwoKTsKKyAgICB9
XTsKKyAgICBtX2ZpbmlzaFdyaXRpbmdTZW1hcGhvcmUud2FpdCgpOwogfQogCiB2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQ2MywyNCAr
MzkyLDYgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEIKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGJ1ZmZlcikpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjph
cHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQotewotICAgIGlmICghbV9k
YXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUp
OwotfQotCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotewotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Rh
dGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJE
RUxFR0FURSkKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlNDI4OTM1MjM2MGNiMTc4MDBkZDA2ZTZiNWIx
NTM4Nzk2MmM3OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQotCi0jaW5jbHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgotI2luY2x1
ZGUgPFZpZGVvVG9vbGJveC9WVEVycm9ycy5oPgotCi10eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNh
bXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7Ci10eXBlZGVmIHN0cnVjdCBPcGFxdWVWVENv
bXByZXNzaW9uU2Vzc2lvbiAqVlRDb21wcmVzc2lvblNlc3Npb25SZWY7Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gY3JlYXRlKENNVmlkZW9Db2RlY1R5cGUsIENN
QnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrT2JqZWN0KTsKLSAgICB+
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCk7Ci0KLSAgICB2b2lkIGZpbmlzaCgpOwotICAg
IHZvaWQgYWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmKTsKLSAgICBDTVNhbXBsZUJ1
ZmZlclJlZiBnZXRPdXRwdXRTYW1wbGVCdWZmZXIoKTsKLSAgICBSZXRhaW5QdHI8Q01TYW1wbGVC
dWZmZXJSZWY+IHRha2VPdXRwdXRTYW1wbGVCdWZmZXIoKTsKLQotcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSk7Ci0KLSAg
ICBib29sIGluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjaywgdm9pZCogY2Fs
bGJhY2tPYmplY3QpOwotCi0gICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVm
ZmVyUmVmKTsKLSAgICBib29sIGluaXRDb21wcmVzc2lvblNlc3Npb24oQ01WaWRlb0Zvcm1hdERl
c2NyaXB0aW9uUmVmKTsKLQotICAgIHN0YXRpYyB2b2lkIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFj
ayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2Ft
cGxlQnVmZmVyUmVmKTsKLQotICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9zZXJpYWxEaXNwYXRjaFF1
ZXVlOwotICAgIFJldGFpblB0cjxDTUJ1ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVl
OwotICAgIFJldGFpblB0cjxWVENvbXByZXNzaW9uU2Vzc2lvblJlZj4gbV92dFNlc3Npb247Ci0K
LSAgICBib29sIG1faXNFbmNvZGluZyB7IGZhbHNlIH07Ci0KLSAgICBDTVZpZGVvQ29kZWNUeXBl
IG1fb3V0cHV0Q29kZWNUeXBlOwotICAgIGZsb2F0IG1fbWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0
aW9uIHsgMi4wIH07Ci0gICAgdW5zaWduZWQgbV9leHBlY3RlZEZyYW1lUmF0ZSB7IDMwIH07Ci19
OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA4ZmU0MzI5NWVmNTJh
Njc5MGZmMWRlY2FjYTZmMzBkOWJiYmFmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE2
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQotCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxDb3Jl
TWVkaWEvQ29yZU1lZGlhLmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNp
bXBvcnQgPFZpZGVvVG9vbGJveC9WVENvbXByZXNzaW9uU2Vzc2lvbi5oPgotI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+Ci0KLSNpbXBvcnQgPHBhbC9jZi9WaWRlb1Rvb2xib3hTb2Z0TGluay5o
PgotCi11c2luZyBuYW1lc3BhY2UgUEFMOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0ZDo6
dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IFZpZGVvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcjo6Y3JlYXRlKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlLCBDTUJ1
ZmZlclF1ZXVlVHJpZ2dlckNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja09iamVjdCkK
LXsKLSAgICBhdXRvIGNvbXByZXNzb3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yPihuZXcgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKG91dHB1dENvZGVj
VHlwZSkpOwotICAgIGlmICghY29tcHJlc3Nvci0+aW5pdGlhbGl6ZShjYWxsYmFjaywgY2FsbGJh
Y2tPYmplY3QpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gY29tcHJlc3Nv
cjsKLX0KLQotVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IoQ01WaWRlb0NvZGVjVHlwZSBvdXRwdXRDb2RlY1R5cGUpCi0gICAgOiBtX3Nlcmlh
bERpc3BhdGNoUXVldWUgeyBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpIH0KLSAgICAsIG1f
b3V0cHV0Q29kZWNUeXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KLXsKLX0KLQotVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjp+VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKLXsKLSAgICBp
ZiAobV9zZXJpYWxEaXNwYXRjaFF1ZXVlKQotICAgICAgICBkaXNwYXRjaF9yZWxlYXNlKG1fc2Vy
aWFsRGlzcGF0Y2hRdWV1ZSk7Ci19Ci0KLWJvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Ojppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQq
IGNhbGxiYWNrT2JqZWN0KQotewotICAgIENNQnVmZmVyUXVldWVSZWYgb3V0cHV0QnVmZmVyUXVl
dWU7Ci0gICAgaWYgKGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIENNQnVmZmVyUXVldWVHZXRDYWxsYmFja3NGb3JVbnNvcnRlZFNhbXBsZUJ1
ZmZlcnMoKSwgJm91dHB1dEJ1ZmZlclF1ZXVlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihNZWRpYVN0cmVhbSwgIlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciB1bmFibGUgdG8gY3Jl
YXRlIGJ1ZmZlciBxdWV1ZSAlZCIsIGVycm9yKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICBtX291dHB1dEJ1ZmZlclF1ZXVlID0gb3V0cHV0QnVmZmVyUXVldWU7Ci0gICAgQ01C
dWZmZXJRdWV1ZUluc3RhbGxUcmlnZ2VyKG1fb3V0cHV0QnVmZmVyUXVldWUuZ2V0KCksIGNhbGxi
YWNrLCBjYWxsYmFja09iamVjdCwga0NNQnVmZmVyUXVldWVUcmlnZ2VyX1doZW5EYXRhQmVjb21l
c1JlYWR5LCBrQ01UaW1lWmVybywgTlVMTCk7Ci0KLSAgICBtX2lzRW5jb2RpbmcgPSB0cnVlOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
ZmluaXNoKCkKLXsKLSAgICBkaXNwYXRjaF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSwgXnsK
LSAgICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMo
bV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJv
cik7Ci0KLSAgICAgICAgZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1
dEJ1ZmZlclF1ZXVlLmdldCgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3Is
IE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVN
YXJrRW5kT2ZEYXRhIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotCi0gICAgICAgIG1faXNFbmNv
ZGluZyA9IGZhbHNlOwotICAgIH0pOwotfQotCi12b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3Rh
dHVzIHN0YXR1cywgVlRFbmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikK
LXsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihzdGF0dXMsIE1lZGlhU3RyZWFtLCAiVmlkZW9T
YW1wbGVCdWZmZXJDb21wcmVzc29yIHZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayBzdGF0dXMgaXMg
JWQiLCBzdGF0dXMpOwotICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciAqY29tcHJlc3NvciA9IHN0YXRpY19j
YXN0PFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcio+KHJlZkNvbik7Ci0KLSAgICBhdXRvIGVy
cm9yID0gQ01CdWZmZXJRdWV1ZUVucXVldWUoY29tcHJlc3Nvci0+bV9vdXRwdXRCdWZmZXJRdWV1
ZS5nZXQoKSwgYnVmZmVyKTsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFT
dHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01CdWZmZXJRdWV1ZUVucXVldWUg
ZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci19Ci0KLWJvb2wgVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjppbml0Q29tcHJlc3Npb25TZXNzaW9uKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJl
ZiBmb3JtYXREZXNjcmlwdGlvbikKLXsKLSAgICBDTVZpZGVvRGltZW5zaW9ucyBkaW1lbnNpb25z
ID0gQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucyhmb3JtYXREZXNjcmlwdGlv
bik7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIE5TRGljdGlvbmFyeSAqZW5jb2RlclNwZWNpZmlj
YXRpb25zID0gbmlsOwotI2Vsc2UKLSAgICBOU0RpY3Rpb25hcnkgKmVuY29kZXJTcGVjaWZpY2F0
aW9ucyA9IEB7KF9fYnJpZGdlIE5TU3RyaW5nICopa1ZUVmlkZW9FbmNvZGVyU3BlY2lmaWNhdGlv
bl9FbmFibGVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9FbmNvZGVyOkBZRVN9OwotI2VuZGlmCi0K
LSAgICBWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb247Ci0gICAgYXV0byBlcnJvciA9
IFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRpbWVuc2lv
bnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtX291dHB1dENvZGVjVHlwZSwgKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZillbmNvZGVyU3BlY2lmaWNhdGlvbnMsIE5VTEwsIE5VTEwsIHZpZGVv
Q29tcHJlc3Npb25DYWxsYmFjaywgdGhpcywgJnZ0U2Vzc2lvbik7Ci0gICAgaWYgKGVycm9yKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ3JlYXRlIGZhaWxlZCB3aXRoICVkIiwg
ZXJyb3IpOwotICAgICAgICByZXR1cm4gTk87Ci0gICAgfQotICAgIG1fdnRTZXNzaW9uID0gYWRv
cHRDRih2dFNlc3Npb24pOwotCi0gICAgZXJyb3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0
U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9SZWFsVGltZSwga0NGQm9v
bGVhblRydWUpOwotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVFNlc3Npb25TZXRQcm9wZXJ0eSBrVlRDb21w
cmVzc2lvblByb3BlcnR5S2V5X1JlYWxUaW1lIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwotICAg
IGVycm9yID0gVlRTZXNzaW9uU2V0UHJvcGVydHkobV92dFNlc3Npb24uZ2V0KCksIGtWVENvbXBy
ZXNzaW9uUHJvcGVydHlLZXlfTWF4S2V5RnJhbWVJbnRlcnZhbER1cmF0aW9uLCAoX19icmlkZ2Ug
Q0ZUeXBlUmVmKUAobV9tYXhLZXlGcmFtZUludGVydmFsRHVyYXRpb24pKTsKLSAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRihlcnJvciwgTWVkaWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVydHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9NYXhL
ZXlGcmFtZUludGVydmFsRHVyYXRpb24gZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0gICAgZXJy
b3IgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eShtX3Z0U2Vzc2lvbi5nZXQoKSwga1ZUQ29tcHJlc3Np
b25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSwgKF9fYnJpZGdlIENGVHlwZVJlZilAKG1f
ZXhwZWN0ZWRGcmFtZVJhdGUpKTsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRTZXNzaW9uU2V0UHJvcGVy
dHkga1ZUQ29tcHJlc3Npb25Qcm9wZXJ0eUtleV9FeHBlY3RlZEZyYW1lUmF0ZSBmYWlsZWQgd2l0
aCAlZCIsIGVycm9yKTsKLQotICAgIC8vIEZJWE1FOiBTZXQgdmlkZW8gY29tcHJlc3Npb24gcmF0
ZS4KLSAgICBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uUHJlcGFyZVRvRW5jb2RlRnJhbWVz
KG1fdnRTZXNzaW9uLmdldCgpKTsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRihlcnJvciwgTWVk
aWFTdHJlYW0sICJWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgVlRDb21wcmVzc2lvblNlc3Np
b25QcmVwYXJlVG9FbmNvZGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7Ci0KLSAgICBy
ZXR1cm4gWUVTOwotfQotCi12b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vz
c1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCi17Ci0gICAgaWYgKCFtX3Z0
U2Vzc2lvbikgewotICAgICAgICBpZiAoIWluaXRDb21wcmVzc2lvblNlc3Npb24oQ01TYW1wbGVC
dWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbihidWZmZXIpKSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1
ZmZlcihidWZmZXIpOwotICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZVN0YW1wID0gQ01TYW1wbGVC
dWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAoYnVmZmVyKTsKLSAgICBhdXRvIGR1cmF0aW9u
ID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOwotICAgIGF1dG8gZXJyb3IgPSBW
VENvbXByZXNzaW9uU2Vzc2lvbkVuY29kZUZyYW1lKG1fdnRTZXNzaW9uLmdldCgpLCBpbWFnZUJ1
ZmZlciwgcHJlc2VudGF0aW9uVGltZVN0YW1wLCBkdXJhdGlvbiwgTlVMTCwgdGhpcywgTlVMTCk7
Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uRW5jb2RlRnJhbWUgZmFpbGVk
IHdpdGggJWQiLCBlcnJvcik7Ci19Ci0KLXZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQotewotICAgIGRpc3Bh
dGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLCBeewotICAgICAgICBpZiAoIW1faXNFbmNv
ZGluZykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVy
KGJ1ZmZlcik7Ci0gICAgfSk7Ci19Ci0KLUNNU2FtcGxlQnVmZmVyUmVmIFZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvcjo6Z2V0T3V0cHV0U2FtcGxlQnVmZmVyKCkKLXsKLSAgICByZXR1cm4gKENN
U2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDTUJ1ZmZlclF1ZXVlR2V0SGVhZCht
X291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpOwotfQotCi1SZXRhaW5QdHI8Q01TYW1wbGVCdWZm
ZXJSZWY+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZl
cigpCi17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0
PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX291dHB1dEJ1ZmZlclF1ZXVl
LmdldCgpKSkpKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZjMxMGY0OGVkN2Vk
ZTU4ZmUyZTViNzg0NjRmNjJjOTBlMmQwMTE3MC4uYTZjZWU1NGM5N2M5MjE1YTY4NzNmNGRjYjEy
YmRlNDdjMWRjNDBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTQ5LDcgKzE0OSw2IEBAIFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyCiAgICAgcmV0dXJuICptX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJv
eHk7CiB9CiAKLSNpZiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKIFJlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjptZWRpYVJlY29yZGVyTWFu
YWdlcigpCiB7CiAgICAgaWYgKCFtX3JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyKQpAQCAtMTU3
LDcgKzE1Niw2IEBAIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyJiBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjptZWRpYVJlY29yZGVyTWFuYWdlcigpCiAKICAgICByZXR1cm4gKm1fcmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXI7CiB9Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKIFJlbW90ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlciYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6YXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpCkBAIC0xNzYsNyAr
MTc0LDcgQEAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2FtcGxlQnVmZmVyRGkKICAgICByZXR1cm4gKm1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlcjsKIH0KICNlbmRpZgotI2VuZGlmIC8vICBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIFVTRShMSUJXRUJSVEMpCiBMaWJXZWJSVENDb2RlY3NQcm94eSYgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6bGliV2ViUlRDQ29kZWNzUHJveHkoKQpAQCAtMjA1LDcgKzIwMyw2IEBA
IHZvaWQgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBJCiAgICAgICAgIHVzZXJNZWRpYUNhcHR1cmVNYW5hZ2Vy
UHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2lmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVH
QVRFKQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
UmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAg
ICAgICBtZWRpYVJlY29yZGVyTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nl
c3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxNCw3ICsyMTEs
NiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSQogICAgICAgICBtZWRpYVJlY29yZGVyTWFuYWdl
cigpLmRpZFJlY2VpdmVSZW1vdGVNZWRpYVJlY29yZGVyTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZiAvLyBIQVZFKEFWQVNTRVRXUklU
RVJERUxFR0FURSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFZJREVPX1RSQUNLKQog
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKICAgICAgICAgYXVkaW9UcmFja1JlbmRlcmVyTWFuYWdlcigpLmRpZFJlY2VpdmVNZXNz
YWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2Rlcik7CkBAIC0yMzIsOCArMjI4LDgg
QEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIEkKICAgICAgICAgc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWFuYWdlcigpLmRpZFJlY2VpdmVMYXllck1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShWSURFT19UUkFDSykKLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2VuZGlm
CisjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OkxpYldlYlJUQ0NvZGVj
c1Byb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKICAgICAgICAgbGliV2ViUlRDQ29kZWNz
UHJveHkoKS5kaWRSZWNlaXZlTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggNzg2NjNiY2RiYTA3MzJlZmY1YjExYjk0YzVkY2EyMzg4MmVlOWI4
My4uMmI5YmQxZjg4N2JhZGFmYTRlYTVjNGJhMzQxNjlkOGI5NzhmZDYyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBA
IC03OSw5ICs3OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5JiB1
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KCk7Ci0jaWYgSEFWRShBVkFTU0VUV1JJVEVSREVM
RUdBVEUpCiAgICAgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXImIG1lZGlhUmVjb3JkZXJNYW5h
Z2VyKCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUmVtb3RlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJNYW5hZ2VyJiBhdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2Vy
KCk7CiAgICAgUmVtb3RlU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTWFuYWdlcigpOwpAQCAtMTA0LDkgKzEwMiw3IEBAIHByaXZhdGU6CiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFVzZXJNZWRpYUNhcHR1cmVN
YW5hZ2VyUHJveHk+IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eTsKLSNpZiBIQVZFKEFW
QVNTRVRXUklURVJERUxFR0FURSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFSZWNv
cmRlck1hbmFnZXI+IG1fcmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7Ci0jZW5kaWYKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyTWFuYWdlcj4gbV9hdWRpb1RyYWNrUmVuZGVyZXJNYW5hZ2VyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2Vy
PiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA1
NjhjMjgwMTcxOGZlOTBiOGJlMDgyZmVhMzVlZTc1MGQ2M2RkYjg3Li5jYjI0ZGRiZjI3OWZiMjY1
OTQ2YWExMjFjYjA3MjJiNjJiOGM2YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyLmgi
CiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKKyNpZiBQTEFURk9S
TShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
CiAjaW5jbHVkZSAiU2hhcmVkUmluZ0J1ZmZlclN0b3JhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NBUmluZ0J1ZmZlci5oPgpAQCAtMTM2LDQgKzEzNiw0IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNv
cmRlcjo6c3RvcFJlY29yZGluZygpCiAKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZB
U1NFVFdSSVRFUkRFTEVHQVRFKQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCmluZGV4IGE4M2RhMzA1NTJlYjQx
ZWY5NTk0NGRiM2FhNTA0ZmZjYTNmNjgzODEuLmZmNWE4Mjk4NGZiMzk2NDFlZDFlNTYxNTQ4OThm
OTUyNmM5YmQ1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisjaWYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCkBAIC04Miw0ICs4Miw0IEBAIHByaXZhdGU6CiAKIH0KIAotI2VuZGlmIC8v
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIubWVzc2FnZXMuaW4KaW5kZXggY2UzMmI3MDRlN2VjOGM0NzdiZTA1MWUyMGQ3ZDI3YWYw
YzRmODIxYi4uNTRiYTY0ZDU2ZmJlYTMwZmNiYjM5NmRhZDVlYTNmYzMwYzk5NWRlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCiAjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhB
VkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKIG1lc3NhZ2VzIC0+IFJlbW90
ZU1lZGlhUmVjb3JkZXIgTm90UmVmQ291bnRlZCB7CiAgICAgQXVkaW9TYW1wbGVzU3RvcmFnZUNo
YW5nZWQoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBzdG9yYWdlSGFuZGxlLCBXZWJDb3Jl
OjpDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIHVpbnQ2NF90IG51bWJlck9m
RnJhbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAppbmRleCAwMTllNGI4NWYwZWViYjYy
NGU1Njk1ODhhN2FhZTQ4NDIxMjU4NmRiLi4zNzBjZDliMzg3NTY5YTk4ZTg0ZTE3ODA5ZjA4NWQ2
MmIzYjZlOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLmNwcApAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKKyNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRlY29kZXIuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlck1hbmFnZXIuaAppbmRleCBhYjgwMWJjMTE0YzQ5MjNlYTlkNzkwZjkyM2M1
MmRmNDlhYTExZTdlLi41NDcxYmJkNDg0ZGQ5YjNkMGM4ZWUzZGQ2MTFjMDVlOTBkMDM2YzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyTWFuYWdlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNwcmFnbWEgb25j
ZQogCi0jaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgSEFWRShBVkFTU0VUV1JJVEVSREVMRUdBVEUpCisjaWYgUExBVEZP
Uk0oQ09DT0EpICYmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlci5tZXNzYWdlcy5pbgpp
bmRleCBjNTE4NDEwY2I0OWZhZGE2ODhkMzc3ZDFkN2EwNmNkZTNiYWM3OTdiLi4zODdhNDEzNjFj
ZGJkOWI3ZWFlMmMzMzczNjUyYTk4ZjQ5MzRlMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ck1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgog
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLSNpZiBQTEFURk9STShDT0NPQSkg
JiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFW
QVNTRVRXUklURVJERUxFR0FURSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRp
YVJlY29yZGVyTWFuYWdlciBOb3RSZWZDb3VudGVkIHsKICAgICBDcmVhdGVSZWNvcmRlcihXZWJL
aXQ6Ok1lZGlhUmVjb3JkZXJJZGVudGlmaWVyIGlkLCBib29sIGhhc0F1ZGlvLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiBjcmVhdGlv
bkVycm9yKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIu
aAppbmRleCBlMzhjNWQ2YzA1ZDBkZmFmNDI2ODE5OTViOWUwNGY0ZTc2NDdmMGI1Li45ZjliMzBj
NzYxNjIzZGQ5NDhkMjliZTBmMzdmMGFkMGY0N2U1YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZVNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllck1hbmFnZXIuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXJJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5j
cHAKaW5kZXggNjdlM2VlNjUxM2Q4ZmE0M2U4MWU4YjIyYzY1OGRmODk2NDA3Njg0NS4uZGQ0MDkx
OTg4YzEyNjg5NzViYjk3OTJlODMzN2M2ZTA2NTM3ZjNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1l
ZGlhUmVjb3JkZXJQcml2YXRlLmgiCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJE
RUxFR0FURSkKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlck1lc3NhZ2VzLmgiCkBAIC0xNDYs
NCArMTQ2LDQgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RvcFJlY29yZGluZygpCiAK
IH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCBkODBmY2Q3ZjE5ODg5NzUyNWM5
ZWZmYzkxNzU3ZDIyZmMzMjNlZmZlLi42ZDlmYWJlM2VhNzI0NzNmNDU5OTBjZThhZDE3MmQwY2Qw
M2E4MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKKyNpZiBQ
TEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
aGFyZWRSaW5nQnVmZmVyU3RvcmFnZS5oIgpAQCAtNzMsNSArNzMsNSBAQCBwcml2YXRlOgogCiB9
CiAKLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTUVESUFfU1RSRUFNKSAmJiBIQVZFKEFWQVNTRVRXUklURVJERUxFR0FURSkKKyNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByb3ZpZGVyLmNwcAppbmRleCBkOTU5YzkyNWZkZDNh
MjIxYTM3YjFhMzcwN2M2ZGYxYWQwMmEwZThkLi5iY2U3NzRhODgxZGNlYzc5NDI2Mzc5Njg1NTJl
M2NjYzdiYjM3NDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcm92aWRlci5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZT4gTWVkaWFSZWNvcmRlclByb3ZpZGVyOjpjcmVhdGVNZWRpYVJlY29yZGVy
UHJpdmF0ZShjb25zdCBNZWRpYVN0cmVhbVByaXZhdGUmIHN0cmVhbSkKIHsKLSNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFdSSVRFUkRFTEVHQVRFKQorI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKICAgICBpZiAobV91c2VHUFVQcm9jZXNzKQogICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxNZWRpYVJlY29yZGVyUHJpdmF0ZT4oc3RyZWFtKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkz
OWY0Njg5ODFlNDQ4ZGQyMmQwODdhNzRhMzI4MGMxYTExNTg4YTkuLjcyNzRkOWMyZWY2ZmFkMzdj
YjkwMWJiZmU5Y2U4OGM5ZjJhNmE1ZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMi0w
NSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NTgxOC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzI3MAorCisgICAgICAgIEl0IGlzIGJyZWFraW5nIHNv
bWUgTWFjIGJ1aWxkcyAoUmVxdWVzdGVkIGJ5IHlvdWVubiBvbgorICAgICAgICAjd2Via2l0KS4K
KworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIltDb2NvYV0gVXNlIEFW
QXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlciIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjU4MgorICAgICAgICBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjU1ODE4CisKIDIwMjAtMDItMDUgIHlv
dWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVXNlIEFW
QXNzZXRXcml0ZXJEZWxlZ2F0ZSB0byBpbXBsZW1lbnQgTWVkaWFSZWNvcmRlcgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggOTk4ODk0ZjUzOTJiMWEyZjA0ZjhjZDk3YjAyNTg4ZDExMzFhYTFlZS4uYzg2
ODIzOGYyMjhmMmVhNDIyOTg0NWMwYTc3MzlmMTNhMDNmNmYyMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0zMzI5LDEwICszMzI5LDcgQEAgd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMv
Y29weS10ZXgtaW1hZ2UtMmQtZm9ybWF0cy5odG1sIFsgU2tpcCBdCiB3ZWJnbC8xLjAuMy9jb25m
b3JtYW5jZS9jYW52YXMvcmFwaWQtcmVzaXppbmcuaHRtbCBbIFNraXAgXQogd2ViZ2wvMS4wLjMv
Y29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1kcmF3LWJ1ZmZlcnMuaHRtbCBbIFNraXAgXQog
Ci0jIE5vdCBzdXBwb3J0ZWQgYnkgZGVmYXVsdAotaHR0cC93cHQvbWVkaWFyZWNvcmRlciBbIFNr
aXAgXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRpYWNhcHR1cmUtcmVjb3Jk
IFsgU2tpcCBdCi1mYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRpYS1yZWNvcmRlci5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMTk3NjczIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci1BVi1hdWRpby12aWRlby1kYXRhYXZhaWxhYmxlLmh0bWwgWyBQYXNzIEZhaWx1cmUg
VGltZW91dCBdCiAKICMgVG8gYWlkIHRyYW5zaXRpb24gdG8gQU5HTEUgYmFja2VuZCBmb3IgV2Vi
R0wsIHNraXAgYWxsIG9mIFdlYkdMIDIgdGVzdHMgZm9yIG5vdy4gCiAjIFJlLWVuYWJsZSBhcyBl
YWNoIGNodW5rIG9mIHRlc3RzIGFyZSB2ZXJpZmllZCB3aXRoIEFOR0xFIGJhY2tlbmQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIt
QVYtYXVkaW8tdmlkZW8tZGF0YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXItQVYtYXVkaW8tdmlkZW8tZGF0
YWF2YWlsYWJsZS1ncHVwcm9jZXNzLmh0bWwKaW5kZXggODgwMTQ4NjU3ZTI1ZGRlMzNjYjEwOTM0
NmQ2Y2JlYWFiN2Y5Y2VmYi4uMzMzMDZkZTc5NDdiYmI5MjU3Mzk0YzNiYTE5NjIwMWIwNTg0Nzg4
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLUFWLWF1ZGlvLXZpZGVvLWRhdGFhdmFpbGFibGUtZ3B1cHJvY2Vzcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci1BVi1hdWRp
by12aWRlby1kYXRhYXZhaWxhYmxlLWdwdXByb2Nlc3MuaHRtbApAQCAtNTYsNyArNTYsMTcgQEAK
ICAgICB9CiAKICAgICBhc3luY190ZXN0KHQgPT4geworICAgICAgICBjb25zdCBhYyA9IG5ldyBB
dWRpb0NvbnRleHQoKTsKKyAgICAgICAgY29uc3Qgb3NjID0gYWMuY3JlYXRlT3NjaWxsYXRvcigp
OworICAgICAgICBjb25zdCBkZXN0ID0gYWMuY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigp
OworICAgICAgICBjb25zdCBhdWRpbyA9IGRlc3Quc3RyZWFtOworICAgICAgICBvc2MuY29ubmVj
dChkZXN0KTsKKwogICAgICAgICBjb25zdCB2aWRlbyA9IGNyZWF0ZVZpZGVvU3RyZWFtKCk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHModmlkZW8uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIDAsICJ2
aWRlbyBtZWRpYXN0cmVhbSBzdGFydHMgd2l0aCBubyBhdWRpbyB0cmFjayIpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGF1ZGlvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAiYXVkaW8gbWVk
aWFzdHJlYW0gc3RhcnRzIHdpdGggb25lIGF1ZGlvIHRyYWNrIik7CisgICAgICAgIHZpZGVvLmFk
ZFRyYWNrKGF1ZGlvLmdldEF1ZGlvVHJhY2tzKClbMF0pOworICAgICAgICBhc3NlcnRfZXF1YWxz
KHZpZGVvLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCAxLCAidmlkZW8gbWVkaWFzdHJlYW0gc3Rh
cnRzIHdpdGggb25lIGF1ZGlvIHRyYWNrIik7CiAgICAgICAgIGNvbnN0IHJlY29yZGVyID0gbmV3
IE1lZGlhUmVjb3JkZXIodmlkZW8pOwogICAgICAgICBsZXQgbW9kZSA9IDA7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2FmYTQxMDc4MjI4M2ZiMzNk
YWY2OTM2NGQ4OWNmZTNjOTU2MGMxYS4uYWMxZjM3N2UxZWFhOTBlYmFmOTM0ZGFiOTUzM2QzMTFh
NTRiYmEzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTE4MjgsMTAgKzE4MjgsNiBAQCB3ZWJraXQub3JnL2IvMTk1NjM1IHNjcm9sbGluZ2Nvb3JkaW5h
dG9yL21hYy9tdWx0aXBsZS1maXhlZC5odG1sIFsgUGFzcyBUaW1lb3V0CiBbIENhdGFsaW5hKyBd
IGZhc3QvdGV4dC9kZXNpZ24tc3lzdGVtLXVpLTE1Lmh0bWwgWyBQYXNzIF0KIFsgQ2F0YWxpbmEr
IF0gZmFzdC90ZXh0L2Rlc2lnbi1zeXN0ZW0tdWktMTYuaHRtbCBbIFBhc3MgXQogCi1bIENhdGFs
aW5hKyBdIGh0dHAvd3B0L21lZGlhcmVjb3JkZXIgWyBQYXNzIF0gCi1bIENhdGFsaW5hKyBdIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZCBbIFBhc3Mg
XQotWyBDYXRhbGluYSsgXSBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS1tZWRpYS1yZWNvcmRlci5o
dG1sIFsgUGFzcyBdCi0KIHdlYmtpdC5vcmcvYi8yMDAxMjggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1lbGVt
ZW50L3ZpZGVvX3RpbWV1cGRhdGVfb25fc2Vlay5odG1sIFsgVGltZW91dCBQYXNzIF0KIAogIyBy
ZGFyOi8vNTU0MDU4NTEgKFsgbWFjT1MgXSBMYXlvdXQgdGVzdHMgd2ViZ3B1LyotdHJpYW5nbGUt
c3RyaXAuaHRtbCBhcmUgZmxha3kgZmFpbHVyZXMuICgyMDE4MjcpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>