<?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>207807</bug_id>
          
          <creation_ts>2020-02-14 22:46:45 -0800</creation_ts>
          <short_desc>REGRESSION(r256633): 4% memory regression in new Membuster, possibly some leaking in WebKit Malloc? (Requested by yusukesuzuki on #webkit).</short_desc>
          <delta_ts>2020-02-16 01:14:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>197684</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>chris.reid</cc>
    
    <cc>fujii</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1619372</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-14 22:46:45 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/256633 broke the build:
4% memory regression in new Membuster, possibly some leaking in WebKit Malloc? (Requested by yusukesuzuki 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>1619374</commentid>
    <comment_count>1</comment_count>
      <attachid>390856</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-14 22:46:53 -0800</bug_when>
    <thetext>Created attachment 390856
ROLLOUT of r256633

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>1619375</commentid>
    <comment_count>2</comment_count>
      <attachid>390856</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-14 22:54:42 -0800</bug_when>
    <thetext>Comment on attachment 390856
ROLLOUT of r256633

Clearing flags on attachment: 390856

Committed r256700: &lt;https://trac.webkit.org/changeset/256700&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619376</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-14 22:54:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619377</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-14 22:55:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/59483218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619402</commentid>
    <comment_count>5</comment_count>
      <attachid>390861</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2020-02-15 03:50:43 -0800</bug_when>
    <thetext>Created attachment 390861
Potential fix

These are the changes isolated for mac and a potential fix.

I believe the cause of the memory regression was because the file descriptor for the mapping was only opened with O_WRONLY and not O_RDWR which caused the mmap calls to fail on mac with EPERM.
The memory regression was likely resources stored in memory that were previously in a mapped file.

I added FileOpenMode::ReadWrite to match the flags from before that patch `O_RDWR | O_CREAT | O_EXCL`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619484</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-16 01:14:03 -0800</bug_when>
    <thetext>(In reply to Christopher Reid from comment #5)
&gt; Created attachment 390861 [details]
&gt; Potential fix
&gt; 
&gt; These are the changes isolated for mac and a potential fix.
&gt; 
&gt; I believe the cause of the memory regression was because the file descriptor
&gt; for the mapping was only opened with O_WRONLY and not O_RDWR which caused
&gt; the mmap calls to fail on mac with EPERM.
&gt; The memory regression was likely resources stored in memory that were
&gt; previously in a mapped file.
&gt; 
&gt; I added FileOpenMode::ReadWrite to match the flags from before that patch
&gt; `O_RDWR | O_CREAT | O_EXCL`.

I&apos;m building Safari and running new Membuster to ensure this patch fixes the issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390856</attachid>
            <date>2020-02-14 22:46:53 -0800</date>
            <delta_ts>2020-02-14 22:54:42 -0800</delta_ts>
            <desc>ROLLOUT of r256633</desc>
            <filename>bug-207807-20200214224653.patch</filename>
            <type>text/plain</type>
            <size>34858</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Njk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJmNTczYjE3ZDk2YzI4NDMzMzQ4MmVm
MTBiNjZjNDNkNjM4ZmM0OTUuLmExZWE2YzhlMzVhNThmNzVlMzExYjdjOTVhZjQ0NzZmY2U0NDUx
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDItMTQgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
NTY2MzMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc4MDcKKworICAgICAgICA0JSBtZW1vcnkgcmVncmVzc2lvbiBpbiBuZXcgTWVtYnVzdGVyLCBw
b3NzaWJseSBzb21lIGxlYWtpbmcKKyAgICAgICAgaW4gV2ViS2l0IE1hbGxvYz8gKFJlcXVlc3Rl
ZCBieSB5dXN1a2VzdXp1a2kgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdl
c2V0OgorCisgICAgICAgICJbV2luXSBJbXBsZW1lbnQgTmV0d29ya0NhY2hlOjpEYXRhIGJ5IHVz
aW5nCisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3Njg0CisgICAgICAgIGh0dHBzOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNTY2MzMKKwogMjAyMC0wMi0xNCAgQ2hyaXN0b3Bo
ZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl0gSW1wbGVtZW50
IE5ldHdvcmtDYWNoZTo6RGF0YSBieSB1c2luZyBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA3NTk4OTA4Nzg2MTdhYzg1ZTE5MGVjN2Y5NTQ1N2I2OWI2MTc5MTJjLi5lMWQ4
Mzc1NzBjYWVmNGM1MTZjNjM3NjA3YTVjOTBmNDA3MjA2YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIwLTAyLTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU2NjMzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3ODA3CisKKyAgICAgICAg
NCUgbWVtb3J5IHJlZ3Jlc3Npb24gaW4gbmV3IE1lbWJ1c3RlciwgcG9zc2libHkgc29tZSBsZWFr
aW5nCisgICAgICAgIGluIFdlYktpdCBNYWxsb2M/IChSZXF1ZXN0ZWQgYnkgeXVzdWtlc3V6dWtp
IG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAi
W1dpbl0gSW1wbGVtZW50IE5ldHdvcmtDYWNoZTo6RGF0YSBieSB1c2luZworICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NzY4NAorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjU2NjMzCisKIDIwMjAtMDItMTQgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29t
PgogCiAgICAgICAgIE1hc2sgV2ViR0wgc3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCBm
MzZjZGQyNTFmN2EwODBhMzE2YmNiYmY2M2M0MTUzYjNmMTE4MjQwLi43MmY5NTNlYWIzZmM5ODg0
MmUxMzI4M2Q1NTcyZDk5NjU5ZWYxMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtMjg3LDE3
ICsyODcsMTcgQEAgTWFwcGVkRmlsZURhdGE6On5NYXBwZWRGaWxlRGF0YSgpCiAgICAgdW5tYXBW
aWV3T2ZGaWxlKG1fZmlsZURhdGEsIG1fZmlsZVNpemUpOwogfQogCi1NYXBwZWRGaWxlRGF0YTo6
TWFwcGVkRmlsZURhdGEoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgTWFwcGVkRmlsZU1vZGUgbWFw
TW9kZSwgYm9vbCYgc3VjY2VzcykKKyNpZiBIQVZFKE1NQVApCisKK01hcHBlZEZpbGVEYXRhOjpN
YXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBNYXBwZWRGaWxlTW9kZSBtb2Rl
LCBib29sJiBzdWNjZXNzKQogewotICAgIGF1dG8gZmQgPSBvcGVuRmlsZShmaWxlUGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGZkID0gb3BlbkZpbGUoZmls
ZVBhdGgsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CiAKLSAgICBzdWNjZXNzID0gbWFwRmlsZUhhbmRs
ZShmZCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkLCBtYXBNb2RlKTsKKyAgICBzdWNj
ZXNzID0gbWFwRmlsZUhhbmRsZShmZCwgbW9kZSk7CiAgICAgY2xvc2VGaWxlKGZkKTsKIH0KIAot
I2lmIEhBVkUoTU1BUCkKLQotYm9vbCBNYXBwZWRGaWxlRGF0YTo6bWFwRmlsZUhhbmRsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBGaWxlT3Blbk1vZGUgb3Blbk1vZGUsIE1hcHBlZEZpbGVN
b2RlIG1hcE1vZGUpCitib29sIE1hcHBlZEZpbGVEYXRhOjptYXBGaWxlSGFuZGxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIE1hcHBlZEZpbGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCFpc0hh
bmRsZVZhbGlkKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyNCwyMSArMzI0
LDcgQEAgYm9vbCBNYXBwZWRGaWxlRGF0YTo6bWFwRmlsZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBGaWxlT3Blbk1vZGUgb3Blbk0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgaW50IHBhZ2VQcm90ZWN0aW9uID0gUFJPVF9SRUFEOwotICAgIHN3aXRjaCAob3Bl
bk1vZGUpIHsKLSAgICBjYXNlIEZpbGVPcGVuTW9kZTo6UmVhZDoKLSAgICAgICAgcGFnZVByb3Rl
Y3Rpb24gPSBQUk9UX1JFQUQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRmlsZU9wZW5Nb2Rl
OjpXcml0ZToKLSAgICAgICAgcGFnZVByb3RlY3Rpb24gPSBQUk9UX1dSSVRFOwotICAgICAgICBi
cmVhazsKLSNpZiBPUyhEQVJXSU4pCi0gICAgY2FzZSBGaWxlT3Blbk1vZGU6OkV2ZW50c09ubHk6
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2VuZGlmCi0gICAgfQotCi0gICAgdm9p
ZCogZGF0YSA9IG1tYXAoMCwgc2l6ZSwgcGFnZVByb3RlY3Rpb24sIE1BUF9GSUxFIHwgKG1hcE1v
ZGUgPT0gTWFwcGVkRmlsZU1vZGU6OlNoYXJlZCA/IE1BUF9TSEFSRUQgOiBNQVBfUFJJVkFURSks
IGZkLCAwKTsKKyAgICB2b2lkKiBkYXRhID0gbW1hcCgwLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9G
SUxFIHwgKG1vZGUgPT0gTWFwcGVkRmlsZU1vZGU6OlNoYXJlZCA/IE1BUF9TSEFSRUQgOiBNQVBf
UFJJVkFURSksIGZkLCAwKTsKIAogICAgIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
IGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDAyNDFhNDhmMGM1NzlhMzIzNjEz
NGJjMDM0MmYxMDZjMWEyM2UzNmUuLjgwNWEwZTRiMTZmY2JmMjc3ZDQwNDcwNWQxYmY4ZmI4OTI0
MDVjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTg0LDExICs4NCw2IEBAIGVudW0gY2xhc3MgRmls
ZU9wZW5Nb2RlIHsKICNlbmRpZgogfTsKIAotZW51bSBjbGFzcyBGaWxlQWNjZXNzUGVybWlzc2lv
biA6IGJvb2wgewotICAgIFVzZXIsCi0gICAgQWxsCi19OwotCiBlbnVtIGNsYXNzIEZpbGVTZWVr
T3JpZ2luIHsKICAgICBCZWdpbm5pbmcsCiAgICAgQ3VycmVudCwKQEAgLTEzNiw3ICsxMzEsNyBA
QCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgdXJsU3RyaQogYm9vbCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpOyAv
LyBSZXR1cm5zIHRydWUgaWYgYW55IGZpbGUgY2FuIGV2ZXIgYmUgZXhjbHVkZWQgZnJvbSBiYWNr
dXAuCiBib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYpOyAvLyBSZXR1cm5zIHRy
dWUgaWYgc3VjY2Vzc2Z1bC4KIAotV1RGX0VYUE9SVF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IGxp
c3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbHRlcik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyID0gU3RyaW5nKCkpOwogCiBXVEZfRVhQT1JU
X1BSSVZBVEUgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJik7
CiBTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKik7
CkBAIC0xNDUsNyArMTQwLDcgQEAgaW5saW5lIGJvb2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0
Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1cm4gaGFuZGxlICE9IGkKIAogLy8gUHJlZml4
IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1
bGwgcGF0aC4KIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYpOwotV1RGX0VYUE9SVF9QUklW
QVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVP
cGVuTW9kZSwgRmlsZUFjY2Vzc1Blcm1pc3Npb24gPSBGaWxlQWNjZXNzUGVybWlzc2lvbjo6QWxs
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xv
c2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwogLy8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9m
ZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3Ro
ZXJ3aXNlLgogV1RGX0VYUE9SVF9QUklWQVRFIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luKTsKQEAgLTIxMSw3ICsy
MDYsNiBAQCBwdWJsaWM6CiAgICAgTWFwcGVkRmlsZURhdGEoTWFwcGVkRmlsZURhdGEmJik7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgsIE1hcHBlZEZpbGVNb2RlLCBib29sJiBzdWNjZXNzKTsKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgTWFwcGVkRmlsZURhdGEoUGxhdGZvcm1GaWxlSGFuZGxlLCBNYXBwZWRGaWxlTW9kZSwgYm9v
bCYgc3VjY2Vzcyk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZpbGVEYXRhKFBsYXRm
b3JtRmlsZUhhbmRsZSwgRmlsZU9wZW5Nb2RlLCBNYXBwZWRGaWxlTW9kZSwgYm9vbCYgc3VjY2Vz
cyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5NYXBwZWRGaWxlRGF0YSgpOwogICAgIE1hcHBl
ZEZpbGVEYXRhJiBvcGVyYXRvcj0oTWFwcGVkRmlsZURhdGEmJik7CiAKQEAgLTIyMiwyMCArMjE2
LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkKiBsZWFrSGFuZGxlKCkgeyByZXR1cm4gc3RkOjpleGNo
YW5nZShtX2ZpbGVEYXRhLCBudWxscHRyKTsgfQogCiBwcml2YXRlOgotICAgIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIG1hcEZpbGVIYW5kbGUoUGxhdGZvcm1GaWxlSGFuZGxlLCBGaWxlT3Blbk1v
ZGUsIE1hcHBlZEZpbGVNb2RlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBtYXBGaWxl
SGFuZGxlKFBsYXRmb3JtRmlsZUhhbmRsZSwgTWFwcGVkRmlsZU1vZGUpOwogCiAgICAgdm9pZCog
bV9maWxlRGF0YSB7IG51bGxwdHIgfTsKICAgICB1bnNpZ25lZCBtX2ZpbGVTaXplIHsgMCB9Owog
fTsKIAotaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBtYXBNb2RlLCBib29sJiBzdWNjZXNzKQotewot
ICAgIHN1Y2Nlc3MgPSBtYXBGaWxlSGFuZGxlKGhhbmRsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkLCBt
YXBNb2RlKTsKLX0KLQotaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBGaWxlT3Blbk1vZGUgb3Blbk1vZGUsIE1hcHBlZEZpbGVN
b2RlIG1hcE1vZGUsIGJvb2wmIHN1Y2Nlc3MpCitpbmxpbmUgTWFwcGVkRmlsZURhdGE6Ok1hcHBl
ZEZpbGVEYXRhKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIE1hcHBlZEZpbGVNb2RlIG1vZGUs
IGJvb2wmIHN1Y2Nlc3MpCiB7Ci0gICAgc3VjY2VzcyA9IG1hcEZpbGVIYW5kbGUoaGFuZGxlLCBv
cGVuTW9kZSwgbWFwTW9kZSk7CisgICAgc3VjY2VzcyA9IG1hcEZpbGVIYW5kbGUoaGFuZGxlLCBt
b2RlKTsKIH0KIAogaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShNYXBwZWRG
aWxlRGF0YSYmIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lz
dGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRl
eCBkNzlhODU0Mzc4MzIzMjc4OWFlNjUwNGZiYmIwOTg5NDYyNWM3NmM3Li44NmMwNGY5ZDVlMTM0
MGQ5YjRmOTdmMGQ3Zjc5MDBlMjhiMzMxN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcApAQCAtMzM4LDcgKzMzOCw3IEBAIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOwogfQogCi1QbGF0Zm9ybUZpbGVI
YW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSwgRmls
ZUFjY2Vzc1Blcm1pc3Npb24gcGVybWlzc2lvbikKK1BsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIGF1dG8gZmls
ZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgaWYgKCF2YWxpZFJl
cHJlc2VudGF0aW9uKGZpbGVuYW1lKSkKQEAgLTM1MSwxMCArMzUxLDggQEAgUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUsIEZp
bGVBY2Nlc3NQZXIKICAgICBlbHNlIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6V3JpdGUpIHsK
ICAgICAgICAgaWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lLmRhdGEoKSwgc3RhdGljX2Nhc3Q8R0Zp
bGVUZXN0PihHX0ZJTEVfVEVTVF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkpCiAg
ICAgICAgICAgICBpb1N0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmls
ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IEdGaWxlQ3JlYXRlRmxhZ3MgcGVybWlzc2lvbkZsYWcgPSAocGVybWlzc2lvbiA9PSBGaWxlQWNj
ZXNzUGVybWlzc2lvbjo6QWxsKSA/IEdfRklMRV9DUkVBVEVfTk9ORSA6IEdfRklMRV9DUkVBVEVf
UFJJVkFURTsKLSAgICAgICAgICAgIGlvU3RyZWFtID0gYWRvcHRHUmVmKGdfZmlsZV9jcmVhdGVf
cmVhZHdyaXRlKGZpbGUuZ2V0KCksIHBlcm1pc3Npb25GbGFnLCBudWxscHRyLCBudWxscHRyKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW9TdHJlYW0gPSBhZG9wdEdS
ZWYoZ19maWxlX2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05F
LCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGlvU3RyZWFtLmxlYWtS
ZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDU2NjAw
NTMyYTUwOTcyYjM0NWQ2NzU2YmQ4MTAwMTQxZmU1NTQ2ODEuLjI3ODM5ODgzYTFhMmQ2NTQxMzBm
ZDY4NWZlYWZhMDJhOWM0ODY0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcApAQCAtNzksNyArNzksNyBAQCBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgIHJldHVybiB1bmxpbmtlZDsKIH0KIAotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5G
aWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUsIEZpbGVBY2Nlc3NQZXJt
aXNzaW9uIHBlcm1pc3Npb24pCitQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKIHsKICAgICBDU3RyaW5nIGZzUmVwID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogCkBAIC04NywyNyArODcsMTYgQEAgUGxhdGZv
cm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1v
ZGUsIEZpbGVBY2Nlc3NQZXIKICAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7CiAKICAgICBpbnQgcGxhdGZvcm1GbGFnID0gMDsKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAg
ICBjYXNlIEZpbGVPcGVuTW9kZTo6UmVhZDoKKyAgICBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6
OlJlYWQpCiAgICAgICAgIHBsYXRmb3JtRmxhZyB8PSBPX1JET05MWTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBGaWxlT3Blbk1vZGU6OldyaXRlOgorICAgIGVsc2UgaWYgKG1vZGUgPT0gRmls
ZU9wZW5Nb2RlOjpXcml0ZSkKICAgICAgICAgcGxhdGZvcm1GbGFnIHw9IChPX1dST05MWSB8IE9f
Q1JFQVQgfCBPX1RSVU5DKTsKLSAgICAgICAgYnJlYWs7CiAjaWYgT1MoREFSV0lOKQotICAgIGNh
c2UgRmlsZU9wZW5Nb2RlOjpFdmVudHNPbmx5OgorICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9w
ZW5Nb2RlOjpFdmVudHNPbmx5KQogICAgICAgICBwbGF0Zm9ybUZsYWcgfD0gT19FVlRPTkxZOwot
ICAgICAgICBicmVhazsKICNlbmRpZgotICAgIH0KLQotICAgIGludCBwZXJtaXNzaW9uRmxhZyA9
IDA7Ci0gICAgaWYgKHBlcm1pc3Npb24gPT0gRmlsZUFjY2Vzc1Blcm1pc3Npb246OlVzZXIpCi0g
ICAgICAgIHBlcm1pc3Npb25GbGFnIHw9IChTX0lSVVNSIHwgU19JV1VTUik7Ci0gICAgZWxzZSBp
ZiAocGVybWlzc2lvbiA9PSBGaWxlQWNjZXNzUGVybWlzc2lvbjo6QWxsKQotICAgICAgICBwZXJt
aXNzaW9uRmxhZyB8PSAoU19JUlVTUiB8IFNfSVdVU1IgfCBTX0lSR1JQIHwgU19JV0dSUCB8IFNf
SVJPVEggfCBTX0lXT1RIKTsKIAotICAgIHJldHVybiBvcGVuKGZzUmVwLmRhdGEoKSwgcGxhdGZv
cm1GbGFnLCBwZXJtaXNzaW9uRmxhZyk7CisgICAgcmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBw
bGF0Zm9ybUZsYWcsIDA2NjYpOwogfQogCiB2b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBhOTk1MjIw
MGYzMTZkMmYyYmJmMmM5Njc5NGQwNWVhNjQ3N2VkMmZiLi45MzM0YWMwMjlkNTdjMzM2NWY0NTYy
ODZkZDM4YWFiZjBkNGZhNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC00MjEsNyArNDIxLDcgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYs
IFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiBwcm9wb3NlZFBhdGg7CiB9
CiAKLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVP
cGVuTW9kZSBtb2RlLCBGaWxlQWNjZXNzUGVybWlzc2lvbikKK1BsYXRmb3JtRmlsZUhhbmRsZSBv
cGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIERX
T1JEIGRlc2lyZWRBY2Nlc3MgPSAwOwogICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAw
OwpAQCAtNDM2LDYgKzQzNiw4IEBAIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlLCBGaWxlQWNjZXNzUGVyCiAgICAgICAgIGRl
c2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dSSVRFOwogICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9u
ID0gQ1JFQVRFX0FMV0FZUzsKICAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCiAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0g
cGF0aDsKQEAgLTU0NywxNCArNTQ5LDkgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAgcmV0dXJu
IGVudHJpZXM7CiB9CiAKLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0
aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKK2Jvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90JikKIHsKLSAgICBVTEFSR0VfSU5URUdFUiBmcmVlQnl0ZXNBdmFpbGFi
bGVUb0NhbGxlcjsKLSAgICBpZiAoIUdldERpc2tGcmVlU3BhY2VFeFcocGF0aC53aWRlQ2hhcmFj
dGVycygpLmRhdGEoKSwgJmZyZWVCeXRlc0F2YWlsYWJsZVRvQ2FsbGVyLCBudWxscHRyLCBudWxs
cHRyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZnJlZVNwYWNlID0gZnJlZUJ5dGVz
QXZhaWxhYmxlVG9DYWxsZXIuUXVhZFBhcnQ7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0
cmluZyYgZnNGaWxlKQpAQCAtNjA2LDcgKzYwMywxNSBAQCBib29sIHVubWFwVmlld09mRmlsZSh2
b2lkKiBidWZmZXIsIHNpemVfdCkKICAgICByZXR1cm4gVW5tYXBWaWV3T2ZGaWxlKGJ1ZmZlcik7
CiB9CiAKLWJvb2wgTWFwcGVkRmlsZURhdGE6Om1hcEZpbGVIYW5kbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgRmlsZU9wZW5Nb2RlIG9wZW5Nb2RlLCBNYXBwZWRGaWxlTW9kZSkKK01hcHBl
ZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBNYXBwZWRG
aWxlTW9kZSBtb2RlLCBib29sJiBzdWNjZXNzKQoreworICAgIGF1dG8gZmlsZSA9IENyZWF0ZUZp
bGUoZmlsZVBhdGgud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIEdFTkVSSUNfUkVBRCwgMCwgbnVs
bHB0ciwgT1BFTl9FWElTVElORywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCBudWxscHRyKTsKKwor
ICAgIHN1Y2Nlc3MgPSBtYXBGaWxlSGFuZGxlKGZpbGUsIG1vZGUpOworICAgIGNsb3NlRmlsZShm
aWxlKTsKK30KKworYm9vbCBNYXBwZWRGaWxlRGF0YTo6bWFwRmlsZUhhbmRsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSkKIHsKICAgICBpZiAoIWlzSGFuZGxlVmFs
aWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjIwLDI0ICs2MjUsMTEgQEAg
Ym9vbCBNYXBwZWRGaWxlRGF0YTo6bWFwRmlsZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBGaWxlT3Blbk1vZGUgb3Blbk0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgRFdPUkQgcGFnZVByb3RlY3Rpb24gPSBQQUdFX1JFQURPTkxZOwotICAgIERXT1JEIGRlc2ly
ZWRBY2Nlc3MgPSBGSUxFX01BUF9SRUFEOwotICAgIHN3aXRjaCAob3Blbk1vZGUpIHsKLSAgICBj
YXNlIEZpbGVPcGVuTW9kZTo6UmVhZDoKLSAgICAgICAgcGFnZVByb3RlY3Rpb24gPSBQQUdFX1JF
QURPTkxZOwotICAgICAgICBkZXNpcmVkQWNjZXNzID0gRklMRV9NQVBfUkVBRDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGaWxlT3Blbk1vZGU6OldyaXRlOgotICAgICAgICBwYWdlUHJvdGVj
dGlvbiA9IFBBR0VfUkVBRFdSSVRFOwotICAgICAgICBkZXNpcmVkQWNjZXNzID0gRklMRV9NQVBf
V1JJVEU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGF1dG8gbWFwcGluZyA9IENyZWF0
ZUZpbGVNYXBwaW5nKGhhbmRsZSwgbnVsbHB0ciwgcGFnZVByb3RlY3Rpb24sIDAsIDAsIG51bGxw
dHIpOworICAgIGF1dG8gbWFwcGluZyA9IENyZWF0ZUZpbGVNYXBwaW5nKGhhbmRsZSwgbnVsbHB0
ciwgUEFHRV9SRUFET05MWSwgMCwgMCwgbnVsbHB0cik7CiAgICAgaWYgKCFtYXBwaW5nKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2ZpbGVEYXRhID0gTWFwVmlld09mRmlsZShtYXBw
aW5nLCBkZXNpcmVkQWNjZXNzLCAwLCAwLCBzaXplKTsKKyAgICBtX2ZpbGVEYXRhID0gTWFwVmll
d09mRmlsZShtYXBwaW5nLCBGSUxFX01BUF9SRUFELCAwLCAwLCBzaXplKTsKICAgICBDbG9zZUhh
bmRsZShtYXBwaW5nKTsKICAgICBpZiAoIW1fZmlsZURhdGEpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3dpbi9QYXRoV2Fsa2VyLmNwcAppbmRleCA2ODhmZWRkNTlmYThkNWRkMzU5ZDRj
MDlhOTZmZTQ4NmQ1MzNiM2ExLi44ZDdkN2FjNjgzODU5ZWUzZTRkMWQwNGMzZWUwNmEyOWYwYmM3
M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vUGF0aFdhbGtlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvd2luL1BhdGhXYWxrZXIuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXVEYgewogCiBQYXRoV2Fsa2VyOjpQYXRoV2Fsa2VyKGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5LCBjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiB7Ci0gICAgU3RyaW5nIHBhdGggPSBtYWtlU3Ry
aW5nKGRpcmVjdG9yeSwgJ1xcJywgcGF0dGVybik7CisgICAgU3RyaW5nIHBhdGggPSBkaXJlY3Rv
cnkgKyAiXFwiICsgcGF0dGVybjsKICAgICBtX2hhbmRsZSA9IDo6RmluZEZpcnN0RmlsZVcocGF0
aC53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgJm1fZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNDIyY2U5ZWVhMmZj
MTllZTA2ZDBjYzQzZTQyOWViOTAxNmNmZTM2MC4uMjRmYzVlNDU5NDVjNmY2YTVkZDM5NDI0NWIy
YjBiZWE5OGU1NjdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTQ1MywxMSArNDUzLDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
YWRkU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW4KICAgICBhdXRvIGlzTmV3RW50cnkgPSBtX3Nlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vycy5l
bnN1cmUoc2Vzc2lvbklELCBbZGVmYXVsdFF1b3RhLCBkZWZhdWx0VGhpcmRQYXJ0eVF1b3RhLCAm
Y2FjaGVSb290UGF0aF0gewogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTZXNzaW9uU3RvcmFn
ZVF1b3RhTWFuYWdlcj4oY2FjaGVSb290UGF0aCwgZGVmYXVsdFF1b3RhLCBkZWZhdWx0VGhpcmRQ
YXJ0eVF1b3RhKTsKICAgICB9KS5pc05ld0VudHJ5OwotICAgIGlmIChpc05ld0VudHJ5KSB7Cisg
ICAgaWYgKGlzTmV3RW50cnkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJt
YW5lbnRseShjYWNoZVJvb3RQYXRoSGFuZGxlKTsKLSAgICAgICAgaWYgKCFjYWNoZVJvb3RQYXRo
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHBvc3RTdG9yYWdlVGFzayhjcmVhdGVDcm9zc1RocmVh
ZFRhc2soKnRoaXMsICZOZXR3b3JrUHJvY2Vzczo6ZW5zdXJlUGF0aEV4aXN0cywgY2FjaGVSb290
UGF0aCkpOwotICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlU2Vzc2lvblN0
b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAK
aW5kZXggM2U4NWM4NzJhNDY3YjgxNWI3N2NhYmNiMDIzMmZlZTNhNjdlZTkzNy4uNzVhYTkwNWFi
NjhhYzllYWYxZDExOWIwMTc4NGZhNjE2MGEyOGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNp
ZiAhT1MoV0lORE9XUykKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtMzgsMjMgKzM5LDI2IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCisjaWYgIU9T
KFdJTkRPV1MpCiBEYXRhIERhdGE6Om1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0
CiB7Ci0gICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lz
dGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNjZXNzUGVybWlzc2lv
bjo6VXNlcik7Ci0gICAgaWYgKCFGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUoaGFuZGxlLCBtX3Np
emUpKSB7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOworICAgIGludCBm
ZCA9IG9wZW4oRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEo
KSwgT19DUkVBVCB8IE9fRVhDTCB8IE9fUkRXUiAsIFNfSVJVU1IgfCBTX0lXVVNSKTsKKyAgICBp
ZiAoZmQgPCAwKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKGZ0cnVuY2F0ZShmZCwg
bV9zaXplKSA8IDApIHsKKyAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KICAgICAKICAgICBGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0
aChwYXRoKTsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEgbWFwcGVkRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIHN1Y2Nlc3MpOwotICAgIGlmICghc3Vj
Y2VzcykgewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKworICAgIHZv
aWQqIG1hcCA9IG1tYXAobnVsbHB0ciwgbV9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBN
QVBfU0hBUkVELCBmZCwgMCk7CisgICAgaWYgKG1hcCA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAg
IGNsb3NlKGZkKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICB2b2lkKiBtYXAg
PSBjb25zdF9jYXN0PHZvaWQqPihtYXBwZWRGaWxlLmRhdGEoKSk7CiAgICAgdWludDhfdCogbWFw
RGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihtYXApOwogICAgIGFwcGx5KFsmbWFwRGF0YV0o
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBieXRlc1NpemUpIHsKICAgICAgICAgbWVtY3B5
KG1hcERhdGEsIGJ5dGVzLCBieXRlc1NpemUpOwpAQCAtNjIsNTIgKzY2LDg0IEBAIERhdGEgRGF0
YTo6bWFwVG9GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfSk7CiAKLSNpZiBPUyhXSU5ET1dTKQotICAgIERXT1JEIG9sZFByb3RlY3Rpb247
Ci0gICAgVmlydHVhbFByb3RlY3QobWFwLCBtX3NpemUsIEZJTEVfTUFQX1JFQUQsICZvbGRQcm90
ZWN0aW9uKTsKLSAgICBGbHVzaFZpZXdPZkZpbGUobWFwLCBtX3NpemUpOwotI2Vsc2UKICAgICAv
LyBEcm9wIHRoZSB3cml0ZSBwZXJtaXNzaW9uLgogICAgIG1wcm90ZWN0KG1hcCwgbV9zaXplLCBQ
Uk9UX1JFQUQpOwogCiAgICAgLy8gRmx1c2ggKGFzeW5jaHJvbm91c2x5KSB0byBmaWxlLCB0dXJu
aW5nIHRoaXMgaW50byBjbGVhbiBtZW1vcnkuCiAgICAgbXN5bmMobWFwLCBtX3NpemUsIE1TX0FT
WU5DKTsKLSNlbmRpZgogCi0gICAgcmV0dXJuIERhdGE6OmFkb3B0TWFwKFdURk1vdmUobWFwcGVk
RmlsZSksIGhhbmRsZSk7CisgICAgcmV0dXJuIERhdGE6OmFkb3B0TWFwKG1hcCwgbV9zaXplLCBm
ZCk7Cit9CisjZWxzZQorRGF0YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBj
b25zdAoreworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVT
eXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChmaWxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSwg
c2l6ZSgpKSA8IDApCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIERhdGEoVmVjdG9y
PHVpbnQ4X3Q+KG1fYnVmZmVyKSk7CiB9CisjZW5kaWYKIAorI2lmICFPUyhXSU5ET1dTKQogRGF0
YSBtYXBGaWxlKGNvbnN0IGNoYXIqIHBhdGgpCiB7Ci0gICAgYXV0byBmaWxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCisgICAgaW50IGZkID0gb3Blbihw
YXRoLCBPX1JET05MWSwgMCk7CisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICBsb25nIGxvbmcgc2l6ZTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZp
bGUsIHNpemUpKQorICAgIHN0cnVjdCBzdGF0IHN0YXQ7CisgICAgaWYgKGZzdGF0KGZkLCAmc3Rh
dCkgPCAwKSB7CisgICAgICAgIGNsb3NlKGZkKTsKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBy
ZXR1cm4gYWRvcHRBbmRNYXBGaWxlKGZpbGUsIDAsIHNpemUpOworICAgIH0KKyAgICBzaXplX3Qg
c2l6ZSA9IHN0YXQuc3Rfc2l6ZTsKKyAgICBpZiAoIXNpemUpIHsKKyAgICAgICAgY2xvc2UoZmQp
OworICAgICAgICByZXR1cm4gRGF0YTo6ZW1wdHkoKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWRv
cHRBbmRNYXBGaWxlKGZkLCAwLCBzaXplKTsKIH0KKyNlbmRpZgogCiBEYXRhIG1hcEZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogeworI2lmICFPUyhXSU5ET1dTKQogICAgIHJldHVybiBtYXBGaWxl
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOworI2Vs
c2UKKyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChmaWxlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBsb25nIGxvbmcgc2l6ZTsKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGUsIHNpemUpKQorICAgICAgICByZXR1cm4g
eyB9OworICAgIHJldHVybiBhZG9wdEFuZE1hcEZpbGUoZmlsZSwgMCwgc2l6ZSk7CisjZW5kaWYK
IH0KIAotRGF0YSBhZG9wdEFuZE1hcEZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCisjaWYgIU9TKFdJTkRPV1MpCitE
YXRhIGFkb3B0QW5kTWFwRmlsZShpbnQgZmQsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQog
ewogICAgIGlmICghc2l6ZSkgewotICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKKyAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICByZXR1cm4gRGF0YTo6ZW1wdHkoKTsKICAg
ICB9Ci0gICAgYm9vbCBzdWNjZXNzOwotICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1h
cHBlZEZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQsIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzdWNjZXNzKTsKLSAgICBpZiAoIXN1Y2Nlc3Mp
IHsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisKKyAgICB2b2lkKiBt
YXAgPSBtbWFwKG51bGxwdHIsIHNpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGZkLCBvZmZz
ZXQpOworICAgIGlmIChtYXAgPT0gTUFQX0ZBSUxFRCkgeworICAgICAgICBjbG9zZShmZCk7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgcmV0dXJuIERhdGE6OmFkb3B0TWFwKFdU
Rk1vdmUobWFwcGVkRmlsZSksIGhhbmRsZSk7CisgICAgcmV0dXJuIERhdGE6OmFkb3B0TWFwKG1h
cCwgc2l6ZSwgZmQpOwogfQorI2Vsc2UKK0RhdGEgYWRvcHRBbmRNYXBGaWxlKEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKK3sK
KyAgICByZXR1cm4gRGF0YShmaWxlLCBvZmZzZXQsIHNpemUpOworfQorI2VuZGlmCiAKIFNIQTE6
OkRpZ2VzdCBjb21wdXRlU0hBMShjb25zdCBEYXRhJiBkYXRhLCBjb25zdCBTYWx0JiBzYWx0KQog
ewpAQCAtMTQzLDI1ICsxNzksNDAgQEAgc3RhdGljIFNhbHQgbWFrZVNhbHQoKQogCiBPcHRpb25h
bDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgaWYgKGZp
bGVFeGlzdHMocGF0aCkpIHsKLSAgICAgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICAgICAgU2FsdCBz
YWx0OwotICAgICAgICBhdXRvIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShm
aWxlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihzYWx0LmRhdGEoKSksIHNhbHQuc2l6ZSgpKTsK
LSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwotICAgICAgICBpZiAoYnl0ZXNS
ZWFkICE9IHNhbHQuc2l6ZSgpKQorI2lmICFPUyhXSU5ET1dTKQorICAgIGF1dG8gY3BhdGggPSBG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBmZCA9
IG9wZW4oY3BhdGguZGF0YSgpLCBPX1JET05MWSwgMCk7CisgICAgU2FsdCBzYWx0OworICAgIGF1
dG8gYnl0ZXNSZWFkID0gcmVhZChmZCwgc2FsdC5kYXRhKCksIHNhbHQuc2l6ZSgpKTsKKyAgICBj
bG9zZShmZCk7CisgICAgaWYgKGJ5dGVzUmVhZCAhPSBzdGF0aWNfY2FzdDxzc2l6ZV90PihzYWx0
LnNpemUoKSkpIHsKKyAgICAgICAgc2FsdCA9IG1ha2VTYWx0KCk7CisKKyAgICAgICAgdW5saW5r
KGNwYXRoLmRhdGEoKSk7CisgICAgICAgIGZkID0gb3BlbihjcGF0aC5kYXRhKCksIE9fV1JPTkxZ
IHwgT19DUkVBVCB8IE9fVFJVTkMsIFNfSVJVU1IgfCBTX0lXVVNSKTsKKyAgICAgICAgYm9vbCBz
dWNjZXNzID0gd3JpdGUoZmQsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSkgPT0gc3RhdGljX2Nh
c3Q8c3NpemVfdD4oc2FsdC5zaXplKCkpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIGlm
ICghc3VjY2VzcykKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgcmV0dXJuIHNh
bHQ7CiAgICAgfQotCi0gICAgU2FsdCBzYWx0ID0gbWFrZVNhbHQoKTsKLSAgICBhdXRvIGZpbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6Oldy
aXRlLCBGaWxlU3lzdGVtOjpGaWxlQWNjZXNzUGVybWlzc2lvbjo6VXNlcik7Ci0gICAgYm9vbCBz
dWNjZXNzID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oc2FsdC5kYXRhKCkpLCBzYWx0LnNpemUoKSkgPT0gc2FsdC5zaXplKCk7CisgICAgcmV0
dXJuIHNhbHQ7CisjZWxzZQorICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBh
dGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgU2FsdCBzYWx0OworICAg
IGF1dG8gYnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgpKSwgc2FsdC5zaXplKCkpOwogICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlKTsKLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiB7
IH07CisgICAgaWYgKGJ5dGVzUmVhZCAhPSBzYWx0LnNpemUoKSkgeworICAgICAgICBzYWx0ID0g
bWFrZVNhbHQoKTsKIAorICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpOworICAg
ICAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIGJvb2wgc3VjY2VzcyA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNhbHQuZGF0YSgpKSwgc2FsdC5z
aXplKCkpID09IHNhbHQuc2l6ZSgpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmls
ZSk7CisgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAg
fQogICAgIHJldHVybiBzYWx0OworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZURhdGEuaAppbmRleCAzN2I1OTY2NTZhNWQxMzUyZDcyYzkzNmVlMTkzMWZkOTBmMjYx
OWViLi5kNzhkOThiNjE3NTBkNzkxN2JjOTgwNTNiZDllN2M5Y2FkYWI4NzQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEu
aApAQCAtMzksMTEgKzM5LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dSZWZQdHJTb3VwLmg+CiAj
ZW5kaWYKIAotI2lmIFVTRShDVVJMKQotI2luY2x1ZGUgPHd0Zi9Cb3guaD4KLSNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTaGFy
ZWRNZW1vcnk7CkBAIC01OCwxNiArNTMsMTkgQEAgcHVibGljOgogICAgIH5EYXRhKCkgeyB9CiAK
ICAgICBzdGF0aWMgRGF0YSBlbXB0eSgpOwotICAgIHN0YXRpYyBEYXRhIGFkb3B0TWFwKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSk7
CisjaWYgIU9TKFdJTkRPV1MpCisgICAgc3RhdGljIERhdGEgYWRvcHRNYXAodm9pZCogbWFwLCBz
aXplX3QsIGludCBmZCk7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVudW0g
Y2xhc3MgQmFja2luZyB7IEJ1ZmZlciwgTWFwIH07CiAgICAgRGF0YShPU09iamVjdFB0cjxkaXNw
YXRjaF9kYXRhX3Q+JiYsIEJhY2tpbmcgPSBCYWNraW5nOjpCdWZmZXIpOwogI2VuZGlmCiAjaWYg
VVNFKFNPVVApCi0gICAgRGF0YShHUmVmUHRyPFNvdXBCdWZmZXI+JiYsIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBmZCA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOwotI2VsaWYgVVNFKENVUkwpCi0gICAgRGF0YShWYXJpYW50PFZlY3Rvcjx1aW50OF90Piwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+JiYpOworICAgIERhdGEoR1JlZlB0cjxTb3VwQnVm
ZmVyPiYmLCBpbnQgZmQgPSAtMSk7CisjZWxpZiBPUyhXSU5ET1dTKQorICAgIGV4cGxpY2l0IERh
dGEoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIERhdGEoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOwogI2VuZGlmCiAgICAgYm9vbCBpc051bGwo
KSBjb25zdDsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9CkBA
IC05NiwxMCArOTQsMTAgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgIG11
dGFibGUgR1JlZlB0cjxTb3VwQnVmZmVyPiBtX2J1ZmZlcjsKLSAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgbV9maWxlRGVzY3JpcHRvciB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBpbnQgbV9maWxlRGVzY3JpcHRvciB7IC0xIH07CiAjZW5k
aWYKLSNpZiBVU0UoQ1VSTCkKLSAgICBCb3g8VmFyaWFudDxWZWN0b3I8dWludDhfdD4sIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhPj4gbV9idWZmZXI7CisjaWYgT1MoV0lORE9XUykKKyAgICBW
ZWN0b3I8dWludDhfdD4gbV9idWZmZXI7CiAjZW5kaWYKICAgICBtdXRhYmxlIGNvbnN0IHVpbnQ4
X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwpAQCAtMTA4
LDggKzEwNiwxNyBAQCBwcml2YXRlOgogCiBEYXRhIGNvbmNhdGVuYXRlKGNvbnN0IERhdGEmLCBj
b25zdCBEYXRhJik7CiBib29sIGJ5dGVzRXF1YWwoY29uc3QgRGF0YSYsIGNvbnN0IERhdGEmKTsK
KyNpZiAhT1MoV0lORE9XUykKK0RhdGEgYWRvcHRBbmRNYXBGaWxlKGludCwgc2l6ZV90IG9mZnNl
dCwgc2l6ZV90KTsKKyNlbHNlCiBEYXRhIGFkb3B0QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCk7CisjZW5kaWYKKyNpZiBVU0Uo
R0xJQikgJiYgIVBMQVRGT1JNKFdJTikKK0RhdGEgYWRvcHRBbmRNYXBGaWxlKEdGaWxlSU9TdHJl
YW0qLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOworI2VuZGlmCisjaWYgIU9TKFdJTkRPV1MpCiBE
YXRhIG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCk7CisjZW5kaWYKIERhdGEgbWFwRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpOwogCiB1c2luZyBTYWx0ID0gc3RkOjphcnJheTx1aW50OF90LCA4PjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhQ29jb2EubW0KaW5kZXggY2I0YWMzOGM2YTUyODI0NWQxNTFkYmFmNzE1YTVh
YTk1NWYyOWY3ZC4uNmEzOWY4ODcwMDg3OTQ0M2Q2NjlmM2IyOWEwM2IyOGVhYWY2NTIyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVE
YXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVEYXRhQ29jb2EubW0KQEAgLTkyLDEzICs5MiwxMSBAQCBEYXRhIGNvbmNhdGVuYXRl
KGNvbnN0IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCiAgICAgcmV0dXJuIHsgYWRvcHRPU09iamVj
dChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9jb25jYXQoYS5kaXNwYXRjaERhdGEoKSwgYi5kaXNwYXRj
aERhdGEoKSkpIH07CiB9CiAKLURhdGEgRGF0YTo6YWRvcHRNYXAoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBtYXBwZWRGaWxlLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQp
CitEYXRhIERhdGE6OmFkb3B0TWFwKHZvaWQqIG1hcCwgc2l6ZV90IHNpemUsIGludCBmZCkKIHsK
LSAgICBzaXplX3Qgc2l6ZSA9IG1hcHBlZEZpbGUuc2l6ZSgpOwotICAgIHZvaWQqIG1hcCA9IG1h
cHBlZEZpbGUubGVha0hhbmRsZSgpOwogICAgIEFTU0VSVChtYXApOwogICAgIEFTU0VSVChtYXAg
IT0gTUFQX0ZBSUxFRCk7Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZkKTsKKyAgICBjbG9z
ZShmZCk7CiAgICAgYXV0byBib2R5TWFwID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9kYXRhX2Ny
ZWF0ZShtYXAsIHNpemUsIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVf
UFJJT1JJVFlfREVGQVVMVCwgMCksIFttYXAsIHNpemVdIHsKICAgICAgICAgbXVubWFwKG1hcCwg
c2l6ZSk7CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAppbmRleCAxOTI0ODJiZjlmNDM0
ZGMxOTlkMzdhZDQxMTgyOTRhZTE5ZGM2NmNhLi5jZjQzMTU2YzVhMDNmYzMxZjU4NjVlNzMxNjI0
Yzg4MWY1ODBhYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcApAQCAtMzAsNDIgKzMwLDQwIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIERhdGE6OkRh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCi0gICAgOiBtX2J1ZmZlcihCb3g8
VmFyaWFudDxWZWN0b3I8dWludDhfdD4sIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPj46OmNy
ZWF0ZShWZWN0b3I8dWludDhfdD4oc2l6ZSkpKQotICAgICwgbV9zaXplKHNpemUpCiB7Ci0gICAg
bWVtY3B5KFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oKm1fYnVmZmVyKS5kYXRhKCksIGRhdGEs
IHNpemUpOworICAgIG1fYnVmZmVyLnJlc2l6ZShzaXplKTsKKyAgICBtX3NpemUgPSBzaXplOwor
ICAgIG1lbWNweShtX2J1ZmZlci5kYXRhKCksIGRhdGEsIHNpemUpOwogfQogCi1EYXRhOjpEYXRh
KFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4mJiBk
YXRhKQotICAgIDogbV9idWZmZXIoQm94PFZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YT4+OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkpCi0gICAgLCBtX2lz
TWFwKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KCpt
X2J1ZmZlcikpCitEYXRhOjpEYXRhKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBtX3NpemUgPSBXVEY6OnN3aXRj
aE9uKCptX2J1ZmZlciwKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIp
IC0+IHNpemVfdCB7IHJldHVybiBidWZmZXIuc2l6ZSgpOyB9LAotICAgICAgICBbXShjb25zdCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgbWFwcGVkRmlsZSkgLT4gc2l6ZV90IHsgcmV0dXJu
IG1hcHBlZEZpbGUuc2l6ZSgpOyB9Ci0gICAgKTsKKyAgICBtX2J1ZmZlci5yZXNpemUoc2l6ZSk7
CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBGaWxlU3lzdGVtOjpzZWVrRmlsZShmaWxlLCBvZmZz
ZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luOjpCZWdpbm5pbmcpOworICAgIEZpbGVTeXN0
ZW06OnJlYWRGcm9tRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2J1ZmZlci5k
YXRhKCkpLCBzaXplKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7Cit9CisKK0Rh
dGE6OkRhdGEoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQorICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKQoreworICAgIG1fc2l6ZSA9IG1fYnVmZmVyLnNpemUoKTsKIH0KIAogRGF0YSBE
YXRhOjplbXB0eSgpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICByZXR1cm4g
eyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAgICByZXR1cm4geyB9OwogfQogCiBjb25zdCB1aW50OF90
KiBEYXRhOjpkYXRhKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKCptX2J1ZmZlciwKLSAgICAg
ICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpIC0+IGNvbnN0IHVpbnQ4X3QqIHsg
cmV0dXJuIGJ1ZmZlci5kYXRhKCk7IH0sCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiBtYXBwZWRGaWxlKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obWFwcGVkRmlsZS5kYXRhKCkpOyB9Ci0gICAgKTsKKyAg
ICByZXR1cm4gbV9idWZmZXIuZGF0YSgpOwogfQogCiBib29sIERhdGE6OmlzTnVsbCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICFtX2J1ZmZlcjsKKyAgICByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgp
OwogfQogCiBib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhf
dCosIHNpemVfdCk+JiBhcHBsaWVyKSBjb25zdApAQCAtNzMsMzcgKzcxLDIxIEBAIGJvb2wgRGF0
YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFw
cGxpZXIpIGNvbnN0CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIGFwcGxpZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSgpKSwgc2l6ZSgpKTsKKyAgICByZXR1cm4gYXBwbGllcihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtX2J1ZmZlci5kYXRhKCkpLCBtX2J1ZmZlci5zaXplKCkpOwogfQogCiBEYXRh
IERhdGE6OnN1YnJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKSBjb25zdAogewotICAg
IGlmICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICByZXR1cm4geyBkYXRh
KCkgKyBvZmZzZXQsIHNpemUgfTsKKyAgICByZXR1cm4geyBtX2J1ZmZlci5kYXRhKCkgKyBvZmZz
ZXQsIHNpemUgfTsKIH0KIAogRGF0YSBjb25jYXRlbmF0ZShjb25zdCBEYXRhJiBhLCBjb25zdCBE
YXRhJiBiKQogewotICAgIGlmIChhLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gYjsKLSAgICBp
ZiAoYi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGE7Ci0KICAgICBWZWN0b3I8dWludDhfdD4g
YnVmZmVyKGEuc2l6ZSgpICsgYi5zaXplKCkpOwogICAgIG1lbWNweShidWZmZXIuZGF0YSgpLCBh
LmRhdGEoKSwgYS5zaXplKCkpOwogICAgIG1lbWNweShidWZmZXIuZGF0YSgpICsgYS5zaXplKCks
IGIuZGF0YSgpLCBiLnNpemUoKSk7CiAgICAgcmV0dXJuIERhdGEoV1RGTW92ZShidWZmZXIpKTsK
IH0KIAotRGF0YSBEYXRhOjphZG9wdE1hcChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1h
cHBlZEZpbGUsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCkKLXsKLSAgICBBU1NF
UlQobWFwcGVkRmlsZS5kYXRhKCkpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmZCk7Ci0K
LSAgICByZXR1cm4geyBXVEZNb3ZlKG1hcHBlZEZpbGUpIH07Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IE5ldHdvcmtDYWNoZQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3Bw
CmluZGV4IGQzYjc5ZTAxNGE3OWE3NDZmYzZmNTE3NDNmYmNiOGIyYTRjMDE3NGQuLjUxNWMwOWVi
YmZkMzM1NGZkOTUzM2NlZTFiZDg5MDE3M2JhYTFjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3Bw
CkBAIC00OCwxMSArNDgsMTEgQEAgRGF0YTo6RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkKICAgICBtX2J1ZmZlciA9IGFkb3B0R1JlZihzb3VwX2J1ZmZlcl9uZXdfd2l0aF9v
d25lcihjb3BpZWREYXRhLCBzaXplLCBjb3BpZWREYXRhLCBmYXN0RnJlZSkpOwogfQogCi1EYXRh
OjpEYXRhKEdSZWZQdHI8U291cEJ1ZmZlcj4mJiBidWZmZXIsIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSBmZCkKK0RhdGE6OkRhdGEoR1JlZlB0cjxTb3VwQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IGZkKQogICAgIDogbV9idWZmZXIoYnVmZmVyKQogICAgICwgbV9maWxlRGVzY3JpcHRvcihm
ZCkKICAgICAsIG1fc2l6ZShidWZmZXIgPyBidWZmZXItPmxlbmd0aCA6IDApCi0gICAgLCBtX2lz
TWFwKG1fc2l6ZSAmJiBGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZkKSkKKyAgICAsIG1faXNN
YXAobV9zaXplICYmIGZkICE9IC0xKQogewogfQogCkBAIC0xMDgsMTIgKzEwOCwxMiBAQCBzdHJ1
Y3QgTWFwV3JhcHBlciB7CiAgICAgfk1hcFdyYXBwZXIoKQogICAgIHsKICAgICAgICAgbXVubWFw
KG1hcCwgc2l6ZSk7Ci0gICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlRGVzY3JpcHRv
cik7CisgICAgICAgIGNsb3NlKGZpbGVEZXNjcmlwdG9yKTsKICAgICB9CiAKICAgICB2b2lkKiBt
YXA7CiAgICAgc2l6ZV90IHNpemU7Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGVEZXNjcmlwdG9yOworICAgIGludCBmaWxlRGVzY3JpcHRvcjsKIH07CiAKIHN0YXRpYyB2
b2lkIGRlbGV0ZU1hcFdyYXBwZXIoTWFwV3JhcHBlciogd3JhcHBlcikKQEAgLTEyMSwxMCArMTIx
LDggQEAgc3RhdGljIHZvaWQgZGVsZXRlTWFwV3JhcHBlcihNYXBXcmFwcGVyKiB3cmFwcGVyKQog
ICAgIGRlbGV0ZSB3cmFwcGVyOwogfQogCi1EYXRhIERhdGE6OmFkb3B0TWFwKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZSwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZkKQorRGF0YSBEYXRhOjphZG9wdE1hcCh2b2lkKiBtYXAsIHNpemVfdCBzaXplLCBpbnQg
ZmQpCiB7Ci0gICAgc2l6ZV90IHNpemUgPSBtYXBwZWRGaWxlLnNpemUoKTsKLSAgICB2b2lkKiBt
YXAgPSBtYXBwZWRGaWxlLmxlYWtIYW5kbGUoKTsKICAgICBBU1NFUlQobWFwKTsKICAgICBBU1NF
UlQobWFwICE9IE1BUF9GQUlMRUQpOwogICAgIE1hcFdyYXBwZXIqIHdyYXBwZXIgPSBuZXcgTWFw
V3JhcHBlciB7IG1hcCwgc2l6ZSwgZmQgfTsKQEAgLTEzMiwxNCArMTMwLDIxIEBAIERhdGEgRGF0
YTo6YWRvcHRNYXAoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlLCBGaWxl
U3lzdGVtOjpQbGF0Zm9yCiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpLCBmZCB9OwogfQog
CisjaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShXSU4pCitEYXRhIGFkb3B0QW5kTWFwRmlsZShH
RmlsZUlPU3RyZWFtKiBzdHJlYW0sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQoreworICAg
IEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFt
KEdfSU9fU1RSRUFNKHN0cmVhbSkpOworICAgIGludCBmZCA9IGdfZmlsZV9kZXNjcmlwdG9yX2Jh
c2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0cmVhbSkpOworICAgIHJl
dHVybiBhZG9wdEFuZE1hcEZpbGUoZmQsIG9mZnNldCwgc2l6ZSk7Cit9CisjZW5kaWYKKwogUmVm
UHRyPFNoYXJlZE1lbW9yeT4gRGF0YTo6dHJ5Q3JlYXRlU2hhcmVkTWVtb3J5KCkgY29uc3QKIHsK
ICAgICBpZiAoaXNOdWxsKCkgfHwgIWlzTWFwKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9z
dHJlYW0oR19JT19TVFJFQU0obV9maWxlRGVzY3JpcHRvcikpOwotICAgIGludCBmZCA9IGdfZmls
ZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNFRChpbnB1dFN0
cmVhbSkpOwotICAgIHJldHVybiBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDxjaGFy
Kj4obV9idWZmZXItPmRhdGEpLCBtX2J1ZmZlci0+bGVuZ3RoLCBmZCk7CisgICAgcmV0dXJuIFNo
YXJlZE1lbW9yeTo6d3JhcE1hcChjb25zdF9jYXN0PGNoYXIqPihtX2J1ZmZlci0+ZGF0YSksIG1f
YnVmZmVyLT5sZW5ndGgsIG1fZmlsZURlc2NyaXB0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBO
ZXR3b3JrQ2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDdhMGVjNWUxNGYzM2Rl
MDQyY2RmNDRiMGZiYTQyM2NjOWRkN2FmYzUuLmJlODQzNzFhODYzMDM4MDMwNWRjZjQ3M2E2NzI2
ZDEyYjkzOWQ5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcApAQCAtNTMsMTMgKzUzLDQ4
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCisjaWYg
IU9TKFdJTkRPV1MpCitzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVjdG9yeUVudHJ5VHlw
ZSh1aW50OF90IGR0eXBlKQoreworICAgIHN3aXRjaCAoZHR5cGUpIHsKKyAgICBjYXNlIERUX0RJ
UjoKKyAgICAgICAgcmV0dXJuIERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5OworICAgIGNh
c2UgRFRfUkVHOgorICAgICAgICByZXR1cm4gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
RGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlOworICAgIH0KKyAgICByZXR1cm4gRGlyZWN0b3J5RW50
cnlUeXBlOjpGaWxlOworfQorI2VuZGlmCisKIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBEaXJlY3Rv
cnlFbnRyeVR5cGUpPiYgZnVuY3Rpb24pCiB7Ci0gICAgYXV0byBlbnRyaWVzID0gRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiJfcyk7CisjaWYgIU9TKFdJTkRPV1MpCisgICAgRElS
KiBkaXIgPSBvcGVuZGlyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KS5kYXRhKCkpOworICAgIGlmICghZGlyKQorICAgICAgICByZXR1cm47CisgICAgZGlyZW50KiBk
cDsKKyAgICB3aGlsZSAoKGRwID0gcmVhZGRpcihkaXIpKSkgeworICAgICAgICBpZiAoZHAtPmRf
dHlwZSAhPSBEVF9ESVIgJiYgZHAtPmRfdHlwZSAhPSBEVF9SRUcpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IGRwLT5kX25hbWU7CisgICAgICAgIGlm
ICghc3RyY21wKG5hbWUsICIuIikgfHwgIXN0cmNtcChuYW1lLCAiLi4iKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBhdXRvIG5hbWVTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KG5h
bWUpOworICAgICAgICBpZiAobmFtZVN0cmluZy5pc051bGwoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBmdW5jdGlvbihuYW1lU3RyaW5nLCBkaXJlY3RvcnlFbnRyeVR5cGUoZHAt
PmRfdHlwZSkpOworICAgIH0KKyAgICBjbG9zZWRpcihkaXIpOworI2Vsc2UKKyAgICBhdXRvIGVu
dHJpZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgpOwogICAgIGZvciAoYXV0byYg
ZW50cnkgOiBlbnRyaWVzKSB7CiAgICAgICAgIGF1dG8gdHlwZSA9IEZpbGVTeXN0ZW06OmZpbGVJ
c0RpcmVjdG9yeShlbnRyeSwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6
Tm8pID8gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkgOiBEaXJlY3RvcnlFbnRyeVR5cGU6
OkZpbGU7Ci0gICAgICAgIGZ1bmN0aW9uKEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShlbnRy
eSksIHR5cGUpOworICAgICAgICBmdW5jdGlvbihlbnRyeSwgdHlwZSk7CiAgICAgfQorI2VuZGlm
CiB9CiAKIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRo
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDA5ZGUwM2E2ZjYxMjQ3NjY0MDQ4OTEyMjRmNDA4OTc1NjBiY2U0ZTUuLjEwNmNh
YTkwNTg5NmQ1NTg4NTFhZGI1NGE5NzlhNjUxZGRlNjI5NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMC0wMi0xNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NjYzMy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzgwNworCisgICAgICAgIDQlIG1l
bW9yeSByZWdyZXNzaW9uIGluIG5ldyBNZW1idXN0ZXIsIHBvc3NpYmx5IHNvbWUgbGVha2luZwor
ICAgICAgICBpbiBXZWJLaXQgTWFsbG9jPyAoUmVxdWVzdGVkIGJ5IHl1c3VrZXN1enVraSBvbiAj
d2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIltXaW5d
IEltcGxlbWVudCBOZXR3b3JrQ2FjaGU6OkRhdGEgYnkgdXNpbmcKKyAgICAgICAgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTc2ODQKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzI1NjYzMworCiAyMDIwLTAyLTE0ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIExheW91dCB0ZXN0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVu
dF90aW1ldXBkYXRlX25vYXV0b3BsYXkuaHRtbCBpcyBmbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMGJkZWU1NTRhOWM3ZmJkNWFl
MDgxMDAxM2QzYzY5YmMwMDk1MTE4MS4uNjg2YjdjOWQxNzVlNDJkYWUyMjZkNzdiMGNkMzlkY2Nh
OWEwZjM2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0
YXRpb25zCkBAIC0xMTYxLDIwICsxMTYxLDcgQEAgY3J5cHRvL3N1YnRsZS93cmFwLWtleS1tYWxm
b3JtZWQtcGFyYW1ldGVycy5odG1sIFsgU2tpcCBdCiAKIGh0dHAvdGVzdHMvYXBwY2FjaGUgWyBT
a2lwIF0KIGh0dHAvdGVzdHMvYmxpbmsvc2VuZGJlYWNvbiBbIFNraXAgXQotCi0jIG5lZWRzIG1v
cmUgaW52ZXN0aWdhdGlvbgotaHR0cC90ZXN0cy9jYWNoZS9jYW5jZWwtbXVsdGlwbGUtcG9zdC14
aHJzLmh0bWwgWyBGYWlsdXJlIF0KLQotIyBmYWlscyBiZWNhdXNlIG9mIGNvbnZlcnNpb24gdG8g
ZXBvY2ggYmVoYXZpb3Igc3BlY2lmaWMgdG8gTWFjCi1odHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2Fj
aGUvZGlzay1jYWNoZS1sYXN0LW1vZGlmaWVkLmh0bWwgWyBGYWlsdXJlIF0KLQotIyBuZWVkcyBt
b3JlIGludmVzdGlnYXRpb24KLWh0dHAvdGVzdHMvY2FjaGUvaWZyYW1lLTMwNC1jcmFzaC5odG1s
IFsgRmFpbHVyZSBdCi1odHRwL3Rlc3RzL2NhY2hlL25ldHdvcmstZXJyb3ItZHVyaW5nLXJldmFs
aWRhdGlvbi5odG1sIFsgRmFpbHVyZSBdCi1odHRwL3Rlc3RzL2NhY2hlL3BhcnRpdGlvbmVkLWNh
Y2hlLWlmcmFtZS5odG1sIFsgRmFpbHVyZSBdCi1odHRwL3Rlc3RzL2NhY2hlL3BhcnRpdGlvbmVk
LWNhY2hlLmh0bWwgWyBGYWlsdXJlIF0KLWh0dHAvdGVzdHMvY2FjaGUvd2lsbHNlbmRyZXF1ZXN0
LXJldHVybnMtbnVsbC1mb3ItbWVtb3J5LWNhY2hlLWxvYWQuaHRtbCBbIEZhaWx1cmUgXQotCito
dHRwL3Rlc3RzL2NhY2hlIFsgU2tpcCBdCiBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UgWyBTa2lw
IF0KIGh0dHAvdGVzdHMvY2FudmFzIFsgU2tpcCBdCiBodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3Np
dGlvbmF0dGFjaG1lbnRzYW5kYm94IFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390861</attachid>
            <date>2020-02-15 03:50:43 -0800</date>
            <delta_ts>2020-02-15 03:50:43 -0800</delta_ts>
            <desc>Potential fix</desc>
            <filename>mac-fix.diff</filename>
            <type>text/plain</type>
            <size>18429</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93
dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNzJmOTUzZWFiM2YuLjg0ODUyMWUyNzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg3LDE3ICsyODcsMTcgQEAgTWFwcGVkRmlsZURhdGE6On5NYXBw
ZWRGaWxlRGF0YSgpCiAgICAgdW5tYXBWaWV3T2ZGaWxlKG1fZmlsZURhdGEsIG1fZmlsZVNpemUp
OwogfQogCi0jaWYgSEFWRShNTUFQKQotCi1NYXBwZWRGaWxlRGF0YTo6TWFwcGVkRmlsZURhdGEo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgTWFwcGVkRmlsZU1vZGUgbW9kZSwgYm9vbCYgc3VjY2Vz
cykKK01hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBNYXBwZWRGaWxlTW9kZSBtYXBNb2RlLCBib29sJiBzdWNjZXNzKQogewotICAgIGF1dG8gZmQg
PSBvcGVuRmlsZShmaWxlUGF0aCwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGZkID0g
b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CiAKLSAg
ICBzdWNjZXNzID0gbWFwRmlsZUhhbmRsZShmZCwgbW9kZSk7CisgICAgc3VjY2VzcyA9IG1hcEZp
bGVIYW5kbGUoZmQsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCwgbWFwTW9kZSk7CiAg
ICAgY2xvc2VGaWxlKGZkKTsKIH0KIAotYm9vbCBNYXBwZWRGaWxlRGF0YTo6bWFwRmlsZUhhbmRs
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBtb2RlKQorI2lmIEhB
VkUoTU1BUCkKKworYm9vbCBNYXBwZWRGaWxlRGF0YTo6bWFwRmlsZUhhbmRsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBGaWxlT3Blbk1vZGUgb3Blbk1vZGUsIE1hcHBlZEZpbGVNb2RlIG1h
cE1vZGUpCiB7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTMyNCw3ICszMjQsMjQgQEAgYm9vbCBNYXBwZWRGaWxlRGF0YTo6bWFwRmls
ZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBtb2QKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdm9pZCogZGF0YSA9IG1tYXAoMCwgc2l6
ZSwgUFJPVF9SRUFELCBNQVBfRklMRSB8IChtb2RlID09IE1hcHBlZEZpbGVNb2RlOjpTaGFyZWQg
PyBNQVBfU0hBUkVEIDogTUFQX1BSSVZBVEUpLCBmZCwgMCk7CisgICAgaW50IHBhZ2VQcm90ZWN0
aW9uID0gUFJPVF9SRUFEOworICAgIHN3aXRjaCAob3Blbk1vZGUpIHsKKyAgICBjYXNlIEZpbGVP
cGVuTW9kZTo6UmVhZDoKKyAgICAgICAgcGFnZVByb3RlY3Rpb24gPSBQUk9UX1JFQUQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRmlsZU9wZW5Nb2RlOjpXcml0ZToKKyAgICAgICAgcGFnZVBy
b3RlY3Rpb24gPSBQUk9UX1dSSVRFOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbGVPcGVu
TW9kZTo6UmVhZFdyaXRlOgorICAgICAgICBwYWdlUHJvdGVjdGlvbiA9IFBST1RfUkVBRCB8IFBS
T1RfV1JJVEU7CisgICAgICAgIGJyZWFrOworI2lmIE9TKERBUldJTikKKyAgICBjYXNlIEZpbGVP
cGVuTW9kZTo6RXZlbnRzT25seToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKKyAgICB9CisKKyAgICB2b2lkKiBkYXRhID0gbW1hcCgwLCBzaXplLCBwYWdlUHJvdGVjdGlv
biwgTUFQX0ZJTEUgfCAobWFwTW9kZSA9PSBNYXBwZWRGaWxlTW9kZTo6U2hhcmVkID8gTUFQX1NI
QVJFRCA6IE1BUF9QUklWQVRFKSwgZmQsIDApOwogCiAgICAgaWYgKGRhdGEgPT0gTUFQX0ZBSUxF
RCkgewogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggODA1YTBlNGIx
NmYuLjc2NTg0ZGIzZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgK
KysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCkBAIC03OSwxMSArNzksMTcgQEAgY29u
c3QgUGxhdGZvcm1GaWxlSGFuZGxlIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgPSAtMTsKIGVu
dW0gY2xhc3MgRmlsZU9wZW5Nb2RlIHsKICAgICBSZWFkLAogICAgIFdyaXRlLAorICAgIFJlYWRX
cml0ZSwKICNpZiBPUyhEQVJXSU4pCiAgICAgRXZlbnRzT25seSwKICNlbmRpZgogfTsKIAorZW51
bSBjbGFzcyBGaWxlQWNjZXNzUGVybWlzc2lvbiA6IGJvb2wgeworICAgIFVzZXIsCisgICAgQWxs
Cit9OworCiBlbnVtIGNsYXNzIEZpbGVTZWVrT3JpZ2luIHsKICAgICBCZWdpbm5pbmcsCiAgICAg
Q3VycmVudCwKQEAgLTEzMSw3ICsxMzcsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRN
ZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgdXJsU3RyaQogYm9v
bCBjYW5FeGNsdWRlRnJvbUJhY2t1cCgpOyAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGZpbGUgY2Fu
IGV2ZXIgYmUgZXhjbHVkZWQgZnJvbSBiYWNrdXAuCiBib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNv
bnN0IFN0cmluZyYpOyAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bC4KIAotV1RGX0VYUE9S
VF9QUklWQVRFIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGZpbHRlciA9IFN0cmluZygpKTsKK1dURl9FWFBPUlRfUFJJVkFURSBW
ZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBmaWx0ZXIpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKik7CkBAIC0xNDAsNyArMTQ2LDcgQEAgaW5saW5lIGJv
b2wgaXNIYW5kbGVWYWxpZChjb25zdCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkgeyByZXR1
cm4gaGFuZGxlICE9IGkKIAogLy8gUHJlZml4IGlzIHdoYXQgdGhlIGZpbGVuYW1lIHNob3VsZCBi
ZSBwcmVmaXhlZCB3aXRoLCBub3QgdGhlIGZ1bGwgcGF0aC4KIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmls
ZUhhbmRsZSYpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUg
UGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5N
b2RlLCBGaWxlQWNjZXNzUGVybWlzc2lvbiA9IEZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpBbGwpOwog
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwog
Ly8gUmV0dXJucyB0aGUgcmVzdWx0aW5nIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGZpbGUgaWYgc3VjY2Vzc2Z1bCwgLTEgb3RoZXJ3aXNlLgogV1RGX0VYUE9SVF9QUklWQVRFIGxv
bmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZp
bGVTZWVrT3JpZ2luKTsKQEAgLTIwNiw2ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgTWFwcGVkRmls
ZURhdGEoTWFwcGVkRmlsZURhdGEmJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1hcHBlZEZp
bGVEYXRhKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIE1hcHBlZEZpbGVNb2RlLCBib29sJiBzdWNj
ZXNzKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWFwcGVkRmlsZURhdGEoUGxhdGZvcm1GaWxl
SGFuZGxlLCBNYXBwZWRGaWxlTW9kZSwgYm9vbCYgc3VjY2Vzcyk7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIE1hcHBlZEZpbGVEYXRhKFBsYXRmb3JtRmlsZUhhbmRsZSwgRmlsZU9wZW5Nb2RlLCBN
YXBwZWRGaWxlTW9kZSwgYm9vbCYgc3VjY2Vzcyk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5N
YXBwZWRGaWxlRGF0YSgpOwogICAgIE1hcHBlZEZpbGVEYXRhJiBvcGVyYXRvcj0oTWFwcGVkRmls
ZURhdGEmJik7CiAKQEAgLTIxNiwxNSArMjIzLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkKiBsZWFr
SGFuZGxlKCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX2ZpbGVEYXRhLCBudWxscHRyKTsgfQog
CiBwcml2YXRlOgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG1hcEZpbGVIYW5kbGUoUGxh
dGZvcm1GaWxlSGFuZGxlLCBNYXBwZWRGaWxlTW9kZSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgbWFwRmlsZUhhbmRsZShQbGF0Zm9ybUZpbGVIYW5kbGUsIEZpbGVPcGVuTW9kZSwgTWFw
cGVkRmlsZU1vZGUpOwogCiAgICAgdm9pZCogbV9maWxlRGF0YSB7IG51bGxwdHIgfTsKICAgICB1
bnNpZ25lZCBtX2ZpbGVTaXplIHsgMCB9OwogfTsKIAotaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpN
YXBwZWRGaWxlRGF0YShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBt
b2RlLCBib29sJiBzdWNjZXNzKQoraW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0
YShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBNYXBwZWRGaWxlTW9kZSBtYXBNb2RlLCBib29s
JiBzdWNjZXNzKQoreworICAgIHN1Y2Nlc3MgPSBtYXBGaWxlSGFuZGxlKGhhbmRsZSwgRmlsZU9w
ZW5Nb2RlOjpSZWFkLCBtYXBNb2RlKTsKK30KKworaW5saW5lIE1hcHBlZEZpbGVEYXRhOjpNYXBw
ZWRGaWxlRGF0YShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBGaWxlT3Blbk1vZGUgb3Blbk1v
ZGUsIE1hcHBlZEZpbGVNb2RlIG1hcE1vZGUsIGJvb2wmIHN1Y2Nlc3MpCiB7Ci0gICAgc3VjY2Vz
cyA9IG1hcEZpbGVIYW5kbGUoaGFuZGxlLCBtb2RlKTsKKyAgICBzdWNjZXNzID0gbWFwRmlsZUhh
bmRsZShoYW5kbGUsIG9wZW5Nb2RlLCBtYXBNb2RlKTsKIH0KIAogaW5saW5lIE1hcHBlZEZpbGVE
YXRhOjpNYXBwZWRGaWxlRGF0YShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggMjc4Mzk4ODNhMWEuLjgyMmE3MGY0Mjk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gdW5s
aW5rZWQ7CiB9CiAKLVBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIEZpbGVPcGVuTW9kZSBtb2RlKQorUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUsIEZpbGVBY2Nlc3NQZXJtaXNzaW9uIHBl
cm1pc3Npb24pCiB7CiAgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKIApAQCAtODcsMTYgKzg3LDMwIEBAIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogICAgICAgICByZXR1cm4g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIAogICAgIGludCBwbGF0Zm9ybUZsYWcgPSAwOwot
ICAgIGlmIChtb2RlID09IEZpbGVPcGVuTW9kZTo6UmVhZCkKKyAgICBzd2l0Y2ggKG1vZGUpIHsK
KyAgICBjYXNlIEZpbGVPcGVuTW9kZTo6UmVhZDoKICAgICAgICAgcGxhdGZvcm1GbGFnIHw9IE9f
UkRPTkxZOwotICAgIGVsc2UgaWYgKG1vZGUgPT0gRmlsZU9wZW5Nb2RlOjpXcml0ZSkKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGaWxlT3Blbk1vZGU6OldyaXRlOgogICAgICAgICBwbGF0Zm9y
bUZsYWcgfD0gKE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEZpbGVPcGVuTW9kZTo6UmVhZFdyaXRlOgorICAgICAgICBwbGF0Zm9ybUZsYWcg
fD0gKE9fUkRXUiB8IE9fQ1JFQVQgfCBPX0VYQ0wpOworICAgICAgICBicmVhazsKICNpZiBPUyhE
QVJXSU4pCi0gICAgZWxzZSBpZiAobW9kZSA9PSBGaWxlT3Blbk1vZGU6OkV2ZW50c09ubHkpCisg
ICAgY2FzZSBGaWxlT3Blbk1vZGU6OkV2ZW50c09ubHk6CiAgICAgICAgIHBsYXRmb3JtRmxhZyB8
PSBPX0VWVE9OTFk7CisgICAgICAgIGJyZWFrOwogI2VuZGlmCisgICAgfQorCisgICAgaW50IHBl
cm1pc3Npb25GbGFnID0gMDsKKyAgICBpZiAocGVybWlzc2lvbiA9PSBGaWxlQWNjZXNzUGVybWlz
c2lvbjo6VXNlcikKKyAgICAgICAgcGVybWlzc2lvbkZsYWcgfD0gKFNfSVJVU1IgfCBTX0lXVVNS
KTsKKyAgICBlbHNlIGlmIChwZXJtaXNzaW9uID09IEZpbGVBY2Nlc3NQZXJtaXNzaW9uOjpBbGwp
CisgICAgICAgIHBlcm1pc3Npb25GbGFnIHw9IChTX0lSVVNSIHwgU19JV1VTUiB8IFNfSVJHUlAg
fCBTX0lXR1JQIHwgU19JUk9USCB8IFNfSVdPVEgpOwogCi0gICAgcmV0dXJuIG9wZW4oZnNSZXAu
ZGF0YSgpLCBwbGF0Zm9ybUZsYWcsIDA2NjYpOworICAgIHJldHVybiBvcGVuKGZzUmVwLmRhdGEo
KSwgcGxhdGZvcm1GbGFnLCBwZXJtaXNzaW9uRmxhZyk7CiB9CiAKIHZvaWQgY2xvc2VGaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAyNGZjNWU0NTk0NS4uNDIyY2U5ZWVhMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBA
IC00NTMsOCArNDUzLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFNlc3Npb25TdG9yYWdl
UXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWluCiAgICAgYXV0byBpc05l
d0VudHJ5ID0gbV9zZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdlcnMuZW5zdXJlKHNlc3Npb25JRCwg
W2RlZmF1bHRRdW90YSwgZGVmYXVsdFRoaXJkUGFydHlRdW90YSwgJmNhY2hlUm9vdFBhdGhdIHsK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXI+KGNh
Y2hlUm9vdFBhdGgsIGRlZmF1bHRRdW90YSwgZGVmYXVsdFRoaXJkUGFydHlRdW90YSk7CiAgICAg
fSkuaXNOZXdFbnRyeTsKLSAgICBpZiAoaXNOZXdFbnRyeSkKKyAgICBpZiAoaXNOZXdFbnRyeSkg
ewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY2FjaGVSb290
UGF0aEhhbmRsZSk7CisgICAgICAgIGlmICghY2FjaGVSb290UGF0aC5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBwb3N0U3RvcmFnZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmTmV0
d29ya1Byb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMsIGNhY2hlUm9vdFBhdGgpKTsKKyAgICB9CiB9
CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZVNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2Vy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCmluZGV4IDc1YWE5MDVhYjY4
Li41YmFkZjQ5ZDk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNs
dWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
ci5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAKICNpZiAhT1MoV0lORE9XUykKICNp
bmNsdWRlIDxzeXMvbW1hbi5oPgpAQCAtMzksMjYgKzM4LDIzIEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi0jaWYgIU9TKFdJTkRPV1MpCiBEYXRhIERh
dGE6Om1hcFRvRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7Ci0gICAgaW50IGZkID0g
b3BlbihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCBP
X0NSRUFUIHwgT19FWENMIHwgT19SRFdSICwgU19JUlVTUiB8IFNfSVdVU1IpOwotICAgIGlmIChm
ZCA8IDApCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBpZiAoZnRydW5jYXRlKGZkLCBtX3Np
emUpIDwgMCkgewotICAgICAgICBjbG9zZShmZCk7CisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lz
dGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWRXcml0ZSwg
RmlsZVN5c3RlbTo6RmlsZUFjY2Vzc1Blcm1pc3Npb246OlVzZXIpOworICAgIGlmICghRmlsZVN5
c3RlbTo6dHJ1bmNhdGVGaWxlKGhhbmRsZSwgbV9zaXplKSkgeworICAgICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgCiAg
ICAgRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgocGF0aCk7Ci0KLSAg
ICB2b2lkKiBtYXAgPSBtbWFwKG51bGxwdHIsIG1fc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklU
RSwgTUFQX1NIQVJFRCwgZmQsIDApOwotICAgIGlmIChtYXAgPT0gTUFQX0ZBSUxFRCkgewotICAg
ICAgICBjbG9zZShmZCk7CisgICAgYm9vbCBzdWNjZXNzOworICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJl
YWRXcml0ZSwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgc3VjY2Vzcyk7Cisg
ICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAorICAgIHZvaWQqIG1hcCA9IGNvbnN0X2Nh
c3Q8dm9pZCo+KG1hcHBlZEZpbGUuZGF0YSgpKTsKICAgICB1aW50OF90KiBtYXBEYXRhID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KG1hcCk7CiAgICAgYXBwbHkoWyZtYXBEYXRhXShjb25zdCB1aW50
OF90KiBieXRlcywgc2l6ZV90IGJ5dGVzU2l6ZSkgewogICAgICAgICBtZW1jcHkobWFwRGF0YSwg
Ynl0ZXMsIGJ5dGVzU2l6ZSk7CkBAIC02Niw1MiArNjIsMjMgQEAgRGF0YSBEYXRhOjptYXBUb0Zp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
KTsKIAorI2lmIE9TKFdJTkRPV1MpCisgICAgRFdPUkQgb2xkUHJvdGVjdGlvbjsKKyAgICBWaXJ0
dWFsUHJvdGVjdChtYXAsIG1fc2l6ZSwgRklMRV9NQVBfUkVBRCwgJm9sZFByb3RlY3Rpb24pOwor
ICAgIEZsdXNoVmlld09mRmlsZShtYXAsIG1fc2l6ZSk7CisjZWxzZQogICAgIC8vIERyb3AgdGhl
IHdyaXRlIHBlcm1pc3Npb24uCiAgICAgbXByb3RlY3QobWFwLCBtX3NpemUsIFBST1RfUkVBRCk7
CiAKICAgICAvLyBGbHVzaCAoYXN5bmNocm9ub3VzbHkpIHRvIGZpbGUsIHR1cm5pbmcgdGhpcyBp
bnRvIGNsZWFuIG1lbW9yeS4KICAgICBtc3luYyhtYXAsIG1fc2l6ZSwgTVNfQVNZTkMpOwotCi0g
ICAgcmV0dXJuIERhdGE6OmFkb3B0TWFwKG1hcCwgbV9zaXplLCBmZCk7Ci19Ci0jZWxzZQotRGF0
YSBEYXRhOjptYXBUb0ZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdAotewotICAgIGF1dG8g
ZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9k
ZTo6V3JpdGUpOwotICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlKSkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICBpZiAoRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKSwgc2l6ZSgpKSA8IDApCi0gICAg
ICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIERhdGEoVmVjdG9yPHVpbnQ4X3Q+KG1fYnVmZmVy
KSk7Ci19CiAjZW5kaWYKIAotI2lmICFPUyhXSU5ET1dTKQotRGF0YSBtYXBGaWxlKGNvbnN0IGNo
YXIqIHBhdGgpCi17Ci0gICAgaW50IGZkID0gb3BlbihwYXRoLCBPX1JET05MWSwgMCk7Ci0gICAg
aWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0Owot
ICAgIGlmIChmc3RhdChmZCwgJnN0YXQpIDwgMCkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAg
ICAgIHJldHVybiB7IH07Ci0gICAgfQotICAgIHNpemVfdCBzaXplID0gc3RhdC5zdF9zaXplOwot
ICAgIGlmICghc2l6ZSkgewotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHJldHVybiBEYXRh
OjplbXB0eSgpOwotICAgIH0KLQotICAgIHJldHVybiBhZG9wdEFuZE1hcEZpbGUoZmQsIDAsIHNp
emUpOworICAgIHJldHVybiBEYXRhOjphZG9wdE1hcChXVEZNb3ZlKG1hcHBlZEZpbGUpLCBoYW5k
bGUpOwogfQotI2VuZGlmCiAKLURhdGEgbWFwRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCitEYXRh
IG1hcEZpbGUoY29uc3QgY2hhciogcGF0aCkKIHsKLSNpZiAhT1MoV0lORE9XUykKLSAgICByZXR1
cm4gbWFwRmlsZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpKTsKLSNlbHNlCiAgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIUZpbGVTeXN0ZW06Omlz
SGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMTksMzEgKzg2LDI4
IEBAIERhdGEgbWFwRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgaWYgKCFGaWxlU3lzdGVt
OjpnZXRGaWxlU2l6ZShmaWxlLCBzaXplKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1
cm4gYWRvcHRBbmRNYXBGaWxlKGZpbGUsIDAsIHNpemUpOwotI2VuZGlmCiB9CiAKLSNpZiAhT1Mo
V0lORE9XUykKLURhdGEgYWRvcHRBbmRNYXBGaWxlKGludCBmZCwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IHNpemUpCitEYXRhIG1hcEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVy
biBtYXBGaWxlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRh
KCkpOworfQorCitEYXRhIGFkb3B0QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIXNp
emUpIHsKLSAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKICAgICAgICAgcmV0dXJuIERhdGE6OmVtcHR5KCk7CiAgICAgfQotCi0gICAgdm9p
ZCogbWFwID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwg
b2Zmc2V0KTsKLSAgICBpZiAobWFwID09IE1BUF9GQUlMRUQpIHsKLSAgICAgICAgY2xvc2UoZmQp
OworICAgIGJvb2wgc3VjY2VzczsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBw
ZWRGaWxlKGhhbmRsZSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc3VjY2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKSB7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAotICAgIHJldHVybiBEYXRhOjphZG9wdE1hcChtYXAsIHNpemUsIGZkKTsK
KyAgICByZXR1cm4gRGF0YTo6YWRvcHRNYXAoV1RGTW92ZShtYXBwZWRGaWxlKSwgaGFuZGxlKTsK
IH0KLSNlbHNlCi1EYXRhIGFkb3B0QW5kTWFwRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCi17Ci0gICAgcmV0dXJuIERh
dGEoZmlsZSwgb2Zmc2V0LCBzaXplKTsKLX0KLSNlbmRpZgogCiBTSEExOjpEaWdlc3QgY29tcHV0
ZVNIQTEoY29uc3QgRGF0YSYgZGF0YSwgY29uc3QgU2FsdCYgc2FsdCkKIHsKQEAgLTE3OSw0MCAr
MTQzLDI1IEBAIHN0YXRpYyBTYWx0IG1ha2VTYWx0KCkKIAogT3B0aW9uYWw8U2FsdD4gcmVhZE9y
TWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQogewotI2lmICFPUyhXSU5ET1dTKQotICAgIGF1
dG8gY3BhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Ci0g
ICAgYXV0byBmZCA9IG9wZW4oY3BhdGguZGF0YSgpLCBPX1JET05MWSwgMCk7Ci0gICAgU2FsdCBz
YWx0OwotICAgIGF1dG8gYnl0ZXNSZWFkID0gcmVhZChmZCwgc2FsdC5kYXRhKCksIHNhbHQuc2l6
ZSgpKTsKLSAgICBjbG9zZShmZCk7Ci0gICAgaWYgKGJ5dGVzUmVhZCAhPSBzdGF0aWNfY2FzdDxz
c2l6ZV90PihzYWx0LnNpemUoKSkpIHsKLSAgICAgICAgc2FsdCA9IG1ha2VTYWx0KCk7Ci0KLSAg
ICAgICAgdW5saW5rKGNwYXRoLmRhdGEoKSk7Ci0gICAgICAgIGZkID0gb3BlbihjcGF0aC5kYXRh
KCksIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMsIFNfSVJVU1IgfCBTX0lXVVNSKTsKLSAg
ICAgICAgYm9vbCBzdWNjZXNzID0gd3JpdGUoZmQsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSkg
PT0gc3RhdGljX2Nhc3Q8c3NpemVfdD4oc2FsdC5zaXplKCkpOwotICAgICAgICBjbG9zZShmZCk7
Ci0gICAgICAgIGlmICghc3VjY2VzcykKKyAgICBpZiAoZmlsZUV4aXN0cyhwYXRoKSkgeworICAg
ICAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpG
aWxlT3Blbk1vZGU6OlJlYWQpOworICAgICAgICBTYWx0IHNhbHQ7CisgICAgICAgIGF1dG8gYnl0
ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHNhbHQuZGF0YSgpKSwgc2FsdC5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoZmlsZSk7CisgICAgICAgIGlmIChieXRlc1JlYWQgIT0gc2FsdC5zaXplKCkpCiAg
ICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHJldHVybiBzYWx0OwogICAgIH0KLSAg
ICByZXR1cm4gc2FsdDsKLSNlbHNlCi0gICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKLSAgICBTYWx0IHNhbHQ7
Ci0gICAgYXV0byBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoZmlsZSwgcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oc2FsdC5kYXRhKCkpLCBzYWx0LnNpemUoKSk7CisKKyAgICBT
YWx0IHNhbHQgPSBtYWtlU2FsdCgpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUsIEZpbGVTeXN0ZW06OkZp
bGVBY2Nlc3NQZXJtaXNzaW9uOjpVc2VyKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihzYWx0LmRhdGEoKSks
IHNhbHQuc2l6ZSgpKSA9PSBzYWx0LnNpemUoKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZSk7Ci0gICAgaWYgKGJ5dGVzUmVhZCAhPSBzYWx0LnNpemUoKSkgewotICAgICAgICBzYWx0
ID0gbWFrZVNhbHQoKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKLSAgICAgICAgZmlsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUp
OwotICAgICAgICBib29sIHN1Y2Nlc3MgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihzYWx0LmRhdGEoKSksIHNhbHQuc2l6ZSgpKSA9PSBzYWx0
LnNpemUoKTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwotICAgICAgICBp
ZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgIH0KICAgICByZXR1cm4g
c2FsdDsKLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgK
aW5kZXggZDc4ZDk4YjYxNzUuLmMxNGE5Y2YwN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaApAQCAtNTMsOSArNTMs
NyBAQCBwdWJsaWM6CiAgICAgfkRhdGEoKSB7IH0KIAogICAgIHN0YXRpYyBEYXRhIGVtcHR5KCk7
Ci0jaWYgIU9TKFdJTkRPV1MpCi0gICAgc3RhdGljIERhdGEgYWRvcHRNYXAodm9pZCogbWFwLCBz
aXplX3QsIGludCBmZCk7Ci0jZW5kaWYKKyAgICBzdGF0aWMgRGF0YSBhZG9wdE1hcChGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUpOwog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW51bSBjbGFzcyBCYWNraW5nIHsgQnVmZmVyLCBN
YXAgfTsKQEAgLTEwNiwxNyArMTA0LDggQEAgcHJpdmF0ZToKIAogRGF0YSBjb25jYXRlbmF0ZShj
b25zdCBEYXRhJiwgY29uc3QgRGF0YSYpOwogYm9vbCBieXRlc0VxdWFsKGNvbnN0IERhdGEmLCBj
b25zdCBEYXRhJik7Ci0jaWYgIU9TKFdJTkRPV1MpCi1EYXRhIGFkb3B0QW5kTWFwRmlsZShpbnQs
IHNpemVfdCBvZmZzZXQsIHNpemVfdCk7Ci0jZWxzZQogRGF0YSBhZG9wdEFuZE1hcEZpbGUoRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOwotI2Vu
ZGlmCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShXSU4pCi1EYXRhIGFkb3B0QW5kTWFwRmls
ZShHRmlsZUlPU3RyZWFtKiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90KTsKLSNlbmRpZgotI2lmICFP
UyhXSU5ET1dTKQogRGF0YSBtYXBGaWxlKGNvbnN0IGNoYXIqIHBhdGgpOwotI2VuZGlmCiBEYXRh
IG1hcEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogdXNpbmcgU2FsdCA9IHN0ZDo6YXJyYXk8
dWludDhfdCwgOD47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUNvY29hLm1tCmluZGV4IDZhMzlmODg3MDA4Li5jYjRh
YzM4YzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0KQEAgLTkyLDExICs5MiwxMyBAQCBEYXRh
IGNvbmNhdGVuYXRlKGNvbnN0IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCiAgICAgcmV0dXJuIHsg
YWRvcHRPU09iamVjdChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9jb25jYXQoYS5kaXNwYXRjaERhdGEo
KSwgYi5kaXNwYXRjaERhdGEoKSkpIH07CiB9CiAKLURhdGEgRGF0YTo6YWRvcHRNYXAodm9pZCog
bWFwLCBzaXplX3Qgc2l6ZSwgaW50IGZkKQorRGF0YSBEYXRhOjphZG9wdE1hcChGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGUsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmZCkKIHsKKyAgICBzaXplX3Qgc2l6ZSA9IG1hcHBlZEZpbGUuc2l6ZSgpOworICAgIHZv
aWQqIG1hcCA9IG1hcHBlZEZpbGUubGVha0hhbmRsZSgpOwogICAgIEFTU0VSVChtYXApOwogICAg
IEFTU0VSVChtYXAgIT0gTUFQX0ZBSUxFRCk7Ci0gICAgY2xvc2UoZmQpOworICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmZCk7CiAgICAgYXV0byBib2R5TWFwID0gYWRvcHRPU09iamVjdChkaXNw
YXRjaF9kYXRhX2NyZWF0ZShtYXAsIHNpemUsIGRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElT
UEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCksIFttYXAsIHNpemVdIHsKICAgICAgICAg
bXVubWFwKG1hcCwgc2l6ZSk7CiAgICAgfSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5k
ZXggYmU4NDM3MWE4NjMuLjdhMGVjNWUxNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAK
QEAgLTUzLDQ4ICs1MywxMyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlIHsKIAotI2lmICFPUyhXSU5ET1dTKQotc3RhdGljIERpcmVjdG9yeUVudHJ5VHlwZSBk
aXJlY3RvcnlFbnRyeVR5cGUodWludDhfdCBkdHlwZSkKLXsKLSAgICBzd2l0Y2ggKGR0eXBlKSB7
Ci0gICAgY2FzZSBEVF9ESVI6Ci0gICAgICAgIHJldHVybiBEaXJlY3RvcnlFbnRyeVR5cGU6OkRp
cmVjdG9yeTsKLSAgICBjYXNlIERUX1JFRzoKLSAgICAgICAgcmV0dXJuIERpcmVjdG9yeUVudHJ5
VHlwZTo6RmlsZTsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZTsKLSAgICB9Ci0gICAgcmV0
dXJuIERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZTsKLX0KLSNlbmRpZgotCiB2b2lkIHRyYXZlcnNl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3Qg
U3RyaW5nJiwgRGlyZWN0b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewotI2lmICFPUyhXSU5E
T1dTKQotICAgIERJUiogZGlyID0gb3BlbmRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKLSAgICBpZiAoIWRpcikKLSAgICAgICAgcmV0dXJuOwot
ICAgIGRpcmVudCogZHA7Ci0gICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlyKSkpIHsKLSAgICAg
ICAgaWYgKGRwLT5kX3R5cGUgIT0gRFRfRElSICYmIGRwLT5kX3R5cGUgIT0gRFRfUkVHKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBkcC0+ZF9uYW1l
OwotICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCAiLiIpIHx8ICFzdHJjbXAobmFtZSwgIi4uIikp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYXV0byBuYW1lU3RyaW5nID0gU3RyaW5n
Ojpmcm9tVVRGOChuYW1lKTsKLSAgICAgICAgaWYgKG5hbWVTdHJpbmcuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZnVuY3Rpb24obmFtZVN0cmluZywgZGlyZWN0b3J5
RW50cnlUeXBlKGRwLT5kX3R5cGUpKTsKLSAgICB9Ci0gICAgY2xvc2VkaXIoZGlyKTsKLSNlbHNl
Ci0gICAgYXV0byBlbnRyaWVzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoKTsKKyAg
ICBhdXRvIGVudHJpZXMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIl9zKTsK
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykgewogICAgICAgICBhdXRvIHR5cGUgPSBG
aWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoZW50cnksIEZpbGVTeXN0ZW06OlNob3VsZEZvbGxv
d1N5bWJvbGljTGlua3M6Ok5vKSA/IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5IDogRGly
ZWN0b3J5RW50cnlUeXBlOjpGaWxlOwotICAgICAgICBmdW5jdGlvbihlbnRyeSwgdHlwZSk7Cisg
ICAgICAgIGZ1bmN0aW9uKEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShlbnRyeSksIHR5cGUp
OwogICAgIH0KLSNlbmRpZgogfQogCiB2b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNv
bnN0IFN0cmluZyYgcGF0aCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>