<?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>267680</bug_id>
          
          <creation_ts>2024-01-18 00:30:45 -0800</creation_ts>
          <short_desc>REGRESSION(273159@main): introduce some test failures</short_desc>
          <delta_ts>2024-01-18 00:36:13 -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>267678</blocked>
    
    <blocked>267353</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2005785</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-01-18 00:30:45 -0800</bug_when>
    <thetext>https://commits.webkit.org/273159@main introduced a regression:
introduce some test failures

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>2005787</commentid>
    <comment_count>1</comment_count>
      <attachid>469439</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-01-18 00:30:52 -0800</bug_when>
    <thetext>Created attachment 469439
REVERT of 273159@main

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 revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert 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>2005789</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-01-18 00:35:09 -0800</bug_when>
    <thetext>Committed 273171@main (64272e9d6535): &lt;https://commits.webkit.org/273171@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 469439.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2005790</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-01-18 00:36:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/121174694&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469439</attachid>
            <date>2024-01-18 00:30:52 -0800</date>
            <delta_ts>2024-01-18 00:35:10 -0800</delta_ts>
            <desc>REVERT of 273159@main</desc>
            <filename>bug-267680-20240118083051.patch</filename>
            <type>text/plain</type>
            <size>273342</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSA4ZjlkZGIzNzRmZDhiODUwMDc2ZWZhMDEyZmVjOTdjOGQwOTU0ZTE5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUaHUsIDE4IEphbiAyMDI0IDA4OjMwOjQ5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI3MzE1OUBtYWluIGFuZCAyNzMxNjhAbWFpbi4KIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjc2ODAKCmludHJvZHVjZSBzb21l
IHRlc3QgZmFpbHVyZXMKClJldmVydGVkIGNoYW5nZXNldHM6CgoiW0pTQ10gUmVkZXNpZ24gQ2Fs
bElDIgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY3MzUzCmh0dHBz
Oi8vY29tbWl0cy53ZWJraXQub3JnLzI3MzE1OUBtYWluCgoiVW5yZXZpZXdlZCwgZml4IHdyb25n
IGNvbmRpdGlvbiIKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NzY3
OApodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8yNzMxNjhAbWFpbgotLS0KIC4uLi9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oICAgICAgICAgICB8ICAxNyAtCiAuLi4vYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuaCAgICAgICAgICAgfCAgMTEgLQogLi4uL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclJJU0NWNjQuaCAgICAgICAgIHwgIDE5IC0KIC4uLi9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCAgICAgICAgICB8ICAxNyAtCiAuLi4vSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiICAgfCAgNTUgKystCiAuLi4vSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCAgfCAyNjQgKysrKy0tLS0tLS0tCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggfCAxMjUgKysrLS0tCiAuLi4vYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvQmFzZS5jcHAgICAgICAgICAgICAgfCAgIDggKy0KIC4uLi9ieXRl
Y29kZS9DYWxsTGlua0luZm9CYXNlLmggICAgICAgICAgICAgICB8ICAgNiArLQogLi4uL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcCAgICAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCAgfCAgMzggKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCAgICB8ICAgNiArLQogLi4uL2J5dGVjb2Rl
L0lubGluZUNhY2hlQ29tcGlsZXIuY3BwICAgICAgICAgIHwgIDQxICstCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAgICAgfCAzODYgKysrKysrKysrKysrLS0tLS0t
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oICAgICAgfCAgIDMgKy0K
IC4uLi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oICB8IDE3OSArKyst
LS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcCAgICAgIHwgICAy
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCAgICAgICAgfCAgMTEg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwICB8ICAgMiAr
LQogLi4uL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAgICAgICAgICAgIHwgIDg4ICsr
LS0KIC4uLi9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgICAgICAgICAgICAgICB8ICA4MiAr
Ky0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgfCAgNzUg
KystLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAgICAgICAgIHwgICAy
ICstCiAuLi4vSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oICAgfCAgMTIg
Ky0KIC4uLi9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgICAgICAgICAgICAgICB8ICA1OCAr
LS0KIC4uLi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oICB8ICAgMyAr
LQogLi4uL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJVFJlZ2lzdGVycy5oIHwgICAxIC0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggICAgICB8ICAxNyArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCAgICAgICAgICAgICAgIHwgIDEyICstCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwICAgICAgICAgfCAyMDggKysrKyst
LS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCAgIHwgMTAy
ICsrLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCAgICAgfCAg
IDkgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuY3BwICB8ICAg
MyArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oICAgIHwgICA3
IC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmggICAgICAgICB8ICAgMyAr
LQogLi4uL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAgICAgICAgIHwgMTM2ICsr
Ky0tLQogLi4uL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oICAgICAgICAgIHwgIDcw
ICsrLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCB8IDE2
OSArKysrKy0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCAg
IHwgICA1ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCAgICAg
fCAgIDIgLQogLi4uL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5jcHAgIHwg
ICA5IC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnQuaCB8ICAg
MSAtCiAuLi4vSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwICAgfCAgNDUg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oICB8ICAgMiAr
LQogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcCAgIHwgIDQzIC0t
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaCAgICAgfCAgIDEgLQog
Li4uL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICAgICAgICAgICAgIHwgIDM3ICstCiAu
Li4vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgICAgICAgICAgICAgfCAgIDIgKy0KIC4u
Li9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICAgICAgICB8ICA0MiArLQogLi4u
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gICAgICAgICAgIHwgIDM0ICstCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYiAgICAgfCAgIDQgLQogLi4uL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRlRXJyb3IuY3BwIHwgICAyICstCiAuLi4vSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcml0eUNoZWNrTW9kZS5oICAgfCAgIDIgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCAgICAgICB8ICAyOCArLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaCAgICAgICAgIHwgICAyICstCiAuLi4vSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCAgfCAgNDAgKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaCB8ICAxOCArLQogLi4uL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAgICAgICAgICAgICAgIHwgIDIwICstCiAuLi4vSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmggfCAgIDIgLQogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2F0ZS5oICAgICAgICAgIHwgIDEwICsKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oICAgICB8ICAgMiAtCiAuLi4vcnVudGltZS9OdWxsU2V0
dGVyRnVuY3Rpb24uY3BwICAgICAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuY3BwICAgICB8ICAgNiArLQogLi4uL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAgICAgICAgICAgICAgIHwgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdGFja0ZyYW1lLmNwcCAgfCAgMTMgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RhY2tGcmFtZS5oICAgIHwgICAxIC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCAgICAgICAgICB8ICAgOSArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oICAgICAgICAgICAgfCAgIDEgKwogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBp
bGVFcnJvci5jcHAgICAgIHwgICAyICstCiAuLi4vd2FzbS9qcy9KU1dlYkFzc2VtYmx5TGlua0Vy
cm9yLmNwcCAgICAgICAgfCAgIDIgKy0KIC4uLi93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUu
Y3BwICAgICAgICAgICB8ICAgMiArLQogLi4uL3dhc20vanMvSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvci5jcHAgICAgIHwgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNt
VG9KUy5jcHAgICAgfCAgMTMgKy0KIC4uLi91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy1leHBl
Y3RlZC50eHQgICB8ICAgMiArLQogLi4uL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1leHBlY3Rl
ZC50eHQgICAgIHwgICAyICstCiBMYXlvdXRUZXN0cy9qcy9jYWxsZXItcHJvcGVydHktZXhwZWN0
ZWQudHh0ICAgfCAgIDIgKy0KIC4uLi9qcy9zY3JpcHQtdGVzdHMvY2FsbGVyLXByb3BlcnR5Lmpz
ICAgICAgICB8ICAgMiArLQogLi4uZ2xlbmd0aC1lbGVtZW50LXJlbW92ZWQtY3Jhc2gtZXhwZWN0
ZWQudHh0IHwgICA2ICstCiAuLi4vc3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcg
ICAgICAgfCAgNzQgKystLQogSlNUZXN0cy9zdHJlc3MvdGFpbC1jYWxsLXN0YWNrcy5qcyAgICAg
ICAgICAgIHwgIDM0IC0tCiA4MCBmaWxlcyBjaGFuZ2VkLCAxMjQ2IGluc2VydGlvbnMoKyksIDE1
MzUgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgSlNUZXN0cy9zdHJlc3MvdGFpbC1j
YWxsLXN0YWNrcy5qcwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggMzIwOGE4YzM2NzgyLi4yMDM3NTI4MDljMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCkBAIC0yMTMwLDIzICsyMTMwLDYgQEAgcHVibGljOgogICAgICAgICB0cmFu
c2ZlcjY0KHNyYywgZGVzdCk7CiAgICAgfQogCi0gICAgdm9pZCB0cmFuc2ZlcjMyKEJhc2VJbmRl
eCBzcmMsIEJhc2VJbmRleCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMyKHNyYywgZ2V0Q2Fj
aGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKLSAgICAgICAgc3RvcmUzMihn
ZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCksIGRlc3QpOwotICAgIH0K
LQotICAgIHZvaWQgdHJhbnNmZXI2NChCYXNlSW5kZXggc3JjLCBCYXNlSW5kZXggZGVzdCkKLSAg
ICB7Ci0gICAgICAgIGxvYWQ2NChzcmMsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSk7Ci0gICAgICAgIHN0b3JlNjQoZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklE
QW5kSW52YWxpZGF0ZSgpLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYW5zZmVyUHRyKEJh
c2VJbmRleCBzcmMsIEJhc2VJbmRleCBkZXN0KQotICAgIHsKLSAgICAgICAgdHJhbnNmZXI2NChz
cmMsIGRlc3QpOwotICAgIH0KLQogICAgIERhdGFMYWJlbDMyIHN0b3JlNjRXaXRoQWRkcmVzc09m
ZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAg
ICBEYXRhTGFiZWwzMiBsYWJlbCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggMmI4YjExNTAzNWM3Li45
Y2I4OThmZWYzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0xMzE3LDE3ICsxMzE3LDYgQEAgcHVibGljOgog
ICAgICAgICB0cmFuc2ZlcjMyKHNyYywgZGVzdCk7CiAgICAgfQogCi0gICAgdm9pZCB0cmFuc2Zl
cjMyKEJhc2VJbmRleCBzcmMsIEJhc2VJbmRleCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDMy
KHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3Rl
ciwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCB0cmFuc2ZlclB0cihCYXNlSW5kZXggc3JjLCBC
YXNlSW5kZXggZGVzdCkKLSAgICB7Ci0gICAgICAgIHRyYW5zZmVyMzIoc3JjLCBkZXN0KTsKLSAg
ICB9Ci0KICAgICB2b2lkIHN0b3JlQ29uZDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkciwg
UmVnaXN0ZXJJRCByZXN1bHQpCiAgICAgewogICAgICAgICBBU1NFUlQoIWFkZHIub2Zmc2V0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJSSVNDVjY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyUklTQ1Y2NC5oCmluZGV4IGE4YzcyNDM3NjMxOS4uZWY2ZGExZTE2ZWVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVND
VjY0LmgKQEAgLTEyNTYsMjUgKzEyNTYsNiBAQCBwdWJsaWM6CiAgICAgICAgIHRyYW5zZmVyNjQo
c3JjLCBkZXN0KTsKICAgICB9CiAKLSAgICB2b2lkIHRyYW5zZmVyMzIoQmFzZUluZGV4IHNyYywg
QmFzZUluZGV4IGRlc3QpCi0gICAgewotICAgICAgICBhdXRvIHRlbXAgPSB0ZW1wczxEYXRhPigp
OwotICAgICAgICBsb2FkMzIoc3JjLCB0ZW1wLmRhdGEoKSk7Ci0gICAgICAgIHN0b3JlMzIodGVt
cC5kYXRhKCksIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgdHJhbnNmZXI2NChCYXNlSW5kZXgg
c3JjLCBCYXNlSW5kZXggZGVzdCkKLSAgICB7Ci0gICAgICAgIGF1dG8gdGVtcCA9IHRlbXBzPERh
dGE+KCk7Ci0gICAgICAgIGxvYWQ2NChzcmMsIHRlbXAuZGF0YSgpKTsKLSAgICAgICAgc3RvcmU2
NCh0ZW1wLmRhdGEoKSwgZGVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCB0cmFuc2ZlclB0cihCYXNl
SW5kZXggc3JjLCBCYXNlSW5kZXggZGVzdCkKLSAgICB7Ci0gICAgICAgIHRyYW5zZmVyNjQoc3Jj
LCBkZXN0KTsKLSAgICB9Ci0KICAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdG9yZVBh
aXIzMihzcmMxLCBzcmMyLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4
IGZiNTU0YzEyZWZjZS4uM2IwOGE5Yzk2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC0xMjY1LDIzICsx
MjY1LDYgQEAgcHVibGljOgogICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CiAgICAgfQog
Ci0gICAgdm9pZCB0cmFuc2ZlcjMyKEJhc2VJbmRleCBzcmMsIEJhc2VJbmRleCBkZXN0KQotICAg
IHsKLSAgICAgICAgbG9hZDMyKHNyYywgc2NyYXRjaFJlZ2lzdGVyKCkpOwotICAgICAgICBzdG9y
ZTMyKHNjcmF0Y2hSZWdpc3RlcigpLCBkZXN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYW5zZmVy
NjQoQmFzZUluZGV4IHNyYywgQmFzZUluZGV4IGRlc3QpCi0gICAgewotICAgICAgICBsb2FkNjQo
c3JjLCBzY3JhdGNoUmVnaXN0ZXIoKSk7Ci0gICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVy
KCksIGRlc3QpOwotICAgIH0KLQotICAgIHZvaWQgdHJhbnNmZXJQdHIoQmFzZUluZGV4IHNyYywg
QmFzZUluZGV4IGRlc3QpCi0gICAgewotICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7Ci0g
ICAgfQotCiAgICAgRGF0YUxhYmVsMzIgc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIHBhZEJlZm9yZVBh
dGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5y
YgppbmRleCBkOTE2MzM1OGFjNzkuLjI1YzhmM2NjNDMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzk2LDcgKzEzOTYsNyBAQCBv
cCA6bGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGluZQogb3AgOmxsaW50X25hdGl2ZV9jb25zdHJ1
Y3RfdHJhbXBvbGluZQogb3AgOmxsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NhbGxfdHJhbXBvbGlu
ZQogb3AgOmxsaW50X2ludGVybmFsX2Z1bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lCi1vcCA6
bGxpbnRfZGVmYXVsdF9jYWxsX3RyYW1wb2xpbmUKK29wIDpsbGludF9saW5rX2NhbGxfdHJhbXBv
bGluZQogb3AgOmxsaW50X3ZpcnR1YWxfY2FsbF90cmFtcG9saW5lCiBvcCA6bGxpbnRfdmlydHVh
bF9jb25zdHJ1Y3RfdHJhbXBvbGluZQogb3AgOmxsaW50X3ZpcnR1YWxfdGFpbF9jYWxsX3RyYW1w
b2xpbmUKQEAgLTE0MTIsMTYgKzE0MTIsMjcgQEAgb3AgOm9wX2NhbGxfaWdub3JlX3Jlc3VsdF9y
ZXR1cm5fbG9jYXRpb24KIG9wIDpvcF9jb25zdHJ1Y3RfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3Bf
Y2FsbF92YXJhcmdzX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX2NvbnN0cnVjdF92YXJhcmdzX3Jl
dHVybl9sb2NhdGlvbgorb3AgOm9wX2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbgor
b3AgOm9wX2NvbnN0cnVjdF92YXJhcmdzX3Nsb3dfcmV0dXJuX2xvY2F0aW9uCiBvcCA6b3BfZ2V0
X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX2dldF9ieV92YWxfcmV0dXJuX2xvY2F0aW9u
CiBvcCA6b3BfcHV0X2J5X2lkX3JldHVybl9sb2NhdGlvbgogb3AgOm9wX3B1dF9ieV92YWxfcmV0
dXJuX2xvY2F0aW9uCiBvcCA6b3BfaXRlcmF0b3Jfb3Blbl9yZXR1cm5fbG9jYXRpb24KIG9wIDpv
cF9pdGVyYXRvcl9uZXh0X3JldHVybl9sb2NhdGlvbgotb3AgOm9wX2NhbGxfZGlyZWN0X2V2YWxf
c2xvd19yZXR1cm5fbG9jYXRpb24KIG9wIDp3YXNtX2Z1bmN0aW9uX3Byb2xvZ3VlCiBvcCA6d2Fz
bV9mdW5jdGlvbl9wcm9sb2d1ZV9zaW1kCiAKK29wIDpvcF9jYWxsX3Nsb3dfcmV0dXJuX2xvY2F0
aW9uCitvcCA6b3BfY2FsbF9pZ25vcmVfcmVzdWx0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6
b3BfY29uc3RydWN0X3Nsb3dfcmV0dXJuX2xvY2F0aW9uCitvcCA6b3BfaXRlcmF0b3Jfb3Blbl9z
bG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2l0ZXJhdG9yX25leHRfc2xvd19yZXR1cm5fbG9j
YXRpb24KK29wIDpvcF90YWlsX2NhbGxfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvd19yZXR1cm5fbG9jYXRpb24KK29wIDpvcF90YWls
X2NhbGxfdmFyYXJnc19zbG93X3JldHVybl9sb2NhdGlvbgorb3AgOm9wX2NhbGxfZGlyZWN0X2V2
YWxfc2xvd19yZXR1cm5fbG9jYXRpb24KKwogb3AgOmpzX3RyYW1wb2xpbmVfb3BfY2FsbAogb3Ag
OmpzX3RyYW1wb2xpbmVfb3BfY2FsbF9pZ25vcmVfcmVzdWx0CiBvcCA6anNfdHJhbXBvbGluZV9v
cF9jb25zdHJ1Y3QKQEAgLTE0MjksNyArMTQ0MCwxNyBAQCBvcCA6anNfdHJhbXBvbGluZV9vcF9j
YWxsX3ZhcmFyZ3MKIG9wIDpqc190cmFtcG9saW5lX29wX2NvbnN0cnVjdF92YXJhcmdzCiBvcCA6
anNfdHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0CiBvcCA6anNfdHJhbXBvbGluZV9vcF9pdGVy
YXRvcl9vcGVuCitvcCA6anNfdHJhbXBvbGluZV9vcF9jYWxsX3Nsb3cKK29wIDpqc190cmFtcG9s
aW5lX29wX2NhbGxfaWdub3JlX3Jlc3VsdF9zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWls
X2NhbGxfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3Nsb3cKK29wIDpqc190
cmFtcG9saW5lX29wX2NhbGxfdmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWls
X2NhbGxfdmFyYXJnc19zbG93CitvcCA6anNfdHJhbXBvbGluZV9vcF90YWlsX2NhbGxfZm9yd2Fy
ZF9hcmd1bWVudHNfc2xvdworb3AgOmpzX3RyYW1wb2xpbmVfb3BfY29uc3RydWN0X3ZhcmFyZ3Nf
c2xvdwogb3AgOmpzX3RyYW1wb2xpbmVfb3BfY2FsbF9kaXJlY3RfZXZhbF9zbG93CitvcCA6anNf
dHJhbXBvbGluZV9vcF9pdGVyYXRvcl9uZXh0X3Nsb3cKK29wIDpqc190cmFtcG9saW5lX29wX2l0
ZXJhdG9yX29wZW5fc2xvdwogb3AgOmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2tfdW50YWcKIG9wIDpqc190cmFtcG9saW5lX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrX3RhZwogb3AgOmpzX3RyYW1wb2xpbmVfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVja191bnRhZwpAQCAtMTQ3Miw2ICsxNDkzLDM2IEBAIG9w
IDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMjIKIG9wIDpsbGludF9jbG9vcF9kaWRf
cmV0dXJuX2Zyb21fanNfMjMKIG9wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMjQK
IG9wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMjUKK29wIDpsbGludF9jbG9vcF9k
aWRfcmV0dXJuX2Zyb21fanNfMjYKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNf
MjcKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMjgKK29wIDpsbGludF9jbG9v
cF9kaWRfcmV0dXJuX2Zyb21fanNfMjkKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21f
anNfMzAKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMzEKK29wIDpsbGludF9j
bG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMzIKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zy
b21fanNfMzMKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMzQKK29wIDpsbGlu
dF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMzUKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJu
X2Zyb21fanNfMzYKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMzcKK29wIDps
bGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfMzgKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0
dXJuX2Zyb21fanNfMzkKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNDAKK29w
IDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNDEKK29wIDpsbGludF9jbG9vcF9kaWRf
cmV0dXJuX2Zyb21fanNfNDIKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNDMK
K29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNDQKK29wIDpsbGludF9jbG9vcF9k
aWRfcmV0dXJuX2Zyb21fanNfNDUKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNf
NDYKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNDcKK29wIDpsbGludF9jbG9v
cF9kaWRfcmV0dXJuX2Zyb21fanNfNDgKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21f
anNfNDkKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNTAKK29wIDpsbGludF9j
bG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNTEKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zy
b21fanNfNTIKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNTMKK29wIDpsbGlu
dF9jbG9vcF9kaWRfcmV0dXJuX2Zyb21fanNfNTQKK29wIDpsbGludF9jbG9vcF9kaWRfcmV0dXJu
X2Zyb21fanNfNTUKIAogZW5kX3NlY3Rpb24gOkNMb29wUmV0dXJuSGVscGVycwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCmluZGV4IDBlMGNm
ZDNlYmVhYy4uOTU4NGQwNDcwMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcApAQCAtMzEsOSArMzEsNyBAQAogI2luY2x1ZGUgIkRGR0pJ
VENvZGUuaCIKICNpbmNsdWRlICJEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCIK
ICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkpJVFRodW5rcy5oIgog
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJMTEludEVudHJ5cG9pbnQuaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAi
UmVwYXRjaC5oIgpAQCAtOTEsMjQgKzg5LDEyIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpjbGVhclN0
dWIoKQogI2VuZGlmCiB9CiAKLXZvaWQgQ2FsbExpbmtJbmZvOjp1bmxpbmtPclVwZ3JhZGVJbXBs
KFZNJiB2bSwgQ29kZUJsb2NrKiBvbGRDb2RlQmxvY2ssIENvZGVCbG9jayogbmV3Q29kZUJsb2Nr
KQordm9pZCBDYWxsTGlua0luZm86OnVubGlua0ltcGwoVk0mIHZtKQogewogICAgIC8vIFdlIGNv
dWxkIGJlIGNhbGxlZCBldmVuIGlmIHdlJ3JlIG5vdCBsaW5rZWQgYW55bW9yZSBiZWNhdXNlIG9m
IGhvdyBwb2x5bW9ycGhpYyBjYWxscwogICAgIC8vIHdvcmsuIEVhY2ggY2FsbHNpdGUgd2l0aGlu
IHRoZSBwb2x5bW9ycGhpYyBjYWxsIHN0dWIgbWF5IHNlcGFyYXRlbHkgYXNrIHVzIHRvIHVubGlu
aygpLgotICAgIGlmIChpc0xpbmtlZCgpKSB7Ci0gICAgICAgIGlmIChuZXdDb2RlQmxvY2sgJiYg
aXNEYXRhSUMoKSAmJiBtb2RlKCkgPT0gTW9kZTo6TW9ub21vcnBoaWMgJiYgb2xkQ29kZUJsb2Nr
ID09IHUuZGF0YUlDLm1fY29kZUJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBVcGdyYWRpbmcgTW9u
b21vcnBoaWMgRGF0YUlDIHdpdGggbmV3Q29kZUJsb2NrLgotICAgICAgICAgICAgcmVtb3ZlKCk7
Ci0gICAgICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eUNoZWNrID0gb2xkQ29kZUJsb2NrLT5q
aXRDb2RlKCktPmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tOb3RSZXF1aXJlZCkgPT0gdS5kYXRh
SUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5hdGlvbiA/IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZCA6
IE11c3RDaGVja0FyaXR5OwotICAgICAgICAgICAgYXV0byB0YXJnZXQgPSBuZXdDb2RlQmxvY2st
PmppdENvZGUoKS0+YWRkcmVzc0ZvckNhbGwoYXJpdHlDaGVjayk7Ci0gICAgICAgICAgICB1LmRh
dGFJQy5tX2NvZGVCbG9jayA9IG5ld0NvZGVCbG9jazsKLSAgICAgICAgICAgIHUuZGF0YUlDLm1f
bW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSB0YXJnZXQ7Ci0gICAgICAgICAgICBuZXdDb2Rl
QmxvY2stPmxpbmtJbmNvbWluZ0NhbGwob3duZXIoKSwgdGhpcyk7IC8vIFRoaXMgaXMganVzdCBy
ZWxpbmtpbmcuIFNvIG93bmVyIGFuZCBjYWxsZXIgZnJhbWUgY2FuIGJlIG51bGxwdHIuCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
ZHVtcERpc2Fzc2VtYmx5KCksICJVbmxpbmtpbmcgQ2FsbExpbmtJbmZvOiAiLCBSYXdQb2ludGVy
KHRoaXMpKTsKLSAgICAgICAgcmV2ZXJ0Q2FsbCh2bSk7Ci0gICAgfQorICAgIGlmIChpc0xpbmtl
ZCgpKQorICAgICAgICB1bmxpbmtDYWxsKHZtLCAqdGhpcyk7CiAKICAgICAvLyBFaXRoZXIgd2Ug
d2VyZSB1bmxpbmtlZCwgaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgbm90IGhhdmUgYmVlbiBvbiBh
bnkgbGlzdCwgb3Igd2UgdW5saW5rZWQKICAgICAvLyBvdXJzZWx2ZXMgc28gdGhhdCB3ZSdyZSBu
b3Qgb24gYW55IGxpc3QgYW55bW9yZS4KQEAgLTEzOSw3ICsxMjUsNiBAQCB2b2lkIENhbGxMaW5r
SW5mbzo6c2V0TW9ub21vcnBoaWNDYWxsZWUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVj
dCogY2FsbGVlLAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlm
CiAgICAgfQotICAgIG1fbW9kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNb2RlOjpNb25vbW9y
cGhpYyk7CiB9CiAKIHZvaWQgQ2FsbExpbmtJbmZvOjpjbGVhckNhbGxlZSgpCkBAIC0yMjksMTEg
KzIxNCw3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQogICAgICAgICAg
ICAgbV9jbGVhcmVkQnlHQyA9IHRydWU7CiAgICAgfTsKICAgICAKLSAgICBzd2l0Y2ggKG1vZGUo
KSkgewotICAgIGNhc2UgTW9kZTo6SW5pdDoKLSAgICBjYXNlIE1vZGU6OlZpcnR1YWw6Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTW9kZTo6UG9seW1vcnBoaWM6IHsKKyAgICBpZiAoaXNMaW5r
ZWQoKSkgewogICAgICAgICBpZiAoc3R1YigpKSB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
ICAgIGlmICghc3R1YigpLT52aXNpdFdlYWsodm0pKSB7CkBAIC0yNDMsMTkgKzIyNCwxMyBAQCB2
b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpc3REdW1wKHN0dWIoKS0+dmFyaWFudHMoKSksICIsIHN0dWIgcm91dGluZSAiLCBSYXdQ
b2ludGVyKHN0dWIoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAiLlxuIik7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVubGlua09yVXBncmFkZSh2bSwgbnVsbHB0ciwg
bnVsbHB0cik7CisgICAgICAgICAgICAgICAgdW5saW5rKHZtKTsKICAgICAgICAgICAgICAgICBt
X2NsZWFyZWRCeUdDID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICNlbHNlCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGNhc2UgTW9kZTo6TW9ub21vcnBoaWM6Ci0gICAgY2FzZSBNb2Rl
OjpMaW5rZWREaXJlY3Q6IHsKLSAgICAgICAgYXV0byogY2FsbGVlT3JDb2RlQmxvY2sgPSBtX2Nh
bGxlZU9yQ29kZUJsb2NrLmdldCgpOwotICAgICAgICBpZiAoY2FsbGVlT3JDb2RlQmxvY2sgJiYg
IXZtLmhlYXAuaXNNYXJrZWQoY2FsbGVlT3JDb2RlQmxvY2spKSB7CisgICAgICAgIH0gZWxzZSBp
ZiAoIXZtLmhlYXAuaXNNYXJrZWQobV9jYWxsZWVPckNvZGVCbG9jay5nZXQoKSkpIHsKICAgICAg
ICAgICAgIGlmIChpc0RpcmVjdCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OnZlcmJvc2VPU1IoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKQEAg
LTI2Myw3ICsyMzgsNyBAQCB2b2lkIENhbGxMaW5rSW5mbzo6dmlzaXRXZWFrKFZNJiB2bSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJEdW1wKGNvZGVCbG9jaygpKSwgIikuXG4iKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IEpTT2JqZWN0KiBjYWxsZWUgPSBqc0Nhc3Q8SlNPYmplY3QqPihjYWxsZWVPckNvZGVCbG9jayk7
CisgICAgICAgICAgICAgICAgSlNPYmplY3QqIGNhbGxlZSA9IGpzQ2FzdDxKU09iamVjdCo+KG1f
Y2FsbGVlT3JDb2RlQmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgICAgIGlmIChjYWxsZWUtPnR5
cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoT3B0aW9uczo6dmVyYm9zZU9TUigpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygKQEAgLTI3OSwyMiArMjU0LDE5IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWso
Vk0mIHZtKQogICAgICAgICAgICAgICAgICAgICBtX2NsZWFyZWRCeUdDID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB1bmxpbmtPclVwZ3JhZGUo
dm0sIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICAgICAgdW5saW5rKHZtKTsKICAgICAgICAg
fSBlbHNlIGlmIChpc0RpcmVjdCgpICYmICF2bS5oZWFwLmlzTWFya2VkKG1fbGFzdFNlZW5DYWxs
ZWVPckV4ZWN1dGFibGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dmVyYm9zZU9TUigpKSkgewogICAgICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAg
ICAgICAgICAgICJDbGVhcmluZyBjYWxsIHRvICIsIFJhd1BvaW50ZXIoZXhlY3V0YWJsZSgpKSwK
ICAgICAgICAgICAgICAgICAgICAgIiBiZWNhdXNlIHRoZSBleGVjdXRhYmxlIGlzIGRlYWQuXG4i
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVubGlua09yVXBncmFkZSh2bSwgbnVsbHB0
ciwgbnVsbHB0cik7CisgICAgICAgICAgICB1bmxpbmsodm0pOwogICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZ2V0IGhlcmUgb25jZSB0aGUgb3duaW5nIENvZGVCbG9jayBpcyBkeWluZywg
c2luY2UgdGhlIGV4ZWN1dGFibGUgbXVzdAogICAgICAgICAgICAgLy8gYWxyZWFkeSBiZSBpbiB0
aGUgb3duZXIncyB3ZWFrIHJlZmVyZW5jZXMuCiAgICAgICAgICAgICBtX2xhc3RTZWVuQ2FsbGVl
T3JFeGVjdXRhYmxlLmNsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIH0KLQogICAgIGlmICghaXNEaXJlY3QoKSAmJiBoYXZlTGFzdFNlZW5DYWxsZWUoKSAmJiAh
dm0uaGVhcC5pc01hcmtlZChsYXN0U2VlbkNhbGxlZSgpKSkgewogICAgICAgICBpZiAobGFzdFNl
ZW5DYWxsZWUoKS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQogICAgICAgICAgICAgaGFuZGxl
U3BlY2lmaWNDYWxsZWUoanNDYXN0PEpTRnVuY3Rpb24qPihsYXN0U2VlbkNhbGxlZSgpKSk7CkBA
IC0zMDQsNiArMjc2LDExIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdlYWsoVk0mIHZtKQog
ICAgIH0KIH0KIAordm9pZCBDYWxsTGlua0luZm86OnNldFNsb3dQYXRoQ2FsbERlc3RpbmF0aW9u
KENvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKK3sKKyAgICBtX3Nsb3dQYXRoQ2FsbERl
c3RpbmF0aW9uID0gY29kZVB0cjsKK30KKwogdm9pZCBDYWxsTGlua0luZm86OnJldmVydENhbGxU
b1N0dWIoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHN0dWIoKSk7CkBAIC0zMjIsMTY3ICsyOTks
MTA3IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpyZXZlcnRDYWxsVG9TdHViKCkKICAgICB9IGVsc2Ug
ewogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRl
cih1LmNvZGVJQy5tX2NvZGVCbG9ja0xvY2F0aW9uLCBudWxscHRyKTsKLSAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDQ2FsbEhl
bHBlcnM6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKHUuY29kZUlDLm1fY2Fs
bGVlTG9jYXRpb24pLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlR1BSLCBudWxs
cHRyKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5j
aFB0cldpdGhQYXRjaCgKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6c3RhcnRPZkJyYW5jaFB0
cldpdGhQYXRjaE9uUmVnaXN0ZXIodS5jb2RlSUMubV9jYWxsZWVMb2NhdGlvbiksIGNhbGxlZUdQ
UigpLCBudWxscHRyKTsKICNlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAjZW5kaWYKICAgICB9CiB9CiAKLXZvaWQgQmFzZWxpbmVDYWxsTGlua0luZm86OmluaXRp
YWxpemUoVk0mIHZtLCBDb2RlQmxvY2sqIG93bmVyLCBDYWxsVHlwZSBjYWxsVHlwZSwgQnl0ZWNv
ZGVJbmRleCBieXRlY29kZUluZGV4KQordm9pZCBCYXNlbGluZUNhbGxMaW5rSW5mbzo6aW5pdGlh
bGl6ZShWTSYgdm0sIENhbGxUeXBlIGNhbGxUeXBlLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5k
ZXgpCiB7Ci0gICAgbV9vd25lciA9IG93bmVyOwogICAgIG1fdHlwZSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihUeXBlOjpCYXNlbGluZSk7CiAgICAgQVNTRVJUKFR5cGU6OkJhc2VsaW5lID09IHR5
cGUoKSk7CiAgICAgbV91c2VEYXRhSUMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVXNlRGF0YUlD
OjpZZXMpOwogICAgIEFTU0VSVChVc2VEYXRhSUM6OlllcyA9PSB1c2VEYXRhSUMoKSk7CiAgICAg
bV9ieXRlY29kZUluZGV4ID0gYnl0ZWNvZGVJbmRleDsKICAgICBtX2NhbGxUeXBlID0gY2FsbFR5
cGU7Ci0gICAgbV9tb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE1vZGU6OkluaXQpOworICAg
IGlmIChMSUtFTFkoT3B0aW9uczo6dXNlTExJbnRJQ3MoKSkpCisgICAgICAgIHNldFNsb3dQYXRo
Q2FsbERlc3RpbmF0aW9uKHZtLmdldENUSUxpbmtDYWxsKCkuY29kZSgpKTsKKyAgICBlbHNlCisg
ICAgICAgIHNldFNsb3dQYXRoQ2FsbERlc3RpbmF0aW9uKHZtLmdldENUSVZpcnR1YWxDYWxsKGNh
bGxNb2RlKCkpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCkuY29kZSgpKTsKICAgICAvLyBJZiBK
SVQgaXMgZGlzYWJsZWQsIHdlIHNob3VsZCBub3Qgc3VwcG9ydCBkeW5hbWljYWxseSBnZW5lcmF0
ZWQgY2FsbCBJQy4KICAgICBpZiAoIU9wdGlvbnM6OnVzZUpJVCgpKQogICAgICAgICBkaXNhbGxv
d1N0dWJzKCk7Ci0gICAgaWYgKFVOTElLRUxZKCFPcHRpb25zOjp1c2VMTEludElDcygpKSkKLSAg
ICAgICAgc2V0VmlydHVhbENhbGwodm0sIG93bmVyKTsKLX0KLQotc3RkOjp0dXBsZTxDb2RlQmxv
Y2sqLCBCeXRlY29kZUluZGV4PiBDYWxsTGlua0luZm86OnJldHJpZXZlQ2FsbGVyKEpTQ2VsbCog
b3duZXIpCi17Ci0gICAgYXV0byogY29kZUJsb2NrID0ganNEeW5hbWljQ2FzdDxDb2RlQmxvY2sq
Pihvd25lcik7Ci0gICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgIHJldHVybiB7IH07Ci0gICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luID0gdGhpcy0+Y29kZU9yaWdpbigpOwotICAgIGlmIChhdXRv
KiBiYXNlbGluZUNvZGVCbG9jayA9IGNvZGVPcmlnaW4uY29kZU9yaWdpbk93bmVyKCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgYmFzZWxpbmVDb2RlQmxvY2ssIGNvZGVPcmlnaW4uYnl0
ZWNvZGVJbmRleCgpIH07Ci0gICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBjb2RlQmxvY2ssIGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCgpIH07Ci19Ci0KLXZvaWQgQ2FsbExpbmtJbmZvOjpyZXNldChW
TSYpCi17Ci0gICAgaWYgKGlzRGlyZWN0KCkpIHsKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICBj
bGVhckNvZGVCbG9jaygpOwotICAgICAgICBzdGF0aWNfY2FzdDxPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvJj4oKnRoaXMpLmluaXRpYWxpemVEaXJlY3RDYWxsKCk7Ci0jZW5kaWYKLSAgICB9IGVsc2Ug
ewotI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIGlmICh0eXBlKCkgPT0gQ2FsbExpbmtJbmZvOjpU
eXBlOjpPcHRpbWl6aW5nKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8T3B0aW1pemluZ0NhbGxM
aW5rSW5mbyo+KHRoaXMpLT5zZXRTbG93UGF0aENhbGxEZXN0aW5hdGlvbihMTEludDo6ZGVmYXVs
dENhbGwoKS5jb2RlKCkpOwotI2VuZGlmCi0gICAgICAgIGlmIChzdHViKCkpCi0gICAgICAgICAg
ICByZXZlcnRDYWxsVG9TdHViKCk7Ci0gICAgICAgIGNsZWFyQ2FsbGVlKCk7IC8vIFRoaXMgYWxz
byBjbGVhcnMgdGhlIGlubGluZSBjYWNoZSBib3RoIGZvciBkYXRhIGFuZCBjb2RlLWJhc2VkIGNh
Y2hlcy4KLSAgICB9Ci0gICAgY2xlYXJTZWVuKCk7Ci0gICAgY2xlYXJTdHViKCk7Ci0gICAgaWYg
KGlzT25MaXN0KCkpCi0gICAgICAgIHJlbW92ZSgpOwotICAgIG1fbW9kZSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihNb2RlOjpJbml0KTsKLX0KLQotdm9pZCBDYWxsTGlua0luZm86OnJldmVydENh
bGwoVk0mIHZtKQotewotICAgIGlmIChVTkxJS0VMWSghT3B0aW9uczo6dXNlTExJbnRJQ3MoKSAm
JiB0eXBlKCkgPT0gQ2FsbExpbmtJbmZvOjpUeXBlOjpCYXNlbGluZSkpCi0gICAgICAgIHNldFZp
cnR1YWxDYWxsKHZtLCBvd25lcigpKTsgLy8gU2luY2UgdGhpcyBpcyBCYXNlbGluZSwgd2UgY2Fu
IGFsd2F5cyB1c2Ugb3duZXIoKS4KLSAgICBlbHNlCi0gICAgICAgIHJlc2V0KHZtKTsKLX0KLQot
dm9pZCBDYWxsTGlua0luZm86OnNldFZpcnR1YWxDYWxsKFZNJiB2bSwgSlNDZWxsKiBvd25lcikK
LXsKLSAgICByZXNldCh2bSk7Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAodHlwZSgpID09IFR5
cGU6Ok9wdGltaXppbmcpCi0gICAgICAgIHN0YXRpY19jYXN0PE9wdGltaXppbmdDYWxsTGlua0lu
Zm8qPih0aGlzKS0+c2V0U2xvd1BhdGhDYWxsRGVzdGluYXRpb24odm0uZ2V0Q1RJVmlydHVhbENh
bGwoY2FsbE1vZGUoKSkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKS5jb2RlKCkpOwotI2VuZGlm
Ci0gICAgaWYgKGlzRGF0YUlDKCkpIHsKLSAgICAgICAgbV9jYWxsZWVPckNvZGVCbG9jay5jbGVh
cigpOwotICAgICAgICAqYml0d2lzZV9jYXN0PHVpbnRwdHJfdCo+KG1fY2FsbGVlT3JDb2RlQmxv
Y2suc2xvdCgpKSA9IChiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihvd25lcikgfCBwb2x5bW9ycGhp
Y0NhbGxlZU1hc2spOwotICAgICAgICB1LmRhdGFJQy5tX2NvZGVCbG9jayA9IG51bGxwdHI7IC8v
IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIHdpbGwgc2V0IENvZGVCbG9jayBpbnNpZGUgaXQu
Ci0gICAgICAgIHUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24gPSB2bS5nZXRD
VElWaXJ0dWFsQ2FsbChjYWxsTW9kZSgpKS5jb2RlKCkudGVtcGxhdGUgcmV0YWdnZWQ8SlNFbnRy
eVB0clRhZz4oKTsKLSAgICB9Ci0gICAgc2V0Q2xlYXJlZEJ5VmlydHVhbCgpOwotICAgIG1fbW9k
ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNb2RlOjpWaXJ0dWFsKTsKIH0KIAogI2lmIEVOQUJM
RShKSVQpCiAKLXZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2V0U2xvd1BhdGhDYWxsRGVz
dGluYXRpb24oQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQordm9pZCBPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvOjpzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVE
YXRhJiBzaHVmZmxlRGF0YSkKIHsKLSAgICBtX3Nsb3dQYXRoQ2FsbERlc3RpbmF0aW9uID0gY29k
ZVB0cjsKKyAgICBtX2ZyYW1lU2h1ZmZsZURhdGEgPSBtYWtlVW5pcXVlPENhbGxGcmFtZVNodWZm
bGVEYXRhPihzaHVmZmxlRGF0YSk7CisgICAgbV9mcmFtZVNodWZmbGVEYXRhLT5zaHJpbmtUb0Zp
dCgpOwogfQogCi1zdGQ6OnR1cGxlPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCwgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsPiBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aEltcGwoQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8sIENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJS
ZWcgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUMgdXNlRGF0YUlDLCBib29sIGlzVGFpbENhbGws
IFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKQorTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbywgQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJl
ZyBjYWxsTGlua0luZm9HUFIsIFVzZURhdGFJQyB1c2VEYXRhSUMsIGJvb2wgaXNUYWlsQ2FsbCwg
U2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFpbENhbGwpCiB7CiAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCBzbG93UGF0aDsKIAogICAgIGlmICh1c2VEYXRhSUMgPT0gVXNlRGF0
YUlDOjpZZXMpIHsKLSAgICAgICAgQVNTRVJUKGNhbGxlZUdQUiA9PSBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6Q2FsbDo6Y2FsbGVlR1BSKTsKLSAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mb0dQUiA9
PSBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKICAgICAgICAg
Ly8gRm9yIFJJU0NWNjQsIHNjcmF0Y2ggcmVnaXN0ZXIgdXNhZ2UgaGVyZSBjb2xsaWRlcyB3aXRo
IE1hY3JvQXNzZW1ibGVyJ3MgaW50ZXJuYWwgdXNhZ2UKICAgICAgICAgLy8gdGhhdCdzIG5lY2Vz
c2FyeSBmb3IgdGhlIHRlc3QtYW5kLWJyYW5jaCBvcGVyYXRpb24gYnV0IGlzIGF2b2lkYWJsZSBi
eSBsb2FkaW5nIGZyb20gdGhlIGNhbGxlZQogICAgICAgICAvLyBhZGRyZXNzIGZvciBlYWNoIGJy
YW5jaCBvcGVyYXRpb24uIE90aGVyIE1hY3JvQXNzZW1ibGVyIGltcGxlbWVudGF0aW9ucyBoYW5k
bGUgdGhpcyBiZXR0ZXIgYnkKICAgICAgICAgLy8gdXNpbmcgYSB3aWRlciByYW5nZSBvZiBzY3Jh
dGNoIHJlZ2lzdGVycyBvciBtb3JlIHBvdGVudCBicmFuY2hpbmcgaW5zdHJ1Y3Rpb25zLgogICAg
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZm91bmQ7Ci0gICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNldE9mTW9ub21vcnBoaWNDYWxs
RGVzdGluYXRpb24oKSksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsVGFyZ2V0R1BS
KTsKICAgICAgICAgaWYgY29uc3RleHByIChpc1JJU0NWNjQoKSkgewogICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzIGNhbGxlZUFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRP
ZkNhbGxlZSgpKTsKICAgICAgICAgICAgIGZvdW5kID0gaml0LmJyYW5jaFB0cihDQ2FsbEhlbHBl
cnM6OkVxdWFsLCBjYWxsZWVBZGRyZXNzLCBjYWxsZWVHUFIpOwogICAgICAgICAgICAgc2xvd1Bh
dGguYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgY2FsbGVlQWRk
cmVzcywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocG9seW1vcnBoaWNDYWxsZWVNYXNrKSkp
OwotICAgICAgICAgICAgaml0LmxvYWRQdHIoY2FsbGVlQWRkcmVzcywgQmFzZWxpbmVKSVRSZWdp
c3RlcnM6OkNhbGw6Omdsb2JhbE9iamVjdEdQUik7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6Omdsb2JhbE9i
amVjdEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpIC0gcG9seW1vcnBoaWND
YWxsZWVNYXNrKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6Omdsb2JhbE9iamVjdEdQUik7
CisgICAgICAgICAgICBqaXQubG9hZFB0cihjYWxsZWVBZGRyZXNzLCBHUFJJbmZvOjpyZWdUMyk7
CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
cmVnVDMsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSAtIHBvbHltb3JwaGljQ2Fs
bGVlTWFzayksIEdQUkluZm86OnJlZ1QzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gaml0LnNjcmF0Y2hSZWdpc3RlcigpOwogICAgICAgICAgICAg
RGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGRpc2FsbG93U2NyYXRjaChqaXQpOwog
ICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5m
b0dQUiwgb2Zmc2V0T2ZDYWxsZWUoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgZm91bmQg
PSBqaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2hHUFIsIGNhbGxlZUdQ
Uik7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpaZXJvLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihwb2x5
bW9ycGhpY0NhbGxlZU1hc2spKSk7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
IC0gcG9seW1vcnBoaWNDYWxsZWVNYXNrKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6Omds
b2JhbE9iamVjdEdQUik7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgpIC0gcG9s
eW1vcnBoaWNDYWxsZWVNYXNrKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byBkaXNwYXRjaCA9IGppdC5sYWJlbCgpOwotICAgICAgICBmb3VuZC5saW5rKCZqaXQp
OwogICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgeworICAgICAgICAgICAgZm91bmQubGluaygmaml0
KTsKICAgICAgICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAgICAgICAgaml0LnRy
YW5zZmVyUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIG9mZnNldE9m
Q29kZUJsb2NrKCkpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlVGFp
bENhbGwoKSk7Ci0gICAgICAgICAgICBqaXQuZmFySnVtcChCYXNlbGluZUpJVFJlZ2lzdGVyczo6
Q2FsbDo6Y2FsbFRhcmdldEdQUiwgSlNFbnRyeVB0clRhZyk7CisgICAgICAgICAgICBqaXQuZmFy
SnVtcChDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbExpbmtJbmZvR1BSLCBvZmZzZXRPZk1vbm9t
b3JwaGljQ2FsbERlc3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGZvdW5kLmxpbmsoJmppdCk7CiAgICAgICAgICAgICBqaXQudHJhbnNm
ZXJQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZDb2Rl
QmxvY2soKSksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVDYWxsKCkp
OwotICAgICAgICAgICAgaml0LmNhbGwoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxU
YXJnZXRHUFIsIEpTRW50cnlQdHJUYWcpOworICAgICAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGNhbGxMaW5rSW5mb0dQUiwgb2Zmc2V0T2ZNb25vbW9ycGhpY0NhbGxEZXN0
aW5hdGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0
ZDo6dHVwbGUgeyBzbG93UGF0aCwgZGlzcGF0Y2ggfTsKLSAgICB9Ci0KLSAgICBDQ2FsbEhlbHBl
cnM6OkRhdGFMYWJlbFB0ciBjYWxsZWVDaGVjazsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2Fs
bDsKLSAgICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciBjb2RlQmxvY2tTdG9yZTsKLSAgICBp
ZiAoaXNUYWlsQ2FsbCkgewotICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwoKTsKLSAgICAgICAg
c2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgR1BSSW5mbzo6cmVnVDAsIGNhbGxlZUNoZWNrLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIobnVsbHB0cikpKTsKLSAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJX
aXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBl
cnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlVGFpbENhbGwoKSk7Ci0gICAgICAgIGNhbGwg
PSBqaXQubmVhclRhaWxDYWxsKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc2xvd1BhdGguYXBw
ZW5kKGppdC5icmFuY2hQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5m
bzo6cmVnVDAsIGNhbGxlZUNoZWNrLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0
cikpKTsKLSAgICAgICAgY29kZUJsb2NrU3RvcmUgPSBqaXQuc3RvcmVQdHJXaXRoUGF0Y2goQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBDQ2FsbEhlbHBlcnM6OmNhbGxlZUZy
YW1lQ29kZUJsb2NrQmVmb3JlQ2FsbCgpKTsKLSAgICAgICAgY2FsbCA9IGppdC5uZWFyQ2FsbCgp
OworICAgICAgICBDQ2FsbEhlbHBlcnM6OkRhdGFMYWJlbFB0ciBjYWxsZWVDaGVjazsKKyAgICAg
ICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHJXaXRoUGF0Y2goQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgY2FsbGVlR1BSLCBjYWxsZWVDaGVjaywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG51bGxwdHIpKSk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIGNhbGw7CisgICAg
ICAgIENDYWxsSGVscGVyczo6RGF0YUxhYmVsUHRyIGNvZGVCbG9ja1N0b3JlOworICAgICAgICBp
ZiAoaXNUYWlsQ2FsbCkgeworICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAg
ICAgICAgICBjb2RlQmxvY2tTdG9yZSA9IGppdC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2Rl
QmxvY2tCZWZvcmVUYWlsQ2FsbCgpKTsKKyAgICAgICAgICAgIGNhbGwgPSBqaXQubmVhclRhaWxD
YWxsKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb2RlQmxvY2tTdG9yZSA9IGpp
dC5zdG9yZVB0cldpdGhQYXRjaChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciks
IENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVDYWxsKCkpOworICAgICAg
ICAgICAgY2FsbCA9IGppdC5uZWFyQ2FsbCgpOworICAgICAgICB9CisKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoY2FsbExpbmtJbmZvKTsKKyAgICAgICAgaml0LmFkZExpbmtUYXNrKFs9XSAoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8T3B0aW1pemlu
Z0NhbGxMaW5rSW5mbyo+KGNhbGxMaW5rSW5mbyktPm1fY2FsbExvY2F0aW9uID0gbGlua0J1ZmZl
ci5sb2NhdGlvbk9mTmVhckNhbGw8SlNJbnRlcm5hbFB0clRhZz4oY2FsbCk7CisgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOworICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT51LmNvZGVJQy5tX2NhbGxlZUxvY2F0aW9uID0gbGlua0J1ZmZlci5s
b2NhdGlvbk9mPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGxlZUNoZWNrKTsKKyAgICAgICAgfSk7CiAg
ICAgfQogCi0gICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvKTsKLSAgICBqaXQuYWRkTGlu
a1Rhc2soWz1dIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0
PE9wdGltaXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5tX2NhbGxMb2NhdGlvbiA9
IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPEpTSW50ZXJuYWxQdHJUYWc+KGNhbGwpOwot
ICAgICAgICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24gPSBsaW5r
QnVmZmVyLmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY29kZUJsb2NrU3RvcmUpOwotICAg
ICAgICBjYWxsTGlua0luZm8tPnUuY29kZUlDLm1fY2FsbGVlTG9jYXRpb24gPSBsaW5rQnVmZmVy
LmxvY2F0aW9uT2Y8SlNJbnRlcm5hbFB0clRhZz4oY2FsbGVlQ2hlY2spOwotICAgIH0pOwotICAg
IHJldHVybiBzdGQ6OnR1cGxlIHsgc2xvd1BhdGgsIENDYWxsSGVscGVyczo6TGFiZWwoKSB9Owor
ICAgIHJldHVybiBzbG93UGF0aDsKIH0KIAotc3RkOjp0dXBsZTxNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gQ2FsbExpbmtJbmZvOjplbWl0RGF0YUlDRmFz
dFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlu
a0luZm9HUFIpCitNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJbmZvOjplbWl0RGF0
YUlDRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBj
YWxsTGlua0luZm9HUFIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbExpbmtJbmZvR1BSICE9
IEludmFsaWRHUFJSZWcpOwogICAgIHJldHVybiBlbWl0RmFzdFBhdGhJbXBsKG51bGxwdHIsIGpp
dCwgY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIsIFVzZURhdGFJQzo6WWVzLCBmYWxzZSwgbnVs
bHB0cik7CiB9CiAKLXN0ZDo6dHVwbGU8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0LCBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWw+IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgo
Q0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9H
UFIsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKQorTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRGF0YUlDRmFzdFBhdGgo
Q0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9H
UFIsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRhaWxDYWxsKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVnKTsKICAgICByZXR1
cm4gZW1pdEZhc3RQYXRoSW1wbChudWxscHRyLCBqaXQsIGNhbGxlZUdQUiwgY2FsbExpbmtJbmZv
R1BSLCBVc2VEYXRhSUM6OlllcywgdHJ1ZSwgV1RGTW92ZShwcmVwYXJlRm9yVGFpbENhbGwpKTsK
QEAgLTUwNSwzMyArNDIyLDE1IEBAIHZvaWQgQ2FsbExpbmtJbmZvOjpzZXRTdHViKEpTQ2VsbCog
b3duZXIsIFJlZjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4mJiBuZXdTCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIodS5j
b2RlSUMubV9jYWxsZWVMb2NhdGlvbiksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbDxK
SVRTdHViUm91dGluZVB0clRhZz4obV9zdHViLT5jb2RlKCkuY29kZSgpKSk7CiAgICAgfQotICAg
IG1fbW9kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihNb2RlOjpQb2x5bW9ycGhpYyk7Ci19Ci0K
LXZvaWQgQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGhJbXBsKFZNJiwgQ0NhbGxIZWxwZXJzJiBq
aXQsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIsIFVzZURhdGFJQyB1c2VEYXRhSUMsIGJvb2wgaXNU
YWlsQ2FsbCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRpc3BhdGNoTGFiZWwpCi17Ci0gICAgaWYg
KHVzZURhdGFJQyA9PSBVc2VEYXRhSUM6OlllcykgewotICAgICAgICBpZiAoaXNUYWlsQ2FsbCkg
ewotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKExMSW50
OjpkZWZhdWx0Q2FsbCgpLmNvZGUoKS50YWdnZWRQdHIoKSksIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpDYWxsOjpjYWxsVGFyZ2V0R1BSKTsKLSAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRp
c3BhdGNoTGFiZWwsICZqaXQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIGppdC5uZWFyQ2FsbFRodW5rKENvZGVMb2NhdGlvbkxhYmVsPEpTRW50cnlQdHJUYWc+IHsg
TExJbnQ6OmRlZmF1bHRDYWxsKCkuY29kZSgpIH0ucmV0YWdnZWQ8Tm9QdHJUYWc+KCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGlzVGFpbENhbGwpCi0gICAgICAgIGppdC5m
YXJKdW1wKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsTGlua0luZm9HUFIsIE9wdGltaXppbmdD
YWxsTGlua0luZm86Om9mZnNldE9mU2xvd1BhdGhDYWxsRGVzdGluYXRpb24oKSksIEpTRW50cnlQ
dHJUYWcpOwotICAgIGVsc2UKLSAgICAgICAgaml0LmNhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGNhbGxMaW5rSW5mb0dQUiwgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZTbG93UGF0
aENhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRyeVB0clRhZyk7CiB9CiAKLXZvaWQgQ2FsbExpbmtJ
bmZvOjplbWl0RGF0YUlDU2xvd1BhdGgoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVn
IGNhbGxMaW5rSW5mb0dQUiwgYm9vbCBpc1RhaWxDYWxsLCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwg
ZGlzcGF0Y2hMYWJlbCkKK3ZvaWQgQ2FsbExpbmtJbmZvOjplbWl0RGF0YUlDU2xvd1BhdGgoVk0m
LCBDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikKIHsKLSAgICBlbWl0
U2xvd1BhdGhJbXBsKHZtLCBqaXQsIGNhbGxMaW5rSW5mb0dQUiwgVXNlRGF0YUlDOjpZZXMsIGlz
VGFpbENhbGwsIGRpc3BhdGNoTGFiZWwpOworICAgIGppdC5tb3ZlKGNhbGxMaW5rSW5mb0dQUiwg
R1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5jYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMiwgb2Zmc2V0T2ZTbG93UGF0aENhbGxEZXN0aW5hdGlvbigpKSwgSlNFbnRyeVB0
clRhZyk7CiB9CiAKLXN0ZDo6dHVwbGU8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0LCBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWw+IENhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYg
aml0LCBDb21waWxlVGltZUNhbGxMaW5rSW5mbyBjYWxsTGlua0luZm8sIEdQUlJlZyBjYWxsZWVH
UFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIpCitNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgQ2Fs
bExpbmtJbmZvOjplbWl0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENvbXBpbGVUaW1lQ2Fs
bExpbmtJbmZvIGNhbGxMaW5rSW5mbywgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5r
SW5mb0dQUikKIHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxPcHRpbWl6aW5nQ2Fs
bExpbmtJbmZvKj4oY2FsbExpbmtJbmZvKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PE9wdGlt
aXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5lbWl0RmFzdFBhdGgoaml0LCBjYWxs
ZWVHUFIsIGNhbGxMaW5rSW5mb0dQUik7CkBAIC01MzksNyArNDM4LDcgQEAgc3RkOjp0dXBsZTxN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gQ2FsbExpbmtJ
bmZvOjplbWl0RmEKICAgICByZXR1cm4gQ2FsbExpbmtJbmZvOjplbWl0RGF0YUlDRmFzdFBhdGgo
aml0LCBjYWxsZWVHUFIsIGNhbGxMaW5rSW5mb0dQUik7CiB9CiAKLXN0ZDo6dHVwbGU8TWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0LCBNYWNyb0Fzc2VtYmxlcjo6TGFiZWw+IENhbGxMaW5rSW5mbzo6
ZW1pdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIENvbXBpbGVUaW1lQ2FsbExp
bmtJbmZvIGNhbGxMaW5rSW5mbywgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5rSW5m
b0dQUiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFpbENhbGwpCitNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxGYXN0UGF0aChDQ2Fs
bEhlbHBlcnMmIGppdCwgQ29tcGlsZVRpbWVDYWxsTGlua0luZm8gY2FsbExpbmtJbmZvLCBHUFJS
ZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBTY29wZWRMYW1iZGE8dm9pZCgp
PiYmIHByZXBhcmVGb3JUYWlsQ2FsbCkKIHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKj4oY2FsbExpbmtJbmZvKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6Z2V0PE9wdGltaXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5lbWl0VGFp
bENhbGxGYXN0UGF0aChqaXQsIGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSLCBXVEZNb3ZlKHBy
ZXBhcmVGb3JUYWlsQ2FsbCkpOwpAQCAtNTUwLDIyICs0NDksMTMgQEAgc3RkOjp0dXBsZTxNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gQ2FsbExpbmtJbmZv
OjplbWl0VGEKIHZvaWQgQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgoVk0mIHZtLCBDQ2FsbEhl
bHBlcnMmIGppdCwgQ29tcGlsZVRpbWVDYWxsTGlua0luZm8gY2FsbExpbmtJbmZvLCBHUFJSZWcg
Y2FsbExpbmtJbmZvR1BSKQogewogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPE9wdGlt
aXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pKSB7Ci0gICAgICAgIHN0ZDo6Z2V0PE9w
dGltaXppbmdDYWxsTGlua0luZm8qPihjYWxsTGlua0luZm8pLT5lbWl0U2xvd1BhdGgodm0sIGpp
dCwgY2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgc3RkOjpnZXQ8T3B0aW1pemluZ0NhbGxMaW5r
SW5mbyo+KGNhbGxMaW5rSW5mbyktPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBlbWl0RGF0YUlDU2xvd1BhdGgodm0sIGppdCwgY2FsbExpbmtJbmZv
R1BSLCAvKiBpc1RhaWxDYWxsICovIGZhbHNlLCB7IH0pOworICAgIGVtaXREYXRhSUNTbG93UGF0
aCh2bSwgaml0LCBjYWxsTGlua0luZm9HUFIpOwogfQogCi12b2lkIENhbGxMaW5rSW5mbzo6ZW1p
dFRhaWxDYWxsU2xvd1BhdGgoVk0mIHZtLCBDQ2FsbEhlbHBlcnMmIGppdCwgQ29tcGlsZVRpbWVD
YWxsTGlua0luZm8gY2FsbExpbmtJbmZvLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWwgZGlzcGF0Y2hMYWJlbCkKLXsKLSAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKj4oY2FsbExpbmtJbmZvKSkgewotICAgICAg
ICBzdGQ6OmdldDxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKj4oY2FsbExpbmtJbmZvKS0+ZW1pdFRh
aWxDYWxsU2xvd1BhdGgodm0sIGppdCwgY2FsbExpbmtJbmZvR1BSLCBkaXNwYXRjaExhYmVsKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBlbWl0RGF0YUlDU2xvd1BhdGgodm0sIGppdCwg
Y2FsbExpbmtJbmZvR1BSLCAvKiBpc1RhaWxDYWxsICovIHRydWUsIGRpc3BhdGNoTGFiZWwpOwot
fQotCi1zdGQ6OnR1cGxlPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbD4gT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYg
aml0LCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKQorQ0NhbGxIZWxw
ZXJzOjpKdW1wTGlzdCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGgoQ0NhbGxI
ZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzVGFpbENhbGwoKSk7CiAKQEAgLTU3OCw3ICs0NjgsNyBA
QCBzdGQ6OnR1cGxlPENDYWxsSGVscGVyczo6SnVtcExpc3QsIE1hY3JvQXNzZW1ibGVyOjpMYWJl
bD4gT3B0aW1pemluZ0NhbGxMaW5rSW5mbwogICAgIHJldHVybiBlbWl0RmFzdFBhdGhJbXBsKHRo
aXMsIGppdCwgY2FsbGVlR1BSLCBjYWxsTGlua0luZm9HUFIsIHVzZURhdGFJQygpLCBpc1RhaWxD
YWxsKCksIG51bGxwdHIpOwogfQogCi1zdGQ6OnR1cGxlPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0VGFp
bENhbGxGYXN0UGF0aChDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVn
IGNhbGxMaW5rSW5mb0dQUiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFpbENh
bGwpCitNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6ZW1p
dFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsZWVHUFIsIEdQ
UlJlZyBjYWxsTGlua0luZm9HUFIsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFyZUZvclRh
aWxDYWxsKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzVGFpbENhbGwoKSk7CiAKQEAgLTU5MSwy
MCArNDgxLDExIEBAIHN0ZDo6dHVwbGU8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0LCBNYWNyb0Fz
c2VtYmxlcjo6TGFiZWw+IE9wdGltaXppbmdDYWxsTGlua0luCiAgICAgcmV0dXJuIGVtaXRGYXN0
UGF0aEltcGwodGhpcywgaml0LCBjYWxsZWVHUFIsIGNhbGxMaW5rSW5mb0dQUiwgdXNlRGF0YUlD
KCksIGlzVGFpbENhbGwoKSwgV1RGTW92ZShwcmVwYXJlRm9yVGFpbENhbGwpKTsKIH0KIAotdm9p
ZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgoVk0mIHZtLCBDQ2FsbEhlbHBl
cnMmIGppdCwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikKK3ZvaWQgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbzo6ZW1pdFNsb3dQYXRoKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQpCiB7Ci0gICAgc2V0
U2xvd1BhdGhDYWxsRGVzdGluYXRpb24oTExJbnQ6OmRlZmF1bHRDYWxsKCkuY29kZSgpKTsKLSAg
ICBSRUxFQVNFX0FTU0VSVCghaXNUYWlsQ2FsbCgpKTsKLSAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIodGhpcyksIGNhbGxMaW5rSW5mb0dQUik7Ci0gICAgcmV0dXJuIGVt
aXRTbG93UGF0aEltcGwodm0sIGppdCwgY2FsbExpbmtJbmZvR1BSLCB1c2VEYXRhSUMoKSwgaXNU
YWlsQ2FsbCgpLCB7IH0pOwotfQotCi12b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86OmVtaXRU
YWlsQ2FsbFNsb3dQYXRoKFZNJiB2bSwgQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBjYWxsTGlu
a0luZm9HUFIsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBkaXNwYXRjaExhYmVsKQotewotICAgIHNl
dFNsb3dQYXRoQ2FsbERlc3RpbmF0aW9uKExMSW50OjpkZWZhdWx0Q2FsbCgpLmNvZGUoKSk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoaXNUYWlsQ2FsbCgpKTsKLSAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIodGhpcyksIGNhbGxMaW5rSW5mb0dQUik7Ci0gICAgcmV0dXJuIGVt
aXRTbG93UGF0aEltcGwodm0sIGppdCwgY2FsbExpbmtJbmZvR1BSLCB1c2VEYXRhSUMoKSwgaXNU
YWlsQ2FsbCgpLCBkaXNwYXRjaExhYmVsKTsKKyAgICBzZXRTbG93UGF0aENhbGxEZXN0aW5hdGlv
bih2bS5nZXRDVElMaW5rQ2FsbCgpLmNvZGUoKSk7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHRoaXMpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LmNhbGwoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBvZmZzZXRPZlNsb3dQYXRoQ2FsbERl
c3RpbmF0aW9uKCkpLCBKU0VudHJ5UHRyVGFnKTsKIH0KIAogQ29kZUxvY2F0aW9uTGFiZWw8SlNJ
bnRlcm5hbFB0clRhZz4gT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6c2xvd1BhdGhTdGFydCgpCkBA
IC02ODQsNyArNTY1LDYgQEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RD
YWxsVGFyZ2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlTG9jYXQKIAogICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoTmVhckNhbGwobV9jYWxsTG9jYXRpb24sIHRhcmdldCk7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKHUuY29kZUlDLm1fY29kZUJsb2NrTG9jYXRpb24s
IGNvZGVCbG9jayk7Ci0gICAgbV9tb2RlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KE1vZGU6Okxp
bmtlZERpcmVjdCk7CiB9CiAKIHZvaWQgT3B0aW1pemluZ0NhbGxMaW5rSW5mbzo6aW5pdGlhbGl6
ZURpcmVjdENhbGxSZXBhdGNoKENDYWxsSGVscGVycyYgaml0KQpAQCAtNzE4LDE0ICs1OTgsMTYg
QEAgdm9pZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjpzZXREaXJlY3RDYWxsTWF4QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXModW5zaWduZWQKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotdm9p
ZCBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvOjppbml0aWFsaXplRnJvbURGR1VubGlua2VkQ2FsbExp
bmtJbmZvKFZNJiwgY29uc3QgREZHOjpVbmxpbmtlZENhbGxMaW5rSW5mbyYgdW5saW5rZWRDYWxs
TGlua0luZm8sIENvZGVCbG9jayogb3duZXIpCit2b2lkIE9wdGltaXppbmdDYWxsTGlua0luZm86
OmluaXRpYWxpemVGcm9tREZHVW5saW5rZWRDYWxsTGlua0luZm8oVk0mIHZtLCBjb25zdCBERkc6
OlVubGlua2VkQ2FsbExpbmtJbmZvJiB1bmxpbmtlZENhbGxMaW5rSW5mbykKIHsKLSAgICBtX293
bmVyID0gb3duZXI7CiAgICAgbV9kb25lTG9jYXRpb24gPSB1bmxpbmtlZENhbGxMaW5rSW5mby5k
b25lTG9jYXRpb247Ci0gICAgc2V0U2xvd1BhdGhDYWxsRGVzdGluYXRpb24oTExJbnQ6OmRlZmF1
bHRDYWxsKCkuY29kZSgpKTsKKyAgICBzZXRTbG93UGF0aENhbGxEZXN0aW5hdGlvbih2bS5nZXRD
VElMaW5rQ2FsbCgpLmNvZGUoKSk7CiAgICAgbV9jb2RlT3JpZ2luID0gdW5saW5rZWRDYWxsTGlu
a0luZm8uY29kZU9yaWdpbjsKICAgICBtX2NhbGxUeXBlID0gdW5saW5rZWRDYWxsTGlua0luZm8u
Y2FsbFR5cGU7CisgICAgbV9jYWxsZWVHUFIgPSB1bmxpbmtlZENhbGxMaW5rSW5mby5jYWxsZWVH
UFI7CiAgICAgbV9jYWxsTGlua0luZm9HUFIgPSB1bmxpbmtlZENhbGxMaW5rSW5mby5jYWxsTGlu
a0luZm9HUFI7CisgICAgaWYgKHVubGlua2VkQ2FsbExpbmtJbmZvLm1fZnJhbWVTaHVmZmxlRGF0
YSkKKyAgICAgICAgbV9mcmFtZVNodWZmbGVEYXRhID0gbWFrZVVuaXF1ZTxDYWxsRnJhbWVTaHVm
ZmxlRGF0YT4oKnVubGlua2VkQ2FsbExpbmtJbmZvLm1fZnJhbWVTaHVmZmxlRGF0YSk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5o
CmluZGV4IDY4ZGM5ZDhjYmFjZS4uZmQxMDU2M2EyMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC04MSwxNCArODEsNiBAQCBwdWJsaWM6
CiAgICAgICAgIERpcmVjdFRhaWxDYWxsCiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgTW9kZSA6
IHVpbnQ4X3QgewotICAgICAgICBJbml0LAotICAgICAgICBNb25vbW9ycGhpYywKLSAgICAgICAg
UG9seW1vcnBoaWMsCi0gICAgICAgIFZpcnR1YWwsCi0gICAgICAgIExpbmtlZERpcmVjdCwKLSAg
ICB9OwotCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgcG9seW1vcnBoaWNDYWxsZWVN
YXNrID0gMTsKICAgICAKICAgICBzdGF0aWMgQ2FsbFR5cGUgY2FsbFR5cGVGb3IoT3Bjb2RlSUQg
b3Bjb2RlSUQpOwpAQCAtMTg3LDI1ICsxNzksMjIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
aXNWYXJhcmdzQ2FsbFR5cGUoc3RhdGljX2Nhc3Q8Q2FsbFR5cGU+KG1fY2FsbFR5cGUpKTsKICAg
ICB9CiAKLSAgICBib29sIGlzTGlua2VkKCkgY29uc3QgeyByZXR1cm4gbW9kZSgpICE9IE1vZGU6
OkluaXQgJiYgbW9kZSgpICE9IE1vZGU6OlZpcnR1YWw7IH0KLSAgICB2b2lkIHVubGlua09yVXBn
cmFkZUltcGwoVk0mLCBDb2RlQmxvY2sqIG9sZENvZGVCbG9jaywgQ29kZUJsb2NrKiBuZXdDb2Rl
QmxvY2spOworICAgIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiBzdHViKCkgfHwgbV9j
YWxsZWVPckNvZGVCbG9jazsgfQorICAgIHZvaWQgdW5saW5rSW1wbChWTSYpOwogCiAgICAgZW51
bSBjbGFzcyBVc2VEYXRhSUMgOiBib29sIHsgTm8sIFllcyB9OwogCiAjaWYgRU5BQkxFKEpJVCkK
IHByb3RlY3RlZDoKLSAgICBzdGF0aWMgc3RkOjp0dXBsZTxNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gZW1pdEZhc3RQYXRoSW1wbChDYWxsTGlua0luZm8q
LCBDQ2FsbEhlbHBlcnMmLCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BS
LCBVc2VEYXRhSUMsIGJvb2wgaXNUYWlsQ2FsbCwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVw
YXJlRm9yVGFpbENhbGwpIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICBzdGF0aWMgc3RkOjp0dXBs
ZTxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gZW1pdERh
dGFJQ0Zhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxs
TGlua0luZm9HUFIpIFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAgICBzdGF0aWMgc3RkOjp0dXBsZTxN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbD4gZW1pdFRhaWxD
YWxsRGF0YUlDRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxlZUdQUiwgR1BSUmVn
IGNhbGxMaW5rSW5mb0dQUiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9yVGFpbENh
bGwpIFdBUk5fVU5VU0VEX1JFVFVSTjsKLQotICAgIHN0YXRpYyB2b2lkIGVtaXRTbG93UGF0aElt
cGwoVk0mLCBDQ2FsbEhlbHBlcnMmLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSLCBVc2VEYXRhSUMs
IGJvb2wgaXNUYWlsQ2FsbCwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsKTsKLSAgICBzdGF0aWMgdm9p
ZCBlbWl0RGF0YUlDU2xvd1BhdGgoVk0mLCBDQ2FsbEhlbHBlcnMmLCBHUFJSZWcgY2FsbExpbmtJ
bmZvR1BSLCBib29sIGlzVGFpbENhbGwsIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCk7CisgICAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0RmFzdFBhdGhJbXBsKENhbGxMaW5rSW5m
byosIENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9H
UFIsIFVzZURhdGFJQywgYm9vbCBpc1RhaWxDYWxsLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHBy
ZXBhcmVGb3JUYWlsQ2FsbCkgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgZW1pdERhdGFJQ0Zhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJl
ZyBjYWxsZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
KyAgICBzdGF0aWMgdm9pZCBlbWl0RGF0YUlDU2xvd1BhdGgoVk0mLCBDQ2FsbEhlbHBlcnMmLCBH
UFJSZWcgY2FsbExpbmtJbmZvR1BSKTsKKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IGVtaXRUYWlsQ2FsbERhdGFJQ0Zhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxs
ZWVHUFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJl
cGFyZUZvclRhaWxDYWxsKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAKIHB1YmxpYzoKLSAgICBzdGF0
aWMgc3RkOjp0dXBsZTxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QsIE1hY3JvQXNzZW1ibGVyOjpM
YWJlbD4gZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYsIENvbXBpbGVUaW1lQ2FsbExpbmtJbmZv
LCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9S
RVRVUk47Ci0gICAgc3RhdGljIHN0ZDo6dHVwbGU8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0LCBN
YWNyb0Fzc2VtYmxlcjo6TGFiZWw+IGVtaXRUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYs
IENvbXBpbGVUaW1lQ2FsbExpbmtJbmZvLCBHUFJSZWcgY2FsbGVlR1BSLCBHUFJSZWcgY2FsbExp
bmtJbmZvR1BSLCBTY29wZWRMYW1iZGE8dm9pZCgpPiYmIHByZXBhcmVGb3JUYWlsQ2FsbCkgV0FS
Tl9VTlVTRURfUkVUVVJOOworICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZW1p
dEZhc3RQYXRoKENDYWxsSGVscGVycyYsIENvbXBpbGVUaW1lQ2FsbExpbmtJbmZvLCBHUFJSZWcg
Y2FsbGVlR1BSLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKSBXQVJOX1VOVVNFRF9SRVRVUk47Cisg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBlbWl0VGFpbENhbGxGYXN0UGF0aChD
Q2FsbEhlbHBlcnMmLCBDb21waWxlVGltZUNhbGxMaW5rSW5mbywgR1BSUmVnIGNhbGxlZUdQUiwg
R1BSUmVnIGNhbGxMaW5rSW5mb0dQUiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVwYXJlRm9y
VGFpbENhbGwpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICBzdGF0aWMgdm9pZCBlbWl0U2xvd1Bh
dGgoVk0mLCBDQ2FsbEhlbHBlcnMmLCBDb21waWxlVGltZUNhbGxMaW5rSW5mbywgR1BSUmVnIGNh
bGxMaW5rSW5mb0dQUik7Ci0gICAgc3RhdGljIHZvaWQgZW1pdFRhaWxDYWxsU2xvd1BhdGgoVk0m
LCBDQ2FsbEhlbHBlcnMmLCBDb21waWxlVGltZUNhbGxMaW5rSW5mbywgR1BSUmVnIGNhbGxMaW5r
SW5mb0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsKTsKICNlbmRpZgogCiAgICAgdm9pZCByZXZl
cnRDYWxsVG9TdHViKCk7CkBAIC0yMjMsNiArMjEyLDcgQEAgcHVibGljOgogICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRvbmVMb2NhdGlvbigpOwogCiAgICAgdm9pZCBz
ZXRNb25vbW9ycGhpY0NhbGxlZShWTSYsIEpTQ2VsbCosIEpTT2JqZWN0KiBjYWxsZWUsIENvZGVC
bG9jayosIENvZGVQdHI8SlNFbnRyeVB0clRhZz4pOworICAgIHZvaWQgc2V0U2xvd1BhdGhDYWxs
RGVzdGluYXRpb24oQ29kZVB0cjxKU0VudHJ5UHRyVGFnPik7CiAgICAgdm9pZCBjbGVhckNhbGxl
ZSgpOwogICAgIEpTT2JqZWN0KiBjYWxsZWUoKTsKIApAQCAtMjQzLDEwICsyMzMsNiBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICB2b2lkIGNsZWFyU3R1YigpOwogCi0gICAgdm9pZCBzZXRWaXJ0dWFs
Q2FsbChWTSYsIEpTQ2VsbCogb3duZXIpOwotCi0gICAgdm9pZCByZXZlcnRDYWxsKFZNJik7Ci0K
ICAgICBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSogc3R1YigpIGNvbnN0CiAgICAgewogI2lm
IEVOQUJMRShKSVQpCkBAIC0zNDIsNyArMzI4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihDYWxsTGlua0luZm8sIHUpICsgT0JKRUNUX09GRlNFVE9GKFVuaW9u
VHlwZSwgZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxsRGVzdGluYXRpb24pOwogICAgIH0KIAorICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aENhbGxEZXN0aW5hdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxMaW5rSW5mbywgbV9zbG93UGF0
aENhbGxEZXN0aW5hdGlvbik7CisgICAgfQorCiAjaWYgRU5BQkxFKEpJVCkKKyAgICBHUFJSZWcg
Y2FsbGVlR1BSKCkgY29uc3Q7CiAgICAgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUigpIGNvbnN0Owog
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0dWIoKQpAQCAtMzgyLDM4ICszNzQsMzQg
QEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
VHlwZT4obV90eXBlKTsgfQogCi0gICAgTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8TW9kZT4obV9tb2RlKTsgfQotCi0gICAgSlNDZWxsKiBvd25lcigpIGNvbnN0IHsgcmV0
dXJuIG1fb3duZXI7IH0KLQotICAgIHN0ZDo6dHVwbGU8Q29kZUJsb2NrKiwgQnl0ZWNvZGVJbmRl
eD4gcmV0cmlldmVDYWxsZXIoSlNDZWxsKiBvd25lcik7Ci0KIHByb3RlY3RlZDoKLSAgICBDYWxs
TGlua0luZm8oVHlwZSB0eXBlLCBVc2VEYXRhSUMgdXNlRGF0YUlDLCBKU0NlbGwqIG93bmVyKQor
ICAgIENhbGxMaW5rSW5mbyhUeXBlIHR5cGUsIFVzZURhdGFJQyB1c2VEYXRhSUMpCiAgICAgICAg
IDogQ2FsbExpbmtJbmZvQmFzZShDYWxsU2l0ZVR5cGU6OkNhbGxMaW5rSW5mbykKKyAgICAgICAg
LCBtX2hhc1NlZW5TaG91bGRSZXBhdGNoKGZhbHNlKQorICAgICAgICAsIG1faGFzU2VlbkNsb3N1
cmUoZmFsc2UpCisgICAgICAgICwgbV9jbGVhcmVkQnlHQyhmYWxzZSkKKyAgICAgICAgLCBtX2Ns
ZWFyZWRCeVZpcnR1YWwoZmFsc2UpCisgICAgICAgICwgbV9hbGxvd1N0dWJzKHRydWUpCisgICAg
ICAgICwgbV9jYWxsVHlwZShOb25lKQogICAgICAgICAsIG1fdXNlRGF0YUlDKHN0YXRpY19jYXN0
PHVuc2lnbmVkPih1c2VEYXRhSUMpKQogICAgICAgICAsIG1fdHlwZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odHlwZSkpCi0gICAgICAgICwgbV9vd25lcihvd25lcikKICAgICB7CiAgICAgICAgIEFT
U0VSVCh0eXBlID09IHRoaXMtPnR5cGUoKSk7CiAgICAgICAgIEFTU0VSVCh1c2VEYXRhSUMgPT0g
dGhpcy0+dXNlRGF0YUlDKCkpOwogICAgIH0KIAotICAgIHZvaWQgcmVzZXQoVk0mKTsKLQotICAg
IGJvb2wgbV9oYXNTZWVuU2hvdWxkUmVwYXRjaCA6IDEgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9o
YXNTZWVuQ2xvc3VyZSA6IDEgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9jbGVhcmVkQnlHQyA6IDEg
eyBmYWxzZSB9OwotICAgIGJvb2wgbV9jbGVhcmVkQnlWaXJ0dWFsIDogMSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2FsbG93U3R1YnMgOiAxIHsgdHJ1ZSB9OwotICAgIHVuc2lnbmVkIG1fY2FsbFR5
cGUgOiA0IHsgQ2FsbFR5cGU6Ok5vbmUgfTsgLy8gQ2FsbFR5cGUKKyAgICBib29sIG1faGFzU2Vl
blNob3VsZFJlcGF0Y2ggOiAxOworICAgIGJvb2wgbV9oYXNTZWVuQ2xvc3VyZSA6IDE7CisgICAg
Ym9vbCBtX2NsZWFyZWRCeUdDIDogMTsKKyAgICBib29sIG1fY2xlYXJlZEJ5VmlydHVhbCA6IDE7
CisgICAgYm9vbCBtX2FsbG93U3R1YnMgOiAxOworICAgIHVuc2lnbmVkIG1fY2FsbFR5cGUgOiA0
OyAvLyBDYWxsVHlwZQogICAgIHVuc2lnbmVkIG1fdXNlRGF0YUlDIDogMTsgLy8gVXNlRGF0YUlD
CiAgICAgdW5zaWduZWQgbV90eXBlIDogMTsgLy8gVHlwZQotICAgIHVuc2lnbmVkIG1fbW9kZSA6
IDMgeyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTW9kZTo6SW5pdCkgfTsgLy8gTW9kZQogICAgIHVp
bnQ4X3QgbV9tYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvclZhcmFyZ3MgeyAwIH07IC8v
IEZvciB2YXJhcmdzOiB0aGUgcHJvZmlsZWQgbWF4aW11bSBudW1iZXIgb2YgYXJndW1lbnRzLiBG
b3IgZGlyZWN0OiB0aGUgbnVtYmVyIG9mIHN0YWNrIHNsb3RzIGFsbG9jYXRlZCBmb3IgYXJndW1l
bnRzLgotICAgIHVpbnQzMl90IG1fc2xvd1BhdGhDb3VudCB7IDAgfTsKIAogICAgIENvZGVMb2Nh
dGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IG1fZG9uZUxvY2F0aW9uOworICAgIENvZGVQdHI8
SlNFbnRyeVB0clRhZz4gbV9zbG93UGF0aENhbGxEZXN0aW5hdGlvbjsKICAgICB1bmlvbiBVbmlv
blR5cGUgewogICAgICAgICBVbmlvblR5cGUoKQogICAgICAgICAgICAgOiBkYXRhSUMgeyBudWxs
cHRyLCBudWxscHRyIH0KQEAgLTQzNSwxNyArNDIzLDE3IEBAIHByb3RlY3RlZDoKICNpZiBFTkFC
TEUoSklUKQogICAgIFJlZlB0cjxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZT4gbV9zdHViOwog
I2VuZGlmCi0gICAgSlNDZWxsKiBtX293bmVyIHsgbnVsbHB0ciB9OworICAgIHVpbnQzMl90IG1f
c2xvd1BhdGhDb3VudCB7IDAgfTsKIH07CiAKIGNsYXNzIEJhc2VsaW5lQ2FsbExpbmtJbmZvIGZp
bmFsIDogcHVibGljIENhbGxMaW5rSW5mbyB7CiBwdWJsaWM6CiAgICAgQmFzZWxpbmVDYWxsTGlu
a0luZm8oKQotICAgICAgICA6IENhbGxMaW5rSW5mbyhUeXBlOjpCYXNlbGluZSwgVXNlRGF0YUlD
OjpZZXMsIG51bGxwdHIpCisgICAgICAgIDogQ2FsbExpbmtJbmZvKFR5cGU6OkJhc2VsaW5lLCBV
c2VEYXRhSUM6OlllcykKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBpbml0aWFsaXplKFZNJiwg
Q29kZUJsb2NrKiwgQ2FsbFR5cGUsIEJ5dGVjb2RlSW5kZXgpOworICAgIHZvaWQgaW5pdGlhbGl6
ZShWTSYsIENhbGxUeXBlLCBCeXRlY29kZUluZGV4KTsKIAogICAgIHZvaWQgc2V0Q29kZUxvY2F0
aW9ucyhDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFnPiBkb25lTG9jYXRpb24pCiAg
ICAgewpAQCAtNDU1LDYgKzQ0Myw3IEBAIHB1YmxpYzoKICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4oKSBjb25zdCB7IHJldHVybiBDb2RlT3JpZ2luIHsgbV9ieXRlY29kZUluZGV4IH07IH0KIAog
I2lmIEVOQUJMRShKSVQpCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbGVlR1BSKCkg
eyByZXR1cm4gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUdQUjsgfQogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUigpIHsgcmV0dXJuIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFI7IH0KICNlbmRpZgogCkBAIC00ODAs
OCArNDY5LDkgQEAgc3RydWN0IEJhc2VsaW5lVW5saW5rZWRDYWxsTGlua0luZm8gOiBwdWJsaWMg
SlNDOjpVbmxpbmtlZENhbGxMaW5rSW5mbyB7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUlu
ZGV4OyAvLyBDdXJyZW50bHksIG9ubHkgdXNlZCBieSBiYXNlbGluZSwgc28gdGhpcyBjYW4gdHJp
dmlhbGx5IHByb2R1Y2UgYSBDb2RlT3JpZ2luLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICB2b2lk
IHNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGxUeXBlKSB7IH0KKyAgICB2b2lkIHNldFVwQ2Fs
bChDYWxsTGlua0luZm86OkNhbGxUeXBlLCBHUFJSZWcpIHsgfQogI2VuZGlmCisgICAgdm9pZCBz
ZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRhJikgeyB9CiB9Owog
CiAjaWYgRU5BQkxFKEpJVCkKQEAgLTQ5MSwxOSArNDgxLDIwIEBAIHB1YmxpYzoKICAgICBmcmll
bmQgY2xhc3MgQ2FsbExpbmtJbmZvOwogCiAgICAgT3B0aW1pemluZ0NhbGxMaW5rSW5mbygpCi0g
ICAgICAgIDogQ2FsbExpbmtJbmZvKFR5cGU6Ok9wdGltaXppbmcsIFVzZURhdGFJQzo6WWVzLCBu
dWxscHRyKQorICAgICAgICA6IENhbGxMaW5rSW5mbyhUeXBlOjpPcHRpbWl6aW5nLCBVc2VEYXRh
SUM6OlllcykKICAgICB7CiAgICAgfQogCi0gICAgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyhDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIFVzZURhdGFJQyB1c2VEYXRhSUMsIEpTQ2VsbCogb3duZXIpCi0g
ICAgICAgIDogQ2FsbExpbmtJbmZvKFR5cGU6Ok9wdGltaXppbmcsIHVzZURhdGFJQywgb3duZXIp
CisgICAgT3B0aW1pemluZ0NhbGxMaW5rSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIFVzZURh
dGFJQyB1c2VEYXRhSUMpCisgICAgICAgIDogQ2FsbExpbmtJbmZvKFR5cGU6Ok9wdGltaXppbmcs
IHVzZURhdGFJQykKICAgICAgICAgLCBtX2NvZGVPcmlnaW4oY29kZU9yaWdpbikKICAgICB7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUpCisgICAgdm9pZCBz
ZXRVcENhbGwoQ2FsbFR5cGUgY2FsbFR5cGUsIEdQUlJlZyBjYWxsZWVHUFIpCiAgICAgewogICAg
ICAgICBtX2NhbGxUeXBlID0gY2FsbFR5cGU7CisgICAgICAgIG1fY2FsbGVlR1BSID0gY2FsbGVl
R1BSOwogICAgIH0KIAogICAgIHZvaWQgc2V0Q29kZUxvY2F0aW9ucygKQEAgLTUxOCw2ICs1MDks
NyBAQCBwdWJsaWM6CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4gZmFz
dFBhdGhTdGFydCgpOwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IHNs
b3dQYXRoU3RhcnQoKTsKIAorICAgIEdQUlJlZyBjYWxsZWVHUFIoKSBjb25zdCB7IHJldHVybiBt
X2NhbGxlZUdQUjsgfQogICAgIEdQUlJlZyBjYWxsTGlua0luZm9HUFIoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxMaW5rSW5mb0dQUjsgfQogICAgIHZvaWQgc2V0Q2FsbExpbmtJbmZvR1BSKEdQUlJl
ZyBjYWxsTGlua0luZm9HUFIpIHsgbV9jYWxsTGlua0luZm9HUFIgPSBjYWxsTGlua0luZm9HUFI7
IH0KIApAQCAtNTI3LDM0ICs1MTksNDUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGlyZWN0Q2Fs
bFRhcmdldChDb2RlQmxvY2sqLCBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPik7CiAg
ICAgdm9pZCBzZXREaXJlY3RDYWxsTWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXModW5zaWdu
ZWQpOwogICAgIHVuc2lnbmVkIG1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yRGlyZWN0
Q2FsbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3JE
aXJlY3RDYWxsOyB9CisgICAgdm9pZCBlbWl0U2xvd1BhdGgoVk0mLCBDQ2FsbEhlbHBlcnMmKTsK
IAotICAgIHZvaWQgc2V0U2xvd1BhdGhDYWxsRGVzdGluYXRpb24oQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPik7Ci0KLSAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVPcmlnaW47IH0KKyAgICB2b2lkIHNldEZyYW1lU2h1ZmZsZURhdGEoY29uc3QgQ2FsbEZyYW1l
U2h1ZmZsZURhdGEmKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUZyb21ERkdVbmxpbmtlZENhbGxM
aW5rSW5mbyhWTSYsIGNvbnN0IERGRzo6VW5saW5rZWRDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sq
KTsKLQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTbG93UGF0aENhbGxEZXN0aW5hdGlv
bigpCisgICAgY29uc3QgQ2FsbEZyYW1lU2h1ZmZsZURhdGEqIGZyYW1lU2h1ZmZsZURhdGEoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPcHRpbWl6aW5nQ2FsbExpbmtJ
bmZvLCBtX3Nsb3dQYXRoQ2FsbERlc3RpbmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVT
aHVmZmxlRGF0YS5nZXQoKTsKICAgICB9CiAKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX2NvZGVPcmlnaW47IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZUZyb21E
RkdVbmxpbmtlZENhbGxMaW5rSW5mbyhWTSYsIGNvbnN0IERGRzo6VW5saW5rZWRDYWxsTGlua0lu
Zm8mKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVEaXJlY3RDYWxsUmVwYXRjaChD
Q2FsbEhlbHBlcnMmKTsKLSAgICBzdGQ6OnR1cGxlPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCwg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsPiBlbWl0RmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVn
IGNhbGxlZUdQUiwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUikgV0FSTl9VTlVTRURfUkVUVVJOOwot
ICAgIHN0ZDo6dHVwbGU8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0LCBNYWNyb0Fzc2VtYmxlcjo6
TGFiZWw+IGVtaXRUYWlsQ2FsbEZhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVH
UFIsIEdQUlJlZyBjYWxsTGlua0luZm9HUFIsIFNjb3BlZExhbWJkYTx2b2lkKCk+JiYgcHJlcGFy
ZUZvclRhaWxDYWxsKSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdm9pZCBlbWl0U2xvd1BhdGgo
Vk0mLCBDQ2FsbEhlbHBlcnMmLCBHUFJSZWcgY2FsbExpbmtJbmZvR1BSKTsKLSAgICB2b2lkIGVt
aXRUYWlsQ2FsbFNsb3dQYXRoKFZNJiwgQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxMaW5rSW5m
b0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QgZW1pdEZhc3RQYXRoKENDYWxsSGVscGVycyYsIEdQUlJlZyBjYWxsZWVHUFIsIEdQUlJlZyBj
YWxsTGlua0luZm9HUFIpIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QgZW1pdFRhaWxDYWxsRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnIGNhbGxl
ZUdQUiwgR1BSUmVnIGNhbGxMaW5rSW5mb0dQUiwgU2NvcGVkTGFtYmRhPHZvaWQoKT4mJiBwcmVw
YXJlRm9yVGFpbENhbGwpIFdBUk5fVU5VU0VEX1JFVFVSTjsKIAogICAgIENvZGVPcmlnaW4gbV9j
b2RlT3JpZ2luOwotICAgIENvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9zbG93UGF0aENhbGxEZXN0
aW5hdGlvbjsKICAgICBDb2RlTG9jYXRpb25OZWFyQ2FsbDxKU0ludGVybmFsUHRyVGFnPiBtX2Nh
bGxMb2NhdGlvbiBOT19VTklRVUVfQUREUkVTUzsKKyAgICBHUFJSZWcgbV9jYWxsZWVHUFIgeyBJ
bnZhbGlkR1BSUmVnIH07CiAgICAgR1BSUmVnIG1fY2FsbExpbmtJbmZvR1BSIHsgSW52YWxpZEdQ
UlJlZyB9OwogICAgIHVuc2lnbmVkIG1fbWF4QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3JE
aXJlY3RDYWxsIHsgMCB9OwogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+
IG1fc2xvd1BhdGhTdGFydDsKICAgICBDb2RlTG9jYXRpb25MYWJlbDxKU0ludGVybmFsUHRyVGFn
PiBtX2Zhc3RQYXRoU3RhcnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPENhbGxGcmFtZVNodWZmbGVE
YXRhPiBtX2ZyYW1lU2h1ZmZsZURhdGE7CiB9OwogCitpbmxpbmUgR1BSUmVnIENhbGxMaW5rSW5m
bzo6Y2FsbGVlR1BSKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHR5cGUoKSkgeworICAgIGNhc2Ug
VHlwZTo6QmFzZWxpbmU6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBCYXNlbGlu
ZUNhbGxMaW5rSW5mbyo+KHRoaXMpLT5jYWxsZWVHUFIoKTsKKyAgICBjYXNlIFR5cGU6Ok9wdGlt
aXppbmc6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBPcHRpbWl6aW5nQ2FsbExp
bmtJbmZvKj4odGhpcyktPmNhbGxlZUdQUigpOworICAgIH0KKyAgICByZXR1cm4gSW52YWxpZEdQ
UlJlZzsKK30KKwogaW5saW5lIEdQUlJlZyBDYWxsTGlua0luZm86OmNhbGxMaW5rSW5mb0dQUigp
IGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm9CYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm9CYXNlLmNwcAppbmRleCAxMTFjMjVlNTYxZDgu
LjdjZTBhMDBhNWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mb0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm9CYXNlLmNwcApAQCAtMzMsMTkgKzMzLDE5IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi12b2lkIENhbGxMaW5rSW5mb0Jhc2U6OnVubGlua09yVXBncmFkZShWTSYgdm0sIENv
ZGVCbG9jayogb2xkQ29kZUJsb2NrLCBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jaykKK3ZvaWQgQ2Fs
bExpbmtJbmZvQmFzZTo6dW5saW5rKFZNJiB2bSkKIHsKICAgICBzd2l0Y2ggKGNhbGxTaXRlVHlw
ZSgpKSB7CiAgICAgY2FzZSBDYWxsU2l0ZVR5cGU6OkNhbGxMaW5rSW5mbzoKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8Q2FsbExpbmtJbmZvKj4odGhpcyktPnVubGlua09yVXBncmFkZUltcGwodm0sIG9s
ZENvZGVCbG9jaywgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8Q2FsbExpbmtJ
bmZvKj4odGhpcyktPnVubGlua0ltcGwodm0pOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUo
SklUKQogICAgIGNhc2UgQ2FsbFNpdGVUeXBlOjpQb2x5bW9ycGhpY0NhbGxOb2RlOgotICAgICAg
ICBzdGF0aWNfY2FzdDxQb2x5bW9ycGhpY0NhbGxOb2RlKj4odGhpcyktPnVubGlua09yVXBncmFk
ZUltcGwodm0sIG9sZENvZGVCbG9jaywgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8UG9seW1vcnBoaWNDYWxsTm9kZSo+KHRoaXMpLT51bmxpbmtJbXBsKHZtKTsKICAgICAgICAg
YnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENhbGxTaXRlVHlwZTo6Q2FjaGVkQ2FsbDoKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8Q2FjaGVkQ2FsbCo+KHRoaXMpLT51bmxpbmtPclVwZ3JhZGVJbXBsKHZt
LCBvbGRDb2RlQmxvY2ssIG5ld0NvZGVCbG9jayk7CisgICAgICAgIHN0YXRpY19jYXN0PENhY2hl
ZENhbGwqPih0aGlzKS0+dW5saW5rSW1wbCh2bSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm9C
YXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvQmFzZS5o
CmluZGV4IDg4YmU2YTg0MTYyMy4uZWUzYjM5M2UzYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvQmFzZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm9CYXNlLmgKQEAgLTI1LDcgKzI1LDYgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBcml0eUNoZWNrTW9kZS5oIgogI2luY2x1ZGUg
IkpTQ1B0clRhZy5oIgogI2luY2x1ZGUgPHd0Zi9Db2RlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oPgpAQCAtNDAsOCArMzksNiBAQCBjbGFzcyBDYWxsU2xvdCB7CiBw
dWJsaWM6CiAgICAgSlNDZWxsKiBtX2NhbGxlZU9yRXhlY3V0YWJsZSB7IG51bGxwdHIgfTsKICAg
ICB1aW50MzJfdCBtX2NvdW50IHsgMCB9OwotICAgIHVpbnQ4X3QgbV9pbmRleCB7IDAgfTsKLSAg
ICBBcml0eUNoZWNrTW9kZSBtX2FyaXR5Q2hlY2tNb2RlIHsgTXVzdENoZWNrQXJpdHkgfTsKICAg
ICBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG1fdGFyZ2V0OwogICAgIENvZGVCbG9jayogbV9jb2Rl
QmxvY2sgeyBudWxscHRyIH07IC8vIFRoaXMgaXMgd2Vha2x5IGhlbGQuIEFuZCBjbGVhcmVkIHdo
ZW5ldmVyIG1fdGFyZ2V0IGlzIGNoYW5nZWQuCiAKQEAgLTUwLDcgKzQ3LDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZUYXJnZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoQ2FsbFNsb3QsIG1fdGFyZ2V0KTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZDb2RlQmxvY2soKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbFNsb3QsIG1fY29kZUJs
b2NrKTsgfQogfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKENhbGxTbG90KSA8PSAzMiwgIlRoaXMg
c2hvdWxkIGJlIHNtYWxsIGVub3VnaCB0byBrZWVwIGl0ZXJhdGlvbiBvZiB2ZWN0b3IgaW4gcG9s
eW1vcnBoaWMgY2FsbCBmYXN0Iik7CiAKIGNsYXNzIENhbGxMaW5rSW5mb0Jhc2UgOiBwdWJsaWMg
QmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvQmFzZT4gewogcHVibGljOgpAQCAtNzUs
NyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICBDYWxsU2l0ZVR5cGUgY2FsbFNpdGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsU2l0ZVR5cGU7IH0KIAotICAgIHZvaWQgdW5saW5rT3JVcGdyYWRl
KFZNJiwgQ29kZUJsb2NrKiwgQ29kZUJsb2NrKik7CisgICAgdm9pZCB1bmxpbmsoVk0mKTsKIAog
cHJpdmF0ZToKICAgICBDYWxsU2l0ZVR5cGUgbV9jYWxsU2l0ZVR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCBkMTg5MDI3
YzUwNWQuLjQwMjYxZjVkYTRjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAogICAgIAogICAgIC8v
IE5vdGUgdGhhdCBkZXNwaXRlIHJlcXVpcmluZyB0aGF0IHRoZSBsb2NrZXIgaXMgaGVsZCwgdGhp
cyBjb2RlIGlzIHJhY3kgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gdGhlIENhbGxMaW5rSW5mbzog
aXQgbWF5IGdldCBjbGVhcmVkIHdoaWxlIHRoaXMgY29kZSBydW5zISBUaGlzIGlzIGJlY2F1c2UK
LSAgICAvLyBDYWxsTGlua0luZm9CYXNlOjp1bmxpbmtPclVwZ3JhZGUoKSBtYXkgYmUgY2FsbGVk
IGZyb20gYSBkaWZmZXJlbnQgQ29kZUJsb2NrIHRoYW4gdGhlIG9uZSB0aGF0IG93bnMKKyAgICAv
LyBDYWxsTGlua0luZm9CYXNlOjp1bmxpbmsoKSBtYXkgYmUgY2FsbGVkIGZyb20gYSBkaWZmZXJl
bnQgQ29kZUJsb2NrIHRoYW4gdGhlIG9uZSB0aGF0IG93bnMKICAgICAvLyB0aGUgQ2FsbExpbmtJ
bmZvIGFuZCBjdXJyZW50bHkgd2Ugc2F2ZSBzcGFjZSBieSBub3QgaGF2aW5nIENhbGxMaW5rSW5m
b3Mga25vdyB3aG8gb3ducwogICAgIC8vIHRoZW0uIFNvLCB0aGVyZSBpcyBubyB3YXkgZm9yIGVp
dGhlciB0aGUgY2FsbGVyIG9mIENhbGxMaW5rSW5mbzo6dW5sb2NrKCkgb3IgdW5sb2NrKCkKICAg
ICAvLyBpdHNlbGYgdG8gZmlndXJlIG91dCB3aGljaCBsb2NrIHRvIGxvY2suCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGZkNWI5Y2QxNTg3OC4u
Njc3NGRmYTJkYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
fTsKIAogICAgIGF1dG8gbGlua19jYWxsTGlua0luZm8gPSBbJl0oY29uc3QgYXV0byYgaW5zdHJ1
Y3Rpb24sIGF1dG8gYnl0ZWNvZGUsIGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgIG1ldGFkYXRh
Lm1fY2FsbExpbmtJbmZvLmluaXRpYWxpemUodm0sIHRoaXMsIENhbGxMaW5rSW5mbzo6Y2FsbFR5
cGVGb3IoZGVjbHR5cGUoYnl0ZWNvZGUpOjpvcGNvZGVJRCksIGluc3RydWN0aW9uLmluZGV4KCkp
OworICAgICAgICBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5pbml0aWFsaXplKHZtLCBDYWxsTGlu
a0luZm86OmNhbGxUeXBlRm9yKGRlY2x0eXBlKGJ5dGVjb2RlKTo6b3Bjb2RlSUQpLCBpbnN0cnVj
dGlvbi5pbmRleCgpKTsKICAgICB9OwogCiAjZGVmaW5lIExJTktfRklFTEQoX19maWVsZCkgXApA
QCAtODYzLDcgKzg2Myw3IEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAgICAgLy8gU28sIGlm
IHdlIGRvbid0IHJlbW92ZSBpbmNvbWluZyBjYWxscywgYW5kIGdldCBkZXN0cm95ZWQgYmVmb3Jl
IHRoZQogICAgIC8vIENvZGVCbG9jayhzKSB0aGF0IGhhdmUgY2FsbHMgaW50byB1cywgdGhlbiB0
aGUgQ2FsbExpbmtJbmZvIHZlY3RvcidzCiAgICAgLy8gZGVzdHJ1Y3RvciB3aWxsIHRyeSB0byBy
ZW1vdmUgbm9kZXMgZnJvbSBvdXIgKG5vIGxvbmdlciB2YWxpZCkgbGlua2VkIGxpc3QuCi0gICAg
dW5saW5rT3JVcGdyYWRlSW5jb21pbmdDYWxscyh2bSwgbnVsbHB0cik7CisgICAgdW5saW5rSW5j
b21pbmdDYWxscygpOwogICAgIAogICAgIC8vIE5vdGUgdGhhdCBvdXIgb3V0Z29pbmcgY2FsbHMg
d2lsbCBiZSByZW1vdmVkIGZyb20gb3RoZXIgQ29kZUJsb2NrcycKICAgICAvLyBtX2luY29taW5n
Q2FsbHMgbGlua2VkIGxpc3RzIHRocm91Z2ggdGhlIGV4ZWN1dGlvbiBvZiB0aGUgfkNhbGxMaW5r
SW5mbwpAQCAtMjA4MiwyMyArMjA4MiwxNyBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogI2VuZGlm
CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKEpTQ2VsbCogY2FsbGVyLCBD
YWxsTGlua0luZm9CYXNlKiBpbmNvbWluZykKK3ZvaWQgQ29kZUJsb2NrOjpsaW5rSW5jb21pbmdD
YWxsKEpTQ2VsbCogY2FsbGVyLCBDYWxsRnJhbWUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm9C
YXNlKiBpbmNvbWluZywgYm9vbCBza2lwRmlyc3RGcmFtZSkKIHsKICAgICBpZiAoY2FsbGVyKQot
ICAgICAgICBub3RpY2VJbmNvbWluZ0NhbGwoY2FsbGVyKTsKKyAgICAgICAgbm90aWNlSW5jb21p
bmdDYWxsKGNhbGxlciwgY2FsbGVyRnJhbWUsIHNraXBGaXJzdEZyYW1lKTsKICAgICBtX2luY29t
aW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjp1bmxpbmtPclVw
Z3JhZGVJbmNvbWluZ0NhbGxzKFZNJiB2bSwgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2spCit2b2lk
IENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscygpCiB7Ci0gICAgU2VudGluZWxMaW5rZWRM
aXN0PENhbGxMaW5rSW5mb0Jhc2UsIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mb0Jh
c2U+PiB0b0JlUmVtb3ZlZDsKLSAgICB0b0JlUmVtb3ZlZC50YWtlRnJvbShtX2luY29taW5nQ2Fs
bHMpOwotCi0gICAgLy8gTm90ZSB0aGF0IHVwZ3JhZGUgbWF5IHJlbGluayBDYWxsTGlua0luZm8g
aW50byBuZXdDb2RlQmxvY2ssIGFuZCBpdCBpcyBwb3NzaWJsZSB0aGF0IHx0aGlzfCBhbmQgbmV3
Q29kZUJsb2NrIGFyZSB0aGUgc2FtZS4KLSAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiBuZXdDb2Rl
QmxvY2sgaXMgaW5zdGFsbGVkIGJ5IHVwZ3JhZGluZyBMTEludCB0byBCYXNlbGluZS4gSW4gdGhh
dCBjYXNlLCB8dGhpc3wncyBtX2luY29taW5nQ2FsbHMgd2lsbAotICAgIC8vIGJlIGFjY3VtdWxh
dGVkIGNvcnJlY3RseS4KLSAgICB3aGlsZSAoIXRvQmVSZW1vdmVkLmlzRW1wdHkoKSkKLSAgICAg
ICAgdG9CZVJlbW92ZWQuYmVnaW4oKS0+dW5saW5rT3JVcGdyYWRlKHZtLCB0aGlzLCBuZXdDb2Rl
QmxvY2spOworICAgIHdoaWxlICghbV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAgICAg
bV9pbmNvbWluZ0NhbGxzLmJlZ2luKCktPnVubGluayh2bSgpKTsKIH0KIAogQ29kZUJsb2NrKiBD
b2RlQmxvY2s6Om5ld1JlcGxhY2VtZW50KCkKQEAgLTIzMjgsOSArMjMyMiwxMSBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgYm9vbCBtX2RpZFJlY3Vyc2U7CiB9OwogCi12b2lkIENvZGVCbG9jazo6
bm90aWNlSW5jb21pbmdDYWxsKEpTQ2VsbCogY2FsbGVyKQordm9pZCBDb2RlQmxvY2s6Om5vdGlj
ZUluY29taW5nQ2FsbChKU0NlbGwqIGNhbGxlciwgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwgYm9v
bCBza2lwRmlyc3RGcmFtZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0pldHRpc29uZWQp
OworICAgIFVOVVNFRF9QQVJBTShjYWxsZXJGcmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHNraXBG
aXJzdEZyYW1lKTsKIAogICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0ganNEeW5hbWlj
Q2FzdDxDb2RlQmxvY2sqPihjYWxsZXIpOwogICAgIApAQCAtMjM4Nyw4ICsyMzgzLDIwIEBAIHZv
aWQgQ29kZUJsb2NrOjpub3RpY2VJbmNvbWluZ0NhbGwoSlNDZWxsKiBjYWxsZXIpCiAgICAgfQog
CiAgICAgLy8gUmVjdXJzaXZlIGNhbGxzIHdvbid0IGJlIGlubGluZWQuCisgICAgaWYgKGNhbGxl
ckZyYW1lKSB7CisgICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgICAgIFJlY3Vyc2lv
bkNoZWNrRnVuY3RvciBmdW5jdG9yKGNhbGxlckZyYW1lLCB0aGlzLCBPcHRpb25zOjptYXhpbXVt
SW5saW5pbmdEZXB0aCgpKTsKKyAgICAgICAgU3RhY2tWaXNpdG9yOjp2aXNpdCh2bS50b3BDYWxs
RnJhbWUsIHZtLCBmdW5jdG9yLCBza2lwRmlyc3RGcmFtZSk7CisKKyAgICAgICAgaWYgKGZ1bmN0
b3IuZGlkUmVjdXJzZSgpKSB7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJi
b3NlQ2FsbExpbmsoKSwgIiAgICBDbGVhcmluZyBTQUJJIGJlY2F1c2UgcmVjdXJzaW9uIHdhcyBk
ZXRlY3RlZC4iKTsKKyAgICAgICAgICAgIG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgaWYgKGNh
bGxlckNvZGVCbG9jay0+Y2FwYWJpbGl0eUxldmVsU3RhdGUoKSA9PSBERkc6OkNhcGFiaWxpdHlM
ZXZlbE5vdFNldCkgewotICAgICAgICBkYXRhTG9nKCJJbiBjYWxsIGZyb20gIiwgRnVsbENvZGVP
cmlnaW4oY2FsbGVyQ29kZUJsb2NrLCBDb2RlT3JpZ2luIHsgfSksICIgdG8gIiwgKnRoaXMsICI6
IGNhbGxlcidzIERGRyBjYXBhYmlsaXR5IGxldmVsIGlzIG5vdCBzZXQuXG4iKTsKKyAgICAgICAg
ZGF0YUxvZygiSW4gY2FsbCBmcm9tICIsIEZ1bGxDb2RlT3JpZ2luKGNhbGxlckNvZGVCbG9jaywg
Y2FsbGVyRnJhbWUgPyBjYWxsZXJGcmFtZS0+Y29kZU9yaWdpbigpIDogQ29kZU9yaWdpbiB7IH0p
LCAiIHRvICIsICp0aGlzLCAiOiBjYWxsZXIncyBERkcgY2FwYWJpbGl0eSBsZXZlbCBpcyBub3Qg
c2V0LlxuIik7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGUwMzBiNzlkZGRjNi4uNzQxNDNlN2My
NGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0y
ODIsOCArMjgyLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRCYXNlbGluZUpJVERhdGEoKTsK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0gICAgdm9pZCB1bmxpbmtPclVwZ3JhZGVJbmNvbWlu
Z0NhbGxzKFZNJiwgQ29kZUJsb2NrKik7Ci0gICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKEpTQ2Vs
bCogY2FsbGVyLCBDYWxsTGlua0luZm9CYXNlKik7CisgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0Nh
bGxzKCk7CisgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKEpTQ2VsbCogY2FsbGVyLCBDYWxsRnJh
bWUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm9CYXNlKiwgYm9vbCBza2lwRmlyc3RGcmFtZSA9
IGZhbHNlKTsKIAogICAgIGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIG91dE9mTGluZUp1bXBUYXJnZXQo
Y29uc3QgSlNJbnN0cnVjdGlvbiogcGMpOwogICAgIGludCBvdXRPZkxpbmVKdW1wT2Zmc2V0KEpT
SW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZzZXQpCkBAIC04ODEsNyArODgxLDcgQEAgcHJp
dmF0ZToKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCk7
CiAgICAgCi0gICAgdm9pZCBub3RpY2VJbmNvbWluZ0NhbGwoSlNDZWxsKiBjYWxsZXIpOworICAg
IHZvaWQgbm90aWNlSW5jb21pbmdDYWxsKEpTQ2VsbCogY2FsbGVyLCBDYWxsRnJhbWUqIGNhbGxl
ckZyYW1lLCBib29sIHNraXBGaXJzdEZyYW1lKTsKIAogICAgIHZvaWQgdXBkYXRlQWxsTm9uTGF6
eVZhbHVlUHJvZmlsZVByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCB1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
LCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWNoZUNvbXBpbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWNoZUNvbXBpbGVyLmNwcAppbmRl
eCBmYWFlNWM0ZDMxYTYuLmE5YjM2YzdjODRiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lubGluZUNhY2hlQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWNoZUNvbXBpbGVyLmNwcApAQCAtMjUwOCw3ICsy
NTA4LDcgQEAgdm9pZCBJbmxpbmVDYWNoZUNvbXBpbGVyOjpnZW5lcmF0ZUltcGwoQWNjZXNzQ2Fz
ZSYgYWNjZXNzQ2FzZSkKICAgICAgICAgICAgIHNldFNwaWxsU3RhdGVGb3JKU0NhbGwoc3BpbGxT
dGF0ZSk7CiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFhY2Nlc3MuY2FsbExpbmtJbmZv
KCkpOwotICAgICAgICAgICAgYXV0byogY2FsbExpbmtJbmZvID0gbV9jYWxsTGlua0luZm9zLmFk
ZChzdHViSW5mby5jb2RlT3JpZ2luLCBjb2RlQmxvY2stPnVzZURhdGFJQygpID8gQ2FsbExpbmtJ
bmZvOjpVc2VEYXRhSUM6OlllcyA6IENhbGxMaW5rSW5mbzo6VXNlRGF0YUlDOjpObywgbnVsbHB0
cik7CisgICAgICAgICAgICBhdXRvKiBjYWxsTGlua0luZm8gPSBtX2NhbGxMaW5rSW5mb3MuYWRk
KHN0dWJJbmZvLmNvZGVPcmlnaW4sIGNvZGVCbG9jay0+dXNlRGF0YUlDKCkgPyBDYWxsTGlua0lu
Zm86OlVzZURhdGFJQzo6WWVzIDogQ2FsbExpbmtJbmZvOjpVc2VEYXRhSUM6Ok5vKTsKICAgICAg
ICAgICAgIGFjY2Vzcy5tX2NhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsKIAogICAgICAgICAg
ICAgLy8gRklYTUU6IElmIHdlIGdlbmVyYXRlZCBhIHBvbHltb3JwaGljIGNhbGwgc3R1YiB0aGF0
IGp1bXBlZCBiYWNrIHRvIHRoZSBnZXR0ZXIKQEAgLTI1MjEsNyArMjUyMSw3IEBAIHZvaWQgSW5s
aW5lQ2FjaGVDb21waWxlcjo6Z2VuZXJhdGVJbXBsKEFjY2Vzc0Nhc2UmIGFjY2Vzc0Nhc2UpCiAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
OTE0CiAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmRpc2FsbG93U3R1YnMoKTsKIAotICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpDYWxsKTsKKyAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgbG9hZGVk
VmFsdWVHUFIpOwogCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IGRvbmU7CiAK
QEAgLTI1ODMsMTIgKzI1ODMsNyBAQCB2b2lkIElubGluZUNhY2hlQ29tcGlsZXI6OmdlbmVyYXRl
SW1wbChBY2Nlc3NDYXNlJiBhY2Nlc3NDYXNlKQogICAgICAgICAgICAgICAgICAgICAgICAgdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDEpLm9mZnNldCgpICogc2l6ZW9m
KFJlZ2lzdGVyKSkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBqaXQubW92ZShsb2Fk
ZWRWYWx1ZUdQUiwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2Fk
R1BSKCkpOwotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICAvLyBXZSAqYWx3YXlz
KiBrbm93IHRoYXQgdGhlIGdldHRlci9zZXR0ZXIsIGlmIG5vbi1udWxsLCBpcyBhIGNlbGwuCi0g
ICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi50YWdHUFIoKSk7
Ci0jZW5kaWYKLSAgICAgICAgICAgIGF1dG8gW3Nsb3dDYXNlLCBkaXNwYXRjaExhYmVsXSA9IENh
bGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKGppdCwgY2FsbExpbmtJbmZvLCBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVKSVRSZWdpc3Rl
cnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CisgICAgICAgICAgICBhdXRvIHNsb3dDYXNlID0g
Q2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGgoaml0LCBjYWxsTGlua0luZm8sIGxvYWRlZFZhbHVl
R1BSLCBsb2FkZWRWYWx1ZUdQUiA9PSBHUFJJbmZvOjpyZWdUMiA/IEdQUkluZm86OnJlZ1QwIDog
R1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgYXV0byBkb25lTG9jYXRpb24gPSBqaXQubGFi
ZWwoKTsKIAogICAgICAgICAgICAgaWYgKGFjY2Vzc0Nhc2UubV90eXBlID09IEFjY2Vzc0Nhc2U6
OkdldHRlcikKQEAgLTI1OTcsOCArMjU5MiwxMyBAQCB2b2lkIElubGluZUNhY2hlQ29tcGlsZXI6
OmdlbmVyYXRlSW1wbChBY2Nlc3NDYXNlJiBhY2Nlc3NDYXNlKQogCiAgICAgICAgICAgICBzbG93
Q2FzZS5saW5rKCZqaXQpOwogICAgICAgICAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gaml0Lmxh
YmVsKCk7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Z2xvYmFsT2JqZWN0KSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6Omdsb2JhbE9iamVjdEdQ
Uik7Ci0gICAgICAgICAgICBDYWxsTGlua0luZm86OmVtaXRTbG93UGF0aCh2bSwgaml0LCBjYWxs
TGlua0luZm8sIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwor
ICAgICAgICAgICAgaml0Lm1vdmUobG9hZGVkVmFsdWVHUFIsIEdQUkluZm86OnJlZ1QwKTsKKyNp
ZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgLy8gV2UgKmFsd2F5cyoga25vdyB0aGF0
IHRoZSBnZXR0ZXIvc2V0dGVyLCBpZiBub24tbnVsbCwgaXMgYSBjZWxsLgorICAgICAgICAgICAg
aml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEdQ
UkluZm86OnJlZ1QxKTsKKyNlbmRpZgorICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAg
ICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKHZtLCBqaXQpOwogCiAgICAgICAgICAgICBp
ZiAoYWNjZXNzQ2FzZS5tX3R5cGUgPT0gQWNjZXNzQ2FzZTo6R2V0dGVyKQogICAgICAgICAgICAg
ICAgIGppdC5zZXR1cFJlc3VsdHModmFsdWVSZWdzKTsKQEAgLTMyNTQsMTIgKzMyNTQsMTIgQEAg
dm9pZCBJbmxpbmVDYWNoZUNvbXBpbGVyOjplbWl0UHJveHlPYmplY3RBY2Nlc3MoUHJveHlPYmpl
Y3RBY2Nlc3NDYXNlJiBhY2Nlc3NDYXMKICAgICBzZXRTcGlsbFN0YXRlRm9ySlNDYWxsKHNwaWxs
U3RhdGUpOwogCiAgICAgQVNTRVJUKCFhY2Nlc3NDYXNlLmNhbGxMaW5rSW5mbygpKTsKLSAgICBh
dXRvKiBjYWxsTGlua0luZm8gPSBtX2NhbGxMaW5rSW5mb3MuYWRkKHN0dWJJbmZvLmNvZGVPcmln
aW4sIGNvZGVCbG9jay0+dXNlRGF0YUlDKCkgPyBDYWxsTGlua0luZm86OlVzZURhdGFJQzo6WWVz
IDogQ2FsbExpbmtJbmZvOjpVc2VEYXRhSUM6Ok5vLCBudWxscHRyKTsKKyAgICBhdXRvKiBjYWxs
TGlua0luZm8gPSBtX2NhbGxMaW5rSW5mb3MuYWRkKHN0dWJJbmZvLmNvZGVPcmlnaW4sIGNvZGVC
bG9jay0+dXNlRGF0YUlDKCkgPyBDYWxsTGlua0luZm86OlVzZURhdGFJQzo6WWVzIDogQ2FsbExp
bmtJbmZvOjpVc2VEYXRhSUM6Ok5vKTsKICAgICBhY2Nlc3NDYXNlLm1fY2FsbExpbmtJbmZvID0g
Y2FsbExpbmtJbmZvOwogCiAgICAgY2FsbExpbmtJbmZvLT5kaXNhbGxvd1N0dWJzKCk7CiAKLSAg
ICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGwpOworICAgIGNhbGxM
aW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCwgc2NyYXRjaEdQUik7CiAKICAg
ICB1bnNpZ25lZCBudW1iZXJPZlBhcmFtZXRlcnM7CiAgICAgSlNGdW5jdGlvbiogcHJveHlJbnRl
cm5hbE1ldGhvZCA9IG51bGxwdHI7CkBAIC0zMzI1LDIyICszMzI1LDIzIEBAIHZvaWQgSW5saW5l
Q2FjaGVDb21waWxlcjo6ZW1pdFByb3h5T2JqZWN0QWNjZXNzKFByb3h5T2JqZWN0QWNjZXNzQ2Fz
ZSYgYWNjZXNzQ2FzCiAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBy
b3h5SW50ZXJuYWxNZXRob2QpLCBzY3JhdGNoR1BSKTsKICAgICBqaXQuc3RvcmVDZWxsKHNjcmF0
Y2hHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc2l6
ZW9mKFJlZ2lzdGVyKSkpOwogCi0gICAgaml0Lm1vdmUoc2NyYXRjaEdQUiwgQmFzZWxpbmVKSVRS
ZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCkpOwotI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCi0gICAgLy8gV2UgKmFsd2F5cyoga25vdyB0aGF0IHRoZSBwcm94eSBmdW5jdGlvbiwg
aWYgbm9uLW51bGwsIGlzIGEgY2VsbC4KLSAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNh
bGxlZUpTUi50YWdHUFIoKSk7Ci0jZW5kaWYKLSAgICBhdXRvIFtzbG93Q2FzZSwgZGlzcGF0Y2hM
YWJlbF0gPSBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aChqaXQsIGNhbGxMaW5rSW5mbywgQmFz
ZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BSKCksIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOworICAgIGF1dG8gc2xvd0Nhc2Ug
PSBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aChqaXQsIGNhbGxMaW5rSW5mbywgc2NyYXRjaEdQ
Uiwgc2NyYXRjaEdQUiA9PSBHUFJJbmZvOjpyZWdUMiA/IEdQUkluZm86OnJlZ1QwIDogR1BSSW5m
bzo6cmVnVDIpOwogICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gaml0LmxhYmVsKCk7CiAKICAgICBp
ZiAoYWNjZXNzQ2FzZS5tX3R5cGUgIT0gQWNjZXNzQ2FzZTo6UHJveHlPYmplY3RTdG9yZSkKICAg
ICAgICAgaml0LnNldHVwUmVzdWx0cyh2YWx1ZVJlZ3MpOworCiAgICAgYXV0byBkb25lID0gaml0
Lmp1bXAoKTsKIAogICAgIHNsb3dDYXNlLmxpbmsoJmppdCk7CiAgICAgYXV0byBzbG93UGF0aFN0
YXJ0ID0gaml0LmxhYmVsKCk7Ci0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGdsb2JhbE9iamVjdCksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpnbG9iYWxPYmpl
Y3RHUFIpOwotICAgIENhbGxMaW5rSW5mbzo6ZW1pdFNsb3dQYXRoKHZtLCBqaXQsIGNhbGxMaW5r
SW5mbywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CisgICAg
aml0Lm1vdmUoc2NyYXRjaEdQUiwgR1BSSW5mbzo6cmVnVDApOworI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgLy8gV2UgKmFsd2F5cyoga25vdyB0aGF0IHRoZSBwcm94eSBmdW5jdGlvbiwgaWYg
bm9uLW51bGwsIGlzIGEgY2VsbC4KKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgR1BSSW5mbzo6cmVnVDEpOworI2VuZGlmCisgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIEdQUkluZm86
OnJlZ1QzKTsKKyAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCh2bSwgaml0KTsKIAogICAg
IGlmIChhY2Nlc3NDYXNlLm1fdHlwZSAhPSBBY2Nlc3NDYXNlOjpQcm94eU9iamVjdFN0b3JlKQog
ICAgICAgICBqaXQuc2V0dXBSZXN1bHRzKHZhbHVlUmVncyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKaW5kZXggOTc0MTQyMjc5ZjkzLi5iMjFhZTZjYjcxZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5jcHAKQEAgLTU2LDcg
KzU2LDYgQEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5TW9kdWxlLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgotI2luY2x1ZGUg
Ik1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiTW9kdWxlTmFtZXNw
YWNlQWNjZXNzQ2FzZS5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0QWNjZXNzQ2FzZS5oIgogI2lu
Y2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgpAQCAtOTgsMTcgKzk3LDI4IEBAIHN0YXRpYyBFQ01B
TW9kZSBlY21hTW9kZUZvcihQdXRCeUtpbmQgcHV0QnlLaW5kKQogICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CiAKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCitzdGF0aWMgdm9p
ZCBsaW5rU2xvd1BhdGhUbyhWTSYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IGNvZGVSZWYpCit7CisgICAgY2Fs
bExpbmtJbmZvLnNldFNsb3dQYXRoQ2FsbERlc3RpbmF0aW9uKGNvZGVSZWYuY29kZSgpLnRlbXBs
YXRlIHJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCkpOworfQorCiBzdGF0aWMgdm9pZCBsaW5rU2xv
d0ZvcihWTSYgdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogewotICAgIGlmIChjYWxs
TGlua0luZm8udHlwZSgpID09IENhbGxMaW5rSW5mbzo6VHlwZTo6T3B0aW1pemluZykKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8T3B0aW1pemluZ0NhbGxMaW5rSW5mbyY+KGNhbGxMaW5rSW5mbykuc2V0
U2xvd1BhdGhDYWxsRGVzdGluYXRpb24odm0uZ2V0Q1RJVmlydHVhbENhbGwoY2FsbExpbmtJbmZv
LmNhbGxNb2RlKCkpLmNvZGUoKS50ZW1wbGF0ZSByZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpKTsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxU
aHVuayA9IHZtLmdldENUSVZpcnR1YWxDYWxsKGNhbGxMaW5rSW5mby5jYWxsTW9kZSgpKTsKKyAg
ICBsaW5rU2xvd1BhdGhUbyh2bSwgY2FsbExpbmtJbmZvLCB2aXJ0dWFsVGh1bmspOwogfQotI2Vu
ZGlmCiAKLXZvaWQgbGlua01vbm9tb3JwaGljQ2FsbChWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENh
bGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9jaywgSlNP
YmplY3QqIGNhbGxlZSwgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQordm9pZCBsaW5r
TW9ub21vcnBoaWNDYWxsKAorICAgIFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENhbGxM
aW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9jaywKKyAgICBK
U09iamVjdCogY2FsbGVlLCBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHIpCiB7CiAgICAg
QVNTRVJUKCFjYWxsTGlua0luZm8uc3R1YigpKTsKIAorICAgIENhbGxGcmFtZSogY2FsbGVyRnJh
bWUgPSBjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCk7CisKKyAgICBKU0NlbGwqIG93bmVyID0gY2Fs
bGVyRnJhbWUtPmNvZGVPd25lckNlbGwoKTsKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9j
ayA9IGpzRHluYW1pY0Nhc3Q8Q29kZUJsb2NrKj4ob3duZXIpOyAvLyBXZWJBc3NlbWJseSAtPiBK
UyBzdHVicyBkb24ndCBoYXZlIGEgdmFsaWQgQ29kZUJsb2NrLgogICAgIEFTU0VSVChvd25lcik7
CiAKQEAgLTEyMCwxMyArMTMwLDQ2IEBAIHZvaWQgbGlua01vbm9tb3JwaGljQ2FsbChWTSYgdm0s
IEpTQ2VsbCogb3duZXIsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDb2RlCiAgICAgICAg
IGRhdGFMb2coIkxpbmtpbmcgY2FsbCBpbiAiLCBGdWxsQ29kZU9yaWdpbihjYWxsZXJDb2RlQmxv
Y2ssIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCkpLCAiIHRvICIsIHBvaW50ZXJEdW1wKGNhbGxl
ZUNvZGVCbG9jayksICIsIGVudHJ5cG9pbnQgYXQgIiwgY29kZVB0ciwgIlxuIik7CiAKICAgICBp
ZiAoY2FsbGVlQ29kZUJsb2NrKQotICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWlu
Z0NhbGwob3duZXIsICZjYWxsTGlua0luZm8pOworICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxp
bmtJbmNvbWluZ0NhbGwob3duZXIsIGNhbGxlckZyYW1lLCAmY2FsbExpbmtJbmZvKTsKIAogI2lm
IEVOQUJMRShKSVQpCi0gICAgaWYgKGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktpbmQoKSA9
PSBDb2RlRm9yQ2FsbCAmJiBjYWxsTGlua0luZm8uYWxsb3dTdHVicygpKQorICAgIGlmIChjYWxs
TGlua0luZm8uc3BlY2lhbGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwgJiYgY2FsbExpbmtJ
bmZvLmFsbG93U3R1YnMoKSkgeworICAgICAgICBsaW5rU2xvd1BhdGhUbyh2bSwgY2FsbExpbmtJ
bmZvLCB2bS5nZXRDVElTdHViKENvbW1vbkpJVFRodW5rSUQ6OkxpbmtQb2x5bW9ycGhpY0NhbGwp
LnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorICAgIAogICAgIGxpbmtTbG93Rm9yKHZtLCBjYWxsTGlua0luZm8pOworfQor
CitzdGF0aWMgdm9pZCByZXZlcnRDYWxsKFZNJiB2bSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0lu
Zm8sIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZVJlZikK
K3sKKyAgICBpZiAoY2FsbExpbmtJbmZvLmlzRGlyZWN0KCkpIHsKKyNpZiBFTkFCTEUoSklUKQor
ICAgICAgICBjYWxsTGlua0luZm8uY2xlYXJDb2RlQmxvY2soKTsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8T3B0aW1pemluZ0NhbGxMaW5rSW5mbyY+KGNhbGxMaW5rSW5mbykuaW5pdGlhbGl6ZURpcmVj
dENhbGwoKTsKICNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGxpbmtTbG93UGF0aFRvKHZt
LCBjYWxsTGlua0luZm8sIGNvZGVSZWYpOworCisgICAgICAgIGlmIChjYWxsTGlua0luZm8uc3R1
YigpKQorICAgICAgICAgICAgY2FsbExpbmtJbmZvLnJldmVydENhbGxUb1N0dWIoKTsKKyAgICAg
ICAgY2FsbExpbmtJbmZvLmNsZWFyQ2FsbGVlKCk7IC8vIFRoaXMgYWxzbyBjbGVhcnMgdGhlIGlu
bGluZSBjYWNoZSBib3RoIGZvciBkYXRhIGFuZCBjb2RlLWJhc2VkIGNhY2hlcy4KKyAgICB9Cisg
ICAgY2FsbExpbmtJbmZvLmNsZWFyU2VlbigpOworICAgIGNhbGxMaW5rSW5mby5jbGVhclN0dWIo
KTsKKyAgICBpZiAoY2FsbExpbmtJbmZvLmlzT25MaXN0KCkpCisgICAgICAgIGNhbGxMaW5rSW5m
by5yZW1vdmUoKTsKK30KKwordm9pZCB1bmxpbmtDYWxsKFZNJiB2bSwgQ2FsbExpbmtJbmZvJiBj
YWxsTGlua0luZm8pCit7CisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5
KCksICJVbmxpbmtpbmcgQ2FsbExpbmtJbmZvOiAiLCBSYXdQb2ludGVyKCZjYWxsTGlua0luZm8p
KTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIU9wdGlvbnM6OnVzZUxMSW50SUNzKCkgJiYgY2Fs
bExpbmtJbmZvLnR5cGUoKSA9PSBDYWxsTGlua0luZm86OlR5cGU6OkJhc2VsaW5lKSkKKyAgICAg
ICAgcmV2ZXJ0Q2FsbCh2bSwgY2FsbExpbmtJbmZvLCB2bS5nZXRDVElWaXJ0dWFsQ2FsbChjYWxs
TGlua0luZm8uY2FsbE1vZGUoKSkpOworICAgIGVsc2UKKyAgICAgICAgcmV2ZXJ0Q2FsbCh2bSwg
Y2FsbExpbmtJbmZvLCB2bS5nZXRDVElMaW5rQ2FsbCgpLnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPigpKTsKIH0KIAogQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqc1RvV2FzbUlDQ29kZVB0
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTT2JqZWN0KiBjYWxsZWUpCkBAIC0xNzYx
LDkgKzE4MDQsMjMgQEAgdm9pZCBsaW5rRGlyZWN0Q2FsbCgKICAgICBjYWxsTGlua0luZm8uc2V0
RGlyZWN0Q2FsbFRhcmdldChqc0Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihjYWxsZWVDb2RlQmxv
Y2spLCBDb2RlTG9jYXRpb25MYWJlbDxKU0VudHJ5UHRyVGFnPihjb2RlUHRyKSk7CiAKICAgICBp
ZiAoY2FsbGVlQ29kZUJsb2NrKQotICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNvbWlu
Z0NhbGwoY2FsbGVyQ29kZUJsb2NrLCAmY2FsbExpbmtJbmZvKTsKKyAgICAgICAgY2FsbGVlQ29k
ZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxlckNvZGVCbG9jaywgY2FsbEZyYW1lLCAmY2Fs
bExpbmtJbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgbGlua1ZpcnR1YWxGb3IoVk0mIHZtLCBDYWxs
TGlua0luZm8mIGNhbGxMaW5rSW5mbykKK3sKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVuayA9IHZtLmdldENUSVZpcnR1YWxDYWxsKGNh
bGxMaW5rSW5mby5jYWxsTW9kZSgpKTsKKyAgICByZXZlcnRDYWxsKHZtLCBjYWxsTGlua0luZm8s
IHZpcnR1YWxUaHVuayk7CisgICAgY2FsbExpbmtJbmZvLnNldENsZWFyZWRCeVZpcnR1YWwoKTsK
K30KKworbmFtZXNwYWNlIHsKK3N0cnVjdCBDYWxsVG9Db2RlUHRyIHsKKyAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgY2FsbDsKKyAgICBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHI7Cit9Owor
fSAvLyBhbm5vbnltb3VzIG5hbWVzcGFjZQorCiB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvd25lciwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDYWxsVmFyaWFudCBuZXdWYXJpYW50
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mby5hbGxvd1N0dWJzKCkpOwpAQCAt
MTc3NSw3ICsxODMyLDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSoKICAgICBEZWZlckdDRm9y
QVdoaWxlIGRlZmVyR0NGb3JBV2hpbGUodm0pOwogICAgIAogICAgIGlmICghbmV3VmFyaWFudCkg
ewotICAgICAgICBjYWxsTGlua0luZm8uc2V0VmlydHVhbENhbGwodm0sIG93bmVyKTsKKyAgICAg
ICAgbGlua1ZpcnR1YWxGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTE3ODksMTIgKzE4NDYsMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSoKICAg
ICBib29sIGlzRGF0YUlDID0gY2FsbExpbmtJbmZvLmlzRGF0YUlDKCk7CiAgICAgYm9vbCBpc1Rh
aWxDYWxsID0gY2FsbExpbmtJbmZvLmlzVGFpbENhbGwoKTsKIAotICAgIGJvb2wgaXNDbG9zdXJl
Q2FsbCA9IGZhbHNlOwogICAgIENhbGxWYXJpYW50TGlzdCBsaXN0OwotICAgIGlmIChQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZSogc3R1YiA9IGNhbGxMaW5rSW5mby5zdHViKCkpIHsKKyAgICBp
ZiAoUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBjYWxsTGlua0luZm8uc3R1Yigp
KQogICAgICAgICBsaXN0ID0gc3R1Yi0+dmFyaWFudHMoKTsKLSAgICAgICAgaXNDbG9zdXJlQ2Fs
bCA9IHN0dWItPmlzQ2xvc3VyZUNhbGwoKTsKLSAgICB9IGVsc2UgaWYgKEpTT2JqZWN0KiBvbGRD
YWxsZWUgPSBjYWxsTGlua0luZm8uY2FsbGVlKCkpCisgICAgZWxzZSBpZiAoSlNPYmplY3QqIG9s
ZENhbGxlZSA9IGNhbGxMaW5rSW5mby5jYWxsZWUoKSkKICAgICAgICAgbGlzdCA9IENhbGxWYXJp
YW50TGlzdCB7IENhbGxWYXJpYW50KG9sZENhbGxlZSkgfTsKICAgICAKICAgICBsaXN0ID0gdmFy
aWFudExpc3RXaXRoVmFyaWFudChsaXN0LCBuZXdWYXJpYW50KTsKQEAgLTE4MDIsMTYgKzE4NTcs
MTUgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSoKICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IGNs
b3N1cmUgY2FsbHMgdGhlbiBpdCBtYWtlcyBzZW5zZSB0byB0cmVhdCBhbGwgb2YgdGhlbSBhcyBj
bG9zdXJlIGNhbGxzLgogICAgIC8vIFRoaXMgbWFrZXMgc3dpdGNoaW5nIG9uIGNhbGxlZSBjaGVh
cGVyLiBJdCBhbHNvIHByb2R1Y2VzIHByb2ZpbGluZyB0aGF0J3MgZWFzaWVyIG9uIHRoZSBERkc7
CiAgICAgLy8gdGhlIERGRyBkb2Vzbid0IHJlYWxseSB3YW50IHRvIGRlYWwgd2l0aCBhIGNvbWJp
bmF0aW9uIG9mIGNsb3N1cmUgYW5kIG5vbi1jbG9zdXJlIGNhbGxlZXMuCi0gICAgaWYgKCFpc0Ns
b3N1cmVDYWxsKSB7Ci0gICAgICAgIGZvciAoQ2FsbFZhcmlhbnQgdmFyaWFudCA6IGxpc3QpICB7
Ci0gICAgICAgICAgICBpZiAodmFyaWFudC5pc0Nsb3N1cmVDYWxsKCkpIHsKLSAgICAgICAgICAg
ICAgICBsaXN0ID0gZGVzcGVjaWZpZWRWYXJpYW50TGlzdChsaXN0KTsKLSAgICAgICAgICAgICAg
ICBpc0Nsb3N1cmVDYWxsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KKyAgICBib29sIGlzQ2xvc3VyZUNhbGwgPSBmYWxzZTsKKyAgICBmb3IgKENhbGxWYXJp
YW50IHZhcmlhbnQgOiBsaXN0KSAgeworICAgICAgICBpZiAodmFyaWFudC5pc0Nsb3N1cmVDYWxs
KCkpIHsKKyAgICAgICAgICAgIGxpc3QgPSBkZXNwZWNpZmllZFZhcmlhbnRMaXN0KGxpc3QpOwor
ICAgICAgICAgICAgaXNDbG9zdXJlQ2FsbCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgIH0KLQorICAgIAogICAgIGlmIChpc0Nsb3N1cmVDYWxsKQogICAgICAgICBj
YWxsTGlua0luZm8uc2V0SGFzU2VlbkNsb3N1cmUoKTsKIApAQCAtMTgyNCwxMyArMTg3OCwxNCBA
QCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDZWxsKiBvd25lciwgQ2FsbEZyYW1lKgogICAgIGVsc2UKICAgICAgICAgbWF4UG9seW1vcnBo
aWNDYWxsVmFyaWFudExpc3RTaXplID0gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNDYWxsVmFyaWFu
dExpc3RTaXplKCk7CiAKLSAgICAvLyBXZSB1c2UgbGlzdC5zaXplKCkgaW5zdGVhZCBvZiBjYWxs
U2xvdHMuc2l6ZSgpIGJlY2F1c2Ugd2UgcmVzcGVjdCBDYWxsVmFyaWFudCBzaXplIGZvciBub3cu
CisgICAgLy8gV2UgdXNlIGxpc3Quc2l6ZSgpIGluc3RlYWQgb2YgY2FsbENhc2VzLnNpemUoKSBi
ZWNhdXNlIHdlIHJlc3BlY3QgQ2FsbFZhcmlhbnQgc2l6ZSBmb3Igbm93LgogICAgIGlmIChsaXN0
LnNpemUoKSA+IG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZSkgewotICAgICAgICBj
YWxsTGlua0luZm8uc2V0VmlydHVhbENhbGwodm0sIG93bmVyKTsKKyAgICAgICAgbGlua1ZpcnR1
YWxGb3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBW
ZWN0b3I8Q2FsbFNsb3QsIDE2PiBjYWxsU2xvdHM7CisgICAgVmVjdG9yPFBvbHltb3JwaGljQ2Fs
bENhc2UsIDE2PiBjYWxsQ2FzZXM7CisgICAgVmVjdG9yPGludDY0X3Q+IGNhc2VWYWx1ZXM7CiAg
ICAgCiAgICAgLy8gRmlndXJlIG91dCB3aGF0IG91ciBjYXNlcyBhcmUuCiAgICAgZm9yIChDYWxs
VmFyaWFudCB2YXJpYW50IDogbGlzdCkgewpAQCAtMTg0MSw1OCArMTg5Niw0NiBAQCB2b2lkIGxp
bmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
d25lciwgQ2FsbEZyYW1lKgogICAgICAgICAgICAgLy8gSWYgd2UgY2Fubm90IGhhbmRsZSBhIGNh
bGxlZSwgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGEgQ29kZUJsb2NrLAogICAgICAgICAgICAgLy8g
YXNzdW1lIHRoYXQgaXQncyBiZXR0ZXIgZm9yIHRoaXMgd2hvbGUgdGhpbmcgdG8gYmUgYSB2aXJ0
dWFsIGNhbGwuCiAgICAgICAgICAgICBpZiAoIWNvZGVCbG9jaykgewotICAgICAgICAgICAgICAg
IGNhbGxMaW5rSW5mby5zZXRWaXJ0dWFsQ2FsbCh2bSwgb3duZXIpOworICAgICAgICAgICAgICAg
IGxpbmtWaXJ0dWFsRm9yKHZtLCBjYWxsTGlua0luZm8pOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIEpTQ2VsbCogY2FzZVZhbHVl
ID0gbnVsbHB0cjsKKyAgICAgICAgaW50NjRfdCBuZXdDYXNlVmFsdWUgPSAwOwogICAgICAgICBp
ZiAoaXNDbG9zdXJlQ2FsbCkgewotICAgICAgICAgICAgY2FzZVZhbHVlID0gdmFyaWFudC5leGVj
dXRhYmxlKCk7CisgICAgICAgICAgICBuZXdDYXNlVmFsdWUgPSBiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KHZhcmlhbnQuZXhlY3V0YWJsZSgpKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3Vs
ZCBhZGQgYSBmYXN0IHBhdGggZm9yIEludGVybmFsRnVuY3Rpb24gd2l0aCBjbG9zdXJlIGNhbGwu
CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc5MzExCi0gICAgICAgICAgICBpZiAoIWNhc2VWYWx1ZSkKKyAgICAgICAgICAgIGlmICghbmV3
Q2FzZVZhbHVlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0gdmFyaWFudC5mdW5jdGlvbigpKQotICAg
ICAgICAgICAgICAgIGNhc2VWYWx1ZSA9IGZ1bmN0aW9uOworICAgICAgICAgICAgICAgIG5ld0Nh
c2VWYWx1ZSA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oZnVuY3Rpb24pOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGNhc2VWYWx1ZSA9IHZhcmlhbnQuaW50ZXJuYWxGdW5jdGlv
bigpOworICAgICAgICAgICAgICAgIG5ld0Nhc2VWYWx1ZSA9IGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4odmFyaWFudC5pbnRlcm5hbEZ1bmN0aW9uKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgQ2Fs
bFNsb3Qgc2xvdDsKLQotICAgICAgICBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IGNvZGVQdHI7Ci0g
ICAgICAgIGlmICh2YXJpYW50LmV4ZWN1dGFibGUoKSkgewotICAgICAgICAgICAgQVNTRVJUKHZh
cmlhbnQuZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKTsKLQotICAgICAgICAgICAg
Y29kZVB0ciA9IGpzVG9XYXNtSUNDb2RlUHRyKGNhbGxMaW5rSW5mby5zcGVjaWFsaXphdGlvbktp
bmQoKSwgdmFyaWFudC5mdW5jdGlvbigpKTsKLSAgICAgICAgICAgIGlmICghY29kZVB0cikgewot
ICAgICAgICAgICAgICAgIEFyaXR5Q2hlY2tNb2RlIGFyaXR5Q2hlY2sgPSBBcml0eUNoZWNrTm90
UmVxdWlyZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVCbG9jaykgewotICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIXZhcmlhbnQuZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KSB8fCBjYWxsTGlua0luZm8uaXNWYXJhcmdzKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAg
YXJpdHlDaGVjayA9IE11c3RDaGVja0FyaXR5OwotCi0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGNvZGVQdHIgPSB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29k
ZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoYXJpdHlDaGVjayk7Ci0gICAgICAgICAgICAgICAg
c2xvdC5tX2FyaXR5Q2hlY2tNb2RlID0gYXJpdHlDaGVjazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmludGVybmFsRnVuY3Rpb24o
KSk7Ci0gICAgICAgICAgICBjb2RlUHRyID0gdm0uZ2V0Q1RJSW50ZXJuYWxGdW5jdGlvblRyYW1w
b2xpbmVGb3IoQ29kZUZvckNhbGwpOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGlmIChj
YXNlVmFsdWVzLmNvbnRhaW5zKG5ld0Nhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIGRhdGFMb2co
IkVSUk9SOiBBdHRlbXB0IHRvIGFkZCBkdXBsaWNhdGUgY2FzZSB2YWx1ZS5cbiIpOworICAgICAg
ICAgICAgZGF0YUxvZygiRXhpc3RpbmcgY2FzZSB2YWx1ZXM6ICIpOworICAgICAgICAgICAgQ29t
bWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IGNhc2VWYWx1
ZXMpCisgICAgICAgICAgICAgICAgZGF0YUxvZyhjb21tYSwgdmFsdWUpOworICAgICAgICAgICAg
ZGF0YUxvZygiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIkF0dGVtcHRpbmcgdG8gYWRkOiAi
LCBuZXdDYXNlVmFsdWUsICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygiVmFyaWFudCBsaXN0
OiAiLCBsaXN0RHVtcChjYWxsQ2FzZXMpLCAiXG4iKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KKyNlbmRpZgogCi0gICAgICAgIHNsb3QubV9p
bmRleCA9IGNhbGxTbG90cy5zaXplKCk7Ci0gICAgICAgIHNsb3QubV90YXJnZXQgPSBjb2RlUHRy
OwotICAgICAgICBzbG90Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOwotICAgICAgICBzbG90Lm1f
Y2FsbGVlT3JFeGVjdXRhYmxlID0gY2FzZVZhbHVlOwotCi0gICAgICAgIGNhbGxTbG90cy5hcHBl
bmQoV1RGTW92ZShzbG90KSk7CisgICAgICAgIGNhbGxDYXNlcy5hcHBlbmQoUG9seW1vcnBoaWND
YWxsQ2FzZSh2YXJpYW50LCBjb2RlQmxvY2spKTsKKyAgICAgICAgY2FzZVZhbHVlcy5hcHBlbmQo
bmV3Q2FzZVZhbHVlKTsKICAgICB9CisgICAgQVNTRVJUKGNhbGxDYXNlcy5zaXplKCkgPT0gY2Fz
ZVZhbHVlcy5zaXplKCkpOwogCiAgICAgYm9vbCBub3RVc2luZ0NvdW50aW5nID0gaXNXZWJBc3Nl
bWJseSB8fCBjYWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjp0b3BUaWVySklU
KCk7Ci0gICAgaWYgKGNhbGxTbG90cy5pc0VtcHR5KCkpCisgICAgaWYgKGNhc2VWYWx1ZXMuaXNF
bXB0eSgpKQogICAgICAgICBub3RVc2luZ0NvdW50aW5nID0gdHJ1ZTsKIAogICAgIENhbGxGcmFt
ZSogY2FsbGVyRnJhbWUgPSBudWxscHRyOwpAQCAtMTkwMCwxMyArMTk0Myw1MyBAQCB2b2lkIGxp
bmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
d25lciwgQ2FsbEZyYW1lKgogICAgICAgICBjYWxsZXJGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVy
RnJhbWUoKTsKIAogICAgIGlmIChpc0RhdGFJQykgeworICAgICAgICBWZWN0b3I8Q2FsbFNsb3Qs
IDE2PiBjYWxsU2xvdHMoY2FsbENhc2VzLnNpemUoKSArIDEpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCBjYWxsQ2FzZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgICAgICBhdXRvJiBzbG90ID0gY2FsbFNsb3RzW2luZGV4XTsKKyAgICAgICAgICAgIGF1dG8m
IGNhbGxDYXNlID0gY2FsbENhc2VzW2luZGV4XTsKKyAgICAgICAgICAgIEpTQ2VsbCogY2FzZVZh
bHVlID0gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KHN0YXRpY19jYXN0PGludHB0cl90PihjYXNlVmFs
dWVzW2luZGV4XSkpOworICAgICAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNl
LnZhcmlhbnQoKTsKKworICAgICAgICAgICAgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRy
OworICAgICAgICAgICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgpKSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5oYXNKSVRDb2RlRm9yQ2FsbCgpKTsKKwor
ICAgICAgICAgICAgICAgIGNvZGVQdHIgPSBqc1RvV2FzbUlDQ29kZVB0cihjYWxsTGlua0luZm8u
c3BlY2lhbGl6YXRpb25LaW5kKCksIHZhcmlhbnQuZnVuY3Rpb24oKSk7CisgICAgICAgICAgICAg
ICAgaWYgKCFjb2RlUHRyKSB7CisgICAgICAgICAgICAgICAgICAgIEFyaXR5Q2hlY2tNb2RlIGFy
aXR5Q2hlY2sgPSBBcml0eUNoZWNrTm90UmVxdWlyZWQ7CisgICAgICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBjb2RlQmxvY2sgPSBjYWxsQ2FzZS5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCF2YXJpYW50LmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24o
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby5pc1ZhcmFyZ3MoKSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJpdHlDaGVjayA9IE11c3RDaGVja0FyaXR5OworCisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29kZVB0ciA9IHZhcmlhbnQuZXhlY3V0YWJs
ZSgpLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbChhcml0eUNoZWNr
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIEFTU0VSVCh2YXJpYW50LmludGVybmFsRnVuY3Rpb24oKSk7CisgICAgICAgICAgICAgICAg
Y29kZVB0ciA9IHZtLmdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVGb3JD
YWxsKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2xvdC5tX3RhcmdldCA9IGNvZGVQ
dHI7CisgICAgICAgICAgICBpZiAoY2FsbENhc2UuY29kZUJsb2NrKCkpCisgICAgICAgICAgICAg
ICAgc2xvdC5tX2NvZGVCbG9jayA9IGNhbGxDYXNlLmNvZGVCbG9jaygpOworICAgICAgICAgICAg
c2xvdC5tX2NhbGxlZU9yRXhlY3V0YWJsZSA9IGNhc2VWYWx1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGNhbGxTbG90cy5sYXN0KCkubV9jb2RlQmxvY2sgPSBjYWxsZXJDb2RlQmxvY2s7CisKICAg
ICAgICAgQ29tbW9uSklUVGh1bmtJRCBqaXRUaHVuayA9IENvbW1vbkpJVFRodW5rSUQ6OlBvbHlt
b3JwaGljVGh1bmtGb3JSZWd1bGFyQ2FsbDsKICAgICAgICAgaWYgKGlzQ2xvc3VyZUNhbGwpCiAg
ICAgICAgICAgICBqaXRUaHVuayA9IGlzVGFpbENhbGwgPyBDb21tb25KSVRUaHVua0lEOjpQb2x5
bW9ycGhpY1RodW5rRm9yVGFpbENhbGxGb3JDbG9zdXJlIDogQ29tbW9uSklUVGh1bmtJRDo6UG9s
eW1vcnBoaWNUaHVua0ZvclJlZ3VsYXJDYWxsRm9yQ2xvc3VyZTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgaml0VGh1bmsgPSBpc1RhaWxDYWxsID8gQ29tbW9uSklUVGh1bmtJRDo6UG9seW1v
cnBoaWNUaHVua0ZvclRhaWxDYWxsIDogQ29tbW9uSklUVGh1bmtJRDo6UG9seW1vcnBoaWNUaHVu
a0ZvclJlZ3VsYXJDYWxsOwogCi0gICAgICAgIGF1dG8gc3R1YlJvdXRpbmUgPSBQb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZTo6Y3JlYXRlKHZtLmdldENUSVN0dWIoaml0VGh1bmspLnJldGFnZ2Vk
PEpJVFN0dWJSb3V0aW5lUHRyVGFnPigpLCB2bSwgb3duZXIsIGNhbGxlckZyYW1lLCBjYWxsTGlu
a0luZm8sIGNhbGxTbG90cywgbnVsbHB0ciwgbm90VXNpbmdDb3VudGluZywgaXNDbG9zdXJlQ2Fs
bCk7CisgICAgICAgIGF1dG8gc3R1YlJvdXRpbmUgPSBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZTo6Y3JlYXRlKHZtLmdldENUSVN0dWIoaml0VGh1bmspLnJldGFnZ2VkPEpJVFN0dWJSb3V0aW5l
UHRyVGFnPigpLCB2bSwgb3duZXIsIGNhbGxlckZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxDYXNl
cywgY2FsbFNsb3RzLCBub3RVc2luZ0NvdW50aW5nKTsKKworICAgICAgICAvLyBUaGUgb3JpZ2lu
YWwgc2xvdyBwYXRoIGlzIHVucmVhY2hhYmxlIG9uIDY0LWJpdHMsIGJ1dCBzdGlsbAorICAgICAg
ICAvLyByZWFjaGFibGUgb24gMzItYml0cyBzaW5jZSBhIG5vbi1jZWxsIGNhbGxlZSB3aWxsIGFs
d2F5cworICAgICAgICAvLyB0cmlnZ2VyIHRoZSBzbG93IHBhdGgKKyAgICAgICAgbGlua1Nsb3dG
b3Iodm0sIGNhbGxMaW5rSW5mbyk7CiAKICAgICAgICAgLy8gSWYgdGhlcmUgaGFkIGJlZW4gYSBw
cmV2aW91cyBzdHViIHJvdXRpbmUsIHRoYXQgb25lIHdpbGwgZGllIGFzIHNvb24gYXMgdGhlIEdD
IHJ1bnMgYW5kIHNlZXMKICAgICAgICAgLy8gdGhhdCBpdCdzIG5vIGxvbmdlciBvbiBzdGFjay4K
QEAgLTE5MjIsMTAzICsyMDA1LDE2MSBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvd25lciwgQ2FsbEZyYW1lKgogCiAgICAg
QVNTRVJUKGNhbGxMaW5rSW5mby50eXBlKCkgPT0gQ2FsbExpbmtJbmZvOjpUeXBlOjpPcHRpbWl6
aW5nKTsKIAotICAgIENDYWxsSGVscGVycyBqaXQoY2FsbGVyQ29kZUJsb2NrKTsKLSAgICBHUFJS
ZWcgY2FsbGVlR1BSID0gQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUdQUjsKKyAg
ICBDQ2FsbEhlbHBlcnMgc3R1YkppdChjYWxsZXJDb2RlQmxvY2spOworICAgIEdQUlJlZyBjYWxs
ZWVHUFIgPSBjYWxsTGlua0luZm8uY2FsbGVlR1BSKCk7CiAKICAgICBVbmlxdWVBcnJheTx1aW50
MzJfdD4gZmFzdENvdW50czsKIAogICAgIGlmICghbm90VXNpbmdDb3VudGluZykgewotICAgICAg
ICBmYXN0Q291bnRzID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90PihjYWxsU2xvdHMuc2l6ZSgp
KTsKLSAgICAgICAgbWVtc2V0KGZhc3RDb3VudHMuZ2V0KCksIDAsIGNhbGxTbG90cy5zaXplKCkg
KiBzaXplb2YodWludDMyX3QpKTsKKyAgICAgICAgZmFzdENvdW50cyA9IG1ha2VVbmlxdWVBcnJh
eTx1aW50MzJfdD4oY2FsbENhc2VzLnNpemUoKSk7CisgICAgICAgIG1lbXNldChmYXN0Q291bnRz
LmdldCgpLCAwLCBjYWxsQ2FzZXMuc2l6ZSgpICogc2l6ZW9mKHVpbnQzMl90KSk7CiAgICAgfQog
Ci0gICAgVmVjdG9yPGludDY0X3Q+IGNhc2VWYWx1ZXM7Ci0gICAgY2FzZVZhbHVlcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGNhbGxTbG90cy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgc2xvdCA6
IGNhbGxTbG90cykgewotICAgICAgICBpbnQ2NF90IGNhc2VWYWx1ZSA9IGJpdHdpc2VfY2FzdDxp
bnRwdHJfdD4oc2xvdC5tX2NhbGxlZU9yRXhlY3V0YWJsZSk7Ci0jaWYgQVNTRVJUX0VOQUJMRUQK
LSAgICAgICAgaWYgKGNhc2VWYWx1ZXMuY29udGFpbnMoY2FzZVZhbHVlKSkgewotICAgICAgICAg
ICAgZGF0YUxvZygiRVJST1I6IEF0dGVtcHQgdG8gYWRkIGR1cGxpY2F0ZSBjYXNlIHZhbHVlLlxu
Iik7Ci0gICAgICAgICAgICBkYXRhTG9nKCJFeGlzdGluZyBjYXNlIHZhbHVlczogIik7Ci0gICAg
ICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHZhbHVl
IDogY2FzZVZhbHVlcykKLSAgICAgICAgICAgICAgICBkYXRhTG9nKGNvbW1hLCB2YWx1ZSk7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCJcbiIpOwotICAgICAgICAgICAgZGF0YUxvZygiQXR0ZW1wdGlu
ZyB0byBhZGQ6ICIsIGNhc2VWYWx1ZSwgIlxuIik7Ci0gICAgICAgICAgICBkYXRhTG9nKCJWYXJp
YW50IGxpc3Q6ICIsIGxpc3REdW1wKGNhbGxTbG90cy5tYXAoWyZdKGF1dG8mIHNsb3QpIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gUG9seW1vcnBoaWNDYWxsQ2FzZShDYWxsVmFyaWFudChzbG90
Lm1fY2FsbGVlT3JFeGVjdXRhYmxlKSwgc2xvdC5tX2NvZGVCbG9jayk7Ci0gICAgICAgICAgICB9
KSksICJcbiIpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgfQorICAgIHN0ZDo6b3B0aW9uYWw8Q2FsbEZyYW1lU2h1ZmZsZXI+IGZyYW1lU2h1ZmZs
ZXI7CisgICAgYXV0byYgb3B0aW1pemluZ0NhbGxMaW5rSW5mbyA9IHN0YXRpY19jYXN0PE9wdGlt
aXppbmdDYWxsTGlua0luZm8mPihjYWxsTGlua0luZm8pOworICAgIGlmIChvcHRpbWl6aW5nQ2Fs
bExpbmtJbmZvLmZyYW1lU2h1ZmZsZURhdGEoKSkgeworICAgICAgICBBU1NFUlQoaXNUYWlsQ2Fs
bCk7CisgICAgICAgIGZyYW1lU2h1ZmZsZXIuZW1wbGFjZShzdHViSml0LCAqb3B0aW1pemluZ0Nh
bGxMaW5rSW5mby5mcmFtZVNodWZmbGVEYXRhKCkpOworICAgIH0KKworICAgIGlmIChmcmFtZVNo
dWZmbGVyKSB7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgLy8gV2Ugd291bGQgaGF2
ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgY2FsbGVlIGlzIGEgY2VsbCwgYW5kIHdlIGNhbgor
ICAgICAgICAvLyB1c2UgdGhlIGFkZGl0aW9uYWwgcmVnaXN0ZXIgdGhpcyBidXlzIHVzLgorICAg
ICAgICBmcmFtZVNodWZmbGVyLT5hc3N1bWVDYWxsZWVJc0NlbGwoKTsKICNlbmRpZgotICAgICAg
ICBjYXNlVmFsdWVzLmFwcGVuZChjYXNlVmFsdWUpOworICAgICAgICBmcmFtZVNodWZmbGVyLT5s
b2NrR1BSKGNhbGxlZUdQUik7CiAgICAgfQogCi0gICAgR1BSUmVnIGNvbXBhcmlzb25WYWx1ZUdQ
UiA9IGNhbGxlZUdQUjsKLSAgICBpZiAoaXNDbG9zdXJlQ2FsbCkKLSAgICAgICAgY29tcGFyaXNv
blZhbHVlR1BSID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUik7
CisgICAgR1BSUmVnIGNvbXBhcmlzb25WYWx1ZUdQUjsKKyAgICBpZiAoaXNDbG9zdXJlQ2FsbCkg
eworICAgICAgICBpZiAoZnJhbWVTaHVmZmxlcikKKyAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1
ZUdQUiA9IGZyYW1lU2h1ZmZsZXItPmFjcXVpcmVHUFIoKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY29tcGFyaXNvblZhbHVlR1BSID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNo
R1BSKGNhbGxlZUdQUik7CisgICAgfSBlbHNlCisgICAgICAgIGNvbXBhcmlzb25WYWx1ZUdQUiA9
IGNhbGxlZUdQUjsKIAotICAgIEdQUlJlZyBmYXN0Q291bnRzQmFzZUdQUiA9IEFzc2VtYmx5SGVs
cGVyczo6c2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIGNvbXBhcmlzb25WYWx1ZUdQUik7Ci0g
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGZhc3RDb3VudHMuZ2V0KCkp
LCBmYXN0Q291bnRzQmFzZUdQUik7CisgICAgR1BSUmVnIGZhc3RDb3VudHNCYXNlR1BSOworICAg
IGlmIChmcmFtZVNodWZmbGVyKQorICAgICAgICBmYXN0Q291bnRzQmFzZUdQUiA9IGZyYW1lU2h1
ZmZsZXItPmFjcXVpcmVHUFIoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZmFzdENvdW50c0Jhc2VH
UFIgPQorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxl
ZUdQUiwgY29tcGFyaXNvblZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgfQorICAgIHN0
dWJKaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZmFzdENvdW50cy5nZXQoKSks
IGZhc3RDb3VudHNCYXNlR1BSKTsKKworICAgIGlmICghZnJhbWVTaHVmZmxlciAmJiBpc1RhaWxD
YWxsKSB7CisgICAgICAgIC8vIFdlIHN0cm9uZ2x5IGFzc3VtZSB0aGF0IGNhbGxlZUdQUiBpcyBu
b3QgYSBjYWxsZWUgc2F2ZSByZWdpc3RlciBpbiB0aGUgc2xvdyBwYXRoLgorICAgICAgICBBU1NF
UlQoIWNhbGxlckNvZGVCbG9jay0+aml0Q29kZSgpLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPmZp
bmQoY2FsbGVlR1BSKSk7CisgICAgICAgIHN0dWJKaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0Zv
cihjYWxsZXJDb2RlQmxvY2stPmppdENvZGUoKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAg
ICB9CiAKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgIGlmIChpc0Ns
b3N1cmVDYWxsKSB7CiAgICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIGhhdmUgYSBmdW5jdGlvbiBh
bmQgc3Rhc2ggdGhlIGV4ZWN1dGFibGUgaW4gc2NyYXRjaEdQUi4KICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKLSAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChq
aXQuYnJhbmNoSWZOb3RDZWxsKGNhbGxlZUdQUiwgRG9Ob3RIYXZlVGFnUmVnaXN0ZXJzKSk7Cisg
ICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoc3R1YkppdC5icmFuY2hJZk5vdENlbGwoY2FsbGVl
R1BSLCBEb05vdEhhdmVUYWdSZWdpc3RlcnMpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoY2FsbGVlR1BSKSk7CisgICAgICAg
ICAgICBzbG93UGF0aC5hcHBlbmQoc3R1YkppdC5icmFuY2hJZk5vdENlbGwoY2FsbGVlR1BSKSk7
CiAjZWxzZQogICAgICAgICAvLyBXZSB3b3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRo
ZSBjYWxsZWUgaXMgYSBjZWxsLgogI2VuZGlmCiAgICAgICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBh
ZGQgYSBmYXN0IHBhdGggZm9yIEludGVybmFsRnVuY3Rpb24gd2l0aCBjbG9zdXJlIGNhbGwuCi0g
ICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVHUFIp
KTsKKyAgICAgICAgc2xvd1BhdGguYXBwZW5kKHN0dWJKaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihj
YWxsZWVHUFIpKTsKIAotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Y2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCBj
b21wYXJpc29uVmFsdWVHUFIpOwotICAgICAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBqaXQuYnJh
bmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIGNvbXBhcmlzb25WYWx1ZUdQUiwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNvbXBhcmlzb25WYWx1ZUdQUiwgRnVu
Y3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0
YVRhZyksIGNvbXBhcmlzb25WYWx1ZUdQUik7Ci0gICAgICAgIGhhc0V4ZWN1dGFibGUubGluaygm
aml0KTsKKyAgICAgICAgc3R1YkppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxs
ZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIGNvbXBh
cmlzb25WYWx1ZUdQUik7CisgICAgICAgIGF1dG8gaGFzRXhlY3V0YWJsZSA9IHN0dWJKaXQuYnJh
bmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIGNvbXBhcmlzb25WYWx1ZUdQUiwgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKKyAgICAgICAg
c3R1YkppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjb21wYXJpc29uVmFsdWVHUFIs
IEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFy
ZURhdGFUYWcpLCBjb21wYXJpc29uVmFsdWVHUFIpOworICAgICAgICBoYXNFeGVjdXRhYmxlLmxp
bmsoJnN0dWJKaXQpOwogICAgIH0KIAogICAgIEJpbmFyeVN3aXRjaCBiaW5hcnlTd2l0Y2goY29t
cGFyaXNvblZhbHVlR1BSLCBjYXNlVmFsdWVzLCBCaW5hcnlTd2l0Y2g6OkludFB0cik7Ci0gICAg
d2hpbGUgKGJpbmFyeVN3aXRjaC5hZHZhbmNlKGppdCkpIHsKKyAgICB3aGlsZSAoYmluYXJ5U3dp
dGNoLmFkdmFuY2Uoc3R1YkppdCkpIHsKICAgICAgICAgc2l6ZV90IGNhc2VJbmRleCA9IGJpbmFy
eVN3aXRjaC5jYXNlSW5kZXgoKTsKLSAgICAgICAgYXV0byYgc2xvdCA9IGNhbGxTbG90c1tjYXNl
SW5kZXhdOwotICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50KHNsb3QubV9jYWxsZWVPckV4ZWN1
dGFibGUpOwotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHNsb3QubV9jb2RlQmxvY2s7
Ci0gICAgICAgIENvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0ciA9IHNsb3QubV90YXJnZXQ7
CisgICAgICAgIAorICAgICAgICBQb2x5bW9ycGhpY0NhbGxDYXNlJiBjYWxsQ2FzZSA9IGNhbGxD
YXNlc1tjYXNlSW5kZXhdOworICAgICAgICBDYWxsVmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2Uu
dmFyaWFudCgpOworICAgICAgICAKKyAgICAgICAgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2Rl
UHRyOworICAgICAgICBpZiAodmFyaWFudC5leGVjdXRhYmxlKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVCh2YXJpYW50LmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGNvZGVQdHIgPSBqc1RvV2FzbUlDQ29kZVB0cihjYWxsTGlua0lu
Zm8uc3BlY2lhbGl6YXRpb25LaW5kKCksIHZhcmlhbnQuZnVuY3Rpb24oKSk7CisgICAgICAgICAg
ICBpZiAoIWNvZGVQdHIpIHsKKyAgICAgICAgICAgICAgICBBcml0eUNoZWNrTW9kZSBhcml0eUNo
ZWNrID0gQXJpdHlDaGVja05vdFJlcXVpcmVkOworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBj
b2RlQmxvY2sgPSBjYWxsQ2FzZS5jb2RlQmxvY2soKSkgeworICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoIXZhcmlhbnQuZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkg
PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSB8fCBjYWxs
TGlua0luZm8uaXNWYXJhcmdzKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgYXJpdHlDaGVj
ayA9IE11c3RDaGVja0FyaXR5OworCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNvZGVQdHIgPSB2YXJpYW50LmV4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwo
KS0+YWRkcmVzc0ZvckNhbGwoYXJpdHlDaGVjayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5pbnRlcm5hbEZ1bmN0aW9uKCkpOwor
ICAgICAgICAgICAgY29kZVB0ciA9IHZtLmdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5l
Rm9yKENvZGVGb3JDYWxsKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgaWYgKGZhc3RD
b3VudHMpIHsKLSAgICAgICAgICAgIGppdC5hZGQzMigKKyAgICAgICAgICAgIHN0dWJKaXQuYWRk
MzIoCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksCiAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGZhc3RDb3VudHNCYXNlR1BSLCBjYXNl
SW5kZXggKiBzaXplb2YodWludDMyX3QpKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzVGFp
bENhbGwpIHsKLSAgICAgICAgICAgIGlmIChjb2RlQmxvY2spCi0gICAgICAgICAgICAgICAgaml0
LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb2RlQmxvY2spLCBDQ2FsbEhl
bHBlcnM6OmNhbGxlZUZyYW1lQ29kZUJsb2NrQmVmb3JlVGFpbENhbGwoKSk7Ci0gICAgICAgICAg
ICBqaXQubmVhclRhaWxDYWxsVGh1bmsoQ29kZUxvY2F0aW9uTGFiZWwgeyBjb2RlUHRyIH0pOwor
CisgICAgICAgIGlmIChmcmFtZVNodWZmbGVyKSB7CisgICAgICAgICAgICBDYWxsRnJhbWVTaHVm
ZmxlcihzdHViSml0LCBmcmFtZVNodWZmbGVyLT5zbmFwc2hvdCgpKS5wcmVwYXJlRm9yVGFpbENh
bGwoKTsKKyAgICAgICAgICAgIGlmIChjYWxsQ2FzZS5jb2RlQmxvY2soKSkKKyAgICAgICAgICAg
ICAgICBzdHViSml0LnN0b3JlUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsQ2Fz
ZS5jb2RlQmxvY2soKSksIENDYWxsSGVscGVyczo6Y2FsbGVlRnJhbWVDb2RlQmxvY2tCZWZvcmVU
YWlsQ2FsbCgpKTsKKyAgICAgICAgICAgIHN0dWJKaXQubmVhclRhaWxDYWxsVGh1bmsoQ29kZUxv
Y2F0aW9uTGFiZWwgeyBjb2RlUHRyIH0pOworICAgICAgICB9IGVsc2UgaWYgKGlzVGFpbENhbGwp
IHsKKyAgICAgICAgICAgIHN0dWJKaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOworICAgICAg
ICAgICAgaWYgKGNhbGxDYXNlLmNvZGVCbG9jaygpKQorICAgICAgICAgICAgICAgIHN0dWJKaXQu
c3RvcmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygp
KSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZVRhaWxDYWxsKCkpOwor
ICAgICAgICAgICAgc3R1YkppdC5uZWFyVGFpbENhbGxUaHVuayhDb2RlTG9jYXRpb25MYWJlbCB7
IGNvZGVQdHIgfSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoY29kZUJsb2Nr
KQotICAgICAgICAgICAgICAgIGppdC5zdG9yZVB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoY29kZUJsb2NrKSwgQ0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZUNh
bGwoKSk7Ci0gICAgICAgICAgICBqaXQubmVhckNhbGxUaHVuayhDb2RlTG9jYXRpb25MYWJlbCB7
IGNvZGVQdHIgfSk7Ci0gICAgICAgICAgICBqaXQuanVtcFRodW5rKGNhbGxMaW5rSW5mby5kb25l
TG9jYXRpb24oKSk7CisgICAgICAgICAgICBBU1NFUlQoIWlzVGFpbENhbGwpOworICAgICAgICAg
ICAgaWYgKGNhbGxDYXNlLmNvZGVCbG9jaygpKQorICAgICAgICAgICAgICAgIHN0dWJKaXQuc3Rv
cmVQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwg
Q0NhbGxIZWxwZXJzOjpjYWxsZWVGcmFtZUNvZGVCbG9ja0JlZm9yZUNhbGwoKSk7CisgICAgICAg
ICAgICBzdHViSml0Lm5lYXJDYWxsVGh1bmsoQ29kZUxvY2F0aW9uTGFiZWwgeyBjb2RlUHRyIH0p
OworICAgICAgICAgICAgc3R1YkppdC5qdW1wVGh1bmsoY2FsbExpbmtJbmZvLmRvbmVMb2NhdGlv
bigpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHNsb3dQYXRoLmxpbmsoJmppdCk7Ci0gICAg
YmluYXJ5U3dpdGNoLmZhbGxUaHJvdWdoKCkubGluaygmaml0KTsKLSAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsK
LSAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwg
R1BSSW5mbzo6cmVnVDMpOwotICAgIGlmIChpc1RhaWxDYWxsKQotICAgICAgICBqaXQubmVhclRh
aWxDYWxsVGh1bmsoQ29kZUxvY2F0aW9uTGFiZWwgeyB2bS5nZXRDVElTdHViKENvbW1vbkpJVFRo
dW5rSUQ6OlBvbHltb3JwaGljUmVwYXRjaFRodW5rKS5jb2RlKCkgfSk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIGppdC5uZWFyQ2FsbFRodW5rKENvZGVMb2NhdGlvbkxhYmVsIHsgdm0uZ2V0Q1RJU3R1
YihDb21tb25KSVRUaHVua0lEOjpQb2x5bW9ycGhpY1JlcGF0Y2hUaHVuaykuY29kZSgpIH0pOwot
ICAgICAgICBqaXQuanVtcFRodW5rKGNhbGxMaW5rSW5mby5kb25lTG9jYXRpb24oKSk7Ci0gICAg
fQorICAgIHNsb3dQYXRoLmxpbmsoJnN0dWJKaXQpOworICAgIGJpbmFyeVN3aXRjaC5mYWxsVGhy
b3VnaCgpLmxpbmsoJnN0dWJKaXQpOwogCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihqaXQs
IG93bmVyLCBMaW5rQnVmZmVyOjpQcm9maWxlOjpJbmxpbmVDYWNoZSwgSklUQ29tcGlsYXRpb25D
YW5GYWlsKTsKKyAgICBpZiAoZnJhbWVTaHVmZmxlcikgeworICAgICAgICBmcmFtZVNodWZmbGVy
LT5yZWxlYXNlR1BSKGNhbGxlZUdQUik7CisgICAgICAgIGZyYW1lU2h1ZmZsZXItPnJlbGVhc2VH
UFIoY29tcGFyaXNvblZhbHVlR1BSKTsKKyAgICAgICAgZnJhbWVTaHVmZmxlci0+cmVsZWFzZUdQ
UihmYXN0Q291bnRzQmFzZUdQUik7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgZnJh
bWVTaHVmZmxlci0+c2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6cmVn
VDEsIEdQUkluZm86OnJlZ1QwKSk7CisjZWxzZQorICAgICAgICBmcmFtZVNodWZmbGVyLT5zZXRD
YWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOworI2VuZGlmCisg
ICAgICAgIGZyYW1lU2h1ZmZsZXItPnByZXBhcmVGb3JTbG93UGF0aCgpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHN0dWJKaXQubW92ZShjYWxsZWVHUFIsIEdQUkluZm86OnJlZ1QwKTsKKyNpZiBV
U0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEdQUkluZm86OnJlZ1QxKTsKKyNlbmRpZgorICAg
IH0KKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9i
amVjdCksIEdQUkluZm86OnJlZ1QzKTsKKyAgICBzdHViSml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKCZjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7CisKKyAgICAvLyAx
LiBJZiBpdCBpcyBub3QgRGF0YUlDLCBsaW5rUmVnaXN0ZXIgaXMgbm90IHBvaW50aW5nIHRoZSBk
b25lTG9jYXRpb24uCisgICAgLy8gMi4gSWYgaXQgaXMgdGFpbC1jYWxsLCBsaW5rUmVnaXN0ZXIg
aXMgbm90IHBvaW50aW5nIHRoZSBkb25lTG9jYXRpb24gZm9yIHNsb3ctY2FsbCBjYXNlLiBCdXQg
c2luY2Ugd2UgYXJlIG5vdCBleGVjdXRpbmcgcHJlcGFyZUZvclRhaWxDYWxsLCB3ZSBzdGlsbCBz
dGFjayBlbnRyaWVzIGZvciB0aGUgY2FsbGVyJ3MgZnJhbWUuCisgICAgLy8gMy4gSWYgd2UncmUg
YSBkYXRhIElDLCB0aGVuIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBhbHJlYWR5IGNvcnJlY3QKKyAg
ICAvLyBUaHVzIHdlIG5lZWQgdG8gcHV0IGl0IGZvciB0aGUgc2xvdy1wYXRoIGNhbGwuCisgICAg
c3R1YkppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8uZG9u
ZUxvY2F0aW9uKCkudW50YWdnZWRQdHIoKSksIEdQUkluZm86OnJlZ1Q0KTsKKyAgICBzdHViSml0
LnJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEdQUkluZm86OnJlZ1Q0KTsKKyAgICBz
dHViSml0Lmp1bXBUaHVuayhDb2RlTG9jYXRpb25MYWJlbDxKSVRUaHVua1B0clRhZz4odm0uZ2V0
Q1RJU3R1YihDb21tb25KSVRUaHVua0lEOjpMaW5rUG9seW1vcnBoaWNDYWxsKS5jb2RlKCkpKTsK
KworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoc3R1YkppdCwgb3duZXIsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OklubGluZUNhY2hlLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgIGlmIChw
YXRjaEJ1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSB7Ci0gICAgICAgIGNhbGxMaW5rSW5mby5z
ZXRWaXJ0dWFsQ2FsbCh2bSwgb3duZXIpOworICAgICAgICBsaW5rVmlydHVhbEZvcih2bSwgY2Fs
bExpbmtJbmZvKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTIwMjcsOCArMjE2
OCw5IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0NlbGwqIG93bmVyLCBDYWxsRnJhbWUqCiAgICAgICAgICAgICBjYWxsZXJDb2RlQmxv
Y2ssIHBhdGNoQnVmZmVyLCBKSVRTdHViUm91dGluZVB0clRhZywKICAgICAgICAgICAgICJQb2x5
bW9ycGhpYyBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAsIHRhcmdldHMgJXMiLAog
ICAgICAgICAgICAgICAgIGlzV2ViQXNzZW1ibHkgPyAiV2ViQXNzZW1ibHkiIDogdG9DU3RyaW5n
KCpjYWxsZXJDb2RlQmxvY2spLmRhdGEoKSwgY2FsbExpbmtJbmZvLmRvbmVMb2NhdGlvbigpLnRh
Z2dlZFB0cigpLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhsaXN0RHVtcChjYWxsU2xvdHMu
bWFwKFsmXShhdXRvJiBzbG90KSB7IHJldHVybiBQb2x5bW9ycGhpY0NhbGxDYXNlKENhbGxWYXJp
YW50KHNsb3QubV9jYWxsZWVPckV4ZWN1dGFibGUpLCBzbG90Lm1fY29kZUJsb2NrKTsgfSkpKS5k
YXRhKCkpLAotICAgICAgICB2bSwgb3duZXIsIGNhbGxlckZyYW1lLCBjYWxsTGlua0luZm8sIGNh
bGxTbG90cywgV1RGTW92ZShmYXN0Q291bnRzKSwgbm90VXNpbmdDb3VudGluZywgaXNDbG9zdXJl
Q2FsbCk7CisgICAgICAgICAgICAgICAgdG9DU3RyaW5nKGxpc3REdW1wKGNhbGxDYXNlcykpLmRh
dGEoKSksCisgICAgICAgIHZtLCBvd25lciwgY2FsbGVyRnJhbWUsIGNhbGxMaW5rSW5mbywgY2Fs
bENhc2VzLAorICAgICAgICBXVEZNb3ZlKGZhc3RDb3VudHMpLCBub3RVc2luZ0NvdW50aW5nKTsK
IAogICAgIC8vIFRoZSBvcmlnaW5hbCBzbG93IHBhdGggaXMgdW5yZWFjaGFibGUgb24gNjQtYml0
cywgYnV0IHN0aWxsCiAgICAgLy8gcmVhY2hhYmxlIG9uIDMyLWJpdHMgc2luY2UgYSBub24tY2Vs
bCBjYWxsZWUgd2lsbCBhbHdheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRj
aC5oCmluZGV4IGU1MWI4MGQwMjhlMS4uNWMwYTRlNjhkMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXBhdGNoLmgKQEAgLTg0LDggKzg0LDkgQEAgdm9pZCByZXBhdGNoSGFz
UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNo
ZWFibGVJZGUKIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0Kiwg
Q29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYpOwogdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29k
ZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1
Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayosIEpTVmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIGJvb2wgd2FzRm91bmQpOwotdm9pZCBsaW5rTW9ub21vcnBoaWNDYWxsKFZNJiwgSlNDZWxs
KiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqIGNhbGxlZSwgQ29kZVB0cjxK
U0VudHJ5UHRyVGFnPik7Cit2b2lkIGxpbmtNb25vbW9ycGhpY0NhbGwoVk0mLCBDYWxsRnJhbWUq
LCBDYWxsTGlua0luZm8mLCBDb2RlQmxvY2sqLCBKU09iamVjdCogY2FsbGVlLCBDb2RlUHRyPEpT
RW50cnlQdHJUYWc+KTsKIHZvaWQgbGlua0RpcmVjdENhbGwoQ2FsbEZyYW1lKiwgT3B0aW1pemlu
Z0NhbGxMaW5rSW5mbyYsIENvZGVCbG9jayosIENvZGVQdHI8SlNFbnRyeVB0clRhZz4pOwordm9p
ZCB1bmxpbmtDYWxsKFZNJiwgQ2FsbExpbmtJbmZvJik7CiB2b2lkIGxpbmtQb2x5bW9ycGhpY0Nh
bGwoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBD
YWxsVmFyaWFudCk7CiB2b2lkIHJlc2V0R2V0QnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXNldFB1dEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJiwgUHV0QnlLaW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZXBhdGNoSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1JlcGF0Y2hJbmxpbmVzLmgKaW5kZXggYWIyZWRmZjNiOWU3Li4zZGVkOWU5ZDdlNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXBhdGNoSW5saW5lcy5oCkBAIC0y
NSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5o
IgogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgogI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5o
IgogI2luY2x1ZGUgIlJlcGF0Y2guaCIKQEAgLTM0LDUwICszMyw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1pbmxpbmUgdm9pZCogdGhyb3dOb3RBRnVuY3Rpb25FcnJvckZyb21DYWxsSUMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvd25lciwgSlNWYWx1ZSBjYWxsZWUs
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKQotewotICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8gZXJyb3JNZXNzYWdlID0gY29uc3RydWN0RXJyb3JNZXNzYWdlKGdsb2JhbE9iamVjdCwg
Y2FsbGVlLCAiaXMgbm90IGEgZnVuY3Rpb24iX3MpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIG51bGxwdHIpOwotICAgIGlmIChVTkxJS0VMWSghZXJyb3JNZXNzYWdlKSkgewotICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIC8vIENhbGwgSUMgd2lsbCB0aHJvdyB0aGVz
ZSBlcnJvcnMgYWZ0ZXIgdGhyb3dpbmcgYXdheSB0aGUgY2FsbGVyJ3MgZnJhbWUgd2hlbiBpdCBp
cyBhIHRhaWwtY2FsbC4KLSAgICAvLyBCdXQgd2Ugd291bGQgbGlrZSB0byBoYXZlIGVycm9yIGlu
Zm9ybWF0aW9uIGZvciB0aGVtIGZyb20gdGhlIHRocm93biBmcmFtZS4KLSAgICAvLyBUaGlzIGZy
YW1lIGluZm9ybWF0aW9uIGNhbiBiZSByZWNvbnN0cnVjdGVkIGVhc2lseSBzaW5jZSB3ZSBoYXZl
IENvZGVPcmlnaW4gYW5kIG93bmVyIENvZGVCbG9jayBmb3IgQ2FsbExpbmtJbmZvLgotICAgIGF1
dG8gW2NvZGVCbG9jaywgYnl0ZWNvZGVJbmRleF0gPSBjYWxsTGlua0luZm8tPnJldHJpZXZlQ2Fs
bGVyKG93bmVyKTsKLSAgICBpZiAoY29kZUJsb2NrKQotICAgICAgICBlcnJvck1lc3NhZ2UgPSBh
cHBlbmRTb3VyY2VUb0Vycm9yTWVzc2FnZShjb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGVycm9y
TWVzc2FnZSwgcnVudGltZVR5cGVGb3JWYWx1ZShjYWxsZWUpLCBub3RBRnVuY3Rpb25Tb3VyY2VB
cHBlbmRlcik7Ci0gICAgYXV0byogZXJyb3IgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJvck1l
c3NhZ2UsIEpTVmFsdWUoKSwgRXJyb3JUeXBlOjpUeXBlRXJyb3IsIG93bmVyLCBjYWxsTGlua0lu
Zm8pOwotICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKTsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotaW5saW5lIHZvaWQqIHRocm93Tm90QUNvbnN0cnVjdG9y
RXJyb3JGcm9tQ2FsbElDKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3du
ZXIsIEpTVmFsdWUgY2FsbGVlLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykKLXsKLSAgICBW
TSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGNvbnN0cnVjdEVycm9yTWVz
c2FnZShnbG9iYWxPYmplY3QsIGNhbGxlZSwgImlzIG5vdCBhIGNvbnN0cnVjdG9yIl9zKTsKLSAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICBpZiAoVU5MSUtFTFko
IWVycm9yTWVzc2FnZSkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgLy8gQ2Fs
bCBJQyB3aWxsIHRocm93IHRoZXNlIGVycm9ycyBhZnRlciB0aHJvd2luZyBhd2F5IHRoZSBjYWxs
ZXIncyBmcmFtZSB3aGVuIGl0IGlzIGEgdGFpbC1jYWxsLgotICAgIC8vIEJ1dCB3ZSB3b3VsZCBs
aWtlIHRvIGhhdmUgZXJyb3IgaW5mb3JtYXRpb24gZm9yIHRoZW0gZnJvbSB0aGUgdGhyb3duIGZy
YW1lLgotICAgIC8vIFRoaXMgZnJhbWUgaW5mb3JtYXRpb24gY2FuIGJlIHJlY29uc3RydWN0ZWQg
ZWFzaWx5IHNpbmNlIHdlIGhhdmUgQ29kZU9yaWdpbiBhbmQgb3duZXIgQ29kZUJsb2NrIGZvciBD
YWxsTGlua0luZm8uCi0gICAgYXV0byBbY29kZUJsb2NrLCBieXRlY29kZUluZGV4XSA9IGNhbGxM
aW5rSW5mby0+cmV0cmlldmVDYWxsZXIob3duZXIpOwotICAgIGlmIChjb2RlQmxvY2spCi0gICAg
ICAgIGVycm9yTWVzc2FnZSA9IGFwcGVuZFNvdXJjZVRvRXJyb3JNZXNzYWdlKGNvZGVCbG9jaywg
Ynl0ZWNvZGVJbmRleCwgZXJyb3JNZXNzYWdlLCBydW50aW1lVHlwZUZvclZhbHVlKGNhbGxlZSks
IGRlZmF1bHRTb3VyY2VBcHBlbmRlcik7Ci0gICAgYXV0byogZXJyb3IgPSBFcnJvckluc3RhbmNl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpUeXBl
RXJyb3IpLCBlcnJvck1lc3NhZ2UsIEpTVmFsdWUoKSwgRXJyb3JUeXBlOjpUeXBlRXJyb3IsIG93
bmVyLCBjYWxsTGlua0luZm8pOwotICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVycm9yKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotaW5saW5lIHZvaWQqIGhhbmRs
ZUhvc3RDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3duZXIsIENh
bGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTVmFsdWUgY2FsbGVlLCBDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbykKK2lubGluZSBVR1BSUGFpciBoYW5kbGVIb3N0Q2FsbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU1ZhbHVlIGNhbGxlZSwgQ2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm8pCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTkzLDE0
ICs0OSwyMyBAQCBpbmxpbmUgdm9pZCogaGFuZGxlSG9zdENhbGwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDZWxsKiBvd25lciwgQ2FsbEZyYQogICAgICAgICAgICAgY2FsbGVlRnJh
bWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgICAgIHZtLmVuY29kZWRI
b3N0Q2FsbFJldHVyblZhbHVlID0gY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGFzT2JqZWN0KGNh
bGxlZSktPmdsb2JhbE9iamVjdCgpLCBjYWxsZWVGcmFtZSk7CiAgICAgICAgICAgICBEaXNhbGxv
d0dDIGRpc2FsbG93R0M7Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJu
IExMSW50OjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlRW50cnlwb2ludCgpLmNvZGUoKS50YWdnZWRQ
dHIoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgICAgICAgICB2
bS5nZXRDVElUaHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGgoKS5jb2RlKCkudGFnZ2VkUHRy
KCksCisgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVG
cmFtZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KAorICAgICAgICAgICAgICAgIExMSW50OjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlRW50cnlwb2lu
dCgpLmNvZGUoKS50YWdnZWRQdHIoKSwKKyAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPihjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVz
ZVRoZUZyYW1lIDogS2VlcFRoZUZyYW1lKSk7CiAgICAgICAgIH0KIAogICAgICAgICBjYWxsZWVG
cmFtZS0+c2V0Q2FsbGVlKGdsb2JhbE9iamVjdC0+cGFydGlhbGx5SW5pdGlhbGl6ZWRGcmFtZUNh
bGxlZSgpKTsKICAgICAgICAgQVNTRVJUKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6
Ok5vbmUpOwotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRocm93Tm90QUZ1bmN0
aW9uRXJyb3JGcm9tQ2FsbElDKGdsb2JhbE9iamVjdCwgb3duZXIsIGNhbGxlZSwgY2FsbExpbmtJ
bmZvKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZU5vdEFGdW5jdGlvbkVycm9yKGdsb2JhbE9iamVjdCwgY2FsbGVlKSk7CisgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQoCisgICAgICAgICAgICB2bS5nZXRDVElUaHJvd0V4Y2VwdGlvbkZyb21D
YWxsU2xvd1BhdGgoKS5jb2RlKCkudGFnZ2VkUHRyKCksCisgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKICAgICB9CiAKICAgICBBU1NFUlQoY2FsbExp
bmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKSA9PSBDb2RlRm9yQ29uc3RydWN0KTsKQEAgLTEx
MywyMiArNzgsMzEgQEAgaW5saW5lIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogb3duZXIsIENhbGxGcmEKICAgICAgICAgY2FsbGVlRnJh
bWUtPnNldENhbGxlZShhc09iamVjdChjYWxsZWUpKTsKICAgICAgICAgdm0uZW5jb2RlZEhvc3RD
YWxsUmV0dXJuVmFsdWUgPSBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihhc09iamVjdChj
YWxsZWUpLT5nbG9iYWxPYmplY3QoKSwgY2FsbGVlRnJhbWUpOwogICAgICAgICBEaXNhbGxvd0dD
IGRpc2FsbG93R0M7Ci0gICAgICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCi0g
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIExMSW50OjpnZXRIb3N0
Q2FsbFJldHVyblZhbHVlRW50cnlwb2ludCgpLmNvZGUoKS50YWdnZWRQdHIoKTsKKyAgICAgICAg
aWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdCgKKyAgICAgICAgICAgICAgICB2bS5nZXRDVElUaHJvd0V4Y2VwdGlvbkZyb21D
YWxsU2xvd1BhdGgoKS5jb2RlKCkudGFnZ2VkUHRyKCksCisgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KExMSW50OjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlRW50cnlwb2lu
dCgpLmNvZGUoKS50YWdnZWRQdHIoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZy
YW1lKSk7CiAgICAgfQogCiAgICAgY2FsbGVlRnJhbWUtPnNldENhbGxlZShnbG9iYWxPYmplY3Qt
PnBhcnRpYWxseUluaXRpYWxpemVkRnJhbWVDYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNvbnN0cnVj
dERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB0aHJvd05vdEFDb25zdHJ1Y3RvckVycm9yRnJvbUNhbGxJQyhnbG9iYWxPYmpl
Y3QsIG93bmVyLCBjYWxsZWUsIGNhbGxMaW5rSW5mbykpOworICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGdsb2JhbE9iamVj
dCwgY2FsbGVlKSk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKKyAgICAgICAgdm0uZ2V0Q1RJ
VGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoKCkuY29kZSgpLnRhZ2dlZFB0cigpLAorICAg
ICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKIH0KIAotQUxXQVlT
X0lOTElORSB2b2lkKiBsaW5rRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2Vs
bCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvKQorQUxXQVlTX0lOTElORSBVR1BSUGFpciBsaW5rRm9yKENhbGxGcmFtZSogY2FsbGVlRnJh
bWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvKQogeworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gY2FsbGVlRnJhbWUtPmNhbGxlckZy
YW1lKCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kID0gY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgUkVMRUFTRV9B
U1NFUlQoIWNhbGxMaW5rSW5mby0+aXNEaXJlY3QoKSk7CiAKQEAgLTEzOSwzMyArMTEzLDE1IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCogbGlua0ZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0NlbGwqIG93bmVyLCBDYWxsRnJhCiAgICAgICAgICAgICBDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IGNvZGVQdHIgPSB2bS5nZXRDVElJbnRlcm5hbEZ1bmN0aW9uVHJhbXBvbGluZUZvcihraW5k
KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEhY29kZVB0cik7CiAKLSAgICAgICAgICAg
IHN3aXRjaCAoY2FsbExpbmtJbmZvLT5tb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ2FsbExp
bmtJbmZvOjpNb2RlOjpJbml0OiB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjYWxsTGlua0luZm8t
PnNlZW5PbmNlKCkpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0U2Vlbigp
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbGlua01vbm9tb3Jw
aGljQ2FsbCh2bSwgb3duZXIsICpjYWxsTGlua0luZm8sIG51bGxwdHIsIGludGVybmFsRnVuY3Rp
b24sIGNvZGVQdHIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgY2FzZSBDYWxsTGlua0luZm86Ok1vZGU6Ok1vbm9tb3JwaGljOgotICAgICAgICAg
ICAgY2FzZSBDYWxsTGlua0luZm86Ok1vZGU6OlBvbHltb3JwaGljOiB7Ci0jaWYgRU5BQkxFKEpJ
VCkKLSAgICAgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCAmJiBjYWxsTGlua0lu
Zm8tPmFsbG93U3R1YnMoKSkgewotICAgICAgICAgICAgICAgICAgICBsaW5rUG9seW1vcnBoaWND
YWxsKGdsb2JhbE9iamVjdCwgb3duZXIsIGNhbGxlZUZyYW1lLCAqY2FsbExpbmtJbmZvLCBDYWxs
VmFyaWFudChpbnRlcm5hbEZ1bmN0aW9uKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
c2V0VmlydHVhbENhbGwodm0sIG93bmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgQ2FsbExpbmtJbmZvOjpNb2RlOjpWaXJ0dWFsOgot
ICAgICAgICAgICAgY2FzZSBDYWxsTGlua0luZm86Ok1vZGU6OkxpbmtlZERpcmVjdDoKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghY2FsbExp
bmtJbmZvLT5zZWVuT25jZSgpKQorICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0U2Vl
bigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxpbmtNb25vbW9ycGhpY0Nh
bGwodm0sIGNhbGxlZUZyYW1lLCAqY2FsbExpbmtJbmZvLCBudWxscHRyLCBpbnRlcm5hbEZ1bmN0
aW9uLCBjb2RlUHRyKTsKIAotICAgICAgICAgICAgcmV0dXJuIGNvZGVQdHIudGFnZ2VkUHRyKCk7
CisgICAgICAgICAgICB2b2lkKiBsaW5rZWRUYXJnZXQgPSBjb2RlUHRyLnRhZ2dlZFB0cigpOwor
ICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChsaW5rZWRUYXJnZXQsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/
IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJhbWUpKTsKICAgICAgICAgfQotICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgaGFuZGxlSG9zdENhbGwoZ2xvYmFsT2JqZWN0LCBv
d25lciwgY2FsbGVlRnJhbWUsIGNhbGxlZUFzVmFsdWUsIGNhbGxMaW5rSW5mbykpOworICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgaGFuZGxlSG9zdENhbGwoZ2xvYmFsT2Jq
ZWN0LCBjYWxsZWVGcmFtZSwgY2FsbGVlQXNWYWx1ZSwgY2FsbExpbmtJbmZvKSk7CiAgICAgfQog
CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1
bmN0aW9uQ2VsbCk7CkBAIC0xODQsMTIgKzE0MCwxOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIGxp
bmtGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBvd25lciwgQ2FsbEZy
YQogICAgIH0gZWxzZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAK
LSAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25zdHJ1
Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KQotICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIHRocm93Tm90QUNvbnN0cnVjdG9y
RXJyb3JGcm9tQ2FsbElDKGdsb2JhbE9iamVjdCwgb3duZXIsIGNhbGxlZSwgY2FsbExpbmtJbmZv
KSk7CisgICAgICAgIGF1dG8gaGFuZGxlVGhyb3dFeGNlcHRpb24gPSBbJl0gKCkgeworICAgICAg
ICAgICAgdm9pZCogdGhyb3dUYXJnZXQgPSB2bS5nZXRDVElUaHJvd0V4Y2VwdGlvbkZyb21DYWxs
U2xvd1BhdGgoKS5jb2RlKCkudGFnZ2VkUHRyKCk7CisgICAgICAgICAgICByZXR1cm4gZW5jb2Rl
UmVzdWx0KHRocm93VGFyZ2V0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUp
KTsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4
ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3QpIHsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZ2xvYmFsT2JqZWN0LCBjYWxsZWUp
KTsKKyAgICAgICAgICAgIHJldHVybiBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpOworICAgICAgICB9
CiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGNhbGxlZUZyYW1lLT5hZGRy
ZXNzT2ZDb2RlQmxvY2soKTsKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9y
RXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsICpj
b2RlQmxvY2tTbG90KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBu
dWxscHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBoYW5kbGVU
aHJvd0V4Y2VwdGlvbigpKTsKIAogICAgICAgICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xvdDsK
ICAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CkBAIC0yMDIsMzQgKzE2NSwxNSBAQCBBTFdBWVNf
SU5MSU5FIHZvaWQqIGxpbmtGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvd25lciwgQ2FsbEZyYQogICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5l
bnRyeXBvaW50Rm9yKGtpbmQsIGFyaXR5KTsKICAgICB9CiAKLSAgICBzd2l0Y2ggKGNhbGxMaW5r
SW5mby0+bW9kZSgpKSB7Ci0gICAgY2FzZSBDYWxsTGlua0luZm86Ok1vZGU6OkluaXQ6IHsKLSAg
ICAgICAgaWYgKCFjYWxsTGlua0luZm8tPnNlZW5PbmNlKCkpCi0gICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnNldFNlZW4oKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbGlua01vbm9tb3Jw
aGljQ2FsbCh2bSwgb3duZXIsICpjYWxsTGlua0luZm8sIGNvZGVCbG9jaywgY2FsbGVlLCBjb2Rl
UHRyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ2FsbExpbmtJbmZvOjpNb2Rl
OjpNb25vbW9ycGhpYzoKLSAgICBjYXNlIENhbGxMaW5rSW5mbzo6TW9kZTo6UG9seW1vcnBoaWM6
IHsKLSNpZiBFTkFCTEUoSklUKQotICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCAmJiBj
YWxsTGlua0luZm8tPmFsbG93U3R1YnMoKSkgewotICAgICAgICAgICAgbGlua1BvbHltb3JwaGlj
Q2FsbChnbG9iYWxPYmplY3QsIG93bmVyLCBjYWxsZWVGcmFtZSwgKmNhbGxMaW5rSW5mbywgQ2Fs
bFZhcmlhbnQoY2FsbGVlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotI2VuZGlm
Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VmlydHVhbENhbGwodm0sIG93bmVyKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ2FsbExpbmtJbmZvOjpNb2RlOjpWaXJ0dWFsOgot
ICAgIGNhc2UgQ2FsbExpbmtJbmZvOjpNb2RlOjpMaW5rZWREaXJlY3Q6Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KKyAgICBpZiAoIWNhbGxMaW5rSW5mby0+c2Vlbk9uY2UoKSkKKyAgICAgICAgY2Fs
bExpbmtJbmZvLT5zZXRTZWVuKCk7CisgICAgZWxzZQorICAgICAgICBsaW5rTW9ub21vcnBoaWND
YWxsKHZtLCBjYWxsZWVGcmFtZSwgKmNhbGxMaW5rSW5mbywgY29kZUJsb2NrLCBjYWxsZWUsIGNv
ZGVQdHIpOwogCi0gICAgcmV0dXJuIGNvZGVQdHIudGFnZ2VkUHRyKCk7CisgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdChjb2RlUHRyLnRhZ2dlZFB0cigpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihj
YWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlRhaWwgPyBSZXVzZVRoZUZyYW1l
IDogS2VlcFRoZUZyYW1lKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCogdmlydHVhbEZvcldp
dGhGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG93bmVyLCBD
YWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgSlNDZWxs
KiYgY2FsbGVlQXNGdW5jdGlvbkNlbGwpCitBTFdBWVNfSU5MSU5FIFVHUFJQYWlyIHZpcnR1YWxG
b3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsZWVGcmFtZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8sIEpTQ2VsbComIGNhbGxlZUFz
RnVuY3Rpb25DZWxsKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTI0Miw5ICsxODYs
OSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKgogICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxJ
bnRlcm5hbEZ1bmN0aW9uKj4oY2FsbGVlQXNWYWx1ZSkpIHsKICAgICAgICAgICAgIENvZGVQdHI8
SlNFbnRyeVB0clRhZz4gY29kZVB0ciA9IHZtLmdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9s
aW5lRm9yKGtpbmQpOwogICAgICAgICAgICAgQVNTRVJUKCEhY29kZVB0cik7Ci0gICAgICAgICAg
ICByZXR1cm4gY29kZVB0ci50YWdnZWRQdHIoKTsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQoY29kZVB0ci50YWdnZWRQdHIoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FsbExp
bmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxNb2RlOjpUYWlsID8gUmV1c2VUaGVGcmFtZSA6IEtl
ZXBUaGVGcmFtZSkpOwogICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBoYW5kbGVIb3N0Q2FsbChnbG9iYWxPYmplY3QsIG93bmVyLCBjYWxsZWVGcmFtZSwg
Y2FsbGVlQXNWYWx1ZSwgY2FsbExpbmtJbmZvKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
Tih0aHJvd1Njb3BlLCBoYW5kbGVIb3N0Q2FsbChnbG9iYWxPYmplY3QsIGNhbGxlZUZyYW1lLCBj
YWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pKTsKICAgICB9CiAKICAgICBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwpAQCAt
MjU2LDE3ICsyMDAsMjYgQEAgQUxXQVlTX0lOTElORSB2b2lkKiB2aXJ0dWFsRm9yV2l0aEZ1bmN0
aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCoKICAgICBpZiAoIWV4ZWN1
dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSk7CiAKLSAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5j
b25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KQot
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIHRocm93Tm90QUNvbnN0
cnVjdG9yRXJyb3JGcm9tQ2FsbElDKGdsb2JhbE9iamVjdCwgb3duZXIsIGZ1bmN0aW9uLCBjYWxs
TGlua0luZm8pKTsKKyAgICAgICAgYXV0byBoYW5kbGVUaHJvd0V4Y2VwdGlvbiA9IFsmXSAoKSB7
CisgICAgICAgICAgICB2b2lkKiB0aHJvd1RhcmdldCA9IHZtLmdldENUSVRocm93RXhjZXB0aW9u
RnJvbUNhbGxTbG93UGF0aCgpLmNvZGUoKS50YWdnZWRQdHIoKTsKKyAgICAgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQodGhyb3dUYXJnZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBU
aGVGcmFtZSkpOworICAgICAgICB9OworCisgICAgICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6
OkNhbm5vdENvbnN0cnVjdCkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihnbG9iYWxPYmplY3Qs
IGZ1bmN0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gaGFuZGxlVGhyb3dFeGNlcHRpb24oKTsK
KyAgICAgICAgfQogCiAgICAgICAgIENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBjYWxsZWVG
cmFtZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7CiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+
cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBmdW5jdGlvbiwgc2Nv
cGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBudWxscHRyKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogU3Vw
cG9ydCB3YXNtIElDLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjAzMzkKLSAgICByZXR1cm4gZXhlY3V0YWJsZS0+ZW50cnlwb2ludEZvcihraW5kLCBN
dXN0Q2hlY2tBcml0eSkudGFnZ2VkUHRyKCk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChleGVj
dXRhYmxlLT5lbnRyeXBvaW50Rm9yKAorICAgICAgICBraW5kLCBNdXN0Q2hlY2tBcml0eSkudGFn
Z2VkUHRyKCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+
Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJh
bWUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlLmNwcAppbmRleCBkYmZlN2E3YmIyNzcuLmRkODI4OTI2OTc5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgYm9v
bCBKSVREYXRhOjp0cnlJbml0aWFsaXplKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEpJVENvZGUmIGppdENvZGUKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKICAgICAgICAgICAgIGNvbnN0IFVu
bGlua2VkQ2FsbExpbmtJbmZvJiB1bmxpbmtlZENhbGxMaW5rSW5mbyA9IGppdENvZGUubV91bmxp
bmtlZENhbGxMaW5rSW5mb3NbaW5kZXhdOwogICAgICAgICAgICAgT3B0aW1pemluZ0NhbGxMaW5r
SW5mbyYgY2FsbExpbmtJbmZvID0gbV9jYWxsTGlua0luZm9zW2luZGV4XTsKLSAgICAgICAgICAg
IGNhbGxMaW5rSW5mby5pbml0aWFsaXplRnJvbURGR1VubGlua2VkQ2FsbExpbmtJbmZvKHZtLCB1
bmxpbmtlZENhbGxMaW5rSW5mbywgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGNhbGxMaW5rSW5m
by5pbml0aWFsaXplRnJvbURGR1VubGlua2VkQ2FsbExpbmtJbmZvKHZtLCB1bmxpbmtlZENhbGxM
aW5rSW5mbyk7CiAgICAgICAgICAgICB0cmFpbGluZ1NwYW4oKVtpXSA9ICZjYWxsTGlua0luZm87
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuaAppbmRleCBiOWY1YjJkZGJmMjguLjNhYTY3MWNmOGFmNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKQEAgLTcwLDE0ICs3MCwyMyBAQCBzdHJ1Y3QgVW5s
aW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyA6IEpTQzo6VW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyB7
CiB9OwogCiBzdHJ1Y3QgVW5saW5rZWRDYWxsTGlua0luZm8gOiBKU0M6OlVubGlua2VkQ2FsbExp
bmtJbmZvIHsKLSAgICB2b2lkIHNldFVwQ2FsbChDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxU
eXBlKQorICAgIHZvaWQgc2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGUs
IEdQUlJlZyBjYWxsZWVHUFIpCiAgICAgewogICAgICAgICB0aGlzLT5jYWxsVHlwZSA9IGNhbGxU
eXBlOworICAgICAgICB0aGlzLT5jYWxsZWVHUFIgPSBjYWxsZWVHUFI7CisgICAgfQorCisgICAg
dm9pZCBzZXRGcmFtZVNodWZmbGVEYXRhKGNvbnN0IENhbGxGcmFtZVNodWZmbGVEYXRhJiBzaHVm
ZmxlRGF0YSkKKyAgICB7CisgICAgICAgIG1fZnJhbWVTaHVmZmxlRGF0YSA9IG1ha2VVbmlxdWU8
Q2FsbEZyYW1lU2h1ZmZsZURhdGE+KHNodWZmbGVEYXRhKTsKKyAgICAgICAgbV9mcmFtZVNodWZm
bGVEYXRhLT5zaHJpbmtUb0ZpdCgpOwogICAgIH0KIAogICAgIENvZGVPcmlnaW4gY29kZU9yaWdp
bjsKICAgICBDYWxsTGlua0luZm86OkNhbGxUeXBlIGNhbGxUeXBlIHsgQ2FsbExpbmtJbmZvOjpD
YWxsVHlwZTo6Tm9uZSB9OwogICAgIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgeyBJbnZhbGlkR1BS
UmVnIH07CisgICAgR1BSUmVnIGNhbGxlZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q2FsbEZyYW1lU2h1ZmZsZURhdGE+IG1fZnJhbWVTaHVmZmxlRGF0YTsKIH07
CiAKIGNsYXNzIExpbmtlcklSIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKaW5kZXggMGVhMTA5NjI0NzBjLi40ZjllZWI1MWM2YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC02MDksNyArNjA5LDcg
QEAgc3RkOjp0dXBsZTxDb21waWxlVGltZUNhbGxMaW5rSW5mbywgSklUQ29tcGlsZXI6Okxpbmth
YmxlQ29uc3RhbnQ+IEpJVENvbXBpbGVyOjoKICAgICAgICAgTGlua2VySVI6OkNvbnN0YW50IGNh
bGxMaW5rSW5mb0luZGV4ID0gYWRkVG9Db25zdGFudFBvb2woTGlua2VySVI6OlR5cGU6OkNhbGxM
aW5rSW5mbywgdW5saW5rZWRDYWxsTGlua0luZm9JbmRleCk7CiAgICAgICAgIHJldHVybiBzdGQ6
OnR1cGxlIHsgY2FsbExpbmtJbmZvLCBMaW5rYWJsZUNvbnN0YW50KGNhbGxMaW5rSW5mb0luZGV4
KSB9OwogICAgIH0KLSAgICBhdXRvKiBjYWxsTGlua0luZm8gPSBqaXRDb2RlKCktPmNvbW1vbi5t
X2NhbGxMaW5rSW5mb3MuYWRkKGNvZGVPcmlnaW4sIENhbGxMaW5rSW5mbzo6VXNlRGF0YUlDOjpO
bywgbV9ncmFwaC5tX2NvZGVCbG9jayk7CisgICAgYXV0byogY2FsbExpbmtJbmZvID0gaml0Q29k
ZSgpLT5jb21tb24ubV9jYWxsTGlua0luZm9zLmFkZChjb2RlT3JpZ2luLCBDYWxsTGlua0luZm86
OlVzZURhdGFJQzo6Tm8pOwogICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgY2FsbExpbmtJbmZvLCBM
aW5rYWJsZUNvbnN0YW50Ojpub25DZWxsUG9pbnRlcigqdGhpcywgY2FsbExpbmtJbmZvKSB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAppbmRleCA2NTJmYjUzNzE4M2EuLjQ1ODU3NjA1MDUxMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBA
IC03MjMsMjcgKzcyMywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzVGFpbCkgewotICAgICAgICAgICAgc3Rk
OjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGNhbGxlZURlc3RpbmF0aW9uUGF5bG9hZDsKLSAgICAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiBjYWxsZWVEZXN0aW5hdGlvblRhZzsK
LSAgICAgICAgICAgIGlmICghaXNEaXJlY3QpIHsKLSAgICAgICAgICAgICAgICBjYWxsZWVEZXN0
aW5hdGlvblBheWxvYWQuZW1wbGFjZSh0aGlzLCBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAg
ICAgICAgY2FsbGVlRGVzdGluYXRpb25UYWcuZW1wbGFjZSh0aGlzLCBHUFJJbmZvOjpyZWdUMSk7
Ci0gICAgICAgICAgICAgICAgLy8gQWxsb2NhdGUgR1BSSW5mbzo6cmVnVDAgLyBHUFJJbmZvOjpy
ZWdUMQotICAgICAgICAgICAgICAgIGNhbGxlZURlc3RpbmF0aW9uUGF5bG9hZC0+Z3ByKCk7Ci0g
ICAgICAgICAgICAgICAgY2FsbGVlRGVzdGluYXRpb25UYWctPmdwcigpOwotICAgICAgICAgICAg
fQogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgY2FsbGVlKHRoaXMsIGNhbGxlZUVkZ2UpOwog
ICAgICAgICAgICAgY2FsbGVlVGFnR1BSID0gY2FsbGVlLnRhZ0dQUigpOwogICAgICAgICAgICAg
Y2FsbGVlUGF5bG9hZEdQUiA9IGNhbGxlZS5wYXlsb2FkR1BSKCk7Ci0gICAgICAgICAgICBpZiAo
IWlzRGlyZWN0KSB7Ci0gICAgICAgICAgICAgICAgbW92ZShjYWxsZWVQYXlsb2FkR1BSLCBHUFJJ
bmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICAgICAgbW92ZShjYWxsZWVUYWdHUFIsIEdQUkluZm86
OnJlZ1QxKTsKLSAgICAgICAgICAgICAgICBjYWxsZWVQYXlsb2FkR1BSID0gR1BSSW5mbzo6cmVn
VDA7Ci0gICAgICAgICAgICAgICAgY2FsbGVlVGFnR1BSID0gR1BSSW5mbzo6cmVnVDE7Ci0gICAg
ICAgICAgICAgICAgY2FsbGVlRGVzdGluYXRpb25QYXlsb2FkID0gc3RkOjpudWxsb3B0OwotICAg
ICAgICAgICAgICAgIGNhbGxlZURlc3RpbmF0aW9uVGFnID0gc3RkOjpudWxsb3B0OworICAgICAg
ICAgICAgaWYgKCFpc0RpcmVjdCkKICAgICAgICAgICAgICAgICB1c2UoY2FsbGVlRWRnZSk7Ci0g
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bUxvY2FscyA9IG1fZ3Jh
cGguZnJhbWVSZWdpc3RlckNvdW50KCk7CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5jYWxsZWUg
PSBWYWx1ZVJlY292ZXJ5OjppblBhaXIoY2FsbGVlVGFnR1BSLCBjYWxsZWVQYXlsb2FkR1BSKTsK
QEAgLTc4MywzMCArNzY3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUpCiAgICAgR1BSUmVnIGV2YWxTY29wZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgSlNW
YWx1ZVJlZ3MgZXZhbFRoaXNWYWx1ZUpTUjsKICAgICBpZiAoIWlzVGFpbCB8fCBpc1ZhcmFyZ3Mg
fHwgaXNGb3J3YXJkVmFyYXJncykgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBvcmFy
eT4gY2FsbGVlRGVzdGluYXRpb25QYXlsb2FkOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRl
bXBvcmFyeT4gY2FsbGVlRGVzdGluYXRpb25UYWc7Ci0gICAgICAgIGlmICghaXNEaXJlY3QpIHsK
LSAgICAgICAgICAgIGNhbGxlZURlc3RpbmF0aW9uUGF5bG9hZC5lbXBsYWNlKHRoaXMsIEdQUklu
Zm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGNhbGxlZURlc3RpbmF0aW9uVGFnLmVtcGxhY2UodGhp
cywgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgLy8gQWxsb2NhdGUgR1BSSW5mbzo6cmVn
VDAgLyBHUFJJbmZvOjpyZWdUMQotICAgICAgICAgICAgY2FsbGVlRGVzdGluYXRpb25QYXlsb2Fk
LT5ncHIoKTsKLSAgICAgICAgICAgIGNhbGxlZURlc3RpbmF0aW9uVGFnLT5ncHIoKTsKLSAgICAg
ICAgfQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBjYWxsZWUodGhpcywgY2FsbGVlRWRnZSk7CiAg
ICAgICAgIGNhbGxlZVRhZ0dQUiA9IGNhbGxlZS50YWdHUFIoKTsKICAgICAgICAgY2FsbGVlUGF5
bG9hZEdQUiA9IGNhbGxlZS5wYXlsb2FkR1BSKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGNhbGxl
UmVncyA9IGNhbGxlZS5qc1ZhbHVlUmVncygpOwotICAgICAgICBpZiAoIWlzRGlyZWN0KSB7Ci0g
ICAgICAgICAgICBtb3ZlKGNhbGxlZVBheWxvYWRHUFIsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAg
ICAgICAgIG1vdmUoY2FsbGVlVGFnR1BSLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgICAgICBj
YWxsZWVQYXlsb2FkR1BSID0gR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgICAgICBjYWxsZWVUYWdH
UFIgPSBHUFJJbmZvOjpyZWdUMTsKLSAgICAgICAgfQogCiAgICAgICAgIHN0b3JlVmFsdWUoY2Fs
bGVSZWdzLCBjYWxsZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSk7CiAKLSAgICAg
ICAgY2FsbGVlRGVzdGluYXRpb25QYXlsb2FkID0gc3RkOjpudWxsb3B0OwotICAgICAgICBjYWxs
ZWVEZXN0aW5hdGlvblRhZyA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgY2FsbGVlLnVzZSgpOwog
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3BlY3VsYXRlQ2VsbE9wZXJhbmQ+IHNjb3BlOwpAQCAt
ODQzLDcgKzgxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUp
CiAgICAgYXV0byBbIGNhbGxMaW5rSW5mbywgY2FsbExpbmtJbmZvQ29uc3RhbnQgXSA9IGFkZENh
bGxMaW5rSW5mbyhtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgc3RkOjp2
aXNpdChbJl0oYXV0byogY2FsbExpbmtJbmZvKSB7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+c2V0
VXBDYWxsKGNhbGxUeXBlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoY2FsbFR5
cGUsIGNhbGxlZVBheWxvYWRHUFIpOwogICAgIH0sIGNhbGxMaW5rSW5mbyk7CiAgICAgCiAgICAg
YXV0byBzZXRSZXN1bHRBbmRSZXNldFN0YWNrID0gWyZdICgpIHsKQEAgLTkwNyw4ICs4NzQsOCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAg
ZW1pdFN0b3JlQ2FsbFNpdGVJbmRleChjYWxsU2l0ZSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGluZm8tPmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQYXRoKCp0aGlzLCBzY29wZWRMYW1iZGE8
dm9pZCgpPihbJl17Ci0gICAgICAgICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIgc2h1ZmZsZXIg
eyAqdGhpcywgc2h1ZmZsZURhdGEgfTsKLSAgICAgICAgICAgICAgICBzaHVmZmxlci5wcmVwYXJl
Rm9yVGFpbENhbGwoKTsKKyAgICAgICAgICAgICAgICBpbmZvLT5zZXRGcmFtZVNodWZmbGVEYXRh
KHNodWZmbGVEYXRhKTsKKyAgICAgICAgICAgICAgICBDYWxsRnJhbWVTaHVmZmxlcigqdGhpcywg
c2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAgICAgICAgfSkpOwogCiAg
ICAgICAgICAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CkBAIC05NTAsMjMgKzkxNywyMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgIHNsb3dQYXRo
LmFwcGVuZChicmFuY2hQdHJXaXRoUGF0Y2goTm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRh
cmdldFRvQ2hlY2spKTsKIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICBMYWJlbCBkaXNw
YXRjaExhYmVsOwogICAgIGlmIChpc1RhaWwpIHsKLSAgICAgICAgc3RkOjp0aWUoc2xvd0Nhc2Vz
LCBkaXNwYXRjaExhYmVsKSA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRmFzdFBhdGgoKnRo
aXMsIGNhbGxMaW5rSW5mbywgY2FsbGVlUGF5bG9hZEdQUiwgSW52YWxpZEdQUlJlZywgc2NvcGVk
TGFtYmRhPHZvaWQoKT4oWyYsIGNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mb10geworICAgICAg
ICBzbG93Q2FzZXMgPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKCp0aGlzLCBj
YWxsTGlua0luZm8sIGNhbGxlZVBheWxvYWRHUFIsIEludmFsaWRHUFJSZWcsIHNjb3BlZExhbWJk
YTx2b2lkKCk+KFsmLCBjYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm9dewogICAgICAgICAgICAg
aWYgKG5vZGUtPm9wKCkgPT0gVGFpbENhbGwpIHsKLSAgICAgICAgICAgICAgICBDYWxsRnJhbWVT
aHVmZmxlciBzaHVmZmxlciB7ICp0aGlzLCBzaHVmZmxlRGF0YSB9OwotICAgICAgICAgICAgICAg
IHNodWZmbGVyLnNldENhbGxlZUpTVmFsdWVSZWdzKEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxs
OjpjYWxsZWVKU1IpOwotICAgICAgICAgICAgICAgIHNodWZmbGVyLnByZXBhcmVGb3JUYWlsQ2Fs
bCgpOworICAgICAgICAgICAgICAgIHN0ZDo6dmlzaXQoWyZdKGF1dG8qIGNhbGxMaW5rSW5mbykg
eworICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldEZyYW1lU2h1ZmZsZURhdGEo
c2h1ZmZsZURhdGEpOworICAgICAgICAgICAgICAgIH0sIGNhbGxMaW5rSW5mbyk7CisgICAgICAg
ICAgICAgICAgQ2FsbEZyYW1lU2h1ZmZsZXIoKnRoaXMsIHNodWZmbGVEYXRhKS5wcmVwYXJlRm9y
VGFpbENhbGwoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdFJl
c3RvcmVDYWxsZWVTYXZlcygpOwotICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZl
ZDsKLSAgICAgICAgICAgICAgICBwcmVzZXJ2ZWQuYWRkKEdQUkluZm86OnJlZ1QwLCBJZ25vcmVW
ZWN0b3JzKTsKLSAgICAgICAgICAgICAgICBwcmVzZXJ2ZWQuYWRkKEdQUkluZm86OnJlZ1QxLCBJ
Z25vcmVWZWN0b3JzKTsKLSAgICAgICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KFdU
Rk1vdmUocHJlc2VydmVkKSk7CisgICAgICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xv
dygpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHN0
ZDo6dGllKHNsb3dDYXNlcywgZGlzcGF0Y2hMYWJlbCkgPSBDYWxsTGlua0luZm86OmVtaXRGYXN0
UGF0aCgqdGhpcywgY2FsbExpbmtJbmZvLCBjYWxsZWVQYXlsb2FkR1BSLCBJbnZhbGlkR1BSUmVn
KTsKKyAgICAgICAgc2xvd0Nhc2VzID0gQ2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGgoKnRoaXMs
IGNhbGxMaW5rSW5mbywgY2FsbGVlUGF5bG9hZEdQUiwgSW52YWxpZEdQUlJlZyk7CiAKICAgICBK
dW1wIGRvbmUgPSBqdW1wKCk7CiAKQEAgLTk3NCwxMiArOTM4LDMyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgc2xvd0Nhc2VzLmxpbmsodGhpcyk7CiAg
ICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKIAorICAgIGlmIChub2RlLT5vcCgpID09
IFRhaWxDYWxsKSB7CisgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIGNhbGxGcmFtZVNodWZmbGVy
KCp0aGlzLCBzaHVmZmxlRGF0YSk7CisgICAgICAgIGNhbGxGcmFtZVNodWZmbGVyLnNldENhbGxl
ZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKAorICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsIEdQ
UkluZm86OnJlZ1QwKSk7CisgICAgICAgIGNhbGxGcmFtZVNodWZmbGVyLnByZXBhcmVGb3JTbG93
UGF0aCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIENhbGxlZSBwYXlsb2FkIG5lZWRzIHRv
IGJlIGluIHJlZ1QwLCB0YWcgaW4gcmVnVDEKKyAgICAgICAgaWYgKGNhbGxlZVRhZ0dQUiA9PSBH
UFJJbmZvOjpyZWdUMCkgeworICAgICAgICAgICAgaWYgKGNhbGxlZVBheWxvYWRHUFIgPT0gR1BS
SW5mbzo6cmVnVDEpCisgICAgICAgICAgICAgICAgc3dhcChHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDApOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbW92ZShjYWxs
ZWVUYWdHUFIsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgICAgICBtb3ZlKGNhbGxlZVBh
eWxvYWRHUFIsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIG1vdmUoY2FsbGVlUGF5bG9hZEdQUiwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgbW92ZShjYWxsZWVUYWdHUFIsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChpc1RhaWwpCisgICAgICAgICAgICBlbWl0UmVzdG9yZUNhbGxlZVNh
dmVzKCk7CisgICAgfQorCiAgICAgQVNTRVJUKCFtX2dyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkp
OwotICAgIGxvYWRMaW5rYWJsZUNvbnN0YW50KExpbmthYmxlQ29uc3RhbnQ6Omdsb2JhbE9iamVj
dCgqdGhpcywgbm9kZSksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpnbG9iYWxPYmplY3RH
UFIpOwotICAgIGlmIChpc1RhaWwpCi0gICAgICAgIENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxs
U2xvd1BhdGgodm0oKSwgKnRoaXMsIGNhbGxMaW5rSW5mbywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgZGlzcGF0Y2hMYWJlbCk7Ci0gICAgZWxzZQotICAgICAg
ICBDYWxsTGlua0luZm86OmVtaXRTbG93UGF0aCh2bSgpLCAqdGhpcywgY2FsbExpbmtJbmZvLCBC
YXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBsb2FkTGlu
a2FibGVDb25zdGFudChMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUp
LCBHUFJJbmZvOjpyZWdUMyk7CisgICAgQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgodm0oKSwg
KnRoaXMsIGNhbGxMaW5rSW5mbywgSW52YWxpZEdQUlJlZyk7CiAKICAgICBkb25lLmxpbmsodGhp
cyk7CiAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZTlkNTljYzg1ZDY1
Li5kNDFjNDQ0YmUxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNzEzLDYgKzcxMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAKICAgICBHUFJSZWcgY2FsbGVlR1BSID0gSW52YWxp
ZEdQUlJlZzsKICAgICBHUFJSZWcgY2FsbExpbmtJbmZvR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBDYWxsRnJhbWVT
aHVmZmxlRGF0YSBzaHVmZmxlRGF0YTsKICAgICAKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0
YWJsZSA9IG51bGxwdHI7CkBAIC04NDAsMzMgKzg0MSwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzVGFpbCkg
ewotICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IGNhbGxlZURlc3RpbmF0
aW9uOwotICAgICAgICAgICAgaWYgKCFpc0RpcmVjdCkgewotICAgICAgICAgICAgICAgIGNhbGxl
ZURlc3RpbmF0aW9uLmVtcGxhY2UodGhpcywgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAg
ICAgIGNhbGxlZURlc3RpbmF0aW9uLT5ncHIoKTsgLy8gQWxsb2NhdGUgR1BSSW5mbzo6cmVnVDAK
LSAgICAgICAgICAgIH0KICAgICAgICAgICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1fZ3JhcGguY2hp
bGQobm9kZSwgMCk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBjYWxsZWUodGhpcywgY2Fs
bGVlRWRnZSk7CiAgICAgICAgICAgICBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CisKKyAgICAg
ICAgICAgIC8vIGNhbGxMaW5rSW5mb0dQUi9nbG9iYWxPYmplY3RHUFIgbXVzdCBiZSBub24gY2Fs
bGVlLXNhdmUgcmVnaXN0ZXIuIE90aGVyd2lzZSwgdGFpbC1jYWxsIHByZXBhcmF0aW9uIHdpbGwg
ZmlsbCBpdAorICAgICAgICAgICAgLy8gd2l0aCBzYXZlZCBjYWxsZWUtc2F2ZS4gQWxzbywgaXQg
c2hvdWxkIG5vdCBiZSB0aGUgc2FtZSB0byBjYWxsZWVHUFIgYW5kIHJlZ1QwIHNpbmNlIGJvdGgg
d2lsbAorICAgICAgICAgICAgLy8gYmUgdXNlZCBsYXRlciBkaWZmZXJlbnRseS4KKyAgICAgICAg
ICAgIC8vIFdlIGFsc28gZG8gbm90IGtlZXAgR1BSVGVtcG9yYXJ5IChpdCBpcyBpbW1lZGlhdGVs
eSBkZXN0cm95ZWQpIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIDEuIFdlIGRvIG5vdCB3YW50IHRv
IGtlZXAgdGhlIHJlZ2lzdGVyIGxvY2tlZCBpbiB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mIHRo
ZSBDYWxsLgorICAgICAgICAgICAgLy8gMi4gVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHJlZ2lzdGVy
IGFsbG9jYXRpb24gZnJvbSBERkcgcmVnaXN0ZXIgYmFuaywgc28gaXQgaXMgT0sgKG90aGVyd2lz
ZSwgY2FsbGVlLnVzZSgpIGlzIHdyb25nKS4KICAgICAgICAgICAgIGlmICghaXNEaXJlY3QpIHsK
LSAgICAgICAgICAgICAgICBtb3ZlKGNhbGxlZS5ncHIoKSwgR1BSSW5mbzo6cmVnVDApOwotICAg
ICAgICAgICAgICAgIGNhbGxlZUdQUiA9IEdQUkluZm86OnJlZ1QwOwotCi0gICAgICAgICAgICAg
ICAgLy8gY2FsbExpbmtJbmZvR1BSIG11c3QgYmUgbm9uIGNhbGxlZS1zYXZlIHJlZ2lzdGVyLiBP
dGhlcndpc2UsIHRhaWwtY2FsbCBwcmVwYXJhdGlvbiB3aWxsIGZpbGwgaXQKLSAgICAgICAgICAg
ICAgICAvLyB3aXRoIHNhdmVkIGNhbGxlZS1zYXZlLiBBbHNvLCBpdCBzaG91bGQgbm90IGJlIHRo
ZSBzYW1lIHRvIHJlZ1QwIHNpbmNlIGJvdGggd2lsbAotICAgICAgICAgICAgICAgIC8vIGJlIHVz
ZWQgbGF0ZXIgZGlmZmVyZW50bHkuCi0gICAgICAgICAgICAgICAgLy8gV2UgYWxzbyBkbyBub3Qg
a2VlcCBHUFJUZW1wb3JhcnkgKGl0IGlzIGltbWVkaWF0ZWx5IGRlc3Ryb3llZCkgYmVjYXVzZQot
ICAgICAgICAgICAgICAgIC8vIDEuIFdlIGRvIG5vdCB3YW50IHRvIGtlZXAgdGhlIHJlZ2lzdGVy
IGxvY2tlZCBpbiB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mIHRoZSBDYWxsLgotICAgICAgICAg
ICAgICAgIC8vIDIuIFRoaXMgbXVzdCBiZSB0aGUgbGFzdCByZWdpc3RlciBhbGxvY2F0aW9uIGZy
b20gREZHIHJlZ2lzdGVyIGJhbmssIHNvIGl0IGlzIE9LIChvdGhlcndpc2UsIGNhbGxlZS51c2Uo
KSBpcyB3cm9uZykuCiAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+
IGNhbGxMaW5rSW5mb1RlbXA7CiAgICAgICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxHUFJUZW1w
b3Jhcnk+IGdsb2JhbE9iamVjdFRlbXA7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9w
bGFuLmlzVW5saW5rZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm9UZW1w
LmVtcGxhY2UodGhpcywgc2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIsIEdQUkluZm86OnJlZ1Qw
LCBHUFJJbmZvOjpyZWdUMykpOwogICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm9HUFIg
PSBjYWxsTGlua0luZm9UZW1wLT5ncHIoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgY2FsbGVlRGVzdGluYXRpb24gPSBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgICAgICAgICAg
Y2FsbGVlLnVzZSgpOworICAgICAgICAgICAgICAgIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3
ZSBhcmUgdXNpbmcgRGF0YUlDLCB3ZSBuZWVkIGdsb2JhbE9iamVjdEdQUi4KKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkgeworICAgICAgICAgICAgICAgICAgICBn
bG9iYWxPYmplY3RUZW1wLmVtcGxhY2UodGhpcywgc2VsZWN0U2NyYXRjaEdQUihjYWxsZWVHUFIs
IEdQUkluZm86OnJlZ1QwLCBjYWxsTGlua0luZm9HUFIpKTsKKyAgICAgICAgICAgICAgICAgICAg
Z2xvYmFsT2JqZWN0R1BSID0gZ2xvYmFsT2JqZWN0VGVtcC0+Z3ByKCk7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpc0RpcmVjdCkKKyAgICAgICAg
ICAgICAgICBjYWxsZWUudXNlKCk7CiAKICAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bWJlclRh
Z1JlZ2lzdGVyID0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXI7CiAgICAgICAgICAgICBzaHVm
ZmxlRGF0YS5udW1Mb2NhbHMgPSBtX2dyYXBoLmZyYW1lUmVnaXN0ZXJDb3VudCgpOwpAQCAtOTA5
LDE4ICs5MDgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQog
ICAgIEdQUlJlZyBldmFsU2NvcGVHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIEdQUlJlZyBldmFs
VGhpc1ZhbHVlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICBpZiAoIWlzVGFpbCB8fCBpc1ZhcmFy
Z3MgfHwgaXNGb3J3YXJkVmFyYXJncykgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEdQUlRlbXBv
cmFyeT4gY2FsbGVlRGVzdGluYXRpb247Ci0gICAgICAgIGlmICghaXNEaXJlY3QpIHsKLSAgICAg
ICAgICAgIGNhbGxlZURlc3RpbmF0aW9uLmVtcGxhY2UodGhpcywgR1BSSW5mbzo6cmVnVDApOwot
ICAgICAgICAgICAgY2FsbGVlRGVzdGluYXRpb24tPmdwcigpOyAvLyBBbGxvY2F0ZSBHUFJJbmZv
OjpyZWdUMAotICAgICAgICB9CiAgICAgICAgIEVkZ2UgY2FsbGVlRWRnZSA9IG1fZ3JhcGguY2hp
bGQobm9kZSwgMCk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGNhbGxlZSh0aGlzLCBjYWxsZWVF
ZGdlKTsKICAgICAgICAgY2FsbGVlR1BSID0gY2FsbGVlLmdwcigpOwotICAgICAgICBpZiAoIWlz
RGlyZWN0KSB7Ci0gICAgICAgICAgICBtb3ZlKGNhbGxlZS5ncHIoKSwgR1BSSW5mbzo6cmVnVDAp
OwotICAgICAgICAgICAgY2FsbGVlR1BSID0gR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIH0KIAog
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFNwZWN1bGF0ZUNlbGxPcGVyYW5kPiBzY29wZTsKICAgICAg
ICAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlT3BlcmFuZD4gdGhpc1ZhbHVlOwpAQCAtOTM0LDcgKzky
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAg
IH0KIAogICAgICAgICAvLyBjYWxsTGlua0luZm9HUFIgbXVzdCBiZSBub24gY2FsbGVlLXNhdmUg
cmVnaXN0ZXIuIE90aGVyd2lzZSwgdGFpbC1jYWxsIHByZXBhcmF0aW9uIHdpbGwgZmlsbCBpdAot
ICAgICAgICAvLyB3aXRoIHNhdmVkIGNhbGxlZS1zYXZlLiBBbHNvLCBpdCBzaG91bGQgbm90IGJl
IHRoZSBzYW1lIHRvIHJlZ1QwIHNpbmNlIGJvdGggd2lsbAorICAgICAgICAvLyB3aXRoIHNhdmVk
IGNhbGxlZS1zYXZlLiBBbHNvLCBpdCBzaG91bGQgbm90IGJlIHRoZSBzYW1lIHRvIGNhbGxlZUdQ
UiBhbmQgcmVnVDAgc2luY2UgYm90aCB3aWxsCiAgICAgICAgIC8vIGJlIHVzZWQgbGF0ZXIgZGlm
ZmVyZW50bHkuCiAgICAgICAgIC8vIFdlIGFsc28gZG8gbm90IGtlZXAgR1BSVGVtcG9yYXJ5IChp
dCBpcyBpbW1lZGlhdGVseSBkZXN0cm95ZWQpIGJlY2F1c2UKICAgICAgICAgLy8gMS4gV2UgZG8g
bm90IHdhbnQgdG8ga2VlcCB0aGUgcmVnaXN0ZXIgbG9ja2VkIGluIHRoZSBmb2xsb3dpbmcgc2Vx
dWVuY2Ugb2YgdGhlIENhbGwuCkBAIC05NDMsNyArOTMzLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBjYWxsTGlu
a0luZm9UZW1wKHRoaXMsIHNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdU
MCwgR1BSSW5mbzo6cmVnVDMpKTsKICAgICAgICAgICAgIGNhbGxMaW5rSW5mb0dQUiA9IGNhbGxM
aW5rSW5mb1RlbXAuZ3ByKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FsbGVlRGVzdGluYXRpb24g
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgY2FsbGVlLnVzZSgpOwogICAgICAgICBpZiAoc2Nv
cGUpCkBAIC05NzgsNyArOTY3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9k
ZSogbm9kZSkKICAgICB9OwogICAgIAogICAgIHN0ZDo6dmlzaXQoWyZdKGF1dG8qIGNhbGxMaW5r
SW5mbykgewotICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlwZSk7CisgICAg
ICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBjYWxsZWVHUFIpOwogICAgIH0s
IGNhbGxMaW5rSW5mbyk7CiAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBDYWxsRGlyZWN0RXZhbCkg
ewpAQCAtMTAyOSw4ICsxMDE4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIGVtaXRTdG9yZUNhbGxTaXRlSW5kZXgoY2FsbFNpdGUpOwog
CiAgICAgICAgICAgICBsaW5rZWRDYWxsTGlua0luZm8tPmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQ
YXRoKCp0aGlzLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl17Ci0gICAgICAgICAgICAgICAgQ2Fs
bEZyYW1lU2h1ZmZsZXIgc2h1ZmZsZXIgeyAqdGhpcywgc2h1ZmZsZURhdGEgfTsKLSAgICAgICAg
ICAgICAgICBzaHVmZmxlci5wcmVwYXJlRm9yVGFpbENhbGwoKTsKKyAgICAgICAgICAgICAgICBs
aW5rZWRDYWxsTGlua0luZm8tPnNldEZyYW1lU2h1ZmZsZURhdGEoc2h1ZmZsZURhdGEpOworICAg
ICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyKCp0aGlzLCBzaHVmZmxlRGF0YSkucHJlcGFy
ZUZvclRhaWxDYWxsKCk7CiAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICBMYWJlbCBzbG93
UGF0aCA9IGxhYmVsKCk7CiAgICAgICAgICAgICAKQEAgLTEwNzAsMzcgKzEwNTksNDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICBlbWl0U3RvcmVDYWxs
U2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAg
TGFiZWwgZGlzcGF0Y2hMYWJlbDsKICAgICBzdGQ6Om9wdGlvbmFsPEp1bXA+IGRvbmU7CiAgICAg
aWYgKG1fZ3JhcGgubV9wbGFuLmlzVW5saW5rZWQoKSkKICAgICAgICAgbG9hZExpbmthYmxlQ29u
c3RhbnQoY2FsbExpbmtJbmZvQ29uc3RhbnQsIGNhbGxMaW5rSW5mb0dQUik7CiAgICAgaWYgKGlz
VGFpbCkgewotICAgICAgICBzdGQ6OnRpZShzbG93Q2FzZXMsIGRpc3BhdGNoTGFiZWwpID0gQ2Fs
bExpbmtJbmZvOjplbWl0VGFpbENhbGxGYXN0UGF0aCgqdGhpcywgY2FsbExpbmtJbmZvLCBHUFJJ
bmZvOjpyZWdUMCwgY2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl0gewor
ICAgICAgICBzbG93Q2FzZXMgPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKCp0
aGlzLCBjYWxsTGlua0luZm8sIGNhbGxlZUdQUiwgY2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1i
ZGE8dm9pZCgpPihbJiwgY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvXXsKICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFRhaWxDYWxsKSB7Ci0gICAgICAgICAgICAgICAgQ2FsbEZyYW1l
U2h1ZmZsZXIgc2h1ZmZsZXIgeyAqdGhpcywgc2h1ZmZsZURhdGEgfTsKLSAgICAgICAgICAgICAg
ICBzaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVlUmVncyhCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2Fs
bDo6Y2FsbGVlSlNSKTsKLSAgICAgICAgICAgICAgICBzaHVmZmxlci5wcmVwYXJlRm9yVGFpbENh
bGwoKTsKKyAgICAgICAgICAgICAgICBzdGQ6OnZpc2l0KFsmXShhdXRvKiBjYWxsTGlua0luZm8p
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRGcmFtZVNodWZmbGVEYXRh
KHNodWZmbGVEYXRhKTsKKyAgICAgICAgICAgICAgICB9LCBjYWxsTGlua0luZm8pOworICAgICAg
ICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyKCp0aGlzLCBzaHVmZmxlRGF0YSkucHJlcGFyZUZv
clRhaWxDYWxsKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRS
ZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBwcmVzZXJ2
ZWQ7CiAgICAgICAgICAgICAgICAgaWYgKGNhbGxMaW5rSW5mb0dQUiAhPSBJbnZhbGlkR1BSUmVn
KQogICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZWQuYWRkKGNhbGxMaW5rSW5mb0dQUiwgSWdu
b3JlVmVjdG9ycyk7Ci0gICAgICAgICAgICAgICAgcHJlc2VydmVkLmFkZChHUFJJbmZvOjpyZWdU
MCwgSWdub3JlVmVjdG9ycyk7CiAgICAgICAgICAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsU2xv
dyhXVEZNb3ZlKHByZXNlcnZlZCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgc3RkOjp0aWUoc2xvd0Nhc2VzLCBkaXNwYXRjaExhYmVsKSA9IENh
bGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKCp0aGlzLCBjYWxsTGlua0luZm8sIEdQUkluZm86OnJl
Z1QwLCBjYWxsTGlua0luZm9HUFIpOworICAgICAgICBzbG93Q2FzZXMgPSBDYWxsTGlua0luZm86
OmVtaXRGYXN0UGF0aCgqdGhpcywgY2FsbExpbmtJbmZvLCBjYWxsZWVHUFIsIGNhbGxMaW5rSW5m
b0dQUik7CiAgICAgICAgIGRvbmUgPSBqdW1wKCk7CiAgICAgfQogCiAgICAgc2xvd0Nhc2VzLmxp
bmsodGhpcyk7CiAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gbGFiZWwoKTsKLSAgICBsb2FkTGlu
a2FibGVDb25zdGFudChMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRoaXMsIG5vZGUp
LCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Z2xvYmFsT2JqZWN0R1BSKTsgLy8gSlNHbG9i
YWxPYmplY3QgbmVlZHMgdG8gYmUgaW4gcmVnVDMKLSAgICBpZiAoaXNUYWlsKQotICAgICAgICBD
YWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbFNsb3dQYXRoKHZtKCksICp0aGlzLCBjYWxsTGlua0lu
Zm8sIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIGRpc3BhdGNo
TGFiZWwpOwotICAgIGVsc2UKLSAgICAgICAgQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgodm0o
KSwgKnRoaXMsIGNhbGxMaW5rSW5mbywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxM
aW5rSW5mb0dQUik7CisKKyAgICBpZiAobm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkgeworICAgICAg
ICBsb2FkTGlua2FibGVDb25zdGFudChMaW5rYWJsZUNvbnN0YW50OjpnbG9iYWxPYmplY3QoKnRo
aXMsIG5vZGUpLCBnbG9iYWxPYmplY3RHUFIpOworICAgICAgICBzaHVmZmxlRGF0YS5yZWdpc3Rl
cnNbR1BSSW5mbzo6cmVnVDNdID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoZ2xvYmFsT2JqZWN0R1BS
LCBEYXRhRm9ybWF0SlMpOworICAgICAgICBDYWxsRnJhbWVTaHVmZmxlciBjYWxsRnJhbWVTaHVm
ZmxlcigqdGhpcywgc2h1ZmZsZURhdGEpOworICAgICAgICBjYWxsRnJhbWVTaHVmZmxlci5zZXRD
YWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICBj
YWxsRnJhbWVTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBtb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDApOyAvLyBDYWxsZWUgbmVlZHMgdG8g
YmUgaW4gcmVnVDAKKyAgICAgICAgbG9hZExpbmthYmxlQ29uc3RhbnQoTGlua2FibGVDb25zdGFu
dDo6Z2xvYmFsT2JqZWN0KCp0aGlzLCBub2RlKSwgR1BSSW5mbzo6cmVnVDMpOyAvLyBKU0dsb2Jh
bE9iamVjdCBuZWVkcyB0byBiZSBpbiByZWdUMworICAgICAgICBpZiAoaXNUYWlsKQorICAgICAg
ICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOyAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBh
ZnRlciB3ZSBtb3ZlZCBjYWxsZWVHUFIgdG8gcmVnVDAKKyAgICB9CisKKyAgICBDYWxsTGlua0lu
Zm86OmVtaXRTbG93UGF0aCh2bSgpLCAqdGhpcywgY2FsbExpbmtJbmZvLCBjYWxsTGlua0luZm9H
UFIpOwogCiAgICAgaWYgKGRvbmUpCiAgICAgICAgIGRvbmUtPmxpbmsodGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYWM4OGZhMjA1
ZGZhLi42YzUxOTQ5YTNmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTExMjg3LDE1ICsxMTI4NywxNiBAQCBJR05PUkVfQ0xBTkdfV0FS
TklOR1NfRU5ECiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6dGFnRm9yKENhbGxG
cmFtZVNsb3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CiAKICAgICAgICAgICAgICAg
ICBhdXRvKiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+YWRkQ2FsbExpbmtJbmZvKG5vZGVTZW1hbnRp
Y09yaWdpbik7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwobm9kZU9w
ID09IENvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpD
YWxsKTsKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbCgKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZU9wID09IENvbnN0cnVjdCA/IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0
IDogQ2FsbExpbmtJbmZvOjpDYWxsLCBHUFJJbmZvOjpyZWdUMCk7CiAKLSAgICAgICAgICAgICAg
ICBhdXRvIFtzbG93UGF0aCwgZGlzcGF0Y2hMYWJlbF0gPSBDYWxsTGlua0luZm86OmVtaXRGYXN0
UGF0aChqaXQsIGNhbGxMaW5rSW5mbywgR1BSSW5mbzo6cmVnVDAsIEJhc2VsaW5lSklUUmVnaXN0
ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOworICAgICAgICAgICAgICAgIGF1dG8gc2xvd1Bh
dGggPSBDYWxsTGlua0luZm86OmVtaXRGYXN0UGF0aChqaXQsIGNhbGxMaW5rSW5mbywgR1BSSW5m
bzo6cmVnVDAsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
SnVtcCBkb25lID0gaml0Lmp1bXAoKTsKIAogICAgICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmso
JmppdCk7CiAgICAgICAgICAgICAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gaml0LmxhYmVsKCk7
Ci0gICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGVTZW1hbnRpY09yaWdpbikpLCBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Z2xvYmFsT2JqZWN0R1BSKTsKLSAgICAgICAgICAgICAg
ICBDYWxsTGlua0luZm86OmVtaXRTbG93UGF0aCgqdm0sIGppdCwgY2FsbExpbmtJbmZvLCBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Iobm9kZVNlbWFudGljT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKKyAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAKICAg
ICAgICAgICAgICAgICBkb25lLmxpbmsoJmppdCk7CiAKQEAgLTExNDIxLDcgKzExNDIyLDcgQEAg
SUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAgICAgICAgICBzaHVmZmxlRGF0
YS5zZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoc3RhdGUtPmppdENvZGUtPmNhbGxlZVNhdmVSZWdp
c3RlcnMoKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBhdXRv
KiBjYWxsTGlua0luZm8gPSBzdGF0ZS0+YWRkQ2FsbExpbmtJbmZvKHNlbWFudGljTm9kZU9yaWdp
bik7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxsKENhbGxMaW5r
SW5mbzo6RGlyZWN0VGFpbENhbGwpOworICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8t
PnNldFVwQ2FsbChDYWxsTGlua0luZm86OkRpcmVjdFRhaWxDYWxsLCBJbnZhbGlkR1BSUmVnKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRFeGVjdXRhYmxlRHVyaW5nQ29t
cGlsYXRpb24oZXhlY3V0YWJsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChudW1BbGxvY2F0
ZWRBcmdzID4gbnVtUGFzc2VkQXJncykKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+c2V0RGlyZWN0Q2FsbE1heEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKG51bUFsbG9j
YXRlZEFyZ3MpOwpAQCAtMTE0MzEsNiArMTE0MzIsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1Nf
RU5ECiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihj
YWxsU2l0ZUluZGV4LmJpdHMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmVtaXREaXJlY3RUYWlsQ2FsbEZhc3RQ
YXRoKGppdCwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdeworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5zZXRGcmFtZVNodWZmbGVEYXRhKHNodWZmbGVEYXRhKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyKGppdCwgc2h1ZmZsZURhdGEpLnBy
ZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAg
ICAgICAgICAgIApAQCAtMTE0NTIsNyArMTE0NTQsOCBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1Nf
RU5ECiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNOb2Rl
T3JpZ2luKTsKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChpc0NvbnN0
cnVjdCA/IENhbGxMaW5rSW5mbzo6RGlyZWN0Q29uc3RydWN0IDogQ2FsbExpbmtJbmZvOjpEaXJl
Y3RDYWxsKTsKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbCgKKyAgICAg
ICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3QgPyBDYWxsTGlua0luZm86OkRpcmVjdENvbnN0cnVj
dCA6IENhbGxMaW5rSW5mbzo6RGlyZWN0Q2FsbCwgSW52YWxpZEdQUlJlZyk7CiAKICAgICAgICAg
ICAgICAgICBjYWxsTGlua0luZm8tPnNldEV4ZWN1dGFibGVEdXJpbmdDb21waWxhdGlvbihleGVj
dXRhYmxlKTsKICAgICAgICAgICAgICAgICBpZiAobnVtQWxsb2NhdGVkQXJncyA+IG51bVBhc3Nl
ZEFyZ3MpCkBAIC0xMTU4MCwxOCArMTE1ODMsMjEgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VO
RAogICAgICAgICAgICAgICAgIHNodWZmbGVEYXRhLnNldHVwQ2FsbGVlU2F2ZVJlZ2lzdGVycyhz
dGF0ZS0+aml0Q29kZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgICAgICAgICAgICAg
IGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5hZGRDYWxsTGlua0luZm8oY29kZU9yaWdpbik7
Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExpbmtJbmZvOjpU
YWlsQ2FsbCk7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5zZXRVcENhbGwoQ2FsbExp
bmtJbmZvOjpUYWlsQ2FsbCwgR1BSSW5mbzo6cmVnVDApOwogCi0gICAgICAgICAgICAgICAgYXV0
byBbc2xvd1BhdGgsIGRpc3BhdGNoTGFiZWxdID0gQ2FsbExpbmtJbmZvOjplbWl0VGFpbENhbGxG
YXN0UGF0aChqaXQsIGNhbGxMaW5rSW5mbywgR1BSSW5mbzo6cmVnVDAsIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIHNjb3BlZExhbWJkYTx2b2lkKCk+KFsmXSB7
Ci0gICAgICAgICAgICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIHNodWZmbGVyIHsgaml0LCBz
aHVmZmxlRGF0YSB9OwotICAgICAgICAgICAgICAgICAgICBzaHVmZmxlci5zZXRDYWxsZWVKU1Zh
bHVlUmVncyhCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKTsKLSAgICAgICAg
ICAgICAgICAgICAgc2h1ZmZsZXIucHJlcGFyZUZvclRhaWxDYWxsKCk7CisgICAgICAgICAgICAg
ICAgYXV0byBzbG93UGF0aCA9IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRmFzdFBhdGgoaml0
LCBjYWxsTGlua0luZm8sIEdQUkluZm86OnJlZ1QwLCBJbnZhbGlkR1BSUmVnLCBzY29wZWRMYW1i
ZGE8dm9pZCgpPihbJl17CisgICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0RnJh
bWVTaHVmZmxlRGF0YShzaHVmZmxlRGF0YSk7CisgICAgICAgICAgICAgICAgICAgIENhbGxGcmFt
ZVNodWZmbGVyKGppdCwgc2h1ZmZsZURhdGEpLnByZXBhcmVGb3JUYWlsQ2FsbCgpOwogICAgICAg
ICAgICAgICAgIH0pKTsKIAotICAgICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGpp
dC5sYWJlbCgpOwogICAgICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJmppdCk7Ci0gICAgICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxv
Y2soKS0+Z2xvYmFsT2JqZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbikpLCBCYXNlbGluZUpJVFJl
Z2lzdGVyczo6Q2FsbDo6Z2xvYmFsT2JqZWN0R1BSKTsKLSAgICAgICAgICAgICAgICBDYWxsTGlu
a0luZm86OmVtaXRUYWlsQ2FsbFNsb3dQYXRoKCp2bSwgaml0LCBjYWxsTGlua0luZm8sIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIsIGRpc3BhdGNoTGFiZWwpOwor
ICAgICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGppdC5sYWJlbCgpOworICAgICAg
ICAgICAgICAgIENhbGxGcmFtZVNodWZmbGVyIHNsb3dQYXRoU2h1ZmZsZXIoaml0LCBzaHVmZmxl
RGF0YSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhTaHVmZmxlci5zZXRDYWxsZWVKU1ZhbHVl
UmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOworICAgICAgICAgICAgICAgIHNsb3dQ
YXRoU2h1ZmZsZXIucHJlcGFyZUZvclNsb3dQYXRoKCk7CisKKyAgICAgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAg
ICAgICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAKICAgICAgICAg
ICAgICAgICBhdXRvIGRvbmVMb2NhdGlvbiA9IGppdC5sYWJlbCgpOwogICAgICAgICAgICAgICAg
IGppdC5hYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxsKTsKQEAgLTExOTE0
LDM1ICsxMTkyMCwzMSBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5ECiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2Fs
bFZhcmFyZ3M7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5zZXRVcENhbGwoY2FsbFR5cGUpOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0
VXBDYWxsKGNhbGxUeXBlLCBHUFJJbmZvOjpyZWdUMCk7CiAKICAgICAgICAgICAgICAgICBib29s
IGlzVGFpbENhbGwgPSBDYWxsTGlua0luZm86OmNhbGxNb2RlRm9yKGNhbGxUeXBlKSA9PSBDYWxs
TW9kZTo6VGFpbDsKIAogICAgICAgICAgICAgICAgIEFTU0VSVCghdXNlZFJlZ2lzdGVycy5jb250
YWlucyhHUFJJbmZvOjpyZWdUMiwgSWdub3JlVmVjdG9ycykpOyAvLyBVc2VkIG9uIHRoZSBzbG93
IHBhdGguCiAKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHNsb3dQYXRo
OwotICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZGlzcGF0Y2hMYWJlbDsKICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9uZTsKICAgICAgICAgICAgICAgICBp
ZiAoaXNUYWlsQ2FsbCkgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnRpZShzbG93UGF0aCwg
ZGlzcGF0Y2hMYWJlbCkgPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKGppdCwg
Y2FsbExpbmtJbmZvLCBHUFJJbmZvOjpyZWdUMCwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6
OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4oWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgc2xvd1BhdGggPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKGpp
dCwgY2FsbExpbmtJbmZvLCBHUFJJbmZvOjpyZWdUMCwgSW52YWxpZEdQUlJlZywgc2NvcGVkTGFt
YmRhPHZvaWQoKT4oWyZdewogICAgICAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3Jl
Q2FsbGVlU2F2ZXNGb3Ioc3RhdGUtPmppdENvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBwcmVzZXJ2ZWQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwcmVzZXJ2ZWQuYWRkKEdQUkluZm86OnJlZ1QwLCBJZ25vcmVWZWN0b3Jz
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KHBy
ZXNlcnZlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBqaXQucHJlcGFyZUZvclRhaWxDYWxs
U2xvdygpOwogICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjp0aWUoc2xvd1BhdGgsIGRpc3BhdGNoTGFiZWwp
ID0gQ2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGgoaml0LCBjYWxsTGlua0luZm8sIEdQUkluZm86
OnJlZ1QwLCBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBD
YWxsTGlua0luZm86OmVtaXRGYXN0UGF0aChqaXQsIGNhbGxMaW5rSW5mbywgR1BSSW5mbzo6cmVn
VDAsIEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgICAgICBkb25lID0gaml0Lmp1bXAo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
c2xvd1BhdGgubGluaygmaml0KTsKICAgICAgICAgICAgICAgICBhdXRvIHNsb3dQYXRoU3RhcnQg
PSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAvLyBjYWxsZWVHUFIgaXMgYWx3YXlzIHJl
Z1QwLiBTbyB3ZSBkbyBub3QgbmVlZCB0byBjaGFuZ2UgaXQgaGVyZS4KLSAgICAgICAgICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygpLT5n
bG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSksIEJhc2VsaW5lSklUUmVnaXN0ZXJz
OjpDYWxsOjpnbG9iYWxPYmplY3RHUFIpOworCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENh
bGwpCi0gICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsU2xvd1Bh
dGgoKnZtLCBqaXQsIGNhbGxMaW5rSW5mbywgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNh
bGxMaW5rSW5mb0dQUiwgZGlzcGF0Y2hMYWJlbCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBDYWxsTGlua0luZm86OmVtaXRTbG93UGF0aCgqdm0sIGppdCwgY2Fs
bExpbmtJbmZvLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsK
KyAgICAgICAgICAgICAgICAgICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3Ioc3RhdGUt
PmppdENvZGUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2Jq
ZWN0Rm9yKHNlbWFudGljTm9kZU9yaWdpbikpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5lbWl0U2xvd1BhdGgoKnZtLCBqaXQpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQogICAgICAgICAgICAgICAgICAg
ICBqaXQuYWJvcnRXaXRoUmVhc29uKEpJVERpZFJldHVybkZyb21UYWlsQ2FsbCk7CkBAIC0xMjIw
MSwzMiArMTIyMDMsMjkgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNh
bGxWYXJhcmdzOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5m
by0+c2V0VXBDYWxsKGNhbGxUeXBlKTsKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNl
dFVwQ2FsbChjYWxsVHlwZSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGJvb2wgaXNUYWlsQ2FsbCA9IENhbGxMaW5rSW5mbzo6Y2FsbE1vZGVGb3Io
Y2FsbFR5cGUpID09IENhbGxNb2RlOjpUYWlsOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd1BhdGg7Ci0gICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpMYWJlbCBkaXNwYXRjaExhYmVsOwogICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6SnVtcCBkb25lOwogICAgICAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dGllKHNsb3dQYXRoLCBkaXNwYXRjaExhYmVsKSA9IENh
bGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRmFzdFBhdGgoaml0LCBjYWxsTGlua0luZm8sIEdQUklu
Zm86OnJlZ1QwLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBz
Y29wZWRMYW1iZGE8dm9pZCgpPihbJl0geworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aCA9
IENhbGxMaW5rSW5mbzo6ZW1pdFRhaWxDYWxsRmFzdFBhdGgoaml0LCBjYWxsTGlua0luZm8sIEdQ
UkluZm86OnJlZ1QwLCBJbnZhbGlkR1BSUmVnLCBzY29wZWRMYW1iZGE8dm9pZCgpPihbJl17CiAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcihzdGF0
ZS0+aml0Q29kZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFJlZ2lzdGVyU2V0IHByZXNlcnZlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZXNl
cnZlZC5hZGQoR1BSSW5mbzo6cmVnVDAsIElnbm9yZVZlY3RvcnMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaml0LnByZXBhcmVGb3JUYWlsQ2FsbFNsb3cocHJlc2VydmVkKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnRpZShzbG93UGF0aCwgZGlzcGF0Y2hMYWJlbCkgPSBDYWxsTGlua0luZm86OmVt
aXRGYXN0UGF0aChqaXQsIGNhbGxMaW5rSW5mbywgR1BSSW5mbzo6cmVnVDAsIEludmFsaWRHUFJS
ZWcpOworICAgICAgICAgICAgICAgICAgICBzbG93UGF0aCA9IENhbGxMaW5rSW5mbzo6ZW1pdEZh
c3RQYXRoKGppdCwgY2FsbExpbmtJbmZvLCBHUFJJbmZvOjpyZWdUMCwgSW52YWxpZEdQUlJlZyk7
CiAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBqaXQuanVtcCgpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZqaXQp
OwogICAgICAgICAgICAgICAgIGF1dG8gc2xvd1BhdGhTdGFydCA9IGppdC5sYWJlbCgpOwotICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihqaXQuY29k
ZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihzZW1hbnRpY05vZGVPcmlnaW4pKSwgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkNhbGw6Omdsb2JhbE9iamVjdEdQUik7CisKICAgICAgICAgICAgICAgICBp
ZiAoaXNUYWlsQ2FsbCkKLSAgICAgICAgICAgICAgICAgICAgQ2FsbExpbmtJbmZvOjplbWl0VGFp
bENhbGxTbG93UGF0aCgqdm0sIGppdCwgY2FsbExpbmtJbmZvLCBCYXNlbGluZUpJVFJlZ2lzdGVy
czo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBkaXNwYXRjaExhYmVsKTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbzo6ZW1pdFNsb3dQYXRoKCp2
bSwgaml0LCBjYWxsTGlua0luZm8sIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlu
a0luZm9HUFIpOworICAgICAgICAgICAgICAgICAgICBqaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZl
c0ZvcihzdGF0ZS0+aml0Q29kZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKKyAgICAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3RGb3Ioc2VtYW50aWNOb2RlT3JpZ2luKSksIEdQUkluZm86OnJlZ1QzKTsK
KyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCgqdm0sIGppdCk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCiAgICAgICAg
ICAgICAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oSklURGlkUmV0dXJuRnJvbVRhaWxDYWxs
KTsKQEAgLTEyMzIwLDcgKzEyMzE5LDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OnRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IHN0YXRlLT5hZGRDYWxsTGlua0luZm8oc2VtYW50aWNO
b2RlT3JpZ2luKTsKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChDYWxs
TGlua0luZm86OkNhbGwpOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0VXBDYWxs
KENhbGxMaW5rSW5mbzo6Q2FsbCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLXN0
YXRpY19jYXN0PHB0cmRpZmZfdD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSksIENDYWxsSGVs
cGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgICAg
ICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSwgQ2FsbEZyYW1lOjpjYWxsZXJGcmFtZU9mZnNldCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCmluZGV4IGFmZDE0MzNmYTgz
NC4uYmRjOGU4Yzg4NjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmNwcApA
QCAtMTc1LDcgKzE3NSw3IEBAIFN0cnVjdHVyZVN0dWJJbmZvKiBTdGF0ZTo6YWRkU3RydWN0dXJl
U3R1YkluZm8oKQogCiBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKiBTdGF0ZTo6YWRkQ2FsbExpbmtJ
bmZvKENvZGVPcmlnaW4gY29kZU9yaWdpbikKIHsKLSAgICByZXR1cm4gaml0Q29kZS0+Y29tbW9u
Lm1fY2FsbExpbmtJbmZvcy5hZGQoY29kZU9yaWdpbiwgQ2FsbExpbmtJbmZvOjpVc2VEYXRhSUM6
Ok5vLCBncmFwaC5tX2NvZGVCbG9jayk7CisgICAgcmV0dXJuIGppdENvZGUtPmNvbW1vbi5tX2Nh
bGxMaW5rSW5mb3MuYWRkKGNvZGVPcmlnaW4sIENhbGxMaW5rSW5mbzo6VXNlRGF0YUlDOjpObyk7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCmluZGV4IDE5YWFmMjVlMmJlNC4uNTllMjQxMTZk
ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVk
Q2FsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxs
LmgKQEAgLTEwNSwxOSArMTA1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50
KEpTVmFsdWUgdikgeyBtX2FyZ3VtZW50cy5hcHBlbmQodik7IH0KICAgICBib29sIGhhc092ZXJm
bG93ZWRBcmd1bWVudHMoKSB7IHJldHVybiBtX2FyZ3VtZW50cy5oYXNPdmVyZmxvd2VkKCk7IH0K
IAotICAgIHZvaWQgdW5saW5rT3JVcGdyYWRlSW1wbChWTSYsIENvZGVCbG9jayogb2xkQ29kZUJs
b2NrLCBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jaykKKyAgICB2b2lkIHVubGlua0ltcGwoVk0mKQog
ICAgIHsKKyAgICAgICAgbV9hZGRyZXNzRm9yQ2FsbCA9IG51bGxwdHI7CiAgICAgICAgIGlmIChp
c09uTGlzdCgpKQogICAgICAgICAgICAgcmVtb3ZlKCk7Ci0KLSAgICAgICAgaWYgKG5ld0NvZGVC
bG9jayAmJiBtX3Byb3RvQ2FsbEZyYW1lLmNvZGVCbG9jaygpID09IG9sZENvZGVCbG9jaykgewot
ICAgICAgICAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNl
OwotICAgICAgICAgICAgbV9hZGRyZXNzRm9yQ2FsbCA9IG5ld0NvZGVCbG9jay0+aml0Q29kZSgp
LT5hZGRyZXNzRm9yQ2FsbCgpOwotICAgICAgICAgICAgbV9wcm90b0NhbGxGcmFtZS5zZXRDb2Rl
QmxvY2sobmV3Q29kZUJsb2NrKTsKLSAgICAgICAgICAgIG5ld0NvZGVCbG9jay0+bGlua0luY29t
aW5nQ2FsbChudWxscHRyLCB0aGlzKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBtX2FkZHJlc3NGb3JDYWxsID0gbnVsbHB0cjsKICAgICB9CiAKICAgICB2b2lkIHJl
bGluaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAppbmRleCAyNGYwYjU1M2QzNDguLmI5M2QzMzZjZjkyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0zNSw3ICsz
NSw2IEBACiAjaW5jbHVkZSAiQXJnTGlzdC5oIgogI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0aW9u
T3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCi0jaW5jbHVkZSAiQ2FsbExpbmtJ
bmZvLmgiCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkNoZWNrcG9pbnRPU1JF
eGl0U2lkZVN0YXRlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCkBAIC00MDEsMTMgKzQwMCwx
MyBAQCBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bjb2RlKQogCiBjbGFzcyBH
ZXRTdGFja1RyYWNlRnVuY3RvciB7CiBwdWJsaWM6Ci0gICAgR2V0U3RhY2tUcmFjZUZ1bmN0b3Io
Vk0mIHZtLCBKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemVf
dCBmcmFtZXNUb1NraXAsIHNpemVfdCBmcmFtZUNvdW50SW5SZXN1bHRzKQorICAgIEdldFN0YWNr
VHJhY2VGdW5jdG9yKFZNJiB2bSwgSlNDZWxsKiBvd25lciwgVmVjdG9yPFN0YWNrRnJhbWU+JiBy
ZXN1bHRzLCBzaXplX3QgZnJhbWVzVG9Ta2lwLCBzaXplX3QgY2FwYWNpdHkpCiAgICAgICAgIDog
bV92bSh2bSkKICAgICAgICAgLCBtX293bmVyKG93bmVyKQogICAgICAgICAsIG1fcmVzdWx0cyhy
ZXN1bHRzKQogICAgICAgICAsIG1fZnJhbWVzVG9Ta2lwKGZyYW1lc1RvU2tpcCkKLSAgICAgICAg
LCBtX2ZyYW1lQ291bnRJblJlc3VsdHMoZnJhbWVDb3VudEluUmVzdWx0cykKICAgICB7CisgICAg
ICAgIG1fcmVzdWx0cy5ncm93KGNhcGFjaXR5KTsKICAgICB9CiAKICAgICBJdGVyYXRpb25TdGF0
dXMgb3BlcmF0b3IoKShTdGFja1Zpc2l0b3ImIHZpc2l0b3IpIGNvbnN0CkBAIC00NDcsMTEgKzQ0
NiwxMSBAQCBwcml2YXRlOgogICAgIFZNJiBtX3ZtOwogICAgIEpTQ2VsbCogbV9vd25lcjsKICAg
ICBWZWN0b3I8U3RhY2tGcmFtZT4mIG1fcmVzdWx0czsKKyAgICBtdXRhYmxlIHNpemVfdCBtX2Zy
YW1lQ291bnRJblJlc3VsdHMgeyAwIH07CiAgICAgbXV0YWJsZSBzaXplX3QgbV9mcmFtZXNUb1Nr
aXA7Ci0gICAgbXV0YWJsZSBzaXplX3QgbV9mcmFtZUNvdW50SW5SZXN1bHRzOwogfTsKIAotdm9p
ZCBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZShKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tG
cmFtZT4mIHJlc3VsdHMsIHNpemVfdCBmcmFtZXNUb1NraXAsIHNpemVfdCBtYXhTdGFja1NpemUs
IEpTQ2VsbCogY2FsbGVyLCBKU0NlbGwqIG93bmVyT2ZDYWxsTGlua0luZm8sIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvKQordm9pZCBJbnRlcnByZXRlcjo6Z2V0U3RhY2tUcmFjZShKU0NlbGwq
IG93bmVyLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemVfdCBmcmFtZXNUb1NraXAs
IHNpemVfdCBtYXhTdGFja1NpemUsIEpTQ2VsbCogY2FsbGVyKQogewogICAgIERpc2FsbG93R0Mg
ZGlzYWxsb3dHQzsKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwpAQCAtNDYxLDQ2ICs0NjAsNiBA
QCB2b2lkIEludGVycHJldGVyOjpnZXRTdGFja1RyYWNlKEpTQ2VsbCogb3duZXIsIFZlY3RvcjxT
dGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZQogCiAgICAgc2l6ZV90IHNraXBwZWRGcmFtZXMgPSAw
OwogICAgIHNpemVfdCB2aXNpdGVkRnJhbWVzID0gMDsKLQotICAgIGF1dG8gaXNJbXBsZW1lbnRh
dGlvblZpc2liaWxpdHlQcml2YXRlID0gWyZdKENvZGVCbG9jayogY29kZUJsb2NrKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkK
LSAgICAgICAgICAgIHJldHVybiBleGVjdXRhYmxlLT5pbXBsZW1lbnRhdGlvblZpc2liaWxpdHko
KSAhPSBJbXBsZW1lbnRhdGlvblZpc2liaWxpdHk6OlB1YmxpYzsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH07Ci0KLSAgICAvLyBUaGlzIGlzIE9LIHNpbmNlIHdlIG5ldmVyIGNhdXNlIEdD
IGluc2lkZSBpdCAoc2VlIERpc2FsbG93R0MpLgotICAgIFZlY3RvcjxzdGQ6OnR1cGxlPENvZGVC
bG9jayosIEJ5dGVjb2RlSW5kZXg+LCAxNj4gcmVjb25zdHJ1Y3RlZEZyYW1lczsKLSAgICBhdXRv
IGNvdW50RnJhbWUgPSBbJl0oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkgewotICAgICAgICBpZiAoc2tpcHBlZEZyYW1lcyA8IGZyYW1lc1RvU2tpcCkg
ewotICAgICAgICAgICAgc2tpcHBlZEZyYW1lcysrOwotICAgICAgICAgICAgcmV0dXJuIEl0ZXJh
dGlvblN0YXR1czo6Q29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW1wbGVtZW50
YXRpb25WaXNpYmlsaXR5UHJpdmF0ZShjb2RlQmxvY2spKQotICAgICAgICAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci0KLSAgICAgICAgcmVjb25zdHJ1Y3RlZEZyYW1lcy5h
cHBlbmQoc3RkOjp0dXBsZSB7IGNvZGVCbG9jaywgYnl0ZWNvZGVJbmRleCB9KTsKLSAgICAgICAg
aWYgKCsrdmlzaXRlZEZyYW1lcyA8IG1heFN0YWNrU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwotCi0gICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkRvbmU7Ci0gICAgfTsKLQotICAgIGlmICghY2FsbGVyICYmIG93bmVyT2ZDYWxsTGlua0lu
Zm8gJiYgY2FsbExpbmtJbmZvICYmIGNhbGxMaW5rSW5mby0+aXNUYWlsQ2FsbCgpKSB7Ci0gICAg
ICAgIC8vIFJlY29uc3RydWN0IHRoZSB0b3AgZnJhbWUgZnJvbSBDYWxsTGlua0luZm8qCi0gICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0ganNEeW5hbWljQ2FzdDxDb2RlQmxvY2sqPihvd25l
ck9mQ2FsbExpbmtJbmZvKTsKLSAgICAgICAgaWYgKGNvZGVCbG9jaykgewotICAgICAgICAgICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luID0gY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCk7Ci0gICAg
ICAgICAgICBpZiAoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICAgICAg
ICAgIGZvciAoYXV0byBjdXJyZW50Q29kZU9yaWdpbiA9ICZjb2RlT3JpZ2luOyBjdXJyZW50Q29k
ZU9yaWdpbiAmJiBjdXJyZW50Q29kZU9yaWdpbi0+aW5saW5lQ2FsbEZyYW1lKCk7IGN1cnJlbnRD
b2RlT3JpZ2luID0gY3VycmVudENvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZSgpLT5nZXRDYWxs
ZXJTa2lwcGluZ1RhaWxDYWxscygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudEZy
YW1lKGJhc2VsaW5lQ29kZUJsb2NrRm9ySW5saW5lQ2FsbEZyYW1lKGN1cnJlbnRDb2RlT3JpZ2lu
LT5pbmxpbmVDYWxsRnJhbWUoKSksIGN1cnJlbnRDb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KCkp
ID09IEl0ZXJhdGlvblN0YXR1czo6RG9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IGNvdW50RnJhbWUoY29kZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBzaXplX3Qgc2tpcHBlZEZyYW1lc0luUmVjb25zdHJ1Y3RlZEZy
YW1lcyA9IHNraXBwZWRGcmFtZXM7CiAgICAgYm9vbCBmb3VuZENhbGxlciA9ICFjYWxsZXI7CiAg
ICAgU3RhY2tWaXNpdG9yOjp2aXNpdChjYWxsRnJhbWUsIHZtLCBbJl0gKFN0YWNrVmlzaXRvciYg
dmlzaXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgaWYgKHNraXBwZWRGcmFtZXMg
PCBmcmFtZXNUb1NraXApIHsKQEAgLTUyNiwxMiArNDg1LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6
Z2V0U3RhY2tUcmFjZShKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMs
IHNpemUKICAgICBpZiAoIXZpc2l0ZWRGcmFtZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJl
c3VsdHMuZ3Jvdyh2aXNpdGVkRnJhbWVzKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAg
Zm9yIChhdXRvIFtjb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXhdIDogcmVjb25zdHJ1Y3RlZEZyYW1l
cykKLSAgICAgICAgcmVzdWx0c1tpbmRleCsrXSA9IFN0YWNrRnJhbWUodm0sIG93bmVyLCBjb2Rl
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwotCi0gICAgR2V0U3RhY2tUcmFjZUZ1bmN0b3IgZnVuY3Rv
cih2bSwgb3duZXIsIHJlc3VsdHMsIHNraXBwZWRGcmFtZXMgLSBza2lwcGVkRnJhbWVzSW5SZWNv
bnN0cnVjdGVkRnJhbWVzLCByZWNvbnN0cnVjdGVkRnJhbWVzLnNpemUoKSk7CisgICAgR2V0U3Rh
Y2tUcmFjZUZ1bmN0b3IgZnVuY3Rvcih2bSwgb3duZXIsIHJlc3VsdHMsIHNraXBwZWRGcmFtZXMs
IHZpc2l0ZWRGcmFtZXMpOwogICAgIFN0YWNrVmlzaXRvcjo6dmlzaXQoY2FsbEZyYW1lLCB2bSwg
ZnVuY3Rvcik7CiAgICAgQVNTRVJUKGZ1bmN0b3IuZnJhbWVDb3VudEluUmVzdWx0cygpID09IHJl
c3VsdHMuc2l6ZSgpKTsKIH0KQEAgLTEzNDEsNyArMTI5NSw3IEBAIENvZGVCbG9jayogSW50ZXJw
cmV0ZXI6OnByZXBhcmVGb3JDYWNoZWRDYWxsKENhY2hlZENhbGwmIGNhY2hlZENhbGwsIEpTRnVu
Y3Rpb24qCiAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNl
OwogCiAgICAgY2FjaGVkQ2FsbC5tX2FkZHJlc3NGb3JDYWxsID0gbmV3Q29kZUJsb2NrLT5qaXRD
b2RlKCktPmFkZHJlc3NGb3JDYWxsKCk7Ci0gICAgbmV3Q29kZUJsb2NrLT5saW5rSW5jb21pbmdD
YWxsKG51bGxwdHIsICZjYWNoZWRDYWxsKTsKKyAgICBuZXdDb2RlQmxvY2stPmxpbmtJbmNvbWlu
Z0NhbGwobnVsbHB0ciwgbnVsbHB0ciwgJmNhY2hlZENhbGwpOwogICAgIHJldHVybiBuZXdDb2Rl
QmxvY2s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKaW5kZXggYzAyMmFkMDE3NmQzLi5iODA2YjI4MjMwOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC00NCw3ICs0NCw2
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBDYWxsTGlua0luZm87CiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogbmFtZXNwYWNlIFdhc20gewogY2xhc3MgQ2FsbGVlOwpAQCAtMTU4LDcg
KzE1Nyw3IEBAIHVzaW5nIEpTT3JXYXNtSW5zdHJ1Y3Rpb24gPSBzdGQ6OnZhcmlhbnQ8Y29uc3Qg
SlNJbnN0cnVjdGlvbiosIGNvbnN0IFdhc21JbnN0cnVjCiAgICAgICAgIE5FVkVSX0lOTElORSB2
b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va1R5cGUpOwogICAgICAgICBzdGF0aWMgU3Ry
aW5nIHN0YWNrVHJhY2VBc1N0cmluZyhWTSYsIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYpOwog
Ci0gICAgICAgIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0NlbGwqIG93bmVyLCBWZWN0b3I8U3RhY2tG
cmFtZT4mIHJlc3VsdHMsIHNpemVfdCBmcmFtZXNUb1NraXAgPSAwLCBzaXplX3QgbWF4U3RhY2tT
aXplID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgSlNDZWxsKiBjYWxsZXIg
PSBudWxscHRyLCBKU0NlbGwqIG93bmVyT2ZDYWxsTGlua0luZm8gPSBudWxscHRyLCBDYWxsTGlu
a0luZm8qID0gbnVsbHB0cik7CisgICAgICAgIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0NlbGwqIG93
bmVyLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMsIHNpemVfdCBmcmFtZXNUb1NraXAgPSAw
LCBzaXplX3QgbWF4U3RhY2tTaXplID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSwgSlNDZWxsKiBjYWxsZXIgPSBudWxscHRyKTsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBj
aGVja1ZNRW50cnlQZXJtaXNzaW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQmFzZWxpbmVKSVRSZWdpc3RlcnMuaAppbmRleCA4NzVmZTk1ZmU2NzQuLmY5NjZjZjRmZTAx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CYXNlbGluZUpJVFJlZ2lz
dGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmFzZWxpbmVKSVRSZWdpc3Rl
cnMuaApAQCAtMzksNyArMzksNiBAQCBuYW1lc3BhY2UgQ2FsbCB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgY2FsbGVlR1BSIHsgR1BSSW5mbzo6cmVnVDAgfTsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBjYWxsTGlua0luZm9HUFIgeyBHUFJJbmZvOjpyZWdUMiB9OwogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiB7IEdQUkluZm86OnJlZ1QzIH07
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbFRhcmdldEdQUiB7IEdQUkluZm86OnJl
Z1Q1IH07CiB9CiAKIG5hbWVzcGFjZSBDYWxsRGlyZWN0RXZhbCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCAwMzMzNTNiNzQ5YjQuLjg1ZDg1M2RlM2U0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC04MTEsMTAgKzgx
MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcHJlc2VydmVkLmFkZCh0ZW1wMSwgSWdub3JlVmVjdG9y
cyk7CiAgICAgICAgIEdQUlJlZyB0ZW1wMiA9IHNlbGVjdFNjcmF0Y2hHUFIocHJlc2VydmVkKTsK
ICAgICAgICAgcHJlc2VydmVkLmFkZCh0ZW1wMiwgSWdub3JlVmVjdG9ycyk7Ci0jaWYgQ1BVKEFS
TTY0RSkKICAgICAgICAgR1BSUmVnIHRlbXAzID0gc2VsZWN0U2NyYXRjaEdQUihwcmVzZXJ2ZWQp
OwotICAgICAgICBwcmVzZXJ2ZWQuYWRkKHRlbXAzLCBJZ25vcmVWZWN0b3JzKTsKLSNlbmRpZgor
CiAgICAgICAgIEFTU0VSVCghcHJlc2VydmVkLm51bWJlck9mU2V0RlBScygpKTsKIAogICAgICAg
ICBHUFJSZWcgbmV3RnJhbWVQb2ludGVyID0gdGVtcDE7CkBAIC04NjMsMjAgKzg2MSwyMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtdWwzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSks
IG5ld0ZyYW1lU2l6ZUdQUiwgbmV3RnJhbWVTaXplR1BSKTsKICAgICAgICAgfQogCisgICAgICAg
IEdQUlJlZyB0ZW1wR1BSID0gdGVtcDM7CisgICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IG5ld0Zy
YW1lUG9pbnRlciAmJiB0ZW1wR1BSICE9IG5ld0ZyYW1lU2l6ZUdQUik7CisKICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0aGUgY3VycmVudCBmcmFtZSBiZXlvbmQgdGhpcyBwb2ludC4gTWFzcXVl
cmFkZSBhcyBvdXIKICAgICAgICAgLy8gY2FsbGVyLgogI2lmIENQVShBUk1fVEhVTUIyKSB8fCBD
UFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQogICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZnJhbWVQ
b2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSksIGxpbmtSZWdpc3Rl
cik7CiAgICAgICAgIHN1YlB0cihUcnVzdGVkSW1tMzIoMiAqIHNpemVvZih2b2lkKikpLCBuZXdG
cmFtZVNpemVHUFIpOwogI2lmIENQVShBUk02NEUpCi0gICAgICAgIEdQUlJlZyB0ZW1wR1BSID0g
dGVtcDM7Ci0gICAgICAgIEFTU0VSVCh0ZW1wR1BSICE9IG5ld0ZyYW1lUG9pbnRlciAmJiB0ZW1w
R1BSICE9IG5ld0ZyYW1lU2l6ZUdQUik7CiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lz
dGVyLCB0ZW1wR1BSKTsKICAgICAgICAgdW50YWdQdHIodGVtcEdQUiwgbGlua1JlZ2lzdGVyKTsK
ICAgICAgICAgdmFsaWRhdGVVbnRhZ2dlZFB0cihsaW5rUmVnaXN0ZXIsIHRlbXBHUFIpOwogI2Vu
ZGlmCiAjZWxpZiBDUFUoWDg2XzY0KQotICAgICAgICBwdXNoKEFkZHJlc3MoZnJhbWVQb2ludGVy
UmVnaXN0ZXIsIHNpemVvZih2b2lkKikpKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZyYW1l
UG9pbnRlclJlZ2lzdGVyLCBzaXplb2Yodm9pZCopKSwgdGVtcEdQUik7CisgICAgICAgIHB1c2go
dGVtcEdQUik7CiAgICAgICAgIHN1YlB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKHZvaWQqKSksIG5l
d0ZyYW1lU2l6ZUdQUik7CiAjZWxzZQogICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKQEAgLTg4NCwxMiArODg0LDE1IEBAIHB1YmxpYzoKICAgICAgICAgc3ViUHRyKG5ld0ZyYW1l
U2l6ZUdQUiwgbmV3RnJhbWVQb2ludGVyKTsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGZyYW1l
UG9pbnRlclJlZ2lzdGVyKSwgZnJhbWVQb2ludGVyUmVnaXN0ZXIpOwogCisKICAgICAgICAgLy8g
V2UgbmVlZCB0byBtb3ZlIHRoZSBuZXdGcmFtZVNpemVHUFIgc2xvdHMgYWJvdmUgdGhlIHN0YWNr
IHBvaW50ZXIgYnkKICAgICAgICAgLy8gbmV3RnJhbWVQb2ludGVyIHJlZ2lzdGVycy4gV2UgdXNl
IHBvaW50ZXItc2l6ZWQgY2h1bmtzLgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgY29w
eUxvb3AobGFiZWwoKSk7CiAKICAgICAgICAgc3ViUHRyKFRydXN0ZWRJbW0zMihzaXplb2Yodm9p
ZCopKSwgbmV3RnJhbWVTaXplR1BSKTsKLSAgICAgICAgdHJhbnNmZXJQdHIoQmFzZUluZGV4KHN0
YWNrUG9pbnRlclJlZ2lzdGVyLCBuZXdGcmFtZVNpemVHUFIsIFRpbWVzT25lKSwgQmFzZUluZGV4
KG5ld0ZyYW1lUG9pbnRlciwgbmV3RnJhbWVTaXplR1BSLCBUaW1lc09uZSkpOworICAgICAgICBs
b2FkUHRyKEJhc2VJbmRleChzdGFja1BvaW50ZXJSZWdpc3RlciwgbmV3RnJhbWVTaXplR1BSLCBU
aW1lc09uZSksIHRlbXBHUFIpOworICAgICAgICBzdG9yZVB0cih0ZW1wR1BSLCBCYXNlSW5kZXgo
bmV3RnJhbWVQb2ludGVyLCBuZXdGcmFtZVNpemVHUFIsIFRpbWVzT25lKSk7CisKICAgICAgICAg
YnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBuZXdGcmFtZVNpemVHUFIpLmxp
bmtUbyhjb3B5TG9vcCwgdGhpcyk7CiAKICAgICAgICAgLy8gUmVhZHkgZm9yIGEganVtcCEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGNiNGMxOTdjNGE5OC4uMjQ4YWYyYTQ2ZDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTE0Niw3ICsxNDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIHN0cnVjdCBDYWxsQ29tcGlsYXRpb25JbmZvIHsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIGRvbmVMb2NhdGlvbjsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGRp
c3BhdGNoTGFiZWw7CiAgICAgICAgIEJhc2VsaW5lVW5saW5rZWRDYWxsTGlua0luZm8qIHVubGlu
a2VkQ2FsbExpbmtJbmZvOwogICAgIH07CiAKQEAgLTI3Nyw3ICsyNzYsMTYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbFNsb3dDYXNlKGNvbnN0IEpTSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwgdW5zaWduZWQgY2FsbExp
bmtJbmZvSW5kZXgpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgotICAgICAgICB2
b2lkIGNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJik7CisgICAgICAgIHN0ZDo6ZW5hYmxlX2lm
X3Q8CisgICAgICAgICAgICBPcDo6b3Bjb2RlSUQgIT0gb3BfY2FsbF92YXJhcmdzICYmIE9wOjpv
cGNvZGVJRCAhPSBvcF9jb25zdHJ1Y3RfdmFyYXJncworICAgICAgICAgICAgJiYgT3A6Om9wY29k
ZUlEICE9IG9wX3RhaWxfY2FsbF92YXJhcmdzICYmIE9wOjpvcGNvZGVJRCAhPSBvcF90YWlsX2Nh
bGxfZm9yd2FyZF9hcmd1bWVudHMKKyAgICAgICAgLCB2b2lkPiBjb21waWxlU2V0dXBGcmFtZShj
b25zdCBPcCYpOworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgorICAgICAgICBzdGQ6
OmVuYWJsZV9pZl90PAorICAgICAgICAgICAgT3A6Om9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJn
cyB8fCBPcDo6b3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MKKyAgICAgICAgICAgIHx8
IE9wOjpvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfdmFyYXJncyB8fCBPcDo6b3Bjb2RlSUQgPT0g
b3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzCisgICAgICAgICwgdm9pZD4gY29tcGlsZVNl
dHVwRnJhbWUoY29uc3QgT3AmKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAg
ICAgICAgYm9vbCBjb21waWxlVGFpbENhbGwoY29uc3QgT3AmLCBCYXNlbGluZVVubGlua2VkQ2Fs
bExpbmtJbmZvKiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggOGYxYmFiNzFkOTM4Li5lMzVhYzA5NzQ3MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNjEsOTQgKzYxLDEwMyBAQCB2b2lk
IEpJVDo6ZW1pdFB1dENhbGxSZXN1bHQoY29uc3QgT3AmIGJ5dGVjb2RlKQogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25Gb3IoYnl0ZWNvZGUsIG1fYnl0ZWNvZGVJbmRleC5j
aGVja3BvaW50KCkpLnZpcnR1YWxSZWdpc3RlcigpLCByZXR1cm5WYWx1ZUpTUik7CiB9CiAKKwog
dGVtcGxhdGU8dHlwZW5hbWUgT3A+Ci12b2lkIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3Qg
T3AmIGJ5dGVjb2RlKQotewotICAgIGNvbnN0ZXhwciBhdXRvIG9wY29kZUlEID0gT3A6Om9wY29k
ZUlEOwotCi0gICAgaWYgY29uc3RleHByIChvcGNvZGVJRCA9PSBvcF9jYWxsX3ZhcmFyZ3MgfHwg
b3Bjb2RlSUQgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9j
YWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRz
KSB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzVmFsdWUgPSBieXRlY29kZS5tX3RoaXNW
YWx1ZTsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50cyA9IGJ5dGVjb2RlLm1fYXJn
dW1lbnRzOwotICAgICAgICBpbnQgZmlyc3RGcmVlUmVnaXN0ZXIgPSBieXRlY29kZS5tX2ZpcnN0
RnJlZS5vZmZzZXQoKTsgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGEgdmlydHVhbCByZWdpc3RlciBp
ZiB3ZSBuZXZlciB1c2UgaXQgYXMgb25lLi4uCi0gICAgICAgIGludCBmaXJzdFZhckFyZ09mZnNl
dCA9IGJ5dGVjb2RlLm1fZmlyc3RWYXJBcmc7Ci0KLSAgICAgICAgewotICAgICAgICAgICAgY29u
c3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBwcmVmZXJyZWRBcmd1bWVudEdQUjxaX0pJ
VE9wZXJhdGlvbl9HSlpaLCAwPigpOwotICAgICAgICAgICAgY29uc3RleHByIEpTVmFsdWVSZWdz
IGFyZ3VtZW50c0pTUiA9IHByZWZlcnJlZEFyZ3VtZW50SlNSPFpfSklUT3BlcmF0aW9uX0dKWlos
IDE+KCk7Ci0KLSAgICAgICAgICAgIFpfSklUT3BlcmF0aW9uX0dKWlogc2l6ZU9wZXJhdGlvbjsK
LSAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzKQotICAgICAgICAgICAgICAgIHNpemVPcGVyYXRpb24gPSBvcGVyYXRpb25T
aXplRnJhbWVGb3JGb3J3YXJkQXJndW1lbnRzOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHNpemVPcGVyYXRpb24gPSBvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzOwotCi0g
ICAgICAgICAgICBsb2FkR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdEdQUik7Ci0gICAgICAgICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywgYXJndW1lbnRzSlNSKTsKLSAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24oc2l6ZU9wZXJhdGlvbiwgZ2xvYmFsT2JqZWN0R1BSLCBhcmd1
bWVudHNKU1IsIC1maXJzdEZyZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIoLWZpcnN0RnJlZVJlZ2lzdGVyKSwgcmVnVDEpOwotICAg
ICAgICAgICAgZW1pdFNldFZhcmFyZ3NGcmFtZSgqdGhpcywgcmV0dXJuVmFsdWVHUFIsIGZhbHNl
LCByZWdUMSwgcmVnVDEpOworc3RkOjplbmFibGVfaWZfdDwKKyAgICBPcDo6b3Bjb2RlSUQgIT0g
b3BfY2FsbF92YXJhcmdzICYmIE9wOjpvcGNvZGVJRCAhPSBvcF9jb25zdHJ1Y3RfdmFyYXJncwor
ICAgICYmIE9wOjpvcGNvZGVJRCAhPSBvcF90YWlsX2NhbGxfdmFyYXJncyAmJiBPcDo6b3Bjb2Rl
SUQgIT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzCissIHZvaWQ+CitKSVQ6OmNvbXBp
bGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSkKK3sKKyAgICB1bnNpZ25lZCBjaGVja3Bv
aW50ID0gbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKKyAgICBpbnQgYXJnQ291bnRJbmNs
dWRpbmdUaGlzID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNGb3IoYnl0ZWNvZGUsIGNoZWNr
cG9pbnQpOworICAgIGludCByZWdpc3Rlck9mZnNldCA9IC1zdGF0aWNfY2FzdDxpbnQ+KHN0YWNr
T2Zmc2V0SW5SZWdpc3RlcnNGb3JDYWxsKGJ5dGVjb2RlLCBjaGVja3BvaW50KSk7CisKKworICAg
IGlmIGNvbnN0ZXhwciAoT3A6Om9wY29kZUlEID09IG9wX2NhbGwgfHwgT3A6Om9wY29kZUlEID09
IG9wX3RhaWxfY2FsbCB8fCBPcDo6b3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbiB8fCBPcDo6
b3Bjb2RlSUQgPT0gb3BfY2FsbF9pZ25vcmVfcmVzdWx0KSB7CisgICAgICAgIGlmIChzaG91bGRF
bWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgICAgIGNvbnN0ZXhwciBKU1ZhbHVlUmVncyB0bXBK
U1IgPSByZXR1cm5WYWx1ZUpTUjsKKyAgICAgICAgICAgIGNvbnN0ZXhwciBHUFJSZWcgdG1wR1BS
ID0gdG1wSlNSLnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9m
ZnNldEluY2x1ZGluZ1RoaXMoMCkpLCB0bXBKU1IpOworICAgICAgICAgICAgSnVtcCBkb25lID0g
YnJhbmNoSWZOb3RDZWxsKHRtcEpTUik7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyh0bXBK
U1IucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCB0bXBHUFIpOwor
ICAgICAgICAgICAgc3RvcmUzMlRvTWV0YWRhdGEodG1wR1BSLCBieXRlY29kZSwgT3A6Ok1ldGFk
YXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgpICsgQXJyYXlQcm9maWxlOjpvZmZzZXRPZkxhc3RT
ZWVuU3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgICAg
IH0KKyAgICB9CisKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHJlZ2lzdGVyT2Zmc2V0ICogc2l6
ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIGNhbGxGcmFtZVJlZ2lz
dGVyLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoYXJn
Q291bnRJbmNsdWRpbmdUaGlzKSwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNp
emVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBD
KSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK3N0ZDo6ZW5hYmxlX2lmX3Q8CisgICAg
T3A6Om9wY29kZUlEID09IG9wX2NhbGxfdmFyYXJncyB8fCBPcDo6b3Bjb2RlSUQgPT0gb3BfY29u
c3RydWN0X3ZhcmFyZ3MKKyAgICB8fCBPcDo6b3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX3ZhcmFy
Z3MgfHwgT3A6Om9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cworLCB2
b2lkPgorSklUOjpjb21waWxlU2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUpCit7CisgICAg
VmlydHVhbFJlZ2lzdGVyIHRoaXNWYWx1ZSA9IGJ5dGVjb2RlLm1fdGhpc1ZhbHVlOworICAgIFZp
cnR1YWxSZWdpc3RlciBhcmd1bWVudHMgPSBieXRlY29kZS5tX2FyZ3VtZW50czsKKyAgICBpbnQg
Zmlyc3RGcmVlUmVnaXN0ZXIgPSBieXRlY29kZS5tX2ZpcnN0RnJlZS5vZmZzZXQoKTsgLy8gRklY
TUU6IFdoeSBpcyB0aGlzIGEgdmlydHVhbCByZWdpc3RlciBpZiB3ZSBuZXZlciB1c2UgaXQgYXMg
b25lLi4uCisgICAgaW50IGZpcnN0VmFyQXJnT2Zmc2V0ID0gYnl0ZWNvZGUubV9maXJzdFZhckFy
ZzsKKworICAgIHsKKyAgICAgICAgY29uc3RleHByIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBw
cmVmZXJyZWRBcmd1bWVudEdQUjxaX0pJVE9wZXJhdGlvbl9HSlpaLCAwPigpOworICAgICAgICBj
b25zdGV4cHIgSlNWYWx1ZVJlZ3MgYXJndW1lbnRzSlNSID0gcHJlZmVycmVkQXJndW1lbnRKU1I8
Wl9KSVRPcGVyYXRpb25fR0paWiwgMT4oKTsKKworICAgICAgICBaX0pJVE9wZXJhdGlvbl9HSlpa
IHNpemVPcGVyYXRpb247CisgICAgICAgIGlmIChPcDo6b3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzKQorICAgICAgICAgICAgc2l6ZU9wZXJhdGlvbiA9IG9wZXJhdGlv
blNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHNpemVPcGVyYXRpb24gPSBvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzOworCisgICAgICAg
IGxvYWRHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihhcmd1bWVudHMsIGFyZ3VtZW50c0pTUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24oc2l6ZU9wZXJhdGlvbiwgZ2xvYmFsT2JqZWN0R1BSLCBhcmd1bWVudHNKU1IsIC1maXJzdEZy
ZWVSZWdpc3RlciwgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0z
MigtZmlyc3RGcmVlUmVnaXN0ZXIpLCByZWdUMSk7CisgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJh
bWUoKnRoaXMsIHJldHVyblZhbHVlR1BSLCBmYWxzZSwgcmVnVDEsIHJlZ1QxKTsKKyAgICB9CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNf
Y2FzdDxpbnQzMl90PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9mKHZvaWQqKSkpKSwgcmVn
VDEsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0
aWNfY2FzdDxpbnQzMl90PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9mKHZvaWQqKSkpKSwg
cmVnVDEsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0g
ICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA2ICogc2l6ZW9m
KHZvaWQqKSkpKSwgcmVnVDEsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKC0oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNiAqIHNpemVvZih2b2lkKikpKSksIHJlZ1Qx
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAjZW5kaWYKIAotICAgICAgICB7Ci0gICAgICAgICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cywganNSZWdUMzIpOwotICAgICAgICAg
ICAgRl9KSVRPcGVyYXRpb25fR0ZKWlogc2V0dXBPcGVyYXRpb247Ci0gICAgICAgICAgICBpZiBj
b25zdGV4cHIgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKLSAg
ICAgICAgICAgICAgICBzZXR1cE9wZXJhdGlvbiA9IG9wZXJhdGlvblNldHVwRm9yd2FyZEFyZ3Vt
ZW50c0ZyYW1lOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNldHVwT3BlcmF0
aW9uID0gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWU7Ci0gICAgICAgICAgICBsb2FkR2xvYmFs
T2JqZWN0KHJlZ1Q0KTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2V0dXBPcGVyYXRpb24s
IHJlZ1Q0LCByZWdUMSwganNSZWdUMzIsIGZpcnN0VmFyQXJnT2Zmc2V0LCByZWdUMCk7Ci0gICAg
ICAgICAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdUNSk7Ci0gICAgICAgIH0KKyAgICB7Cisg
ICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzLCBqc1JlZ1QzMik7CisgICAg
ICAgIEZfSklUT3BlcmF0aW9uX0dGSlpaIHNldHVwT3BlcmF0aW9uOworICAgICAgICBpZiAoT3A6
Om9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKKyAgICAgICAgICAg
IHNldHVwT3BlcmF0aW9uID0gb3BlcmF0aW9uU2V0dXBGb3J3YXJkQXJndW1lbnRzRnJhbWU7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldHVwT3BlcmF0aW9uID0gb3BlcmF0aW9uU2V0dXBW
YXJhcmdzRnJhbWU7CisgICAgICAgIGxvYWRHbG9iYWxPYmplY3QocmVnVDQpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKHNldHVwT3BlcmF0aW9uLCByZWdUNCwgcmVnVDEsIGpzUmVnVDMyLCBmaXJz
dFZhckFyZ09mZnNldCwgcmVnVDApOworICAgICAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdU
NSk7CisgICAgfQogCi0gICAgICAgIC8vIFByb2ZpbGUgdGhlIGFyZ3VtZW50IGNvdW50LgotICAg
ICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUNSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9h
ZE9mZnNldCksIHJlZ1QyKTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoQ2FsbExpbmtJbmZv
OjptYXhQcm9maWxlZEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yVmFyYXJncyksIHJlZ1Qw
KTsKKyAgICAvLyBQcm9maWxlIHRoZSBhcmd1bWVudCBjb3VudC4KKyAgICBsb2FkMzIoQWRkcmVz
cyhyZWdUNSwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKiBzdGF0
aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCksIHJlZ1QyKTsK
KyAgICBtb3ZlKFRydXN0ZWRJbW0zMihDYWxsTGlua0luZm86Om1heFByb2ZpbGVkQXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXNGb3JWYXJhcmdzKSwgcmVnVDApOwogI2lmIENQVShBUk02NCkgfHwg
Q1BVKFg4Nl82NCkKLSAgICAgICAgbW92ZUNvbmRpdGlvbmFsbHkzMihBYm92ZSwgcmVnVDIsIHJl
Z1QwLCByZWdUMCwgcmVnVDIsIHJlZ1QyKTsKKyAgICBtb3ZlQ29uZGl0aW9uYWxseTMyKEFib3Zl
LCByZWdUMiwgcmVnVDAsIHJlZ1QwLCByZWdUMiwgcmVnVDIpOwogI2Vsc2UKLSAgICAgICAgYXV0
byBsb3dlciA9IGJyYW5jaDMyKEJlbG93T3JFcXVhbCwgcmVnVDIsIHJlZ1QwKTsKLSAgICAgICAg
bW92ZShyZWdUMCwgcmVnVDIpOwotICAgICAgICBsb3dlci5saW5rKHRoaXMpOworICAgIGF1dG8g
bG93ZXIgPSBicmFuY2gzMihCZWxvd09yRXF1YWwsIHJlZ1QyLCByZWdUMCk7CisgICAgbW92ZShy
ZWdUMCwgcmVnVDIpOworICAgIGxvd2VyLmxpbmsodGhpcyk7CiAjZW5kaWYKLSAgICAgICAgbWF0
ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVjb2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNl
dE9mQ2FsbExpbmtJbmZvKCksIHJlZ1QwKTsKLSAgICAgICAgSnVtcCBub3RCaWdnZXN0ID0gYnJh
bmNoMzIoQWJvdmUsIEFkZHJlc3MocmVnVDAsIENhbGxMaW5rSW5mbzo6b2Zmc2V0T2ZNYXhBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvclZhcmFyZ3MoKSksIHJlZ1QyKTsKLSAgICAgICAgc3Rv
cmU4KHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBDYWxsTGlua0luZm86Om9mZnNldE9mTWF4QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNGb3JWYXJhcmdzKCkpKTsKLSAgICAgICAgbm90QmlnZ2VzdC5s
aW5rKHRoaXMpOworICAgIG1hdGVyaWFsaXplUG9pbnRlckludG9NZXRhZGF0YShieXRlY29kZSwg
T3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCByZWdUMCk7CisgICAgSnVtcCBu
b3RCaWdnZXN0ID0gYnJhbmNoMzIoQWJvdmUsIEFkZHJlc3MocmVnVDAsIENhbGxMaW5rSW5mbzo6
b2Zmc2V0T2ZNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvclZhcmFyZ3MoKSksIHJlZ1Qy
KTsKKyAgICBzdG9yZTgocmVnVDIsIEFkZHJlc3MocmVnVDAsIENhbGxMaW5rSW5mbzo6b2Zmc2V0
T2ZNYXhBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc0ZvclZhcmFyZ3MoKSkpOworICAgIG5vdEJp
Z2dlc3QubGluayh0aGlzKTsKIAotICAgICAgICAvLyBJbml0aWFsaXplICd0aGlzJy4KLSAgICAg
ICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBqc1JlZ1QxMDsKLSAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3Rlcih0aGlzVmFsdWUsIHRoaXNKU1IpOwotICAgICAgICBzdG9yZVZh
bHVlKHRoaXNKU1IsIEFkZHJlc3MocmVnVDUsIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0
KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CisgICAgLy8gSW5pdGlh
bGl6ZSAndGhpcycuCisgICAgY29uc3RleHByIEpTVmFsdWVSZWdzIHRoaXNKU1IgPSBqc1JlZ1Qx
MDsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHRoaXNWYWx1ZSwgdGhpc0pTUik7CisgICAg
c3RvcmVWYWx1ZSh0aGlzSlNSLCBBZGRyZXNzKHJlZ1Q1LCBDYWxsRnJhbWU6OnRoaXNBcmd1bWVu
dE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCi0gICAg
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgcmVnVDUs
IHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICB9IGVsc2UgewotICAgICAgICB1bnNpZ25lZCBj
aGVja3BvaW50ID0gbV9ieXRlY29kZUluZGV4LmNoZWNrcG9pbnQoKTsKLSAgICAgICAgaW50IGFy
Z0NvdW50SW5jbHVkaW5nVGhpcyA9IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzRm9yKGJ5dGVj
b2RlLCBjaGVja3BvaW50KTsKLSAgICAgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gLXN0YXRpY19j
YXN0PGludD4oc3RhY2tPZmZzZXRJblJlZ2lzdGVyc0ZvckNhbGwoYnl0ZWNvZGUsIGNoZWNrcG9p
bnQpKTsKLQotCi0gICAgICAgIGlmIGNvbnN0ZXhwciAob3Bjb2RlSUQgPT0gb3BfY2FsbCB8fCBv
cGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQgPT0gb3BfaXRlcmF0b3Jfb3BlbiB8
fCBvcGNvZGVJRCA9PSBvcF9jYWxsX2lnbm9yZV9yZXN1bHQpIHsKLSAgICAgICAgICAgIGlmIChz
aG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdGV4cHIgSlNWYWx1
ZVJlZ3MgdG1wSlNSID0gcmV0dXJuVmFsdWVKU1I7Ci0gICAgICAgICAgICAgICAgY29uc3RleHBy
IEdQUlJlZyB0bXBHUFIgPSB0bXBKU1IucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkpLCB0bXBKU1IpOwotICAgICAg
ICAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaElmTm90Q2VsbCh0bXBKU1IpOwotICAgICAgICAg
ICAgICAgIGxvYWQzMihBZGRyZXNzKHRtcEpTUi5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHRtcEdQUik7Ci0gICAgICAgICAgICAgICAgc3RvcmUzMlRvTWV0YWRh
dGEodG1wR1BSLCBieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkFycmF5UHJvZmlsZSgp
ICsgQXJyYXlQcm9maWxlOjpvZmZzZXRPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7Ci0gICAgICAg
ICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihyZWdpc3Rlck9mZnNldCAqIHNpemVvZihSZWdpc3Rl
cikgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBjYWxsRnJhbWVSZWdpc3Rlciwgc3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihhcmdDb3VudElu
Y2x1ZGluZ1RoaXMpLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJl
Z2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7Ci0g
ICAgfQorICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwg
cmVnVDUsIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT3A+
CkBAIC0yMDMsMjAgKzIxMiwxOCBAQCBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9w
JiwgQmFzZWxpbmVVbmxpbmtlZENhbGxMaW5rSW5mbyosIHVuc2lnbmVkKQogdGVtcGxhdGU8Pgog
Ym9vbCBKSVQ6OmNvbXBpbGVUYWlsQ2FsbChjb25zdCBPcFRhaWxDYWxsJiBieXRlY29kZSwgQmFz
ZWxpbmVVbmxpbmtlZENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvLCB1bnNpZ25lZCBjYWxsTGlu
a0luZm9JbmRleCkKIHsKLSAgICBhdXRvIFtzbG93UGF0aHMsIGRpc3BhdGNoTGFiZWxdID0gQ2Fs
bExpbmtJbmZvOjplbWl0VGFpbENhbGxGYXN0UGF0aCgqdGhpcywgY2FsbExpbmtJbmZvLCBCYXNl
bGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnBheWxvYWRHUFIoKSwgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxMaW5rSW5mb0dQUiwgc2NvcGVkTGFtYmRhPHZvaWQoKT4o
WyZdIHsKKyAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9wVGFp
bENhbGw6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5mbygpLCBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBKdW1wTGlzdCBzbG93UGF0aHMgPSBD
YWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKCp0aGlzLCBjYWxsTGlua0luZm8sIEJh
c2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgp
PihbJl0gewogICAgICAgICBDYWxsRnJhbWVTaHVmZmxlRGF0YSBzaHVmZmxlRGF0YSA9IENhbGxG
cmFtZVNodWZmbGVEYXRhOjpjcmVhdGVGb3JCYXNlbGluZU9yTExJbnRUYWlsQ2FsbChieXRlY29k
ZSwgbV91bmxpbmtlZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKICAgICAgICAgQ2FsbEZy
YW1lU2h1ZmZsZXIgc2h1ZmZsZXIgeyAqdGhpcywgc2h1ZmZsZURhdGEgfTsKLSAgICAgICAgc2h1
ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNh
bGxlZUpTUik7CiAgICAgICAgIHNodWZmbGVyLmxvY2tHUFIoQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgICAgIHNodWZmbGVyLmxvY2tHUFIoQmFzZWxp
bmVKSVRSZWdpc3RlcnM6OkNhbGw6Omdsb2JhbE9iamVjdEdQUik7Ci0gICAgICAgIHNodWZmbGVy
LmxvY2tHUFIoQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxUYXJnZXRHUFIpOwogICAg
ICAgICBzaHVmZmxlci5wcmVwYXJlRm9yVGFpbENhbGwoKTsKICAgICB9KSk7CiAgICAgYWRkU2xv
d0Nhc2Uoc2xvd1BhdGhzKTsKIAogICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsKICAg
ICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmRvbmVMb2NhdGlvbiA9
IGRvbmVMb2NhdGlvbjsKLSAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2FsbExpbmtJbmZvSW5k
ZXhdLmRpc3BhdGNoTGFiZWwgPSBkaXNwYXRjaExhYmVsOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CkBAIC0yNjIsMTkgKzI2OSwxOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBKU0lu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGJ5dGVj
b2RlLCBPcDo6TWV0YWRhdGE6Om9mZnNldE9mQ2FsbExpbmtJbmZvKCksIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOwotCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkK
ICAgICAvLyBXZSBuZWVkIHRoaXMgb24gSlNWQUxVRTMyXzY0IG9ubHkgYXMgb24gSlNWQUxVRTY0
IGEgcG9pbnRlciBjb21wYXJpc29uIGluIHRoZSBEYXRhSUMgZmFzdAogICAgIC8vIHBhdGggY2F0
Y2hlcyB0aGlzLgogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChCYXNlbGluZUpJVFJl
Z2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSKSk7CiAjZW5kaWYKIAotICAgIGlmIGNvbnN0ZXhwciAo
T3A6Om9wY29kZUlEID09IG9wX3RhaWxfY2FsbCkKKyAgICBpZiBjb25zdGV4cHIgKE9wOjpvcGNv
ZGVJRCA9PSBvcF90YWlsX2NhbGwpIHsKICAgICAgICAgY29tcGlsZVRhaWxDYWxsKGJ5dGVjb2Rl
LCBjYWxsTGlua0luZm8sIGNhbGxMaW5rSW5mb0luZGV4KTsKLSAgICBlbHNlIHsKKyAgICB9IGVs
c2UgeworICAgICAgICBtYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoYnl0ZWNvZGUsIE9w
OjpNZXRhZGF0YTo6b2Zmc2V0T2ZDYWxsTGlua0luZm8oKSwgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OkNhbGw6OmNhbGxMaW5rSW5mb0dQUik7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoT3A6Om9wY29k
ZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IE9wOjpvcGNvZGVJRCA9PSBvcF90YWlsX2Nh
bGxfZm9yd2FyZF9hcmd1bWVudHMpIHsKLSAgICAgICAgICAgIGF1dG8gW3Nsb3dQYXRocywgZGlz
cGF0Y2hMYWJlbF0gPSBDYWxsTGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKCp0aGlzLCBj
YWxsTGlua0luZm8sIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9h
ZEdQUigpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBzY29w
ZWRMYW1iZGE8dm9pZCgpPihbJl0geworICAgICAgICAgICAgYXV0byBzbG93UGF0aHMgPSBDYWxs
TGlua0luZm86OmVtaXRUYWlsQ2FsbEZhc3RQYXRoKCp0aGlzLCBjYWxsTGlua0luZm8sIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUpJ
VFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBzY29wZWRMYW1iZGE8dm9pZCgpPihb
Jl0gewogICAgICAgICAgICAgICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICAgICAg
ICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGxTbG93KFJlZ2lzdGVyU2V0IHsKICAgICAgICAgICAg
ICAgICAgICAgQmFzZWxpbmVKSVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUpTUi5wYXlsb2FkR1BS
KCksCkBAIC0yODIsMjAgKzI4OCwxOSBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBK
U0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2FsbExpbmtJbmZvSQogICAgICAg
ICAgICAgICAgICAgICBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlSlNSLnRhZ0dQ
UigpLAogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpD
YWxsOjpjYWxsTGlua0luZm9HUFIsCi0gICAgICAgICAgICAgICAgICAgIEJhc2VsaW5lSklUUmVn
aXN0ZXJzOjpDYWxsOjpnbG9iYWxPYmplY3RHUFIsCi0gICAgICAgICAgICAgICAgICAgIEJhc2Vs
aW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsVGFyZ2V0R1BSLAorICAgICAgICAgICAgICAgICAg
ICBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Z2xvYmFsT2JqZWN0R1BSCiAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICBhZGRTbG93Q2FzZShzbG93
UGF0aHMpOwogICAgICAgICAgICAgYXV0byBkb25lTG9jYXRpb24gPSBsYWJlbCgpOwogICAgICAg
ICAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0luZGV4XS5kb25lTG9jYXRp
b24gPSBkb25lTG9jYXRpb247Ci0gICAgICAgICAgICBtX2NhbGxDb21waWxhdGlvbkluZm9bY2Fs
bExpbmtJbmZvSW5kZXhdLmRpc3BhdGNoTGFiZWwgPSBkaXNwYXRjaExhYmVsOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgYXV0byBbc2xvd1BhdGhzLCBkaXNwYXRjaExhYmVsXSA9IENh
bGxMaW5rSW5mbzo6ZW1pdEZhc3RQYXRoKCp0aGlzLCBjYWxsTGlua0luZm8sIEJhc2VsaW5lSklU
UmVnaXN0ZXJzOjpDYWxsOjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKLSAgICAgICAgICAgIGFkZFNsb3dDYXNlKHNs
b3dQYXRocyk7CisgICAgICAgICAgICBhdXRvIHNsb3dQYXRocyA9IENhbGxMaW5rSW5mbzo6ZW1p
dEZhc3RQYXRoKCp0aGlzLCBjYWxsTGlua0luZm8sIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxs
OjpjYWxsZWVKU1IucGF5bG9hZEdQUigpLCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2Fs
bExpbmtJbmZvR1BSKTsKICAgICAgICAgICAgIGF1dG8gZG9uZUxvY2F0aW9uID0gbGFiZWwoKTsK
KyAgICAgICAgICAgIGFkZFNsb3dDYXNlKHNsb3dQYXRocyk7CisKICAgICAgICAgICAgIG1fY2Fs
bENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0uZG9uZUxvY2F0aW9uID0gZG9uZUxv
Y2F0aW9uOwotICAgICAgICAgICAgbV9jYWxsQ29tcGlsYXRpb25JbmZvW2NhbGxMaW5rSW5mb0lu
ZGV4XS5kaXNwYXRjaExhYmVsID0gZGlzcGF0Y2hMYWJlbDsKKwogICAgICAgICAgICAgaWYgY29u
c3RleHByIChPcDo6b3Bjb2RlSUQgIT0gb3BfaXRlcmF0b3Jfb3BlbiAmJiBPcDo6b3Bjb2RlSUQg
IT0gb3BfaXRlcmF0b3JfbmV4dCkKICAgICAgICAgICAgICAgICBzZXRGYXN0UGF0aFJlc3VtZVBv
aW50KCk7CiAgICAgICAgICAgICByZXNldFNQKCk7CkBAIC0zMDYsMjAgKzMxMSwyNyBAQCB2b2lk
IEpJVDo6Y29tcGlsZU9wQ2FsbChjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5z
aWduZWQgY2FsbExpbmtJbmZvSQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KLXZvaWQgSklU
Ojpjb21waWxlT3BDYWxsU2xvd0Nhc2UoY29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIHVuc2lnbmVkIGNhbGxMaW5rSW5mb0luZGV4KQor
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxTbG93Q2FzZShjb25zdCBKU0luc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgdW5zaWduZWQg
Y2FsbExpbmtJbmZvSW5kZXgpCiB7Ci0gICAgY29uc3RleHByIE9wY29kZUlEIG9wY29kZUlEID0g
T3A6Om9wY29kZUlEOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gT3A6Om9wY29kZUlEOworICAg
IGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CiAgICAgQVNTRVJUKG9wY29k
ZUlEICE9IG9wX2NhbGxfZGlyZWN0X2V2YWwpOwogICAgIGF1dG8qIGNhbGxMaW5rSW5mbyA9IG1f
Y2FsbENvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0udW5saW5rZWRDYWxsTGlua0lu
Zm87CiAKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgbG9hZEdsb2JhbE9iamVj
dChCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Z2xvYmFsT2JqZWN0R1BSKTsKLSAgICBpZiBj
b25zdGV4cHIgKG9wY29kZUlEID09IG9wX3RhaWxfY2FsbCB8fCBvcGNvZGVJRCA9PSBvcF90YWls
X2NhbGxfdmFyYXJncyB8fCBvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHMpIHsKLSAgICAgICAgYXV0byBkaXNwYXRjaExhYmVsID0gbV9jYWxsQ29tcGlsYXRpb25JbmZv
W2NhbGxMaW5rSW5mb0luZGV4XS5kaXNwYXRjaExhYmVsOwotICAgICAgICBDYWxsTGlua0luZm86
OmVtaXRUYWlsQ2FsbFNsb3dQYXRoKCptX3ZtLCAqdGhpcywgY2FsbExpbmtJbmZvLCBCYXNlbGlu
ZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSLCBkaXNwYXRjaExhYmVsKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgoKm1fdm0sICp0aGlz
LCBjYWxsTGlua0luZm8sIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9H
UFIpOworICAgIGxvYWRHbG9iYWxPYmplY3QocmVnVDMpOworICAgIG1hdGVyaWFsaXplUG9pbnRl
ckludG9NZXRhZGF0YShieXRlY29kZSwgT3A6Ok1ldGFkYXRhOjpvZmZzZXRPZkNhbGxMaW5rSW5m
bygpLCByZWdUMik7CisKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsIHx8IG9wY29k
ZUlEID09IG9wX3RhaWxfY2FsbF92YXJhcmdzIHx8IG9wY29kZUlEID09IG9wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50cykKKyAgICAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworCisg
ICAgQ2FsbExpbmtJbmZvOjplbWl0U2xvd1BhdGgoKm1fdm0sICp0aGlzLCBjYWxsTGlua0luZm8s
IHJlZ1QyKTsKKworICAgIGlmIChvcGNvZGVJRCA9PSBvcF90YWlsX2NhbGwgfHwgb3Bjb2RlSUQg
PT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MgfHwgb3Bjb2RlSUQgPT0gb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzKSB7CisgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVREaWRSZXR1cm5Gcm9t
VGFpbENhbGwpOworICAgICAgICByZXR1cm47CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9jYWxsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGEzMjc1ODE1MGJlMy4u
ZjhlZTkwNzUxZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJERkdPU1JFbnRyeS5oIgogI2luY2x1
ZGUgIkRGR1RodW5rcy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCi0jaW5jbHVkZSAiRW5zdXJl
U3RpbGxBbGl2ZUhlcmUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCiAjaW5jbHVkZSAi
RnJhbWVUcmFjZXJzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCkBAIC0yMDUxLDc5ICsy
MDUwLDgyIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25DYWxsRGlyZWN0RXZh
bFN0cmljdCwgRW5jb2RlZEpTVmFsdWUsICh2b2lkKiBmCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShldmFsKGNhbGxlZUZyYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRoaXNWYWx1ZSks
IGNhbGxlclNjb3BlQ2hhaW4sIEVDTUFNb2RlOjpzdHJpY3QoKSkpOwogfQogCi1KU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUG9seW1vcnBoaWNDYWxsLCBVQ1BVUmVnaXN0ZXIsIChD
YWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbykpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTGlua0NhbGwsIFVHUFJQYWlyLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQoreworICAg
IHNhbml0aXplU3RhY2tGb3JWTShnbG9iYWxPYmplY3QtPnZtKCkpOworICAgIHJldHVybiBsaW5r
Rm9yKGNhbGxlZUZyYW1lLCBnbG9iYWxPYmplY3QsIGNhbGxMaW5rSW5mbyk7Cit9CisKK0pTQ19E
RUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsLCBVR1BSUGFp
ciwgKENhbGxGcmFtZSogY2FsbGVlRnJhbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgQVNTRVJUKGNhbGxMaW5rSW5mby0+c3BlY2lh
bGl6YXRpb25LaW5kKCkgPT0gQ29kZUZvckNhbGwpOwogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5j
dGlvbkNlbGw7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbGVlRnJh
bWUpOwotICAgIEpTQ2VsbCogb3duZXIgPSBjYWxsTGlua0luZm8tPm93bmVyKCk7Ci0gICAgLy8g
UmlnaHQgbm93LCBJQyAoR2V0dGVyLCBTZXR0ZXIsIFByb3h5IElDIGV0Yy4pIC8gV2FzbVRvSlMg
c2V0cyBudWxscHRyIGludGVudGlvbmFsbHkgc2luY2Ugd2Ugd291bGQgbGlrZSB0byBzaGFyZSBJ
QyAvIFdhc21Ub0pTIHRodW5rIGV2ZW50dWFsbHkuCi0gICAgLy8gSG93ZXZlciwgaW4gdGhhdCBj
YXNlLCBlYWNoIElDJ3MgZGF0YSBzaWRlIHdpbGwgaGF2ZSBDYWxsTGlua0luZm8uCi0gICAgLy8g
QXQgdGhhdCB0aW1lLCB0aGV5IHNob3VsZCBoYXZlIGFwcHJvcHJpYXRlIG93bmVyLiBTbyB0aGlz
IGlzIGEgaGFjayBvbmx5IGZvciBub3cuCi0gICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmtz
IHNpbmNlIElDIG9ubHkgcGVyZm9ybXMgcmVndWxhci1jYWxscyBhbmQgaXQgbmV2ZXIgZG9lcyB0
YWlsLWNhbGxzLgotICAgIGlmICghb3duZXIpIHsKLSAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSA9IGNhbGxlZUZyYW1lLT5jYWxsZXJGcmFtZSgpOwotICAgICAgICBvd25lciA9IGNhbGxl
ckZyYW1lLT5jb2RlT3duZXJDZWxsKCk7Ci0gICAgfQotICAgIGNhbGxlZUZyYW1lLT5zZXRDb2Rl
QmxvY2sobnVsbHB0cik7Ci0gICAgdm9pZCogY2FsbFRhcmdldCA9IHZpcnR1YWxGb3JXaXRoRnVu
Y3Rpb24oZ2xvYmFsT2JqZWN0LCBvd25lciwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxlZUZyYW1lLT5jYWxsZXJGcmFtZSgpKTsKKyAgICBVR1BSUGFpciByZXN1bHQgPSB2aXJ0
dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5m
bywgY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworCisgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9
IGNhbGxlZUZyYW1lLT5jYWxsZXJGcmFtZSgpOworICAgIEpTQ2VsbCogb3duZXIgPSBjYWxsZXJG
cmFtZS0+Y29kZU93bmVyQ2VsbCgpOwogICAgIGxpbmtQb2x5bW9ycGhpY0NhbGwoZ2xvYmFsT2Jq
ZWN0LCBvd25lciwgY2FsbGVlRnJhbWUsICpjYWxsTGlua0luZm8sIENhbGxWYXJpYW50KGNhbGxl
ZUFzRnVuY3Rpb25DZWxsKSk7Ci0gICAgLy8gS2VlcCBvd25lciBhbGl2ZSBleHBsaWNpdGx5LiBO
b3cgdGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gdGFpbC1jYWxsLiBUaGlzIG1lYW5z
IHRoYXQgQ2FsbEZyYW1lIGZvciB0aGF0IG93bmVyIGFscmVhZHkgZ29lcyBhd2F5LCBzbyB3ZSBz
aG91bGQga2VlcCBpdCBhbGl2ZSBpZiB3ZSB3b3VsZCBsaWtlIHRvIHVzZSBpdC4KLSAgICBlbnN1
cmVTdGlsbEFsaXZlSGVyZShvd25lcik7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHZtLmdldENUSVN0
dWIoQ29tbW9uSklUVGh1bmtJRDo6VGhyb3dFeGNlcHRpb25Gcm9tQ2FsbCkudGVtcGxhdGUgcmV0
YWdnZWQ8SlNFbnRyeVB0clRhZz4oKS5jb2RlKCkudGFnZ2VkUHRyKCkpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxVQ1BVUmVnaXN0ZXI+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxUYXJn
ZXQpKTsKKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25WaXJ0dWFsQ2FsbCwgVUNQVVJlZ2lzdGVyLCAoQ2FsbEZyYW1lKiBjYWxsZWVG
cmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8pKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhp
Y0NhbGxGb3JSZWd1bGFyQ2FsbCwgVUNQVVJlZ2lzdGVyLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFt
ZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8pKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBzYW5pdGl6ZVN0
YWNrRm9yVk0odm0pOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKLSAgICBKU0NlbGwqIG93bmVyID0gY2FsbExp
bmtJbmZvLT5vd25lcigpOwotICAgIC8vIFJpZ2h0IG5vdywgSUMgKEdldHRlciwgU2V0dGVyLCBQ
cm94eSBJQyBldGMuKSAvIFdhc21Ub0pTIHNldHMgbnVsbHB0ciBpbnRlbnRpb25hbGx5IHNpbmNl
IHdlIHdvdWxkIGxpa2UgdG8gc2hhcmUgSUMgLyBXYXNtVG9KUyB0aHVuayBldmVudHVhbGx5Lgot
ICAgIC8vIEhvd2V2ZXIsIGluIHRoYXQgY2FzZSwgZWFjaCBJQydzIGRhdGEgc2lkZSB3aWxsIGhh
dmUgQ2FsbExpbmtJbmZvLgotICAgIC8vIEF0IHRoYXQgdGltZSwgdGhleSBzaG91bGQgaGF2ZSBh
cHByb3ByaWF0ZSBvd25lci4gU28gdGhpcyBpcyBhIGhhY2sgb25seSBmb3Igbm93LgotICAgIC8v
IFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrcyBzaW5jZSBJQyBvbmx5IHBlcmZvcm1zIHJlZ3VsYXIt
Y2FsbHMgYW5kIGl0IG5ldmVyIGRvZXMgdGFpbC1jYWxscy4KLSAgICBpZiAoIW93bmVyKSB7Ci0g
ICAgICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsZWVGcmFtZS0+Y2FsbGVyRnJhbWUo
KTsKLSAgICAgICAgb3duZXIgPSBjYWxsZXJGcmFtZS0+Y29kZU93bmVyQ2VsbCgpOwotICAgIH0K
LSAgICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51bGxwdHIpOwotICAgIHZvaWQqIGNhbGxU
YXJnZXQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgb3duZXIsIGNhbGxl
ZUZyYW1lLCBjYWxsTGlua0luZm8sIGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKLSAgICAvLyBLZWVw
IG93bmVyIGFsaXZlIGV4cGxpY2l0bHkuIE5vdyB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQg
ZnJvbSB0YWlsLWNhbGwuIFRoaXMgbWVhbnMgdGhhdCBDYWxsRnJhbWUgZm9yIHRoYXQgb3duZXIg
YWxyZWFkeSBnb2VzIGF3YXksIHNvIHdlIHNob3VsZCBrZWVwIGl0IGFsaXZlIGlmIHdlIHdvdWxk
IGxpa2UgdG8gdXNlIGl0LgotICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKG93bmVyKTsKKyAgICBV
R1BSUGFpciByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2Fs
bGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworCisgICAgUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBjYWxsTGlua0luZm8tPnN0dWIoKTsKKyAg
ICBhdXRvIHNwYW4gPSBzdHViLT50cmFpbGluZ1NwYW4oKTsKKyAgICBKU0NlbGwqIG93bmVyID0g
c3BhbltzdGQ6OnNpemUoc3BhbikgLSAxXS5tX2NvZGVCbG9jazsKKyAgICBsaW5rUG9seW1vcnBo
aWNDYWxsKGdsb2JhbE9iamVjdCwgb3duZXIsIGNhbGxlZUZyYW1lLCAqY2FsbExpbmtJbmZvLCBD
YWxsVmFyaWFudChjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkpOworCiAgICAgaWYgKFVOTElLRUxZKHNj
b3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHZtLmdldENUSVN0dWIoQ29tbW9uSklUVGh1bmtJRDo6VGhyb3dFeGNlcHRpb25Gcm9tQ2FsbCku
dGVtcGxhdGUgcmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKS5jb2RlKCkudGFnZ2VkUHRyKCkpOwot
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihjYWxsVGFyZ2V0KSk7CisKKyAgICBzaXplX3QgZmlyc3Q7CisgICAgc2l6ZV90IHNlY29u
ZDsKKyAgICBkZWNvZGVSZXN1bHQocmVzdWx0LCBmaXJzdCwgc2Vjb25kKTsKKyAgICByZXR1cm4g
Zmlyc3Q7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25EZWZhdWx0Q2Fs
bCwgVUNQVVJlZ2lzdGVyLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQorSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGxGb3JUYWlsQ2FsbCwgVUNQ
VVJlZ2lzdGVyLCAoQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0odm0pOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBBU1NFUlQoY2FsbExpbmtJbmZv
LT5zcGVjaWFsaXphdGlvbktpbmQoKSA9PSBDb2RlRm9yQ2FsbCk7CisgICAgSlNDZWxsKiBjYWxs
ZWVBc0Z1bmN0aW9uQ2VsbDsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsZWVGcmFtZSk7Ci0gICAgSlNDZWxsKiBvd25lciA9IGNhbGxMaW5rSW5mby0+b3duZXIoKTsK
LSAgICAvLyBSaWdodCBub3csIElDIChHZXR0ZXIsIFNldHRlciwgUHJveHkgSUMgZXRjLikgLyBX
YXNtVG9KUyBzZXRzIG51bGxwdHIgaW50ZW50aW9uYWxseSBzaW5jZSB3ZSB3b3VsZCBsaWtlIHRv
IHNoYXJlIElDIC8gV2FzbVRvSlMgdGh1bmsgZXZlbnR1YWxseS4KLSAgICAvLyBIb3dldmVyLCBp
biB0aGF0IGNhc2UsIGVhY2ggSUMncyBkYXRhIHNpZGUgd2lsbCBoYXZlIENhbGxMaW5rSW5mby4K
LSAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXkgc2hvdWxkIGhhdmUgYXBwcm9wcmlhdGUgb3duZXIu
IFNvIHRoaXMgaXMgYSBoYWNrIG9ubHkgZm9yIG5vdy4KLSAgICAvLyBUaGlzIHNob3VsZCBhbHdh
eXMgd29ya3Mgc2luY2UgSUMgb25seSBwZXJmb3JtcyByZWd1bGFyLWNhbGxzIGFuZCBpdCBuZXZl
ciBkb2VzIHRhaWwtY2FsbHMuCi0gICAgaWYgKCFvd25lcikgewotICAgICAgICBDYWxsRnJhbWUq
IGNhbGxlckZyYW1lID0gY2FsbGVlRnJhbWUtPmNhbGxlckZyYW1lKCk7Ci0gICAgICAgIG93bmVy
ID0gY2FsbGVyRnJhbWUtPmNvZGVPd25lckNlbGwoKTsKLSAgICB9Ci0gICAgY2FsbGVlRnJhbWUt
PnNldENvZGVCbG9jayhudWxscHRyKTsKLSAgICB2b2lkKiBjYWxsVGFyZ2V0ID0gbGlua0Zvcihn
bG9iYWxPYmplY3QsIG93bmVyLCBjYWxsZWVGcmFtZSwgY2FsbExpbmtJbmZvKTsKLSAgICAvLyBL
ZWVwIG93bmVyIGFsaXZlIGV4cGxpY2l0bHkuIE5vdyB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxs
ZWQgZnJvbSB0YWlsLWNhbGwuIFRoaXMgbWVhbnMgdGhhdCBDYWxsRnJhbWUgZm9yIHRoYXQgb3du
ZXIgYWxyZWFkeSBnb2VzIGF3YXksIHNvIHdlIHNob3VsZCBrZWVwIGl0IGFsaXZlIGlmIHdlIHdv
dWxkIGxpa2UgdG8gdXNlIGl0LgotICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKG93bmVyKTsKKyAg
ICBVR1BSUGFpciByZXN1bHQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwg
Y2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworCisgICAg
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBjYWxsTGlua0luZm8tPnN0dWIoKTsK
KyAgICBhdXRvIHNwYW4gPSBzdHViLT50cmFpbGluZ1NwYW4oKTsKKyAgICBKU0NlbGwqIG93bmVy
ID0gc3BhbltzdGQ6OnNpemUoc3BhbikgLSAxXS5tX2NvZGVCbG9jazsKKyAgICBsaW5rUG9seW1v
cnBoaWNDYWxsKGdsb2JhbE9iamVjdCwgb3duZXIsIGNhbGxlZUZyYW1lLCAqY2FsbExpbmtJbmZv
LCBDYWxsVmFyaWFudChjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkpOworCiAgICAgaWYgKFVOTElLRUxZ
KHNjb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KHZtLmdldENUSVN0dWIoQ29tbW9uSklUVGh1bmtJRDo6VGhyb3dFeGNlcHRpb25Gcm9tQ2Fs
bCkudGVtcGxhdGUgcmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKS5jb2RlKCkudGFnZ2VkUHRyKCkp
OwotICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VUNQVVJlZ2lzdGVyPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihjYWxsVGFyZ2V0KSk7CisKKyAgICBzaXplX3QgZmlyc3Q7CisgICAgc2l6ZV90IHNl
Y29uZDsKKyAgICBkZWNvZGVSZXN1bHQocmVzdWx0LCBmaXJzdCwgc2Vjb25kKTsKKyAgICByZXR1
cm4gZmlyc3Q7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25WaXJ0dWFs
Q2FsbCwgVUdQUlBhaXIsIChDYWxsRnJhbWUqIGNhbGxlZUZyYW1lLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIHNhbml0aXplU3RhY2tGb3JWTSh2bSk7CisgICAg
SlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbElnbm9yZWQ7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbGVlRnJhbWUtPmNhbGxlckZyYW1lKCkpOworICAgIHJldHVy
biB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGVlRnJhbWUsIGNhbGxM
aW5rSW5mbywgY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkKTsKIH0KIAogSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBhcmVMZXNzLCBzaXplX3QsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggNTgxODBiNDFjZjA1Li41ODZjZTFiNDA3ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zMDQsMTAgKzMwNCwxMSBAQCBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldFByaXZhdGVOYW1lQnlJZEdlbmVyaWMsIEVuY29kZWRK
U1ZhbHVlLCAoSgogCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxEaXJl
Y3RFdmFsU2xvcHB5LCBFbmNvZGVkSlNWYWx1ZSwgKHZvaWQqLCBKU1Njb3BlKiwgRW5jb2RlZEpT
VmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ2FsbERpcmVjdEV2
YWxTdHJpY3QsIEVuY29kZWRKU1ZhbHVlLCAodm9pZCosIEpTU2NvcGUqLCBFbmNvZGVkSlNWYWx1
ZSkpOwotCi1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblBvbHltb3JwaGljQ2Fs
bCwgVUNQVVJlZ2lzdGVyLCAoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxsTGlua0lu
Zm8qKSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblZpcnR1YWxDYWxsLCBV
Q1BVUmVnaXN0ZXIsIChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyop
KTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVmYXVsdENhbGwsIFVDUFVS
ZWdpc3RlciwgKENhbGxGcmFtZSosIEpTR2xvYmFsT2JqZWN0KiwgQ2FsbExpbmtJbmZvKikpOwor
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25MaW5rQ2FsbCwgVUdQUlBhaXIsIChD
YWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCwgVUdQUlBhaXIsIChD
YWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5mbyopKTsKK0pTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbEZvclJlZ3VsYXJDYWxs
LCBVQ1BVUmVnaXN0ZXIsIChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVjdCosIENhbGxMaW5rSW5m
byopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTGlua1BvbHltb3JwaGlj
Q2FsbEZvclRhaWxDYWxsLCBVQ1BVUmVnaXN0ZXIsIChDYWxsRnJhbWUqLCBKU0dsb2JhbE9iamVj
dCosIENhbGxMaW5rSW5mbyopKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
VmlydHVhbENhbGwsIFVHUFJQYWlyLCAoQ2FsbEZyYW1lKiwgSlNHbG9iYWxPYmplY3QqLCBDYWxs
TGlua0luZm8qKSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uQ29tcGFy
ZUxlc3MsIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNvbXBhcmVMZXNz
RXEsIHNpemVfdCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0
aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuY3BwCmlu
ZGV4IGM4ZGVjYWE2MWRhZi4uZGMxOTI5ZjkzMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJSb3V0aW5lLmNwcApAQCAtMTA2LDcgKzEwNiw4IEBAIHZvaWQgSklUU3R1
YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB2b2lk
IEpJVFN0dWJSb3V0aW5lOjpvcGVyYXRvciBkZWxldGUoSklUU3R1YlJvdXRpbmUqIHN0dWJSb3V0
aW5lLCBzdGQ6OmRlc3Ryb3lpbmdfZGVsZXRlX3QpCiB7CiAgICAgc3R1YlJvdXRpbmUtPnJ1bldp
dGhEb3duY2FzdChbJl0oYXV0byogZGVyaXZlZCkgewotICAgICAgICBzdGQ6OmRlY2F5X3Q8ZGVj
bHR5cGUoKmRlcml2ZWQpPjo6ZGVzdHJveShkZXJpdmVkKTsKKyAgICAgICAgc3RkOjpkZXN0cm95
X2F0KGRlcml2ZWQpOworICAgICAgICBzdGQ6OmRlY2F5X3Q8ZGVjbHR5cGUoKmRlcml2ZWQpPjo6
ZnJlZUFmdGVyRGVzdHJ1Y3Rpb24oZGVyaXZlZCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAppbmRleCAyMTgxZjk1YjIxZTkuLjZhYWI2
ZDI4OGMzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViUm91
dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaApA
QCAtMTM3LDEzICsxMzcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIG1h
cmtSZXF1aXJlZE9iamVjdHNJbXBsKEFic3RyYWN0U2xvdFZpc2l0b3ImKSB7IH0KICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ltcGwoU2xvdFZpc2l0b3ImKSB7IH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJv
eShEZXJpdmVkKiBkZXJpdmVkKQotICAgIHsKLSAgICAgICAgc3RkOjpkZXN0cm95X2F0KGRlcml2
ZWQpOwotICAgICAgICBzdGQ6OmRlY2F5X3Q8ZGVjbHR5cGUoKmRlcml2ZWQpPjo6ZnJlZUFmdGVy
RGVzdHJ1Y3Rpb24oZGVyaXZlZCk7Ci0gICAgfQotCiAgICAgLy8gUmV0dXJuIHRydWUgaWYgeW91
IGFyZSBzdGlsbCB2YWxpZCBhZnRlci4gUmV0dXJuIGZhbHNlIGlmIHlvdSBhcmUgbm93IGludmFs
aWQuIElmIHlvdSByZXR1cm4KICAgICAvLyBmYWxzZSwgeW91IHdpbGwgdXN1YWxseSBub3QgZG8g
YW55IGNsZWFyaW5nIGJlY2F1c2UgdGhlIGlkZWEgaXMgdGhhdCB5b3Ugd2lsbCBzaW1wbHkgYmUK
ICAgICAvLyBkZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRl
eCA1OGYxYmUyMDQ3MWIuLjgzYjFlYjkxYmU4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFRodW5rcy5oCkBAIC02Miw5ICs2MiwxMCBAQCBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAg
IG1hY3JvKE5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFncywgbmF0aXZlVGFpbENhbGxXaXRo
b3V0U2F2ZWRUYWdzR2VuZXJhdG9yKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxGdW5jdGlvbkNhbGws
IGludGVybmFsRnVuY3Rpb25DYWxsR2VuZXJhdG9yKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxGdW5j
dGlvbkNvbnN0cnVjdCwgaW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdEdlbmVyYXRvcikgXAorICAg
IG1hY3JvKExpbmtDYWxsLCBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKSBcCisgICAgbWFjcm8oTGlu
a1BvbHltb3JwaGljQ2FsbCwgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKSBcCiAg
ICAgbWFjcm8oVGhyb3dFeGNlcHRpb25Gcm9tQ2FsbCwgdGhyb3dFeGNlcHRpb25Gcm9tQ2FsbEdl
bmVyYXRvcikgXAogICAgIG1hY3JvKFRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aCwgdGhy
b3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKSBcCi0gICAgbWFjcm8oUG9seW1v
cnBoaWNSZXBhdGNoVGh1bmssIHBvbHltb3JwaGljUmVwYXRjaFRodW5rKSBcCiAgICAgbWFjcm8o
VmlydHVhbFRodW5rRm9yUmVndWxhckNhbGwsIHZpcnR1YWxUaHVua0ZvclJlZ3VsYXJDYWxsKSBc
CiAgICAgbWFjcm8oVmlydHVhbFRodW5rRm9yVGFpbENhbGwsIHZpcnR1YWxUaHVua0ZvclRhaWxD
YWxsKSBcCiAgICAgbWFjcm8oVmlydHVhbFRodW5rRm9yQ29uc3RydWN0LCB2aXJ0dWFsVGh1bmtG
b3JDb25zdHJ1Y3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggNzVhMTNmYmYxZjI5Li4zYzljYmQ3
MjAzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC0zOCwzMiArMzgsMjMgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rT3JVcGdyYWRlSW1wbChW
TSYgdm0sIENvZGVCbG9jayogb2xkQ29kZUJsb2NrLCBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jaykK
K3ZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6dW5saW5rSW1wbChWTSYgdm0pCiB7Ci0gICAgLy8g
V2UgZmlyc3QgcmVtb3ZlIGl0c2VsZiBmcm9tIHRoZSBsaW5rZWQtbGlzdCBiZWZvcmUgdW5saW5r
aW5nIGNhbGxMaW5rSW5mby4KLSAgICAvLyBUaGUgcmVhc29uIGlzIHRoYXQgY2FsbExpbmtJbmZv
IGNhbiBwb3RlbnRpYWxseSBsaW5rIFBvbHltb3JwaGljQ2FsbE5vZGUncyBzdHViIGl0c2VsZiwg
YW5kIGl0IG1heSBkZXN0cm95IHx0aGlzfCAodGhlIG90aGVyIENhbGxMaW5rSW5mbworICAgIC8v
IFdlIGZpcnN0IHJlbW92ZSBpdHNlbGYgZnJvbSB0aGUgbGlua2VkLWxpc3QgYmVmb3JlIHVubGlu
a2luZyBtX2NhbGxMaW5rSW5mby4KKyAgICAvLyBUaGUgcmVhc29uIGlzIHRoYXQgbV9jYWxsTGlu
a0luZm8gY2FuIHBvdGVudGlhbGx5IGxpbmsgUG9seW1vcnBoaWNDYWxsTm9kZSdzIHN0dWIgaXRz
ZWxmLCBhbmQgaXQgbWF5IGRlc3Ryb3kgfHRoaXN8ICh0aGUgb3RoZXIgQ2FsbExpbmtJbmZvCiAg
ICAgLy8gZG9lcyBub3QgZG8gaXQgc2luY2UgaXQgaXMgbm90IGNoYWluZWQgaW4gUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUpLgogICAgIGlmIChpc09uTGlzdCgpKQogICAgICAgICByZW1vdmUo
KTsKIAotICAgIGlmICghbV9jbGVhcmVkKSB7Ci0gICAgICAgIGlmICghbmV3Q29kZUJsb2NrIHx8
ICFvd25lcigpLT51cGdyYWRlSWZQb3NzaWJsZSh2bSwgb2xkQ29kZUJsb2NrLCBuZXdDb2RlQmxv
Y2ssIG1faW5kZXgpKSB7Ci0gICAgICAgICAgICBtX2NsZWFyZWQgPSB0cnVlOwotICAgICAgICAg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBvd25lcigpLT5jYWxsTGlua0luZm8oKTsK
LSAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpLCAiVW5s
aW5raW5nIHBvbHltb3JwaGljIGNhbGwgYXQgIiwgY2FsbExpbmtJbmZvLT5kb25lTG9jYXRpb24o
KSwgIiwgYmMjIiwgY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCgpKTsK
LSAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dW5saW5rT3JVcGdyYWRlKHZtLCBvbGRDb2RlQmxv
Y2ssIG5ld0NvZGVCbG9jayk7Ci0gICAgICAgIH0KKyAgICBpZiAobV9jYWxsTGlua0luZm8pIHsK
KyAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcERpc2Fzc2VtYmx5KCksICJVbmxpbmtp
bmcgcG9seW1vcnBoaWMgY2FsbCBhdCAiLCBtX2NhbGxMaW5rSW5mby0+ZG9uZUxvY2F0aW9uKCks
ICIsIGJjIyIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCgpKTsK
KyAgICAgICAgbV9jYWxsTGlua0luZm8tPnVubGluayh2bSk7CiAgICAgfQogfQogCi12b2lkIFBv
bHltb3JwaGljQ2FsbE5vZGU6OmNsZWFyKCkKK3ZvaWQgUG9seW1vcnBoaWNDYWxsTm9kZTo6Y2xl
YXJDYWxsTGlua0luZm8oKQogewotICAgIG1fY2xlYXJlZCA9IHRydWU7Ci19Ci0KLVBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lKiBQb2x5bW9ycGhpY0NhbGxOb2RlOjpvd25lcigpCi17Ci0gICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSo+KHRoaXMgLSBt
X2luZGV4ICsgbV90b3RhbFNpemUpOworICAgIG1fY2FsbExpbmtJbmZvID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBQb2x5bW9ycGhpY0NhbGxDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CkBAIC03MSw2NCArNjIsNTIgQEAgdm9pZCBQb2x5bW9ycGhpY0NhbGxDYXNlOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50KCI8dmFyaWFudCA9ICIsIG1fdmFyaWFu
dCwgIiwgY29kZUJsb2NrID0gIiwgcG9pbnRlckR1bXAobV9jb2RlQmxvY2spLCAiPiIpOwogfQog
Ci1Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUo
dW5zaWduZWQgaGVhZGVyU2l6ZSwgdW5zaWduZWQgdHJhaWxpbmdTaXplLCBjb25zdCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEpTQ2Vs
bCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJ
bmZvLCBjb25zdCBWZWN0b3I8Q2FsbFNsb3QsIDE2PiYgY2FsbFNsb3RzLCBVbmlxdWVBcnJheTx1
aW50MzJfdD4mJiBmYXN0Q291bnRzLCBib29sIG5vdFVzaW5nQ291bnRpbmcsIGJvb2wgaXNDbG9z
dXJlQ2FsbCkKLSAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShUeXBlOjpQb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZVR5cGUsIGNvZGUsIG93bmVyKQotICAgICwgQnV0dGVyZmx5QXJyYXk8UG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUsIFBvbHltb3JwaGljQ2FsbE5vZGUsIENhbGxTbG90Piho
ZWFkZXJTaXplLCB0cmFpbGluZ1NpemUpCitQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUodW5zaWduZWQgaGVhZGVyU2l6ZSwgdW5zaWduZWQgdHJh
aWxpbmdTaXplLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlUmVmLCBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJh
bWUsIENhbGxMaW5rSW5mbyYgaW5mbywgY29uc3QgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2Us
IDE2PiYgY2FzZXMsIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMsIGJvb2wgbm90
VXNpbmdDb3VudGluZykKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShUeXBlOjpQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZVR5cGUsIGNvZGVSZWYsIG93bmVyKQorICAgICwgQnV0dGVyZmx5
QXJyYXk8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUsIHZvaWQqLCBDYWxsU2xvdD4oaGVhZGVy
U2l6ZSwgdHJhaWxpbmdTaXplKQorICAgICwgbV92YXJpYW50cyhjYXNlcy5zaXplKCkpCiAgICAg
LCBtX2Zhc3RDb3VudHMoV1RGTW92ZShmYXN0Q291bnRzKSkKLSAgICAsIG1fY2FsbExpbmtJbmZv
KCZjYWxsTGlua0luZm8pCiAgICAgLCBtX25vdFVzaW5nQ291bnRpbmcobm90VXNpbmdDb3VudGlu
ZykKLSAgICAsIG1faXNEYXRhSUMobV9jYWxsTGlua0luZm8tPmlzRGF0YUlDKCkpCi0gICAgLCBt
X2lzQ2xvc3VyZUNhbGwoaXNDbG9zdXJlQ2FsbCkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBjYWxsU2xvdHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGF1dG8m
IHNsb3QgPSB0cmFpbGluZ1NwYW4oKVtpbmRleF07Ci0gICAgICAgIHNsb3QgPSBjYWxsU2xvdHNb
aW5kZXhdOwotCisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgY2FzZXMuc2l6
ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGNvbnN0IFBvbHltb3JwaGljQ2FsbENhc2UmIGNhbGxD
YXNlID0gY2FzZXNbaW5kZXhdOworICAgICAgICBtX3ZhcmlhbnRzW2luZGV4XS5zZXQodm0sIG93
bmVyLCBjYWxsQ2FzZS52YXJpYW50KCkucmF3Q2FsbGVlQ2VsbCgpKTsKICAgICAgICAgaWYgKGNh
bGxlckZyYW1lICYmICFjYWxsZXJGcmFtZS0+aXNOYXRpdmVDYWxsZWVGcmFtZSgpKQotICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckZyYW1lLT5j
b2RlQmxvY2soKSksICJMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gIiwgRnVsbENvZGVPcmln
aW4oY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpLCBjYWxsZXJGcmFtZS0+Y29kZU9yaWdpbigpKSwg
IiB0byAiLCBDYWxsVmFyaWFudChzbG90Lm1fY2FsbGVlT3JFeGVjdXRhYmxlKSwgIiwgY29kZUJs
b2NrID0gIiwgcG9pbnRlckR1bXAoc2xvdC5tX2NvZGVCbG9jaykpOwotCi0gICAgICAgIGF1dG8m
IGNhbGxOb2RlID0gbGVhZGluZ1NwYW4oKVtpbmRleF07Ci0gICAgICAgIGNhbGxOb2RlLmluaXRp
YWxpemUoaW5kZXgsIGhlYWRlclNpemUpOwotICAgICAgICBpZiAoQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBzbG90Lm1fY29kZUJsb2NrKQotICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21p
bmdDYWxsKG93bmVyLCAmY2FsbE5vZGUpOwotCi0gICAgICAgIHZtLndyaXRlQmFycmllcihvd25l
ciwgc2xvdC5tX2NhbGxlZU9yRXhlY3V0YWJsZSk7CisgICAgICAgICAgICBkYXRhTG9nTG5JZihz
aG91bGREdW1wRGlzYXNzZW1ibHlGb3IoY2FsbGVyRnJhbWUtPmNvZGVCbG9jaygpKSwgIkxpbmtp
bmcgcG9seW1vcnBoaWMgY2FsbCBpbiAiLCBGdWxsQ29kZU9yaWdpbihjYWxsZXJGcmFtZS0+Y29k
ZUJsb2NrKCksIGNhbGxlckZyYW1lLT5jb2RlT3JpZ2luKCkpLCAiIHRvICIsIGNhbGxDYXNlLnZh
cmlhbnQoKSwgIiwgY29kZUJsb2NrID0gIiwgcG9pbnRlckR1bXAoY2FsbENhc2UuY29kZUJsb2Nr
KCkpKTsKKyAgICAgICAgaWYgKENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbENhc2UuY29kZUJs
b2NrKCkpCisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwob3duZXIsIGNh
bGxlckZyYW1lLCBtX2NhbGxOb2Rlcy5hZGQoJmluZm8pKTsKICAgICB9Ci0KICAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOwotICAgIGJvb2wgaXNDb2RlSW1tdXRhYmxlID0gbV9pc0RhdGFJQzsK
KyAgICBjb25zdGV4cHIgYm9vbCBpc0NvZGVJbW11dGFibGUgPSBmYWxzZTsKICAgICBtYWtlR0NB
d2FyZSh2bSwgaXNDb2RlSW1tdXRhYmxlKTsKIH0KIAotYm9vbCBQb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZTo6dXBncmFkZUlmUG9zc2libGUoVk0mLCBDb2RlQmxvY2sqIG9sZENvZGVCbG9jaywg
Q29kZUJsb2NrKiBuZXdDb2RlQmxvY2ssIHVpbnQ4X3QgaW5kZXgpCitQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUodW5zaWduZWQgaGVhZGVyU2l6
ZSwgdW5zaWduZWQgdHJhaWxpbmdTaXplLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
U3R1YlJvdXRpbmVQdHJUYWc+JiBjb2RlLCBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhbGxGcmFt
ZSogY2FsbGVyRnJhbWUsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBjb25zdCBWZWN0b3I8
UG9seW1vcnBoaWNDYWxsQ2FzZSwgMTY+JiBjYXNlcywgY29uc3QgVmVjdG9yPENhbGxTbG90LCAx
Nj4mIGNhbGxTbG90cywgYm9vbCBub3RVc2luZ0NvdW50aW5nKQorICAgIDogR0NBd2FyZUpJVFN0
dWJSb3V0aW5lKFR5cGU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lVHlwZSwgY29kZSwgb3du
ZXIpCisgICAgLCBCdXR0ZXJmbHlBcnJheTxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSwgdm9p
ZCosIENhbGxTbG90PihoZWFkZXJTaXplLCB0cmFpbGluZ1NpemUpCisgICAgLCBtX3ZhcmlhbnRz
KGNhc2VzLnNpemUoKSkKKyAgICAsIG1fbm90VXNpbmdDb3VudGluZyhub3RVc2luZ0NvdW50aW5n
KQogewotICAgIC8vIE5vdCBEYXRhSUMuCi0gICAgaWYgKCFtX2lzRGF0YUlDKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHdlIGNhbiBqdXN0IHVw
Z3JhZGUgdGhlIENhbGxTbG90IGFuZCBjb250aW51ZSB1c2luZyB0aGlzIFBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lIGluc3RlYWQgb2YgdW5saW5raW5nIENhbGxMaW5rSW5mby4KLSAgICBhdXRv
JiBjYWxsTm9kZSA9IGxlYWRpbmdTcGFuKClbaW5kZXhdOwotICAgIGF1dG8mIHNsb3QgPSB0cmFp
bGluZ1NwYW4oKVtpbmRleF07Ci0KLSAgICBpZiAoY2FsbE5vZGUuaXNPbkxpc3QoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHNsb3QubV9jb2RlQmxvY2sgIT0gb2xkQ29kZUJs
b2NrKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIHRhcmdldCA9IG5ld0NvZGVC
bG9jay0+aml0Q29kZSgpLT5hZGRyZXNzRm9yQ2FsbChzbG90Lm1fYXJpdHlDaGVja01vZGUpOwot
ICAgIHNsb3QubV9jb2RlQmxvY2sgPSBuZXdDb2RlQmxvY2s7Ci0gICAgc2xvdC5tX3RhcmdldCA9
IHRhcmdldDsKLSAgICBuZXdDb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwobV9jYWxsTGlua0lu
Zm8tPm93bmVyKCksICZjYWxsTm9kZSk7IC8vIFRoaXMgaXMganVzdCByZWxpbmtpbmcuIFNvIG93
bmVyIGFuZCBjYWxsZXIgZnJhbWUgY2FuIGJlIG51bGxwdHIuCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgY2FzZXMuc2l6ZSgpOyArK2luZGV4
KSB7CisgICAgICAgIGNvbnN0IFBvbHltb3JwaGljQ2FsbENhc2UmIGNhbGxDYXNlID0gY2FzZXNb
aW5kZXhdOworICAgICAgICBtX3ZhcmlhbnRzW2luZGV4XS5zZXQodm0sIG93bmVyLCBjYWxsQ2Fz
ZS52YXJpYW50KCkucmF3Q2FsbGVlQ2VsbCgpKTsKKyAgICAgICAgaWYgKGNhbGxlckZyYW1lICYm
ICFjYWxsZXJGcmFtZS0+aXNOYXRpdmVDYWxsZWVGcmFtZSgpKQorICAgICAgICAgICAgZGF0YUxv
Z0xuSWYoc2hvdWxkRHVtcERpc2Fzc2VtYmx5Rm9yKGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKSks
ICJMaW5raW5nIHBvbHltb3JwaGljIGNhbGwgaW4gIiwgRnVsbENvZGVPcmlnaW4oY2FsbGVyRnJh
bWUtPmNvZGVCbG9jaygpLCBjYWxsZXJGcmFtZS0+Y29kZU9yaWdpbigpKSwgIiB0byAiLCBjYWxs
Q2FzZS52YXJpYW50KCksICIsIGNvZGVCbG9jayA9ICIsIHBvaW50ZXJEdW1wKGNhbGxDYXNlLmNv
ZGVCbG9jaygpKSk7CisgICAgICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxDYXNl
LmNvZGVCbG9jaygpKQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKG93
bmVyLCBjYWxsZXJGcmFtZSwgbV9jYWxsTm9kZXMuYWRkKCZjYWxsTGlua0luZm8pLCAvKiBza2lw
Rmlyc3RGcmFtZSAqLyB0cnVlKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgY2FsbFNsb3RzLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgdHJhaWxpbmdTcGFu
KClbaW5kZXhdID0gY2FsbFNsb3RzW2luZGV4XTsKKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OworICAgIGNvbnN0ZXhwciBib29sIGlzQ29kZUltbXV0YWJsZSA9IHRydWU7CisgICAgbWFrZUdD
QXdhcmUodm0sIGlzQ29kZUltbXV0YWJsZSk7CiB9CiAKIENhbGxWYXJpYW50TGlzdCBQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZTo6dmFyaWFudHMoKSBjb25zdAogewogICAgIENhbGxWYXJpYW50
TGlzdCByZXN1bHQ7Ci0gICAgZm9yRWFjaERlcGVuZGVudENlbGwoWyZdKEpTQ2VsbCogY2VsbCkg
ewotICAgICAgICByZXN1bHQuYXBwZW5kKENhbGxWYXJpYW50KGNlbGwpKTsKLSAgICB9KTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFyaWFudHMuc2l6ZSgpOyArK2kpCisgICAgICAg
IHJlc3VsdC5hcHBlbmQoQ2FsbFZhcmlhbnQobV92YXJpYW50c1tpXS5nZXQoKSkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTE0OSwyMyArMTI4LDI0IEBAIGJvb2wgUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmU6Omhhc0VkZ2VzKCkgY29uc3QKIENhbGxFZGdlTGlzdCBQb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZTo6ZWRnZXMoKSBjb25zdAogewogICAgIENhbGxFZGdlTGlzdCByZXN1
bHQ7Ci0gICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgIGZvckVhY2hEZXBlbmRlbnRDZWxsKFsm
XShKU0NlbGwqIGNlbGwpIHsKLSAgICAgICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgICAgICBp
ZiAobV9mYXN0Q291bnRzKQotICAgICAgICAgICAgY291bnQgPSBtX2Zhc3RDb3VudHNbaW5kZXhd
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb3VudCA9IHRyYWlsaW5nU3BhbigpW2luZGV4
XS5tX2NvdW50OwotICAgICAgICByZXN1bHQuYXBwZW5kKENhbGxFZGdlKENhbGxWYXJpYW50KGNl
bGwpLCBjb3VudCkpOwotICAgICAgICArK2luZGV4OwotICAgIH0pOworICAgIGlmIChtX2Zhc3RD
b3VudHMpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZhcmlhbnRzLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShDYWxsVmFyaWFudCht
X3ZhcmlhbnRzW2ldLmdldCgpKSwgbV9mYXN0Q291bnRzW2ldKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZhcmlhbnRzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShDYWxsVmFyaWFudChtX3ZhcmlhbnRzW2ld
LmdldCgpKSwgdHJhaWxpbmdTcGFuKClbaV0ubV9jb3VudCkpOworICAgIH0KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpjbGVhckNhbGxO
b2Rlc0ZvcihDYWxsTGlua0luZm8qKQordm9pZCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6
Y2xlYXJDYWxsTm9kZXNGb3IoQ2FsbExpbmtJbmZvKiBpbmZvKQogewotICAgIGZvciAoYXV0byYg
Y2FsbE5vZGUgOiBsZWFkaW5nU3BhbigpKQotICAgICAgICBjYWxsTm9kZS5jbGVhcigpOworICAg
IGZvciAoQmFnPFBvbHltb3JwaGljQ2FsbE5vZGU+OjppdGVyYXRvciBpdGVyID0gbV9jYWxsTm9k
ZXMuYmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKKyAgICAgICAgUG9seW1vcnBoaWNDYWxsTm9k
ZSYgbm9kZSA9ICoqaXRlcjsKKyAgICAgICAgLy8gQWxsIG5vZGVzIHNob3VsZCBwb2ludCB0byBp
bmZvLCBidXQgb2theSB0byBiZSBhIGxpdHRsZSBwYXJhbm9pZC4KKyAgICAgICAgaWYgKG5vZGUu
aGFzQ2FsbExpbmtJbmZvKGluZm8pKQorICAgICAgICAgICAgbm9kZS5jbGVhckNhbGxMaW5rSW5m
bygpOworICAgIH0KIH0KIAogYm9vbCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6dmlzaXRX
ZWFrSW1wbChWTSYgdm0pCkBAIC0xODAsOSArMTYwLDggQEAgYm9vbCBQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZTo6dmlzaXRXZWFrSW1wbChWTSYgdm0pCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNp
dG9yPgogQUxXQVlTX0lOTElORSB2b2lkIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjptYXJr
UmVxdWlyZWRPYmplY3RzSW50ZXJuYWxJbXBsKFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgZm9y
RWFjaERlcGVuZGVudENlbGwoWyZdKEpTQ2VsbCogY2VsbCkgewotICAgICAgICB2aXNpdG9yLmFw
cGVuZFVuYmFycmllcmVkKGNlbGwpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgdmFyaWFudCA6
IG1fdmFyaWFudHMpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKHZhcmlhbnQpOwogfQogCiB2b2lk
IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW1wbChBYnN0
cmFjdFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpAQCAtMTk0LDExICsxNzMsNiBAQCB2b2lkIFBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW1wbChTbG90VmlzaXRv
ciYgdmlzaXRvcikKICAgICBtYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWxJbXBsKHZpc2l0b3Ip
OwogfQogCi12b2lkIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpkZXN0cm95KFBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lKiBkZXJpdmVkKQotewotICAgIGRlbGV0ZSBkZXJpdmVkOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgK
aW5kZXggMWNiYzZhYTMxOTUxLi41Mzc1MzBjYWE4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKQEAgLTQzLDMz
ICs0MywyNyBAQCBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBQb2x5bW9ycGhpY0NhbGxOb2Rl
IGZpbmFsIDogcHVibGljIENhbGxMaW5rSW5mb0Jhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFBvbHltb3JwaGljQ2FsbE5vZGUpOwogcHVibGljOgotICAgIFBvbHltb3JwaGljQ2FsbE5v
ZGUoKQorICAgIFBvbHltb3JwaGljQ2FsbE5vZGUoQ2FsbExpbmtJbmZvKiBpbmZvKQogICAgICAg
ICA6IENhbGxMaW5rSW5mb0Jhc2UoQ2FsbFNpdGVUeXBlOjpQb2x5bW9ycGhpY0NhbGxOb2RlKQor
ICAgICAgICAsIG1fY2FsbExpbmtJbmZvKGluZm8pCiAgICAgewogICAgIH0KKyAgICAKKyAgICB2
b2lkIHVubGlua0ltcGwoVk0mKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZSh1aW50OF90IGluZGV4
LCB1aW50OF90IHRvdGFsU2l6ZSkKLSAgICB7Ci0gICAgICAgIG1faW5kZXggPSBpbmRleDsKLSAg
ICAgICAgbV90b3RhbFNpemUgPSB0b3RhbFNpemU7Ci0gICAgICAgIG1fY2xlYXJlZCA9IGZhbHNl
OwotICAgIH0KLQotICAgIHZvaWQgdW5saW5rT3JVcGdyYWRlSW1wbChWTSYsIENvZGVCbG9jayos
IENvZGVCbG9jayopOwotCi0gICAgdm9pZCBjbGVhcigpOwotCi0gICAgUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUqIG93bmVyKCk7Ci0KKyAgICBib29sIGhhc0NhbGxMaW5rSW5mbyhDYWxsTGlu
a0luZm8qIGluZm8pIHsgcmV0dXJuIG1fY2FsbExpbmtJbmZvID09IGluZm87IH0KKyAgICB2b2lk
IGNsZWFyQ2FsbExpbmtJbmZvKCk7CisgICAgCiBwcml2YXRlOgotICAgIHVpbnQ4X3QgbV9pbmRl
eCB7IDAgfTsKLSAgICB1aW50OF90IG1fdG90YWxTaXplIHsgMCB9OwotICAgIGJvb2wgbV9jbGVh
cmVkIHsgdHJ1ZSB9OworICAgIENhbGxMaW5rSW5mbyogbV9jYWxsTGlua0luZm87CiB9OwogCiBj
bGFzcyBQb2x5bW9ycGhpY0NhbGxDYXNlIHsKIHB1YmxpYzoKLSAgICBQb2x5bW9ycGhpY0NhbGxD
YXNlKCkgPSBkZWZhdWx0OworICAgIFBvbHltb3JwaGljQ2FsbENhc2UoKQorICAgICAgICA6IG1f
Y29kZUJsb2NrKG51bGxwdHIpCisgICAgeworICAgIH0KICAgICAKICAgICBQb2x5bW9ycGhpY0Nh
bGxDYXNlKENhbGxWYXJpYW50IHZhcmlhbnQsIENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAg
ICA6IG1fdmFyaWFudCh2YXJpYW50KQpAQCAtODQsMTAgKzc4LDEwIEBAIHB1YmxpYzoKICAgICAK
IHByaXZhdGU6CiAgICAgQ2FsbFZhcmlhbnQgbV92YXJpYW50OwotICAgIENvZGVCbG9jayogY29u
c3QgbV9jb2RlQmxvY2sgeyBudWxscHRyIH07CisgICAgQ29kZUJsb2NrKiBjb25zdCBtX2NvZGVC
bG9jazsKIH07CiAKLWNsYXNzIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIGZpbmFsIDogcHVi
bGljIEdDQXdhcmVKSVRTdHViUm91dGluZSwgcHVibGljIEJ1dHRlcmZseUFycmF5PFBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLCBQb2x5bW9ycGhpY0NhbGxOb2RlLCBDYWxsU2xvdD4geworY2xh
c3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgZmluYWwgOiBwdWJsaWMgR0NBd2FyZUpJVFN0
dWJSb3V0aW5lLCBwdWJsaWMgQnV0dGVyZmx5QXJyYXk8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUsIHZvaWQqLCBDYWxsU2xvdD4gewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBKSVRTdHVi
Um91dGluZTsKIApAQCAtOTgsMjggKzkyLDMzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQ2Fs
bE5vZGVzRm9yKENhbGxMaW5rSW5mbyopOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KLSAgICB2b2lkIGZvckVhY2hEZXBlbmRlbnRDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
IGNvbnN0CisgICAgdm9pZCBmb3JFYWNoRGVwZW5kZW50Q2VsbChjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQogICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IHN0ZDo6c2l6
ZSh0cmFpbGluZ1NwYW4oKSkgLSAxOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgZnVuY3Rv
cih0cmFpbGluZ1NwYW4oKVtpXS5tX2NhbGxlZU9yRXhlY3V0YWJsZSk7CisgICAgICAgIGZvciAo
YXV0byYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgICAgICBmdW5jdG9yKHZhcmlhbnQu
Z2V0KCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmU+IGNyZWF0ZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJU
YWc+JiBjb2RlLCBWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVyRnJhbWUs
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBjb25zdCBWZWN0b3I8Q2FsbFNsb3QsIDE2PiYg
Y2FsbFNsb3RzLCBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291bnRzLCBib29sIG5vdFVz
aW5nQ291bnRpbmcsIGJvb2wgaXNDbG9zdXJlQ2FsbCkKKyAgICBzdGF0aWMgUmVmPFBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lPiBjcmVhdGUoCisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4mIGNvZGUsIFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwKKyAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSwgQ2FsbExpbmtJbmZvJiBjYWxsTGlu
a0luZm8sIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlLCAxNj4mIGNhc2VzLAorICAg
ICAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291bnRzLCBib29sIG5vdFVzaW5nQ291
bnRpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKmNyZWF0ZUltcGwoY2FsbFNs
b3RzLnNpemUoKSwgY2FsbFNsb3RzLnNpemUoKSArIC8qIHNlbnRpbmVsICovIDEsIGNvZGUsIHZt
LCBvd25lciwgY2FsbGVyRnJhbWUsIGNhbGxMaW5rSW5mbywgY2FsbFNsb3RzLCBXVEZNb3ZlKGZh
c3RDb3VudHMpLCBub3RVc2luZ0NvdW50aW5nLCBpc0Nsb3N1cmVDYWxsKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqY3JlYXRlSW1wbCgwLCAwLCBjb2RlLCB2bSwgb3duZXIsIGNhbGxlckZy
YW1lLCBjYWxsTGlua0luZm8sIGNhc2VzLCBXVEZNb3ZlKGZhc3RDb3VudHMpLCBub3RVc2luZ0Nv
dW50aW5nKSk7CiAgICAgfQogCi0gICAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUodW5zaWdu
ZWQgaGVhZGVyU2l6ZSwgdW5zaWduZWQgdHJhaWxpbmdTaXplLCBjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBKU0NlbGwqIG93bmVyLCBDYWxs
RnJhbWUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8mLCBjb25zdCBWZWN0b3I8Q2FsbFNsb3Qs
IDE2PiYsIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMsIGJvb2wgbm90VXNpbmdD
b3VudGluZywgYm9vbCBpc0Nsb3N1cmVDYWxsKTsKLQotICAgIHVzaW5nIEJ1dHRlcmZseUFycmF5
PFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLCBQb2x5bW9ycGhpY0NhbGxOb2RlLCBDYWxsU2xv
dD46Om9wZXJhdG9yIGRlbGV0ZTsKLQotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWxsTGlua0luZm87IH0KKyAgICBzdGF0aWMgUmVmPFBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lPiBjcmVhdGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSwgVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBDYWxsRnJh
bWUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgY29uc3QgVmVjdG9y
PFBvbHltb3JwaGljQ2FsbENhc2UsIDE2PiYgY2FzZXMsIGNvbnN0IFZlY3RvcjxDYWxsU2xvdCwg
MTY+JiBjYWxsU2xvdHMsIGJvb2wgbm90VXNpbmdDb3VudGluZykKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqY3JlYXRlSW1wbCgwLCBjYWxsU2xvdHMuc2l6ZSgpLCBjb2RlLCB2bSwg
b3duZXIsIGNhbGxlckZyYW1lLCBjYWxsTGlua0luZm8sIGNhc2VzLCBjYWxsU2xvdHMsIG5vdFVz
aW5nQ291bnRpbmcpKTsKKyAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KFBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lKik7CisgICAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUodW5z
aWduZWQgaGVhZGVyU2l6ZSwgdW5zaWduZWQgdHJhaWxpbmdTaXplLAorICAgICAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiwgVk0mLCBKU0NlbGwq
IG93bmVyLAorICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8mLCBj
b25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZSwgMTY+JiwKKyAgICAgICAgVW5pcXVlQXJy
YXk8dWludDMyX3Q+JiYgZmFzdENvdW50cywgYm9vbCBub3RVc2luZ0NvdW50aW5nKTsKIAotICAg
IGJvb2wgdXBncmFkZUlmUG9zc2libGUoVk0mLCBDb2RlQmxvY2sqLCBDb2RlQmxvY2sqLCB1aW50
OF90KTsKKyAgICBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSh1bnNpZ25lZCBoZWFkZXJTaXpl
LCB1bnNpZ25lZCB0cmFpbGluZ1NpemUsIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRT
dHViUm91dGluZVB0clRhZz4mLCBWTSYsIEpTQ2VsbCogb3duZXIsIENhbGxGcmFtZSogY2FsbGVy
RnJhbWUsIENhbGxMaW5rSW5mbyYsIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlLCAx
Nj4mLCBjb25zdCBWZWN0b3I8Q2FsbFNsb3QsIDE2PiYsIGJvb2wgbm90VXNpbmdDb3VudGluZyk7
CiAKLSAgICBib29sIGlzQ2xvc3VyZUNhbGwoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc3VyZUNh
bGw7IH0KKyAgICB1c2luZyBCdXR0ZXJmbHlBcnJheTxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZSwgdm9pZCosIENhbGxTbG90Pjo6b3BlcmF0b3IgZGVsZXRlOwogCiBwcml2YXRlOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgbWFya1JlcXVpcmVkT2JqZWN0c0ludGVybmFs
SW1wbChWaXNpdG9yJik7CkBAIC0xMjgsMTEgKzEyNywxMCBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCB2aXNpdFdlYWtJbXBsKFZNJik7CiAKKyAgICBGaXhlZFZlY3RvcjxXcml0ZUJhcnJpZXI8SlND
ZWxsPj4gbV92YXJpYW50czsKICAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4gbV9mYXN0Q291bnRz
OwotICAgIENhbGxMaW5rSW5mbyogbV9jYWxsTGlua0luZm8geyBudWxscHRyIH07CisgICAgQmFn
PFBvbHltb3JwaGljQ2FsbE5vZGU+IG1fY2FsbE5vZGVzOwogICAgIGJvb2wgbV9ub3RVc2luZ0Nv
dW50aW5nIDogMSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRGF0YUlDIDogMSB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2lzQ2xvc3VyZUNhbGwgOiAxIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCmluZGV4IGI2ZmQ3ZjczNGNjYy4uNWU1NGI5OWZhM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0xODUsNiArMTg1LDg3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGhyb3dFeGNlcHRpb25Gcm9tQ2Fs
bFNsb3dQYXRoR2VuZXJhdG9yKFZNCiAgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIlRocm93IGV4Y2VwdGlvbiBmcm9tIGNhbGwgc2xvdyBwYXRo
IHRodW5rIik7CiB9CiAKK3N0YXRpYyB2b2lkIHNsb3dQYXRoRm9yKENDYWxsSGVscGVycyYgaml0
LCBWTSYgdm0sIFNwcnRfSklUT3BlcmF0aW9uX0VHQ2xpIHNsb3dQYXRoRnVuY3Rpb24pCit7Cisg
ICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKKyNpZiBPUyhXSU5ET1dTKSAm
JiBDUFUoWDg2XzY0KQorICAgIC8vIFdpbmRvd3MgWDg2XzY0IG5lZWRzIHNvbWUgc3BhY2UgcG9p
bnRlZCB0byBieSBhcmcwIGZvciByZXR1cm4gdHlwZXMgbGFyZ2VyIHRoYW4gNjQgYml0cy4KKyAg
ICAvLyBPdGhlciBhcmd1bWVudCB2YWx1ZXMgYXJlIHNoaWZ0IGJ5IDEuIFVzZSBzcGFjZSBvbiB0
aGUgc3RhY2sgZm9yIG91ciB0d28gcmV0dXJuIHZhbHVlcy4KKyAgICAvLyBNb3ZpbmcgdGhlIHN0
YWNrIGRvd24gbWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwgYnl0ZXMgZ2l2ZXMgdXMgcm9v
bSBmb3Igb3VyIDMgYXJndW1lbnRzCisgICAgLy8gYW5kIHNwYWNlIGZvciB0aGUgMTYgYnl0ZSBy
ZXR1cm4gYXJlYS4KKyAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1z
dGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkpLCBDQ2Fs
bEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ1QyICE9IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgc3RhdGljX2Fzc2VydChH
UFJJbmZvOjpyZWdUMyAhPSBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5tb3ZlKEdQ
UkluZm86OnJlZ1QyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIGppdC5tb3ZlKEdQUklu
Zm86OnJlZ1QzLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOworICAgIGppdC5tb3ZlKEdQUkluZm86
OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICBqaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDMyKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBqaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4o
c2xvd1BhdGhGdW5jdGlvbikpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICBlbWl0UG9pbnRl
clZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwor
ICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CisgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCA4KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworI2Vsc2UKKyAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCisg
ICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoLW1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHNsb3dQYXRoRnVuY3Rpb24pPihHUFJJ
bmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihzbG93UGF0aEZ1bmN0
aW9uKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihq
aXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7CisgICAgaml0LmNhbGwo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBpZiAobWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwpCisgICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyNlbmRpZgorCisgICAgLy8gVGhpcyBzbG93IGNhbGwg
d2lsbCByZXR1cm4gdGhlIGFkZHJlc3Mgb2Ygb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICAgLy8g
MSkgRXhjZXB0aW9uIHRocm93aW5nIHRodW5rLgorICAgIC8vIDIpIEhvc3QgY2FsbCByZXR1cm4g
dmFsdWUgcmV0dXJuZXIgdGhpbmd5LgorICAgIC8vIDMpIFRoZSBmdW5jdGlvbiB0byBjYWxsLgor
ICAgIC8vIFRoZSBzZWNvbmQgcmV0dXJuIHZhbHVlIEdQUiB3aWxsIGhvbGQgYSBub24temVybyB2
YWx1ZSBmb3IgdGFpbCBjYWxscy4KKworICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKKyAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7CisKKyAgICBSRUxF
QVNFX0FTU0VSVChyZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpID09IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZG9Ob3RUcmFz
aCA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIyKTsKKworICAgIGppdC5wcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoR1BS
SW5mbzo6bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSKTsKKyAgICBqaXQucHJlcGFyZUZvclRhaWxD
YWxsU2xvdyhSZWdpc3RlclNldCB7IEdQUkluZm86OnJldHVyblZhbHVlR1BSIH0pOworCisgICAg
ZG9Ob3RUcmFzaC5saW5rKCZqaXQpOworICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBKU0VudHJ5UHRyVGFnKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSkKK3sKKyAgICAvLyBUaGUg
cmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNrIG9yIGluIHRoZSBsaW5rIHJlZ2lzdGVyLiBX
ZSB3aWxsIGhlbmNlCisgICAgLy8gc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwg
ZnJhbWUgd2hpbGUgd2UgbWFrZSBhIEMrKyBmdW5jdGlvbiBjYWxsCisgICAgLy8gdG8gcGVyZm9y
bSBsaW5raW5nIGFuZCBsYXp5IGNvbXBpbGF0aW9uIGlmIG5lY2Vzc2FyeS4gV2UgZXhwZWN0IHRo
ZSBjYWxsZWUKKyAgICAvLyB0byBiZSBpbiByZWdUMC9yZWdUMSAocGF5bG9hZC90YWcpLCB0aGUg
Q2FsbEZyYW1lIHRvIGhhdmUgYWxyZWFkeQorICAgIC8vIGJlZW4gYWRqdXN0ZWQsIGFuZCBhbGwg
b3RoZXIgcmVnaXN0ZXJzIHRvIGJlIGF2YWlsYWJsZSBmb3IgdXNlLgorICAgIENDYWxsSGVscGVy
cyBqaXQ7CisKKyAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rQ2FsbCk7CisK
KyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVm
ZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVm
ZmVyLCBKSVRUaHVua1B0clRhZywgIkxpbmsgY2FsbCBzbG93IHBhdGggdGh1bmsiKTsKK30KKwor
Ly8gRm9yIGNsb3N1cmUgb3B0aW1pemF0aW9ucywgd2Ugb25seSBpbmNsdWRlIGNhbGxzLCBzaW5j
ZSBpZiB5b3UncmUgdXNpbmcgY2xvc3VyZXMgZm9yCisvLyBvYmplY3QgY29uc3RydWN0aW9uIHRo
ZW4geW91J3JlIGdvaW5nIHRvIGxvc2UgYmlnIHRpbWUgYW55d2F5LgorTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3Io
Vk0mIHZtKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBzbG93UGF0aEZvcihqaXQs
IHZtLCBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKTsKKworICAgIExpbmtCdWZmZXIgcGF0
Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5r
KTsKKyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFn
LCAiTGluayBwb2x5bW9ycGhpYyBjYWxsIHNsb3cgcGF0aCB0aHVuayIpOworfQorCiAvLyBGSVhN
RTogV2Ugc2hvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4gYSBtZWdhbW9ycGhpYyB2aXJ0dWFsIGNh
bGwgdnMuIGEgc2xvdwogLy8gcGF0aCB2aXJ0dWFsIGNhbGwgc28gdGhhdCB3ZSBjYW4gZW5hYmxl
IGZhc3QgdGFpbCBjYWxscyBmb3IgbWVnYW1vcnBoaWMKIC8vIHZpcnR1YWwgY2FsbHMgYnkgdXNp
bmcgdGhlIHNodWZmbGVyLgpAQCAtMTk2LDE1ICsyNzcsMTIgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1v
ZGUgbW8KICAgICAvLyBqdW1wIHRvIHRoZSBjYWxsZWUsIG9yIHNhdmUgdGhlIHJldHVybiBhZGRy
ZXNzIHRvIHRoZSBjYWxsIGZyYW1lIHdoaWxlIHdlCiAgICAgLy8gbWFrZSBhIEMrKyBmdW5jdGlv
biBjYWxsIHRvIHRoZSBhcHByb3ByaWF0ZSBKSVQgb3BlcmF0aW9uLgogCi0gICAgLy8gcmVnVDAg
PT4gY2FsbGVlCi0gICAgLy8gcmVnVDEgPT4gdGFnICgzMmJpdCkKLSAgICAvLyByZWdUMiA9PiBD
YWxsTGlua0luZm8qCi0gICAgLy8gcmVnVDMgPT4gSlNHbG9iYWxPYmplY3QqCi0KICAgICBDQ2Fs
bEhlbHBlcnMgaml0OwogCi0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKKyAg
ICBib29sIGlzVGFpbENhbGwgPSBtb2RlID09IENhbGxNb2RlOjpUYWlsOwogCisgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZTsKKyAgICAKICAgICAvLyBUaGlzIGlzIGEgc2xvdyBw
YXRoIGV4ZWN1dGlvbiwgYW5kIHJlZ1QyIGNvbnRhaW5zIHRoZSBDYWxsTGlua0luZm8uIENvdW50
IHRoZQogICAgIC8vIHNsb3cgcGF0aCBleGVjdXRpb24gZm9yIHRoZSBwcm9maWxlci4KICAgICBq
aXQuYWRkMzIoCkBAIC0yMTMsOSArMjkxLDkgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1vZGUgbW8KIAog
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgaGF2ZSBhIHN0b3J5IGZvciBlbGltaW5hdGluZyB0aGVz
ZSBjaGVja3MuIEluIG1hbnkgY2FzZXMsCiAgICAgLy8gdGhlIERGRyBrbm93cyB0aGF0IHRoZSB2
YWx1ZSBpcyBkZWZpbml0ZWx5IGEgY2VsbCwgb3IgZGVmaW5pdGVseSBhIGZ1bmN0aW9uLgotCisg
ICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAobW9kZSA9PSBDYWxsTW9kZTo6VGFpbCkg
eworICAgIGlmIChpc1RhaWxDYWxsKSB7CiAgICAgICAgIC8vIFRhaWwgY2FsbHMgY291bGQgaGF2
ZSBjbG9iYmVyZWQgdGhlIEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIgYmVjYXVzZSB0aGV5
CiAgICAgICAgIC8vIHJlc3RvcmUgY2FsbGVlIHNhdmVkIHJlZ2lzdGVycyBiZWZvcmUgZ2V0dGhp
bmcgaGVyZS4gU28sIGxldCdzIG1hdGVyaWFsaXplCiAgICAgICAgIC8vIHRoZSBOb3RDZWxsTWFz
ayBpbiBhIHRlbXAgcmVnaXN0ZXIgYW5kIHVzZSB0aGUgdGVtcCBpbnN0ZWFkLgpAQCAtMjI2LDcg
KzMwNCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZp
cnR1YWxUaHVua0ZvcihWTSYgdm0sIENhbGxNb2RlIG1vCiAgICAgc2xvd0Nhc2UuYXBwZW5kKGpp
dC5icmFuY2hJZk5vdENlbGwoR1BSSW5mbzo6cmVnVDEpKTsKICNlbmRpZgogICAgIGF1dG8gbm90
SlNGdW5jdGlvbiA9IGppdC5icmFuY2hJZk5vdEZ1bmN0aW9uKEdQUkluZm86OnJlZ1QwKTsKLQor
ICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHdlIGhhdmUgYSBKU0Z1bmN0aW9uLgogCiAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCBHUFJJbmZvOjpyZWdUMCk7CkBAIC0y
MzcsNyArMzE1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gdmlydHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1vZGUgbW8KICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBFeGVjdXRhYmxlQmFzZTo6b2Zmc2V0T2ZKSVRD
b2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCkpLAogICAgICAgICBHUFJJbmZvOjpyZWdUNCk7CiAg
ICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywg
R1BSSW5mbzo6cmVnVDQpKTsKLQorICAgIAogICAgIC8vIE5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2
ZSBhIENvZGVCbG9jaywgYW5kIHdlJ3JlIGNvbW1pdHRlZCB0byBtYWtpbmcgYSBmYXN0IGNhbGwu
CiAKICAgICBhdXRvIGlzTmF0aXZlID0gaml0LmJyYW5jaElmTm90VHlwZShHUFJJbmZvOjpyZWdU
MCwgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSk7CkBAIC0yNTAsNiArMzI4LDEwIEBAIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYg
dm0sIENhbGxNb2RlIG1vCiAgICAgYXV0byBkaXNwYXRjaExhYmVsID0gaml0LmxhYmVsKCk7CiAg
ICAgaXNOYXRpdmUubGluaygmaml0KTsKICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBH
UFJJbmZvOjpyZWdUNCwgSlNFbnRyeVB0clRhZyk7CisgICAgaWYgKGlzVGFpbENhbGwpIHsKKyAg
ICAgICAgaml0LnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgIGppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KFJlZ2lzdGVyU2V0IHsgR1BSSW5m
bzo6cmVnVDQgfSk7CisgICAgfQogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1Q0LCBKU0Vu
dHJ5UHRyVGFnKTsKIAogICAgIC8vIE51bGxTZXR0ZXJGdW5jdGlvblR5cGUgZG9lcyBub3QgZ2V0
IHRoZSBmYXN0IHBhdGggc3VwcG9ydC4gQnV0IGl0IGlzIE9LIHNpbmNlIHVzaW5nIE51bGxTZXR0
ZXJGdW5jdGlvblR5cGUgaXMgZXh0cmVtZWx5IHJhcmUuCkBAIC0yNjEsMzAgKzM0MywxMyBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2aXJ0dWFsVGh1bmtG
b3IoVk0mIHZtLCBDYWxsTW9kZSBtbwogCiAgICAgLy8gSGVyZSB3ZSBkb24ndCBrbm93IGFueXRo
aW5nLCBzbyByZXZlcnQgdG8gdGhlIGZ1bGwgc2xvdyBwYXRoLgogICAgIHNsb3dDYXNlLmxpbmso
JmppdCk7Ci0KLSAgICBqaXQuZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBpZiAobWF4RnJh
bWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCi0gICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsKSksIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIGpp
dC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25WaXJ0dWFsQ2FsbCk+KEdQUkluZm86
OnJlZ1QzLCBHUFJJbmZvOjpyZWdUMik7Ci0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHRhZ0NGdW5jdGlvbjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblZpcnR1YWxD
YWxsKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihq
aXQsIEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgaml0LmNhbGwo
R1BSSW5mbzo6bm9uQXJnR1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICBpZiAobWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwpCi0gICAgICAgIGppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBDQ2FsbEhlbHBlcnM6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQotICAgIC8vIFRoaXMgc2xvdyBjYWxsIHdpbGwgcmV0
dXJuIHRoZSBhZGRyZXNzIG9mIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotICAgIC8vIDEpIEV4Y2Vw
dGlvbiB0aHJvd2luZyB0aHVuay4KLSAgICAvLyAyKSBIb3N0IGNhbGwgcmV0dXJuIHZhbHVlIHJl
dHVybmVyIHRoaW5neS4KLSAgICAvLyAzKSBUaGUgZnVuY3Rpb24gdG8gY2FsbC4KLSAgICAvLyBU
aGUgc2Vjb25kIHJldHVybiB2YWx1ZSBHUFIgd2lsbCBob2xkIGEgbm9uLXplcm8gdmFsdWUgZm9y
IHRhaWwgY2FsbHMuCi0KLSAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUiwgSlNFbnRyeVB0clRhZyk7Ci0gICAgaml0LmVtaXRGdW5jdGlvbkVwaWxv
Z3VlKCk7Ci0gICAgaml0LnVudGFnUmV0dXJuQWRkcmVzcygpOwotICAgIGppdC5mYXJKdW1wKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCBKU0VudHJ5UHRyVGFnKTsKKyAgICBzbG93UGF0aEZvcihq
aXQsIHZtLCBvcGVyYXRpb25WaXJ0dWFsQ2FsbCk7CiAKICAgICBMaW5rQnVmZmVyIHBhdGNoQnVm
ZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9maWxlOjpWaXJ0dWFsVGh1
bmspOwotICAgIHJldHVybiBGSU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJU
YWcsICJWaXJ0dWFsICVzIHRodW5rIiwgbW9kZSA9PSBDYWxsTW9kZTo6UmVndWxhciA/ICJjYWxs
IiA6IG1vZGUgPT0gQ2FsbE1vZGU6OlRhaWwgPyAidGFpbCBjYWxsIiA6ICJjb25zdHJ1Y3QiKTsK
KyAgICByZXR1cm4gRklOQUxJWkVfVEhVTksoCisgICAgICAgIHBhdGNoQnVmZmVyLCBKSVRUaHVu
a1B0clRhZywKKyAgICAgICAgIlZpcnR1YWwgJXMgc2xvdyBwYXRoIHRodW5rIiwKKyAgICAgICAg
bW9kZSA9PSBDYWxsTW9kZTo6UmVndWxhciA/ICJjYWxsIiA6IG1vZGUgPT0gQ2FsbE1vZGU6OlRh
aWwgPyAidGFpbCBjYWxsIiA6ICJjb25zdHJ1Y3QiKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB2aXJ0dWFsVGh1bmtGb3JSZWd1bGFyQ2FsbChWTSYgdm0pCkBA
IC0zODEsOCArNDQ2LDEzIEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHBvbHltb3JwaGljVGh1bmtGb3IoVk0mLCBDYWxsTW9kZSBtCiAgICAgaml0LmVtaXRG
dW5jdGlvblByb2xvZ3VlKCk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
KQogICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1zdGF0aWNf
Y2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkpLCBDQ2FsbEhlbHBl
cnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5
cGUob3BlcmF0aW9uUG9seW1vcnBoaWNDYWxsKT4oR1BSSW5mbzo6cmVnVDMsIEdQUkluZm86OnJl
Z1QyKTsKLSAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0
aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUG9seW1vcnBoaWNDYWxsKSksIEdQUkluZm86
Om5vbkFyZ0dQUjApOworICAgIGlmIChpc1RhaWxDYWxsKSB7CisgICAgICAgIGppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsRm9yVGFpbENhbGwp
PihHUFJJbmZvOjpyZWdUMywgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICBqaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3Bl
cmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbEZvclRhaWxDYWxsKSksIEdQUkluZm86Om5vbkFyZ0dQ
UjApOworICAgIH0gZWxzZSB7CisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsRm9yUmVndWxhckNhbGwpPihHUFJJbmZvOjpyZWdU
MywgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uTGlua1BvbHlt
b3JwaGljQ2FsbEZvclJlZ3VsYXJDYWxsKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgIH0K
ICAgICBlbWl0UG9pbnRlclZhbGlkYXRpb24oaml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVy
YXRpb25QdHJUYWcpOwogICAgIGppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjAsIE9wZXJhdGlv
blB0clRhZyk7CiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQpAQCAtNDI2
LDM3ICs0OTYsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvbHlt
b3JwaGljVGh1bmtGb3JUYWlsQ2FsbEZvckNsb3N1cmUoVk0mCiAgICAgcmV0dXJuIHBvbHltb3Jw
aGljVGh1bmtGb3Iodm0sIENhbGxNb2RlOjpUYWlsLCBDbG9zdXJlTW9kZTo6WWVzKTsKIH0KIAot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb2x5bW9ycGhpY1JlcGF0Y2hU
aHVuayhWTSYpCi17Ci0gICAgLy8gVGhlIGNhbGxlZSBpcyBpbiByZWdUMCAoZm9yIEpTVkFMVUUz
Ml82NCwgdGhlIHRhZyBpcyBpbiByZWdUMSkuCi0gICAgLy8gVGhlIHJldHVybiBhZGRyZXNzIGlz
IG9uIHRoZSBzdGFjaywgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuIFdlIHdpbGwgaGVuY2UKLSAg
ICAvLyBqdW1wIHRvIHRoZSBjYWxsZWUsIG9yIHNhdmUgdGhlIHJldHVybiBhZGRyZXNzIHRvIHRo
ZSBjYWxsIGZyYW1lIHdoaWxlIHdlCi0gICAgLy8gbWFrZSBhIEMrKyBmdW5jdGlvbiBjYWxsIHRv
IHRoZSBhcHByb3ByaWF0ZSBKSVQgb3BlcmF0aW9uLgotCi0gICAgLy8gcmVnVDAgPT4gY2FsbGVl
Ci0gICAgLy8gcmVnVDEgPT4gdGFnICgzMmJpdCkKLSAgICAvLyByZWdUMiA9PiBDYWxsTGlua0lu
Zm8qCi0gICAgLy8gcmVnVDMgPT4gSlNHbG9iYWxPYmplY3QqCi0KLSAgICBDQ2FsbEhlbHBlcnMg
aml0OwotCi0gICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgaWYgKG1heEZyYW1l
RXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQotICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICBqaXQu
c2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uUG9seW1vcnBoaWNDYWxsKT4oR1BSSW5m
bzo6cmVnVDMsIEdQUkluZm86OnJlZ1QyKTsKLSAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIodGFnQ0Z1bmN0aW9uPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uUG9seW1v
cnBoaWNDYWxsKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgIGppdC5jYWxsKEdQUkluZm86
Om5vbkFyZ0dQUjAsIE9wZXJhdGlvblB0clRhZyk7Ci0gICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsKQotICAgICAgICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwgQ0NhbGxIZWxwZXJzOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7Ci0KLSAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKLSAgICBq
aXQudW50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIsIEpTRW50cnlQdHJUYWcpOwotCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcihq
aXQsIEdMT0JBTF9USFVOS19JRCwgTGlua0J1ZmZlcjo6UHJvZmlsZTo6VGh1bmspOwotICAgIHJl
dHVybiBGSU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJQb2x5bW9y
cGhpYyByZXBhdGNoIHRodW5rIik7Ci19Ci0KIGVudW0gVGh1bmtFbnRyeVR5cGUgeyBFbnRlclZp
YUNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZl
ZFRhZ3MgfTsKIGVudW0gY2xhc3MgVGh1bmtGdW5jdGlvblR5cGUgeyBKU0Z1bmN0aW9uLCBJbnRl
cm5hbEZ1bmN0aW9uIH07CiBlbnVtIGNsYXNzIEluY2x1ZGVEZWJ1Z2dlckhvb2sgOiBib29sIHsg
Tm8sIFllcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dl
bmVyYXRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgK
aW5kZXggNTRjY2E1NzAxZjk0Li4yZGFiMGI5MjhiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaApAQCAtNDgsNiArNDgsOSBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdl
bmVyYXRvcihWTQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiByZXR1cm5Gcm9tQmFzZWxpbmVHZW5lcmF0b3IoVk0mKTsKIAorTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNJik7CitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVu
a0dlbmVyYXRvcihWTSYpOworCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHBvbHltb3JwaGljVGh1bmtGb3JSZWd1bGFyQ2FsbChWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBwb2x5bW9ycGhpY1RodW5rRm9yVGFpbENhbGwoVk0mKTsKIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9seW1vcnBoaWNUaHVua0ZvclJl
Z3VsYXJDYWxsRm9yQ2xvc3VyZShWTSYpOwpAQCAtNTcsOCArNjAsNiBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvclJlZ3VsYXJDYWxsKFZNJik7
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvclRh
aWxDYWxsKFZNJik7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZpcnR1
YWxUaHVua0ZvckNvbnN0cnVjdChWTSYpOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHBvbHltb3JwaGljUmVwYXRjaFRodW5rKFZNJik7Ci0KIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlQ2FsbEdlbmVyYXRvcihWTSYpOwogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVDYWxsV2l0aERlYnVnZ2VySG9v
a0dlbmVyYXRvcihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBu
YXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IoVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKaW5kZXggNTRhOTUyMTg0MWYyLi44MWY0MjZmMzAyZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSlNDQ29uZmlnLmgiCiAjaW5jbHVkZSAi
TExJbnRDTG9vcC5oIgotI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludC5oIgogI2luY2x1ZGUgIkxM
SW50UENSYW5nZXMuaCIKICNpbmNsdWRlICJMTEludFNsb3dQYXRocy5oIgogI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCkBAIC0yNjEsNyArMjYwLDYgQEAgdm9pZCBpbml0aWFsaXplKCkKICAgICBJ
TklUSUFMSVpFX1RBR19BTkRfVU5UQUdfVEhVTktTKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2spOwogI2VuZGlmIC8vIENQVShBUk02NEUpCiAjZW5kaWYgLy8gRU5BQkxF
KENfTE9PUCkKLSAgICBnX2pzY0NvbmZpZy5kZWZhdWx0Q2FsbFRodW5rID0gZGVmYXVsdENhbGwo
KS5jb2RlKCkudGFnZ2VkUHRyKCk7CiB9CiAKIElHTk9SRV9XQVJOSU5HU19CRUdJTigibWlzc2lu
Zy1ub3JldHVybiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnQuY3BwCmluZGV4IDYzM2Y5M2QzYzRiMC4uNDIzMTI0Y2UyMGYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcApAQCAtMTkxLDE1ICsx
OTEsNiBAQCBzdGF0aWMgdm9pZCBzZXRNb2R1bGVQcm9ncmFtRW50cnlwb2ludChDb2RlQmxvY2sq
IGNvZGVCbG9jaykKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoKmppdENvZGUpOwogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZGVmYXVsdENhbGwoKQotewotI2lm
IEVOQUJMRShKSVQpCi0gICAgaWYgKE9wdGlvbnM6OnVzZUpJVCgpKQotICAgICAgICByZXR1cm4g
ZGVmYXVsdENhbGxUaHVuaygpOwotI2VuZGlmIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIExM
SW50OjpnZXRDb2RlUmVmPEpTRW50cnlQdHJUYWc+KGxsaW50X2RlZmF1bHRfY2FsbF90cmFtcG9s
aW5lKTsKLX0KLQogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVFbnRyeXBvaW50KCkKIHsKICNpZiBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludC5oCmluZGV4IDMyN2EzZWMyNzM2
Yy4uMjVlZTgyM2FlOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludC5oCkBAIC00MSw3ICs0MSw2IEBAIHZvaWQgc2V0RW50cnlwb2ludChDb2RlQmxv
Y2sqKTsKIAogdW5zaWduZWQgZnJhbWVSZWdpc3RlckNvdW50Rm9yKENvZGVCbG9jayopOwogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZGVmYXVsdENhbGwoKTsKIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlRW50
cnlwb2ludCgpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGZ1enplclJl
dHVybkVhcmx5RnJvbUxvb3BIaW50RW50cnlwb2ludCgpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpTRW50cnlQdHJUYWc+IGdlbmVyaWNSZXR1cm5Qb2ludEVudHJ5cG9pbnQoT3Bjb2RlU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRl
eCA2MDNmNmY4ZGE3MDUuLjE0N2Q0MzlhMzBjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC01ODgsNTIgKzU4OCwxNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBjYWxs
RnJhbWUpOwogfQogCi1leHRlcm4gIkMiIFVHUFJQYWlyIGxsaW50X2RlZmF1bHRfY2FsbChDYWxs
RnJhbWUqIGNhbGxlZUZyYW1lLCBKU0NlbGwqIGdsb2JhbE9iamVjdENlbGwsIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvKQorZXh0ZXJuICJDIiBVR1BSUGFpciBsbGludF9saW5rX2NhbGwoQ2Fs
bEZyYW1lKiBjYWxsZWVGcmFtZSwgSlNDZWxsKiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3RDZWxsKTsKLSAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7Ci0gICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKLSAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbGVlRnJhbWUpOwotICAgIEpTQ2VsbCogb3duZXIgPSBjYWxsTGlua0lu
Zm8tPm93bmVyKCk7Ci0gICAgLy8gUmlnaHQgbm93LCBJQyAoR2V0dGVyLCBTZXR0ZXIsIFByb3h5
IElDIGV0Yy4pIC8gV2FzbVRvSlMgc2V0cyBudWxscHRyIGludGVudGlvbmFsbHkgc2luY2Ugd2Ug
d291bGQgbGlrZSB0byBzaGFyZSBJQyAvIFdhc21Ub0pTIHRodW5rIGV2ZW50dWFsbHkuCi0gICAg
Ly8gSG93ZXZlciwgaW4gdGhhdCBjYXNlLCBlYWNoIElDJ3MgZGF0YSBzaWRlIHdpbGwgaGF2ZSBD
YWxsTGlua0luZm8uCi0gICAgLy8gQXQgdGhhdCB0aW1lLCB0aGV5IHNob3VsZCBoYXZlIGFwcHJv
cHJpYXRlIG93bmVyLiBTbyB0aGlzIGlzIGEgaGFjayBvbmx5IGZvciBub3cuCi0gICAgLy8gVGhp
cyBzaG91bGQgYWx3YXlzIHdvcmtzIHNpbmNlIElDIG9ubHkgcGVyZm9ybXMgcmVndWxhci1jYWxs
cyBhbmQgaXQgbmV2ZXIgZG9lcyB0YWlsLWNhbGxzLgotICAgIGlmICghb3duZXIpIHsKLSAgICAg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGNhbGxlZUZyYW1lLT5jYWxsZXJGcmFtZSgpOwot
ICAgICAgICBvd25lciA9IGNhbGxlckZyYW1lLT5jb2RlT3duZXJDZWxsKCk7Ci0gICAgfQotICAg
IGNhbGxlZUZyYW1lLT5zZXRDb2RlQmxvY2sobnVsbHB0cik7Ci0gICAgdm9pZCogY2FsbFRhcmdl
dCA9IGxpbmtGb3IoZ2xvYmFsT2JqZWN0LCBvd25lciwgY2FsbGVlRnJhbWUsIGNhbGxMaW5rSW5m
byk7Ci0gICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUob3duZXIpOwotICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY2FsbFRhcmdl
dCwgYml0d2lzZV9jYXN0PHZvaWQqPigmdm0pKTsKLSAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGNh
bGxUYXJnZXQsIG51bGxwdHIpOworICAgIHJldHVybiBsaW5rRm9yKGNhbGxlZUZyYW1lLCBqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLCBjYWxsTGlua0luZm8pOwogfQogCi1l
eHRlcm4gIkMiIFVHUFJQYWlyIGxsaW50X3ZpcnR1YWxfY2FsbChDYWxsRnJhbWUqIGNhbGxlZUZy
YW1lLCBKU0NlbGwqIGdsb2JhbE9iamVjdENlbGwsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
KQorZXh0ZXJuICJDIiBVR1BSUGFpciBsbGludF92aXJ0dWFsX2NhbGwoQ2FsbEZyYW1lKiBjYWxs
ZWVGcmFtZSwgSlNDZWxsKiBnbG9iYWxPYmplY3QsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
KQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3RDZWxsKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQ2Vs
bCogY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxlZUZyYW1lKTsKLSAgICBKU0NlbGwqIG93bmVyID0gY2FsbExpbmtJ
bmZvLT5vd25lcigpOwotICAgIC8vIFJpZ2h0IG5vdywgSUMgKEdldHRlciwgU2V0dGVyLCBQcm94
eSBJQyBldGMuKSAvIFdhc21Ub0pTIHNldHMgbnVsbHB0ciBpbnRlbnRpb25hbGx5IHNpbmNlIHdl
IHdvdWxkIGxpa2UgdG8gc2hhcmUgSUMgLyBXYXNtVG9KUyB0aHVuayBldmVudHVhbGx5LgotICAg
IC8vIEhvd2V2ZXIsIGluIHRoYXQgY2FzZSwgZWFjaCBJQydzIGRhdGEgc2lkZSB3aWxsIGhhdmUg
Q2FsbExpbmtJbmZvLgotICAgIC8vIEF0IHRoYXQgdGltZSwgdGhleSBzaG91bGQgaGF2ZSBhcHBy
b3ByaWF0ZSBvd25lci4gU28gdGhpcyBpcyBhIGhhY2sgb25seSBmb3Igbm93LgotICAgIC8vIFRo
aXMgc2hvdWxkIGFsd2F5cyB3b3JrcyBzaW5jZSBJQyBvbmx5IHBlcmZvcm1zIHJlZ3VsYXItY2Fs
bHMgYW5kIGl0IG5ldmVyIGRvZXMgdGFpbC1jYWxscy4KLSAgICBpZiAoIW93bmVyKSB7Ci0gICAg
ICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBjYWxsZWVGcmFtZS0+Y2FsbGVyRnJhbWUoKTsK
LSAgICAgICAgb3duZXIgPSBjYWxsZXJGcmFtZS0+Y29kZU93bmVyQ2VsbCgpOwotICAgIH0KLSAg
ICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51bGxwdHIpOwotICAgIHZvaWQqIGNhbGxUYXJn
ZXQgPSB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGdsb2JhbE9iamVjdCwgb3duZXIsIGNhbGxlZUZy
YW1lLCBjYWxsTGlua0luZm8sIGNhbGxlZUFzRnVuY3Rpb25DZWxsSWdub3JlZCk7Ci0gICAgZW5z
dXJlU3RpbGxBbGl2ZUhlcmUob3duZXIpOwotICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRp
b24oKSkpCi0gICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoY2FsbFRhcmdldCwgYml0d2lzZV9j
YXN0PHZvaWQqPigmdm0pKTsKLSAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGNhbGxUYXJnZXQsIG51
bGxwdHIpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxlZUZyYW1l
LT5jYWxsZXJGcmFtZSgpKTsKKyAgICByZXR1cm4gdmlydHVhbEZvcldpdGhGdW5jdGlvbihqc0Nh
c3Q8SlNHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLCBjYWxsZWVGcmFtZSwgY2FsbExpbmtJ
bmZvLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbElnbm9yZWQpOwogfQogCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbmV3X29iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggMzg4OTU4ZWQyYzMyLi5mMWE2MDZjZWFiZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBMTEludCB7CiAKIGV4dGVybiAiQyIgVUdQUlBhaXIgbGxpbnRfdHJh
Y2Vfb3BlcmFuZChDYWxsRnJhbWUqLCBjb25zdCBKU0luc3RydWN0aW9uKiwgaW50IGZyb21XaGVy
ZSwgaW50IG9wZXJhbmQpIFJFRkVSRU5DRURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwogZXh0ZXJu
ICJDIiBVR1BSUGFpciBsbGludF90cmFjZV92YWx1ZShDYWxsRnJhbWUqLCBjb25zdCBKU0luc3Ry
dWN0aW9uKiwgaW50IGZyb21XaGVyZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIFJFRkVSRU5D
RURfRlJPTV9BU00gV1RGX0lOVEVSTkFMOwotZXh0ZXJuICJDIiBVR1BSUGFpciBsbGludF9kZWZh
dWx0X2NhbGwoQ2FsbEZyYW1lKiwgSlNDZWxsKiwgQ2FsbExpbmtJbmZvKikgUkVGRVJFTkNFRF9G
Uk9NX0FTTSBXVEZfSU5URVJOQUw7CitleHRlcm4gIkMiIFVHUFJQYWlyIGxsaW50X2xpbmtfY2Fs
bChDYWxsRnJhbWUqLCBKU0NlbGwqLCBDYWxsTGlua0luZm8qKSBSRUZFUkVOQ0VEX0ZST01fQVNN
IFdURl9JTlRFUk5BTDsKIGV4dGVybiAiQyIgVUdQUlBhaXIgbGxpbnRfdmlydHVhbF9jYWxsKENh
bGxGcmFtZSosIEpTQ2VsbCosIENhbGxMaW5rSW5mbyopIFJFRkVSRU5DRURfRlJPTV9BU00gV1RG
X0lOVEVSTkFMOwogZXh0ZXJuICJDIiB2b2lkIGxsaW50X3dyaXRlX2JhcnJpZXJfc2xvdyhDYWxs
RnJhbWUqLCBKU0NlbGwqKSBSRUZFUkVOQ0VEX0ZST01fQVNNIFdURl9JTlRFUk5BTDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKaW5kZXggYzQxYmQ0YTVi
NDY4Li4zNjcyNWI3NjFlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmNwcApAQCAtMzAxLDQ5ICszMDEsNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGluUGxhY2VJbnRlcnByZXRlckVudHJ5VGh1bmtTSU1EKCkKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPiBkZWZhdWx0Q2FsbFRodW5rKCkKLXsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPj4gY29kZVJlZjsKLSAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUtleTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlS2V5
LCBbJl0gewotICAgICAgICAvLyBUaGUgY2FsbGVlIGlzIGluIHJlZ1QwIChmb3IgSlNWQUxVRTMy
XzY0LCB0aGUgdGFnIGlzIGluIHJlZ1QxKS4KLSAgICAgICAgLy8gVGhlIHJldHVybiBhZGRyZXNz
IGlzIG9uIHRoZSBzdGFjaywgb3IgaW4gdGhlIGxpbmsgcmVnaXN0ZXIuIFdlIHdpbGwgaGVuY2UK
LSAgICAgICAgLy8ganVtcCB0byB0aGUgY2FsbGVlLCBvciBzYXZlIHRoZSByZXR1cm4gYWRkcmVz
cyB0byB0aGUgY2FsbCBmcmFtZSB3aGlsZSB3ZQotICAgICAgICAvLyBtYWtlIGEgQysrIGZ1bmN0
aW9uIGNhbGwgdG8gdGhlIGFwcHJvcHJpYXRlIEpJVCBvcGVyYXRpb24uCi0KLSAgICAgICAgLy8g
cmVnVDAgPT4gY2FsbGVlCi0gICAgICAgIC8vIHJlZ1QxID0+IHRhZyAoMzJiaXQpCi0gICAgICAg
IC8vIHJlZ1QyID0+IENhbGxMaW5rSW5mbyoKLSAgICAgICAgLy8gcmVnVDMgPT4gSlNHbG9iYWxP
YmplY3QqCi0KLSAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKLQotICAgICAgICBqaXQuZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKLSAgICAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsKQotICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigt
c3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpKSwgQ0Nh
bGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIGppdC5zZXR1cEFyZ3Vt
ZW50czxkZWNsdHlwZShvcGVyYXRpb25EZWZhdWx0Q2FsbCk+KEdQUkluZm86OnJlZ1QzLCBHUFJJ
bmZvOjpyZWdUMik7Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cih0YWdDRnVuY3Rpb248T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25EZWZhdWx0Q2FsbCkpLCBH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BS
MCwgT3BlcmF0aW9uUHRyVGFnKTsKLSAgICAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1Bh
dGhDYWxsKQotICAgICAgICAgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwotCi0gICAgICAgIC8vIFRoaXMgc2xvdyBjYWxsIHdpbGwgcmV0dXJuIHRo
ZSBhZGRyZXNzIG9mIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotICAgICAgICAvLyAxKSBFeGNlcHRp
b24gdGhyb3dpbmcgdGh1bmsuCi0gICAgICAgIC8vIDIpIEhvc3QgY2FsbCByZXR1cm4gdmFsdWUg
cmV0dXJuZXIgdGhpbmd5LgotICAgICAgICAvLyAzKSBUaGUgZnVuY3Rpb24gdG8gY2FsbC4KLSAg
ICAgICAgLy8gVGhlIHNlY29uZCByZXR1cm4gdmFsdWUgR1BSIHdpbGwgaG9sZCBhIG5vbi16ZXJv
IHZhbHVlIGZvciB0YWlsIGNhbGxzLgotCi0gICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1
ZSgpOwotICAgICAgICBqaXQudW50YWdSZXR1cm5BZGRyZXNzKCk7Ci0gICAgICAgIGppdC5mYXJK
dW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBKU0VudHJ5UHRyVGFnKTsKLQotICAgICAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQ
cm9maWxlOjpUaHVuayk7Ci0gICAgICAgIGNvZGVSZWYuY29uc3RydWN0KEZJTkFMSVpFX0NPREUo
cGF0Y2hCdWZmZXIsIEpTRW50cnlQdHJUYWcsICJEZWZhdWx0IENhbGwgdGh1bmsiKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9KTsKLSAgICByZXR1cm4gY29kZVJlZjsKLX0KLQogTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVUaHVuaygp
CiB7CiAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4+IGNvZGVSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5oCmluZGV4IGNjYmVmMTdlNTkyMy4uZjJjMzJiZjhiYTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaApAQCAtNzcsNyArNzcsNiBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNo
ZWNrVGh1bmsoKTsKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPiBldmFsRW50
cnlUaHVuaygpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHByb2dyYW1F
bnRyeVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gbW9kdWxl
UHJvZ3JhbUVudHJ5VGh1bmsoKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
PiBkZWZhdWx0Q2FsbFRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRh
Zz4gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVRodW5rKCk7CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZ2VuZXJpY1JldHVyblBvaW50VGh1bmsoT3Bjb2RlU2l6ZSk7CiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZnV6emVyUmV0dXJuRWFybHlGcm9tTG9v
cEhpbnRUaHVuaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGNhYmJhYzg1NGNlZC4uN2JiNDY5NzFkM2Y1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCkBAIC0yNTA3LDcgKzI1MDcsNyBAQCBlbmQpCiAjIDY0Yml0OnQwIDMyYml0KHQwLHQxKSBp
cyBjYWxsZWUKICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0dsb2Jh
bE9iamVjdAotbWFjcm8gbGlua0ZvcihmdW5jdGlvbikKK21hY3JvIGxpbmtTbG93UGF0aEZvcihm
dW5jdGlvbikKICAgICBmdW5jdGlvblByb2xvZ3VlKCkKICAgICBsb2FkcCBKU0dsb2JhbE9iamVj
dDo6bV92bVt0M10sIHQxCiAgICAgc3RvcmVwIGNmciwgVk06OnRvcENhbGxGcmFtZVt0MV0KQEAg
LTI1MTcsMTcgKzI1MTcsMTggQEAgbWFjcm8gbGlua0ZvcihmdW5jdGlvbikKICAgICBjQ2FsbDMo
ZnVuY3Rpb24pCiAgICAgZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgdW50YWdSZXR1cm5BZGRyZXNz
IHNwCi0gICAgYnRwbnogcjEsIC50aHJvdwotICAgIGptcCByMCwgSlNFbnRyeVB0clRhZwotLnRo
cm93OgotICAgIGZ1bmN0aW9uUHJvbG9ndWUoKQotICAgIGptcCBfbGxpbnRfdGhyb3dfZnJvbV9z
bG93X3BhdGhfdHJhbXBvbGluZQorICAgIGJ0cHogcjEsIC5kb05vdFRyYXNoCisgICAgcHJlc2Vy
dmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQxKQorICAgIHByZXBhcmVGb3JUYWlsQ2FsbCh0MSwg
dDIsIHQzLCB0NCwgbWFjcm8oYWRkcmVzcykgZW5kKQorICAgIHVudGFnUmV0dXJuQWRkcmVzcyB0
NAorLmRvTm90VHJhc2g6CisgICAgam1wIHQwLCBKU0VudHJ5UHRyVGFnCiBlbmQKIAogIyA2NGJp
dDp0MCAzMmJpdCh0MCx0MSkgaXMgY2FsbGVlCiAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICMgdDMg
aXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKLW1hY3JvIHZpcnR1YWxUaHVua0ZvcihvZmZzZXRP
ZkpJVENvZGVXaXRoQXJpdHlDaGVjaywgb2Zmc2V0T2ZDb2RlQmxvY2ssIGludGVybmFsRnVuY3Rp
b25UcmFtcG9saW5lLCBzbG93Q2FzZSkKK21hY3JvIHZpcnR1YWxUaHVua0ZvcihvZmZzZXRPZkpJ
VENvZGVXaXRoQXJpdHlDaGVjaywgb2Zmc2V0T2ZDb2RlQmxvY2ssIGludGVybmFsRnVuY3Rpb25U
cmFtcG9saW5lLCBwcmVwYXJlQ2FsbCwgc2xvd0Nhc2UpCiAgICAgYWRkaSAxLCBDYWxsTGlua0lu
Zm86Om1fc2xvd1BhdGhDb3VudFt0Ml0KICAgICBpZiBKU1ZBTFVFNjQKICAgICAgICAgYnRxbnog
dDAsIE5vdENlbGxNYXNrLCBzbG93Q2FzZQpAQCAtMjU0Niw0NSArMjU0Nyw1MSBAQCBtYWNybyB2
aXJ0dWFsVGh1bmtGb3Iob2Zmc2V0T2ZKSVRDb2RlV2l0aEFyaXR5Q2hlY2ssIG9mZnNldE9mQ29k
ZUJsb2NrLCBpbnRlcm5hbAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3Q1XSwgRnVuY3Rpb25F
eGVjdXRhYmxlVHlwZSwgLmNhbGxDb2RlCiAgICAgbG9hZHAgb2Zmc2V0T2ZDb2RlQmxvY2tbdDVd
LCB0MAogLmNhbGxDb2RlOgorICAgIHByZXBhcmVDYWxsKHQ1LCB0MiwgdDMsIHQ0KQogICAgIHN0
b3JlcCB0MCwgQ29kZUJsb2NrIC0gUHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YVtzcF0KICAgICBq
bXAgdDEsIEpTRW50cnlQdHJUYWcKIC5ub3RKU0Z1bmN0aW9uOgogICAgIGJibmVxIEpTQ2VsbDo6
bV90eXBlW3QwXSwgSW50ZXJuYWxGdW5jdGlvblR5cGUsIHNsb3dDYXNlCisgICAgcHJlcGFyZUNh
bGwodDUsIHQyLCB0MywgdDQpCiAgICAgam1wIGludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lCiBl
bmQKIAogIyA2NGJpdDp0MCAzMmJpdCh0MCx0MSkgaXMgY2FsbGVlCiAjIHQyIGlzIENhbGxMaW5r
SW5mbyoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKLW9wKGxsaW50X2RlZmF1bHRf
Y2FsbF90cmFtcG9saW5lLCBtYWNybyAoKQotICAgIGxpbmtGb3IoX2xsaW50X2RlZmF1bHRfY2Fs
bCkKK29wKGxsaW50X2xpbmtfY2FsbF90cmFtcG9saW5lLCBtYWNybyAoKQorICAgIGxpbmtTbG93
UGF0aEZvcihfbGxpbnRfbGlua19jYWxsKQogZW5kKQogCiAjIDY0Yml0OnQwIDMyYml0KHQwLHQx
KSBpcyBjYWxsZWUKICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogIyB0MyBpcyBjYWxsZXIncyBKU0ds
b2JhbE9iamVjdAogb3AobGxpbnRfdmlydHVhbF9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICgpCi0g
ICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFy
aXR5Q2hlY2ssIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsLCBfbGxpbnRf
aW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5lLCAuc2xvd0Nhc2UpCisgICAgdmlydHVh
bFRodW5rRm9yKEV4ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ss
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsLCBfbGxpbnRfaW50ZXJuYWxf
ZnVuY3Rpb25fY2FsbF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVt
cDQpIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgotICAgIGxpbmtGb3IoX2xsaW50X3ZpcnR1
YWxfY2FsbCkKKyAgICBsaW5rU2xvd1BhdGhGb3IoX2xsaW50X3ZpcnR1YWxfY2FsbCkKIGVuZCkK
IAogIyA2NGJpdDp0MCAzMmJpdCh0MCx0MSkgaXMgY2FsbGVlCiAjIHQyIGlzIENhbGxMaW5rSW5m
byoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxfY29u
c3RydWN0X3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFi
bGVCYXNlOjptX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgRnVuY3Rpb25FeGVj
dXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgX2xsaW50X2ludGVybmFsX2Z1bmN0aW9u
X2NvbnN0cnVjdF90cmFtcG9saW5lLCAuc2xvd0Nhc2UpCisgICAgdmlydHVhbFRodW5rRm9yKEV4
ZWN1dGFibGVCYXNlOjptX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgRnVuY3Rp
b25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgX2xsaW50X2ludGVybmFsX2Z1
bmN0aW9uX2NvbnN0cnVjdF90cmFtcG9saW5lLCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywg
dGVtcDQpIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgotICAgIGxpbmtGb3IoX2xsaW50X3Zp
cnR1YWxfY2FsbCkKKyAgICBsaW5rU2xvd1BhdGhGb3IoX2xsaW50X3ZpcnR1YWxfY2FsbCkKIGVu
ZCkKIAogIyA2NGJpdDp0MCAzMmJpdCh0MCx0MSkgaXMgY2FsbGVlCiAjIHQyIGlzIENhbGxMaW5r
SW5mbyoKICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKIG9wKGxsaW50X3ZpcnR1YWxf
dGFpbF9jYWxsX3RyYW1wb2xpbmUsIG1hY3JvICgpCi0gICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1
dGFibGVCYXNlOjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90
cmFtcG9saW5lLCAuc2xvd0Nhc2UpCisgICAgdmlydHVhbFRodW5rRm9yKEV4ZWN1dGFibGVCYXNl
OjptX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9j
b2RlQmxvY2tGb3JDYWxsLCBfbGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY2FsbF90cmFtcG9saW5l
LCBtYWNybyAodGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQpCisgICAgICAgIHByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbCh0ZW1wMSkKKyAgICAgICAgcHJlcGFyZUZvclRhaWxDYWxsKHRl
bXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCBtYWNybyhhZGRyZXNzKSBlbmQpCisgICAgICAgIHVu
dGFnUmV0dXJuQWRkcmVzcyB0ZW1wNAorICAgIGVuZCwgLnNsb3dDYXNlKQogLnNsb3dDYXNlOgot
ICAgIGxpbmtGb3IoX2xsaW50X3ZpcnR1YWxfY2FsbCkKKyAgICBsaW5rU2xvd1BhdGhGb3IoX2xs
aW50X3ZpcnR1YWxfY2FsbCkKIGVuZCkKIAogaWYgSklUCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKaW5kZXggODRlMzI0YzEzOTVl
Li45NDFlZGY0YmQyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCBKU1ZhbHVlIENMb29w
OjpleGVjdXRlKE9wY29kZUlEIGVudHJ5T3Bjb2RlSUQsIHZvaWQqIGV4ZWN1dGFibGVBZGRyZXNz
LCBWTSogdm0sCiAgICAgLy8gMi4gMzIgYml0IHJlc3VsdCB2YWx1ZXMgd2lsbCBiZSBpbiB0aGUg
bG93IDMyLWJpdCBvZiB0MC4KICAgICAvLyAzLiA2NCBiaXQgcmVzdWx0IHZhbHVlcyB3aWxsIGJl
IGluIHQwLgogCi0gICAgQ0xvb3BSZWdpc3RlciB0MCwgdDEsIHQyLCB0MywgdDUsIHQ2LCB0Nywg
c3AsIGNmciwgbHIsIHBjOworICAgIENMb29wUmVnaXN0ZXIgdDAsIHQxLCB0MiwgdDMsIHQ1LCBz
cCwgY2ZyLCBsciwgcGM7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBDTG9vcFJlZ2lzdGVyIG51
bWJlclRhZywgbm90Q2VsbE1hc2s7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggN2U3OWNm
MWZmNjYwLi5hYmQ2ZjllNGUzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMjk1LDcgKzIyOTUs
NyBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2hB
ZnRlckNhbGwsIHZhbHVlUHJvZmlsZU5hbWUsCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcENh
bGxTbG93CiAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by5tX2NhbGxlZU9yQ29kZUJsb2NrW3Q1XSwgdDMKICAgICBidHB6IHQzLCAoY29uc3RleHByIENh
bGxMaW5rSW5mbzo6cG9seW1vcnBoaWNDYWxsZWVNYXNrKSwgLm5vdFBvbHltb3JwaGljCi0gICAg
cHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDYsIG1hY3JvKGFkZHJlc3MpCisgICAgcHJlcGFyZUNh
bGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCiAgICAgICAgIGxvYWRwICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9jb2RlQmxvY2tbdDVd
LCB0MgogICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKICAgICBlbmQpCkBAIC0yMzA2LDM0ICsy
MzA2LDI1IEBAIG1hY3JvIGNhbGxIZWxwZXIob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaEFmdGVyQ2FsbCwgdmFsdWVQcm9maWxlTmFtZSwKIAogLm5vdFBvbHltb3JwaGljOgogICAg
IGJwbmVxIHQwLCB0MywgLm9wQ2FsbFNsb3cKLSAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0
NiwgbWFjcm8oYWRkcmVzcykKKyAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0MSwgbWFjcm8o
YWRkcmVzcykKICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mby51LmRhdGFJQy5tX2NvZGVCbG9ja1t0NV0sIHQyCiAgICAgICAgIHN0b3JlcCB0Miwg
YWRkcmVzcwogICAgIGVuZCkKIAogLmdvUG9seW1vcnBoaWM6CiAgICAgbG9hZHAgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJQy5tX21vbm9tb3JwaGljQ2Fs
bERlc3RpbmF0aW9uW3Q1XSwgdDUKLS5kaXNwYXRjaDoKICAgICBpbnZva2VDYWxsKG9wY29kZU5h
bWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lz
dGVyLCBkaXNwYXRjaCwgdDUsIHQxLCBKU0VudHJ5UHRyVGFnKQogCiAub3BDYWxsU2xvdzoKICAg
ICAjIDY0Yml0OnQwIDMyYml0KHQwLHQxKSBpcyBjYWxsZWUKICAgICAjIHQyIGlzIENhbGxMaW5r
SW5mbyoKICAgICAjIHQzIGlzIGNhbGxlcidzIEpTR2xvYmFsT2JqZWN0Ci0gICAgcHJlcGFyZUNh
bGwodDIsIHQzLCB0NCwgdDYsIG1hY3JvKGFkZHJlc3MpCi0gICAgICAgIHN0b3JlcCAwLCBhZGRy
ZXNzCi0gICAgZW5kKQogICAgIGFkZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mbywgdDUsIHQyICMgQ2FsbExpbmtJbmZvKiBpbiB0MgotICAgIGxvYWRwICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9vd25lclt0Ml0sIHQzCisgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX3Nsb3dQYXRoQ2Fs
bERlc3RpbmF0aW9uW3Q1XSwgdDUKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDMKICAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDMKLSAgICBpZiBYODZfNjRfV0lO
IG9yIENfTE9PUF9XSU4KLSAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIgSlNDOjpv
ZmZzZXRPZkpTQ0NvbmZpZ0RlZmF1bHRDYWxsVGh1bmssIHQ1Ci0gICAgICAgIGxvYWRwIFt0NV0s
IHQ1Ci0gICAgZWxzZQotICAgICAgICBsZWFwIF9nX2NvbmZpZywgdDUKLSAgICAgICAgbG9hZHAg
SlNDQ29uZmlnT2Zmc2V0ICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdEZWZhdWx0
Q2FsbFRodW5rW3Q1XSwgdDUKLSAgICBlbmQKLSAgICBqbXAgLmRpc3BhdGNoCisgICAgcHJlcGFy
ZVNsb3dDYWxsKCkKKyAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oJW9wY29kZU5hbWUlX3Nsb3csIHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2hBZnRlckNhbGwsIHZhbHVlUHJvZmlsZU5hbWUsIGRz
dFZpcnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHQ1LCBKU0VudHJ5UHRyVGFnKQogZW5kCiAgICAg
ICAgIAogbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgcHJlcGFy
ZUNhbGwsIGludm9rZUNhbGwsIHByZXBhcmVTbG93Q2FsbCwgcHJvbG9ndWUsIGRpc3BhdGNoQWZ0
ZXJDYWxsKQpAQCAtMjM5MCw3ICsyMzgxLDcgQEAgbWFjcm8gZG9DYWxsVmFyYXJncyhvcGNvZGVO
YW1lLCBzaXplLCBnZXQsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwgZHN0VmkKICAg
ICAgICAgICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BDYWxsU2xvdwogICAgICAgICAgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yQ29k
ZUJsb2NrW3Q1XSwgdDMKICAgICAgICAgICAgIGJ0cHogdDMsIChjb25zdGV4cHIgQ2FsbExpbmtJ
bmZvOjpwb2x5bW9ycGhpY0NhbGxlZU1hc2spLCAubm90UG9seW1vcnBoaWMKLSAgICAgICAgICAg
IHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQ2LCBtYWNybyhhZGRyZXNzKQorICAgICAgICAgICAg
cHJlcGFyZUNhbGwodDIsIHQzLCB0NCwgdDEsIG1hY3JvKGFkZHJlc3MpCiAgICAgICAgICAgICAg
ICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby51LmRhdGFJ
Qy5tX2NvZGVCbG9ja1t0NV0sIHQyCiAgICAgICAgICAgICAgICAgc3RvcmVwIHQyLCBhZGRyZXNz
CiAgICAgICAgICAgICBlbmQpCkBAIC0yNDAxLDM0ICsyMzkyLDI1IEBAIG1hY3JvIGRvQ2FsbFZh
cmFyZ3Mob3Bjb2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5h
bWUsIGRzdFZpCiAKICAgICAgICAgLm5vdFBvbHltb3JwaGljOgogICAgICAgICAgICAgYnBuZXEg
dDAsIHQzLCAub3BDYWxsU2xvdwotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQzLCB0NCwg
dDYsIG1hY3JvKGFkZHJlc3MpCisgICAgICAgICAgICBwcmVwYXJlQ2FsbCh0MiwgdDMsIHQ0LCB0
MSwgbWFjcm8oYWRkcmVzcykKICAgICAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fY29kZUJsb2NrW3Q1XSwgdDIKICAg
ICAgICAgICAgICAgICBzdG9yZXAgdDIsIGFkZHJlc3MKICAgICAgICAgICAgIGVuZCkKIAogICAg
ICAgICAuZ29Qb2x5bW9ycGhpYzoKICAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25vbW9ycGhpY0NhbGxEZXN0aW5h
dGlvblt0NV0sIHQ1Ci0gICAgICAgIC5kaXNwYXRjaDoKICAgICAgICAgICAgIGludm9rZUNhbGwo
b3Bjb2RlTmFtZSwgc2l6ZSwgb3Bjb2RlU3RydWN0LCB2YWx1ZVByb2ZpbGVOYW1lLCBkc3RWaXJ0
dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCB0NSwgdDEsIEpTRW50cnlQdHJUYWcpCiAKICAgICAgICAg
Lm9wQ2FsbFNsb3c6CiAgICAgICAgICAgICAjIDY0Yml0OnQwIDMyYml0KHQwLHQxKSBpcyBjYWxs
ZWUKICAgICAgICAgICAgICMgdDIgaXMgQ2FsbExpbmtJbmZvKgogICAgICAgICAgICAgIyB0MyBp
cyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAotICAgICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQz
LCB0NCwgdDYsIG1hY3JvKGFkZHJlc3MpCi0gICAgICAgICAgICAgICAgc3RvcmVwIDAsIGFkZHJl
c3MKLSAgICAgICAgICAgIGVuZCkKICAgICAgICAgICAgIGFkZHAgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mbywgdDUsIHQyICMgQ2FsbExpbmtJbmZvKiBpbiB0MgotICAg
ICAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X293bmVyW3QyXSwgdDMKKyAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9zbG93UGF0aENhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CisgICAg
ICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDMKICAgICAgICAgICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MwotICAgICAgICAgICAgaWYgWDg2XzY0X1dJTiBv
ciBDX0xPT1BfV0lOCi0gICAgICAgICAgICAgICAgbGVhcCBKU0NDb25maWcgKyBjb25zdGV4cHIg
SlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0RlZmF1bHRDYWxsVGh1bmssIHQ1Ci0gICAgICAgICAgICAg
ICAgbG9hZHAgW3Q1XSwgdDUKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsZWFw
IF9nX2NvbmZpZywgdDUKLSAgICAgICAgICAgICAgICBsb2FkcCBKU0NDb25maWdPZmZzZXQgKyBj
b25zdGV4cHIgSlNDOjpvZmZzZXRPZkpTQ0NvbmZpZ0RlZmF1bHRDYWxsVGh1bmtbdDVdLCB0NQot
ICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBqbXAgLmRpc3BhdGNoCisgICAgICAgICAgICBw
cmVwYXJlU2xvd0NhbGwoKQorICAgICAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVO
YW1lJV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoQWZ0ZXJDYWxsLCB2YWx1ZVBy
b2ZpbGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCB0NSwgSlNFbnRyeVB0clRh
ZykKICAgICAgICAgLmRvbnRVcGRhdGVTUDoKICAgICAgICAgICAgIGptcCBfbGxpbnRfdGhyb3df
ZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZQogICAgICAgICBlbmQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGM5
YzY5ZjAyYzhlOS4uMDNiY2ZlMGRlZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjU4NiwyNyArMjU4Niwx
OCBAQCBtYWNybyBjYWxsSGVscGVyKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2hB
ZnRlckNhbGwsIHZhbHVlUHJvZmlsZU5hbWUsCiAKIC5nb1BvbHltb3JwaGljOgogICAgIGxvYWRw
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8udS5kYXRhSUMubV9tb25v
bW9ycGhpY0NhbGxEZXN0aW5hdGlvblt0NV0sIHQ1Ci0uZGlzcGF0Y2g6CiAgICAgaW52b2tlQ2Fs
bChvcGNvZGVOYW1lLCBzaXplLCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
cnR1YWxSZWdpc3RlciwgZGlzcGF0Y2gsIHQ1LCB0MSwgSlNFbnRyeVB0clRhZykKIAogLm9wQ2Fs
bFNsb3c6CiAgICAgIyA2NGJpdDp0MCAzMmJpdCh0MCx0MSkgaXMgY2FsbGVlCiAgICAgIyB0MiBp
cyBDYWxsTGlua0luZm8qCiAgICAgIyB0MyBpcyBjYWxsZXIncyBKU0dsb2JhbE9iamVjdAotICAg
IHByZXBhcmVDYWxsKHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQotICAgICAgICBzdG9y
ZXAgMCwgYWRkcmVzcwotICAgIGVuZCkKICAgICBhZGRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8sIHQ1LCB0MiAjIENhbGxMaW5rSW5mbyogaW4gdDIKLSAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fb3duZXJbdDJdLCB0
MworICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9z
bG93UGF0aENhbGxEZXN0aW5hdGlvblt0NV0sIHQ1CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQzCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0M10sIHQzCi0gICAgaWYg
WDg2XzY0X1dJTiBvciBDX0xPT1BfV0lOCi0gICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3Rl
eHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdEZWZhdWx0Q2FsbFRodW5rLCB0NQotICAgICAgICBs
b2FkcCBbdDVdLCB0NQotICAgIGVsc2UKLSAgICAgICAgbGVhcCBfZ19jb25maWcsIHQ1Ci0gICAg
ICAgIGxvYWRwIEpTQ0NvbmZpZ09mZnNldCArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29u
ZmlnRGVmYXVsdENhbGxUaHVua1t0NV0sIHQ1Ci0gICAgZW5kCi0gICAgam1wIC5kaXNwYXRjaAor
ICAgIHByZXBhcmVTbG93Q2FsbCgpCisgICAgY2FsbFRhcmdldEZ1bmN0aW9uKCVvcGNvZGVOYW1l
JV9zbG93LCBzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoQWZ0ZXJDYWxsLCB2YWx1ZVByb2Zp
bGVOYW1lLCBkc3RWaXJ0dWFsUmVnaXN0ZXIsIGRpc3BhdGNoLCB0NSwgSlNFbnRyeVB0clRhZykK
IGVuZAogCiBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBwcmVw
YXJlQ2FsbCwgaW52b2tlQ2FsbCwgcHJlcGFyZVNsb3dDYWxsLCBwcm9sb2d1ZSwgZGlzcGF0Y2hB
ZnRlckNhbGwpCkBAIC0yNjgwLDI3ICsyNjcxLDE4IEBAIG1hY3JvIGRvQ2FsbFZhcmFyZ3Mob3Bj
b2RlTmFtZSwgc2l6ZSwgZ2V0LCBvcGNvZGVTdHJ1Y3QsIHZhbHVlUHJvZmlsZU5hbWUsIGRzdFZp
CiAKICAgICAgICAgLmdvUG9seW1vcnBoaWM6CiAgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3Ry
dWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLnUuZGF0YUlDLm1fbW9ub21vcnBoaWNDYWxs
RGVzdGluYXRpb25bdDVdLCB0NQotICAgICAgICAuZGlzcGF0Y2g6CiAgICAgICAgICAgICBpbnZv
a2VDYWxsKG9wY29kZU5hbWUsIHNpemUsIG9wY29kZVN0cnVjdCwgdmFsdWVQcm9maWxlTmFtZSwg
ZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgdDUsIHQxLCBKU0VudHJ5UHRyVGFnKQogCiAg
ICAgICAgIC5vcENhbGxTbG93OgogICAgICAgICAgICAgIyA2NGJpdDp0MCAzMmJpdCh0MCx0MSkg
aXMgY2FsbGVlCiAgICAgICAgICAgICAjIHQyIGlzIENhbGxMaW5rSW5mbyoKICAgICAgICAgICAg
ICMgdDMgaXMgY2FsbGVyJ3MgSlNHbG9iYWxPYmplY3QKLSAgICAgICAgICAgIHByZXBhcmVDYWxs
KHQyLCB0MywgdDQsIHQxLCBtYWNybyhhZGRyZXNzKQotICAgICAgICAgICAgICAgIHN0b3JlcCAw
LCBhZGRyZXNzCi0gICAgICAgICAgICBlbmQpCiAgICAgICAgICAgICBhZGRwICVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8sIHQ1LCB0MiAjIENhbGxMaW5rSW5mbyogaW4g
dDIKLSAgICAgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8ubV9vd25lclt0Ml0sIHQzCisgICAgICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fc2xvd1BhdGhDYWxsRGVzdGluYXRpb25bdDVdLCB0
NQorICAgICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQzCiAgICAgICAgICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDMKLSAgICAgICAgICAgIGlmIFg4Nl82
NF9XSU4gb3IgQ19MT09QX1dJTgotICAgICAgICAgICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29u
c3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdEZWZhdWx0Q2FsbFRodW5rLCB0NQotICAgICAg
ICAgICAgICAgIGxvYWRwIFt0NV0sIHQ1Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbGVhcCBfZ19jb25maWcsIHQ1Ci0gICAgICAgICAgICAgICAgbG9hZHAgSlNDQ29uZmlnT2Zm
c2V0ICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdEZWZhdWx0Q2FsbFRodW5rW3Q1
XSwgdDUKLSAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgam1wIC5kaXNwYXRjaAorICAgICAg
ICAgICAgcHJlcGFyZVNsb3dDYWxsKCkKKyAgICAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbigl
b3Bjb2RlTmFtZSVfc2xvdywgc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaEFmdGVyQ2FsbCwg
dmFsdWVQcm9maWxlTmFtZSwgZHN0VmlydHVhbFJlZ2lzdGVyLCBkaXNwYXRjaCwgdDUsIEpTRW50
cnlQdHJUYWcpCiAgICAgICAgIC5kb250VXBkYXRlU1A6CiAgICAgICAgICAgICBqbXAgX2xsaW50
X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUKICAgICAgICAgZW5kKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgppbmRleCA3NWFjYjdiNGRmYTQuLmIwYzRh
ZmJmYzdjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xv
b3AucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKQEAg
LTg1LDEwICs4NSw2IEBAIGNsYXNzIFJlZ2lzdGVySUQKICAgICAgICAgICAgICJwYyIKICAgICAg
ICAgd2hlbiAidDUiCiAgICAgICAgICAgICAidDUiCi0gICAgICAgIHdoZW4gInQ2IgotICAgICAg
ICAgICAgInQ2IgotICAgICAgICB3aGVuICJ0NyIKLSAgICAgICAgICAgICJ0NyIKICAgICAgICAg
d2hlbiAiY3NyMCIKICAgICAgICAgICAgICJwY0Jhc2UiCiAgICAgICAgIHdoZW4gImNzcjEiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5jcHAKaW5k
ZXggNWVhOTFjZDcwYzU3Li44Y2Q3MTU4MDEyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FnZ3JlZ2F0ZUVycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BZ2dyZWdhdGVFcnJvci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgRXJyb3JJ
bnN0YW5jZSogY3JlYXRlQWdncmVnYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVk0mIHZtLCBTdHJ1Y3QKICAgICBhdXRvKiBhcnJheSA9IGNvbnN0cnVjdEFycmF5KGdsb2Jh
bE9iamVjdCwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBl
cnJvcnNMaXN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAot
ICAgIGF1dG8qIGVycm9yID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIG1l
c3NhZ2VTdHJpbmcsIGNhdXNlLCBhcHBlbmRlciwgdHlwZSwgRXJyb3JUeXBlOjpBZ2dyZWdhdGVF
cnJvciwgdXNlQ3VycmVudEZyYW1lKTsKKyAgICBhdXRvKiBlcnJvciA9IEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2VTdHJpbmcsIGNhdXNl
LCBhcHBlbmRlciwgdHlwZSwgRXJyb3JUeXBlOjpBZ2dyZWdhdGVFcnJvciwgdXNlQ3VycmVudEZy
YW1lKTsKICAgICBlcnJvci0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lcnJvcnMs
IGFycmF5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAgICAgcmV0dXJuIGVycm9yOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJpdHlDaGVja01vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyaXR5Q2hlY2tNb2RlLmgKaW5kZXggYjg0ZGU5ZTU0NTA5Li5kYWU3MTlhZDI3YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyaXR5Q2hlY2tNb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJpdHlDaGVja01vZGUuaApAQCAt
MjcsNyArMjcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBBcml0eUNoZWNrTW9kZSA6
IHVpbnQ4X3QgeworZW51bSBBcml0eUNoZWNrTW9kZSB7CiAgICAgQXJpdHlDaGVja05vdFJlcXVp
cmVkLAogICAgIE11c3RDaGVja0FyaXR5CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuY3BwCmluZGV4IDc1YWQwMjdiNmJkZi4uMjUwNzdiYjU1YmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0zNiwzNyArMzYsMzcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBKU09iamVjdCogY3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlciBh
cHBlbmRlcikKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4g
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5l
cnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIGFwcGVuZGVyLCBUeXBlTm90aGlu
ZywgRXJyb3JUeXBlOjpFcnJvciwgdHJ1ZSk7CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5lcnJv
clN0cnVjdHVyZSgpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIGFwcGVuZGVyLCBUeXBlTm90aGluZywg
RXJyb3JUeXBlOjpFcnJvciwgdHJ1ZSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVFdmFsRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFcnJv
ckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlciBhcHBlbmRlcikKIHsKICAgICBBU1NFUlQoIW1lc3Nh
Z2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9i
amVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OkV2YWxF
cnJvciksIG1lc3NhZ2UsIEpTVmFsdWUoKSwgYXBwZW5kZXIsIFR5cGVOb3RoaW5nLCBFcnJvclR5
cGU6OkV2YWxFcnJvciwgdHJ1ZSk7CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVj
dHVyZShFcnJvclR5cGU6OkV2YWxFcnJvciksIG1lc3NhZ2UsIEpTVmFsdWUoKSwgYXBwZW5kZXIs
IFR5cGVOb3RoaW5nLCBFcnJvclR5cGU6OkV2YWxFcnJvciwgdHJ1ZSk7CiB9CiAKIEpTT2JqZWN0
KiBjcmVhdGVSYW5nZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5kZXIgYXBwZW5kZXIpCiB7
CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFu
Y2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1
cmUoRXJyb3JUeXBlOjpSYW5nZUVycm9yKSwgbWVzc2FnZSwgSlNWYWx1ZSgpLCBhcHBlbmRlciwg
VHlwZU5vdGhpbmcsIEVycm9yVHlwZTo6UmFuZ2VFcnJvciwgdHJ1ZSk7CisgICAgcmV0dXJuIEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xv
YmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OlJhbmdlRXJyb3IpLCBtZXNzYWdl
LCBKU1ZhbHVlKCksIGFwcGVuZGVyLCBUeXBlTm90aGluZywgRXJyb3JUeXBlOjpSYW5nZUVycm9y
LCB0cnVlKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlZmVyZW5jZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXJyb3JJbnN0YW5jZTo6
U291cmNlQXBwZW5kZXIgYXBwZW5kZXIpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHko
KSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCks
IGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpSZWZlcmVuY2VFcnJvciks
IG1lc3NhZ2UsIEpTVmFsdWUoKSwgYXBwZW5kZXIsIFR5cGVOb3RoaW5nLCBFcnJvclR5cGU6OlJl
ZmVyZW5jZUVycm9yLCB0cnVlKTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0
dXJlKEVycm9yVHlwZTo6UmVmZXJlbmNlRXJyb3IpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIGFwcGVu
ZGVyLCBUeXBlTm90aGluZywgRXJyb3JUeXBlOjpSZWZlcmVuY2VFcnJvciwgdHJ1ZSk7CiB9CiAK
IEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFw
cGVuZGVyKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBF
cnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPmVy
cm9yU3RydWN0dXJlKEVycm9yVHlwZTo6U3ludGF4RXJyb3IpLCBtZXNzYWdlLCBKU1ZhbHVlKCks
IGFwcGVuZGVyLCBUeXBlTm90aGluZywgRXJyb3JUeXBlOjpTeW50YXhFcnJvciwgdHJ1ZSk7Cisg
ICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OlN5bnRheEVy
cm9yKSwgbWVzc2FnZSwgSlNWYWx1ZSgpLCBhcHBlbmRlciwgVHlwZU5vdGhpbmcsIEVycm9yVHlw
ZTo6U3ludGF4RXJyb3IsIHRydWUpOwogfQogCiBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXJyb3JJ
bnN0YW5jZTo6U291cmNlQXBwZW5kZXIgYXBwZW5kZXIsIFJ1bnRpbWVUeXBlIHR5cGUpCiB7CiAg
ICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUo
RXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIGFwcGVuZGVyLCB0eXBl
LCBFcnJvclR5cGU6OlR5cGVFcnJvciwgdHJ1ZSk7CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5l
cnJvclN0cnVjdHVyZShFcnJvclR5cGU6OlR5cGVFcnJvciksIG1lc3NhZ2UsIEpTVmFsdWUoKSwg
YXBwZW5kZXIsIHR5cGUsIEVycm9yVHlwZTo6VHlwZUVycm9yLCB0cnVlKTsKIH0KIAogSlNPYmpl
Y3QqIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyKQpAQCAtNzcsNyAr
NzcsNyBAQCBKU09iamVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgRXJyb3JJbnN0YQogSlNPYmplY3QqIGNyZWF0ZVVSSUVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXJy
b3JJbnN0YW5jZTo6U291cmNlQXBwZW5kZXIgYXBwZW5kZXIpCiB7CiAgICAgQVNTRVJUKCFtZXNz
YWdlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxP
YmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpVUklF
cnJvciksIG1lc3NhZ2UsIEpTVmFsdWUoKSwgYXBwZW5kZXIsIFR5cGVOb3RoaW5nLCBFcnJvclR5
cGU6OlVSSUVycm9yLCB0cnVlKTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0
dXJlKEVycm9yVHlwZTo6VVJJRXJyb3IpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIGFwcGVuZGVyLCBU
eXBlTm90aGluZywgRXJyb3JUeXBlOjpVUklFcnJvciwgdHJ1ZSk7CiB9CiAKIEpTT2JqZWN0KiBj
cmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFcnJvclR5cGUgZXJyb3JU
eXBlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0xMTQsNyArMTE0LDcgQEAgSlNPYmplY3Qq
IGNyZWF0ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVycm9yVHlwZVdpdGhF
eHRlbnNpb24gZXJyb3IKIHN0YXRpYyBKU09iamVjdCogY3JlYXRlR2V0dGVyVHlwZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAg
ICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICBhdXRvKiBlcnJvciA9IEVycm9ySW5z
dGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1
Y3R1cmUoRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIG51bGxwdHIs
IFR5cGVOb3RoaW5nLCBFcnJvclR5cGU6OlR5cGVFcnJvcik7CisgICAgYXV0byogZXJyb3IgPSBF
cnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPnZtKCksIGds
b2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBtZXNzYWdl
LCBKU1ZhbHVlKCksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBFcnJvclR5cGU6OlR5cGVFcnJvcik7
CiAgICAgZXJyb3ItPnNldE5hdGl2ZUdldHRlclR5cGVFcnJvcigpOwogICAgIHJldHVybiBlcnJv
cjsKIH0KQEAgLTE2MCw3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgQnl0ZWNvZGVJ
bmRleCBtX2J5dGVjb2RlSW5kZXggeyAwIH07CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PFN0YWNrRnJhbWU+PiBnZXRTdGFja1RyYWNlKFZNJiB2bSwgSlNPYmplY3QqIG9iaiwgYm9vbCB1
c2VDdXJyZW50RnJhbWUsIEpTQ2VsbCogb3duZXJPZkNhbGxMaW5rSW5mbywgQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8pCitzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBnZXRT
dGFja1RyYWNlKEpTR2xvYmFsT2JqZWN0KiwgVk0mIHZtLCBKU09iamVjdCogb2JqLCBib29sIHVz
ZUN1cnJlbnRGcmFtZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gb2Jq
LT5nbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+c3RhY2tUcmFjZUxpbWl0
KCkpCkBAIC0xNjgsMTggKzE2OCwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJh
bWU+PiBnZXRTdGFja1RyYWNlKFZNJiB2bSwgSlNPYmplY3QqIG9iaiwgYm9vbCB1cwogCiAgICAg
c2l6ZV90IGZyYW1lc1RvU2tpcCA9IHVzZUN1cnJlbnRGcmFtZSA/IDAgOiAxOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFtZT4+IHN0YWNrVHJhY2UgPSBtYWtlVW5pcXVlPFZl
Y3RvcjxTdGFja0ZyYW1lPj4oKTsKLSAgICB2bS5pbnRlcnByZXRlci5nZXRTdGFja1RyYWNlKG9i
aiwgKnN0YWNrVHJhY2UsIGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2JqZWN0LT5zdGFja1RyYWNlTGlt
aXQoKS52YWx1ZV9vcigwKSwgbnVsbHB0ciwgb3duZXJPZkNhbGxMaW5rSW5mbywgY2FsbExpbmtJ
bmZvKTsKKyAgICB2bS5pbnRlcnByZXRlci5nZXRTdGFja1RyYWNlKG9iaiwgKnN0YWNrVHJhY2Us
IGZyYW1lc1RvU2tpcCwgZ2xvYmFsT2JqZWN0LT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZV9vcigw
KSk7CiAgICAgcmV0dXJuIHN0YWNrVHJhY2U7CiB9CiAKIHN0ZDo6dHVwbGU8Q29kZUJsb2NrKiwg
Qnl0ZWNvZGVJbmRleD4gZ2V0Qnl0ZWNvZGVJbmRleChWTSYgdm0sIENhbGxGcmFtZSogc3RhcnRD
YWxsRnJhbWUpCiB7Ci0gICAgaWYgKHN0YXJ0Q2FsbEZyYW1lICYmIHZtLnRvcENhbGxGcmFtZSA9
PSBzdGFydENhbGxGcmFtZSAmJiBzdGFydENhbGxGcmFtZS0+aXNQYXJ0aWFsbHlJbml0aWFsaXpl
ZEZyYW1lKCkpIHsKLSAgICAgICAgYXV0byogZW50cnlGcmFtZSA9IHZtLnRvcEVudHJ5RnJhbWU7
Ci0gICAgICAgIGF1dG8qIGNhbGxlckZyYW1lID0gc3RhcnRDYWxsRnJhbWUtPmNhbGxlckZyYW1l
KGVudHJ5RnJhbWUpOwotICAgICAgICBpZiAoY2FsbGVyRnJhbWUpCi0gICAgICAgICAgICBzdGFy
dENhbGxGcmFtZSA9IGNhbGxlckZyYW1lOwotICAgIH0KICAgICBGaW5kRmlyc3RDYWxsZXJGcmFt
ZVdpdGhDb2RlYmxvY2tGdW5jdG9yIGZ1bmN0b3Ioc3RhcnRDYWxsRnJhbWUpOwogICAgIFN0YWNr
VmlzaXRvcjo6dmlzaXQodm0udG9wQ2FsbEZyYW1lLCB2bSwgZnVuY3Rvcik7CiAgICAgcmV0dXJu
IHsgZnVuY3Rvci5jb2RlQmxvY2soKSwgZnVuY3Rvci5ieXRlY29kZUluZGV4KCkgfTsKQEAgLTIz
MSw3ICsyMjUsNyBAQCBib29sIGFkZEVycm9ySW5mbyhWTSYgdm0sIFZlY3RvcjxTdGFja0ZyYW1l
Piogc3RhY2tUcmFjZSwgSlNPYmplY3QqIG9iaikKIHZvaWQgYWRkRXJyb3JJbmZvKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmosIGJvb2wgdXNlQ3VycmVudEZyYW1l
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gZ2V0U3RhY2tUcmFjZSh2bSwgb2Jq
LCB1c2VDdXJyZW50RnJhbWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RhY2tGcmFt
ZT4+IHN0YWNrVHJhY2UgPSBnZXRTdGFja1RyYWNlKGdsb2JhbE9iamVjdCwgdm0sIG9iaiwgdXNl
Q3VycmVudEZyYW1lKTsKICAgICBhZGRFcnJvckluZm8odm0sIHN0YWNrVHJhY2UuZ2V0KCksIG9i
aik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IDU5ZjllNzU0
MzQ5Yy4uYzNhMjFjYmYzMWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgK
QEAgLTY2LDcgKzY2LDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIGNyZWF0ZU91dE9m
TWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcKIEpTX0VYUE9SVF9QUklW
QVRFIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVjdCosIEVycm9yVHlwZSwgY29u
c3QgU3RyaW5nJik7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogY3JlYXRlRXJyb3IoSlNH
bG9iYWxPYmplY3QqLCBFcnJvclR5cGVXaXRoRXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmKTsKIAot
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdGFja0ZyYW1lPj4gZ2V0U3RhY2tUcmFjZShWTSYsIEpT
T2JqZWN0KiwgYm9vbCB1c2VDdXJyZW50RnJhbWUsIEpTQ2VsbCogb3duZXJPZkNhbGxMaW5rSW5m
byA9IG51bGxwdHIsIENhbGxMaW5rSW5mbyogPSBudWxscHRyKTsKK3N0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8U3RhY2tGcmFtZT4+IGdldFN0YWNrVHJhY2UoSlNHbG9iYWxPYmplY3QqLCBWTSYsIEpT
T2JqZWN0KiwgYm9vbCB1c2VDdXJyZW50RnJhbWUpOwogc3RkOjp0dXBsZTxDb2RlQmxvY2sqLCBC
eXRlY29kZUluZGV4PiBnZXRCeXRlY29kZUluZGV4KFZNJiwgQ2FsbEZyYW1lKik7CiBib29sIGdl
dExpbmVDb2x1bW5BbmRTb3VyY2UoVk0mLCBWZWN0b3I8U3RhY2tGcmFtZT4qIHN0YWNrVHJhY2Us
IExpbmVDb2x1bW4mLCBTdHJpbmcmIHNvdXJjZVVSTCk7CiBib29sIGFkZEVycm9ySW5mbyhWTSYs
IFZlY3RvcjxTdGFja0ZyYW1lPiosIEpTT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCmluZGV4IGMyOTMyNmMwMzIyNi4uNDFjYmMx
Njg1NDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvcklu
c3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3Rh
bmNlLmNwcApAQCAtNzAsMTEgKzcwLDE2IEBAIEVycm9ySW5zdGFuY2UqIEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIH0KIAotICAgIHJl
dHVybiBjcmVhdGUodm0sIHN0cnVjdHVyZSwgbWVzc2FnZVN0cmluZywgY2F1c2UsIGFwcGVuZGVy
LCB0eXBlLCBlcnJvclR5cGUsIHVzZUN1cnJlbnRGcmFtZSk7CisgICAgcmV0dXJuIGNyZWF0ZShn
bG9iYWxPYmplY3QsIHZtLCBzdHJ1Y3R1cmUsIG1lc3NhZ2VTdHJpbmcsIGNhdXNlLCBhcHBlbmRl
ciwgdHlwZSwgZXJyb3JUeXBlLCB1c2VDdXJyZW50RnJhbWUpOwogfQogCi1TdHJpbmcgYXBwZW5k
U291cmNlVG9FcnJvck1lc3NhZ2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBSdW50aW1lVHlwZSB0eXBlLCBF
cnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlciBhcHBlbmRlcikKK3N0YXRpYyBTdHJpbmcgYXBw
ZW5kU291cmNlVG9FcnJvck1lc3NhZ2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEVycm9ySW5zdGFu
Y2UqIGV4Y2VwdGlvbiwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CisgICAgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5kZXIgYXBwZW5kZXIg
PSBleGNlcHRpb24tPnNvdXJjZUFwcGVuZGVyKCk7CisgICAgZXhjZXB0aW9uLT5jbGVhclNvdXJj
ZUFwcGVuZGVyKCk7CisgICAgUnVudGltZVR5cGUgdHlwZSA9IGV4Y2VwdGlvbi0+cnVudGltZVR5
cGVGb3JDYXVzZSgpOworICAgIGV4Y2VwdGlvbi0+Y2xlYXJSdW50aW1lVHlwZUZvckNhdXNlKCk7
CisKICAgICBpZiAoIWNvZGVCbG9jay0+aGFzRXhwcmVzc2lvbkluZm8oKSB8fCBtZXNzYWdlLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gbWVzc2FnZTsKICAgICAKQEAgLTExMiw3ICsxMTcsNyBA
QCBTdHJpbmcgYXBwZW5kU291cmNlVG9FcnJvck1lc3NhZ2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbgogICAgIHJldHVybiBhcHBlbmRlcihtZXNzYWdlLCBj
b2RlQmxvY2stPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKHN0YXJ0LCBzdG9wKSwgdHlw
ZSwgRXJyb3JJbnN0YW5jZTo6Rm91bmRBcHByb3hpbWF0ZVNvdXJjZSk7CiB9CiAKLXZvaWQgRXJy
b3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IEpTVmFsdWUgY2F1c2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyLCBSdW50aW1lVHlwZSB0eXBl
LCBib29sIHVzZUN1cnJlbnRGcmFtZSkKK3ZvaWQgRXJyb3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIEpTVmFsdWUgY2F1c2UsIFNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyLCBSdW50aW1lVHlw
ZSB0eXBlLCBib29sIHVzZUN1cnJlbnRGcmFtZSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwpAQCAtMTIwLDcgKzEyNSw3IEBA
IHZvaWQgRXJyb3JJbnN0YW5jZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIEpTVmFsdWUgY2F1c2UsCiAgICAgbV9zb3VyY2VBcHBlbmRlciA9IGFwcGVuZGVy
OwogICAgIG1fcnVudGltZVR5cGVGb3JDYXVzZSA9IHR5cGU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPFN0YWNrRnJhbWU+PiBzdGFja1RyYWNlID0gZ2V0U3RhY2tUcmFjZSh2bSwgdGhp
cywgdXNlQ3VycmVudEZyYW1lKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0YWNrRnJh
bWU+PiBzdGFja1RyYWNlID0gZ2V0U3RhY2tUcmFjZShnbG9iYWxPYmplY3QsIHZtLCB0aGlzLCB1
c2VDdXJyZW50RnJhbWUpOwogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IGNlbGxMb2Nr
KCkgfTsKICAgICAgICAgbV9zdGFja1RyYWNlID0gV1RGTW92ZShzdGFja1RyYWNlKTsKQEAgLTEz
MCwxMyArMTM1LDggQEAgdm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgSlNWYWx1ZSBjYXVzZSwKICAgICBTdHJpbmcgbWVzc2Fn
ZVdpdGhTb3VyY2UgPSBtZXNzYWdlOwogICAgIGlmIChtX3N0YWNrVHJhY2UgJiYgIW1fc3RhY2tU
cmFjZS0+aXNFbXB0eSgpICYmIGhhc1NvdXJjZUFwcGVuZGVyKCkpIHsKICAgICAgICAgYXV0byBb
Y29kZUJsb2NrLCBieXRlY29kZUluZGV4XSA9IGdldEJ5dGVjb2RlSW5kZXgodm0sIHZtLnRvcENh
bGxGcmFtZSk7Ci0gICAgICAgIGlmIChjb2RlQmxvY2spIHsKLSAgICAgICAgICAgIEVycm9ySW5z
dGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyID0gc291cmNlQXBwZW5kZXIoKTsKLSAgICAg
ICAgICAgIGNsZWFyU291cmNlQXBwZW5kZXIoKTsKLSAgICAgICAgICAgIFJ1bnRpbWVUeXBlIHR5
cGUgPSBydW50aW1lVHlwZUZvckNhdXNlKCk7Ci0gICAgICAgICAgICBjbGVhclJ1bnRpbWVUeXBl
Rm9yQ2F1c2UoKTsKLSAgICAgICAgICAgIG1lc3NhZ2VXaXRoU291cmNlID0gYXBwZW5kU291cmNl
VG9FcnJvck1lc3NhZ2UoY29kZUJsb2NrLCBieXRlY29kZUluZGV4LCBtZXNzYWdlLCB0eXBlLCBh
cHBlbmRlcik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAg
IG1lc3NhZ2VXaXRoU291cmNlID0gYXBwZW5kU291cmNlVG9FcnJvck1lc3NhZ2UoY29kZUJsb2Nr
LCB0aGlzLCBieXRlY29kZUluZGV4LCBtZXNzYWdlKTsKICAgICB9CiAKICAgICBpZiAoIW1lc3Nh
Z2VXaXRoU291cmNlLmlzTnVsbCgpKQpAQCAtMTQ2LDI0ICsxNDYsNiBAQCB2b2lkIEVycm9ySW5z
dGFuY2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU1Zh
bHVlIGNhdXNlLAogICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNhdXNl
LCBjYXVzZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogfQogCi12b2lkIEVycm9ySW5zdGFuY2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBKU1ZhbHVlIGNhdXNlLCBKU0NlbGwqIG93bmVyLCBDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbykKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxTdGFja0ZyYW1lPj4gc3RhY2tUcmFjZSA9IGdldFN0YWNrVHJhY2Uodm0sIHRoaXMsIC8qIHVz
ZUN1cnJlbnRGcmFtZSAqLyB0cnVlLCBvd25lciwgY2FsbExpbmtJbmZvKTsKLSAgICB7Ci0gICAg
ICAgIExvY2tlciBsb2NrZXIgeyBjZWxsTG9jaygpIH07Ci0gICAgICAgIG1fc3RhY2tUcmFjZSA9
IFdURk1vdmUoc3RhY2tUcmFjZSk7Ci0gICAgfQotICAgIHZtLndyaXRlQmFycmllcih0aGlzKTsK
LSAgICBpZiAoIW1lc3NhZ2UuaXNOdWxsKCkpCi0gICAgICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bWVzc2FnZSwganNTdHJpbmcodm0sIG1lc3NhZ2UpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0KLSAgICBpZiAoIWNhdXNl
LmlzRW1wdHkoKSkKLSAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYXVz
ZSwgY2F1c2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKLX0KLQogdm9pZCBFcnJvckluc3RhbmNlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0
cmluZyYmIG1lc3NhZ2UsIExpbmVDb2x1bW4gbGluZUNvbHVtbiwgU3RyaW5nJiYgc291cmNlVVJM
LCBTdHJpbmcmJiBzdGFja1N0cmluZykKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgKaW5kZXgg
ZjJlNmJlYTk1YzE1Li4yYzQ4M2M0MmJhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvckluc3RhbmNlLmgKQEAgLTI3LDggKzI3LDYgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWNsYXNzIENhbGxMaW5rSW5mbzsKLQogY2xhc3MgRXJyb3JJbnN0YW5jZSA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB1c2luZyBCYXNlID0gSlNOb25GaW5h
bE9iamVjdDsKQEAgLTU0LDE3ICs1MiwxMCBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKIAotICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU1ZhbHVlIGNhdXNlLCBTb3VyY2VB
cHBlbmRlciBhcHBlbmRlciA9IG51bGxwdHIsIFJ1bnRpbWVUeXBlIHR5cGUgPSBUeXBlTm90aGlu
ZywgRXJyb3JUeXBlIGVycm9yVHlwZSA9IEVycm9yVHlwZTo6RXJyb3IsIGJvb2wgdXNlQ3VycmVu
dEZyYW1lID0gdHJ1ZSkKKyAgICBzdGF0aWMgRXJyb3JJbnN0YW5jZSogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgSlNWYWx1ZSBjYXVzZSwgU291cmNlQXBwZW5kZXIgYXBwZW5kZXIg
PSBudWxscHRyLCBSdW50aW1lVHlwZSB0eXBlID0gVHlwZU5vdGhpbmcsIEVycm9yVHlwZSBlcnJv
clR5cGUgPSBFcnJvclR5cGU6OkVycm9yLCBib29sIHVzZUN1cnJlbnRGcmFtZSA9IHRydWUpCiAg
ICAgewogICAgICAgICBFcnJvckluc3RhbmNlKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KHZtKSkgRXJyb3JJbnN0YW5jZSh2bSwgc3RydWN0dXJl
LCBlcnJvclR5cGUpOwotICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIG1lc3Nh
Z2UsIGNhdXNlLCBhcHBlbmRlciwgdHlwZSwgdXNlQ3VycmVudEZyYW1lKTsKLSAgICAgICAgcmV0
dXJuIGluc3RhbmNlOwotICAgIH0KLQotICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU1Zh
bHVlIGNhdXNlLCBFcnJvclR5cGUgZXJyb3JUeXBlLCBKU0NlbGwqIG93bmVyLCBDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbykKLSAgICB7Ci0gICAgICAgIEVycm9ySW5zdGFuY2UqIGluc3RhbmNl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JJbnN0YW5jZT4odm0pKSBFcnJvcklu
c3RhbmNlKHZtLCBzdHJ1Y3R1cmUsIGVycm9yVHlwZSk7Ci0gICAgICAgIGluc3RhbmNlLT5maW5p
c2hDcmVhdGlvbih2bSwgbWVzc2FnZSwgY2F1c2UsIG93bmVyLCBjYWxsTGlua0luZm8pOworICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCwgbWVzc2FnZSwg
Y2F1c2UsIGFwcGVuZGVyLCB0eXBlLCB1c2VDdXJyZW50RnJhbWUpOwogICAgICAgICByZXR1cm4g
aW5zdGFuY2U7CiAgICAgfQogCkBAIC0xMDcsOCArOTgsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6
CiAgICAgZXhwbGljaXQgRXJyb3JJbnN0YW5jZShWTSYsIFN0cnVjdHVyZSosIEVycm9yVHlwZSk7
CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBK
U1ZhbHVlIGNhdXNlLCBTb3VyY2VBcHBlbmRlciA9IG51bGxwdHIsIFJ1bnRpbWVUeXBlID0gVHlw
ZU5vdGhpbmcsIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gdHJ1ZSk7Ci0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgSlNWYWx1ZSBjYXVzZSwgSlNDZWxs
KiBvd25lciwgQ2FsbExpbmtJbmZvKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU1ZhbHVlIGNhdXNlLCBTb3Vy
Y2VBcHBlbmRlciA9IG51bGxwdHIsIFJ1bnRpbWVUeXBlID0gVHlwZU5vdGhpbmcsIGJvb2wgdXNl
Q3VycmVudEZyYW1lID0gdHJ1ZSk7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFN0cmlu
ZyYmIG1lc3NhZ2UsIExpbmVDb2x1bW4sIFN0cmluZyYmIHNvdXJjZVVSTCwgU3RyaW5nJiYgc3Rh
Y2tTdHJpbmcpOwogCiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpAQCAtMTM1
LDYgKzEyNSw0IEBAIHByb3RlY3RlZDoKICNlbmRpZgogfTsKIAotU3RyaW5nIGFwcGVuZFNvdXJj
ZVRvRXJyb3JNZXNzYWdlKENvZGVCbG9jayosIEJ5dGVjb2RlSW5kZXgsIGNvbnN0IFN0cmluZyYs
IFJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlcik7Ci0KIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAppbmRleCA4YTg0NTk5YjUxNTIuLjVmZTEwMjAzODcyYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAg
LTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgU3RyaW5nVmlldyBmdW5jdGlvbkNhbGxCYXNlKFN0cmlu
Z1ZpZXcgc291cmNlVGV4dCkKICAgICByZXR1cm4gc291cmNlVGV4dC5sZWZ0KGlkeCArIDEpOwog
fQogCi1TdHJpbmcgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmln
aW5hbE1lc3NhZ2UsIFN0cmluZ1ZpZXcgc291cmNlVGV4dCwgUnVudGltZVR5cGUgdHlwZSwgRXJy
b3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQorc3Rh
dGljIFN0cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdp
bmFsTWVzc2FnZSwgU3RyaW5nVmlldyBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSB0eXBlLCBFcnJv
ckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2UpCiB7CiAg
ICAgQVNTRVJUKHR5cGUgIT0gVHlwZUZ1bmN0aW9uKTsKIApAQCAtMjU4LDIzICsyNTgsMTMgQEAg
c3RhdGljIFN0cmluZyBpbnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5n
JiBvcmlnaW5hbE1lc3NhZ2UsIFN0cmkKICAgICByZXR1cm4gIlRoZSB2YWx1ZSBvZiB0aGUgc3Vw
ZXJjbGFzcydzIHByb3RvdHlwZSBwcm9wZXJ0eSBpcyBub3QgYW4gb2JqZWN0IG9yIG51bGwuIl9z
OwogfQogCi1TdHJpbmcgY29uc3RydWN0RXJyb3JNZXNzYWdlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3QtPnZtKCkpOwotICAg
IFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKGdsb2Jh
bE9iamVjdCwgdmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0g
ICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uKQotICAgICAgICByZXR1cm4gdmFsdWVEZXNjcmlwdGlv
bjsKLSAgICByZXR1cm4gdHJ5TWFrZVN0cmluZyh2YWx1ZURlc2NyaXB0aW9uLCAnICcsIG1lc3Nh
Z2UpOwotfQotCiBKU09iamVjdCogY3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFcnJvckluc3RhbmNl
OjpTb3VyY2VBcHBlbmRlciBhcHBlbmRlcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCi0gICAg
YXV0byBlcnJvck1lc3NhZ2UgPSBjb25zdHJ1Y3RFcnJvck1lc3NhZ2UoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgbWVzc2FnZSk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpIHx8ICFl
cnJvck1lc3NhZ2UpKSB7CisgICAgU3RyaW5nIHZhbHVlRGVzY3JpcHRpb24gPSBlcnJvckRlc2Ny
aXB0aW9uRm9yVmFsdWUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgaWYgKHNjb3BlLmV4Y2Vw
dGlvbigpIHx8ICF2YWx1ZURlc2NyaXB0aW9uKSB7CiAgICAgICAgIC8vIFdoZW4gd2Ugc2VlIGFu
IGV4Y2VwdGlvbiwgd2UncmUgbm90IHJldHVybmluZyBpbW1lZGlhdGVseSBiZWNhdXNlCiAgICAg
ICAgIC8vIHdlJ3JlIGluIGEgQ2F0Y2hTY29wZSwgaS5lLiBubyBleGNlcHRpb25zIGFyZSB0aHJv
d24gcGFzdCB0aGlzIHNjb3BlLgogICAgICAgICAvLyBXZSdyZSB1c2luZyBhIENhdGNoU2NvcGUg
YmVjYXVzZSB0aGUgY29udHJhY3QgZm9yIGNyZWF0ZUVycm9yKCkgaXMKQEAgLTI4Miw5ICsyNzIs
MTMgQEAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYKICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0
KTsKICAgICB9CisgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IHRyeU1ha2VTdHJpbmcodmFsdWVE
ZXNjcmlwdGlvbiwgJyAnLCBtZXNzYWdlKTsKKyAgICBpZiAoIWVycm9yTWVzc2FnZSkKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KTsKICAgICBzY29w
ZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIEpTT2JqZWN0KiBleGNlcHRpb24gPSBjcmVhdGVU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJvck1lc3NhZ2UsIGFwcGVuZGVyLCBydW50aW1lVHlw
ZUZvclZhbHVlKHZhbHVlKSk7CiAgICAgQVNTRVJUKGV4Y2VwdGlvbi0+aXNFcnJvckluc3RhbmNl
KCkpOworCiAgICAgcmV0dXJuIGV4Y2VwdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCmluZGV4IGI5NGRkNGNiZTFhZS4uM2M3
YWUxMDUxNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5oCkBAIC0zOSw5ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogdHlwZWRlZiBK
U09iamVjdCogKCpFcnJvckZhY3RvcnkpKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiwg
RXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5kZXIpOwogCiBTdHJpbmcgZGVmYXVsdFNvdXJjZUFw
cGVuZGVyKGNvbnN0IFN0cmluZyYsIFN0cmluZ1ZpZXcsIFJ1bnRpbWVUeXBlLCBFcnJvckluc3Rh
bmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkKTsKLVN0cmluZyBub3RBRnVuY3Rpb25T
b3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmLCBTdHJpbmdWaWV3LCBSdW50aW1lVHlwZSwgRXJy
b3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCk7CiAKLVN0cmluZyBjb25z
dHJ1Y3RFcnJvck1lc3NhZ2UoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBjb25zdCBTdHJpbmcm
KTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUsIGNvbnN0IFN0cmluZyYsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVy
KTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
SlNHbG9iYWxPYmplY3QqKTsKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9y
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2F0ZS5oCmluZGV4IGZkNTBkNTA4YjlkMi4uZmY4ZjlmOTFlYjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCkBAIC01NCw2ICs1NCwxNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB2KG9wX2l0ZXJhdG9yX29wZW4sIEpTRW50cnlQdHJUYWcpIFwKICAgICB2KG9wX2Nh
bGxfdmFyYXJncywgSlNFbnRyeVB0clRhZykgXAogICAgIHYob3BfY29uc3RydWN0X3ZhcmFyZ3Ms
IEpTRW50cnlQdHJUYWcpIFwKKyAgICB2KG9wX2NhbGxfc2xvdywgSlNFbnRyeVB0clRhZykgXAor
ICAgIHYob3BfY2FsbF9pZ25vcmVfcmVzdWx0X3Nsb3csIEpTRW50cnlQdHJUYWcpIFwKKyAgICB2
KG9wX3RhaWxfY2FsbF9zbG93LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF9jb25zdHJ1Y3Rf
c2xvdywgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3BfaXRlcmF0b3JfbmV4dF9zbG93LCBKU0Vu
dHJ5UHRyVGFnKSBcCisgICAgdihvcF9pdGVyYXRvcl9vcGVuX3Nsb3csIEpTRW50cnlQdHJUYWcp
IFwKKyAgICB2KG9wX2NhbGxfdmFyYXJnc19zbG93LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihv
cF90YWlsX2NhbGxfdmFyYXJnc19zbG93LCBKU0VudHJ5UHRyVGFnKSBcCisgICAgdihvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHNfc2xvdywgSlNFbnRyeVB0clRhZykgXAorICAgIHYob3Bf
Y29uc3RydWN0X3ZhcmFyZ3Nfc2xvdywgSlNFbnRyeVB0clRhZykgXAogICAgIHYob3BfY2FsbF9k
aXJlY3RfZXZhbF9zbG93LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKIAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0NvbmZpZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKaW5k
ZXggNzA5NWNiMTAxYmRjLi5kZjYxMDJhMWZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0NvbmZpZy5oCkBAIC05MCw3ICs5MCw2IEBAIHN0cnVjdCBDb25maWcgewogICAg
IHVpbnRwdHJfdCBzdGFydE9mRml4ZWRXcml0YWJsZU1lbW9yeVBvb2w7CiAgICAgdWludHB0cl90
IHN0YXJ0T2ZTdHJ1Y3R1cmVIZWFwOwogICAgIHVpbnRwdHJfdCBzaXplT2ZTdHJ1Y3R1cmVIZWFw
OwotICAgIHZvaWQqIGRlZmF1bHRDYWxsVGh1bms7CiAKICNpZiBFTkFCTEUoU0VQQVJBVEVEX1dY
X0hFQVApCiAgICAgSklUV3JpdGVTZXBhcmF0ZUhlYXBzRnVuY3Rpb24gaml0V3JpdGVTZXBhcmF0
ZUhlYXBzOwpAQCAtMTM2LDcgKzEzNSw2IEBAIGV4dGVybiAiQyIgSlNfRVhQT1JUX1BSSVZBVEUg
V1RGOjpDb25maWcgZ193dGZDb25maWdGb3JMTEludDsKIGNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0
T2ZKU0NDb25maWdJbml0aWFsaXplSGFzQmVlbkNhbGxlZCA9IG9mZnNldG9mKEpTQzo6Q29uZmln
LCBpbml0aWFsaXplSGFzQmVlbkNhbGxlZCk7CiBjb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mSlND
Q29uZmlnR2F0ZU1hcCA9IG9mZnNldG9mKEpTQzo6Q29uZmlnLCBsbGludC5nYXRlTWFwKTsKIGNv
bnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZKU0NDb25maWdTdGFydE9mU3RydWN0dXJlSGVhcCA9IG9m
ZnNldG9mKEpTQzo6Q29uZmlnLCBzdGFydE9mU3RydWN0dXJlSGVhcCk7Ci1jb25zdGV4cHIgc2l6
ZV90IG9mZnNldE9mSlNDQ29uZmlnRGVmYXVsdENhbGxUaHVuayA9IG9mZnNldG9mKEpTQzo6Q29u
ZmlnLCBkZWZhdWx0Q2FsbFRodW5rKTsKIAogQUxXQVlTX0lOTElORSBQVVJFX0ZVTkNUSU9OIHVp
bnRwdHJfdCBzdGFydE9mU3RydWN0dXJlSGVhcCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAppbmRleCBlNmNlMGFhNjc3
MWUuLmMzYTUxMDk5YTFhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCkBAIC05NCw3ICs5NCw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjYWxsVGhyb3dFcnJvciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgZnJvbSBJQy4gQW5kIHdlIGRvIG5v
dCB3YW50IHRvIGluY2x1ZGUgdGhpcyBmcmFtZSBpbiBFcnJvcidzIHN0YWNrLgogICAgIGNvbnN0
ZXhwciBib29sIHVzZUN1cnJlbnRGcmFtZSA9IGZhbHNlOwotICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIEVycm9ySW5zdGFuY2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OlR5cGVFcnJvciksIFJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yLCBKU1ZhbHVlKCksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBFcnJvclR5cGU6OlR5
cGVFcnJvciwgdXNlQ3VycmVudEZyYW1lKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2Jh
bE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvciwgSlNWYWx1ZSgpLCBudWxscHRyLCBUeXBlTm90aGluZywgRXJyb3JU
eXBlOjpUeXBlRXJyb3IsIHVzZUN1cnJlbnRGcmFtZSkpOwogICAgIHJldHVybiB7IH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggNTY2MzYzYTRj
YTI3Li5iMzIwMzYwNGE5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwCkBAIC03MDMsMTEgKzcwMyw3IEBAIHZvaWQgT3B0aW9uczo6bm90aWZ5T3B0aW9uc0No
YW5nZWQoKQogICAgIC8vIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzOTcwNwogICAgIE9wdGlvbnM6
OnVzZUZUTEpJVCgpID0gZmFsc2U7CiAjZW5kaWYKLQotI2lmIENQVShBUk1fVEhVTUIyKQotICAg
IE9wdGlvbnM6OnVzZURGR0pJVCgpID0gZmFsc2U7Ci0jZW5kaWYKLQorICAgIAogI2lmICFDUFUo
WDg2XzY0KSAmJiAhQ1BVKEFSTTY0KQogICAgIE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRHQygpID0g
ZmFsc2U7CiAgICAgT3B0aW9uczo6Zm9yY2VVbmxpbmtlZERGRygpID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwCmluZGV4
IGI5ZmUzNWU0NjBlYi4uY2JkZmJmOWUwNDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZv
aWQgU2NyaXB0RXhlY3V0YWJsZTo6aW5zdGFsbENvZGUoVk0mIHZtLCBDb2RlQmxvY2sqIGdlbmVy
aWNDb2RlQmxvY2ssIENvZGVUeXBlCiAgICAgfQogCiAgICAgaWYgKG9sZENvZGVCbG9jaykKLSAg
ICAgICAgb2xkQ29kZUJsb2NrLT51bmxpbmtPclVwZ3JhZGVJbmNvbWluZ0NhbGxzKHZtLCBnZW5l
cmljQ29kZUJsb2NrKTsKKyAgICAgICAgb2xkQ29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxz
KCk7CiAKICAgICB2bS53cml0ZUJhcnJpZXIodGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IGQ4NjliMTc4OTBmMS4uMmUyYmY2MjMy
MTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApA
QCAtNDUsMTIgKzQ1LDYgQEAgU3RhY2tGcmFtZTo6U3RhY2tGcmFtZShWTSYgdm0sIEpTQ2VsbCog
b3duZXIsIEpTQ2VsbCogY2FsbGVlLCBDb2RlQmxvY2sqIGNvZGVCbG8KIHsKIH0KIAotU3RhY2tG
cmFtZTo6U3RhY2tGcmFtZShWTSYgdm0sIEpTQ2VsbCogb3duZXIsIENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCi0gICAgOiBtX2NvZGVCbG9jayh2bSwg
b3duZXIsIGNvZGVCbG9jaykKLSAgICAsIG1fYnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KQot
ewotfQotCiBTdGFja0ZyYW1lOjpTdGFja0ZyYW1lKFdhc206OkluZGV4T3JOYW1lIGluZGV4T3JO
YW1lKQogICAgIDogbV93YXNtRnVuY3Rpb25JbmRleE9yTmFtZShpbmRleE9yTmFtZSkKICAgICAs
IG1faXNXYXNtRnJhbWUodHJ1ZSkKQEAgLTEyMywxMyArMTE3LDYgQEAgU3RyaW5nIFN0YWNrRnJh
bWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIGNvbnN0CiAgICAgaWYgKG1fY2FsbGVlKSB7CiAgICAg
ICAgIGlmIChtX2NhbGxlZS0+aXNPYmplY3QoKSkKICAgICAgICAgICAgIG5hbWUgPSBnZXRDYWxj
dWxhdGVkRGlzcGxheU5hbWUodm0sIGpzQ2FzdDxKU09iamVjdCo+KG1fY2FsbGVlLmdldCgpKSku
aW1wbCgpOwotCi0gICAgICAgIHJldHVybiBuYW1lLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6
IG5hbWU7Ci0gICAgfQotCi0gICAgaWYgKG1fY29kZUJsb2NrKSB7Ci0gICAgICAgIGlmIChhdXRv
KiBleGVjdXRhYmxlID0ganNEeW5hbWljQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2NvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCkpKQotICAgICAgICAgICAgbmFtZSA9IGV4ZWN1dGFibGUt
PmVjbWFOYW1lKCkuaW1wbCgpOwogICAgIH0KIAogICAgIHJldHVybiBuYW1lLmlzTnVsbCgpID8g
ZW1wdHlTdHJpbmcoKSA6IG5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdGFja0ZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFj
a0ZyYW1lLmgKaW5kZXggMDUwOGVjOTBmODNhLi5iYzE3NzZlZDc0MDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmgKQEAgLTQzLDcgKzQzLDYgQEAgY2xhc3Mg
U3RhY2tGcmFtZSB7CiBwdWJsaWM6CiAgICAgU3RhY2tGcmFtZShWTSYsIEpTQ2VsbCogb3duZXIs
IEpTQ2VsbCogY2FsbGVlKTsKICAgICBTdGFja0ZyYW1lKFZNJiwgSlNDZWxsKiBvd25lciwgSlND
ZWxsKiBjYWxsZWUsIENvZGVCbG9jayosIEJ5dGVjb2RlSW5kZXgpOwotICAgIFN0YWNrRnJhbWUo
Vk0mLCBKU0NlbGwqIG93bmVyLCBDb2RlQmxvY2sqLCBCeXRlY29kZUluZGV4KTsKICAgICBTdGFj
a0ZyYW1lKFdhc206OkluZGV4T3JOYW1lKTsKICAgICBTdGFja0ZyYW1lKCkgPSBkZWZhdWx0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNmE4N2E2ZDk2ZjFmLi5lNTcw
YThkMGZlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTgwMiw2ICs4
MDIsMTUgQEAgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBWTTo6Z2V0Q1RJSW50ZXJuYWxGdW5jdGlv
blRyYW1wb2xpbmVGb3IoQ29kZVNwZWNpYWxpemF0aW8KICAgICByZXR1cm4gTExJbnQ6OmdldENv
ZGVQdHI8SlNFbnRyeVB0clRhZz4obGxpbnRfaW50ZXJuYWxfZnVuY3Rpb25fY29uc3RydWN0X3Ry
YW1wb2xpbmUpOwogfQogCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gVk06
OmdldENUSUxpbmtDYWxsKCkKK3sKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChPcHRpb25zOjp1
c2VKSVQoKSkKKyAgICAgICAgcmV0dXJuIGdldENUSVN0dWIoQ29tbW9uSklUVGh1bmtJRDo6TGlu
a0NhbGwpLnRlbXBsYXRlIHJldGFnZ2VkPEpTRW50cnlQdHJUYWc+KCk7CisjZW5kaWYKKyAgICBy
ZXR1cm4gTExJbnQ6OmdldENvZGVSZWY8SlNFbnRyeVB0clRhZz4obGxpbnRfbGlua19jYWxsX3Ry
YW1wb2xpbmUpOworfQorCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gVk06
OmdldENUSVRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aCgpCiB7CiAjaWYgRU5BQkxFKEpJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDhjMTdjNjhlMDdjYS4uMWEwYTQ5
NDA4ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY4Nyw2ICs2ODcsNyBA
QCBwdWJsaWM6CiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZ2V0UmVtb3RlRnVuY3Rpb24oYm9vbCBp
c0pTRnVuY3Rpb24pOwogCiAgICAgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBnZXRDVElJbnRlcm5h
bEZ1bmN0aW9uVHJhbXBvbGluZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0Q1RJTGlua0NhbGwoKTsKICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz4gZ2V0Q1RJVGhyb3dFeGNlcHRpb25G
cm9tQ2FsbFNsb3dQYXRoKCk7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0
aW5lUHRyVGFnPiBnZXRDVElWaXJ0dWFsQ2FsbChDYWxsTW9kZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJv
ci5jcHAKaW5kZXggYTEwYTMzYmU0YzQwLi5jN2Y5ZWE4NDhjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb21waWxlRXJy
b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogSlNPYmplY3QqIGNyZWF0
ZUpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Vk0mIHZtLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlz
RW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT53ZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlLCBKU1ZhbHVl
KCksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcsIEVycm9yVHlwZTo6RXJyb3Is
IHRydWUpOworICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2
bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseUNvbXBpbGVFcnJvclN0cnVjdHVyZSgpLCBtZXNz
YWdlLCBKU1ZhbHVlKCksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcsIEVycm9y
VHlwZTo6RXJyb3IsIHRydWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUxpbmtFcnJvci5j
cHAKaW5kZXggZGI3MjcxMzIyOGIyLi5jZjAyNDVjMzlhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlMaW5rRXJyb3IuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNz
ZW1ibHlMaW5rRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7Ci0g
ICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3Nl
bWJseUxpbmtFcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIGRlZmF1bHRTb3Vy
Y2VBcHBlbmRlciwgVHlwZU5vdGhpbmcsIEVycm9yVHlwZTo6RXJyb3IsIHRydWUpOworICAgIHJl
dHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0
LT53ZWJBc3NlbWJseUxpbmtFcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIGRl
ZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcsIEVycm9yVHlwZTo6RXJyb3IsIHRydWUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKaW5kZXggMjcyNzZmYzAzZjkwLi4x
NTQ4NDFhYjRmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBKU1dlYkFz
c2VtYmx5TW9kdWxlOjpjbGVhckpTQ2FsbElDcyhWTSYgdm0pCiB7CiAjaWYgRU5BQkxFKEpJVCkK
ICAgICBmb3IgKGF1dG8mIGNhbGxMaW5rSW5mbyA6IG1fY2FsbExpbmtJbmZvcykKLSAgICAgICAg
Y2FsbExpbmtJbmZvLnVubGlua09yVXBncmFkZSh2bSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAg
ICAgIGNhbGxMaW5rSW5mby51bmxpbmsodm0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0p
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5UnVudGltZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L0pTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuY3BwCmluZGV4IGVmYjA0OWRmNGJkMS4uYjEwMjk3
ZmVkYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogSlNPYmplY3QqIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5z
dGFuY2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0
cnVjdHVyZSgpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlw
ZU5vdGhpbmcsIEVycm9yVHlwZTo6RXJyb3IsIHRydWUpOworICAgIHJldHVybiBFcnJvckluc3Rh
bmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseVJ1
bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlLCBKU1ZhbHVlKCksIGRlZmF1bHRTb3VyY2VB
cHBlbmRlciwgVHlwZU5vdGhpbmcsIEVycm9yVHlwZTo6RXJyb3IsIHRydWUpOwogfQogCiBKU09i
amVjdCogY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBWTSYgdm0sIFdhc206OkV4Y2VwdGlvblR5cGUgdHlwZSkKIHsKLSAgICBFcnJv
ckluc3RhbmNlKiBlcnJvciA9IEVycm9ySW5zdGFuY2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT53ZWJBc3NlbWJseVJ1bnRpbWVFcnJvclN0cnVjdHVyZSgpLCBXYXNtOjplcnJvck1lc3NhZ2VG
b3JFeGNlcHRpb25UeXBlKHR5cGUpLCBKU1ZhbHVlKCksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwg
VHlwZU5vdGhpbmcsIEVycm9yVHlwZTo6RXJyb3IsIHRydWUpOworICAgIEVycm9ySW5zdGFuY2Uq
IGVycm9yID0gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9i
amVjdC0+d2ViQXNzZW1ibHlSdW50aW1lRXJyb3JTdHJ1Y3R1cmUoKSwgV2FzbTo6ZXJyb3JNZXNz
YWdlRm9yRXhjZXB0aW9uVHlwZSh0eXBlKSwgSlNWYWx1ZSgpLCBkZWZhdWx0U291cmNlQXBwZW5k
ZXIsIFR5cGVOb3RoaW5nLCBFcnJvclR5cGU6OkVycm9yLCB0cnVlKTsKICAgICBlcnJvci0+c2V0
Q2F0Y2hhYmxlRnJvbVdhc20oZmFsc2UpOwogICAgIHJldHVybiBlcnJvcjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCA1ODViZjA4OTczYmQuLjYx
NWIwMTc1ZTA0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNw
cApAQCAtMTAwLDggKzEwMCw4IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNt
RW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgfSBlbHNl
CiAgICAgICAgIGppdC5zdG9yZVBhaXJQdHIoR1BSSW5mbzo6d2FzbUNvbnRleHRJbnN0YW5jZVBv
aW50ZXIsIHNjcmF0Y2hHUFIsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sgKiBzaXplb2YoUmVnaXN0
ZXIpKSk7CiAKLSAgICBjYWxsTGlua0luZm8gPSBPcHRpbWl6aW5nQ2FsbExpbmtJbmZvKENvZGVP
cmlnaW4oKSwgQ2FsbExpbmtJbmZvOjpVc2VEYXRhSUM6Ok5vLCBudWxscHRyKTsKLSAgICBjYWxs
TGlua0luZm8uc2V0VXBDYWxsKENhbGxMaW5rSW5mbzo6Q2FsbCk7CisgICAgY2FsbExpbmtJbmZv
ID0gT3B0aW1pemluZ0NhbGxMaW5rSW5mbyhDb2RlT3JpZ2luKCksIENhbGxMaW5rSW5mbzo6VXNl
RGF0YUlDOjpObyk7CisgICAgY2FsbExpbmtJbmZvLnNldFVwQ2FsbChDYWxsTGlua0luZm86OkNh
bGwsIGltcG9ydEpTQ2VsbEdQUlJlZyk7CiAKICAgICAvLyBodHRwczovL3dlYmFzc2VtYmx5Lmdp
dGh1Yi5pby9zcGVjL2pzLWFwaS9pbmRleC5odG1sI2V4cG9ydGVkLWZ1bmN0aW9uLWV4b3RpYy1v
YmplY3RzCiAgICAgLy8gSWYgcGFyYW1ldGVycyBvciByZXN1bHRzIGNvbnRhaW4gdjEyOCwgdGhy
b3cgYSBUeXBlRXJyb3IuCkBAIC0zMzIsMTUgKzMzMiwxNCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZN
JiB2bQogCiAgICAgLy8gRklYTUUgVGFpbCBjYWxsIGlmIHRoZSB3YXNtIHJldHVybiB0eXBlIGlz
IHZvaWQgYW5kIG5vIHJlZ2lzdGVycyB3ZXJlIHNwaWxsZWQuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0ODgKIAotICAgIC8vIENhbGxlZSBuZWVkcyB0byBiZSBp
biByZWdUMCBoZXJlLgotICAgIGppdC5tb3ZlKGltcG9ydEpTQ2VsbEdQUlJlZywgQmFzZWxpbmVK
SVRSZWdpc3RlcnM6OkNhbGw6OmNhbGxlZUdQUik7Ci0gICAgYXV0byBbc2xvd1BhdGgsIGRpc3Bh
dGNoTGFiZWxdID0gQ2FsbExpbmtJbmZvOjplbWl0RmFzdFBhdGgoaml0LCAmY2FsbExpbmtJbmZv
LCBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2FsbDo6Y2FsbGVlR1BSLCBCYXNlbGluZUpJVFJlZ2lz
dGVyczo6Q2FsbDo6Y2FsbExpbmtJbmZvR1BSKTsKKyAgICBhdXRvIHNsb3dQYXRoID0gQ2FsbExp
bmtJbmZvOjplbWl0RmFzdFBhdGgoaml0LCAmY2FsbExpbmtJbmZvLCBpbXBvcnRKU0NlbGxHUFJS
ZWcsIEludmFsaWRHUFJSZWcpOwogCiAgICAgSklUOjpKdW1wIGRvbmUgPSBqaXQuanVtcCgpOwog
ICAgIHNsb3dQYXRoLmxpbmsoJmppdCk7CiAgICAgYXV0byBzbG93UGF0aFN0YXJ0ID0gaml0Lmxh
YmVsKCk7Ci0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Ondh
c21Db250ZXh0SW5zdGFuY2VQb2ludGVyLCBJbnN0YW5jZTo6b2Zmc2V0T2ZHbG9iYWxPYmplY3Qo
KSksIEJhc2VsaW5lSklUUmVnaXN0ZXJzOjpDYWxsOjpnbG9iYWxPYmplY3RHUFIpOwotICAgIENh
bGxMaW5rSW5mbzo6ZW1pdFNsb3dQYXRoKHZtLCBqaXQsICZjYWxsTGlua0luZm8sIEJhc2VsaW5l
SklUUmVnaXN0ZXJzOjpDYWxsOjpjYWxsTGlua0luZm9HUFIpOworICAgIC8vIENhbGxlZSBuZWVk
cyB0byBiZSBpbiByZWdUMCBoZXJlLgorICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjp3YXNtQ29udGV4dEluc3RhbmNlUG9pbnRlciwgSW5zdGFuY2U6Om9mZnNl
dE9mR2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgY2FsbExpbmtJbmZvLmVt
aXRTbG93UGF0aCh2bSwgaml0KTsKICAgICBkb25lLmxpbmsoJmppdCk7CiAgICAgYXV0byBkb25l
TG9jYXRpb24gPSBqaXQubGFiZWwoKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvYXJyYXktdXRpbGl0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy1leHBlY3RlZC50eHQKaW5kZXgg
NjYyMzFhZGI0NWM4Li41M2JjOTBkOGRhYTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXJyYXktdXRpbGl0aWVzLWV4cGVjdGVkLnR4dApA
QCAtMTg2LDUgKzE4Niw1IEBAIE5vZGU6CiAKIE9iamVjdCAoZG9lc24ndCBoYXZlIFtTeW1ib2wu
aXRlcmF0b3JdKToKIFBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlvbi4KLVR5cGVFcnJv
cjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5pdGVtIG9mIGl0ZXJhYmxl
Li4uJykKK1R5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc2V0LXV0aWxpdGllcy1l
eHBlY3RlZC50eHQKaW5kZXggZDQ5YjkyOTNmMTgwLi5lNmRlOTJiOTdiMTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3NldC11dGlsaXRpZXMt
ZXhwZWN0ZWQudHh0CkBAIC00OSw3ICs0OSw3IEBAIE5vZGU6CiAKIE9iamVjdCAoZG9lc24ndCBo
YXZlIFtTeW1ib2wuaXRlcmF0b3JdKToKIFBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGV4Y2VwdGlv
bi4KLVR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9uIChuZWFyICcuLi5pdGVt
IG9mIGl0ZXJhYmxlLi4uJykKK1R5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGZ1bmN0aW9u
CiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTZXQucHJvdG90eXBlLnRha2UKIFBBU1M6IFNldCBj
YW4gdGFrZSBga2V5YC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2NhbGxlci1wcm9wZXJ0
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9jYWxsZXItcHJvcGVydHktZXhwZWN0ZWQu
dHh0CmluZGV4IGJhODNhY2QzMzg5MC4uYjIwYTY2ZDY1NTAyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9qcy9jYWxsZXItcHJvcGVydHktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pz
L2NhbGxlci1wcm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTI0LDcgKzI0LDcgQEAgUEFTUyBub25T
dHJpY3RDYWxsZXIobmV3IFByb3h5KG5ldyBQcm94eShub25TdHJpY3RDYWxsZWUsIHt9KSwge30p
KSBpcyBub25TdHJpY3QKIFBBU1Mgbm9uU3RyaWN0Q2FsbGVyKG5ldyBQcm94eShib3VuZE5vblN0
cmljdENhbGxlZSwge30pKSBpcyBub25TdHJpY3RDYWxsZXIKIFBBU1Mgbm9uU3RyaWN0Q2FsbGVy
KG5ldyBQcm94eShub25TdHJpY3RDYWxsZWUsIFJlZmxlY3QpKSBpcyBub25TdHJpY3RDYWxsZXIK
IFBBU1Mgbm9uU3RyaWN0Q2FsbGVyKG5ldyBQcm94eShuZXcgUHJveHkobm9uU3RyaWN0Q2FsbGVl
LCBSZWZsZWN0KSwge30pKSBpcyBub25TdHJpY3RDYWxsZXIKLVBBU1Mgbm9uU3RyaWN0Q2FsbGVy
KG5ldyBQcm94eShuZXcgUHJveHkobm9uU3RyaWN0Q2FsbGVlLCB7fSksIFJlZmxlY3QpKSBpcyBu
b25TdHJpY3RDYWxsZXIKK1BBU1Mgbm9uU3RyaWN0Q2FsbGVyKG5ldyBQcm94eShuZXcgUHJveHko
bm9uU3RyaWN0Q2FsbGVlLCB7fSksIFJlZmxlY3QpKSBpcyBudWxsCiBQQVNTIG5vblN0cmljdEdl
dHRlcihub25TdHJpY3RBY2Nlc3NvcikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogJ2FyZ3Vt
ZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMg
Y29udGV4dC4uCiBQQVNTIG5vblN0cmljdEdldHRlcihzdHJpY3RBY2Nlc3NvcikgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fu
bm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4uCiBQQVNTIHN0cmljdEdldHRlcihub25T
dHJpY3RBY2Nlc3NvcikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogJ2FyZ3VtZW50cycsICdj
YWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHRoaXMgY29udGV4dC4u
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2FsbGVyLXByb3BlcnR5
LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NhbGxlci1wcm9wZXJ0eS5qcwppbmRl
eCA0YzVmNTM2MThjYjguLjg0OGU2Y2RkNjYyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2NhbGxlci1wcm9wZXJ0eS5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvY2FsbGVyLXByb3BlcnR5LmpzCkBAIC01MCw3ICs1MCw3IEBAIHNob3VsZEJlKCJu
b25TdHJpY3RDYWxsZXIobmV3IFByb3h5KGJvdW5kTm9uU3RyaWN0Q2FsbGVlLCB7fSkpIiwgIm5v
blN0cmljdENhbGxlCiAKIHNob3VsZEJlKCJub25TdHJpY3RDYWxsZXIobmV3IFByb3h5KG5vblN0
cmljdENhbGxlZSwgUmVmbGVjdCkpIiwgIm5vblN0cmljdENhbGxlciIpOyAvLyB0YWlsIGNhbGwK
IHNob3VsZEJlKCJub25TdHJpY3RDYWxsZXIobmV3IFByb3h5KG5ldyBQcm94eShub25TdHJpY3RD
YWxsZWUsIFJlZmxlY3QpLCB7fSkpIiwgIm5vblN0cmljdENhbGxlciIpOyAvLyB0YWlsIGNhbGwK
LXNob3VsZEJlKCJub25TdHJpY3RDYWxsZXIobmV3IFByb3h5KG5ldyBQcm94eShub25TdHJpY3RD
YWxsZWUsIHt9KSwgUmVmbGVjdCkpIiwgIm5vblN0cmljdENhbGxlciIpOyAvLyB0YWlsIGNhbGwK
K3Nob3VsZEJlKCJub25TdHJpY3RDYWxsZXIobmV3IFByb3h5KG5ldyBQcm94eShub25TdHJpY3RD
YWxsZWUsIHt9KSwgUmVmbGVjdCkpIiwgIm51bGwiKTsgLy8gbm8gdGFpbCBjYWxsIGluIFByb3h5
J3MgW1tDYWxsXV0KIAogLy8gQ2hlY2sgdGhhdCAuY2FsbGVyIHRocm93cyBhcyBleHBlY3RlZCwg
b3ZlciBhbiBhY2Nlc3NvciBjYWxsLiAocGVyIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2
Mi8jc2VjLWZvcmJpZGRlbi1leHRlbnNpb25zKQogZnVuY3Rpb24gZ2V0Rm9vR2V0dGVyKHgpIHsg
cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeCwgJ2ZvbycpLmdldDsgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbGVuZ3RoLWVsZW1lbnQt
cmVtb3ZlZC1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9z
dmdsZW5ndGgtZWxlbWVudC1yZW1vdmVkLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCAwNWNmMzdh
MGI1NWUuLjg0MDMzYWQ4NTI4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvc3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSBAQAotUEFTUyB4ID0gMTAgeCA9IDEwIHggPSAxMCB4ID0g
MTAgeCA9IDEwIHggPSAxMCB4ID0gMTAgeCA9IDEwIHggPSAxMCB4ID0gMTAgeCA9IDEwIHggPSAx
MCB4ID0gMTAKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVU
RQotCitQQVNTIHggPSAxMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
c3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcgYi9MYXlvdXRUZXN0cy9zdmcvYW5p
bWF0aW9ucy9zdmdsZW5ndGgtZWxlbWVudC1yZW1vdmVkLWNyYXNoLnN2ZwppbmRleCAzODdlNzVh
NzhjZTQuLmIxMzJjNzZmYjFhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvc3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcKKysrIGIvTGF5b3V0VGVzdHMv
c3ZnL2FuaW1hdGlvbnMvc3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcKQEAgLTEs
NjggKzEsNDYgQEAKLTxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBvbmxvYWQ9ImxvYWQoKSI+CiBU
aGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXNuJ3QgY3Jhc2ggd2hlbiBydW4gdW5kZXIgZ21hbGxv
Yy4KIDxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9Imdy
ZWVuIi8+Ci08cmVjdCB4PSIxMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxs
PSJncmVlbiIvPgotPHJlY3QgeD0iMTAiIHk9IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIg
ZmlsbD0iZ3JlZW4iLz4KLTxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIx
MDAiIGZpbGw9ImdyZWVuIi8+Ci08cmVjdCB4PSIxMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdo
dD0iMTAwIiBmaWxsPSJncmVlbiIvPgotPHJlY3QgeD0iMTAiIHk9IjEwIiB3aWR0aD0iMTAwIiBo
ZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iLz4KLTxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjEw
MCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIi8+Ci08cmVjdCB4PSIxMCIgeT0iMTAiIHdpZHRo
PSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIvPgotPHJlY3QgeD0iMTAiIHk9IjEwIiB3
aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iLz4KLTxyZWN0IHg9IjEwIiB5PSIx
MCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIi8+Ci08cmVjdCB4PSIxMCIg
eT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJncmVlbiIvPgotPHJlY3QgeD0i
MTAiIHk9IjEwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iZ3JlZW4iLz4KLTxyZWN0
IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9ImdyZWVuIi8+CiA8
dGV4dCB4PSI1MCIgeT0iNTAiIGlkPSJsb2ciLz4KLTxzY3JpcHQgaHJlZj0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiLz4KIDxzY3JpcHQ+CiA8IVtDREFUQVsKLXdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CiAgICAgdmFyIGxvZ0RpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKICAgICBsb2dEaXYuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOwogfQogCi12YXIgYmFzZVZhbFJlZmVyZW5j
ZXM7Ci12YXIgb3JpZ2luYWxMaXZlRWxlbWVudHMgPSAwOwotd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBmdW5jdGlvbiBydW5UZXN0cygpIHsKLSAgICBpZiAoISh3aW5kb3cudGVzdFJ1
bm5lciAmJiB3aW5kb3cuR0NDb250cm9sbGVyICYmIHdpbmRvdy5pbnRlcm5hbHMpKSB7CitmdW5j
dGlvbiBsb2FkKCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuR0NDb250
cm9sbGVyICYmIHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIGVsc2UgewogICAgICAgICBsb2coIlRoaXMgdGVzdCBvbmx5IHdvcmtzIHdoZW4g
cnVuIHdpdGggdGhlIHRlc3RSdW5uZXIsIEdDQ29udHJvbGxlciwgYW5kIGludGVybmFscyBhdmFp
bGFibGUuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICB2YXIgcmVjdCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJyZWN0IilbMF07CisgICAgdmFyIGJhc2VWYWxSZWZl
cmVuY2UgPSByZWN0LnguYmFzZVZhbDsKKyAgICAKICAgICAvLyBDb2xsZWN0IGdhcmJhZ2UgYmVm
b3JlIHJlY29yZGluZyBzdGFydGluZyBsaXZlIG5vZGUgY291bnQsIGluIGNhc2UgdGhlcmUgYXJl
IGxpdmUgZWxlbWVudHMgZnJvbSBwcmV2aW91cyB0ZXN0cy4KICAgICBHQ0NvbnRyb2xsZXIuY29s
bGVjdCgpOwotICAgIG9yaWdpbmFsTGl2ZUVsZW1lbnRzID0gd2luZG93LmludGVybmFscy5udW1i
ZXJPZkxpdmVOb2RlcygpOworICAgIHZhciBvcmlnaW5hbExpdmVFbGVtZW50cyA9IHdpbmRvdy5p
bnRlcm5hbHMubnVtYmVyT2ZMaXZlTm9kZXMoKTsKIAotICAgIGJhc2VWYWxSZWZlcmVuY2VzID0g
W107Ci0gICAgdmFyIHJlY3RzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInJlY3Qi
KTsKLSAgICAvLyBLZWVwIGluIG1pbmQgdGhhdCBnZXRFbGVtZW50c0J5VGFnTmFtZSdzIHJlc3Vs
dCBpcyBhIGxpdmUgTm9kZUxpc3QuCi0gICAgd2hpbGUgKHJlY3RzLmxlbmd0aCAhPT0gMCkgewot
ICAgICAgICB2YXIgcmVjdCA9IHJlY3RzWzBdOwotICAgICAgICBiYXNlVmFsUmVmZXJlbmNlcy5w
dXNoKHJlY3QueC5iYXNlVmFsKTsKLSAgICAgICAgcmVjdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KHJlY3QpOwotICAgIH0KLSAgICByZWN0ID0gbnVsbDsKLSAgICByZWN0cyA9IG51bGw7CisgICAg
cmVjdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHJlY3QpOworICAgIHJlY3QgPSAwOworICAgIAog
ICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK
LSAgICAgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLSAgICAgICAgLy8gVGhlIHJlc3Qgb2Yg
dGhpcyB0ZXN0IHNob3VsZCBGQUlMIHdpdGhvdXQgcmVxdWlyaW5nIGdtYWxsb2MgaWYgdGhpcyB0
ZXN0IGhhcyByZWdyZXNzZWQuCi0gICAgICAgIHZhciBsaXZlRGVsdGEgPSB3aW5kb3cuaW50ZXJu
YWxzLm51bWJlck9mTGl2ZU5vZGVzKCkgLSBvcmlnaW5hbExpdmVFbGVtZW50czsKLQotICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgPHJlY3Q+IGlzIGRlbGV0ZWQ7IGlmIGl0J3Mgbm90LCBs
aXZlRGVsdGEgd2lsbCBiZSAwLgotICAgICAgICBpZiAobGl2ZURlbHRhIDwgMCkKLSAgICAgICAg
ICAgIGxvZygiIFBBU1MiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCIgRkFJTDog
IiArIGxpdmVEZWx0YSArICIgZXh0cmEgbGl2ZSBub2RlKHMpIik7Ci0KLSAgICAgICAgLy8gVGhp
cyBsaW5lIHdpbGwgY3Jhc2ggd2l0aCBnbWFsbG9jIGlmIHRoaXMgdGVzdCBoYXMgcmVncmVzc2Vk
LgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhc2VWYWxSZWZlcmVuY2VzLmxlbmd0aDsg
KytpKQotICAgICAgICAgICAgbG9nKCIgeCA9ICIgKyBiYXNlVmFsUmVmZXJlbmNlc1tpXS52YWx1
ZSk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIDApOwotfSwgZmFsc2UpOworICAg
IAorICAgIC8vIFRoZSByZXN0IG9mIHRoaXMgdGVzdCBzaG91bGQgRkFJTCB3aXRob3V0IHJlcXVp
cmluZyBnbWFsbG9jIGlmIHRoaXMgdGVzdCBoYXMgcmVncmVzc2VkLgorICAgIHZhciBsaXZlRGVs
dGEgPSB3aW5kb3cuaW50ZXJuYWxzLm51bWJlck9mTGl2ZU5vZGVzKCkgLSBvcmlnaW5hbExpdmVF
bGVtZW50czsKKyAgICAKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgPHJlY3Q+IGlzIGRlbGV0
ZWQ7IGlmIGl0J3Mgbm90LCBsaXZlRGVsdGEgd2lsbCBiZSAwLgorICAgIGlmIChsaXZlRGVsdGEg
PT0gLTEpCisgICAgICAgIGxvZygiIFBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiIEZB
SUw6ICIgKyBsaXZlRGVsdGEgKyAiIGV4dHJhIGxpdmUgbm9kZShzKSIpOworICAgICAgICAKKyAg
ICAvLyBUaGlzIGxpbmUgd2lsbCBjcmFzaCB3aXRoIGdtYWxsb2MgaWYgdGhpcyB0ZXN0IGhhcyBy
ZWdyZXNzZWQuCisgICAgbG9nKCIgeCA9ICIgKyBiYXNlVmFsUmVmZXJlbmNlLnZhbHVlKTsKK30K
IF1dPgogPC9zY3JpcHQ+Ci08L3N2Zz4KKzwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RhaWwtY2FsbC1zdGFja3MuanMgYi9KU1Rl
c3RzL3N0cmVzcy90YWlsLWNhbGwtc3RhY2tzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlODMxYmQ4YmNkMjcuLjAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVzcy90YWls
LWNhbGwtc3RhY2tzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotInVzZSBzdHJp
Y3QiOwotCi1mdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Ci0gICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKLX0KLQotZnVuY3Rpb24gdGVzdFRhcmdldChmdW5jKSB7Ci0gICAgcmV0dXJu
IGZ1bmMoKTsKLX0KLW5vSW5saW5lKHRlc3RUYXJnZXQpOwotCi1mdW5jdGlvbiB0MSgpIHsgfQot
ZnVuY3Rpb24gdDIoKSB7IH0KLWZ1bmN0aW9uIHQzKCkgeyB9Ci1mdW5jdGlvbiB0NCgpIHsgfQot
ZnVuY3Rpb24gdDUoKSB7IH0KLQotZnVuY3Rpb24gcnVuKCkgewotICAgIHRlc3RUYXJnZXQodDEp
OwotICAgIHRlc3RUYXJnZXQodDIpOwotICAgIHRlc3RUYXJnZXQodDMpOwotICAgIHRlc3RUYXJn
ZXQodDQpOwotICAgIHRlc3RUYXJnZXQodDUpOwotICAgIHRyeSB7Ci0gICAgICAgIHRlc3RUYXJn
ZXQodW5kZWZpbmVkKTsKLSAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICB2YXIgc3RhY2sg
PSBlcnJvci5zdGFjay5zcGxpdCgnXG4nKQotICAgICAgICBzaG91bGRCZShzdGFja1swXS5pbmNs
dWRlcygidGVzdFRhcmdldCIpLCB0cnVlKTsKLSAgICB9Ci19Ci0KLWZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDA7ICsraSkKLSAgICBydW4oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>