<?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>176258</bug_id>
          
          <creation_ts>2017-09-01 17:18:57 -0700</creation_ts>
          <short_desc>REGRESSION(r221494): This caused the windows build to fail. (Requested by mlewis13 on #webkit).</short_desc>
          <delta_ts>2017-09-27 12:54:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>176065</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>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344680</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-01 17:18:57 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/221494 broke the build:
This caused the windows build to fail. (Requested by mlewis13 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>1344682</commentid>
    <comment_count>1</comment_count>
      <attachid>319674</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-01 17:19:10 -0700</bug_when>
    <thetext>Created attachment 319674
ROLLOUT of r221494

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>1345229</commentid>
    <comment_count>2</comment_count>
      <attachid>319674</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-04 10:54:29 -0700</bug_when>
    <thetext>Comment on attachment 319674
ROLLOUT of r221494

Clearing flags on attachment: 319674

Committed r221590: &lt;http://trac.webkit.org/changeset/221590&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345230</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-04 10:54:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353729</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:54:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694256&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319674</attachid>
            <date>2017-09-01 17:19:10 -0700</date>
            <delta_ts>2017-09-04 10:54:29 -0700</delta_ts>
            <desc>ROLLOUT of r221494</desc>
            <filename>bug-176258-20170901201909.patch</filename>
            <type>text/plain</type>
            <size>86348</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhMjhlNTIzMTYyZTMzYWRiNGM3ODA4
NjAyZWViYjA5NzdjOGU4MmYuLmU0MTNmMDAxOTlmNjY4ZTY1NGQ1ZTZjYjQ5YWMwMjEwMmEwZTgy
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMDktMDEgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MjE0OTQgYW5kIHIyMjE1MDAuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzYyNTgKKworICAgICAgICBUaGlzIGNhdXNlZCB0aGUgd2luZG93cyBidWls
ZCB0byBmYWlsLiAoUmVxdWVzdGVkIGJ5IG1sZXdpczEzCisgICAgICAgIG9uICN3ZWJraXQpLgor
CisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIlN3aXRjaCBIVE1MTWVk
aWFFbGVtZW50IHRvIHJlbGVhc2UgbG9nZ2luZyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA2NQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yMjE0OTQKKworICAgICAgICAiU3dpdGNoIEhUTUxNZWRpYUVsZW1lbnQg
dG8gcmVsZWFzZSBsb2dnaW5nIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc2MDY1CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzIyMTUwMAorCiAyMDE3LTA5LTAxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFN3aXRjaCBIVE1MTWVkaWFFbGVtZW50IHRvIHJlbGVhc2UgbG9n
Z2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDk2NTRiMTQ5MjY4NGI2ODI0ODliYTdlYzUyNWQ0ZjgzNmU3MGZi
MzMuLjRiZmU4NWY0MDAxNmRlZDMxZjBmNzkzZWJiMmQ4MDEyOGFjOWFlZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAxNy0wOS0wMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5NCBh
bmQgcjIyMTUwMC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NjI1OAorCisgICAgICAgIFRoaXMgY2F1c2VkIHRoZSB3aW5kb3dzIGJ1aWxkIHRvIGZh
aWwuIChSZXF1ZXN0ZWQgYnkgbWxld2lzMTMKKyAgICAgICAgb24gI3dlYmtpdCkuCisKKyAgICAg
ICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiU3dpdGNoIEhUTUxNZWRpYUVsZW1l
bnQgdG8gcmVsZWFzZSBsb2dnaW5nIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2MDY1CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzIyMTQ5NAorCisgICAgICAgICJTd2l0Y2ggSFRNTE1lZGlhRWxlbWVudCB0byByZWxl
YXNlIGxvZ2dpbmciCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzYwNjUKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjIx
NTAwCisKIDIwMTctMDktMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IHRha2VuLmdldCgpID09ICZqb2IgaW4gV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2IgJikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBhODU0YmMzYTdmYzhkNGExM2RmNmY1OTk2
NWFiOTY0OTdhNWE0OWJkLi5hZTEzNWM4ODQzMjdlMjY4N2VjZGQzNTAyMzdlNzY5NWUyMDJjZTA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0wOS0wMSAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjIyMTQ5NCBhbmQgcjIyMTUwMC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjI1OAorCisgICAgICAgIFRoaXMgY2F1c2VkIHRo
ZSB3aW5kb3dzIGJ1aWxkIHRvIGZhaWwuIChSZXF1ZXN0ZWQgYnkgbWxld2lzMTMKKyAgICAgICAg
b24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAi
U3dpdGNoIEhUTUxNZWRpYUVsZW1lbnQgdG8gcmVsZWFzZSBsb2dnaW5nIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDY1CisgICAgICAgIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIyMTQ5NAorCisgICAgICAgICJTd2l0Y2ggSFRN
TE1lZGlhRWxlbWVudCB0byByZWxlYXNlIGxvZ2dpbmciCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwNjUKKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMjIxNTAwCisKIDIwMTctMDktMDEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSBhZ2FpbiB0byBmaXggdGhlIEludGVybmFsIGlP
UyBTaW11bGF0b3IgYnVpbGQgYWZ0ZXIgcjIyMTQ4NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL01lZGlhVGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCmluZGV4IDVm
OTY5MWNjNjdiMDFiOWNmYzllNWUyMjEyNzIxN2JkNzExZWQ4NmUuLjhhMTRhNzNkNjY0MTU4ZTkx
MjkwMjkyN2E4ZTdlZjkzYzM5MjcwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lZGlh
VGltZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcApAQCAtMzQsNyArMzQs
NiBAQAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNTUyLDIyICs1
NTEsNiBAQCB2b2lkIE1lZGlhVGltZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAg
IG91dC5wcmludCh0b0RvdWJsZSgpLCAifSIpOwogfQogCi1TdHJpbmcgTWVkaWFUaW1lOjp0b1N0
cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotCi0gICAgYnVpbGRl
ci5hcHBlbmQoInsiKTsKLSAgICBpZiAoIWhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgYnVp
bGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV90aW1lVmFsdWUpKTsKLSAgICAgICAgYnVpbGRl
ci5hcHBlbmQoIi8iKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV90
aW1lU2NhbGUpKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIiA9ICIpOwotICAgIH0KLSAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcih0b0RvdWJsZSgpKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoIn0iKTsKLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCiBNZWRpYVRp
bWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKQogewogICAgIGlmIChyaHMuaXNJbnZhbGlkKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5oCmluZGV4IGEyNGM3MmNlZWM2ZTZiZGM5ZGIwZDE4ZTc4ZmRjNmU5YzY1OGU0
MjIuLmE3Yjc0NTdmMmJhYmFlZWZiMzc2NTRkNDEzNmE3YjBlM2Y1Yzc4MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjZGVmaW5lIFdURl9NZWRpYVRpbWVfaAogCiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2luY2x1ZGUgPGNtYXRoPgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTEwOSw3ICsxMDgsNiBAQCBw
dWJsaWM6CiAgICAgY29uc3QgdWludDMyX3QmIHRpbWVTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGltZVNjYWxlOyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKICAgICAvLyBNYWtlIHRoZSBmb2xsb3dpbmcg
Y2FzdHMgZXJyb3JzOgogICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0ID0gZGVsZXRlOwpAQCAt
MTY5LDE4ICsxNjcsNCBAQCBib29sIE1lZGlhVGltZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IE1lZGlhVGltZSYgdGltZSkKIHVzaW5nIFdURjo6TWVkaWFUaW1lOwogdXNpbmcgV1RGOjphYnM7
CiAKLW5hbWVzcGFjZSBQQUwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgotc3RydWN0IExv
Z0FyZ3VtZW50OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IExvZ0FyZ3VtZW50PFdURjo6TWVkaWFU
aW1lPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXVEY6Ok1lZGlhVGltZSYg
dGltZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aW1lLnRvU3RyaW5nKCk7Ci0gICAgfQotfTsK
LX0KLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYjVkOTA3MTNkYzhjOTllYjY1NmIwMzZiZGE5MzIyNTVlNzk4ZDUy
NC4uM2EwNDBhYTI0MDg5Mzg5MmNhYmU1OGU1ZjdjMjA4M2YxNjEyYjZkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIsNyAr
MjIsNiBAQAogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCQkwNzA4QUMzMzFG
NEM4NzRCMDAxRjc4OEYgLyogTG9nZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzA4QUMzMjFGNEM4NzRBMDAxRjc4OEYgLyogTG9nZ2VyLmggKi87
IH07Ci0JCTA3Mzc3QURDMUY1Nzc3RDkwMDI3RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Mzc3QURCMUY1Nzc3RDcw
MDI3RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCAqLzsgfTsKIAkJMEMyRDlFNzMxRUVGNUFGNjAwREJD
MzE3IC8qIEV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEMyRDlFNzIxRUVGNUFGNjAwREJDMzE3IC8qIEV4cG9ydE1hY3Jvcy5oICov
OyB9OwogCQkwQzJEQTA2RDFGMzNDQTg0MDBEQkMzMTcgLyogQ0ZMb2NhbGVTUEkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBDMkRBMDY3MUYzM0NBODQw
MERCQzMxNyAvKiBDRkxvY2FsZVNQSS5oICovOyB9OwogCQkwQzJEQTA2RTFGMzNDQTg0MDBEQkMz
MTcgLyogQ0ZOZXR3b3JrQ29ubmVjdGlvbkNhY2hlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQzJEQTA2ODFGMzNDQTg0MDBEQkMzMTcgLyogQ0ZO
ZXR3b3JrQ29ubmVjdGlvbkNhY2hlU1BJLmggKi87IH07CkBAIC0xMzcsNyArMTM2LDYgQEAKIAog
LyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAJCTA3MDhBQzMyMUY0Qzg3NEEw
MDFGNzg4RiAvKiBMb2dnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9n
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3Mzc3QURCMUY1Nzc3RDcwMDI3
RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9nZ2VySGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBDMkQ5RTcyMUVF
RjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRXhwb3J0TWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBD
MkRBMDY3MUYzM0NBODQwMERCQzMxNyAvKiBDRkxvY2FsZVNQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDRkxvY2FsZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwQzJEQTA2ODFGMzNDQTg0MDBEQkMzMTcgLyogQ0ZOZXR3b3JrQ29ubmVjdGlvbkNhY2hl
U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGTmV0d29ya0Nvbm5lY3Rp
b25DYWNoZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDEwLDcgKzQwOCw2
IEBACiAJCQkJQTMwRDQxMUQxRjBERDBBQzAwQjcxOTU0IC8qIHRleHQgKi8sCiAJCQkJMEMyRDlF
NzIxRUVGNUFGNjAwREJDMzE3IC8qIEV4cG9ydE1hY3Jvcy5oICovLAogCQkJCTA3MDhBQzMyMUY0
Qzg3NEEwMDFGNzg4RiAvKiBMb2dnZXIuaCAqLywKLQkJCQkwNzM3N0FEQjFGNTc3N0Q3MDAyN0Yx
NkQgLyogTG9nZ2VySGVscGVyLmggKi8sCiAJCQkJQTNDNjZDREExRjQ2MkQ2QTAwOUU2RUU5IC8q
IFNlc3Npb25JRC5jcHAgKi8sCiAJCQkJQTNDNjZDREIxRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Np
b25JRC5oICovLAogCQkJKTsKQEAgLTUzNSw3ICs1MzIsNiBAQAogCQkJCTBDMkRBMTQzMUYzQkVC
NDkwMERCQzMxNyAvKiBJT1BTTGliU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0NDFG
M0JFQjQ5MDBEQkMzMTcgLyogSU9SZXR1cm5TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRB
MTQ1MUYzQkVCNDkwMERCQzMxNyAvKiBJT1N1cmZhY2VTUEkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTA3Mzc3QURDMUY1Nzc3RDkwMDI3RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBDMkRBMTQ2MUYzQkVCNDkwMERCQzMxNyAvKiBJT1R5cGVzU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMzBENDEyMTFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBDNUFGOTFDMUY0M0E0QzcwMDJFQUMwMiAvKiBMYXVuY2hTZXJ2aWNlc1NQ
SS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xv
Z2dlci5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnZXIuaAppbmRleCBiZDAwOTE3NjE1
NDE4OGNiMWUxOTlkODlmOWU3ZGU4Njc3YjAwZTg1Li40N2I5MWM3YWE4OGFiNjM0MzEyOWQ1YWE4
Yzg2NGM3NzUyZTFkZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0xvZ2dl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2VyLmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHVibGljOgogICAgIGNsYXNzIE9ic2VydmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgfk9ic2VydmVyKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRMb2dNZXNzYWdl
KGNvbnN0IFdURkxvZ0NoYW5uZWwmLCBXVEZMb2dMZXZlbCwgY29uc3QgU3RyaW5nJikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9nTWVzc2FnZShjb25zdCBXVEZMb2dDaGFubmVsJiwg
Y29uc3QgU3RyaW5nJikgPSAwOwogICAgIH07CiAKICAgICBzdGF0aWMgUmVmPExvZ2dlcj4gY3Jl
YXRlKGNvbnN0IHZvaWQqIG93bmVyKQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIGlubGluZSB2b2lkIGxv
Z0Fsd2F5cyhXVEZMb2dDaGFubmVsJiBjaGFubmVsLCBVTlVTRURfRlVOQ1RJT04gY29uc3QgQXJn
dW1lbnRzJi4uLiBhcmd1bWVudHMpIGNvbnN0CisgICAgaW5saW5lIHZvaWQgbG9nQWx3YXlzKFdU
RkxvZ0NoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IEFyZ3VtZW50cyYuLi4gYXJndW1lbnRzKSBjb25z
dAogICAgIHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICAvLyAiU3RhbmRhcmQi
IFdlYkNvcmUgbG9nZ2luZyBnb2VzIHRvIHN0ZGVyciwgd2hpY2ggaXMgY2FwdHVyZWQgaW4gbGF5
b3V0IHRlc3Qgb3V0cHV0IGFuZCBjYW4gZ2VuZXJhbGx5IGJlIGEgcHJvYmxlbQpAQCAtNzMsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZl
bEFsd2F5cykpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbG9nKGNoYW5uZWwsIFdU
RkxvZ0xldmVsQWx3YXlzLCBhcmd1bWVudHMuLi4pOworICAgICAgICBsb2coY2hhbm5lbCwgYXJn
dW1lbnRzLi4uKTsKICNlbmRpZgogICAgIH0KIApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZlbEVycm9yKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBsb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxFcnJvciwgYXJn
dW1lbnRzLi4uKTsKKyAgICAgICAgbG9nKGNoYW5uZWwsIGFyZ3VtZW50cy4uLik7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgpAQCAtOTIsNyArOTIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZMb2dMZXZlbFdhcm5pbmcp
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxvZyhjaGFubmVsLCBXVEZMb2dMZXZl
bFdhcm5pbmcsIGFyZ3VtZW50cy4uLik7CisgICAgICAgIGxvZyhjaGFubmVsLCBhcmd1bWVudHMu
Li4pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KQEAgLTEw
MSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghd2lsbExvZyhjaGFubmVsLCBXVEZM
b2dMZXZlbE5vdGljZSkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbG9nKGNoYW5u
ZWwsIFdURkxvZ0xldmVsTm90aWNlLCBhcmd1bWVudHMuLi4pOworICAgICAgICBsb2coY2hhbm5l
bCwgYXJndW1lbnRzLi4uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1
bWVudHM+CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXdpbGxMb2co
Y2hhbm5lbCwgV1RGTG9nTGV2ZWxJbmZvKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBsb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxJbmZvLCBhcmd1bWVudHMuLi4pOworICAgICAgICBs
b2coY2hhbm5lbCwgYXJndW1lbnRzLi4uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
IXdpbGxMb2coY2hhbm5lbCwgV1RGTG9nTGV2ZWxEZWJ1ZykpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbG9nKGNoYW5uZWwsIFdURkxvZ0xldmVsRGVidWcsIGFyZ3VtZW50cy4uLik7
CisgICAgICAgIGxvZyhjaGFubmVsLCBhcmd1bWVudHMuLi4pOwogICAgIH0KIAogICAgIGlubGlu
ZSBib29sIHdpbGxMb2coY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2ZWwg
bGV2ZWwpIGNvbnN0CkBAIC0xNzgsNyArMTc4LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudD4KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgbG9n
KFdURkxvZ0NoYW5uZWwmIGNoYW5uZWwsIFdURkxvZ0xldmVsIGxldmVsLCBjb25zdCBBcmd1bWVu
dCYuLi4gYXJndW1lbnRzKQorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2coV1RGTG9nQ2hhbm5l
bCYgY2hhbm5lbCwgY29uc3QgQXJndW1lbnQmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAg
IFN0cmluZyBsb2dNZXNzYWdlID0gbWFrZVN0cmluZyhMb2dBcmd1bWVudDxBcmd1bWVudD46OnRv
U3RyaW5nKGFyZ3VtZW50cykuLi4pOwogCkBAIC0xODksNyArMTg5LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgICAgIGZvciAoT2JzZXJ2ZXImIG9ic2VydmVyIDogb2JzZXJ2ZXJzKCkpCi0g
ICAgICAgICAgICBvYnNlcnZlci5kaWRMb2dNZXNzYWdlKGNoYW5uZWwsIGxldmVsLCBsb2dNZXNz
YWdlKTsKKyAgICAgICAgICAgIG9ic2VydmVyLmRpZExvZ01lc3NhZ2UoY2hhbm5lbCwgbG9nTWVz
c2FnZSk7CiAgICAgfQogCiAgICAgc3RhdGljIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PE9ic2VydmVyPj4mIG9ic2VydmVycygpCkBAIC0yMDIsNiArMjAyLDI1IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2VuYWJsZWQgeyB0cnVlIH07CiB9OwogCitjbGFzcyBMb2dIZWxwZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgfkxvZ0hlbHBlcigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwg
Y29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBjaGFy
KiBjbGFzc05hbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBXVEZMb2dDaGFubmVsJiBsb2dD
aGFubmVsKCkgY29uc3QgPSAwOworCisgICAgaW5saW5lIGJvb2wgd2lsbExvZyhXVEZMb2dMZXZl
bCBsZXZlbCkgY29uc3QgeyByZXR1cm4gbG9nZ2VyKCkud2lsbExvZyhsb2dDaGFubmVsKCksIGxl
dmVsKTsgfQorCisjZGVmaW5lIEFMV0FZU19MT0coLi4uKSAgICAgbG9nZ2VyKCkubG9nQWx3YXlz
KGxvZ0NoYW5uZWwoKSwgTG9nZ2VyOjpNZXRob2RBbmRQb2ludGVyKGNsYXNzTmFtZSgpLCBfX2Z1
bmNfXywgdGhpcyksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIEVSUk9SX0xPRyguLi4pICAgICAg
bG9nZ2VyKCkuZXJyb3IobG9nQ2hhbm5lbCgpLCBMb2dnZXI6Ok1ldGhvZEFuZFBvaW50ZXIoY2xh
c3NOYW1lKCksIF9fZnVuY19fLCB0aGlzKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgV0FSTklO
R19MT0coLi4uKSAgICBsb2dnZXIoKS53YXJuaW5nKGxvZ0NoYW5uZWwoKSwgTG9nZ2VyOjpNZXRo
b2RBbmRQb2ludGVyKGNsYXNzTmFtZSgpLCBfX2Z1bmNfXywgdGhpcyksICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIE5PVElDRV9MT0coLi4uKSAgICAgbG9nZ2VyKCkubm90aWNlKGxvZ0NoYW5uZWwo
KSwgTG9nZ2VyOjpNZXRob2RBbmRQb2ludGVyKGNsYXNzTmFtZSgpLCBfX2Z1bmNfXywgdGhpcyks
ICMjX19WQV9BUkdTX18pCisjZGVmaW5lIElORk9fTE9HKC4uLikgICAgICAgbG9nZ2VyKCkuaW5m
byhsb2dDaGFubmVsKCksIExvZ2dlcjo6TWV0aG9kQW5kUG9pbnRlcihjbGFzc05hbWUoKSwgX19m
dW5jX18sIHRoaXMpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBERUJVR19MT0coLi4uKSAgICAg
IGxvZ2dlcigpLmRlYnVnKGxvZ0NoYW5uZWwoKSwgTG9nZ2VyOjpNZXRob2RBbmRQb2ludGVyKGNs
YXNzTmFtZSgpLCBfX2Z1bmNfXywgdGhpcyksICMjX19WQV9BUkdTX18pCisKK307CisKIHRlbXBs
YXRlIDw+CiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TG9nZ2VyOjpNZXRob2RBbmRQb2ludGVyPiB7CiAg
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBMb2dnZXI6Ok1ldGhvZEFuZFBvaW50ZXIm
IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Mb2dnZXJIZWxwZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvTG9nZ2VySGVscGVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDgzYjZlYjFiMzIxMzQzMTAzNzU4MDc0MmY3NDhiM2I1ZGYzNThmNDku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9Mb2dnZXJIZWxwZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotbmFtZXNwYWNlIFBBTCB7Ci0KLWNsYXNzIExvZ2dlckhlbHBlciB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+TG9nZ2VySGVscGVyKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCBj
b25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IGNsYXNzTmFtZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFdURkxvZ0NoYW5uZWwmIGxvZ0No
YW5uZWwoKSBjb25zdCA9IDA7Ci0KLQotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotCi0jZGVm
aW5lIFRISVMgTG9nZ2VyOjpNZXRob2RBbmRQb2ludGVyKGNsYXNzTmFtZSgpLCBfX2Z1bmNfXywg
dGhpcykKLQotI2RlZmluZSBBTFdBWVNfTE9HKC4uLikgICAgIGxvZ2dlcigpLmxvZ0Fsd2F5cyhs
b2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQotI2RlZmluZSBFUlJPUl9MT0coLi4uKSAgICAgIGxv
Z2dlcigpLmVycm9yKGxvZ0NoYW5uZWwoKSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIFdBUk5JTkdf
TE9HKC4uLikgICAgbG9nZ2VyKCkud2FybmluZyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQot
I2RlZmluZSBOT1RJQ0VfTE9HKC4uLikgICAgIGxvZ2dlcigpLm5vdGljZShsb2dDaGFubmVsKCks
IF9fVkFfQVJHU19fKQotI2RlZmluZSBJTkZPX0xPRyguLi4pICAgICAgIGxvZ2dlcigpLmluZm8o
bG9nQ2hhbm5lbCgpLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgREVCVUdfTE9HKC4uLikgICAgICBs
b2dnZXIoKS5kZWJ1Zyhsb2dDaGFubmVsKCksIF9fVkFfQVJHU19fKQotCi0jZWxzZQotCi0jZGVm
aW5lIFRISVMgKCh2b2lkKTApCi0KLSNkZWZpbmUgQUxXQVlTX0xPRyguLi4pICAgICAoKHZvaWQp
MCkKLSNkZWZpbmUgRVJST1JfTE9HKC4uLikgICAgICAoKHZvaWQpMCkKLSNkZWZpbmUgRVJST1Jf
TE9HKC4uLikgICAgICAoKHZvaWQpMCkKLSNkZWZpbmUgV0FSTklOR19MT0coLi4uKSAgICAoKHZv
aWQpMCkKLSNkZWZpbmUgTk9USUNFX0xPRyguLi4pICAgICAoKHZvaWQpMCkKLSNkZWZpbmUgSU5G
T19MT0coLi4uKSAgICAgICAoKHZvaWQpMCkKLSNkZWZpbmUgREVCVUdfTE9HKC4uLikgICAgICAo
KHZvaWQpMCkKLQotI2VuZGlmCi0gICAgCi19OwotCi19IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDhlOTkzOTE4NGVlM2IwMjYyNjIwOGY3NGZkZDQ3NTBjNjNj
MDdjOTEuLjJkM2UyZWQzODY1YjkwNDU5ODJmZmViYWM3MmFjZmYxYWMxMDg0MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMjA0LDcgKzIwNCw2IEBACiAjaW5jbHVkZSA8Y3RpbWU+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5oPgotI2luY2x1ZGUgPHBhbC9Mb2dnZXIuaD4KICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNs
dWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KQEAgLTI4OCw3ICsyODcsNyBAQAogI2luY2x1ZGUgIldl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgUEFMOwor
CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKQEAgLTQ4
NjQsMTAgKzQ4NjMsNiBAQCB2b2lkIERvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENo
YW5nZSgpCiAKIHZvaWQgRG9jdW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkg
CiB7Ci0gICAgbV9zZXNzaW9uSUQgPSBTZXNzaW9uSUQ6OmVtcHR5U2Vzc2lvbklEKCk7Ci0gICAg
aWYgKG1fbG9nZ2VyKQotICAgICAgICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCBzZXNzaW9u
SUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSk7Ci0KICAgICBmb3IgKGF1dG8qIGVsZW1l
bnQgOiBtX3ByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzKQogICAgICAgICBlbGVt
ZW50LT5wcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpOwogfQpAQCAtNzIzNiwxNCArNzIz
MSw0IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFZsaW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
dmxpbmtBdHRyLCB2YWx1ZSk7CiB9CiAKLUxvZ2dlciYgRG9jdW1lbnQ6OmxvZ2dlcigpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX2xvZ2dlcikgewotICAgICAgICBtX2xvZ2dlciA9IExvZ2dlcjo6Y3Jl
YXRlKHRoaXMpOwotICAgICAgICBtX2xvZ2dlci0+c2V0RW5hYmxlZCh0aGlzLCBzZXNzaW9uSUQo
KS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuICptX2xv
Z2dlcjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCA0MzY1N2UwNzBhMjBjYjEwYzkxNWI2MjlmY2QzZmZhNzdhZTNkNjEzLi5kNmRmMjBiODJmOTg5
NDEyZTBlNzU2NWI4ODZkMjQ5YmE4ZTk3OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzUs
MTAgKzc1LDYgQEAgY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSW5wdXRDdXJzb3I7CiB9CiAKLW5h
bWVzcGFjZSBQQUwgewotY2xhc3MgTG9nZ2VyOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEFYT2JqZWN0Q2FjaGU7CkBAIC0xMzU5LDggKzEzNTUsNiBAQCBwdWJsaWM6CiAgICAg
VGV4dEF1dG9TaXppbmcmIHRleHRBdXRvU2l6aW5nKCk7CiAjZW5kaWYKIAotICAgIFBBTDo6TG9n
Z2VyJiBsb2dnZXIoKSBjb25zdDsKLQogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9u
RmxhZ3MgeyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEg
fTsKICAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIHVuc2lnbmVkID0gRGVmYXVsdERv
Y3VtZW50Q2xhc3MsIHVuc2lnbmVkIGNvbnN0cnVjdGlvbkZsYWdzID0gMCk7CkBAIC0xODExLDcg
KzE4MDUsNiBAQCBwcml2YXRlOgogCiAgICAgT3JpZW50YXRpb25Ob3RpZmllciBtX29yaWVudGF0
aW9uTm90aWZpZXI7CiAgICAgbXV0YWJsZSBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSAg
ICBtdXRhYmxlIFJlZlB0cjxQQUw6OkxvZ2dlcj4gbV9sb2dnZXI7CiAKICAgICBzdGF0aWMgYm9v
bCBoYXNFdmVyQ3JlYXRlZEFuQVhPYmplY3RDYWNoZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4MWE5MDhjODUyOWRkMzE5NzViYTBhZDZmMDU3Yzg1
MTNhYzkwMGE1Li5jZDIwZDMyN2RjNmU2ZGJjY2Q5ZTlmZjIyYTQ4MTEwODFmZmRiMDVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTg4LDcgKzg4LDYgQEAK
ICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVy
ZUluZGljYXRvci5oIgogI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDxwYWwvTG9nZ2VyLmg+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHBhbC9zeXN0ZW0vU2xlZXBE
aXNhYmxlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgpAQCAtMTY1LDI2ICsx
NjQsNyBAQAogI2luY2x1ZGUgIlZpZGVvRnVsbHNjcmVlbk1vZGVsLmgiCiAjZW5kaWYKIAotbmFt
ZXNwYWNlIFBBTCB7Ci10ZW1wbGF0ZSA8Pgotc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlVS
TD4gewotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwp
Ci0gICAgewotI2lmICFMT0dfRElTQUJMRUQKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gNTEyOwotCi0gICAgICAgIGlmICh1cmwuc3Ry
aW5nKCkubGVuZ3RoKCkgPCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykKLSAgICAgICAgICAg
IHJldHVybiB1cmwuc3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3Ry
aW5nKDAsIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nKSArICIuLi4iOwotI2Vsc2UKLSAgICAg
ICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgICAgIHJldHVybiAiW3VybF0iOwotI2VuZGlmCi0g
ICAgfQotfTsKLX0KLQotdXNpbmcgbmFtZXNwYWNlIFBBTDsKKyNkZWZpbmUgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoZG9jdW1lbnQoKS5wYWdlKCkgJiYg
ZG9jdW1lbnQoKS5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVw
IC0gSFRNTE1lZGlhRWxlbWVudDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMjA2LDcgKzE4NiwyMSBAQCBzdGF0aWMgdm9pZCBjbGVhckZs
YWdzKHVuc2lnbmVkJiB2YWx1ZSwgdW5zaWduZWQgZmxhZ3MpCiAgICAgdmFsdWUgJj0gfmZsYWdz
OwogfQogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisjaWYgIUxPR19ESVNBQkxFRAorc3Rh
dGljIFN0cmluZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgVVJMJiB1cmwpCit7CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OworCisg
ICAgaWYgKHVybC5zdHJpbmcoKS5sZW5ndGgoKSA8IG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5n
KQorICAgICAgICByZXR1cm4gdXJsLnN0cmluZygpOworICAgIHJldHVybiB1cmwuc3RyaW5nKCku
c3Vic3RyaW5nKDAsIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nKSArICIuLi4iOworfQorCitz
dGF0aWMgY29uc3QgY2hhciogYm9vbFN0cmluZyhib29sIHZhbCkKK3sKKyAgICByZXR1cm4gdmFs
ID8gInRydWUiIDogImZhbHNlIjsKK30KKwogc3RhdGljIFN0cmluZyBhY3Rpb25OYW1lKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6RGVsYXllZEFjdGlvblR5cGUgYWN0aW9uKQogewogICAgIFN0cmlu
Z0J1aWxkZXIgYWN0aW9uQnVpbGRlcjsKQEAgLTIxOCwyMSArMjEyLDI0IEBAIHN0YXRpYyBTdHJp
bmcgYWN0aW9uTmFtZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OkRlbGF5ZWRBY3Rpb25UeXBlIGFj
dGlvbikKICAgICAgICAgYWN0aW9uQnVpbGRlci5hcHBlbmQoI19hY3Rpb25UeXBlKTsgXAogICAg
IH0gXAogCi0gICAgQUNUSU9OKExvYWRNZWRpYVJlc291cmNlKTsKICAgICBBQ1RJT04oQ29uZmln
dXJlVGV4dFRyYWNrcyk7CiAgICAgQUNUSU9OKFRleHRUcmFja0NoYW5nZXNOb3RpZmljYXRpb24p
OwogICAgIEFDVElPTihDb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KTsKICAgICBBQ1RJT04oQ2hl
Y2tQbGF5YmFja1RhcmdldENvbXBhdGFibGl0eSk7CiAgICAgQUNUSU9OKENoZWNrTWVkaWFTdGF0
ZSk7CiAgICAgQUNUSU9OKE1lZGlhRW5naW5lVXBkYXRlZCk7Ci0gICAgQUNUSU9OKFVwZGF0ZVBs
YXlTdGF0ZSk7CiAKLSN1bmRlZiBBQ1RJT04KKyAgICByZXR1cm4gYWN0aW9uQnVpbGRlci50b1N0
cmluZygpOwogCi0gICAgU3RyaW5nIG5hbWUgPSBhY3Rpb25CdWlsZGVyLnRvU3RyaW5nKCk7Ci0g
ICAgQVNTRVJUKCFuYW1lLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIG5hbWU7CisjdW5kZWYgQUNU
SU9OCiB9CisKKyNlbmRpZgorCisjaWZuZGVmIExPR19NRURJQV9FVkVOVFMKKy8vIERlZmF1bHQg
dG8gbm90IGxvZ2dpbmcgZXZlbnRzIGJlY2F1c2Ugc28gbWFueSBhcmUgZ2VuZXJhdGVkIHRoZXkg
Y2FuIG92ZXJ3aGVsbSB0aGUgcmVzdCBvZgorLy8gdGhlIGxvZ2dpbmcuCisjZGVmaW5lIExPR19N
RURJQV9FVkVOVFMgMAogI2VuZGlmCiAKICNpZm5kZWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5JTkdT
CkBAIC00NTAsMTQgKzQ0NywxMCBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogICAgICwgbV9w
cm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZShmYWxzZSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNl
c3Npb24oc3RkOjptYWtlX3VuaXF1ZTxNZWRpYUVsZW1lbnRTZXNzaW9uPigqdGhpcykpCi0jaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBtX2xvZ2dlcigmZG9jdW1lbnQubG9nZ2VyKCkp
Ci0jZW5kaWYKIHsKICAgICBhbGxNZWRpYUVsZW1lbnRzKCkuYWRkKHRoaXMpOwogCi0gICAgQUxX
QVlTX0xPRyhUSElTKTsKLQorICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxN
ZWRpYUVsZW1lbnQoJXApIiwgdGhpcyk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2Fs
bGJhY2tzKCk7CiAKICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuKTsKQEAg
LTUzMyw3ICs1MjYsNyBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bQogCiBIVE1MTWVkaWFFbGVt
ZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiB7Ci0gICAgQUxXQVlTX0xPRyhUSElTKTsKKyAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCglcCkiLCB0aGlz
KTsKIAogICAgIGJlZ2luSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpOwogICAg
IGFsbE1lZGlhRWxlbWVudHMoKS5yZW1vdmUodGhpcyk7CkBAIC04NjUsNyArODU4LDcgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUm
IGNoaWxkKSBjb25zdAogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxN
ZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkK
IHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6Omluc2VydGVkSW50byglcCkiLCB0aGlzKTsKIAogICAgIEhUTUxFbGVtZW50OjppbnNlcnRl
ZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC5pc0Nvbm5lY3Rl
ZCgpKSB7CkBAIC05MjQsNyArOTE3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUFm
dGVyRGV0YWNoZWRUYXNrKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbShD
b250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOwor
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tKCVwKSIsIHRoaXMp
OwogCiAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gZmFsc2U7CiAgICAgaWYgKGluc2VydGlvblBv
aW50LmlzQ29ubmVjdGVkKCkpIHsKQEAgLTk3NCw4ICs5NjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpCiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2NoZWR1bGVEZWxheWVkQWN0aW9uKERlbGF5ZWRBY3Rpb25UeXBlIGFjdGlvblR5cGUp
CiB7Ci0gICAgaWYgKGFjdGlvblR5cGUgXiBtX3BlbmRpbmdBY3Rpb25GbGFncykKLSAgICAgICAg
QUxXQVlTX0xPRyhUSElTLCAic2V0dGluZyAiLCBhY3Rpb25OYW1lKGFjdGlvblR5cGUpLCAiIGZs
YWciKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZURlbGF5ZWRB
Y3Rpb24oJXApIC0gc2V0dGluZyAlcyBmbGFnIiwgdGhpcywgYWN0aW9uTmFtZShhY3Rpb25UeXBl
KS51dGY4KCkuZGF0YSgpKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoYWN0
aW9uVHlwZSAmIENvbmZpZ3VyZVRleHRUcmFja3MpCkBAIC0xMDE1LDYgKzEwMDcsOSBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQo
Y29uc3QgTWVkaWFQbGF5ZXIqKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCiB7CisjaWYgTE9HX01FRElBX0VWRU5U
UworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnQoJXApIC0g
c2NoZWR1bGluZyAnJXMnIiwgdGhpcywgZXZlbnROYW1lLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKKyNlbmRpZgogICAgIFJlZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZSwgZmFsc2UsIHRydWUpOwogCiAgICAgLy8gRG9uJ3Qgc2V0IHRoZSBldmVudCB0YXJnZXQs
IHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5lcmljRXZlbnRRdWV1ZTo6dGltZXJG
aXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCkBAIC0xMDcxLDExICsxMDY2LDYgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpwZW5kaW5nQWN0aW9uVGltZXJGaXJlZCgpCiAgICAgUGVuZGluZ0FjdGlv
bkZsYWdzIHBlbmRpbmdBY3Rpb25zID0gbV9wZW5kaW5nQWN0aW9uRmxhZ3M7CiAgICAgbV9wZW5k
aW5nQWN0aW9uRmxhZ3MgPSAwOwogCi0gICAgaWYgKCFwZW5kaW5nQWN0aW9ucykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQUxXQVlTX0xPRyhUSElTLCAic2V0dGluZyAiLCBhY3Rpb25OYW1lKHN0
YXRpY19jYXN0PERlbGF5ZWRBY3Rpb25UeXBlPihwZW5kaW5nQWN0aW9ucykpLCAiIGZsYWciKTsK
LQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAocGVuZGluZ0FjdGlvbnMgJiBDb25m
aWd1cmVUZXh0VHJhY2tzKQogICAgICAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7CkBAIC0xMDgz
LDcgKzEwNzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBlbmRpbmdBY3Rpb25UaW1lckZp
cmVkKCkKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgaWYgKHBl
bmRpbmdBY3Rpb25zICYgQ2hlY2tQbGF5YmFja1RhcmdldENvbXBhdGFibGl0eSAmJiBtX2lzUGxh
eWluZ1RvV2lyZWxlc3NUYXJnZXQgJiYgIW1fcGxheWVyLT5jYW5QbGF5VG9XaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KCkpIHsKLSAgICAgICAgTk9USUNFX0xPRyhUSElTLCAiY2FsbGluZyBzZXRTaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6cGVuZGluZ0FjdGlvblRpbWVyRmlyZWQoJXApIC0gY2FsbGluZyBzZXRT
aG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChmYWxzZSkiLCB0aGlzKTsKICAgICAgICAgbV9mYWls
ZWRUb1BsYXlUb1dpcmVsZXNzVGFyZ2V0ID0gdHJ1ZTsKICAgICAgICAgbV9wbGF5ZXItPnNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGZhbHNlKTsKICAgICB9CkBAIC0xMTYwLDcgKzExNTAs
NyBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkgY29uc3QKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIERFQlVHX0xP
RyhUSElTLCAiWyIsIG1pbWVUeXBlLCAiXSAtPiAiLCBjYW5QbGF5KTsKKyAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZSglcCkgLSBbJXNdIC0+ICVzIiwgdGhpcywg
bWltZVR5cGUudXRmOCgpLmRhdGEoKSwgY2FuUGxheS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJl
dHVybiBjYW5QbGF5OwogfQpAQCAtMTE3Niw3ICsxMTY2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojpsb2FkKCkKIHsKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7IC8vIHByZXBhcmVGb3JMb2FkIG1heSByZXN1bHQgaW4gYSAnYmVmb3JlbG9hZCcgZXZl
bnQsIHdoaWNoIGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogCi0gICAgTk9USUNF
X0xPRyhUSElTKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKCVwKSIs
IHRoaXMpOwogCiAgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+ZGF0YUxvYWRpbmdQZXJtaXR0ZWQo
KnRoaXMpKQogICAgICAgICByZXR1cm47CkBAIC0xMTk1LDcgKzExODUsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKCkKICAgICAvLyBUaGUgTWVkaWEgRWxlbWVudCBM
b2FkIEFsZ29yaXRobQogICAgIC8vIDEyIEZlYnJ1YXJ5IDIwMTcKIAotICAgIE5PVElDRV9MT0co
VEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQo
JXApIiwgdGhpcyk7CiAKICAgICAvLyAxIC0gQWJvcnQgYW55IGFscmVhZHktcnVubmluZyBpbnN0
YW5jZSBvZiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBmb3IgdGhpcyBlbGVtZW50
LgogICAgIC8vIFBlcmZvcm0gdGhlIGNsZWFudXAgcmVxdWlyZWQgZm9yIHRoZSByZXNvdXJjZSBs
b2FkIGFsZ29yaXRobSB0byBydW4uCkBAIC0xMzE0LDcgKzEzMDQsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoIW1fbWVkaWFTZXNzaW9uLT5wYWdlQWxsb3dzRGF0YUxvYWRpbmcoKnRoaXMpKSB7Ci0gICAg
ICAgIEFMV0FZU19MT0coVEhJUywgIm5vdCBhbGxvd2VkIHRvIGxvYWQgaW4gYmFja2dyb3VuZCwg
d2FpdGluZyIpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RN
ZWRpYVJlc291cmNlKCVwKSAtIG5vdCBhbGxvd2VkIHRvIGxvYWQgaW4gYmFja2dyb3VuZCwgd2Fp
dGluZyIsIHRoaXMpOwogICAgICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAg
ICAgICAgIGlmIChtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEzNTksNyArMTM0OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0
TWVkaWFSZXNvdXJjZSgpCiAgICAgICAgICAgICBtb2RlID0gQXR0cmlidXRlOwogICAgICAgICAg
ICAgQVNTRVJUKG1fcGxheWVyKTsKICAgICAgICAgICAgIGlmICghbV9wbGF5ZXIpIHsKLSAgICAg
ICAgICAgICAgICBFUlJPUl9MT0coVEhJUywgIiAtIGhhcyBzcmNBdHRyIGJ1dCBtX3BsYXllciBp
cyBub3QgY3JlYXRlZCIpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSglcCkgLSBoYXMgc3JjQXR0
ciBidXQgbV9wbGF5ZXIgaXMgbm90IGNyZWF0ZWQiLCB0aGlzKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoYXV0byBmaXJzdFNvdXJj
ZSA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxTb3VyY2VFbGVtZW50PigqdGhpcykuZmlyc3QoKSkgewpA
QCAtMTM3Niw3ICsxMzY2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJl
c291cmNlKCkKICAgICAgICAgICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGZhbHNlKTsKICAg
ICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTkVUV09SS19FTVBUWTsKIAotICAgICAgICAgICAg
QUxXQVlTX0xPRyhUSElTLCAibm90aGluZyB0byBsb2FkIik7CisgICAgICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCVwKSAtIG5vdGhpbmcg
dG8gbG9hZCIsIHRoaXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0
MDYsNyArMTM5Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJj
ZSgpCiAKICAgICAgICAgICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlOwogICAgICAgICAgICAg
bG9hZFJlc291cmNlKFVSTCgpLCBjb250ZW50VHlwZSwgU3RyaW5nKCkpOwotICAgICAgICAgICAg
QUxXQVlTX0xPRyhUSElTLCAidXNpbmcgJ3NyY09iamVjdCcgcHJvcGVydHkiKTsKKyAgICAgICAg
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoJXAp
IC0gdXNpbmcgJ3NyY09iamVjdCcgcHJvcGVydHkiLCB0aGlzKTsKIAogICAgICAgICAgICAgLy8g
ICAgSWYgdGhhdCBhbGdvcml0aG0gcmV0dXJucyB3aXRob3V0IGFib3J0aW5nIHRoaXMgb25lLCB0
aGVuIHRoZSBsb2FkIGZhaWxlZC4KICAgICAgICAgICAgIC8vIDQuIEZhaWxlZCB3aXRoIG1lZGlh
IHByb3ZpZGVyOiBSZWFjaGluZyB0aGlzIHN0ZXAgaW5kaWNhdGVzIHRoYXQgdGhlIG1lZGlhIHJl
c291cmNlCkBAIC0xNDI5LDcgKzE0MTksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE1lZGlhUmVzb3VyY2UoKQogICAgICAgICAgICAgVVJMIGFic29sdXRlVVJMID0gZ2V0Tm9uRW1w
dHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgICAgICBpZiAoYWJzb2x1dGVVUkwuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVy
OjpGb3JtYXRFcnJvcik7Ci0gICAgICAgICAgICAgICAgQUxXQVlTX0xPRyhUSElTLCAiZW1wdHkg
J3NyYyciKTsKKyAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpz
ZWxlY3RNZWRpYVJlc291cmNlKCVwKSAtICBlbXB0eSAnc3JjJyIsIHRoaXMpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMTQ1MCw3ICsxNDQwLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCkKICAgICAgICAgICAgIC8v
IHdpbGwgaGF2ZSB0byBwaWNrIGEgbWVkaWEgZW5naW5lIGJhc2VkIG9uIHRoZSBmaWxlIGV4dGVu
c2lvbi4KICAgICAgICAgICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlOwogICAgICAgICAgICAg
bG9hZFJlc291cmNlKGFic29sdXRlVVJMLCBjb250ZW50VHlwZSwgU3RyaW5nKCkpOwotICAgICAg
ICAgICAgQUxXQVlTX0xPRyhUSElTLCAidXNpbmcgJ3NyYycgYXR0cmlidXRlIHVybCIpOworICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJj
ZSglcCkgLSB1c2luZyAnc3JjJyBhdHRyaWJ1dGUgdXJsIiwgdGhpcyk7CiAKICAgICAgICAgICAg
IC8vIDYuIEZhaWxlZCB3aXRoIGF0dHJpYnV0ZTogUmVhY2hpbmcgdGhpcyBzdGVwIGluZGljYXRl
cyB0aGF0IHRoZSBtZWRpYSByZXNvdXJjZSBmYWlsZWQgdG8gbG9hZAogICAgICAgICAgICAgLy8g
ICAgb3IgdGhhdCB0aGUgZ2l2ZW4gVVJMIGNvdWxkIG5vdCBiZSByZXNvbHZlZC4gUXVldWUgYSB0
YXNrIHRvIHJ1biB0aGUgZGVkaWNhdGVkIG1lZGlhIHNvdXJjZSBmYWlsdXJlIHN0ZXBzLgpAQCAt
MTQ4Niw3ICsxNDc2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29u
c3QgVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudFQKIHsKICAgICBBU1NFUlQo
aW5pdGlhbFVSTC5pc0VtcHR5KCkgfHwgaXNTYWZlVG9Mb2FkVVJMKGluaXRpYWxVUkwsIENvbXBs
YWluKSk7CiAKLSAgICBOT1RJQ0VfTE9HKFRISVMsIGluaXRpYWxVUkwsIGNvbnRlbnRUeXBlLnJh
dygpLCBrZXlTeXN0ZW0pOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRS
ZXNvdXJjZSglcCkgLSAlcywgJXMsICVzIiwgdGhpcywgdXJsRm9yTG9nZ2luZ01lZGlhKGluaXRp
YWxVUkwpLnV0ZjgoKS5kYXRhKCksIGNvbnRlbnRUeXBlLnJhdygpLnV0ZjgoKS5kYXRhKCksIGtl
eVN5c3RlbS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCku
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7CkBAIC0xNTQwLDEwICsxNTMwLDEwIEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29u
dGVudFR5cGUmIGNvbnRlbnRUCiAKICAgICBpZiAocmVzb3VyY2UpIHsKICAgICAgICAgdXJsID0g
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwocmVzb3VyY2UtPnBhdGgoKSk7Ci0g
ICAgICAgIE5PVElDRV9MT0coVEhJUywgIndpbGwgbG9hZCAiLCB1cmwsICIgZnJvbSBhcHAgY2Fj
aGUiKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNl
KCVwKSAtIHdpbGwgbG9hZCBmcm9tIGFwcCBjYWNoZSAtPiAlcyIsIHRoaXMsIHVybEZvckxvZ2dp
bmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAotICAgIE5PVElDRV9MT0coVEhJ
UywgIm1fY3VycmVudFNyYyBpcyAiLCBtX2N1cnJlbnRTcmMpOworICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSglcCkgLSBtX2N1cnJlbnRTcmMgLT4gJXMiLCB0
aGlzLCB1cmxGb3JMb2dnaW5nTWVkaWEobV9jdXJyZW50U3JjKS51dGY4KCkuZGF0YSgpKTsKIAog
ICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CiAKQEAgLTE2NTEsNyArMTY0MSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRp
YVRpbWUmIG1vdmllVGltZSkKICAgICBpZiAoaWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVz
dHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgREVCVUdfTE9HKFRISVMpOworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoJXApIiwg
dGhpcyk7CiAKICAgICAvLyAxIC0gTGV0IGN1cnJlbnQgY3VlcyBiZSBhIGxpc3Qgb2YgY3Vlcywg
aW5pdGlhbGl6ZWQgdG8gY29udGFpbiBhbGwgdGhlCiAgICAgLy8gY3VlcyBvZiBhbGwgdGhlIGhp
ZGRlbiwgc2hvd2luZywgb3Igc2hvd2luZyBieSBkZWZhdWx0IHRleHQgdHJhY2tzIG9mIHRoZQpA
QCAtMjA1MSw3ICsyMDQxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQWxsb3dlZFRvTG9hZE1l
ZGlhVVJMKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYKIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKGNvbnN0IFVSTCYgdXJsLCBJbnZhbGlkVVJMQWN0
aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgRVJST1JfTE9HKFRISVMsIHVybCwgIiBpcyBpbnZhbGlkIik7CisgICAgICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcCkgLSAlcyAtPiBGQUxTRSBi
ZWNhdXNlIHVybCBpcyBpbnZhbGlkIiwgdGhpcywgdXJsRm9yTG9nZ2luZ01lZGlhKHVybCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIwNTksMTIg
KzIwNDksMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoY29uc3Qg
VVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0aW9uSWYKICAgICBpZiAoIWZyYW1lIHx8ICFk
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1cmwpKSB7CiAgICAgICAgIGlm
IChhY3Rpb25JZkludmFsaWQgPT0gQ29tcGxhaW4pCiAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6
cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCkpOwotICAgICAgICAgICAgRVJST1JfTE9HKFRISVMsIHVybCAsICIgd2FzIHJlamVj
dGVkIGJ5IFNlY3VyaXR5T3JpZ2luIik7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcCkgLSAlcyAtPiBGQUxTRSByZWplY3RlZCBieSBTZWN1
cml0eU9yaWdpbiIsIHRoaXMsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFpc0FsbG93ZWRUb0xv
YWRNZWRpYVVSTCgqdGhpcywgdXJsLCBpc0luVXNlckFnZW50U2hhZG93VHJlZSgpKSkgewotICAg
ICAgICBFUlJPUl9MT0coVEhJUywgdXJsLCAiIHdhcyByZWplY3RlZCBieSBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSIpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1Nh
ZmVUb0xvYWRVUkwoJXApIC0gJXMgLT4gcmVqZWN0ZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kiLCB0aGlzLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjA4Myw3ICsyMDczLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzdGFydFByb2dyZXNzRXZlbnRUaW1lcigpCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6d2FpdEZvclNvdXJjZUNoYW5nZSgpCiB7Ci0gICAgTk9USUNFX0xPRyhUSElTKTsK
KyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yU291cmNlQ2hhbmdlKCVw
KSIsIHRoaXMpOwogCiAgICAgc3RvcFBlcmlvZGljVGltZXJzKCk7CiAgICAgbV9sb2FkU3RhdGUg
PSBXYWl0aW5nRm9yU291cmNlOwpAQCAtMjEwMCw3ICsyMDkwLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp3YWl0Rm9yU291cmNlQ2hhbmdlKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpu
b25lU3VwcG9ydGVkKCkKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVTdXBwb3J0ZWQoJXApIiwgdGhpcyk7CiAKICAgICBzdG9w
UGVyaW9kaWNUaW1lcnMoKTsKICAgICBtX2xvYWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CkBA
IC0yMTQxLDYgKzIxMzEsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVTdXBwb3J0ZWQo
KQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVk
aWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcikKIHsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KCVwKSAtIGVycm9yID0gJWQiLCB0
aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yKSk7CisKICAgICAvLyAxIC0gVGhlIHVzZXIgYWdl
bnQgc2hvdWxkIGNhbmNlbCB0aGUgZmV0Y2hpbmcgcHJvY2Vzcy4KICAgICBzdG9wUGVyaW9kaWNU
aW1lcnMoKTsKICAgICBtX2xvYWRTdGF0ZSA9IFdhaXRpbmdGb3JTb3VyY2U7CkBAIC0yMTgwLDcg
KzIxNzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFs
bHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcgogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmNhbmNlbFBlbmRpbmdFdmVudHNBbmRDYWxsYmFja3MoKQogewotICAgIE5PVElDRV9MT0co
VEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ0V2
ZW50c0FuZENhbGxiYWNrcyglcCkiLCB0aGlzKTsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jYW5j
ZWxBbGxFdmVudHMoKTsKIAogICAgIGZvciAoYXV0byYgc291cmNlIDogY2hpbGRyZW5PZlR5cGU8
SFRNTFNvdXJjZUVsZW1lbnQ+KCp0aGlzKSkKQEAgLTIyNDUsNyArMjIzNyw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGUgZXJyb3IpCiAgICAgICAgIGlmIChtX2N1cnJlbnRTb3VyY2VOb2RlKQogICAgICAgICAgICAg
bV9jdXJyZW50U291cmNlTm9kZS0+c2NoZWR1bGVFcnJvckV2ZW50KCk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIE5PVElDRV9MT0coVEhJUywgImVycm9yIGV2ZW50IG5vdCBzZW50LCA8c291
cmNlPiB3YXMgcmVtb3ZlZCIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6c2V0TmV0d29ya1N0YXRlKCVwKSAtIGVycm9yIGV2ZW50IG5vdCBzZW50LCA8c291cmNl
PiB3YXMgcmVtb3ZlZCIsIHRoaXMpOwogCiAgICAgICAgIC8vIDkuT3RoZXJ3aXNlLjEwIC0gQXN5
bmNocm9ub3VzbHkgYXdhaXQgYSBzdGFibGUgc3RhdGUuIFRoZSBzeW5jaHJvbm91cyBzZWN0aW9u
IGNvbnNpc3RzIG9mIGFsbCB0aGUgcmVtYWluaW5nIHN0ZXBzIG9mIHRoaXMgYWxnb3JpdGhtIHVu
dGlsIHRoZSBhbGdvcml0aG0gc2F5cyB0aGUgc3luY2hyb25vdXMgc2VjdGlvbiBoYXMgZW5kZWQu
CiAKQEAgLTIyNTMsMTAgKzIyNDUsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcikKICAgICAgICAgZm9y
Z2V0UmVzb3VyY2VTcGVjaWZpY1RyYWNrcygpOwogCiAgICAgICAgIGlmIChoYXZlUG90ZW50aWFs
U291cmNlQ2hpbGQoKSkgewotICAgICAgICAgICAgTk9USUNFX0xPRyhUSElTLCAic2NoZWR1bGlu
ZyBuZXh0IDxzb3VyY2U+Iik7CisgICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpzZXROZXR3b3JrU3RhdGUoJXApIC0gc2NoZWR1bGluZyBuZXh0IDxzb3VyY2U+IiwgdGhp
cyk7CiAgICAgICAgICAgICBzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgTk9USUNFX0xPRyhUSElTLCAibm8gbW9yZSA8c291cmNlPiBlbGVt
ZW50cywgd2FpdGluZyIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6c2V0TmV0d29ya1N0YXRlKCVwKSAtIG5vIG1vcmUgPHNvdXJjZT4gZWxlbWVudHMsIHdhaXRp
bmciLCB0aGlzKTsKICAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VDaGFuZ2UoKTsKICAgICAgICAg
fQogCkBAIC0yMjc0LDggKzIyNjYsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9h
ZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yKQogICAgICAgICBtZWRp
YUNvbnRyb2xzKCktPnJlcG9ydGVkRXJyb3IoKTsKICAgICB9CiAKLSAgICBFUlJPUl9MT0coVEhJ
UywgImVycm9yID0gIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvcikpOwotCiAgICAgbG9nTWVkaWFM
b2FkUmVxdWVzdChkb2N1bWVudCgpLnBhZ2UoKSwgU3RyaW5nKCksIHN0cmluZ0Zvck5ldHdvcmtT
dGF0ZShlcnJvciksIGZhbHNlKTsKIAogICAgIG1fbWVkaWFTZXNzaW9uLT5jbGllbnRDaGFyYWN0
ZXJpc3RpY3NDaGFuZ2VkKCk7CkBAIC0yMjgzLDggKzIyNzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9y
KQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6
TmV0d29ya1N0YXRlIHN0YXRlKQogewotICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlKSAh
PSBzdGF0aWNfY2FzdDxpbnQ+KG1fbmV0d29ya1N0YXRlKSkKLSAgICAgICAgQUxXQVlTX0xPRyhU
SElTLCAibmV3IHN0YXRlID0gIiwgc3RhdGljX2Nhc3Q8aW50PihzdGF0ZSksICIsIGN1cnJlbnQg
c3RhdGUgPSAiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbmV0d29ya1N0YXRlKSk7CisgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlKCVwKSAtIG5ldyBzdGF0ZSA9
ICVkLCBjdXJyZW50IHN0YXRlID0gJWQiLCB0aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlKSwg
c3RhdGljX2Nhc3Q8aW50PihtX25ldHdvcmtTdGF0ZSkpOwogCiAgICAgaWYgKHN0YXRlID09IE1l
ZGlhUGxheWVyOjpFbXB0eSkgewogICAgICAgICAvLyBKdXN0IHVwZGF0ZSB0aGUgY2FjaGVkIHN0
YXRlIGFuZCBsZWF2ZSwgd2UgY2FuJ3QgZG8gYW55dGhpbmcuCkBAIC0yMzU1LDcgKzIzNDQsNyBA
QCBTdWNjZXNzT3I8TWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbj4gSFRNTE1lZGlhRWxlbWVudDo6
Y2FuVHJhbnNpdGlvbkZyb21BdXRvcGxheQogICAgICAgICAmJiBtX3JlYWR5U3RhdGUgPT0gSEFW
RV9FTk9VR0hfREFUQSkKICAgICAgICAgcmV0dXJuIG1lZGlhU2Vzc2lvbigpLnBsYXliYWNrUGVy
bWl0dGVkKCp0aGlzKTsKIAotICAgIEFMV0FZU19MT0coVEhJUywgInBhZ2UgY29uc2VudCByZXF1
aXJlZCIpOworICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2FuVHJh
bnNpdGlvbkZyb21BdXRvcGxheVRvUGxheSAtIHBhZ2UgY29uc2VudCByZXF1aXJlZCIpOwogICAg
IHJldHVybiBNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uOjpQYWdlQ29uc2VudFJlcXVpcmVkOwog
fQogCkBAIC0yMzcxLDYgKzIzNjAsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNo
UGxheVBhdXNlRXZlbnRzSWZOZWVkc1F1aXJrcygpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKIHsKKyAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKCVwKSAtIG5ldyBzdGF0ZSA9
ICVkLCBjdXJyZW50IHN0YXRlID0gJWQsIiwgdGhpcywgc3RhdGljX2Nhc3Q8aW50PihzdGF0ZSks
IHN0YXRpY19jYXN0PGludD4obV9yZWFkeVN0YXRlKSk7CisKICAgICAvLyBTZXQgIndhc1BvdGVu
dGlhbGx5UGxheWluZyIgQkVGT1JFIHVwZGF0aW5nIG1fcmVhZHlTdGF0ZSwgcG90ZW50aWFsbHlQ
bGF5aW5nKCkgdXNlcyBpdAogICAgIGJvb2wgd2FzUG90ZW50aWFsbHlQbGF5aW5nID0gcG90ZW50
aWFsbHlQbGF5aW5nKCk7CiAKQEAgLTIzOTAsOCArMjM4MSw2IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKICAgICBi
b29sIHRyYWNrc0FyZVJlYWR5ID0gdHJ1ZTsKICNlbmRpZgogCi0gICAgQUxXQVlTX0xPRyhUSElT
LCAibmV3IHN0YXRlID0gIiwgc3RhdGljX2Nhc3Q8aW50PihzdGF0ZSksICIsIGN1cnJlbnQgc3Rh
dGUgPSAiLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVhZHlTdGF0ZSkpOwotCiAgICAgaWYgKHRyYWNr
c0FyZVJlYWR5KQogICAgICAgICBtX3JlYWR5U3RhdGUgPSBuZXdTdGF0ZTsKICAgICBlbHNlIHsK
QEAgLTI3NzEsMTcgKzI3NjAsMTkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcm9ncmVzc0V2
ZW50VGltZXJGaXJlZCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKGRvdWJsZSB0
aW1lRGVsdGEpCiB7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cmV3aW5kKCVw
KSAtICVmIiwgdGhpcywgdGltZURlbHRhKTsKICAgICBzZXRDdXJyZW50VGltZShzdGQ6Om1heChj
dXJyZW50TWVkaWFUaW1lKCkgLSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUodGltZURlbHRh
KSwgbWluVGltZVNlZWthYmxlKCkpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXR1
cm5Ub1JlYWx0aW1lKCkKIHsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpyZXR1
cm5Ub1JlYWx0aW1lKCVwKSIsIHRoaXMpOwogICAgIHNldEN1cnJlbnRUaW1lKG1heFRpbWVTZWVr
YWJsZSgpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRQbGF5ZWRSYW5nZShjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCkKIHsKLSAgICBERUJVR19M
T0coVEhJUywgIlsiLCBzdGFydCwgIiwgIiwgZW5kLCAiXSIpOworICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OmFkZFBsYXllZFJhbmdlKCVwKSAtIFslcywgJXNdIiwgdGhpcywgdG9T
dHJpbmcoc3RhcnQpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKGVuZCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgaWYgKCFtX3BsYXllZFRpbWVSYW5nZXMpCiAgICAgICAgIG1fcGxheWVkVGltZVJhbmdl
cyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIG1fcGxheWVkVGltZVJhbmdlcy0+cmFuZ2Vz
KCkuYWRkKHN0YXJ0LCBlbmQpOwpAQCAtMjc5NCw3ICsyNzg1LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjpzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpwcmVwYXJlVG9QbGF5KCkKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVUb1BsYXkoJXApIiwgdGhpcyk7CiAgICAgaWYg
KG1faGF2ZVByZXBhcmVkVG9QbGF5KQogICAgICAgICByZXR1cm47CiAgICAgbV9oYXZlUHJlcGFy
ZWRUb1BsYXkgPSB0cnVlOwpAQCAtMjgwOSw3ICsyODAwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpmYXN0U2Vlayhkb3VibGUgdGltZSkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmYXN0
U2Vlayhjb25zdCBNZWRpYVRpbWUmIHRpbWUpCiB7Ci0gICAgTk9USUNFX0xPRyhUSElTLCB0aW1l
KTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpmYXN0U2VlayglcCkgLSAlcyIs
IHRoaXMsIHRvU3RyaW5nKHRpbWUpLnV0ZjgoKS5kYXRhKCkpOwogICAgIC8vIDQuNy4xMC45IFNl
ZWtpbmcKICAgICAvLyA5LiBJZiB0aGUgYXBwcm94aW1hdGUtZm9yLXNwZWVkIGZsYWcgaXMgc2V0
LCBhZGp1c3QgdGhlIG5ldyBwbGF5YmFjayBwb3NpdGlvbiB0byBhIHZhbHVlIHRoYXQgd2lsbAog
ICAgIC8vIGFsbG93IGZvciBwbGF5YmFjayB0byByZXN1bWUgcHJvbXB0bHkuIElmIG5ldyBwbGF5
YmFjayBwb3NpdGlvbiBiZWZvcmUgdGhpcyBzdGVwIGlzIGJlZm9yZSBjdXJyZW50CkBAIC0yODI1
LDEzICsyODE2LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmFzdFNlZWsoY29uc3QgTWVk
aWFUaW1lJiB0aW1lKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlZWsoY29uc3QgTWVkaWFU
aW1lJiB0aW1lKQogewotICAgIE5PVElDRV9MT0coVEhJUywgdGltZSk7CisgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c2VlayglcCkgLSAlcyIsIHRoaXMsIHRvU3RyaW5nKHRpbWUp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIHNlZWtXaXRoVG9sZXJhbmNlKHRpbWUsIE1lZGlhVGltZTo6
emVyb1RpbWUoKSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCB0cnVlKTsKIH0KIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZWVrSW50ZXJuYWwoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQogewotICAg
IE5PVElDRV9MT0coVEhJUywgdGltZSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6c2Vla0ludGVybmFsKCVwKSAtICVzIiwgdGhpcywgdG9TdHJpbmcodGltZSkudXRmOCgpLmRh
dGEoKSk7CiAgICAgc2Vla1dpdGhUb2xlcmFuY2UodGltZSwgTWVkaWFUaW1lOjp6ZXJvVGltZSgp
LCBNZWRpYVRpbWU6Onplcm9UaW1lKCksIGZhbHNlKTsKIH0KIApAQCAtMjg1OSw3ICsyODUwLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRp
bWUmIGluVGltZSwgY29uc3QgTWVkaWFUaW0KICAgICAvLyBhbHJlYWR5IHJ1bm5pbmcuIEFib3J0
IHRoYXQgb3RoZXIgaW5zdGFuY2Ugb2YgdGhlIGFsZ29yaXRobSB3aXRob3V0IHdhaXRpbmcgZm9y
IHRoZSBzdGVwIHRoYXQKICAgICAvLyBpdCBpcyBydW5uaW5nIHRvIGNvbXBsZXRlLgogICAgIGlm
IChtX3NlZWtUYXNrUXVldWUuaGFzUGVuZGluZ1Rhc2tzKCkpIHsKLSAgICAgICAgTk9USUNFX0xP
RyhUSElTLCAiY2FuY2VsbGluZyBwZW5kaW5nIHNlZWtzIik7CisgICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtXaXRoVG9sZXJhbmNlKCVwKSAtIGNhbmNlbGxpbmcgcGVu
ZGluZyBzZWVrcyIsIHRoaXMpOwogICAgICAgICBtX3NlZWtUYXNrUXVldWUuY2FuY2VsQWxsVGFz
a3MoKTsKICAgICAgICAgaWYgKG1fcGVuZGluZ1NlZWspIHsKICAgICAgICAgICAgIG5vdyA9IG1f
cGVuZGluZ1NlZWstPm5vdzsKQEAgLTI4ODEsNyArMjg3Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiBpblRpbWUsIGNvbnN0IE1l
ZGlhVGltCiAgICAgLy8gdGhlIHNjcmlwdC4gVGhlIHJlbWFpbmRlciBvZiB0aGVzZSBzdGVwcyBt
dXN0IGJlIHJ1biBhc3luY2hyb25vdXNseS4KICAgICBtX3BlbmRpbmdTZWVrID0gc3RkOjptYWtl
X3VuaXF1ZTxQZW5kaW5nU2Vlaz4obm93LCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5jZSwgcG9zaXRp
dmVUb2xlcmFuY2UpOwogICAgIGlmIChmcm9tRE9NKSB7Ci0gICAgICAgIE5PVElDRV9MT0coVEhJ
UywgImVucXVldWluZyBzZWVrIGZyb20gIiwgbm93LCAiIHRvICIsIHRpbWUpOworICAgICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWVrV2l0aFRvbGVyYW5jZSglcCkgLSBlbnF1
ZXVpbmcgc2VlayBmcm9tICVzIHRvICVzIiwgdGhpcywgdG9TdHJpbmcobm93KS51dGY4KCkuZGF0
YSgpLCB0b1N0cmluZyh0aW1lKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zZWVrVGFza1F1
ZXVlLmVucXVldWVUYXNrKHN0ZDo6YmluZCgmSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2ssIHRo
aXMpKTsKICAgICB9IGVsc2UKICAgICAgICAgc2Vla1Rhc2soKTsKQEAgLTI4OTIsNyArMjg4Myw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFU
aW1lJiBpblRpbWUsIGNvbnN0IE1lZGlhVGltCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vl
a1Rhc2soKQogewotICAgIE5PVElDRV9MT0coVEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6c2Vla1Rhc2soJXApIiwgdGhpcyk7CiAKICAgICBpZiAoIW1fcGxheWVyKSB7
CiAgICAgICAgIGNsZWFyU2Vla2luZygpOwpAQCAtMjkyMSwxMiArMjkxMiwxMSBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWtUYXNrKCkKICAgICAvLyB0aW1lIHNjYWxlLCB3ZSB3aWxsIGFz
ayB0aGUgbWVkaWEgZW5naW5lIHRvICJzZWVrIiB0byB0aGUgY3VycmVudCBtb3ZpZSB0aW1lLCB3
aGljaCBtYXkgYmUgYSBub29wIGFuZAogICAgIC8vIG5vdCBnZW5lcmF0ZSBhIHRpbWVjaGFuZ2Vk
IGNhbGxiYWNrLiBUaGlzIG1lYW5zIG1fc2Vla2luZyB3aWxsIG5ldmVyIGJlIGNsZWFyZWQgYW5k
IHdlIHdpbGwgbmV2ZXIKICAgICAvLyBmaXJlIGEgJ3NlZWtlZCcgZXZlbnQuCi0gICAgaWYgKHdp
bGxMb2coV1RGTG9nTGV2ZWxEZWJ1ZykpIHsKLSAgICAgICAgTWVkaWFUaW1lIG1lZGlhVGltZSA9
IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7Ci0gICAgICAgIGlmICh0aW1l
ICE9IG1lZGlhVGltZSkKLSAgICAgICAgICAgIERFQlVHX0xPRyhUSElTLCB0aW1lLCAiIG1lZGlh
IHRpbWVsaW5lIGVxdWl2YWxlbnQgaXMgIiwgbWVkaWFUaW1lKTsKLSAgICB9Ci0KKyNpZiAhTE9H
X0RJU0FCTEVECisgICAgTWVkaWFUaW1lIG1lZGlhVGltZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVG
b3JUaW1lVmFsdWUodGltZSk7CisgICAgaWYgKHRpbWUgIT0gbWVkaWFUaW1lKQorICAgICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWVrVGFzayglcCkgLSAlcyAtIG1lZGlhIHRp
bWVsaW5lIGVxdWl2YWxlbnQgaXMgJXMiLCB0aGlzLCB0b1N0cmluZyh0aW1lKS51dGY4KCkuZGF0
YSgpLCB0b1N0cmluZyhtZWRpYVRpbWUpLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCiAgICAgdGlt
ZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JUaW1lVmFsdWUodGltZSk7CiAKICAgICAvLyA4IC0g
SWYgdGhlIChwb3NzaWJseSBub3cgY2hhbmdlZCkgbmV3IHBsYXliYWNrIHBvc2l0aW9uIGlzIG5v
dCBpbiBvbmUgb2YgdGhlIHJhbmdlcyBnaXZlbiBpbiB0aGUKQEAgLTI5NTEsNyArMjk0MSw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1Rhc2soKQogI2VuZGlmCiAKICAgICBpZiAobm9T
ZWVrUmVxdWlyZWQpIHsKLSAgICAgICAgTk9USUNFX0xPRyhUSElTLCAic2VlayB0byAiLCB0aW1l
LCAiIGlnbm9yZWQiKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2Vl
a1Rhc2soJXApIC0gc2VlayB0byAlcyBpZ25vcmVkIiwgdGhpcywgdG9TdHJpbmcodGltZSkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIGlmICh0aW1lID09IG5vdykgewogICAgICAgICAgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkuc2Vla2luZ0V2ZW50KTsKICAgICAgICAgICAgIHNjaGVk
dWxlVGltZXVwZGF0ZUV2ZW50KGZhbHNlKTsKQEAgLTI5OTMsNyArMjk4Myw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZmluaXNoU2VlaygpCiAgICAgLy8gMTQgLSBTZXQgdGhlIHNlZWtpbmcg
SURMIGF0dHJpYnV0ZSB0byBmYWxzZS4KICAgICBjbGVhclNlZWtpbmcoKTsKIAotICAgIE5PVElD
RV9MT0coVEhJUywgImN1cnJlbnQgdGltZSA9ICIsIGN1cnJlbnRNZWRpYVRpbWUoKSk7CisgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoU2VlayglcCkgLSBjdXJyZW50IHRp
bWUgPSAlcyIsIHRoaXMsIHRvU3RyaW5nKGN1cnJlbnRNZWRpYVRpbWUoKSkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAvLyAxNSAtIFJ1biB0aGUgdGltZSBtYWNoZXMgb24gc3RlcHMuCiAgICAgLy8g
SGFuZGxlZCBieSBtZWRpYVBsYXllclRpbWVDaGFuZ2VkKCkuCkBAIC0zMDUyLDYgKzMwNDIsMTEg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnZhbGlkYXRlQ2FjaGVkVGltZSgpIGNvbnN0CiAg
ICAgaWYgKCFtX3BsYXllciB8fCAhbV9wbGF5ZXItPm1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRp
YVRpbWUoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgIUxPR19ESVNBQkxFRAorICAgIGlmICht
X2NhY2hlZFRpbWUuaXNWYWxpZCgpKQorICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjppbnZhbGlkYXRlQ2FjaGVkVGltZSglcCkiLCB0aGlzKTsKKyNlbmRpZgorCiAgICAgLy8g
RG9uJ3QgdHJ5IHRvIGNhY2hlIG1vdmllIHRpbWUgd2hlbiBwbGF5YmFjayBmaXJzdCBzdGFydHMg
YXMgdGhlIHRpbWUgcmVwb3J0ZWQgYnkgdGhlIGVuZ2luZQogICAgIC8vIHNvbWV0aW1lcyBmbHVj
dHVhdGVzIGZvciBhIHNob3J0IGFtb3VudCBvZiB0aW1lLCBzbyB0aGUgY2FjaGVkIHRpbWUgd2ls
bCBiZSBvZmYgaWYgd2UgdGFrZSBpdAogICAgIC8vIHRvbyBlYXJseS4KQEAgLTMwNzYsNyArMzA3
MSw3IEBAIE1lZGlhVGltZSBIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50TWVkaWFUaW1lKCkgY29u
c3QKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6emVyb1RpbWUoKTsKIAogICAgIGlmIChtX3Nl
ZWtpbmcpIHsKLSAgICAgICAgTk9USUNFX0xPRyhUSElTLCAic2Vla2luZywgcmV0dXJuaW5nIiwg
bV9sYXN0U2Vla1RpbWUpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpj
dXJyZW50VGltZSglcCkgLSBzZWVraW5nLCByZXR1cm5pbmcgJXMiLCB0aGlzLCB0b1N0cmluZyht
X2xhc3RTZWVrVGltZSkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBtX2xhc3RTZWVr
VGltZTsKICAgICB9CiAKQEAgLTMwODQsNyArMzA3OSw3IEBAIE1lZGlhVGltZSBIVE1MTWVkaWFF
bGVtZW50OjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKICNpZiBMT0dfQ0FDSEVEX1RJTUVfV0FS
TklOR1MKICAgICAgICAgTWVkaWFUaW1lIGRlbHRhID0gbV9jYWNoZWRUaW1lIC0gbV9wbGF5ZXIt
PmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIGlmIChkZWx0YSA+IG1pbkNhY2hlZERlbHRhRm9yV2Fy
bmluZykKLSAgICAgICAgICAgIFdBUk5JTkdfTE9HKFRISVMsICJjYWNoZWQgdGltZSBpcyAiLCBk
ZWx0YSwgIiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4gcGF1c2VkIik7CisgICAgICAg
ICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSglcCkgLSBXQVJO
SU5HLCBjYWNoZWQgdGltZSBpcyAlcyBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4gcGF1
c2VkIiwgdGhpcywgdG9TdHJpbmcoZGVsdGEpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAg
ICAgIHJldHVybiBtX2NhY2hlZFRpbWU7CiAgICAgfQpAQCAtMzEwMyw3ICszMDk4LDcgQEAgTWVk
aWFUaW1lIEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdAogI2lmIExP
R19DQUNIRURfVElNRV9XQVJOSU5HUwogICAgICAgICAgICAgTWVkaWFUaW1lIGRlbHRhID0gYWRq
dXN0ZWRDYWNoZVRpbWUgLSBtX3BsYXllci0+Y3VycmVudFRpbWUoKTsKICAgICAgICAgICAgIGlm
IChkZWx0YSA+IG1pbkNhY2hlZERlbHRhRm9yV2FybmluZykKLSAgICAgICAgICAgICAgICBXQVJO
SU5HX0xPRyhUSElTLCAiY2FjaGVkIHRpbWUgaXMgIiwgZGVsdGEsICIgc2Vjb25kcyBvZmYgb2Yg
bWVkaWEgdGltZSB3aGVuIHBsYXlpbmciKTsKKyAgICAgICAgICAgICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSglcCkgLSBXQVJOSU5HLCBjYWNoZWQgdGltZSBp
cyAlZiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4gcGxheWluZyIsIHRoaXMsIGRlbHRh
KTsKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIGFkanVzdGVkQ2FjaGVUaW1lOwogICAgICAg
ICB9CkBAIC0zMTEzLDcgKzMxMDgsNyBAQCBNZWRpYVRpbWUgSFRNTE1lZGlhRWxlbWVudDo6Y3Vy
cmVudE1lZGlhVGltZSgpIGNvbnN0CiAgICAgaWYgKG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRp
YVRpbWUgJiYgbm93ID4gbV9taW5pbXVtQ2xvY2tUaW1lVG9VcGRhdGVDYWNoZWRUaW1lICYmIG1f
Y2FjaGVkVGltZSAhPSBNZWRpYVBsYXllcjo6aW52YWxpZFRpbWUoKSkgewogICAgICAgICBkb3Vi
bGUgY2xvY2tEZWx0YSA9IG5vdyAtIG1fY2xvY2tUaW1lQXRMYXN0Q2FjaGVkVGltZVVwZGF0ZTsK
ICAgICAgICAgTWVkaWFUaW1lIGRlbHRhID0gbV9jYWNoZWRUaW1lICsgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKGVmZmVjdGl2ZVBsYXliYWNrUmF0ZSgpICogY2xvY2tEZWx0YSkgLSBtX3Bs
YXllci0+Y3VycmVudFRpbWUoKTsKLSAgICAgICAgV0FSTklOR19MT0coVEhJUywgImNhY2hlZCB0
aW1lIHdhcyAiLCBkZWx0YSwgIiBzZWNvbmRzIG9mZiBvZiBtZWRpYSB0aW1lIHdoZW4gaXQgZXhw
aXJlZCIpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGlt
ZSglcCkgLSBjYWNoZWQgdGltZSB3YXMgJXMgc2Vjb25kcyBvZmYgb2YgbWVkaWEgdGltZSB3aGVu
IGl0IGV4cGlyZWQiLCB0aGlzLCB0b1N0cmluZyhkZWx0YSkudXRmOCgpLmRhdGEoKSk7CiAgICAg
fQogI2VuZGlmCiAKQEAgLTMxOTgsMTIgKzMxOTMsMTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZXREZWZhdWx0UGxheWJhY2tSYXRlKGRvdWJsZSByYXRlKQogICAgICAgICByZXR1cm47CiAj
ZW5kaWYKIAotICAgIGlmIChtX2RlZmF1bHRQbGF5YmFja1JhdGUgPT0gcmF0ZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQUxXQVlTX0xPRyhUSElTLCByYXRlKTsKLSAgICBtX2RlZmF1bHRQbGF5
YmFja1JhdGUgPSByYXRlOwotICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnJhdGVjaGFu
Z2VFdmVudCk7CisgICAgaWYgKG1fZGVmYXVsdFBsYXliYWNrUmF0ZSAhPSByYXRlKSB7CisgICAg
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldERlZmF1bHRQbGF5YmFja1JhdGUo
JXApIC0gJWYiLCB0aGlzLCByYXRlKTsKKyAgICAgICAgbV9kZWZhdWx0UGxheWJhY2tSYXRlID0g
cmF0ZTsKKyAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkucmF0ZWNoYW5nZUV2ZW50
KTsKKyAgICB9CiB9CiAKIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjplZmZlY3RpdmVQbGF5YmFj
a1JhdGUoKSBjb25zdApAQCAtMzIzMiw3ICszMjI2LDcgQEAgZG91YmxlIEhUTUxNZWRpYUVsZW1l
bnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxh
eWJhY2tSYXRlKGRvdWJsZSByYXRlKQogewotICAgIEFMV0FZU19MT0coVEhJUywgcmF0ZSk7Cisg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVwKSAtICVm
IiwgdGhpcywgcmF0ZSk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIC8vIGh0dHA6
Ly93M2MuZ2l0aHViLmlvL21lZGlhY2FwdHVyZS1tYWluLyNtZWRpYXN0cmVhbXMtaW4tbWVkaWEt
ZWxlbWVudHMKQEAgLTMyNjcsNyArMzI2MSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6d2Vi
a2l0UHJlc2VydmVzUGl0Y2goKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFdl
YmtpdFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiB7Ci0gICAgTk9USUNFX0xP
RyhUSElTLCBwcmVzZXJ2ZXNQaXRjaCk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6c2V0V2Via2l0UHJlc2VydmVzUGl0Y2goJXApIC0gJXMiLCB0aGlzLCBib29sU3RyaW5nKHBy
ZXNlcnZlc1BpdGNoKSk7CiAKICAgICBtX3dlYmtpdFByZXNlcnZlc1BpdGNoID0gcHJlc2VydmVz
UGl0Y2g7CiAKQEAgLTMzMjIsNyArMzMxNiw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpw
cmVsb2FkKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVsb2FkKGNvbnN0
IFN0cmluZyYgcHJlbG9hZCkKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMsIHByZWxvYWQpOworICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFByZWxvYWQoJXApIC0gJXMiLCB0aGlz
LCBwcmVsb2FkLnV0ZjgoKS5kYXRhKCkpOwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
Ly8gaHR0cDovL3czYy5naXRodWIuaW8vbWVkaWFjYXB0dXJlLW1haW4vI21lZGlhc3RyZWFtcy1p
bi1tZWRpYS1lbGVtZW50cwogICAgIC8vICJwcmVsb2FkIiAtIE9uIGdldHRpbmc6IG5vbmUuIE9u
IHNldHRpbmc6IGlnbm9yZWQuCkBAIC0zMzM1LDcgKzMzMjksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldFByZWxvYWQoY29uc3QgU3RyaW5nJiBwcmVsb2FkKQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnBsYXkoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKLSAg
ICBBTFdBWVNfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXkoJXApIiwgdGhpcyk7CiAKICAgICBhdXRvIHN1Y2Nlc3MgPSBtX21lZGlhU2Vzc2lvbi0+cGxh
eWJhY2tQZXJtaXR0ZWQoKnRoaXMpOwogICAgIGlmICghc3VjY2VzcykgewpAQCAtMzM2Myw3ICsz
MzU3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheSgpCiB7Ci0gICAg
QUxXQVlTX0xPRyhUSElTKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5
KCVwKSIsIHRoaXMpOwogCiAgICAgYXV0byBzdWNjZXNzID0gbV9tZWRpYVNlc3Npb24tPnBsYXli
YWNrUGVybWl0dGVkKCp0aGlzKTsKICAgICBpZiAoIXN1Y2Nlc3MpIHsKQEAgLTMzNzksMTAgKzMz
NzMsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCkKIAogYm9vbCBIVE1MTWVkaWFF
bGVtZW50OjpwbGF5SW50ZXJuYWwoKQogewotICAgIEFMV0FZU19MT0coVEhJUyk7CisgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCVwKSIsIHRoaXMpOwogCiAg
ICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKSkgewotICAg
ICAgICBBTFdBWVNfTE9HKFRISVMsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlv
biIpOworICAgICAgICBMT0coTWVkaWEsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVycnVw
dGlvbiIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gVHJlYXQgYXMgc3VjY2VzcyBiZWNhdXNl
IHdlIHdpbGwgYmVnaW4gcGxheWJhY2sgb24gY2Vzc2F0aW9uIG9mIHRoZSBpbnRlcnJ1cHRpb24u
CiAgICAgfQogCkBAIC0zNDUxLDcgKzM0NDUsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXlJbnRlcm5hbCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGF1c2UoKQogewotICAgIEFM
V0FZU19MT0coVEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGF1c2Uo
JXApIiwgdGhpcyk7CiAKICAgICBtX3RlbXBvcmFyaWx5QWxsb3dpbmdJbmxpbmVQbGF5YmFja0Fm
dGVyRnVsbHNjcmVlbiA9IGZhbHNlOwogCkBAIC0zNDY3LDEwICszNDYxLDEwIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGF1c2UoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50
ZXJuYWwoKQogewotICAgIEFMV0FZU19MT0coVEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6cGF1c2VJbnRlcm5hbCglcCkiLCB0aGlzKTsKIAogICAgIGlmICghbV9tZWRp
YVNlc3Npb24tPmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkpIHsKLSAgICAgICAgQUxXQVlTX0xP
RyhUSElTLCAiICByZXR1cm5pbmcgYmVjYXVzZSBvZiBpbnRlcnJ1cHRpb24iKTsKKyAgICAgICAg
TE9HKE1lZGlhLCAiICByZXR1cm5pbmcgYmVjYXVzZSBvZiBpbnRlcnJ1cHRpb24iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzUyNCw3ICszNTE4LDcgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojpsb29wKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRMb29wKGJv
b2wgYikKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMsIGIpOworICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldExvb3AoJXApIC0gJXMiLCB0aGlzLCBib29sU3RyaW5nKGIpKTsKICAg
ICBzZXRCb29sZWFuQXR0cmlidXRlKGxvb3BBdHRyLCBiKTsKIH0KIApAQCAtMzU0MSw3ICszNTM1
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9scygpIGNvbnN0CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2V0Q29udHJvbHMoYm9vbCBiKQogewotICAgIE5PVElDRV9MT0coVEhJ
UywgYik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0Q29udHJvbHMoJXAp
IC0gJXMiLCB0aGlzLCBib29sU3RyaW5nKGIpKTsKICAgICBzZXRCb29sZWFuQXR0cmlidXRlKGNv
bnRyb2xzQXR0ciwgYik7CiB9CiAKQEAgLTM1NTIsNyArMzU0Niw3IEBAIGRvdWJsZSBIVE1MTWVk
aWFFbGVtZW50Ojp2b2x1bWUoKSBjb25zdAogCiBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MTWVkaWFF
bGVtZW50OjpzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMs
IHZvbHVtZSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0Vm9sdW1lKCVw
KSAtICVmIiwgdGhpcywgdm9sdW1lKTsKIAogICAgIGlmICghKHZvbHVtZSA+PSAwICYmIHZvbHVt
ZSA8PSAxKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CkBA
IC0zNTc2LDcgKzM1NzAsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om11dGVkKCkgY29uc3QK
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRlZChib29sIG11dGVkKQogewotICAgIE5P
VElDRV9MT0coVEhJUywgbXV0ZWQpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OnNldE11dGVkKCVwKSAtICVzIiwgdGhpcywgYm9vbFN0cmluZyhtdXRlZCkpOwogCiAgICAgYm9v
bCBtdXRlZFN0YXRlQ2hhbmdlZCA9IG1fbXV0ZWQgIT0gbXV0ZWQ7CiAgICAgaWYgKG11dGVkU3Rh
dGVDaGFuZ2VkIHx8ICFtX2V4cGxpY2l0bHlNdXRlZCkgewpAQCAtMzYzNyw3ICszNjMxLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpoYXJkd2FyZU11dGVkU3RhdGVEaWRDaGFuZ2UoQXVkaW9T
ZXNzaW9uKiBzZXNzaW9uKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0
ZSgpCiB7Ci0gICAgTk9USUNFX0xPRyhUSElTLCAiY2FuUGxheSgpIGlzICIsIGNhblBsYXkoKSk7
CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKCVwKSAt
IGNhblBsYXkoKSBpcyAlcyIsIHRoaXMsIGJvb2xTdHJpbmcoY2FuUGxheSgpKSk7CiAKICAgICAv
LyBXZSBjYW4gc2FmZWx5IGNhbGwgdGhlIGludGVybmFsIHBsYXkvcGF1c2UgbWV0aG9kcywgd2hp
Y2ggZG9uJ3QgY2hlY2sgcmVzdHJpY3Rpb25zLCBiZWNhdXNlCiAgICAgLy8gdGhpcyBtZXRob2Qg
aXMgb25seSBjYWxsZWQgZnJvbSB0aGUgYnVpbHQtaW4gbWVkaWEgY29udHJvbGxlcgpAQCAtMzY1
MCw3ICszNjQ0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUoKQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nKCkKIHsKLSAgICBOT1RJQ0Vf
TE9HKFRISVMsICJwYXVzZWQoKSBpcyAiLCBwYXVzZWQoKSk7CisgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1YmJpbmcoJXApIC0gcGF1c2VkKCkgaXMgJXMiLCB0aGlz
LCBib29sU3RyaW5nKHBhdXNlZCgpKSk7CiAKICAgICBpZiAoIXBhdXNlZCgpKSB7CiAgICAgICAg
IGlmIChlbmRlZCgpKSB7CkBAIC0zNjcxLDcgKzM2NjUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmJlZ2luU2NydWJiaW5nKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbmRTY3J1YmJp
bmcoKQogewotICAgIE5PVElDRV9MT0coVEhJUywgIm1fcGF1c2VkSW50ZXJuYWwgaXMiLCBtX3Bh
dXNlZEludGVybmFsKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjplbmRTY3J1
YmJpbmcoJXApIC0gbV9wYXVzZWRJbnRlcm5hbCBpcyAlcyIsIHRoaXMsIGJvb2xTdHJpbmcobV9w
YXVzZWRJbnRlcm5hbCkpOwogCiAgICAgaWYgKG1fcGF1c2VkSW50ZXJuYWwpCiAgICAgICAgIHNl
dFBhdXNlZEludGVybmFsKGZhbHNlKTsKQEAgLTQwNDAsNiArNDAzNCwxMyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50JiB0cmFja0Vs
ZW1lbnQpCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7
CiAKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKHRyYWNrRWxlbWVudC5oYXNUYWdOYW1lKHRy
YWNrVGFnKSkgeworICAgICAgICBVUkwgdXJsID0gdHJhY2tFbGVtZW50LmdldE5vbkVtcHR5VVJM
QXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpkaWRSZW1vdmVUcmFjayglcCkgLSAnc3JjJyBpcyAlcyIsIHRoaXMsIHVybEZvckxvZ2dpbmdN
ZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKyNlbmRpZgorCiAgICAgYXV0byYgdGV4
dFRyYWNrID0gdHJhY2tFbGVtZW50LnRyYWNrKCk7CiAKICAgICB0ZXh0VHJhY2suc2V0SGFzQmVl
bkNvbmZpZ3VyZWQoZmFsc2UpOwpAQCAtNDA2MCw2ICs0MDYxLDggQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBUcmFja0dyb3VwJiBncm91cCkK
IHsKICAgICBBU1NFUlQoZ3JvdXAudHJhY2tzLnNpemUoKSk7CiAKKyAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cCglcCkiLCB0aGlzKTsKKwog
ICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKICAgICBDYXB0aW9uVXNlclByZWZl
cmVuY2VzKiBjYXB0aW9uUHJlZmVyZW5jZXMgPSBwYWdlID8gJnBhZ2UtPmdyb3VwKCkuY2FwdGlv
blByZWZlcmVuY2VzKCkgOiAwOwogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25E
aXNwbGF5TW9kZSBkaXNwbGF5TW9kZSA9IGNhcHRpb25QcmVmZXJlbmNlcyA/IGNhcHRpb25QcmVm
ZXJlbmNlcy0+Y2FwdGlvbkRpc3BsYXlNb2RlKCkgOiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpB
dXRvbWF0aWM7CkBAIC00MDg4LDcgKzQwOTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNv
bmZpZ3VyZVRleHRUcmFja0dyb3VwKGNvbnN0IFRyYWNrR3JvdXAmIGdyb3VwKQogICAgICAgICAg
ICAgY3VycmVudGx5RW5hYmxlZFRyYWNrcy5hcHBlbmQodGV4dFRyYWNrKTsKIAogICAgICAgICBp
bnQgdHJhY2tTY29yZSA9IGNhcHRpb25QcmVmZXJlbmNlcyA/IGNhcHRpb25QcmVmZXJlbmNlcy0+
dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUodGV4dFRyYWNrLmdldCgpLCB0aGlzKSA6IDA7Ci0gICAg
ICAgIE5PVElDRV9MT0coVEhJUywgIiciLCB0ZXh0VHJhY2stPmtpbmRLZXl3b3JkKCksICInIHRy
YWNrIHdpdGggbGFuZ3VhZ2UgJyIsIHRleHRUcmFjay0+bGFuZ3VhZ2UoKSwgIicgYW5kIEJDUCA0
NyBsYW5ndWFnZSAnIiwgdGV4dFRyYWNrLT52YWxpZEJDUDQ3TGFuZ3VhZ2UoKSwgIicgaGFzIHNj
b3JlICIsIHRyYWNrU2NvcmUpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cCglcCkgLSAgJyVzJyB0cmFjayB3aXRoIGxhbmd1YWdl
ICclcycgYW5kIEJDUCA0NyBsYW5ndWFnZSAnJXMnIGhhcyBzY29yZSAlZCIsIHRoaXMsIHRleHRU
cmFjay0+a2luZEtleXdvcmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0ZXh0VHJhY2stPmxh
bmd1YWdlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGV4dFRyYWNrLT52YWxpZEJDUDQ3TGFu
Z3VhZ2UoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0cmFja1Njb3JlKTsKIAogICAgICAgICBp
ZiAodHJhY2tTY29yZSkgewogCkBAIC00MjA1LDYgKzQyMDgsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNTaGFkb3dSb290KCkKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCkKIHsKKyAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50Ojp1cGRhdGVDYXB0aW9uQ29udGFpbmVyKCVwKSIsIHRoaXMpOwogI2lmIEVO
QUJMRShNRURJQV9DT05UUk9MU19TQ1JJUFQpCiAgICAgaWYgKG1faGF2ZVNldFVwQ2FwdGlvbkNv
bnRhaW5lcikKICAgICAgICAgcmV0dXJuOwpAQCAtNDQxNywxNSArNDQyMSwxOCBAQCBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OmhhdmVQb3RlbnRpYWxTb3VyY2VDaGlsZCgpCiBVUkwgSFRNTE1lZGlh
RWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwg
U3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQogewog
ICAgIFVOVVNFRF9QQVJBTShrZXlTeXN0ZW0pOwotCisjaWYgIUxPR19ESVNBQkxFRAogICAgIC8v
IERvbid0IGxvZyBpZiB0aGlzIHdhcyBqdXN0IGNhbGxlZCB0byBmaW5kIG91dCBpZiB0aGVyZSBh
cmUgYW55IHZhbGlkIDxzb3VyY2U+IGVsZW1lbnRzLgotICAgIGJvb2wgc2hvdWxkTG9nID0gd2ls
bExvZyhXVEZMb2dMZXZlbERlYnVnKSAmJiBhY3Rpb25JZkludmFsaWQgIT0gRG9Ob3RoaW5nOwor
ICAgIGJvb2wgc2hvdWxkTG9nID0gYWN0aW9uSWZJbnZhbGlkICE9IERvTm90aGluZzsKICAgICBp
ZiAoc2hvdWxkTG9nKQotICAgICAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoJXApIiwgdGhpcyk7
CisjZW5kaWYKIAogICAgIGlmICghbV9uZXh0Q2hpbGROb2RlVG9Db25zaWRlcikgeworI2lmICFM
T0dfRElTQUJMRUQKICAgICAgICAgaWYgKHNob3VsZExvZykKLSAgICAgICAgICAgIE5PVElDRV9M
T0coVEhJUywgImVuZCBvZiBsaXN0LCBzdG9wcGluZyIpOworICAgICAgICAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKCVwKSAtIGVuZCBvZiBs
aXN0LCBzdG9wcGluZyIsIHRoaXMpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBVUkwoKTsKICAg
ICB9CiAKQEAgLTQ0NDQsMTQgKzQ0NTEsMTggQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2UKICAg
ICAgICAgLy8gSWYgY2FuZGlkYXRlIGRvZXMgbm90IGhhdmUgYSBzcmMgYXR0cmlidXRlLCBvciBp
ZiBpdHMgc3JjIGF0dHJpYnV0ZSdzIHZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcgLi4uIGp1bXAg
ZG93biB0byB0aGUgZmFpbGVkIHN0ZXAgYmVsb3cKICAgICAgICAgYXV0byBtZWRpYVVSTCA9IHNv
dXJjZS0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIFN0cmluZyB0
eXBlOworI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgaWYgKHNob3VsZExvZykKLSAgICAgICAg
ICAgIE5PVElDRV9MT0coVEhJUywgIidzcmMnIGlzICIsIG1lZGlhVVJMKTsKKyAgICAgICAgICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCglcCkg
LSAnc3JjJyBpcyAlcyIsIHRoaXMsIHVybEZvckxvZ2dpbmdNZWRpYShtZWRpYVVSTCkudXRmOCgp
LmRhdGEoKSk7CisjZW5kaWYKICAgICAgICAgaWYgKG1lZGlhVVJMLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIGdvdG8gQ2hlY2tBZ2FpbjsKIAogICAgICAgICBpZiAoYXV0byogbWVkaWEgPSBzb3Vy
Y2UtPnBhcnNlZE1lZGlhQXR0cmlidXRlKCkpIHsKKyNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAg
ICAgICBpZiAoc2hvdWxkTG9nKQotICAgICAgICAgICAgICAgIE5PVElDRV9MT0coVEhJUywgIidt
ZWRpYScgaXMgIiwgc291cmNlLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1lZGlh
QXR0cikpOworICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNl
bGVjdE5leHRTb3VyY2VDaGlsZCglcCkgLSAnbWVkaWEnIGlzICVzIiwgdGhpcywgc291cmNlLT5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG1lZGlhQXR0cikuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisjZW5kaWYKICAgICAgICAgICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKTsKICAgICAgICAgICAgIExPRyhNZWRpYVF1ZXJpZXMsICJIVE1MTWVkaWFFbGVtZW50
ICVwIHNlbGVjdE5leHRTb3VyY2VDaGlsZCBldmFsdWF0aW5nIG1lZGlhIHF1ZXJpZXMiLCB0aGlz
KTsKICAgICAgICAgICAgIGlmICghTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1
bWVudCgpLCByZW5kZXJlciA/ICZyZW5kZXJlci0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0
ZSgqbWVkaWEpKQpAQCAtNDQ2Miw4ICs0NDczLDEwIEBAIFVSTCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNvbnRlbnRUeXBlLCBTdHJpbmcqIGtl
CiAgICAgICAgIGlmICh0eXBlLmlzRW1wdHkoKSAmJiBtZWRpYVVSTC5wcm90b2NvbElzRGF0YSgp
KQogICAgICAgICAgICAgdHlwZSA9IG1pbWVUeXBlRnJvbURhdGFVUkwobWVkaWFVUkwpOwogICAg
ICAgICBpZiAoIXR5cGUuaXNFbXB0eSgpKSB7CisjaWYgIUxPR19ESVNBQkxFRAogICAgICAgICAg
ICAgaWYgKHNob3VsZExvZykKLSAgICAgICAgICAgICAgICBOT1RJQ0VfTE9HKFRISVMsICIndHlw
ZScgaXMgIiwgdHlwZSk7CisgICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKCVwKSAtICd0eXBlJyBpcyAnJXMnIiwgdGhpcywg
dHlwZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgogICAgICAgICAgICAgTWVkaWFFbmdpbmVTdXBw
b3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgICAgICAgICAgcGFyYW1ldGVycy50eXBlID0g
Q29udGVudFR5cGUodHlwZSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLnVybCA9IG1lZGlhVVJM
OwpAQCAtNDQ4Niw3ICs0NDk5LDcgQEAgVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRT
b3VyY2VDaGlsZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2UKIAogICAgICAg
ICAvLyBBICdiZWZvcmVsb2FkJyBldmVudCBoYW5kbGVyIGNhbiBtdXRhdGUgdGhlIERPTSwgc28g
Y2hlY2sgdG8gc2VlIGlmIHRoZSBzb3VyY2UgZWxlbWVudCBpcyBzdGlsbCBhIGNoaWxkIG5vZGUu
CiAgICAgICAgIGlmIChzb3VyY2UtPnBhcmVudE5vZGUoKSAhPSB0aGlzKSB7Ci0gICAgICAgICAg
ICBOT1RJQ0VfTE9HKFRISVMsICInYmVmb3JlbG9hZCcgcmVtb3ZlZCBjdXJyZW50IGVsZW1lbnQi
KTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRT
b3VyY2VDaGlsZCglcCkgLSAnYmVmb3JlbG9hZCcgcmVtb3ZlZCBjdXJyZW50IGVsZW1lbnQiLCB0
aGlzKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQ0OTYsOCArNDUw
OSwxMCBAQCBVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRl
bnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZQogICAgICAgICBtX25leHRDaGlsZE5vZGVU
b0NvbnNpZGVyID0gVHJhdmVyc2FsPEhUTUxTb3VyY2VFbGVtZW50Pjo6bmV4dFNraXBwaW5nQ2hp
bGRyZW4oc291cmNlKTsKICAgICAgICAgbV9jdXJyZW50U291cmNlTm9kZSA9IFdURk1vdmUoc291
cmNlKTsKIAorI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgaWYgKHNob3VsZExvZykKLSAgICAg
ICAgICAgIE5PVElDRV9MT0coVEhJUywgIiA9ICIsIG1lZGlhVVJMKTsKKyAgICAgICAgICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCglcCkgLT4g
JXAsICVzIiwgdGhpcywgbV9jdXJyZW50U291cmNlTm9kZS5nZXQoKSwgdXJsRm9yTG9nZ2luZ01l
ZGlhKG1lZGlhVVJMKS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgogCiAgICAgICAgIHJldHVybiBt
ZWRpYVVSTDsKIApAQCAtNDUxMSwxNyArNDUyNiwyMSBAQCBDaGVja0FnYWluOgogCiAjaWYgIUxP
R19ESVNBQkxFRAogICAgIGlmIChzaG91bGRMb2cpCi0gICAgICAgIE5PVElDRV9MT0coVEhJUywg
ImZhaWxlZCIpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RO
ZXh0U291cmNlQ2hpbGQoJXApIC0+ICVwLCBmYWlsZWQiLCB0aGlzLCBtX2N1cnJlbnRTb3VyY2VO
b2RlLmdldCgpKTsKICNlbmRpZgogICAgIHJldHVybiBVUkwoKTsKIH0KIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZChIVE1MU291cmNlRWxlbWVudCYgc291cmNlKQogewot
ICAgIGlmICh3aWxsTG9nKFdURkxvZ0xldmVsTm90aWNlKSAmJiBzb3VyY2UuaGFzVGFnTmFtZShz
b3VyY2VUYWcpKSB7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2Fz
QWRkZWQoJXApIC0gJXAiLCB0aGlzLCAmc291cmNlKTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAg
ICBpZiAoc291cmNlLmhhc1RhZ05hbWUoc291cmNlVGFnKSkgewogICAgICAgICBVUkwgdXJsID0g
c291cmNlLmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwotICAgICAgICBOT1RJQ0Vf
TE9HKFRISVMsICInc3JjJyBpcyAiLCB1cmwpOworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZCglcCkgLSAnc3JjJyBpcyAlcyIsIHRoaXMsIHVybEZv
ckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KKyNlbmRpZgogCiAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgY29uc2lkZXIgYSA8c291cmNlPiBlbGVtZW50IHdoZW4gdGhlcmUg
aXMgbm90IHNyYyBhdHRyaWJ1dGUgYXQgYWxsLgogICAgIGlmIChoYXNBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKHNyY0F0dHIpKQpAQCAtNDU0MCw3ICs0NTU5LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZChIVE1MU291cmNlRWxlbWVudCYgc291cmNlKQog
ICAgIH0KIAogICAgIGlmIChtX2N1cnJlbnRTb3VyY2VOb2RlICYmICZzb3VyY2UgPT0gVHJhdmVy
c2FsPEhUTUxTb3VyY2VFbGVtZW50Pjo6bmV4dFNpYmxpbmcoKm1fY3VycmVudFNvdXJjZU5vZGUp
KSB7Ci0gICAgICAgIE5PVElDRV9MT0coVEhJUywgIjxzb3VyY2U+IGluc2VydGVkIGltbWVkaWF0
ZWx5IGFmdGVyIGN1cnJlbnQgc291cmNlIik7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKCVwKSAtIDxzb3VyY2U+IGluc2VydGVkIGltbWVkaWF0
ZWx5IGFmdGVyIGN1cnJlbnQgc291cmNlIiwgdGhpcyk7CiAgICAgICAgIG1fbmV4dENoaWxkTm9k
ZVRvQ29uc2lkZXIgPSAmc291cmNlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDU2NSwy
OSArNDU4NCwzMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUTUxT
b3VyY2VFbGVtZW50JiBzb3VyY2UpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2Fz
UmVtb3ZlZChIVE1MU291cmNlRWxlbWVudCYgc291cmNlKQogewotICAgIGlmICh3aWxsTG9nKFdU
RkxvZ0xldmVsTm90aWNlKSAmJiBzb3VyY2UuaGFzVGFnTmFtZShzb3VyY2VUYWcpKSB7CisgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZCglcCkgLSAlcCIs
IHRoaXMsICZzb3VyY2UpOworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIGlmIChzb3VyY2UuaGFz
VGFnTmFtZShzb3VyY2VUYWcpKSB7CiAgICAgICAgIFVSTCB1cmwgPSBzb3VyY2UuZ2V0Tm9uRW1w
dHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7Ci0gICAgICAgIE5PVElDRV9MT0coVEhJUywgIidzcmMn
IGlzICIsIHVybCk7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJj
ZVdhc1JlbW92ZWQoJXApIC0gJ3NyYycgaXMgJXMiLCB0aGlzLCB1cmxGb3JMb2dnaW5nTWVkaWEo
dXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CisjZW5kaWYKIAogICAgIGlmICgmc291cmNlICE9
IG1fY3VycmVudFNvdXJjZU5vZGUgJiYgJnNvdXJjZSAhPSBtX25leHRDaGlsZE5vZGVUb0NvbnNp
ZGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoJnNvdXJjZSA9PSBtX25leHRDaGlsZE5v
ZGVUb0NvbnNpZGVyKSB7CiAgICAgICAgIG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIgPSBtX2N1
cnJlbnRTb3VyY2VOb2RlID8gVHJhdmVyc2FsPEhUTUxTb3VyY2VFbGVtZW50Pjo6bmV4dFNpYmxp
bmcoKm1fY3VycmVudFNvdXJjZU5vZGUpIDogbnVsbHB0cjsKLSAgICAgICAgTk9USUNFX0xPRyhU
SElTKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c291cmNlUmVtb3Zl
ZCglcCkgLSBtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVyIHNldCB0byAlcCIsIHRoaXMsIG1fbmV4
dENoaWxkTm9kZVRvQ29uc2lkZXIuZ2V0KCkpOwogICAgIH0gZWxzZSBpZiAoJnNvdXJjZSA9PSBt
X2N1cnJlbnRTb3VyY2VOb2RlKSB7CiAgICAgICAgIC8vIENsZWFyIHRoZSBjdXJyZW50IHNvdXJj
ZSBub2RlIHBvaW50ZXIsIGJ1dCBkb24ndCBjaGFuZ2UgdGhlIG1vdmllIGFzIHRoZSBzcGVjIHNh
eXM6CiAgICAgICAgIC8vIDQuOC44IC0gRHluYW1pY2FsbHkgbW9kaWZ5aW5nIGEgc291cmNlIGVs
ZW1lbnQgYW5kIGl0cyBhdHRyaWJ1dGUgd2hlbiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5CiAgICAg
ICAgIC8vIGluc2VydGVkIGluIGEgdmlkZW8gb3IgYXVkaW8gZWxlbWVudCB3aWxsIGhhdmUgbm8g
ZWZmZWN0LgogICAgICAgICBtX2N1cnJlbnRTb3VyY2VOb2RlID0gbnVsbHB0cjsKLSAgICAgICAg
Tk9USUNFX0xPRyhUSElTLCAibV9jdXJyZW50U291cmNlTm9kZSBzZXQgdG8gMCIpOworICAgICAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VSZW1vdmVkKCVwKSAtIG1fY3Vy
cmVudFNvdXJjZU5vZGUgc2V0IHRvIDAiLCB0aGlzKTsKICAgICB9CiB9CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiB7Ci0gICAg
Tk9USUNFX0xPRyhUSElTKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllclRpbWVDaGFuZ2VkKCVwKSIsIHRoaXMpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudE1lZGlhVGltZSgpKTsKQEAg
LTQ3MTUsNyArNDczOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vla1RvUGxheWJhY2tQ
b3NpdGlvbkVuZGVkVGltZXJGaXJlZCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJWb2x1bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMp
OworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1lQ2hh
bmdlZCglcCkiLCB0aGlzKTsKIAogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxheWVyQ2FsbGJh
Y2soKTsKICAgICBpZiAobV9wbGF5ZXIpIHsKQEAgLTQ3MzEsNyArNDc1NCw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck11dGVDaGFuZ2VkKE1lZGlhUGxheWVy
KikKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyTXV0ZUNoYW5nZWQoJXApIiwgdGhpcyk7CiAKICAgICBiZWdpblBy
b2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiAgICAgaWYgKG1fcGxheWVyKQpAQCAtNDc0
MSw3ICs0NzY0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck11dGVDaGFu
Z2VkKE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckR1
cmF0aW9uQ2hhbmdlZChNZWRpYVBsYXllciogcGxheWVyKQogewotICAgIE5PVElDRV9MT0coVEhJ
Uyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlv
bkNoYW5nZWQoJXApIiwgdGhpcyk7CiAKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNh
bGxiYWNrKCk7CiAKQEAgLTQ3NjQsNyArNDc4Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgLy8gdXNpbmcgKGVnLiBp
dCBjYW4ndCBoYW5kbGUgdGhlIHJhdGUgd2Ugc2V0KQogICAgIG1fcmVwb3J0ZWRQbGF5YmFja1Jh
dGUgPSBtX3BsYXllci0+cmF0ZSgpOwogCi0gICAgTk9USUNFX0xPRyhUSElTLCAicmF0ZTogIiwg
bV9yZXBvcnRlZFBsYXliYWNrUmF0ZSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZCglcCkgLSByYXRlOiAlbGYiLCB0aGlzLCBtX3JlcG9y
dGVkUGxheWJhY2tSYXRlKTsKIAogICAgIGlmIChtX3BsYXlpbmcpCiAgICAgICAgIGludmFsaWRh
dGVDYWNoZWRUaW1lKCk7CkBAIC00Nzc2LDcgKzQ3OTksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQog
ewotICAgIE5PVElDRV9MT0coVEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZCglcCkiLCB0aGlzKTsKIAogICAgIGlm
ICghbV9wbGF5ZXIgfHwgbV9wYXVzZWRJbnRlcm5hbCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDc5
MSw3ICs0ODE0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBsYXliYWNr
U3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllclNhd1Vuc3VwcG9ydGVkVHJhY2tzKE1lZGlhUGxheWVyKikKIHsKLSAgICBOT1RJQ0Vf
TE9HKFRISVMpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
U2F3VW5zdXBwb3J0ZWRUcmFja3MoJXApIiwgdGhpcyk7CiAKICAgICAvLyBUaGUgTWVkaWFQbGF5
ZXIgY2FtZSBhY3Jvc3MgY29udGVudCBpdCBjYW5ub3QgY29tcGxldGVseSBoYW5kbGUuCiAgICAg
Ly8gVGhpcyBpcyBub3JtYWxseSBhY2NlcHRhYmxlIGV4Y2VwdCB3aGVuIHdlIGFyZSBpbiBhIHN0
YW5kYWxvbmUKQEAgLTQ4MDIsNyArNDgyNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJTYXdVbnN1cHBvcnRlZFRyYWNrcyhNZWRpYVBsYXllciopCiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZXNvdXJjZU5vdFN1cHBvcnRlZChNZWRpYVBsYXllciop
CiB7Ci0gICAgTk9USUNFX0xPRyhUSElTKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKCVwKSIsIHRoaXMpOwogCiAgICAg
Ly8gVGhlIE1lZGlhUGxheWVyIGNhbWUgYWNyb3NzIGNvbnRlbnQgd2hpY2ggbm8gaW5zdGFsbGVk
IGVuZ2luZSBzdXBwb3J0cy4KICAgICBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6OkZv
cm1hdEVycm9yKTsKQEAgLTQ4MjAsNyArNDg0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJSZXBhaW50KE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllclNpemVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBOT1RJQ0VfTE9H
KFRISVMpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6
ZUNoYW5nZWQoJXApIiwgdGhpcyk7CiAKICAgICBpZiAoaXM8TWVkaWFEb2N1bWVudD4oZG9jdW1l
bnQoKSkgJiYgbV9wbGF5ZXIpCiAgICAgICAgIGRvd25jYXN0PE1lZGlhRG9jdW1lbnQ+KGRvY3Vt
ZW50KCkpLm1lZGlhRWxlbWVudE5hdHVyYWxTaXplQ2hhbmdlZChleHBhbmRlZEludFNpemUobV9w
bGF5ZXItPm5hdHVyYWxTaXplKCkpKTsKQEAgLTQ4NDEsNyArNDg2NCw3IEBAIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKE1lZGlhUGxh
eWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVD
aGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQo
JXApIiwgdGhpcyk7CiAKICAgICAvLyBLaWNrIG9mZiBhIGZha2UgcmVjYWxjU3R5bGUgdGhhdCB3
aWxsIHVwZGF0ZSB0aGUgY29tcG9zaXRpbmcgdHJlZS4KICAgICBpbnZhbGlkYXRlU3R5bGVBbmRM
YXllckNvbXBvc2l0aW9uKCk7CkBAIC00ODY2LDcgKzQ4ODksNyBAQCBHcmFwaGljc0RldmljZUFk
YXB0ZXIqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVy
KGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKCkK
IHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhRW5naW5lV2FzVXBkYXRlZCglcCkiLCB0aGlzKTsKICAgICBiZWdpblByb2Nlc3Np
bmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiAgICAgdXBkYXRlUmVuZGVyZXIoKTsKICAgICBlbmRQ
cm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwpAQCAtNDg5Niw3ICs0OTE5LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRW5naW5lVXBkYXRlZChNZWRpYVBsYXllciopCiB7Ci0g
ICAgTk9USUNFX0xPRyhUSElTKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoJXApIiwgdGhpcyk7CiAKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQogICAgIG1fZHJvcHBlZFZpZGVvRnJhbWVzID0gMDsKQEAgLTQ5MDksNyArNDkzMiw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKE1lZGlh
UGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9G
cmFtZUF2YWlsYWJsZShNZWRpYVBsYXllciopCiB7Ci0gICAgTk9USUNFX0xPRyhUSElTLCAiY3Vy
cmVudCBkaXNwbGF5IG1vZGUgPSAiLCAoaW50KWRpc3BsYXlNb2RlKCkpOworICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxl
KCVwKSAtIGN1cnJlbnQgZGlzcGxheSBtb2RlID0gJWkiLCB0aGlzLCAoaW50KWRpc3BsYXlNb2Rl
KCkpOwogCiAgICAgYmVnaW5Qcm9jZXNzaW5nTWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogICAgIGlm
IChkaXNwbGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JWaWRlbykgewpAQCAtNDkyMSw3ICs0
OTQ0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckZpcnN0VmlkZW9GcmFt
ZUF2YWlsYWJsZShNZWRpYVBsYXllciopCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVkaWFQbGF5ZXIqKQogewotICAgIE5PVElDRV9M
T0coVEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJD
aGFyYWN0ZXJpc3RpY0NoYW5nZWQoJXApIiwgdGhpcyk7CiAKICAgICBiZWdpblByb2Nlc3NpbmdN
ZWRpYVBsYXllckNhbGxiYWNrKCk7CiAKQEAgLTUxNzEsNyArNTE5NCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKFVwZGF0ZVN0YXRlIHVwZGF0ZVN0YXRlKQogICAg
IGJvb2wgc2hvdWxkQmVQbGF5aW5nID0gcG90ZW50aWFsbHlQbGF5aW5nKCk7CiAgICAgYm9vbCBw
bGF5ZXJQYXVzZWQgPSBtX3BsYXllci0+cGF1c2VkKCk7CiAKLSAgICBOT1RJQ0VfTE9HKFRISVMs
ICJzaG91bGRCZVBsYXlpbmcgPSAiLCBzaG91bGRCZVBsYXlpbmcsICIgcGxheWVyUGF1c2VkID0g
IiwgcGxheWVyUGF1c2VkKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVQbGF5U3RhdGUoJXApIC0gc2hvdWxkQmVQbGF5aW5nID0gJXMsIHBsYXllclBhdXNlZCA9ICVz
IiwgdGhpcywgYm9vbFN0cmluZyhzaG91bGRCZVBsYXlpbmcpLCBib29sU3RyaW5nKHBsYXllclBh
dXNlZCkpOwogCiAgICAgaWYgKHNob3VsZEJlUGxheWluZykgewogICAgICAgICBzY2hlZHVsZVVw
ZGF0ZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCk7CkBAIC01MjY3LDcgKzUyOTAsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3BQZXJpb2RpY1RpbWVycygpCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQoKQogewotICAgIE5PVElDRV9MT0coVEhJUyk7Cisg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQoJXApIiwg
dGhpcyk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgdG8gcmVjb25jaWxlIHRoZSBp
T1MgYW5kIG5vbi1pT1MgY29kZSAoYmVsb3cpLgogI2lmIFBMQVRGT1JNKElPUykKQEAgLTUzMjAs
NyArNTM0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQoKQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFQbGF5ZXIoRGVsYXllZEFjdGlvblR5
cGUgZmxhZ3MpCiB7Ci0gICAgTk9USUNFX0xPRyhUSElTLCAiZmxhZ3MgPSAiLCBhY3Rpb25OYW1l
KGZsYWdzKSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYVBs
YXllciglcCkgLSBmbGFncyA9ICVzIiwgdGhpcywgYWN0aW9uTmFtZShmbGFncykudXRmOCgpLmRh
dGEoKSk7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIGlmICghbV9zZXR0aW5nTWVk
aWFTdHJlYW1TcmNPYmplY3QpCkBAIC01Mzk1LDcgKzU0MTgsNyBAQCBjb25zdCBjaGFyKiBIVE1M
TWVkaWFFbGVtZW50OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzdG9wV2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXllcigpCiB7Ci0gICAgTk9U
SUNFX0xPRyhUSElTKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzdG9wV2l0
aG91dERlc3Ryb3lpbmdNZWRpYVBsYXllciglcCkiLCB0aGlzKTsKIAogICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlbk1vZGUgIT0gVmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpCiAgICAgICAgIGV4aXRG
dWxsc2NyZWVuKCk7CkBAIC01NDM5LDcgKzU0NjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNvbnRleHREZXN0cm95ZWQoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3AoKQogewot
ICAgIE5PVElDRV9MT0coVEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
c3RvcCglcCkiLCB0aGlzKTsKIAogICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKICAgICBzdG9wV2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXllcigpOwpAQCAt
NTQ1OSw3ICs1NDgyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wKCkKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQogewotICAg
IE5PVElDRV9MT0coVEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c3Vz
cGVuZCglcCkiLCB0aGlzKTsKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKICAgICBzd2l0Y2ggKHdoeSkKQEAgLTU0ODAsNyArNTUwMyw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogewotICAgIE5PVElDRV9MT0coVEhJUyk7Cisg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKCVwKSIsIHRoaXMpOwogCiAg
ICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gdHJ1ZTsKIApAQCAtNTUxNCwxNCArNTUzNywxNCBAQCBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFWb2x1bWVEaWRDaGFuZ2UoKQogewotICAgIE5PVElDRV9M
T0coVEhJUyk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFWb2x1bWVE
aWRDaGFuZ2UoJXApIiwgdGhpcyk7CiAgICAgdXBkYXRlVm9sdW1lKCk7CiB9CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCiB7CiAgICAgbV9lbGVtZW50
SXNIaWRkZW4gPSBkb2N1bWVudCgpLmhpZGRlbigpICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZSAh
PSBWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZTsKLSAgICBOT1RJQ0VfTE9HKFRI
SVMsICJ2aXNpYmxlID0gIiwgIW1fZWxlbWVudElzSGlkZGVuKTsKKyAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50Ojp2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCVwKSAtIHZpc2libGUgPSAl
cyIsIHRoaXMsIGJvb2xTdHJpbmcoIW1fZWxlbWVudElzSGlkZGVuKSk7CiAgICAgdXBkYXRlU2xl
ZXBEaXNhYmxpbmcoKTsKICAgICBtX21lZGlhU2Vzc2lvbi0+dmlzaWJpbGl0eUNoYW5nZWQoKTsK
ICAgICBpZiAobV9wbGF5ZXIpCkBAIC01NTMwLDEwICs1NTUzLDEwIEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCiAgICAgYm9vbCBpc1BsYXlpbmdBdWRp
byA9IGlzUGxheWluZygpICYmIGhhc0F1ZGlvKCkgJiYgIW11dGVkKCkgJiYgdm9sdW1lKCk7CiAg
ICAgaWYgKCFpc1BsYXlpbmdBdWRpbykgewogICAgICAgICBpZiAobV9lbGVtZW50SXNIaWRkZW4p
IHsKLSAgICAgICAgICAgIEFMV0FZU19MT0coVEhJUywgInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQo
KSBTdXNwZW5kaW5nIHBsYXliYWNrIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5U3RhdGVDaGFuZ2Vk
KCkgU3VzcGVuZGluZyBwbGF5YmFjayBhZnRlciBnb2luZyB0byB0aGUgYmFja2dyb3VuZCIpOwog
ICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgQUxXQVlTX0xPRyhUSElTLCAidmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFJlc3VtaW5n
IHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZvcmVncm91bmQiKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1bWluZyBwbGF5
YmFjayBhZnRlciBlbnRlcmluZyBmb3JlZ3JvdW5kIik7CiAgICAgICAgICAgICBtX21lZGlhU2Vz
c2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5
aW5nKTsKICAgICAgICAgfQogICAgIH0KQEAgLTU1NjEsNyArNTU4NCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c3luY1RleHRUcmFja0JvdW5kcygpCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKCkKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFja1RhcmdldFBpY2tlciglcCkiLCB0
aGlzKTsKICAgICBpZiAocHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkKICAgICAgICAg
cmVtb3ZlQmVoYXZpb3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCk7CiAgICAg
bV9tZWRpYVNlc3Npb24tPnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigqdGhpcyk7CkBAIC01NTgx
LDcgKzU2MDQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3VycmVudFBs
YXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoTWVkaWFQbAogewogICAgIG1faXNQbGF5aW5n
VG9XaXJlbGVzc1RhcmdldCA9IG1fcGxheWVyICYmIG1fcGxheWVyLT5pc0N1cnJlbnRQbGF5YmFj
a1RhcmdldFdpcmVsZXNzKCk7CiAKLSAgICBOT1RJQ0VfTE9HKFRISVMsICJ3ZWJraXRDdXJyZW50
UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzID0gIiwgbV9pc1BsYXlpbmdUb1dpcmVsZXNzVGFyZ2V0
KTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckN1cnJlbnRQ
bGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKCVwKSAtIHdlYmtpdEN1cnJlbnRQbGF5YmFj
a1RhcmdldElzV2lyZWxlc3MgPSAlcyIsIHRoaXMsIGJvb2xTdHJpbmcobV9pc1BsYXlpbmdUb1dp
cmVsZXNzVGFyZ2V0KSk7CiAgICAgQVNTRVJUKG1fcGxheWVyKTsKICAgICBjb25maWd1cmVNZWRp
YUNvbnRyb2xzKCk7CiAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0Y3VycmVu
dHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWRFdmVudCk7CkBAIC01NTk3LDkgKzU2MjAs
NiBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQog
ICAgICAgICBtX2ZhaWxlZFRvUGxheVRvV2lyZWxlc3NUYXJnZXQgPSBmYWxzZTsKICAgICAgICAg
c2NoZWR1bGVEZWxheWVkQWN0aW9uKENoZWNrUGxheWJhY2tUYXJnZXRDb21wYXRhYmxpdHkpOwog
ICAgIH0KLQotICAgIERFQlVHX0xPRyhUSElTLCAiZGlzcGF0Y2hpbmcgJyIsIGV2ZW50LnR5cGUo
KSwgIiciKTsKLQogICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChldmVudCk7
CiB9CiAKQEAgLTU2MTcsNyArNTYzNyw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZl
bnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50CiAgICAg
ICAgIG1fbWVkaWFTZXNzaW9uLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3Rl
bmVycygqdGhpcywgdHJ1ZSk7CiAgICAgfQogCi0gICAgTk9USUNFX0xPRyhUSElTLCAiJ3dlYmtp
dHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZCciKTsKKyAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjphZGRFdmVudExpc3RlbmVyKCVwKSAtICd3ZWJraXRwbGF5YmFja3Rh
cmdldGF2YWlsYWJpbGl0eWNoYW5nZWQnIiwgdGhpcyk7CiAKICAgICBlbnF1ZXVlUGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoKTsgLy8gRW5zdXJlIHRoZSBldmVudCBsaXN0
ZW5lciBnZXRzIGF0IGxlYXN0IG9uZSBldmVudC4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU2MzIs
NyArNTY1Miw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGJvb2wgZGlkUmVtb3ZlTGFzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5lciA9
ICFoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFp
bGFiaWxpdHljaGFuZ2VkRXZlbnQpOwotICAgIE5PVElDRV9MT0coVEhJUywgInJlbW92ZWQgbGFz
dCBsaXN0ZW5lciA9ICIsIGRpZFJlbW92ZUxhc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIp
OworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUV2ZW50TGlzdGVuZXIo
JXApIC0gcmVtb3ZlZCBsYXN0IGxpc3RlbmVyID0gJXMiLCB0aGlzLCBib29sU3RyaW5nKGRpZFJl
bW92ZUxhc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVuZXIpKTsKICAgICBpZiAoZGlkUmVtb3Zl
TGFzdEF2YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5lcikgewogICAgICAgICBtX2hhc1BsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gZmFsc2U7CiAgICAgICAgIG1fbWVkaWFTZXNz
aW9uLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycygqdGhpcywgZmFs
c2UpOwpAQCAtNTY0NSw3ICs1NjY1LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudEwKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdl
ZEV2ZW50KCkKIHsKICAgICBib29sIGhhc1RhcmdldHMgPSBtX21lZGlhU2Vzc2lvbi0+aGFzV2ly
ZWxlc3NQbGF5YmFja1RhcmdldHMoKnRoaXMpOwotICAgIE5PVElDRV9MT0coVEhJUywgImhhc1Rh
cmdldHMgPSAiLCBoYXNUYXJnZXRzKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoJXApIC0gaGFz
VGFyZ2V0cyA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyhoYXNUYXJnZXRzKSk7CiAgICAgYXV0byBl
dmVudCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQsIGhh
c1RhcmdldHMpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAgICAgbV9hc3luY0V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKQEAgLTU2NTQsNyArNTY3NCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
Q2hhbmdlZEV2ZW50KCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIGRldmljZSkKIHsKLSAgICBOT1RJ
Q0VfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFdpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoJXApIiwgdGhpcyk7CiAgICAgaWYgKG1fcGxheWVyKQogICAgICAg
ICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXVEZNb3ZlKGRldmljZSkpOwog
fQpAQCAtNTY2Myw3ICs1NjgzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VG9X
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKIHsKICAgICBib29sIGNhblBsYXkgPSBtX3Bs
YXllciAmJiBtX3BsYXllci0+Y2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpOwogCi0g
ICAgTk9USUNFX0xPRyhUSElTLCAicmV0dXJuaW5nICIsIGNhblBsYXkpOworICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoJXAp
IC0gcmV0dXJuaW5nICVzIiwgdGhpcywgYm9vbFN0cmluZyhjYW5QbGF5KSk7CiAKICAgICByZXR1
cm4gY2FuUGxheTsKIH0KQEAgLTU2NzUsNyArNTY5NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6aXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBs
YXkpCiB7Ci0gICAgTk9USUNFX0xPRyhUSElTLCAic2hvdWxkUGxheSA9ICIsIHNob3VsZFBsYXkp
OworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KCVwKSAtIHNob3VsZFBsYXkgPSAlcyIsIHRoaXMsIGJvb2xTdHJpbmcoc2hvdWxk
UGxheSkpOwogCiAgICAgaWYgKG1fcGxheWVyKQogICAgICAgICBtX3BsYXllci0+c2V0U2hvdWxk
UGxheVRvUGxheWJhY2tUYXJnZXQoc2hvdWxkUGxheSk7CkBAIC01NzI0LDYgKzU3NDQsOCBAQCBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzU3RhbmRhcmRGdWxsc2NyZWVuKCkgY29uc3QKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVTdGFuZGFyZEZ1bGxzY3JlZW5TdGF0ZSgpCiB7Cisg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xlU3RhbmRhcmRGdWxsc2NyZWVu
U3RhdGUoJXApIC0gaXNTdGFuZGFyZEZ1bGxzY3JlZW4oKSBpcyAlcyIsIHRoaXMsIGJvb2xTdHJp
bmcoaXNTdGFuZGFyZEZ1bGxzY3JlZW4oKSkpOworCiAgICAgaWYgKGlzU3RhbmRhcmRGdWxsc2Ny
ZWVuKCkpCiAgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CiAgICAgZWxzZQpAQCAtNTczMiw3ICs1
NzU0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVTdGFuZGFyZEZ1bGxzY3JlZW5T
dGF0ZSgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVs
bHNjcmVlbk1vZGUgbW9kZSkKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKICAgICBB
U1NFUlQobW9kZSAhPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAKICAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5Nb2RlID09IG1vZGUpCkBAIC01Nzc3LDcgKzU3OTksNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZXhpdEZ1bGxzY3JlZW4oKQogewotICAgIE5PVElDRV9MT0coVEhJUyk7CisgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oJXApIiwgdGhpcyk7CiAKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5mdWxs
U2NyZWVuRW5hYmxlZCgpICYmIGRvY3VtZW50KCkud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVt
ZW50KCkgPT0gdGhpcykgewpAQCAtNTk4Myw3ICs2MDA1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCBjbG9zZWRDYXB0aW9uVmlzaWJsZSkKIHsKLSAg
ICBOT1RJQ0VfTE9HKFRISVMsIGNsb3NlZENhcHRpb25WaXNpYmxlKTsKKyAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoJXApIC0gJXMiLCB0
aGlzLCBib29sU3RyaW5nKGNsb3NlZENhcHRpb25WaXNpYmxlKSk7CiAKICAgICBtX2Nsb3NlZENh
cHRpb25zVmlzaWJsZSA9IGZhbHNlOwogCkBAIC02MDM4LDcgKzYwNjAsOCBAQCB1bnNpZ25lZCBI
VE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRWaWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhblN0YXJ0KERvY3VtZW50JiBkb2N1bWVudCkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKGRvY3VtZW50LCAmZG9jdW1lbnQgPT0gJnRoaXMtPmRvY3VtZW50
KCkpOwotICAgIE5PVElDRV9MT0coVEhJUywgIm1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0
ID0gIiwgbV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQsICIsIG1fcGF1c2VkSW50ZXJuYWwg
PSAiLCBtX3BhdXNlZEludGVybmFsKTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjptZWRpYUNhblN0YXJ0KCVwKSAtIG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0ID0gJXMs
IG1fcGF1c2VkSW50ZXJuYWwgPSAlcyIsCisgICAgICAgIHRoaXMsIGJvb2xTdHJpbmcobV9pc1dh
aXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpLCBib29sU3RyaW5nKG1fcGF1c2VkSW50ZXJuYWwpICk7
CiAKICAgICBBU1NFUlQobV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQgfHwgbV9wYXVzZWRJ
bnRlcm5hbCk7CiAgICAgaWYgKG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KSB7CkBAIC02
MDU5LDcgKzYwODIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZERlbGF5TG9h
ZEV2ZW50KGJvb2wgc2hvdWxkRGVsYXkpCiAgICAgaWYgKG1fc2hvdWxkRGVsYXlMb2FkRXZlbnQg
PT0gc2hvdWxkRGVsYXkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5PVElDRV9MT0coVEhJUywg
c2hvdWxkRGVsYXkpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3Vs
ZERlbGF5TG9hZEV2ZW50KCVwKSAtICVzIiwgdGhpcywgYm9vbFN0cmluZyhzaG91bGREZWxheSkp
OwogCiAgICAgbV9zaG91bGREZWxheUxvYWRFdmVudCA9IHNob3VsZERlbGF5OwogICAgIGlmIChz
aG91bGREZWxheSkKQEAgLTYxMTAsNiArNjEzMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBi
b29sIHByaXZhdGVNb2RlID0gZG9jdW1lbnQoKS5wYWdlKCkgJiYgZG9jdW1lbnQoKS5wYWdlKCkt
PnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoJXApIC0gJXMiLCB0aGlzLCBib29sU3Ry
aW5nKHByaXZhdGVNb2RlKSk7CiAgICAgbV9wbGF5ZXItPnNldFByaXZhdGVCcm93c2luZ01vZGUo
cHJpdmF0ZU1vZGUpOwogfQogCkBAIC02MjkxLDcgKzYzMTUsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZChSZWNvbmZp
Z3VyZU1vZAogICAgIGlmICghbV90ZXh0VHJhY2tzKQogICAgICAgICByZXR1cm47CiAKLSAgICBO
T1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtD
YXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZCglcCkiLCB0aGlzKTsKIAogICAg
IC8vIE1hcmsgYWxsIHRyYWNrcyBhcyBub3QgImNvbmZpZ3VyZWQiIHNvIHRoYXQgY29uZmlndXJl
VGV4dFRyYWNrcygpCiAgICAgLy8gd2lsbCByZWNvbnNpZGVyIHdoaWNoIHRyYWNrcyB0byBkaXNw
bGF5IGluIGxpZ2h0IG9mIG5ldyB1c2VyIHByZWZlcmVuY2VzCkBAIC02MzE3LDcgKzYzNDEsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1Vu
Y29uZmlndXJlZChSZWNvbmZpZ3VyZU1vZAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0
ZU1lZGlhUGxheWVyKCkKIHsKLSAgICBOT1RJQ0VfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKCVwKSIsIHRoaXMpOwogCiAjaWYg
RU5BQkxFKFdFQl9BVURJTykKICAgICBpZiAobV9hdWRpb1NvdXJjZU5vZGUpCkBAIC02OTIzLDcg
KzY5NDcsNyBAQCBET01XcmFwcGVyV29ybGQmIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZUlzb2xh
dGVkV29ybGQoKQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJ
bmplY3RlZFNjcmlwdCgpCiB7Ci0gICAgREVCVUdfTE9HKFRISVMpOworICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OmVuc3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCglcCki
LCB0aGlzKTsKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYgKCFw
YWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MDAwLDcgKzcwMjQsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xsZXJKU1Byb3BlcnR5KGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSwgSlNDOjpKUwogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKIHsKLSAgICBERUJVR19MT0coVEhJUyk7Cisg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9v
dCglcCkiLCB0aGlzKTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKICAg
ICBpZiAoIXBhZ2UpCkBAIC03MDgzLDEwICs3MTA3LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KiByb290KQogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbHNEZXBlbmRPblBhZ2VTY2FsZUZhY3Rvcihi
b29sIGRlcGVuZHNPblBhZ2VTY2FsZSkKIHsKLSAgICBERUJVR19MT0coVEhJUywgIk1lZGlhRWxl
bWVudDo6c2V0TWVkaWFDb250cm9sc0RlcGVuZFBhZ2VTY2FsZUZhY3RvciIsIGRlcGVuZHNPblBh
Z2VTY2FsZSk7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNvbnRyb2xz
RGVwZW5kUGFnZVNjYWxlRmFjdG9yKCVwKSA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyhkZXBlbmRz
T25QYWdlU2NhbGUpKTsKIAogICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkubWVkaWFDb250
cm9sc1NjYWxlV2l0aFBhZ2Vab29tKCkpIHsKLSAgICAgICAgREVCVUdfTE9HKFRISVMsICJNZWRp
YUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbHNEZXBlbmRQYWdlU2NhbGVGYWN0b3IiLCAiZm9yY2Vk
IHRvIGZhbHNlIGJ5IFNldHRpbmdzIHZhbHVlIik7CisgICAgICAgIExPRyhNZWRpYSwgIk1lZGlh
RWxlbWVudDo6c2V0TWVkaWFDb250cm9sc0RlcGVuZFBhZ2VTY2FsZUZhY3RvciglcCkgZm9yY2Vk
IHRvIGZhbHNlIGJ5IFNldHRpbmdzIHZhbHVlIiwgdGhpcyk7CiAgICAgICAgIG1fbWVkaWFDb250
cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFjdG9yID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC03MjY3LDE0ICs3MjkxLDE0IEBAIHNpemVfdCBIVE1MTWVkaWFFbGVtZW50OjptYXhp
bXVtU291cmNlQnVmZmVyU2l6ZShjb25zdCBTb3VyY2VCdWZmZXImIGJ1ZmZlcikgY29uCiAKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZFBsYXliYWNrKCkKIHsKLSAgICBOT1RJQ0VfTE9H
KFRISVMsICJwYXVzZWQgPSAiLCBwYXVzZWQoKSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6c3VzcGVuZFBsYXliYWNrKCVwKSAtIHBhdXNlZCA9ICVzIiwgdGhpcywgYm9vbFN0
cmluZyhwYXVzZWQoKSkpOwogICAgIGlmICghcGF1c2VkKCkpCiAgICAgICAgIHBhdXNlKCk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lQXV0b3BsYXlpbmcoKQogewotICAgIE5P
VElDRV9MT0coVEhJUywgInBhdXNlZCA9ICIsIHBhdXNlZCgpKTsKKyAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjpyZXN1bWVBdXRvcGxheWluZyglcCkgLSBwYXVzZWQgPSAlcyIsIHRo
aXMsIGJvb2xTdHJpbmcocGF1c2VkKCkpKTsKICAgICBtX2F1dG9wbGF5aW5nID0gdHJ1ZTsKIAog
ICAgIGlmIChjYW5UcmFuc2l0aW9uRnJvbUF1dG9wbGF5VG9QbGF5KCkpCkBAIC03MjgzLDcgKzcz
MDcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZUF1dG9wbGF5aW5nKCkKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkK
IHsKLSAgICBOT1RJQ0VfTE9HKFRISVMsICJwYXVzZWQgPSAiLCBwYXVzZWQoKSk7CisgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWF5UmVzdW1lUGxheWJhY2soJXApIC0gcGF1c2Vk
ID0gJXMiLCB0aGlzLCBib29sU3RyaW5nKHBhdXNlZCgpKSk7CiAgICAgaWYgKHBhdXNlZCgpICYm
IHNob3VsZFJlc3VtZSkKICAgICAgICAgcGxheSgpOwogfQpAQCAtNzI5OCw3ICs3MzIyLDcgQEAg
U3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3QKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSBjb21tYW5kLCBjb25zdCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50KiBhcmd1bWVudCkKIHsK
LSAgICBOT1RJQ0VfTE9HKFRISVMsIHN0YXRpY19jYXN0PGludD4oY29tbWFuZCkpOworICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFu
ZCglcCkgLSAlaSIsIHRoaXMsIHN0YXRpY19jYXN0PGludD4oY29tbWFuZCkpOwogCiAgICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgcmVtb3RlQ29udHJvbFVzZXJHZXN0dXJlKFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSwgJmRvY3VtZW50KCkpOwogICAgIHN3aXRjaCAoY29tbWFuZCkgewpAQCAtNzM1MSw3
ICs3Mzc1LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzaG91bGRPdmVycmlkZUJhY2tncm91
bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWEKICAgICBpZiAodHlwZSA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKSB7CiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICAgICAgaWYgKG1faXNQbGF5aW5nVG9XaXJlbGVzc1Rh
cmdldCkgewotICAgICAgICAgICAgTk9USUNFX0xPRyhUSElTLCAicmV0dXJuaW5nIHRydWUgYmVj
YXVzZSBtX2lzUGxheWluZ1RvV2lyZWxlc3NUYXJnZXQgaXMgdHJ1ZSIpOworICAgICAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxh
eWJhY2tSZXN0cmljdGlvbiglcCkgLSByZXR1cm5pbmcgdHJ1ZSBiZWNhdXNlIG1faXNQbGF5aW5n
VG9XaXJlbGVzc1RhcmdldCBpcyB0cnVlIiwgdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogI2VuZGlmCkBAIC03MzY0LDcgKzczODgsNyBAQCBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxh
dGZvcm1NZWRpYQogICAgIH0gZWxzZSBpZiAodHlwZSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U3VzcGVuZGVkVW5kZXJMb2NrKSB7CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkKICAgICAgICAgaWYgKG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldCkgewotICAgICAgICAg
ICAgTk9USUNFX0xPRyhUSElTLCAicmV0dXJuaW5nIHRydWUgYmVjYXVzZSBtX2lzUGxheWluZ1Rv
V2lyZWxlc3NUYXJnZXQgaXMgdHJ1ZSIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6c2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbigl
cCkgLSByZXR1cm5pbmcgdHJ1ZSBiZWNhdXNlIG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldCBp
cyB0cnVlIiwgdGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogI2Vu
ZGlmCkBAIC03NTI1LDE0ICs3NTQ5LDEzIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHVyZ2VC
dWZmZXJlZERhdGFJZlBvc3NpYmxlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNQ
bGF5aW5nVG9XaXJlbGVzc1RhcmdldCkgewotICAgICAgICBOT1RJQ0VfTE9HKFRISVMsICJlYXJs
eSByZXR1cm4gYmVjYXVzZSBwbGF5aW5nIHRvIHdpcmVsZXNzIHRhcmdldCIpOworICAgICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwdXJnZUJ1ZmZlcmVkRGF0YUlmUG9zc2libGUo
JXApIC0gZWFybHkgcmV0dXJuIGJlY2F1c2UgbV9pc1BsYXlpbmdUb1dpcmVsZXNzVGFyZ2V0IGlz
IHRydWUiLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFRoaXMgaXMg
Y2FsbGVkIHRvIHJlbGlldmUgbWVtb3J5IHByZXNzdXJlLiBUdXJuaW5nIG9mZiBidWZmZXJpbmcg
Y2F1c2VzIHRoZSBtZWRpYSBwbGF5YmFjawogICAgIC8vIGRhZW1vbiB0byByZWxlYXNlIG1lbW9y
eSBhc3NvY2lhdGVkIHdpdGggcXVldWVkLXVwIHZpZGVvIGZyYW1lcy4KICAgICAvLyBXZSB0dXJu
IGl0IGJhY2sgb24gcmlnaHQgYXdheSwgYnV0IG5ldyBmcmFtZXMgd29uJ3QgZ2V0IGxvYWRlZCB1
bmxlc3MgcGxheWJhY2sgaXMgcmVzdW1lZC4KLSAgICBOT1RJQ0VfTE9HKFRISVMsICJ0b2dnbGlu
ZyBkYXRhIGJ1ZmZlcmluZyIpOwogICAgIHNldFNob3VsZEJ1ZmZlckRhdGEoZmFsc2UpOwogICAg
IHNldFNob3VsZEJ1ZmZlckRhdGEodHJ1ZSk7CiAjZW5kaWYKQEAgLTc3MzIsMjMgKzc3NTUsNiBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1vZGUpCiAgICAgc2NoZWR1bGVVcGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cigpOwogfQogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1XVEZMb2dDaGFubmVsJiBIVE1M
TWVkaWFFbGVtZW50Ojpsb2dDaGFubmVsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTG9nTWVkaWE7
Ci19Ci0jZW5kaWYKLQotYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsTG9nKFdURkxvZ0xldmVs
IGxldmVsKSBjb25zdAotewotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIHJldHVybiBt
X2xvZ2dlci0+d2lsbExvZyhsb2dDaGFubmVsKCksIGxldmVsKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGxldmVsKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMWIxMDEzMDIzYzM1
NWNmYTc4MTgyZjkxMjVhYzBiNjkzYWE0MzAyMC4uNmI2MDYyOWI1YWMyNDlhNGI1OGM1NmEzODk0
NzYxYzUwYjc5YTk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJNZWRpYUVsZW1lbnRTZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiTWVkaWFQcm9kdWNlci5oIgogI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCIK
LSNpbmNsdWRlIDxwYWwvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNjUsNyArNjQsNiBAQAogI2VuZGlmCiAK
IG5hbWVzcGFjZSBQQUwgewotY2xhc3MgTG9nZ2VyOwogY2xhc3MgU2xlZXBEaXNhYmxlcjsKIH0K
IApAQCAtMTQwLDkgKzEzOCw2IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogICAgICwgcHJpdmF0ZSBDRE1DbGllbnQKICNlbmRpZgotI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwgcHJpdmF0ZSBQQUw6OkxvZ2dlckhlbHBlcgotI2Vu
ZGlmCiB7CiBwdWJsaWM6CiAgICAgV2Vha1B0cjxIVE1MTWVkaWFFbGVtZW50PiBjcmVhdGVXZWFr
UHRyKCkgeyByZXR1cm4gbV93ZWFrRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCk7IH0KQEAgLTg5NCwx
NCArODg5LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZVNlZWtUb1BsYXliYWNrUG9zaXRp
b24oZG91YmxlKTsKICAgICB2b2lkIHNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRpbWVyRmly
ZWQoKTsKIAotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IFBBTDo6TG9nZ2Vy
JiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0KLSAgICBj
b25zdCBjaGFyKiBjbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSFRNTE1lZGlhRWxl
bWVudCI7IH0KLSAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7Ci0j
ZW5kaWYKLQotICAgIGJvb2wgd2lsbExvZyhXVEZMb2dMZXZlbCkgY29uc3Q7Ci0KICAgICBXZWFr
UHRyRmFjdG9yeTxIVE1MTWVkaWFFbGVtZW50PiBtX3dlYWtGYWN0b3J5OwogICAgIFRpbWVyIG1f
cGVuZGluZ0FjdGlvblRpbWVyOwogICAgIFRpbWVyIG1fcHJvZ3Jlc3NFdmVudFRpbWVyOwpAQCAt
MTExOSwxMCArMTEwNiw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhRWxl
bWVudFNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwogICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFN
ZW1vcnlDb3N0IHsgMCB9OwogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRy
PFBBTDo6TG9nZ2VyPiBtX2xvZ2dlcjsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRS
T0xTX1NDUklQVCkKICAgICBmcmllbmQgY2xhc3MgTWVkaWFDb250cm9sc0hvc3Q7CiAgICAgUmVm
UHRyPE1lZGlhQ29udHJvbHNIb3N0PiBtX21lZGlhQ29udHJvbHNIb3N0OwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJkNDUxYThkZWI5NTdiMmU0
ODA5ZjllZjE1ZDRjMzkyYTdiMmIwNWMuLjdlNDA3YjUzNzcxODgyZmQwY2UzZDNlYmU3YjY2NWQz
MmZkOWE1MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNy0wOS0wMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1
ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTQ5
NCBhbmQgcjIyMTUwMC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NjI1OAorCisgICAgICAgIFRoaXMgY2F1c2VkIHRoZSB3aW5kb3dzIGJ1aWxkIHRv
IGZhaWwuIChSZXF1ZXN0ZWQgYnkgbWxld2lzMTMKKyAgICAgICAgb24gI3dlYmtpdCkuCisKKyAg
ICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiU3dpdGNoIEhUTUxNZWRpYUVs
ZW1lbnQgdG8gcmVsZWFzZSBsb2dnaW5nIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDY1CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzIyMTQ5NAorCisgICAgICAgICJTd2l0Y2ggSFRNTE1lZGlhRWxlbWVudCB0byBy
ZWxlYXNlIGxvZ2dpbmciCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzYwNjUKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MjIxNTAwCisKIDIwMTctMDktMDEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KIAogICAgICAgICBXU0wncyBsZXhlciB3aWxsIG5ldmVyIGVtaXQga2V5d29yZCB0b2tl
bnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Mb2dnaW5n
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Mb2dnaW5nLmNwcAppbmRl
eCBmYjdkMTE2NGUwNTJjMDYwMzJhMDc2NDI3M2FlODQ3NTY2ZTlmNWQ3Li5jM2UwNTNhMDQ3YTI2
MjU4YmE2ZmJkMDFlZmQ3MTNlODZjYzNhNzUxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvTG9nZ2luZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0xvZ2dpbmcuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8cGFsL0xv
Z2dlci5oPgotI2luY2x1ZGUgPHBhbC9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKQEAgLTU2LDcgKzU1LDcg
QEAgc3RhdGljIGNvbnN0IHNpemVfdCBsb2dDaGFubmVsQ291bnQgPSBzaXplb2YodGVzdExvZ0No
YW5uZWxzKSAvIHNpemVvZih0ZXN0TG9nQ2gKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
Ci1jbGFzcyBMb2dnaW5nVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0LCBwdWJsaWMgTG9nZ2Vy
SGVscGVyIHsKK2NsYXNzIExvZ2dpbmdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1Ymxp
YyBMb2dIZWxwZXIgewogcHVibGljOgogICAgIExvZ2dpbmdUZXN0KCkKICAgICAgICAgOiBtX2xv
Z2dlciB7IExvZ2dlcjo6Y3JlYXRlKHRoaXMpIH0KQEAgLTMzNiw3ICszMzUsNyBAQCBURVNUX0Yo
TG9nZ2luZ1Rlc3QsIExvZ2dlcikKICAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5jb250YWlucygi
U3RyaW5nIGFuZCBjb25zdCBTdHJpbmciLCBmYWxzZSkpOwogfQogCi1URVNUX0YoTG9nZ2luZ1Rl
c3QsIExvZ2dlckhlbHBlcikKK1RFU1RfRihMb2dnaW5nVGVzdCwgTG9nSGVscGVyKQogewogICAg
IEVYUEVDVF9UUlVFKGxvZ2dlcigpLmVuYWJsZWQoKSk7CiAKQEAgLTM0NiwyOSArMzQ1LDMwIEBA
IFRFU1RfRihMb2dnaW5nVGVzdCwgTG9nZ2VySGVscGVyKQogICAgIGJ1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiKSIpOwogICAgIFN0cmluZyBzaWduYXR1cmUgPSBidWlsZGVyLnRvU3RyaW5nKCk7CiAK
LSAgICBBTFdBWVNfTE9HKFRISVMpOworICAgIEFMV0FZU19MT0coKTsKICAgICBFWFBFQ1RfVFJV
RSh0aGlzLT5vdXRwdXQoKS5jb250YWlucyhzaWduYXR1cmUsIGZhbHNlKSk7CiAKLSAgICBBTFdB
WVNfTE9HKFRISVMsICJXZWxjb21lIGJhY2siLCAiIG15IGZyaWVuZHMiLCAiIHRvIHRoZSBzaG93
IiwgIiB0aGF0IG5ldmVyIGVuZHMiKTsKKyAgICBBTFdBWVNfTE9HKCJXZWxjb21lIGJhY2siLCAi
IG15IGZyaWVuZHMiLCAiIHRvIHRoZSBzaG93IiwgIiB0aGF0IG5ldmVyIGVuZHMiKTsKICAgICBT
dHJpbmcgcmVzdWx0ID0gdGhpcy0+b3V0cHV0KCk7CiAgICAgRVhQRUNUX1RSVUUocmVzdWx0LmNv
bnRhaW5zKHNpZ25hdHVyZSwgZmFsc2UpKTsKICAgICBFWFBFQ1RfVFJVRShyZXN1bHQuY29udGFp
bnMoInRvIHRoZSBzaG93IHRoYXQgbmV2ZXIiLCBmYWxzZSkpOwogCiAgICAgV1RGU2V0TG9nQ2hh
bm5lbExldmVsKCZUZXN0Q2hhbm5lbDEsIFdURkxvZ0xldmVsV2FybmluZyk7CisgICAgRVhQRUNU
X1RSVUUod2lsbExvZyhXVEZMb2dMZXZlbFdhcm5pbmcpKTsKIAotICAgIEVSUk9SX0xPRyhUSElT
LCAiV2UncmUgc28gZ2xhZCB5b3UgY291bGQgYXR0ZW5kIik7CisgICAgRVJST1JfTE9HKCJXZSdy
ZSBzbyBnbGFkIHlvdSBjb3VsZCBhdHRlbmQiKTsKICAgICBFWFBFQ1RfVFJVRShvdXRwdXQoKS5j
b250YWlucygiV2UncmUgc28gZ2xhZCB5b3UgY291bGQgYXR0ZW5kIiwgZmFsc2UpKTsKIAotICAg
IFdBUk5JTkdfTE9HKFRISVMsICJDb21lIGluc2lkZSEgIiwgIkNvbWUgaW5zaWRlISIpOworICAg
IFdBUk5JTkdfTE9HKCJDb21lIGluc2lkZSEgIiwgIkNvbWUgaW5zaWRlISIpOwogICAgIEVYUEVD
VF9UUlVFKG91dHB1dCgpLmNvbnRhaW5zKCJDb21lIGluc2lkZSEgQ29tZSBpbnNpZGUhIiwgZmFs
c2UpKTsKIAotICAgIE5PVElDRV9MT0coVEhJUywgIlRoZXJlIGJlaGluZCBhIGdsYXNzIGlzIGEg
cmVhbCBibGFkZSBvZiBncmFzcyIpOworICAgIE5PVElDRV9MT0coIlRoZXJlIGJlaGluZCBhIGds
YXNzIGlzIGEgcmVhbCBibGFkZSBvZiBncmFzcyIpOwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0
KCkubGVuZ3RoKCkpOwogCi0gICAgSU5GT19MT0coVEhJUywgImJlIGNhcmVmdWwgYXMgeW91IHBh
c3MuIik7CisgICAgSU5GT19MT0coImJlIGNhcmVmdWwgYXMgeW91IHBhc3MuIik7CiAgICAgRVhQ
RUNUX0VRKDB1LCBvdXRwdXQoKS5sZW5ndGgoKSk7CiAKLSAgICBERUJVR19MT0coVEhJUywgIk1v
dmUgYWxvbmchIE1vdmUgYWxvbmchIik7CisgICAgREVCVUdfTE9HKCJNb3ZlIGFsb25nISBNb3Zl
IGFsb25nISIpOwogICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0KCkubGVuZ3RoKCkpOwogfQogCkBA
IC0zODUsMjIgKzM4NSwxOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgV1RGTG9nQ2hhbm5lbCBj
aGFubmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hhbm5lbDsgfQotICAgIFdURkxvZ0xldmVs
IGxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGV2ZWw7IH0KIAogcHJpdmF0ZToKLSAgICB2
b2lkIGRpZExvZ01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgV1RGTG9nTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbG9nTWVzc2FnZSkgZmluYWwKKyAgICB2b2lkIGRpZExv
Z01lc3NhZ2UoY29uc3QgV1RGTG9nQ2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgU3RyaW5nJiBsb2dN
ZXNzYWdlKSBmaW5hbAogICAgIHsKICAgICAgICAgbV9sb2dCdWZmZXIuYXBwZW5kKGxvZ01lc3Nh
Z2UpOwogICAgICAgICBtX2xhc3RDaGFubmVsID0gY2hhbm5lbDsKLSAgICAgICAgbV9sYXN0TGV2
ZWwgPSBsZXZlbDsKICAgICB9CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fbG9nQnVmZmVyOwogICAg
IFdURkxvZ0NoYW5uZWwgbV9sYXN0Q2hhbm5lbDsKLSAgICBXVEZMb2dMZXZlbCBtX2xhc3RMZXZl
bCB7IFdURkxvZ0xldmVsRXJyb3IgfTsKIH07CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
IFRFU1RfRihMb2dnaW5nVGVzdCwgTG9nT2JzZXJ2ZXIpCiB7CiAgICAgTG9nT2JzZXJ2ZXIgb2Jz
ZXJ2ZXI7CkBAIC00MDgsMTggKzQwNCwxNiBAQCBURVNUX0YoTG9nZ2luZ1Rlc3QsIExvZ09ic2Vy
dmVyKQogICAgIEVYUEVDVF9UUlVFKGxvZ2dlcigpLmVuYWJsZWQoKSk7CiAKICAgICBsb2dnZXIo
KS5hZGRPYnNlcnZlcihvYnNlcnZlcik7Ci0gICAgQUxXQVlTX0xPRyhUSElTLCAidGVzdGluZyAx
LCAyLCAzIik7CisgICAgQUxXQVlTX0xPRygidGVzdGluZyAxLCAyLCAzIik7CiAgICAgRVhQRUNU
X1RSVUUodGhpcy0+b3V0cHV0KCkuY29udGFpbnMoInRlc3RpbmcgMSwgMiwgMyIsIGZhbHNlKSk7
CiAgICAgRVhQRUNUX1RSVUUob2JzZXJ2ZXIubG9nKCkuY29udGFpbnMoInRlc3RpbmcgMSwgMiwg
MyIsIGZhbHNlKSk7CiAgICAgRVhQRUNUX1NUUkVRKG9ic2VydmVyLmNoYW5uZWwoKS5uYW1lLCBs
b2dDaGFubmVsKCkubmFtZSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oV1RGTG9n
TGV2ZWxBbHdheXMpLCBzdGF0aWNfY2FzdDxpbnQ+KG9ic2VydmVyLmxldmVsKCkpKTsKIAogICAg
IGxvZ2dlcigpLnJlbW92ZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICBBTFdBWVNfTE9HKCJ0ZXN0
aW5nICIsIDEsICIsICIsIDIsICIsIDMiKTsKICAgICBFWFBFQ1RfVFJVRSh0aGlzLT5vdXRwdXQo
KS5jb250YWlucygidGVzdGluZyAxLCAyLCAzIiwgZmFsc2UpKTsKICAgICBFWFBFQ1RfRVEoMHUs
IG9ic2VydmVyLmxvZygpLmxlbmd0aCgpKTsKIH0KLSNlbmRpZgogCiAjZW5kaWYKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>