<?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>160200</bug_id>
          
          <creation_ts>2016-07-26 10:12:09 -0700</creation_ts>
          <short_desc>REGRESSION(r203719): It is breaking win build (Requested by youenn on #webkit).</short_desc>
          <delta_ts>2016-07-26 10:14:52 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159804</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>achristensen</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1214571</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 10:12:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/203719 broke the build:
It is breaking win build (Requested by youenn on #webkit).

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

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>1214575</commentid>
    <comment_count>2</comment_count>
      <attachid>284600</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 10:14:49 -0700</bug_when>
    <thetext>Comment on attachment 284600
ROLLOUT of r203719

Clearing flags on attachment: 284600

Committed r203726: &lt;http://trac.webkit.org/changeset/203726&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214576</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 10:14:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284600</attachid>
            <date>2016-07-26 10:12:46 -0700</date>
            <delta_ts>2016-07-26 10:14:49 -0700</delta_ts>
            <desc>ROLLOUT of r203719</desc>
            <filename>bug-160200-20160726101137.patch</filename>
            <type>text/plain</type>
            <size>52851</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAzNzUxY2RmZDg0YTEz
NTE0OWEzNDg3OGEwYmIwZDA1NTE4MGM2Zi4uZjA0MTI1YWY4OTlhY2NlYTNjZTIzZDdmZWI5MDk1
MWI1ZmYxZmE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA3LTI2ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjAzNzE5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYwMjAwCisKKyAgICAgICAgSXQgaXMgYnJlYWtpbmcgd2luIGJ1aWxk
IChSZXF1ZXN0ZWQgYnkgeW91ZW5uIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldDoKKworICAgICAgICAiW0ZldGNoIEFQSV0gUmVzcG9uc2UgY29uc3RydWN0b3Igc2hv
dWxkIGJlIGFibGUgdG8gdGFrZSBhCisgICAgICAgIFJlYWRhYmxlU3RyZWFtIGFzIGJvZHkiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4MDQKKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjAzNzE5CisKIDIwMTYtMDct
MjYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCBz
dXBwb3J0aW5nIGNvbXByZXNzZWQgY2hhcmFjdGVyIHNldHMgQk9DVS0xIGFuZCBTQ1NVCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IGVlYTUwZDJjMzU2ZTNkZmZmOWMxOWJlNTg3NWVkNDY1YTllZDA2
NzUuLjZkYzExM2Y4YTJjNjAyZTNmNTAxMzMxMzczNmVjYWEzNjZiZTU3ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC04MTgsNyArODE4LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAg
TW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5jcHAKICAgICBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHAKLSAgICBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAogICAgIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaEhl
YWRlcnMuY3BwCiAgICAgTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBlMGY1YWUxODAzNWFhYWZjNzk0
Yjc3YjBkZDdkNmEyMTYwNTUwZmQ5Li44YzQ3OWQ1ZjhlMDYyNTAyZDk1NzBjOGI5YjU4NWJjZjBk
YjQ0ZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBA
IC0zOSwxMSArMzksMTIgQEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkpT
QmxvYi5oIgogI2luY2x1ZGUgIkpTRE9NRm9ybURhdGEuaCIKLSNpbmNsdWRlICJKU1JlYWRhYmxl
U3RyZWFtLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdGF0aWMgUmVmPEJsb2I+IGJsb2JGcm9tQXJyYXlCdWZmZXIoQXJyYXlC
dWZmZXIqLCBjb25zdCBTdHJpbmcmKTsKKwogRmV0Y2hCb2R5OjpGZXRjaEJvZHkoUmVmPEJsb2I+
JiYgYmxvYikKICAgICA6IG1fdHlwZShUeXBlOjpCbG9iKQogICAgICwgbV9taW1lVHlwZShibG9i
LT50eXBlKCkpCkBAIC03NCw4ICs3NSw2IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3Qo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVy
biBGZXRjaEJvZHkoKkpTRE9NRm9ybURhdGE6OnRvV3JhcHBlZCh2YWx1ZSkpOwogICAgIGlmICh2
YWx1ZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KHZhbHVlLnRvV1RGU3Ry
aW5nKCZzdGF0ZSkpOwotICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU1JlYWRhYmxlU3RyZWFtOjpp
bmZvKCkpKQotICAgICAgICByZXR1cm4geyBUeXBlOjpSZWFkYWJsZVN0cmVhbSB9OwogICAgIHJl
dHVybiB7IH07CiB9CiAKQEAgLTkwLDE2ICs4OSwxMyBAQCBGZXRjaEJvZHkgRmV0Y2hCb2R5Ojpl
eHRyYWN0RnJvbUJvZHkoRmV0Y2hCb2R5KiBib2R5KQogdm9pZCBGZXRjaEJvZHk6OmFycmF5QnVm
ZmVyKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsK
ICAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOwotICAgIG1fY29uc3VtZXIuc2V0VHlw
ZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpOwotICAgIGNvbnN1bWUob3du
ZXIsIFdURk1vdmUocHJvbWlzZSkpOworICAgIGNvbnN1bWUob3duZXIsIENvbnN1bWVyOjpUeXBl
OjpBcnJheUJ1ZmZlciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Ojpi
bG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsK
ICAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOwotICAgIG1fY29uc3VtZXIuc2V0VHlw
ZShGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QmxvYik7Ci0gICAgbV9jb25zdW1lci5zZXRDb250
ZW50VHlwZShCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1l
ZGlhVHlwZShtX21pbWVUeXBlKSkpOwotICAgIGNvbnN1bWUob3duZXIsIFdURk1vdmUocHJvbWlz
ZSkpOworICAgIGNvbnN1bWUob3duZXIsIENvbnN1bWVyOjpUeXBlOjpCbG9iLCBXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHk6Ompzb24oRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQpAQCAtMTEwLDggKzEwNiw3IEBAIHZvaWQgRmV0
Y2hCb2R5Ojpqc29uKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJv
bWlzZSkKICAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNPTihwcm9taXNlLCBtX3RleHQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fY29uc3VtZXIuc2V0VHlwZShGZXRjaEJvZHlD
b25zdW1lcjo6VHlwZTo6SlNPTik7Ci0gICAgY29uc3VtZShvd25lciwgV1RGTW92ZShwcm9taXNl
KSk7CisgICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkpTT04sIFdURk1vdmUocHJv
bWlzZSkpOwogfQogCiB2b2lkIEZldGNoQm9keTo6dGV4dChGZXRjaEJvZHlPd25lciYgb3duZXIs
IERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCkBAIC0xMjIsOTUgKzExNywxMTMgQEAgdm9pZCBG
ZXRjaEJvZHk6OnRleHQoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBw
cm9taXNlKQogICAgICAgICBwcm9taXNlLnJlc29sdmUobV90ZXh0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBtX2NvbnN1bWVyLnNldFR5cGUoRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6
OlRleHQpOwotICAgIGNvbnN1bWUob3duZXIsIFdURk1vdmUocHJvbWlzZSkpOworICAgIGNvbnN1
bWUob3duZXIsIENvbnN1bWVyOjpUeXBlOjpUZXh0LCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAot
dm9pZCBGZXRjaEJvZHk6OmNvbnN1bWUoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdy
YXBwZXImJiBwcm9taXNlKQordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWUoRmV0Y2hCb2R5T3duZXIm
IG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQog
ewotICAgIC8vIFRoaXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgRmV0Y2hCb2R5T3duZXIKLSAgICBB
U1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOwotICAgIC8vIFRoaXMgc2hvdWxkIGJlIGhhbmRs
ZWQgYnkgSlMgYnVpbHQtaW5zCi0gICAgQVNTRVJUKG1fdHlwZSAhPSBUeXBlOjpSZWFkYWJsZVN0
cmVhbSk7Ci0KLSAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgVHlwZTo6QXJyYXlCdWZm
ZXI6Ci0gICAgICAgIGNvbnN1bWVBcnJheUJ1ZmZlcihwcm9taXNlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgVHlwZTo6VGV4dDoKLSAgICAgICAgY29uc3VtZVRleHQocHJvbWlzZSk7Cisg
ICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpBcnJheUJ1ZmZlcikgeworICAgICAgICBjb25zdW1lQXJy
YXlCdWZmZXIodHlwZSwgcHJvbWlzZSk7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIFR5cGU6
OkJsb2I6Ci0gICAgICAgIGNvbnN1bWVCbG9iKG93bmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAg
ICB9CisgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpUZXh0KSB7CisgICAgICAgIGNvbnN1bWVUZXh0
KHR5cGUsIHByb21pc2UpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBUeXBlOjpMb2FkaW5n
OgotICAgICAgICBtX2NvbnN1bWVQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKyAgICB9Cisg
ICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpCbG9iKSB7CisgICAgICAgIGNvbnN1bWVCbG9iKG93bmVy
LCB0eXBlLCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVHlw
ZTo6TG9hZGVkOgotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmUocHJvbWlzZSk7CisgICAgfQor
ICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6TG9hZGluZykgeworICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBsb2FkaW5nIHR5cGUgdG8gdGV4dCBpZiBjb25z
dW1lciB0eXBlIGlzIEpTT04gb3IgVGV4dC4KKyAgICAgICAgbV9jb25zdW1lciA9IENvbnN1bWVy
KHt0eXBlLCBXVEZNb3ZlKHByb21pc2UpfSk7CiAgICAgICAgIHJldHVybjsKLSAgICBkZWZhdWx0
OgotICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICAgICAgcHJvbWlz
ZS5yZWplY3QoMCk7CiAgICAgfQorCisgICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMu
CisgICAgcHJvbWlzZS5yZWplY3QoMCk7CiB9CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiB2
b2lkIEZldGNoQm9keTo6Y29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiBvd25lciwgRmV0
Y2hSZXNwb25zZVNvdXJjZSYgc291cmNlKQogewotICAgIC8vIFRoaXMgc2hvdWxkIGJlIGhhbmRs
ZWQgYnkgRmV0Y2hSZXNwb25zZQogICAgIEFTU0VSVChtX3R5cGUgIT0gVHlwZTo6TG9hZGluZyk7
Ci0gICAgLy8gVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBKUyBidWlsdC1pbnMKLSAgICBBU1NF
UlQobV90eXBlICE9IFR5cGU6OlJlYWRhYmxlU3RyZWFtKTsKIAotICAgIGJvb2wgY2xvc2VTdHJl
YW0gPSBmYWxzZTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6QXJyYXlC
dWZmZXI6CiAgICAgICAgIEFTU0VSVChtX2RhdGEpOwotICAgICAgICBjbG9zZVN0cmVhbSA9IHNv
dXJjZS5lbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPihtX2RhdGEpKTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChzb3VyY2UuZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4obV9kYXRhKSkpCisgICAgICAgICAgICBzb3VyY2UuY2xvc2UoKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgVHlwZTo6VGV4dDogewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9
IGV4dHJhY3RGcm9tVGV4dCgpOwotICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVl
KEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICBpZiAoc291cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKSkKKyAgICAgICAgICAgIHNvdXJjZS5jbG9z
ZSgpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgVHlwZTo6QmxvYjoKICAgICAg
ICAgQVNTRVJUKG1fYmxvYik7Ci0gICAgICAgIG93bmVyLmxvYWRCbG9iKCptX2Jsb2IsIG51bGxw
dHIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgRmV0
Y2hMb2FkZXI6OlR5cGU6OlN0cmVhbSk7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIFR5cGU6
Ok5vbmU6Ci0gICAgICAgIGNsb3NlU3RyZWFtID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBUeXBlOjpMb2FkZWQ6IHsKLSAgICAgICAgY2xvc2VTdHJlYW0gPSBzb3VyY2UuZW5xdWV1
ZShtX2NvbnN1bWVyLnRha2VBc0FycmF5QnVmZmVyKCkpOwotICAgICAgICBicmVhazsKLSAgICB9
CisgICAgICAgIHNvdXJjZS5jbG9zZSgpOworICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgc291cmNlLmVycm9yKEFTQ0lJTGl0ZXJhbCgibm90IGltcGxlbWVudGVkIikpOwog
ICAgIH0KLQotICAgIGlmIChjbG9zZVN0cmVhbSkKLSAgICAgICAgc291cmNlLmNsb3NlKCk7CiB9
CiAjZW5kaWYKIAotdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVBcnJheUJ1ZmZlcihEZWZlcnJlZFdy
YXBwZXImIHByb21pc2UpCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZUFycmF5QnVmZmVyKENvbnN1
bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKIHsKLSAgICBtX2NvbnN1
bWVyLnJlc29sdmVXaXRoRGF0YShwcm9taXNlLCBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
bV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgaWYgKHR5cGUgPT0g
Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKSB7CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0
aEFycmF5QnVmZmVyKHByb21pc2UsIG1fZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IpIHsKKyAgICAgICAgcHJv
bWlzZS5yZXNvbHZlKGJsb2JGcm9tQXJyYXlCdWZmZXIobV9kYXRhLmdldCgpLCBCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBl
KSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCh0eXBlID09IENvbnN1
bWVyOjpUeXBlOjpUZXh0IHx8IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkpTT04pOworICAgIC8v
IEZJWE1FOiBEbyB3ZSBuZWVkIFRleHRSZXNvdXJjZURlY29kZXIgdG8gY3JlYXRlIGEgU3RyaW5n
IHRvIGRlY29kZSBVVEYtOCBkYXRhLgorICAgIGZ1bGZpbGxUZXh0UHJvbWlzZSh0eXBlLCBUZXh0
UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIiksICJVVEYt
OCIpLT5kZWNvZGVBbmRGbHVzaChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9kYXRhLT5kYXRh
KCkpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSksIHByb21pc2UpOwogfQogCi12b2lkIEZldGNoQm9k
eTo6Y29uc3VtZVRleHQoRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlKQordm9pZCBGZXRjaEJvZHk6
OmNvbnN1bWVUZXh0KENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYgcHJvbWlz
ZSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IGV4dHJhY3RGcm9tVGV4dCgpOwotICAg
IG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKHByb21pc2UsIGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CisgICAgQVNTRVJUKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyIHx8
IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IpOworCisgICAgaWYgKHR5cGUgPT0gQ29uc3Vt
ZXI6OlR5cGU6OkFycmF5QnVmZmVyKSB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0g
ZXh0cmFjdEZyb21UZXh0KCk7CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVy
KHByb21pc2UsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBl
KGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkpOworICAgIHByb21pc2Uu
cmVzb2x2ZShCbG9iOjpjcmVhdGUoZXh0cmFjdEZyb21UZXh0KCksIGNvbnRlbnRUeXBlKSk7CiB9
CiAKLXZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIERl
ZmVycmVkV3JhcHBlciYmIHByb21pc2UpCitGZXRjaExvYWRlcjo6VHlwZSBGZXRjaEJvZHk6Omxv
YWRpbmdUeXBlKENvbnN1bWVyOjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6SlNPTjoKKyAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpU
ZXh0OgorICAgICAgICByZXR1cm4gRmV0Y2hMb2FkZXI6OlR5cGU6OlRleHQ7CisgICAgY2FzZSBD
b25zdW1lcjo6VHlwZTo6QmxvYjoKKyAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZl
cjoKKyAgICAgICAgcmV0dXJuIEZldGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlcjsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEZl
dGNoTG9hZGVyOjpUeXBlOjpBcnJheUJ1ZmZlcjsKKyAgICB9OworfQorCit2b2lkIEZldGNoQm9k
eTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBl
LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewogICAgIEFTU0VSVChtX2Jsb2IpOwogCi0g
ICAgbV9jb25zdW1lUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7Ci0gICAgb3duZXIubG9hZEJs
b2IoKm1fYmxvYiwgJm1fY29uc3VtZXIpOworICAgIG1fY29uc3VtZXIgPSBDb25zdW1lcih7dHlw
ZSwgV1RGTW92ZShwcm9taXNlKX0pOworICAgIG93bmVyLmxvYWRCbG9iKCptX2Jsb2IsIGxvYWRp
bmdUeXBlKHR5cGUpKTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IEZldGNoQm9keTo6ZXh0cmFjdEZy
b21UZXh0KCkgY29uc3QKQEAgLTIyMywyMSArMjM2LDYzIEBAIFZlY3Rvcjx1aW50OF90PiBGZXRj
aEJvZHk6OmV4dHJhY3RGcm9tVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitz
dGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbUFycmF5QnVmZmVyKEFycmF5QnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit7CisgICAgaWYgKCFidWZmZXIpCisg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+KCksIGNvbnRlbnRUeXBl
KTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIG1vdmUgYnVmZmVyIHRvIEJsb2Ig
d2l0aG91dCBkb2luZyB0aGlzIGNvcHkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlKGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoV1RGTW92
ZSh2YWx1ZSksIGNvbnRlbnRUeXBlKTsKK30KKwordm9pZCBGZXRjaEJvZHk6OmZ1bGZpbGxUZXh0
UHJvbWlzZShGZXRjaEJvZHk6OkNvbnN1bWVyOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dCwgRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlKQoreworICAgIEFTU0VSVCh0eXBlID09IENvbnN1
bWVyOjpUeXBlOjpUZXh0IHx8IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkpTT04pOworICAgIGlm
ICh0eXBlID09IEZldGNoQm9keTo6Q29uc3VtZXI6OlR5cGU6OlRleHQpCisgICAgICAgIHByb21p
c2UucmVzb2x2ZSh0ZXh0KTsKKyAgICBlbHNlCisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEpT
T04ocHJvbWlzZSwgdGV4dCk7Cit9CisKIHZvaWQgRmV0Y2hCb2R5Ojpsb2FkaW5nRmFpbGVkKCkK
IHsKLSAgICBpZiAobV9jb25zdW1lUHJvbWlzZSkgewotICAgICAgICBtX2NvbnN1bWVQcm9taXNl
LT5yZWplY3QoMCk7Ci0gICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBOdWxsb3B0OwotICAgIH0K
KyAgICBBU1NFUlQobV9jb25zdW1lcik7CisgICAgbV9jb25zdW1lci0+cHJvbWlzZS5yZWplY3Qo
MCk7CisgICAgbV9jb25zdW1lciA9IE51bGxvcHQ7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpsb2Fk
aW5nU3VjY2VlZGVkKCkKK3ZvaWQgRmV0Y2hCb2R5Ojpsb2FkZWRBc0FycmF5QnVmZmVyKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgbV90eXBlID0gbV9jb25zdW1lci5oYXNE
YXRhKCkgPyBUeXBlOjpMb2FkZWQgOiBUeXBlOjpOb25lOwotICAgIGlmIChtX2NvbnN1bWVQcm9t
aXNlKSB7Ci0gICAgICAgIG1fY29uc3VtZXIucmVzb2x2ZSgqbV9jb25zdW1lUHJvbWlzZSk7Ci0g
ICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBOdWxsb3B0OworICAgIGlmIChtX3R5cGUgPT0gVHlw
ZTo6TG9hZGluZykgeworICAgICAgICBtX3R5cGUgPSBUeXBlOjpBcnJheUJ1ZmZlcjsKKyAgICAg
ICAgbV9kYXRhID0gYnVmZmVyOworICAgICAgICBpZiAobV9jb25zdW1lcikgeworICAgICAgICAg
ICAgY29uc3VtZUFycmF5QnVmZmVyKG1fY29uc3VtZXItPnR5cGUsIG1fY29uc3VtZXItPnByb21p
c2UpOworICAgICAgICAgICAgbV9jb25zdW1lciA9IE51bGxvcHQ7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKKyAgICBBU1NFUlQo
bV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QmxvYiB8fCBtX2NvbnN1bWVyLT50
eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcik7CisgICAgaWYgKG1fY29uc3VtZXIt
PnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKQorICAgICAgICBmdWxmaWxsUHJv
bWlzZVdpdGhBcnJheUJ1ZmZlcihtX2NvbnN1bWVyLT5wcm9taXNlLCBidWZmZXIuZ2V0KCkpOwor
ICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobV9ibG9iKTsKKyAgICAgICAgbV9jb25zdW1lci0+
cHJvbWlzZS5yZXNvbHZlKGJsb2JGcm9tQXJyYXlCdWZmZXIoYnVmZmVyLmdldCgpLCBtX2Jsb2It
PnR5cGUoKSkpOwogICAgIH0KKyAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKK30KKwordm9pZCBG
ZXRjaEJvZHk6OmxvYWRlZEFzVGV4dChTdHJpbmcmJiB0ZXh0KQoreworICAgIEFTU0VSVChtX2Nv
bnN1bWVyKTsKKyAgICBBU1NFUlQobV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6
VGV4dCB8fCBtX2NvbnN1bWVyLT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpKU09OKTsKKworICAg
IGZ1bGZpbGxUZXh0UHJvbWlzZShtX2NvbnN1bWVyLT50eXBlLCB0ZXh0LCBtX2NvbnN1bWVyLT5w
cm9taXNlKTsKKyAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKIH0KIAogUmVmUHRyPEZvcm1EYXRh
PiBGZXRjaEJvZHk6OmJvZHlGb3JJbnRlcm5hbFJlcXVlc3QoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggNjJkOWU1YTc4N2Q1ODMzMGI2NjRmOGFj
NTZlZjI0NTMyY2VmNmRjNS4uNTZmM2RmZGM4NTcxYzMxNTExMmYyNjY1YzZmZmRhOTc1YTlkZjM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC0zMyw3ICsz
Myw2IEBACiAKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKLSNp
bmNsdWRlICJGZXRjaEJvZHlDb25zdW1lci5oIgogI2luY2x1ZGUgIkZldGNoTG9hZGVyLmgiCiAj
aW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAKQEAgLTcxLDI3ICs3MCwzNSBAQCBwdWJsaWM6CiAg
ICAgRmV0Y2hCb2R5KCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBsb2FkaW5nRmFpbGVkKCk7Ci0g
ICAgdm9pZCBsb2FkaW5nU3VjY2VlZGVkKCk7CisgICAgdm9pZCBsb2FkZWRBc0FycmF5QnVmZmVy
KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7CisgICAgdm9pZCBsb2FkZWRBc1RleHQoU3RyaW5nJiYp
OwogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5Rm9ySW50ZXJuYWxSZXF1ZXN0KCkgY29uc3Q7
CiAKLSAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBBcnJheUJ1ZmZlciwgQmxvYiwgRm9ybURh
dGEsIFRleHQsIExvYWRpbmcsIExvYWRlZCwgUmVhZGFibGVTdHJlYW0gfTsKKyAgICBlbnVtIGNs
YXNzIFR5cGUgeyBOb25lLCBBcnJheUJ1ZmZlciwgTG9hZGluZywgVGV4dCwgQmxvYiwgRm9ybURh
dGEgfTsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotICAgIEZl
dGNoQm9keUNvbnN1bWVyJiBjb25zdW1lcigpIHsgcmV0dXJuIG1fY29uc3VtZXI7IH0KLQogcHJp
dmF0ZToKICAgICBGZXRjaEJvZHkoUmVmPEJsb2I+JiYpOwogICAgIEZldGNoQm9keShSZWY8RE9N
Rm9ybURhdGE+JiYpOwogICAgIEZldGNoQm9keShTdHJpbmcmJik7CiAgICAgRmV0Y2hCb2R5KFR5
cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGNvbnN1bWUoRmV0Y2hCb2R5
T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CisgICAgc3RydWN0IENvbnN1bWVyIHsKKyAgICAg
ICAgZW51bSBjbGFzcyBUeXBlIHsgVGV4dCwgQmxvYiwgSlNPTiwgQXJyYXlCdWZmZXIgfTsKKwor
ICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIERlZmVycmVkV3JhcHBlciBwcm9taXNlOworICAg
IH07CisgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERl
ZmVycmVkV3JhcHBlciYmKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RnJvbVRleHQo
KSBjb25zdDsKLSAgICB2b2lkIGNvbnN1bWVBcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBwZXImKTsK
LSAgICB2b2lkIGNvbnN1bWVUZXh0KERlZmVycmVkV3JhcHBlciYpOwotICAgIHZvaWQgY29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CisgICAgdm9pZCBjb25z
dW1lQXJyYXlCdWZmZXIoQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZv
aWQgY29uc3VtZVRleHQoQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZv
aWQgY29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImLCBDb25zdW1lcjo6VHlwZSwgRGVmZXJyZWRX
cmFwcGVyJiYpOworICAgIHN0YXRpYyBGZXRjaExvYWRlcjo6VHlwZSBsb2FkaW5nVHlwZShDb25z
dW1lcjo6VHlwZSk7CisgICAgc3RhdGljIHZvaWQgZnVsZmlsbFRleHRQcm9taXNlKEZldGNoQm9k
eTo6Q29uc3VtZXI6OlR5cGUsIGNvbnN0IFN0cmluZyYsIERlZmVycmVkV3JhcHBlciYpOworICAg
IHN0YXRpYyB2b2lkIGZ1bGZpbGxBcnJheUJ1ZmZlclByb21pc2UoRmV0Y2hCb2R5OjpDb25zdW1l
cjo6VHlwZSwgY29uc3QgU3RyaW5nJiwgRGVmZXJyZWRXcmFwcGVyJik7CiAKICAgICBUeXBlIG1f
dHlwZSB7IFR5cGU6Ok5vbmUgfTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKQEAgLTEwMiw4ICsx
MDksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0
cmluZyBtX3RleHQ7CiAKLSAgICBGZXRjaEJvZHlDb25zdW1lciBtX2NvbnN1bWVyIHsgRmV0Y2hC
b2R5Q29uc3VtZXI6OlR5cGU6Ok5vbmUgfTsKLSAgICBPcHRpb25hbDxEZWZlcnJlZFdyYXBwZXI+
IG1fY29uc3VtZVByb21pc2U7CisgICAgT3B0aW9uYWw8Q29uc3VtZXI+IG1fY29uc3VtZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkOTMyNTFiZjk0Y2QzNDI3ZjY3OWZkNjJlYWRlNGU4YmEwMDIzNDY3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
Ci0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmV0Y2hCb2R5Q29uc3VtZXIuaCIKLQotI2lmIEVOQUJM
RShGRVRDSF9BUEkpCi0KLSNpbmNsdWRlICJKU0Jsb2IuaCIKLSNpbmNsdWRlICJKU0RPTVByb21p
c2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBi
bG9iRnJvbURhdGEoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQotewotICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShs
ZW5ndGgpOwotICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGRhdGEsIGxlbmd0aCk7Ci0gICAgcmV0
dXJuIEJsb2I6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSwgY29udGVudFR5cGUpOwotfQotCi12b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlV2l0aERhdGEoRGVmZXJyZWRXcmFwcGVyJiBwcm9t
aXNlLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAg
c3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFR5cGU6OkFycmF5QnVmZmVyOgotICAgICAgICBm
dWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihwcm9taXNlLCBkYXRhLCBsZW5ndGgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBUeXBlOjpCbG9iOgotICAgICAgICBwcm9taXNlLnJlc29s
dmVXaXRoTmV3bHlDcmVhdGVkKGJsb2JGcm9tRGF0YShkYXRhLCBsZW5ndGgsIG1fY29udGVudFR5
cGUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgVHlwZTo6SlNPTjoKLSAgICAgICAgZnVs
ZmlsbFByb21pc2VXaXRoSlNPTihwcm9taXNlLCBTdHJpbmcoZGF0YSwgbGVuZ3RoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIFR5cGU6OlRleHQ6Ci0gICAgICAgIHByb21pc2UucmVzb2x2
ZShTdHJpbmcoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFR5cGU6
Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotfQotCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKERlZmVycmVkV3JhcHBl
ciYgcHJvbWlzZSkKLXsKLSAgICBBU1NFUlQobV90eXBlICE9IFR5cGU6Ok5vbmUpOwotICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBUeXBlOjpBcnJheUJ1ZmZlcjoKLSAgICAgICAgZnVs
ZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZSwgdGFrZUFzQXJyYXlCdWZmZXIoKS5n
ZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFR5cGU6OkJsb2I6Ci0gICAgICAgIHBy
b21pc2UucmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQodGFrZUFzQmxvYigpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgVHlwZTo6SlNPTjoKLSAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoSlNP
Tihwcm9taXNlLCB0YWtlQXNUZXh0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBUeXBl
OjpUZXh0OgotICAgICAgICBwcm9taXNlLnJlc29sdmUodGFrZUFzVGV4dCgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgVHlwZTo6Tm9uZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLXZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgaWYgKCFt
X2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChk
YXRhLCBsZW5ndGgpOwotfQotCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIGFwcGVuZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKLX0KLQotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKLXsKLSAgICByZXR1cm4g
V1RGTW92ZShtX2J1ZmZlcik7Ci19Ci0KLVJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQotewotICAgIGlmICghbV9idWZmZXIpCi0g
ICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOwotCi0gICAg
YXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT5jcmVhdGVBcnJheUJ1ZmZlcigpOwotICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7Ci19Ci0KLVJlZjxCbG9i
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYigpCi17Ci0gICAgQVNTRVJUKG1fYnVmZmVy
KTsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKCk7Ci0K
LSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBtb3ZlIG1fYnVmZmVyIHRvIEJsb2Igd2l0
aG91dCBkb2luZyBleHRyYSBjb3B5LgotICAgIHJldHVybiBibG9iRnJvbURhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9idWZmZXItPmRhdGEoKSksIG1fYnVmZmVy
LT5zaXplKCksIG1fY29udGVudFR5cGUpOwotfQotCi1TdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc1RleHQoKQotewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLQotICAgIGF1dG8gdGV4dCA9IFN0cmluZyhtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHRleHQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShGRVRDSF9BUEkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYTFmZTdkMjhhYzdhNmNhZTMyYWVjNzQ0
NDVkOTgwODEzNDRiM2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWly
ZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgot
ICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEZFVENIX0FQSSkKLQot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEJsb2I7Ci1jbGFzcyBEZWZlcnJlZFdyYXBwZXI7Ci0KLWNsYXNzIEZldGNoQm9keUNvbnN1bWVy
IHsKLXB1YmxpYzoKLSAgICAvLyBUeXBlIGlzIHVzZWQgaW4gRmV0Y2hSZXNwb25zZS5qcyBhbmQg
c2hvdWxkIGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggaXQuCi0gICAgZW51bSBjbGFzcyBUeXBl
IHsgTm9uZSwgQXJyYXlCdWZmZXIsIEJsb2IsIEpTT04sIFRleHQgfTsKLQotICAgIEZldGNoQm9k
eUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9Ci0KLSAgICB2b2lkIGFwcGVu
ZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdW5z
aWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQpOwotCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
dGFrZURhdGEoKTsKLSAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZm
ZXIoKTsKLSAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYigpOwotICAgIFN0cmluZyB0YWtlQXNUZXh0
KCk7Ci0KLSAgICB2b2lkIHNldENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
IHsgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlOyB9Ci0gICAgdm9pZCBzZXRUeXBlKFR5cGUg
dHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9Ci0KLSAgICB2b2lkIGNsZWFuKCkgeyBtX2J1ZmZlciA9
IG51bGxwdHI7IH0KLQotICAgIHZvaWQgcmVzb2x2ZShEZWZlcnJlZFdyYXBwZXImKTsKLSAgICB2
b2lkIHJlc29sdmVXaXRoRGF0YShEZWZlcnJlZFdyYXBwZXImLCBjb25zdCB1bnNpZ25lZCBjaGFy
KiwgdW5zaWduZWQpOwotCi0gICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1
ZmZlcjsgfQotCi1wcml2YXRlOgotICAgIFR5cGUgbV90eXBlOwotICAgIFN0cmluZyBtX2NvbnRl
bnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggOTY0YmU3
NzExMDRkYTY3MTk3ZDNkNTA0YzY5ODgxNDE4Y2M4NTY4OS4uMGY0NTc5NGEwNjllMmVlNjA4YjE4
Mzc4ZTNkZjFmNGJjZTczNTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEZldGNoQm9keU93
bmVyOjp0ZXh0KERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiAgICAgbV9ib2R5LnRleHQoKnRo
aXMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxv
YihCbG9iJiBibG9iLCBGZXRjaEJvZHlDb25zdW1lciogY29uc3VtZXIpCit2b2lkIEZldGNoQm9k
eU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRlcjo6VHlwZSB0eXBlKQogewog
ICAgIC8vIENhbiBvbmx5IGJlIGNhbGxlZCBvbmNlIGZvciBhIGJvZHkgaW5zdGFuY2UuCiAgICAg
QVNTRVJUKGlzRGlzdHVyYmVkKCkpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRmV0Y2hCb2R5
T3duZXI6OmxvYWRCbG9iKEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikK
ICAgICB9CiAKICAgICBtX2Jsb2JMb2FkZXIgPSB7ICp0aGlzIH07Ci0gICAgbV9ibG9iTG9hZGVy
LT5sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPigqbV9ibG9iTG9hZGVyLCBj
b25zdW1lcik7CisgICAgbV9ibG9iTG9hZGVyLT5sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZl
dGNoTG9hZGVyPih0eXBlLCAqbV9ibG9iTG9hZGVyKTsKIAogICAgIG1fYmxvYkxvYWRlci0+bG9h
ZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1f
YmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQoKSkgewpAQCAtMTY5LDYgKzE2OSwxMSBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjpmaW5pc2hCbG9iTG9hZGluZygpCiAgICAgdW5zZXRQZW5kaW5n
QWN0aXZpdHkodGhpcyk7CiB9CiAKK3ZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1Rl
eHQoU3RyaW5nJiYgdGV4dCkKK3sKKyAgICBtX2JvZHkubG9hZGVkQXNUZXh0KFdURk1vdmUodGV4
dCkpOworfQorCiB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ1N1Y2NlZWRlZCgpCiB7
CiAgICAgQVNTRVJUKG1fYm9keS50eXBlKCkgPT0gRmV0Y2hCb2R5OjpUeXBlOjpCbG9iKTsKQEAg
LTE3OSw3ICsxODQsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ1N1Y2NlZWRl
ZCgpCiAgICAgICAgIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwogICAgIH0KICNl
bmRpZgotICAgIG1fYm9keS5sb2FkaW5nU3VjY2VlZGVkKCk7CisKICAgICBmaW5pc2hCbG9iTG9h
ZGluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmgKaW5kZXggODdiNzJmMGE0OTlmOTMzNmE0MGZhNDg2MzNhMTg5MDkyMjNiMWQ5Ni4uMDZh
MjEyNjY1YzM5ZmMzOTA3ZDM4ZTEzZjRjYzEzM2NjODcyYzdiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBqc29uKERlZmVycmVkV3JhcHBlciYmKTsKICAgICB2b2lkIHRleHQoRGVm
ZXJyZWRXcmFwcGVyJiYpOwogCi0gICAgdm9pZCBsb2FkQmxvYihCbG9iJiwgRmV0Y2hCb2R5Q29u
c3VtZXIqKTsKKyAgICB2b2lkIGxvYWRCbG9iKEJsb2ImLCBGZXRjaExvYWRlcjo6VHlwZSk7CiAK
ICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2Jsb2JMb2FkZXI7IH0KIApA
QCAtNjcsNiArNjcsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgLy8gQmxvYiBsb2Fk
aW5nIHJvdXRpbmVzCisgICAgdm9pZCBsb2FkZWRCbG9iQXNUZXh0KFN0cmluZyYmKTsKKyAgICB2
b2lkIGxvYWRlZEJsb2JBc0FycmF5QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIp
IHsgbV9ib2R5LmxvYWRlZEFzQXJyYXlCdWZmZXIoV1RGTW92ZShidWZmZXIpKTsgfQogICAgIHZv
aWQgYmxvYkNodW5rKGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdT
dWNjZWVkZWQoKTsKICAgICB2b2lkIGJsb2JMb2FkaW5nRmFpbGVkKCk7CkBAIC03Niw2ICs3OCw4
IEBAIHByaXZhdGU6CiAgICAgICAgIEJsb2JMb2FkZXIoRmV0Y2hCb2R5T3duZXImKTsKIAogICAg
ICAgICAvLyBGZXRjaExvYWRlckNsaWVudCBBUEkKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nQXNUZXh0KFN0cmluZyYmIHRleHQpIGZpbmFsIHsgb3duZXIubG9hZGVkQmxvYkFzVGV4dChX
VEZNb3ZlKHRleHQpKTsgfQorICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVm
ZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsIHsgb3duZXIubG9hZGVkQmxv
YkFzQXJyYXlCdWZmZXIoV1RGTW92ZShidWZmZXIpKTsgfQogICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIGZpbmFsIHsgb3du
ZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbCgpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFs
cy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMKaW5k
ZXggZDc1MDA0ZTJmODA4NWIxNWM3MTAwNzAwMTViZWRkMWI1YWJiMjJjNi4uNDUyZWM3NjM1MzVh
ODA5ZWE4ZDgyOThlMDY5MzVlZTViMzA3NmU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzCkBAIC01MSwyNyArNTEsMyBAQCBmdW5jdGlvbiBm
aWxsRmV0Y2hIZWFkZXJzKGhlYWRlcnMsIGhlYWRlcnNJbml0KQogICAgICAgICBASGVhZGVycy5w
cm90b3R5cGUuQGFwcGVuZEZyb21KUy5AY2FsbChoZWFkZXJzLCBuYW1lLCBoZWFkZXJzSW5pdFtu
YW1lXSk7CiAgICAgfQogfQotCi1mdW5jdGlvbiBjb25zdW1lU3RyZWFtKHJlc3BvbnNlLCB0eXBl
KQotewotICAgIEBhc3NlcnQocmVzcG9uc2UgaW5zdGFuY2VvZiBAUmVzcG9uc2UpOwotICAgIEBh
c3NlcnQocmVzcG9uc2UuQGJvZHkgaW5zdGFuY2VvZiBAUmVhZGFibGVTdHJlYW0pOwotCi0gICAg
aWYgKEBpc1JlYWRhYmxlU3RyZWFtRGlzdHVyYmVkKHJlc3BvbnNlLkBib2R5KSkKLSAgICAgICAg
cmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIkNhbm5vdCBjb25zdW1lIGEg
ZGlzdHVyYmVkIFJlc3BvbnNlIGJvZHkgUmVhZGFibGVTdHJlYW0iKSk7Ci0KLSAgICB0cnkgewot
ICAgICAgICBsZXQgcmVhZGVyID0gbmV3IEBSZWFkYWJsZVN0cmVhbVJlYWRlcihyZXNwb25zZS5A
Ym9keSk7Ci0KLSAgICAgICAgQFJlc3BvbnNlLnByb3RvdHlwZS5Ac3RhcnRDb25zdW1pbmdTdHJl
YW0uQGNhbGwocmVzcG9uc2UsIHR5cGUpOwotICAgICAgICBsZXQgcHVsbCA9IChyZXN1bHQpID0+
IHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuZG9uZSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
QFJlc3BvbnNlLnByb3RvdHlwZS5AZmluaXNoQ29uc3VtaW5nU3RyZWFtLkBjYWxsKHJlc3BvbnNl
KTsKLSAgICAgICAgICAgIEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWVDaHVuay5AY2FsbChy
ZXNwb25zZSwgcmVzdWx0LnZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5wcm90
b3R5cGUuQHRoZW4uQGNhbGwoQHJlYWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXIocmVhZGVyKSwg
cHVsbCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnByb3RvdHlwZS5AdGhl
bi5AY2FsbChAcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpLCBwdWxsKTsKLSAg
ICB9IGNhdGNoKGUpIHsKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZSk7Ci0gICAg
fQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRl
eCBlNjNiYzFiMmQzM2MzMmQyMWU0OWY5OWE1NzIyNjQ3MzAxNTI2MmVhLi4xYjIzZjA0OWU2N2I0
NjcxYzFlMTZhNjg5ZTFkYjJiNDRhZDEzZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoTG9hZGVyLmNwcApAQCAtODksMjYgKzg5LDI0IEBAIHZvaWQgRmV0Y2hMb2Fk
ZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVx
dWVzdCYgcmVxCiAgICAgbV9pc1N0YXJ0ZWQgPSBtX2xvYWRlcjsKIH0KIAotRmV0Y2hMb2FkZXI6
OkZldGNoTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiBjbGllbnQsIEZldGNoQm9keUNvbnN1bWVy
KiBjb25zdW1lcikKLSAgICA6IG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fY29uc3VtZXIoY29u
c3VtZXIpCitGZXRjaExvYWRlcjo6RmV0Y2hMb2FkZXIoVHlwZSB0eXBlLCBGZXRjaExvYWRlckNs
aWVudCYgY2xpZW50KQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX2NsaWVudChjbGllbnQp
CiB7CiB9CiAKIHZvaWQgRmV0Y2hMb2FkZXI6OnN0b3AoKQogewotICAgIGlmIChtX2NvbnN1bWVy
KQotICAgICAgICBtX2NvbnN1bWVyLT5jbGVhbigpOworICAgIG1fZGF0YSA9IG51bGxwdHI7CiAg
ICAgaWYgKG1fbG9hZGVyKQogICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CiB9CiAKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7Ci0gICAgQVNT
RVJUKG1fY29uc3VtZXIpOwotICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VE
YXRhKCk7Ci0gICAgbV9jb25zdW1lciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGZpcnN0Q2h1bms7
CisgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpBcnJheUJ1ZmZlcik7CisgICAgbV90eXBlID0g
VHlwZTo6U3RyZWFtOworICAgIHJldHVybiBXVEZNb3ZlKG1fZGF0YSk7CiB9CiAKIHZvaWQgRmV0
Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTExNiwxNyArMTE0LDI5IEBAIHZvaWQgRmV0Y2hMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0K
IAorLy8gRklYTUU6IFdlIHNob3VsZCBtYWtlIHRleHQgYW5kIGJsb2IgY3JlYXRpb24gbW9yZSBl
ZmZpY2llbnQuCisvLyBXZSBtaWdodCBhbHNvIHdhbnQgdG8gbWVyZ2UgdGhpcyBjbGFzcyB3aXRo
IEZpbGVSZWFkZXJMb2FkZXIuCiB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiB2YWx1ZSwgaW50IHNpemUpCiB7Ci0gICAgaWYgKCFtX2NvbnN1bWVyKSB7CisgICAg
aWYgKG1fdHlwZSA9PSBUeXBlOjpTdHJlYW0pIHsKICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGEodmFsdWUsIHNpemUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fY29uc3Vt
ZXItPmFwcGVuZCh2YWx1ZSwgc2l6ZSk7CisgICAgaWYgKCFtX2RhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodmFsdWUsIHNpemUpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIG1fZGF0YS0+YXBwZW5kKHZhbHVlLCBzaXplKTsKIH0KIAogdm9pZCBGZXRj
aExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7CisgICAg
aWYgKG1fdHlwZSA9PSBUeXBlOjpBcnJheUJ1ZmZlcikKKyAgICAgICAgbV9jbGllbnQuZGlkRmlu
aXNoTG9hZGluZ0FzQXJyYXlCdWZmZXIobV9kYXRhID8gbV9kYXRhLT5jcmVhdGVBcnJheUJ1ZmZl
cigpIDogQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKSk7CisgICAgZWxzZSBpZiAo
bV90eXBlID09IFR5cGU6OlRleHQpCisgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRpbmdB
c1RleHQobV9kYXRhID8gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbCgi
dGV4dC9wbGFpbiIpLCAiVVRGLTgiKS0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1f
ZGF0YS0+c2l6ZSgpKTogU3RyaW5nKCkpOworICAgIG1fZGF0YSA9IG51bGxwdHI7CisKICAgICBt
X2NsaWVudC5kaWRTdWNjZWVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuaAppbmRleCBkYmI4MmZiZWJkNTU5ZTc3ZDFjZTFiNjE2YmM2ZDBiNGYxYWVm
M2MzLi5kNDczZmYxNzQ1MWZjYTVjMWE3MTNmYjU0M2JkMGI2YTBiMWRlMDJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0yNiwxMSArMjYsMTIgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI3ByYWdtYSBvbmNlCisjaWZuZGVmIEZldGNoTG9hZGVy
X2gKKyNkZWZpbmUgRmV0Y2hMb2FkZXJfaAogCiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAotI2lu
Y2x1ZGUgIkZldGNoQm9keUNvbnN1bWVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJD
bGllbnQuaCIKIApAQCAtNDMsNyArNDQsOSBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCiBjbGFzcyBGZXRjaExvYWRlciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50IHsKIHB1YmxpYzoKLSAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYsIEZldGNo
Qm9keUNvbnN1bWVyKik7CisgICAgZW51bSBjbGFzcyBUeXBlIHsgQXJyYXlCdWZmZXIsIFN0cmVh
bSwgVGV4dCB9OworCisgICAgRmV0Y2hMb2FkZXIoVHlwZSwgRmV0Y2hMb2FkZXJDbGllbnQmKTsK
IAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKQEAgLTYwLDEz
ICs2MywxOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nLCBkb3VibGUpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JikgZmluYWw7CiAKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwog
cHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OkFycmF5QnVmZmVyIH07CiAgICAgRmV0
Y2hMb2FkZXJDbGllbnQmIG1fY2xpZW50OwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBt
X2xvYWRlcjsKLSAgICBGZXRjaEJvZHlDb25zdW1lciogbV9jb25zdW1lcjsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgYm9vbCBtX2lzU3RhcnRlZCB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJ
KQorCisjZW5kaWYgLy8gRmV0Y2hMb2FkZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGU4OGU5OTQxOGNkOTkxNGExZWU0ODE4
NzdkNjFhZGNiNmUwNGVhZjQuLmQwOWZhZDUzZTI3ZTZkOGFjMjJhZGI3Y2E5ZjQ1MTAyNzhkYTQx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xp
ZW50LmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZ0FzVGV4dChTdHJpbmcmJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmdBc0FycmF5QnVmZmVyKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVy
PiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciosIHNp
emVfdCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDY3MzhmYTMx
ODNjOTYxMTU5MTEyY2UxOGNkMDUwY2I4ODBkYTg0MDMuLmMyZThhYmFhYjExYTIwMTU0MGQ4YmQx
Mjg1MGU1MWU3MGIyZWEzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJGZXRjaFJlcXVlc3QuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgotI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtOTQsMTEgKzkzLDEzIEBAIEZl
dGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgRmV0Y2hCb2R5JiYgYm9keSwKIHsKIH0KIAotUmVmPEZldGNoUmVzcG9uc2U+IEZldGNoUmVz
cG9uc2U6OmNsb25lRm9ySlMoKQorUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6
OmNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIEFTU0VSVCgh
aXNEaXN0dXJiZWQoKSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZSgq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJz
OjpjcmVhdGUoaGVhZGVycygpKSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSkpOworICAg
IGlmIChpc0Rpc3R1cmJlZCgpKSB7CisgICAgICAgIGVjID0gVHlwZUVycm9yOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNw
b25zZShjb250ZXh0LCBGZXRjaEJvZHkobV9ib2R5KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoaGVh
ZGVycygpKSwgUmVzb3VyY2VSZXNwb25zZShtX3Jlc3BvbnNlKSkpOwogfQogCiB2b2lkIEZldGNo
UmVzcG9uc2U6OmZldGNoKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoUmVx
dWVzdCYgcmVxdWVzdCwgRmV0Y2hQcm9taXNlJiYgcHJvbWlzZSkKQEAgLTEyOSw4ICsxMzAsNiBA
QCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFN1Y2NlZWQoKQogICAgICAgICBt
X3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwogICAgIH0KICNlbmRp
ZgotICAgIG1fcmVzcG9uc2UubV9ib2R5LmxvYWRpbmdTdWNjZWVkZWQoKTsKLQogICAgIGlmICht
X2xvYWRlci0+aXNTdGFydGVkKCkpCiAgICAgICAgIG1fcmVzcG9uc2UubV9ib2R5TG9hZGVyID0g
TnVsbG9wdDsKICAgICBtX3Jlc3BvbnNlLnVuc2V0UGVuZGluZ0FjdGl2aXR5KCZtX3Jlc3BvbnNl
KTsKQEAgLTE4OCw5ICsxODcsMTQgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICNlbmRpZgogfQog
Cit2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmdBc0FycmF5
QnVmZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgbV9yZXNwb25zZS5i
b2R5KCkubG9hZGVkQXNBcnJheUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOworfQorCiBib29sIEZl
dGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX2xvYWRlciA9IHN0
ZDo6bWFrZV91bmlxdWU8RmV0Y2hMb2FkZXI+KCp0aGlzLCAmbV9yZXNwb25zZS5tX2JvZHkuY29u
c3VtZXIoKSk7CisgICAgbV9sb2FkZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEZldGNoTG9hZGVyPihG
ZXRjaExvYWRlcjo6VHlwZTo6QXJyYXlCdWZmZXIsICp0aGlzKTsKICAgICBtX2xvYWRlci0+c3Rh
cnQoY29udGV4dCwgcmVxdWVzdCk7CiAgICAgcmV0dXJuIG1fbG9hZGVyLT5pc1N0YXJ0ZWQoKTsK
IH0KQEAgLTIwMSw0NiArMjA1LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpz
dG9wKCkKICAgICAgICAgbV9sb2FkZXItPnN0b3AoKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNl
Ojpjb25zdW1lKHVuc2lnbmVkIHR5cGUsIERlZmVycmVkV3JhcHBlciYmIHdyYXBwZXIpCi17Ci0g
ICAgQVNTRVJUKHR5cGUgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZldGNoQm9keUNvbnN1bWVy
OjpUeXBlOjpUZXh0KSk7Ci0KLSAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEZldGNoQm9keUNvbnN1
bWVyOjpUeXBlPih0eXBlKSkgewotICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkFy
cmF5QnVmZmVyOgotICAgICAgICBhcnJheUJ1ZmZlcihXVEZNb3ZlKHdyYXBwZXIpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkJsb2I6Ci0gICAg
ICAgIGJsb2IoV1RGTW92ZSh3cmFwcGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEZl
dGNoQm9keUNvbnN1bWVyOjpUeXBlOjpKU09OOgotICAgICAgICBqc29uKFdURk1vdmUod3JhcHBl
cikpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6
VGV4dDoKLSAgICAgICAgdGV4dChXVEZNb3ZlKHdyYXBwZXIpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCiAjaWYgRU5BQkxFKFNU
UkVBTVNfQVBJKQotdm9pZCBGZXRjaFJlc3BvbnNlOjpzdGFydENvbnN1bWluZ1N0cmVhbSh1bnNp
Z25lZCB0eXBlKQotewotICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwotICAgIG1fY29uc3VtZXIu
c2V0VHlwZShzdGF0aWNfY2FzdDxGZXRjaEJvZHlDb25zdW1lcjo6VHlwZT4odHlwZSkpOwotfQot
Ci12b2lkIEZldGNoUmVzcG9uc2U6OmNvbnN1bWVDaHVuayhSZWY8SlNDOjpVaW50OEFycmF5PiYm
IGNodW5rKQotewotICAgIG1fY29uc3VtZXIuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5i
eXRlTGVuZ3RoKCkpOwotfQotCi12b2lkIEZldGNoUmVzcG9uc2U6OmZpbmlzaENvbnN1bWluZ1N0
cmVhbShEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQotewotICAgIG1fY29uc3VtZXIucmVzb2x2
ZShwcm9taXNlKTsKLX0KLQogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFt
KCkKIHsKICAgICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDg0ODYyNTE0MDUwN2Q4MGM4
MzZkNzE5NTVhMWIzYjZmZGIyOGIyNmQuLjU3M2MyNzA4ZDhkYzk0ZGRhODEwNWI0Yzk2MGM1MTU5
Njg1NDIwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiRmV0Y2hCb2R5T3duZXIuaCIKICNpbmNs
dWRlICJGZXRjaEhlYWRlcnMuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5j
bHVkZSA8cnVudGltZS9UeXBlZEFycmF5cy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEFy
cmF5QnVmZmVyOwpAQCAtNjAsMTMgKzU5LDYgQEAgcHVibGljOgogICAgIHVzaW5nIEZldGNoUHJv
bWlzZSA9IERPTVByb21pc2U8RmV0Y2hSZXNwb25zZT47CiAgICAgc3RhdGljIHZvaWQgZmV0Y2go
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZldGNoUmVxdWVzdCYsIEZldGNoUHJvbWlzZSYmKTsK
IAotICAgIHZvaWQgY29uc3VtZSh1bnNpZ25lZCwgRGVmZXJyZWRXcmFwcGVyJiYpOwotI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKLSAgICB2b2lkIHN0YXJ0Q29uc3VtaW5nU3RyZWFtKHVuc2lnbmVk
KTsKLSAgICB2b2lkIGNvbnN1bWVDaHVuayhSZWY8SlNDOjpVaW50OEFycmF5PiYmKTsKLSAgICB2
b2lkIGZpbmlzaENvbnN1bWluZ1N0cmVhbShEZWZlcnJlZFdyYXBwZXImJik7Ci0jZW5kaWYKLQog
ICAgIHZvaWQgc2V0U3RhdHVzKGludCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGgoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwog
CkBAIC03OCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNUZXh0KCk7IH0KIAogICAgIEZl
dGNoSGVhZGVycyYgaGVhZGVycygpIHsgcmV0dXJuIG1faGVhZGVyczsgfQotICAgIFJlZjxGZXRj
aFJlc3BvbnNlPiBjbG9uZUZvckpTKCk7CisgICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IGNsb25l
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlJik7CiAKICNpZiBFTkFCTEUo
U1RSRUFNU19BUEkpCiAgICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UqIGNyZWF0ZVJlYWRhYmxlU3Ry
ZWFtU291cmNlKCk7CkBAIC0xMTMsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBk
aWRGYWlsKCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiwgc2l6ZV90KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXNB
cnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgICAgIEZldGNo
UmVzcG9uc2UmIG1fcmVzcG9uc2U7CiAgICAgICAgIE9wdGlvbmFsPEZldGNoUHJvbWlzZT4gbV9w
cm9taXNlOwpAQCAtMTIzLDggKzExNiw2IEBAIHByaXZhdGU6CiAgICAgUmVmPEZldGNoSGVhZGVy
cz4gbV9oZWFkZXJzOwogICAgIE9wdGlvbmFsPEJvZHlMb2FkZXI+IG1fYm9keUxvYWRlcjsKICAg
ICBtdXRhYmxlIFN0cmluZyBtX3Jlc3BvbnNlVVJMOwotCi0gICAgRmV0Y2hCb2R5Q29uc3VtZXIg
bV9jb25zdW1lciB7IEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlciAgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaWRsCmluZGV4IGJlM2MyY2UwMjkzN2Y2MjM4Zjg2NWQ5MjE5MjI2
YjZmYjFkMTcwMWMuLjNmYjE0ODgxNDM1NGNlN2QxZjg0MDE4MGJjOTkwZGZiMjNkMGE5MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbApAQCAt
NTMsMjUgKzUzLDExIEBAIGludGVyZmFjZSBGZXRjaFJlc3BvbnNlIHsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRmV0Y2hIZWFkZXJzIGhlYWRlcnM7CiAgICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkg
YXR0cmlidXRlIFJlYWRhYmxlU3RyZWFtPyBib2R5OwogCi0gICAgLy8gQ29weSBvZiBGZXRjaEJv
ZHkgSURMIGFzIHdlIHdhbnQgdG8gaW1wbGVtZW50IHNvbWUgb2YgdGhlc2UgYXMgYnVpbHQtaW5z
LgotICAgIFtJbXBsZW1lbnRlZEFzPWlzRGlzdHVyYmVkXSByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiBib2R5VXNlZDsKLSAgICBbSlNCdWlsdGluXSBQcm9taXNlIGFycmF5QnVmZmVyKCk7Ci0g
ICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBibG9iKCk7Ci0gICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBm
b3JtRGF0YSgpOwotICAgIFtKU0J1aWx0aW5dIFByb21pc2UganNvbigpOwotICAgIFtKU0J1aWx0
aW5dIFByb21pc2UgdGV4dCgpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOwogCi0g
ICAgW0pTQnVpbHRpbl0gRmV0Y2hSZXNwb25zZSBjbG9uZSgpOwotCi0gICAgW1ByaXZhdGVJZGVu
dGlmaWVyLCBOZXdPYmplY3RdIEZldGNoUmVzcG9uc2UgY2xvbmVGb3JKUygpOwotCi0gICAgW0Nv
bmRpdGlvbmFsPVNUUkVBTVNfQVBJLCBQcml2YXRlSWRlbnRpZmllcl0gdm9pZCBzdGFydENvbnN1
bWluZ1N0cmVhbSh1bnNpZ25lZCBzaG9ydCB0eXBlKTsKLSAgICBbQ29uZGl0aW9uYWw9U1RSRUFN
U19BUEksIFByaXZhdGVJZGVudGlmaWVyXSB2b2lkIGNvbnN1bWVDaHVuayhVaW50OEFycmF5IGNo
dW5rKTsKLSAgICBbQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksIFByaXZhdGVJZGVudGlmaWVyXSBQ
cm9taXNlIGZpbmlzaENvbnN1bWluZ1N0cmVhbSgpOwotCi0gICAgW1ByaXZhdGVJZGVudGlmaWVy
XSBQcm9taXNlIGNvbnN1bWUodW5zaWduZWQgc2hvcnQgdHlwZSk7CiAgICAgW1ByaXZhdGVJZGVu
dGlmaWVyLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgc2V0U3RhdHVzKHVuc2lnbmVkIHNob3J0IHN0
YXR1cywgRE9NU3RyaW5nIHN0YXR1c1RleHQpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwg
UHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgaW5pdGlhbGl6ZVdpdGgoYW55IGJvZHkpOwogICAgIFtQ
cml2YXRlSWRlbnRpZmllciwgTmV3T2JqZWN0XSBSZWFkYWJsZVN0cmVhbVNvdXJjZSBjcmVhdGVS
ZWFkYWJsZVN0cmVhbVNvdXJjZSgpOwogICAgIFtQcml2YXRlSWRlbnRpZmllcl0gYm9vbGVhbiBp
c0Rpc3R1cmJlZCgpOwogfTsKK0ZldGNoUmVzcG9uc2UgaW1wbGVtZW50cyBGZXRjaEJvZHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKaW5kZXggOGE0
ZGFiZjFiODEwNmJmZTJiNmMxMDdjYmVlZmU3ZmMzZjk2OGFhMi4uYzRhY2MwMTAxMWY0YzFlZTYz
NzBkYzMzNDEzMzlkYjY4NTgxOTAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5qcwpAQCAtNDgsMTIgKzQ4LDYgQEAgZnVuY3Rpb24gaW5pdGlhbGl6
ZUZldGNoUmVzcG9uc2UoYm9keSwgaW5pdCkKICAgICBpZiAoYm9keSAhPT0gQHVuZGVmaW5lZCAm
JiBib2R5ICE9PSBudWxsKSB7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gMTAxIHx8IHN0YXR1cyA9
PSAyMDQgfHwgc3RhdHVzID09IDIwNSB8fCBzdGF0dXMgPT0gMzA0KQogICAgICAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIlJlc3BvbnNlIGNhbm5vdCBoYXZlIGEgYm9keSB3aXRoIHRoZSBn
aXZlbiBzdGF0dXMiKTsKLQotICAgICAgICAvLyBGSVhNRTogVXNlIEBpc1JlYWRhYmxlU3RyZWFt
IG9uY2UgaXQgaXMgbm8gbG9uZ2VyIGd1YXJkZWQgYnkgU1RSRUFNU19BUEkgZ3VhcmQuCi0gICAg
ICAgIGxldCBpc0JvZHlSZWFkYWJsZVN0cmVhbSA9IChAaXNPYmplY3QoYm9keSkgJiYgISFib2R5
LkB1bmRlcmx5aW5nU291cmNlKTsKLSAgICAgICAgaWYgKGlzQm9keVJlYWRhYmxlU3RyZWFtKQot
ICAgICAgICAgIHRoaXMuQGJvZHkgPSBib2R5OwotCiAgICAgICAgIHRoaXMuQGluaXRpYWxpemVX
aXRoKGJvZHkpOwogICAgIH0KIApAQCAtNzQsNzcgKzY4LDMgQEAgZnVuY3Rpb24gYm9keSgpCiAg
ICAgfQogICAgIHJldHVybiB0aGlzLkBib2R5OwogfQotCi1mdW5jdGlvbiBjbG9uZSgpCi17Ci0g
ICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNlKQotICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlc3BvbnNlIik7Ci0KLSAg
ICBpZiAoQFJlc3BvbnNlLnByb3RvdHlwZS5AaXNEaXN0dXJiZWQuQGNhbGwodGhpcykpCi0gICAg
ICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJDYW5ub3QgY2xvbmUgYSBkaXN0dXJiZWQgUmVzcG9u
c2UiKTsKLQotICAgIHZhciBjbG9uZWQgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjbG9uZUZvckpT
LkBjYWxsKHRoaXMpOwotICAgIGlmICh0aGlzLkBib2R5KSB7Ci0gICAgICAgIHZhciB0ZWVkUmVh
ZGFibGVTdHJlYW1zID0gQHRlZVJlYWRhYmxlU3RyZWFtKHRoaXMuQGJvZHksIGZhbHNlKTsKLSAg
ICAgICAgdGhpcy5AYm9keSA9IHRlZWRSZWFkYWJsZVN0cmVhbXNbMF07Ci0gICAgICAgIGNsb25l
ZC5AYm9keSA9IHRlZWRSZWFkYWJsZVN0cmVhbXNbMV07Ci0gICAgfQotICAgIHJldHVybiBjbG9u
ZWQ7Ci19Ci0KLS8vIGNvbnN1bWUgYW5kIGNvbnN1bWVTdHJlYW0gc2luZ2xlIHBhcmFtZXRlciBz
aG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGUuCi1mdW5j
dGlvbiBhcnJheUJ1ZmZlcigpCi17Ci0gICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3BvbnNl
KQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxl
ZCBvbiBhIFJlc3BvbnNlIik7Ci0KLSAgICBjb25zdCBhcnJheUJ1ZmZlckNvbnN1bWVyVHlwZSA9
IDE7Ci0gICAgaWYgKCF0aGlzLkBib2R5KQotICAgICAgICByZXR1cm4gQFJlc3BvbnNlLnByb3Rv
dHlwZS5AY29uc3VtZS5AY2FsbCh0aGlzLCBhcnJheUJ1ZmZlckNvbnN1bWVyVHlwZSk7Ci0KLSAg
ICByZXR1cm4gQGNvbnN1bWVTdHJlYW0odGhpcywgYXJyYXlCdWZmZXJDb25zdW1lclR5cGUpOwot
fQotCi1mdW5jdGlvbiBibG9iKCkKLXsKLSAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9u
c2UpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2Fs
bGVkIG9uIGEgUmVzcG9uc2UiKTsKLQotICAgIGNvbnN0IGJsb2JDb25zdW1lclR5cGUgPSAyOwot
ICAgIGlmICghdGhpcy5AYm9keSkKLSAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUu
QGNvbnN1bWUuQGNhbGwodGhpcywgYmxvYkNvbnN1bWVyVHlwZSk7Ci0KLSAgICByZXR1cm4gQGNv
bnN1bWVTdHJlYW0odGhpcywgYmxvYkNvbnN1bWVyVHlwZSk7Ci19Ci0KLWZ1bmN0aW9uIGZvcm1E
YXRhKCkKLXsKLSAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCi0gICAgICAgIHRo
cm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVzcG9u
c2UiKTsKLQotICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KCJOb3QgaW1wbGVtZW50ZWQiKTsK
LX0KLQotZnVuY3Rpb24ganNvbigpCi17Ci0gICAgaWYgKCF0aGlzIGluc3RhbmNlb2YgQFJlc3Bv
bnNlKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNh
bGxlZCBvbiBhIFJlc3BvbnNlIik7Ci0KLSAgICBjb25zdCBqc29uQ29uc3VtZXJUeXBlID0gMzsK
LSAgICBpZiAoIXRoaXMuQGJvZHkpCi0gICAgICAgIHJldHVybiBAUmVzcG9uc2UucHJvdG90eXBl
LkBjb25zdW1lLkBjYWxsKHRoaXMsIGpzb25Db25zdW1lclR5cGUpOwotCi0gICAgcmV0dXJuIEBj
b25zdW1lU3RyZWFtKHRoaXMsIGpzb25Db25zdW1lclR5cGUpOwotfQotCi1mdW5jdGlvbiB0ZXh0
KCkKLXsKLSAgICBpZiAoIXRoaXMgaW5zdGFuY2VvZiBAUmVzcG9uc2UpCi0gICAgICAgIHRocm93
IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVzcG9uc2Ui
KTsKLQotICAgIGNvbnN0IHRleHRDb25zdW1lclR5cGUgPSA0OwotICAgIGlmICghdGhpcy5AYm9k
eSkKLSAgICAgICAgcmV0dXJuIEBSZXNwb25zZS5wcm90b3R5cGUuQGNvbnN1bWUuQGNhbGwodGhp
cywgdGV4dENvbnN1bWVyVHlwZSk7Ci0KLSAgICByZXR1cm4gQGNvbnN1bWVTdHJlYW0odGhpcywg
dGV4dENvbnN1bWVyVHlwZSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzczYTkzY2JlZDhlOGE5ODM1NDAwNjRiY2FhMjcz
YzRhYTkxNzdjYi4uYjRhNTU5N2EwNjgwOGUzNDMxZmRkOTlkMmRhZGNmZjljNDRlNGMxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTYzMSw3ICsxNjMxLDYgQEAKIAkJNDFCRjcwMEYwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxQkY3MDBEMEZFODZGNjEwMDVFOERFQyAvKiBQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAgKi87IH07CiAJCTQxQkY3MDEwMEZFODZGNjEwMDVFOERFQyAvKiBQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDFCRjcwMEUwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsLmggKi87IH07CiAJCTQxQzc2MEIxMEVERTAzRDMwMEMxNjU1RiAvKiBT
Y3JpcHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDFDNzYwQjAwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDFDRjhCRTcxRDQ2MjI2NzAw
NzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxQ0Y4QkU0MUQ0NjIyMjAwMDcwN0RDOSAvKiBGZXRjaEJv
ZHlDb25zdW1lci5jcHAgKi87IH07CiAJCTQxRDAxNUNBMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250
ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDFEMDE1QzgwRjRCNUM3MTAwNEE2NjJGIC8qIENvbnRlbnRUeXBlLmggKi87IH07CiAJCTQxRDAx
NUNCMEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyog
Q29udGVudFR5cGUuY3BwICovOyB9OwogCQk0MUUxQjFEMDBGRjU5ODY5MDA1NzZCM0IgLyogQWJz
dHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDFFMUIxQ0EwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCAqLzsg
fTsKQEAgLTkyMTksOSArOTIxOCw2IEBACiAJCTQxQkY3MDBEMEZFODZGNjEwMDVFOERFQyAvKiBQ
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA7IHBhdGggPSBkZWZhdWx0
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFCRjcwMEUwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3JtTWVzc2FnZVBv
cnRDaGFubmVsLmg7IHBhdGggPSBkZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzc2MEIwMEVERTAzRDMwMEMxNjU1RiAv
KiBTY3JpcHRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRT
dGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MUNGOEJFNDFENDYyMjIwMDA3
MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MUNGOEJFNTFENDYyMjIwMDA3MDdEQzkgLyogRmV0Y2hCb2R5Q29uc3VtZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hCb2R5Q29uc3VtZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDFDRjhCRTYxRDQ2MjIyQzAwNzA3REM5IC8qIEZl
dGNoSW50ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
RmV0Y2hJbnRlcm5hbHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDAxNUM4
MEY0QjVDNzEwMDRBNjYyRiAvKiBDb250ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb250ZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUQwMTVDOTBGNEI1QzcxMDA0QTY2MkYgLyogQ29udGVudFR5cGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVudFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MUUxQjFDQTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RXb3JrZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcxMDIsMTUgKzE3MDk4LDEyIEBA
CiAJCQkJNDFGNTRGN0QxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoQm9keS5jcHAgKi8sCiAJCQkJ
NDFGNTRGN0UxQzUwQzRGNjAwMzM4NDg4IC8qIEZldGNoQm9keS5oICovLAogCQkJCTQxRjU0RjdG
MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaEJvZHkuaWRsICovLAotCQkJCTQxQ0Y4QkU0MUQ0NjIy
MjAwMDcwN0RDOSAvKiBGZXRjaEJvZHlDb25zdW1lci5jcHAgKi8sCi0JCQkJNDFDRjhCRTUxRDQ2
MjIyMDAwNzA3REM5IC8qIEZldGNoQm9keUNvbnN1bWVyLmggKi8sCiAJCQkJNDE0N0UyQjMxQzg5
OTEyNjAwQTdFNzE1IC8qIEZldGNoQm9keU93bmVyLmNwcCAqLywKIAkJCQk0MTQ3RTJCMjFDODgz
MzdGMDBBN0U3MTUgLyogRmV0Y2hCb2R5T3duZXIuaCAqLywKIAkJCQk0MUY1NEY4MjFDNTBDNEY2
MDAzMzg0ODggLyogRmV0Y2hIZWFkZXJzLmNwcCAqLywKIAkJCQk0MUY1NEY4MzFDNTBDNEY2MDAz
Mzg0ODggLyogRmV0Y2hIZWFkZXJzLmggKi8sCiAJCQkJNDFGNTRGODQxQzUwQzRGNjAwMzM4NDg4
IC8qIEZldGNoSGVhZGVycy5pZGwgKi8sCiAJCQkJNDFGNTRGODUxQzUwQzRGNjAwMzM4NDg4IC8q
IEZldGNoSGVhZGVycy5qcyAqLywKLQkJCQk0MUNGOEJFNjFENDYyMjJDMDA3MDdEQzkgLyogRmV0
Y2hJbnRlcm5hbHMuanMgKi8sCiAJCQkJNDE0N0UyQjQxQzg5OTEyNjAwQTdFNzE1IC8qIEZldGNo
TG9hZGVyLmNwcCAqLywKIAkJCQk0MTQ3RTJCNTFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2Fk
ZXIuaCAqLywKIAkJCQk0MTQ3RTJCNjFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2FkZXJDbGll
bnQuaCAqLywKQEAgLTMwNzc5LDcgKzMwNzcyLDYgQEAKIAkJCQlCQzA2RURFMzBCRkQ2RDBEMDA4
NTZFOUQgLyogSlNIVE1MVGFibGVDZWxsRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzA2RUQ5RDBCRkQ2NjA2MDA4NTZFOUQgLyogSlNIVE1MVGFibGVDb2xFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMDZFRTA0MEJGRDcxQUEwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDFDRjhCRTcxRDQ2MjI2NzAwNzA3REM5IC8q
IEZldGNoQm9keUNvbnN1bWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDZFRDlGMEJGRDY2
MDYwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMwNkVEMDYwQkZENUJBRTAwODU2RTlEIC8qIEpTSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDY0ODlEMjUxNjZGRkNGMTAwN0MwMzFCIC8qIEpTSFRN
TFRlbXBsYXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggNGUyMmUzMzRmZjM3NmFkMzg0OWJmMGQxMDk5OWI5
N2JkOWQ5YmM4MC4uMTI3NWEzMmU2NzhkZGQ4YmVjYTI1NGJkMWQ2ZDRkMTlmMDI0YzI4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTExOCw4ICsxMTgs
NiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgUmVqZWN0UmVzdWx0VHlwZT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8UHJvbWlzZVJlc3VsdEluc3BlY3RvcjxSZWplY3RSZXN1bHRUeXBl
Pjo6cGFzc0J5Q29uc3RSZWYsIHZvaWQ+Ojp0eXBlCiAgICAgcmVqZWN0KGNvbnN0IFJlamVjdFJl
c3VsdFR5cGUmIHJlc3VsdCkgeyByZWplY3RXaXRoVmFsdWUocmVzdWx0KTsgfQogCi0gICAgdGVt
cGxhdGU8Y2xhc3MgUmVzb2x2ZVJlc3VsdFR5cGU+IHZvaWQgcmVzb2x2ZVdpdGhOZXdseUNyZWF0
ZWQoUmVmPFJlc29sdmVSZXN1bHRUeXBlPiYmKTsKLQogICAgIHZvaWQgcmVqZWN0KEV4Y2VwdGlv
bkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0pOwogCiAgICAgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCgpIGNvbnN0OwpAQCAtMTgzLDE2ICsxODEsNiBAQCBpbmxpbmUgdm9pZCBEZWZl
cnJlZFdyYXBwZXI6OnJlc29sdmVXaXRoVmFsdWUoUmVzb2x2ZVJlc3VsdFR5cGUmJiByZXN1bHQp
CiAgICAgcmVzb2x2ZSgqZXhlYywgdG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgc3Rk
Ojpmb3J3YXJkPFJlc29sdmVSZXN1bHRUeXBlPihyZXN1bHQpKSk7CiB9CiAKLXRlbXBsYXRlPGNs
YXNzIFJlc29sdmVSZXN1bHRUeXBlPgotaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNv
bHZlV2l0aE5ld2x5Q3JlYXRlZChSZWY8UmVzb2x2ZVJlc3VsdFR5cGU+JiYgcmVzdWx0KQotewot
ICAgIEFTU0VSVChtX2RlZmVycmVkKTsKLSAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwotICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgcmVzb2x2ZSgqZXhlYywgdG9K
U05ld2x5Q3JlYXRlZChleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgV1RGTW92ZShyZXN1bHQp
KSk7Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIFJlamVjdFJlc3VsdFR5cGU+CiBpbmxpbmUgdm9pZCBE
ZWZlcnJlZFdyYXBwZXI6OnJlamVjdFdpdGhWYWx1ZShSZWplY3RSZXN1bHRUeXBlJiYgcmVzdWx0
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCmluZGV4IDY4MzkwMmE2YmVkODg0ZjEzYTJhMWI3OTMzNWVkMjE2YzZiZTQ4ZjguLmE1YWRk
OTRiMjA5YTI2OTNiZWMzNTFjOThmZmM1Y2UyOGE3NjFiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTM1LDE4ICszNSwxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oYWRkVHJhY2spIFwKICAgICBtYWNybyhh
cHBlbmRGcm9tSlMpIFwKICAgICBtYWNybyhib2R5KSBcCi0gICAgbWFjcm8oY2xvbmVGb3JKUykg
XAogICAgIG1hY3JvKGNsb3NlUmVxdWVzdGVkKSBcCiAgICAgbWFjcm8oY2xvc2VkUHJvbWlzZUNh
cGFiaWxpdHkpIFwKLSAgICBtYWNybyhjb25zdW1lKSBcCi0gICAgbWFjcm8oY29uc3VtZUNodW5r
KSBcCiAgICAgbWFjcm8oY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oY29u
dHJvbGxlcikgXAogICAgIG1hY3JvKGNyZWF0ZVJlYWRhYmxlU3RyZWFtU291cmNlKSBcCiAgICAg
bWFjcm8oZGlzdHVyYmVkKSBcCiAgICAgbWFjcm8oZmV0Y2hSZXF1ZXN0KSBcCiAgICAgbWFjcm8o
ZmlsbEZyb21KUykgXAotICAgIG1hY3JvKGZpbmlzaENvbnN1bWluZ1N0cmVhbSkgXAogICAgIG1h
Y3JvKGZpcnN0UmVhZENhbGxiYWNrKSBcCiAgICAgbWFjcm8oZ2V0VXNlck1lZGlhRnJvbUpTKSBc
CiAgICAgbWFjcm8oZ2V0UmVtb3RlU3RyZWFtcykgXApAQCAtNzYsNyArNzIsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oc2V0Qm9keSkgXAogICAgIG1hY3JvKHNldFN0YXR1cykg
XAogICAgIG1hY3JvKHN0YXRlKSBcCi0gICAgbWFjcm8oc3RhcnRDb25zdW1pbmdTdHJlYW0pIFwK
ICAgICBtYWNybyhzdGFydGVkKSBcCiAgICAgbWFjcm8oc3RhcnRlZFByb21pc2UpIFwKICAgICBt
YWNybyhzdG9yZWRFcnJvcikgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMDI3
NWFhOGJhMjdiZDE0NDliZDRjMzNmZDk5NGU2YTYyMTllYzYwMC4uY2M0ODljOWQxN2Q5MmY0YWVi
YmZlMjA0YTYxNzA1ZjczNTg4OTM0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTYtMDctMjYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDM3MTkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAyMDAKKwor
ICAgICAgICBJdCBpcyBicmVha2luZyB3aW4gYnVpbGQgKFJlcXVlc3RlZCBieSB5b3Vlbm4gb24g
I3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJbRmV0
Y2ggQVBJXSBSZXNwb25zZSBjb25zdHJ1Y3RvciBzaG91bGQgYmUgYWJsZSB0byB0YWtlIGEKKyAg
ICAgICAgUmVhZGFibGVTdHJlYW0gYXMgYm9keSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTgwNAorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yMDM3MTkKKwogMjAxNi0wNy0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY3Jv
c3Mtb3JpZ2luIG9wdGlvbiBmcm9tIFJlc291cmNlTG9hZGVyT3B0aW9ucwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVz
cG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25z
ZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dAppbmRleCBlOTY3OTUxOGJkOWMwMzA5NGQ4ZmZm
Y2Y5ZmNmODJkZDE3N2JjN2NmLi42NzA0ZGUxYTQ0MmU1ZjFmZDcyNWIwY2VlMjJjN2YwNzM3YTVl
NTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApAQCAtMyw3
ICszLDcgQEAgUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQQVNTIENvbnN1
bWUgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5
IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29uIAot
RkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIk5vdCBpbXBsZW1lbnRlZCIKK0ZBSUwgQ29u
c3VtZSByZXNwb25zZSdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAogUEFTUyBDb25zdW1lIGVtcHR5IGJsb2Ig
cmVzcG9uc2UgYm9keSBhcyBhcnJheUJ1ZmZlciAKIFBBU1MgQ29uc3VtZSBlbXB0eSB0ZXh0IHJl
c3BvbnNlIGJvZHkgYXMgYXJyYXlCdWZmZXIgCiBQQVNTIENvbnN1bWUgZW1wdHkgYmxvYiByZXNw
b25zZSBib2R5IGFzIHRleHQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0CmluZGV4IDQx
NmEzOTJjZTZhZDZjYWI2OGUyNzFkZDA0YTE5YTJlZTUwMjAzZWUuLmQwODhhNjlhOGNlNDJhMmZh
MGExYzkyMDk5ZDg2YTZiZmE1N2U2ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1
bWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUtZXhwZWN0ZWQudHh0
CkBAIC0zLDEzICszLDkgQEAgUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyB0ZXh0CiBQ
QVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgcmVzcG9u
c2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAogUEFTUyBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBh
cyBqc29uIAotRkFJTCBDb25zdW1lIHJlc3BvbnNlJ3MgYm9keSBhcyBmb3JtRGF0YSBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogIk5vdCBpbXBsZW1lbnRlZCIK
K0ZBSUwgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAogUEFTUyBDb25zdW1lIGJs
b2IgcmVzcG9uc2UncyBib2R5IGFzIGJsb2IgCiBQQVNTIENvbnN1bWUgYmxvYiByZXNwb25zZSdz
IGJvZHkgYXMgdGV4dCAKIFBBU1MgQ29uc3VtZSBibG9iIHJlc3BvbnNlJ3MgYm9keSBhcyBqc29u
IAogUEFTUyBDb25zdW1lIGJsb2IgcmVzcG9uc2UncyBib2R5IGFzIGFycmF5QnVmZmVyIAotUEFT
UyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKLVBBU1MgQ29uc3VtZSBz
dHJlYW0gcmVzcG9uc2UncyBib2R5IGFzIHRleHQgCi1QQVNTIENvbnN1bWUgc3RyZWFtIHJlc3Bv
bnNlJ3MgYm9keSBhcyBqc29uIAotUEFTUyBDb25zdW1lIHN0cmVhbSByZXNwb25zZSdzIGJvZHkg
YXMgYXJyYXlCdWZmZXIgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbAppbmRleCA5OTQxMGNkNDQ4YWI4YmQ2NDc5
MDE4NzAwNGVmZDM0YjFjOTlhYjQ5Li4wMjgxNGZmNWJlOTI2YmU3MzgyNjRiYTkxMDcwYmQyMzY5
ZDU0NjkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9u
c2UvcmVzcG9uc2UtY29uc3VtZS5odG1sCkBAIC05MiwyNSArOTIsNiBAQAogICAgIGNoZWNrQmxv
YlJlc3BvbnNlQm9keShibG9iLCB0ZXh0RGF0YSwgImpzb24iLCBjaGVja0JvZHlKU09OKTsKICAg
ICBjaGVja0Jsb2JSZXNwb25zZUJvZHkoYmxvYiwgdGV4dERhdGEsICJhcnJheUJ1ZmZlciIsIGNo
ZWNrQm9keUFycmF5QnVmZmVyKTsKIAotICAgIGZ1bmN0aW9uIGNoZWNrUmVhZGFibGVTdHJlYW1S
ZXNwb25zZUJvZHkoc3RyZWFtRGF0YSwgYm9keVR5cGUsIGNoZWNrRnVuY3Rpb24pIHsKLSAgICAg
IHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7Ci0gICAgICAgIHZhciBzdHJlYW0gPSBuZXcg
UmVhZGFibGVTdHJlYW0oewotICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjb250cm9sbGVyKSB7
Ci0gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoKHN0cmluZ1RvQXJyYXkoc3RyZWFtRGF0
YSkpKTsKLSAgICAgICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKLSAgICAgICAgICB9Ci0gICAg
ICAgIH0pOwotICAgICAgICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2Uoc3RyZWFtKTsKLSAg
ICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3BvbnNlLmJvZHlVc2VkLCAiYm9keVVzZWQgaXMgZmFsc2Ug
YXQgaW5pdCIpOwotICAgICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihyZXNwb25zZSwgc3RyZWFt
RGF0YSk7Ci0gICAgICB9LCAiQ29uc3VtZSBzdHJlYW0gcmVzcG9uc2UncyBib2R5IGFzICIgKyBi
b2R5VHlwZSk7Ci0gICAgfQotCi0gICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0
ZXh0RGF0YSwgImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKLSAgICBjaGVja1JlYWRhYmxlU3RyZWFt
UmVzcG9uc2VCb2R5KHRleHREYXRhLCAidGV4dCIsIGNoZWNrQm9keVRleHQpOwotICAgIGNoZWNr
UmVhZGFibGVTdHJlYW1SZXNwb25zZUJvZHkodGV4dERhdGEsICJqc29uIiwgY2hlY2tCb2R5SlNP
Tik7Ci0gICAgY2hlY2tSZWFkYWJsZVN0cmVhbVJlc3BvbnNlQm9keSh0ZXh0RGF0YSwgImFycmF5
QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOwotCiAgICAgPC9zY3JpcHQ+CiAgIDwvYm9k
eT4KIDwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>