<?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>141062</bug_id>
          
          <creation_ts>2015-01-29 17:26:17 -0800</creation_ts>
          <short_desc>REGRESSION(r179357): Suspect this caused WebGL tests to start flaking (Requested by kling on #webkit).</short_desc>
          <delta_ts>2015-01-29 22:51:31 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140660</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cdumez</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065433</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-29 17:26:17 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/179357 broke the build:
Suspect this caused WebGL tests to start flaking (Requested by kling on #webkit).

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

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065443</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-01-29 18:08:14 -0800</bug_when>
    <thetext>Can you explain why r179357 is being blamed for the flakes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065445</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-29 18:22:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Can you explain why r179357 is being blamed for the flakes?

Looky:

https://build.webkit.org/builders/Apple%20Mavericks%20Debug%20WK2%20%28Tests%29?numbuilds=50

Some WebGL tests have either failed or flaked on every run since 179357.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065477</commentid>
    <comment_count>4</comment_count>
      <attachid>245676</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-29 20:28:38 -0800</bug_when>
    <thetext>Comment on attachment 245676
ROLLOUT of r179357

Clearing flags on attachment: 245676

Committed r179392: &lt;http://trac.webkit.org/changeset/179392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065478</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-29 20:28:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065502</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-29 22:51:31 -0800</bug_when>
    <thetext>Interestingly, inspector/css/selector-specificity.html crashed on the bots after this roll out (it may be a flake):

https://build.webkit.org/results/Apple%20Mavericks%20Release%20WK2%20(Tests)/r179392%20(11150)/results.html
https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/r179392%20(1911)/results.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245676</attachid>
            <date>2015-01-29 17:26:49 -0800</date>
            <delta_ts>2015-01-29 20:28:38 -0800</delta_ts>
            <desc>ROLLOUT of r179357</desc>
            <filename>bug-141062-20150129172655.patch</filename>
            <type>text/plain</type>
            <size>144147</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5Mzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
OWY4ODdjMWMwY2Y1YmI0ZDdhYTBlZGZiN2NiNmE2OTdlMGE4MTEzLi5mNzZmZmFlYTYxNThkYmE4
ZTFiMGZmMDBiYzgxYTUyMDk2ZmFjZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNS0wMS0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE3OTM1NyBhbmQgcjE3
OTM1OC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MTA2MgorCisgICAgICAgIFN1c3BlY3QgdGhpcyBjYXVzZWQgV2ViR0wgdGVzdHMgdG8gc3RhcnQg
Zmxha2luZyAoUmVxdWVzdGVkIGJ5CisgICAgICAgIGtsaW5nIG9uICN3ZWJraXQpLgorCisgICAg
ICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAgICAgICAgIlBvbHltb3JwaGljIGNhbGwgaW5s
aW5pbmcgc2hvdWxkIGJlIGJhc2VkIG9uIHBvbHltb3JwaGljIGNhbGwKKyAgICAgICAgaW5saW5l
IGNhY2hpbmcgcmF0aGVyIHRoYW4gbG9nZ2luZyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDY2MAorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8xNzkzNTcKKworICAgICAgICAiVW5yZXZpZXdlZCwgZml4IG5vLUpJVCBi
dWlsZC4iCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3OTM1OAor
CiAyMDE1LTAxLTI5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlZCBvcF9yZXRfb2JqZWN0X29yX3RoaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBmNjE3MzYwMjAxOTZjMTllZmE3NWI3MDU0ODdkMjQ3MTMyZjhhOTQ1Li41
ZDMxOTcwMTUzZGE3NGFkNzZkZjA1NWQ0Mzg4NmU0NDU5OGU2NjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC02Niw2ICs2Niw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAogICAgIGJ5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxsRWRnZS5jcHAK
KyAgICBieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL0Nh
bGxWYXJpYW50LmNwcApAQCAtMzI2LDYgKzMyNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKICAgICBqaXQvQXJpdHlDaGVja0ZhaWxS
ZXR1cm5UaHVua3MuY3BwCiAgICAgaml0L0JpbmFyeVN3aXRjaC5jcHAKKyAgICBqaXQvQ2xvc3Vy
ZUNhbGxTdHViUm91dGluZS5jcHAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKICAg
ICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcAogICAgIGppdC9HQ0F3YXJl
SklUU3R1YlJvdXRpbmUuY3BwCkBAIC0zNDgsNyArMzUwLDYgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBqaXQvSklUU3R1YnMuY3BwCiAgICAgaml0L0pJVFRodW5rcy5jcHAKICAg
ICBqaXQvSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCi0gICAgaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAogICAgIGppdC9SZWcuY3BwCiAgICAgaml0L1Jl
Z2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5jcHAKICAgICBqaXQvUmVnaXN0ZXJT
ZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA4MTk1N2Vh
ZmMzNjYwZDM3NjRiZThiZDdiNjBkMTBmN2I5YjhkOGVmLi5iZTk4NjUyYWNhZjU2YWE4ZDQ1MjU5
ZjY0MDYwOWVkNjc1NWQ1MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oKQEAgLTMxNCw2ICszMTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYnl0ZWNv
ZGVcQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGJ5dGVjb2RlXEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsRWRnZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxieXRlY29kZVxDYWxsRWRnZVByb2ZpbGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbExpbmtJbmZvLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxMaW5rU3RhdHVzLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxWYXJpYW50LmNwcCIgLz4KQEAgLTU5Nyw2
ICs1OTgsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEFyaXR5Q2hlY2tGYWls
UmV0dXJuVGh1bmtzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxBc3Nl
bWJseUhlbHBlcnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEJpbmFy
eVN3aXRjaC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcQ2xvc3VyZUNh
bGxTdHViUm91dGluZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcRXhl
Y3V0YWJsZUFsbG9jYXRvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRc
R0NBd2FyZUpJVFN0dWJSb3V0aW5lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGppdFxIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCIgLz4KQEAgLTYxOSw3ICs2MjEsNiBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XEpJVFN0dWJzLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGppdFxKSVRUaHVua3MuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caml0XEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCIgLz4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxQb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdpc3RlclByZXNlcnZhdGlvbldyYXBwZXJH
ZW5lcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVy
U2V0LmNwcCIgLz4KQEAgLTkzMCw2ICs5MzEsOCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYnl0ZWNvZGVcQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxieXRlY29kZVxCeXRlY29kZVVzZURlZi5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbEVkZ2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGJ5dGVjb2RlXENhbGxFZGdlUHJvZmlsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbExpbmtJbmZvLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxieXRlY29kZVxDYWxsTGlua1N0YXR1cy5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cYnl0ZWNvZGVcQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCIgLz4KQEAgLTEzMzAsNiArMTMzMyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcQXNzZW1ibHlIZWxwZXJzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxqaXRcQmluYXJ5U3dpdGNoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRc
Q0NhbGxIZWxwZXJzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcQ2xvc3Vy
ZUNhbGxTdHViUm91dGluZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XENv
bXBhY3RKSVRDb2RlTWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcRXhl
Y3V0YWJsZUFsbG9jYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEZQ
UkluZm8uaCIgLz4KQEAgLTEzNTMsNyArMTM1Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxqaXRcSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKSVRXcml0ZUJhcnJpZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxKU0ludGVyZmFjZUpJVC5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caml0XFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxqaXRcUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJTZXQuaCIgLz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTM4MDQ3YTc2MzFiMTIyZmRjYTQyYjRlMzA3ODFiYmZj
NjIwYWRiNC4uNmE3MWZkMmY5Mjk0YzFlZTk3OGE4MGUwMmYzYjg4N2MxM2VjMzMxZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI4MSw4ICsyODEsMTMgQEAKIAkJMEYzQjNBMjgx
NTQ0Qzk5NzAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTI1MTU0NEM5OTEwMDNF
RDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYzQjNBMkIxNTQ3NTAwMDAwM0VEMEZGIC8q
IERGR1ZhbGlkYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGM0IzQTI5MTU0NzRGRjQwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgKi87IH07
CiAJCTBGM0IzQTJDMTU0NzUwMDIwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMkExNTQ3NEZGNDAwM0VE
MEZGIC8qIERGR1ZhbGlkYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEYzQjdFMjYxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyMDE5QTEx
QjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjNCN0UyNzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQ
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwICovOyB9Owor
CQkwRjNCN0UyODE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCN0UyMjE5QTExQjgwMDBE
OUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQjdFMjkxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdl
UHJvZmlsZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYz
QjdFMkExOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0I3RTI0MTlBMTFCODAwMEQ5QkM1NiAv
KiBDYWxsVmFyaWFudC5jcHAgKi87IH07CiAJCTBGM0I3RTJCMTlBMTFCODAwMEQ5QkM1NiAvKiBD
YWxsVmFyaWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjdFMjUxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxWYXJpYW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYzQjdFMkQxOUExMkFBRTAw
RDlCQzU2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGM0I3RTJDMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgKi87
IH07CiAJCTBGM0QwQkJDMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0Qw
QkJBMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcCAqLzsgfTsK
IAkJMEYzRDBCQkQxOTRBNDE0MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0QwQkJCMTk0
QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYzRTAxQUExOUQzNTNBNTAwRjYx
QjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuY3BwICovOyB9OwpAQCAtMzUwLDggKzM1NSw2IEBACiAJCTBGNjM5NDg1MTVF
NDgxMUIwMDZBNTk3QyAvKiBERkdBcnJheU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM5NDgyMTVFNDgxMTQwMDZBNTk3QyAvKiBERkdBcnJh
eU1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjY0QjI3MTFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjRCMjZGMUE3ODRCQUYwMDZF
NEU2NiAvKiBCaW5hcnlTd2l0Y2guY3BwICovOyB9OwogCQkwRjY0QjI3MjFBNzg0QkFGMDA2RTRF
NjYgLyogQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjY0QjI3MDFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEY2NEIyNzkx
QTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRn
ZS5jcHAgKi87IH07Ci0JCTBGNjRCMjdBMUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEIyNzgxQTc5
NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzAxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzExODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxp
dmVuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2NkVDNjE4MzU2
NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdB
dmFpbGFiaWxpdHkuY3BwICovOyB9OwpAQCAtMzgzLDYgKzM4Niw4IEBACiAJCTBGNzAyNUFBMTcx
NEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzAyNUE4MTcxNEIwRjgwMDM4MkMw
RSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjcxNENBNDE2RUE5MkYwMDBGM0VCRUIgLyogREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcxNENBMTE2RUE5MkVEMDBGM0VCRUIgLyogREZHQmFja3dh
cmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgKi87IH07CiAJCTBGNzE0Q0E1MTZFQTkyRjIwMEYzRUJF
QiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjcxNENBMjE2RUE5MkVEMDBGM0VCRUIgLyogREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGNzNEN0FFMTY1QTE0MkQwMEFDQUI3MSAvKiBDbG9zdXJl
Q2FsbFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNzNEN0FCMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0
aW5lLmNwcCAqLzsgfTsKKwkJMEY3M0Q3QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxs
U3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNzNEN0FDMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3NDNC
QUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MkEzQTIwMTY1MUM2NjEwMEE4MEFG
RSAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgKi87IH07CiAJCTBGNzU3NkQyMThFMUZFRTkwMDJF
RjRDRCAvKiBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc1NzZEMDE4RTFGRUU5MDAyRUY0Q0QgLyog
QWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwICovOyB9OwogCQkwRjc1NzZEMzE4RTFGRUU5
MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzU3NkQxMThFMUZFRTkwMDJFRjRDRCAv
KiBBY2Nlc3NvckNhbGxKSVRTdHViUm91dGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01OTcsOCArNjAyLDYgQEAKIAkJMEZFMjI4RUUxNDM2
QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3Bw
ICovOyB9OwogCQkwRkU3MjExRDE5M0I5QzU5MDAzMUY2RUQgLyogREZHVHJhbnNpdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU3MjExQjE5
M0I5QzU5MDAzMUY2RUQgLyogREZHVHJhbnNpdGlvbi5jcHAgKi87IH07CiAJCTBGRTcyMTFFMTkz
QjlDNTkwMDMxRjZFRCAvKiBERkdUcmFuc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU3MjExQzE5M0I5QzU5MDAzMUY2RUQgLyogREZHVHJh
bnNpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTBGRTgzNDE3MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU4
MzQxNTFBNkVGOTdCMDBEMDQ4NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwICov
OyB9OwotCQkwRkU4MzQxODFBNkVGOTdCMDBEMDQ4NDcgLyogUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RTgzNDE2MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRTg1MzRC
MTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFODUzNDkxNzIzQ0RBNTAwQjYx
OEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgKi87IH07CiAJCTBGRTg1MzRDMTcyM0NE
QTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTg1MzRBMTcyM0NEQTUwMEI2MThGNSAvKiBE
RkdEZXNpcmVkV2F0Y2hwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRkU5NUY3OTE4QjU2OTQ3MDBCNTMxRkIgLyogRlRMRGF0YVNlY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
OTVGNzcxOEI1Njk0NzAwQjUzMUZCIC8qIEZUTERhdGFTZWN0aW9uLmNwcCAqLzsgfTsKQEAgLTE5
NDcsOCArMTk1MCwxMyBAQAogCQkwRjNCM0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZHU2lt
cGxpZmljYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdD
RkdTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCM0EyOTE1NDc0RkY0MDAz
RUQwRkYgLyogREZHVmFsaWRhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHVmFsaWRhdGUuY3BwOyBwYXRoID0gZGZnL0RGR1ZhbGlkYXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMkExNTQ3NEZGNDAwM0VEMEZGIC8qIERGR1Zh
bGlkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ZhbGlkYXRlLmg7
IHBhdGggPSBkZmcvREZHVmFsaWRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYzQjdFMjAxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGM0I3RTIxMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxF
ZGdlUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsRWRnZVBy
b2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMjMxOUExMUI4MDAw
RDlCQzU2IC8qIENhbGxFZGdlUHJvZmlsZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjNCN0UyNDE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbFZhcmlhbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbFZhcmlhbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNCN0UyNTE5QTExQjgwMDBEOUJDNTYgLyogQ2Fs
bFZhcmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFZhcmlhbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjdFMkMxOUExMkFBRTAwRDlCQzU2
IC8qIENhbGxFZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
bGxFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRDBCQkExOTRBNDE0
MzAwRkM5Q0Y5IC8qIENvbnN0YW50U3RydWN0dXJlQ2hlY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RhbnRTdHJ1Y3R1cmVDaGVjay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0QwQkJCMTk0QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFu
dFN0cnVjdHVyZUNoZWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnN0
YW50U3RydWN0dXJlQ2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzRTAx
QTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUHJlUG9zdE51bWJlcmluZy5jcHA7IHBhdGgg
PSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDE3LDggKzIwMjUsNiBAQAogCQkwRjYzOTQ4MjE1RTQ4MTE0MDA2QTU5N0MgLyogREZH
QXJyYXlNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FycmF5TW9k
ZS5oOyBwYXRoID0gZGZnL0RGR0FycmF5TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjY0QjI2RjFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpbmFyeVN3aXRjaC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjRCMjcwMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlT
d2l0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmluYXJ5U3dpdGNoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAv
KiBDYWxsRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxs
RWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNjRCMjc4MUE3OTU3QjIw
MDZFNEU2NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2NkVCRTE4MzU2NkY5
MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjY2RUJGMTgzNTY2RjkwMEQwMTdGMSAv
KiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjY2NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0F2YWlsYWJpbGl0eS5jcHA7IHBhdGggPSBk
ZmcvREZHQXZhaWxhYmlsaXR5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIw
NTAsNiArMjA1Niw4IEBACiAJCTBGNzAyNUE4MTcxNEIwRjgwMDM4MkMwRSAvKiBERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmg7IHBhdGggPSBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzE0Q0ExMTZFQTkyRUQwMEYzRUJF
QiAvKiBERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOyBwYXRo
ID0gZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjcxNENBMjE2RUE5MkVEMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJv
cGFnYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRp
b25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjczRDdBQjE2NUExNDJB
MDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY3M0Q3QUMxNjVBMTQyQTAwQUNBQjcxIC8qIENsb3N1cmVD
YWxsU3R1YlJvdXRpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvc3Vy
ZUNhbGxTdHViUm91dGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc1NzZE
MDE4RTFGRUU5MDAyRUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRp
bmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjc1NzZEMTE4RTFGRUU5MDAy
RUY0Q0QgLyogQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQWNjZXNzb3JDYWxsSklUU3R1YlJvdXRpbmUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJSb3V0aW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjc2LDggKzIyODQsNiBAQAogCQkwRkUy
MjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTcy
MTFCMTkzQjlDNTkwMDMxRjZFRCAvKiBERkdUcmFuc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1RyYW5zaXRpb24uY3BwOyBwYXRoID0gZGZnL0RGR1Ry
YW5zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU3MjExQzE5M0I5
QzU5MDAzMUY2RUQgLyogREZHVHJhbnNpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdUcmFuc2l0aW9uLmg7IHBhdGggPSBkZmcvREZHVHJhbnNpdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkU4MzQxNTFBNkVGOTdCMDBEMDQ4NDcgLyogUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQkwRkU4MzQxNjFBNkVGOTdCMDBEMDQ4NDcgLyogUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFODUz
NDkxNzIzQ0RBNTAwQjYxOEY1IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwOyBw
YXRoID0gZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRTg1MzRBMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2lu
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGVzaXJlZFdhdGNocG9p
bnRzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRTk1Rjc3MThCNTY5NDcwMEI1MzFGQiAvKiBGVExEYXRhU2VjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExEYXRhU2VjdGlv
bi5jcHA7IHBhdGggPSBmdGwvRlRMRGF0YVNlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzc0MSw2ICszNzQ3LDggQEAKIAkJCQkwRjY0QjI2RjFBNzg0QkFGMDA2RTRF
NjYgLyogQmluYXJ5U3dpdGNoLmNwcCAqLywKIAkJCQkwRjY0QjI3MDFBNzg0QkFGMDA2RTRFNjYg
LyogQmluYXJ5U3dpdGNoLmggKi8sCiAJCQkJMEYyNEU1M0QxN0VBOUY1OTAwQUJCMjE3IC8qIEND
YWxsSGVscGVycy5oICovLAorCQkJCTBGNzNEN0FCMTY1QTE0MkEwMEFDQUI3MSAvKiBDbG9zdXJl
Q2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKKwkJCQkwRjczRDdBQzE2NUExNDJBMDBBQ0FCNzEgLyog
Q2xvc3VyZUNhbGxTdHViUm91dGluZS5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5
NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLAogCQkJCUE3QjQ4REI2MEVFNzRDRkMwMERDQkRC
NiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBN0I0OERCNTBFRTc0Q0ZDMDBE
Q0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovLApAQCAtMzc4OCw4ICszNzk2LDYgQEAK
IAkJCQkwRkM3MTJFMTE3Q0Q4NzhGMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0
aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlBNzZGNTRBMjEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3Jp
dGVCYXJyaWVyLmggKi8sCiAJCQkJQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJm
YWNlSklULmggKi8sCi0JCQkJMEZFODM0MTUxQTZFRjk3QjAwRDA0ODQ3IC8qIFBvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lLmNwcCAqLywKLQkJCQkwRkU4MzQxNjFBNkVGOTdCMDBEMDQ4NDcgLyog
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCAqLywKIAkJCQkwRkE3QThFOTE4QjQxM0M4MDA1
MjM3MUQgLyogUmVnLmNwcCAqLywKIAkJCQkwRkE3QThFQTE4QjQxM0M4MDA1MjM3MUQgLyogUmVn
LmggKi8sCiAJCQkJMEY2QjFDQkIxODYxMjQ2QTAwODQ1RDk3IC8qIFJlZ2lzdGVyUHJlc2VydmF0
aW9uV3JhcHBlckdlbmVyYXRvci5jcHAgKi8sCkBAIC01MDIxLDggKzUwMjcsMTEgQEAKIAkJCQkw
RjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oICovLAogCQkJCTBGODg1RTEwMTg0OUEzQkUwMEYxRTNGQSAvKiBCeXRlY29kZVVzZURlZi5o
ICovLAogCQkJCTBGODAyM0U5MTYxMzgzMjMwMEEwQkE0NSAvKiBCeVZhbEluZm8uaCAqLywKLQkJ
CQkwRjY0QjI3NzFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuY3BwICovLAotCQkJCTBGNjRC
Mjc4MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oICovLAorCQkJCTBGM0I3RTJDMTlBMTJB
QUUwMEQ5QkM1NiAvKiBDYWxsRWRnZS5jcHAgKi8sCisJCQkJMEYzQjdFMjAxOUExMUI4MDAwRDlC
QzU2IC8qIENhbGxFZGdlLmggKi8sCisJCQkJMEYzQjdFMjExOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5jcHAgKi8sCisJCQkJMEYzQjdFMjIxOUExMUI4MDAwRDlCQzU2IC8qIENh
bGxFZGdlUHJvZmlsZS5oICovLAorCQkJCTBGM0I3RTIzMTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxs
RWRnZVByb2ZpbGVJbmxpbmVzLmggKi8sCiAJCQkJMEYwQjgzQUUxNEJDRjcxNDAwODg1QjRGIC8q
IENhbGxMaW5rSW5mby5jcHAgKi8sCiAJCQkJMEYwQjgzQUYxNEJDRjcxNDAwODg1QjRGIC8qIENh
bGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlu
a1N0YXR1cy5jcHAgKi8sCkBAIC01NDc0LDYgKzU0ODMsNyBAQAogCQkJCTBGNjlDQzg5MTkzQUM2
MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1
NDIxN0VBOUY1OTAwQUJCMjE3IC8qIENDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM2QUFBRTUwRTFGNDI2NTAwQUQ4N0Q4IC8qIENsYXNzSW5mby5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY3M0Q3QUYxNjVBMTQzMDAwQUNBQjcxIC8qIENsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaCBp
biBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk3MEVEMUQzQUUwMEYxRjY4MSAvKiBDb2RlQmxvY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOEY5NDQxMTY2NzYzMzIwMEQ2MTk3MSAvKiBDb2RlQmxv
Y2tIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0YzNDE4MjAyMEQ3MDAyQzlCMjYgLyog
Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKQEAgLTU1MTcs
NyArNTUyNyw2IEBACiAJCQkJQkNEMjAzNEEwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERh
dGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzExNjYwMjBFMTk5N0I0MDA4MDY2
REQgLyogRGF0ZUluc3RhbmNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjY0QjI3QTFBNzk1N0Iy
MDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QTE1NjMyMTA5NjYz
NjUwMDZGQTI2MCAvKiBEYXRlSW5zdGFuY2VDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNE
MjAzNEMwRTE3MTM1RTAwMkM3RTgyIC8qIERhdGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRDIwM0U4MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oIGluIEhl
YWRlcnMgKi8sCkBAIC01NTY1LDYgKzU1NzQsNyBAQAogCQkJCTBGRkZDOTVBMTRFRjkwQTkwMEM3
MjUzMiAvKiBERkdDU0VQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRkM3NzMxNkUxMkY3
NDAwMzhEOTc2IC8qIERGR0RDRVBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjhGMkI5QTE3
MkYwNTAxMDA3REJEQTUgLyogREZHRGVzaXJlZElkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjNCN0UyODE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkMwRjdDRTE3QkJGQzVCMDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5z
aXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU4NTM0QzE3MjNDREE1MDBCNjE4RjUgLyog
REZHRGVzaXJlZFdhdGNocG9pbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjk4MUZEOTE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywK
QEAgLTU4NTUsNiArNTg2NSw3IEBACiAJCQkJQTc2RjU0QTMxM0IyOEFBQjAwRUYyQkNFIC8qIEpJ
VFdyaXRlQmFycmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTTGV4aWNhbEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDA0ODAx
MzEwMjFBMUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGM0I3RTI5MTlBMTFCODAwMEQ5QkM1NiAvKiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFw
cGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzYxNDBEMjE4Mjk4MkNCMDA3NTA2MjQg
LyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2
RjVDRDAwQjM0NDYwIC8qIEpTQXJyYXkuaCBpbiBIZWFkZXJzICovLApAQCAtNjE3OCw2ICs2MTg5
LDcgQEAKIAkJCQlFNDlEQzE2QzEyRUYyOTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNo
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2
MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYz
QjdFMjYxOUExMUI4MDAwRDlCQzU2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzM4NjU1NDExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lhbGl6ZWRUaHVua0pJVC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRl
ZFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNjIyNCw3ICs2MjM2LDYgQEAKIAkJCQkwRkY0Mjc0
OTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2X3R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0U1QUIzOTE3OTlFNEIyMDBEMjgzM0QgLyogVURpczg2RGlzYXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0E4QUY0MTE3QURCNUYzMDA1QUIxNzQgLyogVWludDE2QXJyYXkuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTBGRTgzNDE4MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDMxM0JGREU3MTAwMjNE
ODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGNDIx
N0FEQjVGMzAwNUFCMTc0IC8qIFVpbnQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzRjE3QURCNUYzMDA1QUIxNzQgLyogVWludDhBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC02
NzYzLDYgKzY3NzQsNyBAQAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlu
a0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MzMyOUQxNENBN0RDMzAwODVGM0M2IC8q
IENhbGxMaW5rU3RhdHVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI5Q0U0MTlEMEJBN0Qw
MEIxRDFCNSAvKiBERkdJbnNlcnRPU1JIaW50c0ZvclVwZGF0ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjczRDdBRTE2NUExNDJEMDBBQ0FCNzEgLyogQ2xvc3VyZUNhbGxTdHViUm91dGluZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5NjlBMDc5NjBFRDFEM0FFMDBGMUY2ODEgLyogQ29kZUJs
b2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEY5NDQwMTY2NzYzMzAwMEQ2MTk3MSAvKiBD
b2RlQmxvY2tIYXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQzk3RjMzMTgyMDIwRDcwMDJD
OUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC02Nzc3LDcgKzY3ODksNiBAQAogCQkJCTBGOUM1RTVFMThFMzVGNUUwMEQ0MzFDMyAvKiBG
VExEV0FSRlJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3MDlGMkYyMTdBMEFDMkEw
MDUxMkU5OCAvKiBDb21tb25TbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1M0Ez
MzExN0ExRjFFRTAwOENGNkYzIC8qIENvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJMEY2NEIyNzkxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3RTVBM0E3MTc5NzQzMkQwMEU4OTNDMCAvKiBDb21waWxhdGlv
blJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDgg
LyogQ29tcGxldGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZCMTZEODEyRUI1QjU5MDAx
QkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC02OTQ5LDgg
KzY5NjAsOCBAQAogCQkJCTBGMjM1QkQ1MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExFeGl0QXJndW1l
bnRGb3JPcGVyYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkQ4MTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExFeGl0VGh1bmtHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MzVCREExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjNCN0UyNzE5QTExQjgwMDBEOUJDNTYgLyogQ2FsbEVkZ2VQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3RjI5OTZCMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTBGRTgzNDE3MUE2RUY5N0IwMEQwNDg0NyAvKiBQb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMxOTE3RDUxRjIy
MDBDQTJDNDAgLyogRlRMRm9yT1NSRW50cnlKSVRDb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjVGMUFGMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExJbmxpbmVDYWNoZVNpemUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFQTBBMjgxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTEludHJpbnNpY1Jl
cG9zaXRvcnkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC03MTQyLDYgKzcxNTMsNyBAQAogCQkJCTBG
NDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYzOEIwMTExN0NGMDc4MDAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0I3RTJEMTlBMTJBQUUwMEQ5QkM1NiAvKiBDYWxs
RWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRTbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzOUMxNEJDRjQ2MzAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0VGQUNEMTgw
NUU3NTUwMDQ3MkNFNCAvKiBMTFZNQVBJLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaAppbmRleCAzMDQ1MjA5NTFlNWYzYWEzZjYzMWVj
ZmI2NDk3NzI1MTk4MjgzNzZhLi43Mjg4NDkyNjU4MGViOWQ4YmZlYmUyNzllN2I4OGQ0MDIwNTkw
NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2UuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsMTUg
KzMwLDE3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCit0eXBlZGVmIHVpbnQxNl90IENhbGxFZGdl
Q291bnRUeXBlOworCiBjbGFzcyBDYWxsRWRnZSB7CiBwdWJsaWM6CiAgICAgQ2FsbEVkZ2UoKTsK
LSAgICBDYWxsRWRnZShDYWxsVmFyaWFudCwgdWludDMyX3QpOworICAgIENhbGxFZGdlKENhbGxW
YXJpYW50LCBDYWxsRWRnZUNvdW50VHlwZSk7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KICAgICAKICAgICBDYWxsVmFyaWFudCBjYWxsZWUo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxlZTsgfQotICAgIHVpbnQzMl90IGNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jb3VudDsgfQorICAgIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jb3VudDsgfQogICAgIAogICAgIENhbGxFZGdlIGRlc3BlY2lmaWVkQ2xvc3Vy
ZSgpIGNvbnN0CiAgICAgewpAQCAtNDcsMTIgKzQ5LDEyIEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKLXByaXZhdGU6CitwdWJsaWM6CiAg
ICAgQ2FsbFZhcmlhbnQgbV9jYWxsZWU7Ci0gICAgdWludDMyX3QgbV9jb3VudDsKKyAgICBDYWxs
RWRnZUNvdW50VHlwZSBtX2NvdW50OwogfTsKIAotaW5saW5lIENhbGxFZGdlOjpDYWxsRWRnZShD
YWxsVmFyaWFudCBjYWxsZWUsIHVpbnQzMl90IGNvdW50KQoraW5saW5lIENhbGxFZGdlOjpDYWxs
RWRnZShDYWxsVmFyaWFudCBjYWxsZWUsIENhbGxFZGdlQ291bnRUeXBlIGNvdW50KQogICAgIDog
bV9jYWxsZWUoY2FsbGVlKQogICAgICwgbV9jb3VudChjb3VudCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxFZGdlUHJvZmlsZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzIwYjVjNGE4MGJkZWY1NWFjOWI4NzU1ZTJlZGNhYTFjMDY3NTI4ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUuY3BwCkBA
IC0wLDAgKzEsMzYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIK
KworI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQ2FsbEVkZ2VMaXN0IENhbGxFZGdlUHJvZmlsZTo6
Y2FsbEVkZ2VzKCkgY29uc3QKK3sKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xv
Y2spOworICAgIAorICAgIENhbGxFZGdlTGlzdCByZXN1bHQ7CisgICAgCisgICAgQ2FsbFZhcmlh
bnQgcHJpbWFyeUNhbGxlZSA9IG1fcHJpbWFyeUNhbGxlZTsKKyAgICBDYWxsRWRnZUNvdW50VHlw
ZSBudW1DYWxsc1RvUHJpbWFyeSA9IG1fbnVtQ2FsbHNUb1ByaW1hcnk7CisgICAgLy8gRGVmZW5k
IGFnYWluc3QgcmFjZXMuIFRoZXNlIGZpZWxkcyBhcmUgbW9kaWZpZWQgYnkgdGhlIGxvZyBwcm9j
ZXNzb3Igd2l0aG91dCBsb2NraW5nLgorICAgIGlmICghIXByaW1hcnlDYWxsZWUgJiYgbnVtQ2Fs
bHNUb1ByaW1hcnkpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoQ2FsbEVkZ2UocHJpbWFyeUNhbGxl
ZSwgbnVtQ2FsbHNUb1ByaW1hcnkpKTsKKyAgICAKKyAgICBpZiAobV9vdGhlckNhbGxlZXMpIHsK
KyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgaWYgdGhlIHByaW1hcnkgdGhyZWFkIGhhZCBqdXN0
IGNyZWF0ZWQgYSBtX290aGVyQ2FsbGVzIHdoaWxlIGxvZworICAgICAgICAvLyBwcm9jZXNzaW5n
LCB3ZSBzZWUgYSBjb25zaXN0ZW50bHkgY3JlYXRlZCBvbmUuIFRoZSBsb2NrIGJlaW5nIGhlbGQg
aXMgaW5zdWZmaWNpZW50IGZvcgorICAgICAgICAvLyB0aGlzLCBzaW5jZSB0aGUgbG9nIHByb2Nl
c3NvciB3aWxsIG9ubHkgZ3JhYiB0aGUgbG9jayB3aGVuIG1lcmdpbmcgdGhlIHNlY29uZGFyeQor
ICAgICAgICAvLyBzcGVjdHJ1bSBpbnRvIHRoZSBwcmltYXJ5IG9uZSBidXQgbWF5IHN0aWxsIGNy
ZWF0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2l0aG91dCBob2xkaW5nCisgICAgICAgIC8vIGxvY2tz
LgorICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKKyAgICAgICAgZm9yIChDYWxsRWRnZSYg
ZW50cnkgOiBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQpIHsKKyAgICAgICAgICAgIC8vIERl
ZmVuZCBhZ2FpbnN0IHRoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBwcmltYXJ5IGR1cGxpY2F0ZXMg
YW4gZW50cnkgaW4gdGhlIHNlY29uZGFyeQorICAgICAgICAgICAgLy8gc3BlY3RydW0uIFRoYXQg
Y2FuIGhhcHBlbiB3aGVuIHRoZSBHQyByZW1vdmVzIHRoZSBwcmltYXJ5LiBXZSBjb3VsZCBoYXZl
IHRoZSBHQyBmaXgKKyAgICAgICAgICAgIC8vIHRoZSBzaXR1YXRpb24gYnkgY2hhbmdpbmcgdGhl
IHByaW1hcnkgdG8gYmUgc29tZXRoaW5nIGZyb20gdGhlIHNlY29uZGFyeSBzcGVjdHJ1bSwKKyAg
ICAgICAgICAgIC8vIGJ1dCB0aGlzIGZpeCBzZWVtcyBzaW1wbGVyIHRvIGltcGxlbWVudCBhbmQg
YWxzbyBjaGVhcGVyLgorICAgICAgICAgICAgaWYgKGVudHJ5LmNhbGxlZSgpID09IHJlc3VsdFsw
XS5jYWxsZWUoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdFswXSA9IENhbGxFZGdlKHJlc3Vs
dFswXS5jYWxsZWUoKSwgZW50cnkuY291bnQoKSArIHJlc3VsdFswXS5jb3VudCgpKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChlbnRyeSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
c3RkOjpzb3J0KHJlc3VsdC5iZWdpbigpLCByZXN1bHQuZW5kKCksIFtdIChjb25zdCBDYWxsRWRn
ZSYgYSwgY29uc3QgQ2FsbEVkZ2UmIGIpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIGEu
Y291bnQoKSA+IGIuY291bnQoKTsKKyAgICAgICAgfSk7CisgICAgCisgICAgaWYgKHJlc3VsdC5z
aXplKCkgPj0gMikKKyAgICAgICAgQVNTRVJUKHJlc3VsdFswXS5jb3VudCgpID49IHJlc3VsdC5s
YXN0KCkuY291bnQoKSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQ2FsbEVkZ2VD
b3VudFR5cGUgQ2FsbEVkZ2VQcm9maWxlOjpudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0Cit7
CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgcmVzdWx0ID0gMDsKKyAgICBmb3IgKENhbGxFZGdlJiBl
ZGdlIDogY2FsbEVkZ2VzKCkpCisgICAgICAgIHJlc3VsdCArPSBlZGdlLmNvdW50KCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgd29ydGhEZXNwZWNpZnlpbmcoY29uc3Qg
Q2FsbFZhcmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuICFIZWFwOjppc01hcmtlZCh2YXJp
YW50LnJhd0NhbGxlZUNlbGwoKSkKKyAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQodmFyaWFudC5k
ZXNwZWNpZmllZENsb3N1cmUoKS5yYXdDYWxsZWVDZWxsKCkpOworfQorCitib29sIENhbGxFZGdl
UHJvZmlsZTo6d29ydGhEZXNwZWNpZnlpbmcoKQoreworICAgIGlmIChtX2Nsb3N1cmVzQXJlRGVz
cGVjaWZpZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBib29sIGRpZFNlZUVu
dHJ5ID0gZmFsc2U7CisgICAgCisgICAgaWYgKCEhbV9wcmltYXJ5Q2FsbGVlKSB7CisgICAgICAg
IGRpZFNlZUVudHJ5ID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFKU0M6OndvcnRoRGVzcGVjaWZ5aW5n
KG1fcHJpbWFyeUNhbGxlZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICBk
aWRTZWVFbnRyeSA9IHRydWU7CisgICAgICAgICAgICBpZiAoIUpTQzo6d29ydGhEZXNwZWNpZnlp
bmcobV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGRp
ZFNlZUVudHJ5OworfQorCit2b2lkIENhbGxFZGdlUHJvZmlsZTo6dmlzaXRXZWFrKCkKK3sKKyAg
ICBpZiAoIW1fcHJpbWFyeUNhbGxlZSAmJiAhbV9vdGhlckNhbGxlZXMpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIAor
ICAgIC8vIFNlZSBpZiBhbnl0aGluZyBpcyBkZWFkIGFuZCBpZiB0aGF0IGNhbiBiZSByZWN0aWZp
ZWQgYnkgZGVzcGVjaWZ5aW5nLgorICAgIGlmICh3b3J0aERlc3BlY2lmeWluZygpKSB7CisgICAg
ICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsKKyAgICAgICAgCisgICAgICAgIGlmICghIW1f
cHJpbWFyeUNhbGxlZSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChtX3ByaW1hcnlDYWxs
ZWUuZGVzcGVjaWZpZWRDbG9zdXJlKCksIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOworICAgICAgICAK
KyAgICAgICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7CisgICAgICAg
ICAgICAgICAgbmV3U3BlY3RydW0uYWRkKAorICAgICAgICAgICAgICAgICAgICBtX290aGVyQ2Fs
bGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCkuZGVzcGVjaWZpZWRDbG9zdXJlKCksCisgICAg
ICAgICAgICAgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVmVjdG9yPENhbGxT
cGVjdHJ1bTo6S2V5QW5kQ291bnQ+IGxpc3QgPSBuZXdTcGVjdHJ1bS5idWlsZExpc3QoKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobGlzdC5zaXplKCkpOworICAgICAgICBtX3ByaW1hcnlDYWxs
ZWUgPSBsaXN0Lmxhc3QoKS5rZXk7CisgICAgICAgIG1fbnVtQ2FsbHNUb1ByaW1hcnkgPSBsaXN0
Lmxhc3QoKS5jb3VudDsKKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcykgewor
ICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisKKyAgICAg
ICAgICAgIC8vIFdlIGNvdWxkIGhhdmUgYSBzaXR1YXRpb24gd2hlcmUgdGhlIEdDIGNsZWFycyB0
aGUgcHJpbWFyeSBhbmQgdGhlbiBsb2cgcHJvY2Vzc2luZworICAgICAgICAgICAgLy8gcmVpbnN0
YXRlcyBpdCB3aXRob3V0IGV2ZXIgZG9pbmcgYW4gYWRkU2xvdyBhbmQgc3Vic2VxdWVudCBtZXJn
ZUJhY2suIEluIHN1Y2ggYSBjYXNlCisgICAgICAgICAgICAvLyB0aGUgcHJpbWFyeSBjb3VsZCBk
dXBsaWNhdGUgYW4gZW50cnkgaW4gb3RoZXJDYWxsZWVzLCB3aGljaCBtZWFucyB0aGF0IGV2ZW4g
dGhvdWdoIHdlCisgICAgICAgICAgICAvLyBoYWQgYW4gb3RoZXJDYWxsZWVzIG9iamVjdCwgdGhl
IGxpc3Qgc2l6ZSBpcyBqdXN0IDEuCisgICAgICAgICAgICBpZiAobGlzdC5zaXplKCkgPj0gMikg
eworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3Quc2l6ZSgpIC0gMTsgaS0t
OykKKyAgICAgICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmFwcGVu
ZChDYWxsRWRnZShsaXN0W2ldLmtleSwgbGlzdFtpXS5jb3VudCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQgPSB0
cnVlOworICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoISFt
X3ByaW1hcnlDYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fcHJpbWFyeUNhbGxlZS5yYXdDYWxs
ZWVDZWxsKCkpKSB7CisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IG1fbnVtQ2Fs
bHNUb1ByaW1hcnk7CisgICAgICAgIAorICAgICAgICBtX3ByaW1hcnlDYWxsZWUgPSBDYWxsVmFy
aWFudCgpOworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5ID0gMDsKKyAgICB9CisgICAgCisg
ICAgaWYgKG1fb3RoZXJDYWxsZWVzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAg
IGlmIChIZWFwOjppc01hcmtlZChtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVl
KCkucmF3Q2FsbGVlQ2VsbCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgKz0gbV9vdGhlckNhbGxl
ZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCk7CisgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+
bV9wcm9jZXNzZWRbaS0tXSA9IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5sYXN0KCk7Cisg
ICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQucmVtb3ZlTGFzdCgpOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBPbmx5IGV4aXN0cyB3aGlsZSB3ZSBhcmUgcHJv
Y2Vzc2luZyB0aGUgbG9nLgorICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9vdGhlckNhbGxlZXMt
Pm1fdGVtcG9yYXJ5U3BlY3RydW0pOworICAgIH0KK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6
OmFkZFNsb3coQ2FsbFZhcmlhbnQgY2FsbGVlLCBDYWxsRWRnZVByb2ZpbGVWZWN0b3ImIG1lcmdl
QmFja0xvZykKK3sKKyAgICAvLyBUaGlzIGV4aXN0cyB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhl
IHNwZWN0cnVtIHdhc24ndCBjcmVhdGVkIHlldCwgb3Igd2UncmUgc3RvcmluZyB0byBhCisgICAg
Ly8gcGFydGljdWxhciBzcGVjdHJ1bSBmb3IgdGhlIGZpcnN0IHRpbWUgZHVyaW5nIGEgbG9nIHBy
b2Nlc3NpbmcgaXRlcmF0aW9uLgorICAgIAorICAgIGlmICghbV9vdGhlckNhbGxlZXMpIHsKKyAg
ICAgICAgbV9vdGhlckNhbGxlZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlY29uZGFyeT4oKTsKKyAg
ICAgICAgLy8gSWYgYSBjb21waWxlciB0aHJlYWQgbm90aWNlcyB0aGUgbV9vdGhlckNhbGxlZXMg
YmVpbmcgbm9uLW51bGwsIHdlIHdhbnQgdG8gbWFrZSBzdXJlCisgICAgICAgIC8vIHRoYXQgaXQg
c2VlcyBhIGZ1bGx5IGNyZWF0ZWQgb25lLgorICAgICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OworICAgIH0KKyAgICAKKyAgICBpZiAoIW1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0
cnVtKSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsU3BlY3RydW0+KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5zaXplKCk7IGktLTspIHsKKyAgICAgICAgICAg
IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5hZGQoCisgICAgICAgICAgICAg
ICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNhbGxlZSgpLAorICAgICAgICAgICAg
ICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZFtpXS5jb3VudCgpKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIGZpcnN0IHRp
bWUgd2UncmUgc2VlaW5nIHRoaXMgcHJvZmlsZSBkdXJpbmcgdGhpcyBsb2cKKyAgICAgICAgLy8g
cHJvY2Vzc2luZyBpdGVyYXRpb24uCisgICAgICAgIG1lcmdlQmFja0xvZy5hcHBlbmQodGhpcyk7
CisgICAgfQorICAgIAorICAgIG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLT5h
ZGQoY2FsbGVlKTsKK30KKwordm9pZCBDYWxsRWRnZVByb2ZpbGU6Om1lcmdlQmFjaygpCit7Cisg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAKKyAgICBSRUxFQVNF
X0FTU0VSVChtX290aGVyQ2FsbGVlcyk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9vdGhlckNhbGxl
ZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0pOworICAgIAorICAgIGlmICghIW1fcHJpbWFyeUNhbGxl
ZSkKKyAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0tPmFkZChtX3By
aW1hcnlDYWxsZWUsIG1fbnVtQ2FsbHNUb1ByaW1hcnkpOworICAgIAorICAgIGlmICghbV9jbG9z
dXJlc0FyZURlc3BlY2lmaWVkKSB7CisgICAgICAgIENhbGxTcGVjdHJ1bSBuZXdTcGVjdHJ1bTsK
KyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICptX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlT
cGVjdHJ1bSkKKyAgICAgICAgICAgIG5ld1NwZWN0cnVtLmFkZChlbnRyeS5rZXkuZGVzcGVjaWZp
ZWRDbG9zdXJlKCksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmIChuZXdTcGVj
dHJ1bS5zaXplKCkgPCBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+c2l6ZSgp
KSB7CisgICAgICAgICAgICAqbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBu
ZXdTcGVjdHJ1bTsKKyAgICAgICAgICAgIG1fY2xvc3VyZXNBcmVEZXNwZWNpZmllZCA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgVmVjdG9yPENhbGxTcGVjdHJ1bTo6S2V5QW5k
Q291bnQ+IGxpc3QgPSBtX290aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bS0+YnVpbGRM
aXN0KCk7CisgICAgbV9vdGhlckNhbGxlZXMtPm1fdGVtcG9yYXJ5U3BlY3RydW0gPSBudWxscHRy
OworICAgIAorICAgIG1fcHJpbWFyeUNhbGxlZSA9IGxpc3QubGFzdCgpLmtleTsKKyAgICBtX251
bUNhbGxzVG9QcmltYXJ5ID0gbGlzdC5sYXN0KCkuY291bnQ7CisgICAgbGlzdC5yZW1vdmVMYXN0
KCk7CisgICAgCisgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkLmNsZWFyKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBjb3VudCA9IG1heEtub3duQ2FsbGVlczsgY291bnQtLSAmJiAhbGlzdC5p
c0VtcHR5KCk7KSB7CisgICAgICAgIG1fb3RoZXJDYWxsZWVzLT5tX3Byb2Nlc3NlZC5hcHBlbmQo
Q2FsbEVkZ2UobGlzdC5sYXN0KCkua2V5LCBsaXN0Lmxhc3QoKS5jb3VudCkpOworICAgICAgICBs
aXN0LnJlbW92ZUxhc3QoKTsKKyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbGlz
dC5zaXplKCk7IGktLTspCisgICAgICAgIG1fbnVtQ2FsbHNUb1Vua25vd25DZWxsICs9IGxpc3Rb
aV0uY291bnQ7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VQcm9maWxlOjpmYWRlQnlIYWxmKCkKK3sKKyAg
ICBtX251bUNhbGxzVG9QcmltYXJ5ID4+PSAxOworICAgIG1fbnVtQ2FsbHNUb05vdENlbGwgPj49
IDE7CisgICAgbV9udW1DYWxsc1RvVW5rbm93bkNlbGwgPj49IDE7CisgICAgbV90b3RhbENvdW50
ID4+PSAxOworICAgIAorICAgIGlmIChtX290aGVyQ2FsbGVlcykgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWQuc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0gPSBDYWxsRWRnZSgKKyAg
ICAgICAgICAgICAgICBtX290aGVyQ2FsbGVlcy0+bV9wcm9jZXNzZWRbaV0uY2FsbGVlKCksCisg
ICAgICAgICAgICAgICAgbV9vdGhlckNhbGxlZXMtPm1fcHJvY2Vzc2VkW2ldLmNvdW50KCkgPj4g
MSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX290aGVyQ2FsbGVlcy0+bV90
ZW1wb3JhcnlTcGVjdHJ1bSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6ICptX290
aGVyQ2FsbGVlcy0+bV90ZW1wb3JhcnlTcGVjdHJ1bSkKKyAgICAgICAgICAgICAgICBlbnRyeS52
YWx1ZSA+Pj0gMTsKKyAgICAgICAgfQorICAgIH0KK30KKworQ2FsbEVkZ2VMb2c6OkNhbGxFZGdl
TG9nKCkKKyAgICA6IG1fc2NhbGVkTG9nSW5kZXgobG9nU2l6ZSAqIHNpemVvZihFbnRyeSkpCit7
CisgICAgQVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkpKTsKK30KKwor
Q2FsbEVkZ2VMb2c6On5DYWxsRWRnZUxvZygpIHsgfQorCitib29sIENhbGxFZGdlTG9nOjppc0Vu
YWJsZWQoKQoreworICAgIHJldHVybiBPcHRpb25zOjplbmFibGVDYWxsRWRnZVByb2ZpbGluZygp
ICYmIE9wdGlvbnM6OnVzZUZUTEpJVCgpOworfQorCisjaWYgRU5BQkxFKEpJVCkKKworZXh0ZXJu
ICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQgb3BlcmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKENhbGxF
ZGdlTG9nKikgV1RGX0lOVEVSTkFMOworZXh0ZXJuICJDIiBKSVRfT1BFUkFUSU9OIHZvaWQgb3Bl
cmF0aW9uUHJvY2Vzc0NhbGxFZGdlTG9nKENhbGxFZGdlTG9nKiBsb2cpCit7CisgICAgbG9nLT5w
cm9jZXNzTG9nKCk7Cit9CisKK3ZvaWQgQ2FsbEVkZ2VMb2c6OmVtaXRMb2dDb2RlKENDYWxsSGVs
cGVycyYgaml0LCBDYWxsRWRnZVByb2ZpbGUmIHByb2ZpbGUsIEpTVmFsdWVSZWdzIGNhbGxlZVJl
Z3MpCit7CisgICAgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMgPSAxOworICAgIAor
ICAgIEdQUlJlZyBzY3JhdGNoR1BSOworICAgIGlmICghY2FsbGVlUmVncy51c2VzKEdQUkluZm86
OnJlZ1QwKSkKKyAgICAgICAgc2NyYXRjaEdQUiA9IEdQUkluZm86OnJlZ1QwOworICAgIGVsc2Ug
aWYgKCFjYWxsZWVSZWdzLnVzZXMoR1BSSW5mbzo6cmVnVDEpKQorICAgICAgICBzY3JhdGNoR1BS
ID0gR1BSSW5mbzo6cmVnVDE7CisgICAgZWxzZQorICAgICAgICBzY3JhdGNoR1BSID0gR1BSSW5m
bzo6cmVnVDI7CisgICAgCisgICAgaml0LmxvYWQzMigmbV9zY2FsZWRMb2dJbmRleCwgc2NyYXRj
aEdQUik7CisgICAgCisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gaml0LmJyYW5jaFRlc3Qz
MihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIHNjcmF0Y2hHUFIpOworICAgIAorICAgIEFTU0VSVF9V
TlVTRUQobnVtYmVyT2ZBcmd1bWVudHMsIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgPj0gMSAr
IG51bWJlck9mQXJndW1lbnRzKTsKKyAgICAKKyAgICBqaXQuc3ViUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSksIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgIAorICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBz
aXplb2YoSlNWYWx1ZSkpKTsKKyAgICBqaXQuc2V0dXBBcmd1bWVudHMoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHRoaXMpKTsKKyAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25Qcm9jZXNzQ2FsbEVkZ2VMb2cpKSwg
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7
CisgICAgaml0LmxvYWRWYWx1ZShDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoQ0NhbGxIZWxwZXJzOjpz
dGFja1BvaW50ZXJSZWdpc3Rlciwgc2l6ZW9mKEpTVmFsdWUpKSwgY2FsbGVlUmVncyk7CisgICAg
CisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVu
dEJ5dGVzKCkpLCBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAKKyAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihsb2dTaXplICogc2l6ZW9mKEVu
dHJ5KSksIHNjcmF0Y2hHUFIpOworICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQuc3ViMzIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKEVudHJ5KSksIHNjcmF0Y2hHUFIpOwor
ICAgIGppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsICZtX3NjYWxlZExvZ0luZGV4KTsKKyAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2xvZyksIHNjcmF0Y2hHUFIpOwor
ICAgIGppdC5zdG9yZVZhbHVlKGNhbGxlZVJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fdmFsdWUpKSk7CisgICAgaml0LnN0b3Jl
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cigmcHJvZmlsZSksIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIG1fcHJvZmlsZSkpKTsK
K30KKwordm9pZCBDYWxsRWRnZUxvZzo6ZW1pdExvZ0NvZGUoCisgICAgQ0NhbGxIZWxwZXJzJiBq
aXQsIE93blB0cjxDYWxsRWRnZVByb2ZpbGU+JiBwcm9maWxlUG9pbnRlciwgSlNWYWx1ZVJlZ3Mg
Y2FsbGVlUmVncykKK3sKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgcHJvZmlsZVBvaW50ZXIuY3JlYXRlVHJhbnNhY3Rpb25hbGx5KCk7CisgICAgZW1p
dExvZ0NvZGUoaml0LCAqcHJvZmlsZVBvaW50ZXIsIGNhbGxlZVJlZ3MpOworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKKwordm9pZCBDYWxsRWRnZUxvZzo6cHJvY2Vzc0xvZygpCit7CisgICAg
QVNTRVJUKCEobV9zY2FsZWRMb2dJbmRleCAlIHNpemVvZihFbnRyeSkpKTsKKyAgICAKKyAgICBp
ZiAoT3B0aW9uczo6Y2FsbEVkZ2VQcm9maWxlUmVhbGx5UHJvY2Vzc2VzTG9nKCkpIHsKKyAgICAg
ICAgQ2FsbEVkZ2VQcm9maWxlVmVjdG9yIG1lcmdlQmFja0xvZzsKKyAgICAgICAgCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1fc2NhbGVkTG9nSW5kZXggLyBzaXplb2YoRW50cnkpOyBpIDwg
bG9nU2l6ZTsgKytpKQorICAgICAgICAgICAgbV9sb2dbaV0ubV9wcm9maWxlLT5hZGQobV9sb2db
aV0ubV92YWx1ZSwgbWVyZ2VCYWNrTG9nKTsKKyAgICAgICAgCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1lcmdlQmFja0xvZy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBtZXJnZUJhY2tM
b2dbaV0tPm1lcmdlQmFjaygpOworICAgIH0KKyAgICAKKyAgICBtX3NjYWxlZExvZ0luZGV4ID0g
bG9nU2l6ZSAqIHNpemVvZihFbnRyeSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGFlZTYyNzM2MTFjNzk3M2MwYjAzNzk5NzU0YjhiZDlmMjYxZWEzYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGUu
aApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIENhbGxFZGdlUHJvZmlsZV9oCisjZGVmaW5lIENhbGxFZGdlUHJv
ZmlsZV9oCisKKyNpbmNsdWRlICJDYWxsRWRnZS5oIgorI2luY2x1ZGUgIkNhbGxWYXJpYW50Lmgi
CisjaW5jbHVkZSAiQ29uY3VycmVudEpJVExvY2suaCIKKyNpbmNsdWRlICJHUFJJbmZvLmgiCisj
aW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgQ0NhbGxIZWxwZXJzOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworCitjbGFzcyBDYWxsRWRnZUxvZzsKK2NsYXNzIENhbGxFZGdlUHJvZmlsZTsKK3R5cGVkZWYg
VmVjdG9yPENhbGxFZGdlUHJvZmlsZSosIDEwPiBDYWxsRWRnZVByb2ZpbGVWZWN0b3I7CisKK2Ns
YXNzIENhbGxFZGdlUHJvZmlsZSB7CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VQcm9maWxlKCk7Cisg
ICAgCisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2FsbHNUb05vdENlbGwoKSBjb25zdCB7IHJl
dHVybiBtX251bUNhbGxzVG9Ob3RDZWxsOyB9CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbnVtQ2Fs
bHNUb1Vua25vd25DZWxsKCkgY29uc3QgeyByZXR1cm4gbV9udW1DYWxsc1RvVW5rbm93bkNlbGw7
IH0KKyAgICBDYWxsRWRnZUNvdW50VHlwZSBudW1DYWxsc1RvS25vd25DZWxscygpIGNvbnN0Owor
ICAgIAorICAgIENhbGxFZGdlQ291bnRUeXBlIHRvdGFsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBt
X3RvdGFsQ291bnQ7IH0KKyAgICAKKyAgICAvLyBDYWxsIHdoaWxlIGhvbGRpbmcgdGhlIG93bmlu
ZyBDb2RlQmxvY2sncyBsb2NrLgorICAgIENhbGxFZGdlTGlzdCBjYWxsRWRnZXMoKSBjb25zdDsK
KyAgICAKKyAgICB2b2lkIHZpc2l0V2VhaygpOworICAgIAorcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgQ2FsbEVkZ2VMb2c7CisgICAgCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEtu
b3duQ2FsbGVlcyA9IDU7CisgICAgCisgICAgdm9pZCBhZGQoSlNWYWx1ZSwgQ2FsbEVkZ2VQcm9m
aWxlVmVjdG9yJiBtZXJnZUJhY2tMb2cpOworICAgIAorICAgIGJvb2wgd29ydGhEZXNwZWNpZnlp
bmcoKTsKKyAgICB2b2lkIGFkZFNsb3coQ2FsbFZhcmlhbnQsIENhbGxFZGdlUHJvZmlsZVZlY3Rv
ciYgbWVyZ2VCYWNrTG9nKTsKKyAgICB2b2lkIG1lcmdlQmFjaygpOworICAgIHZvaWQgZmFkZUJ5
SGFsZigpOworICAgIAorICAgIC8vIEl0J3MgY2hlYXBlciB0byBsZXQgdGhpcyBoYXZlIGl0cyBv
d24gbG9jay4gSXQgbmVlZHMgdG8gYmUgYWJsZSB0byBmaW5kIHdoaWNoIGxvY2sgdG8KKyAgICAv
LyBsb2NrLiBOb3JtYWxseSBpdCB3b3VsZCBsb2NrIHRoZSBvd25pbmcgQ29kZUJsb2NrJ3MgbG9j
aywgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBhCisgICAgLy8gcG9pbnRlci13aWR0aCB3b3JkIHRv
IHBvaW50IGF0IHRoZSBDb2RlQmxvY2suIEhhdmluZyB0aGUgYnl0ZS1zaXplZCBsb2NrIGhlcmUg
aXMKKyAgICAvLyBjaGVhcGVyLiBIb3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlbGF0aW9u
c2hpcCB3aXRoIHRoZSBDb2RlQmxvY2sgbG9jayBpczoKKyAgICAvLyBhY3F1aXJlIHRoZSBDb2Rl
QmxvY2sgbG9jayBiZWZvcmUgdGhpcyBvbmUuCisgICAgbXV0YWJsZSBDb25jdXJyZW50SklUTG9j
ayBtX2xvY2s7CisgICAgCisgICAgYm9vbCBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQ7CisgICAg
CisgICAgQ2FsbEVkZ2VDb3VudFR5cGUgbV9udW1DYWxsc1RvUHJpbWFyeTsKKyAgICBDYWxsRWRn
ZUNvdW50VHlwZSBtX251bUNhbGxzVG9Ob3RDZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1f
bnVtQ2FsbHNUb1Vua25vd25DZWxsOworICAgIENhbGxFZGdlQ291bnRUeXBlIG1fdG90YWxDb3Vu
dDsKKyAgICBDYWxsVmFyaWFudCBtX3ByaW1hcnlDYWxsZWU7CisgICAgCisgICAgdHlwZWRlZiBT
cGVjdHJ1bTxDYWxsVmFyaWFudCwgQ2FsbEVkZ2VDb3VudFR5cGU+IENhbGxTcGVjdHJ1bTsKKyAg
ICAKKyAgICBzdHJ1Y3QgU2Vjb25kYXJ5IHsKKyAgICAgICAgVmVjdG9yPENhbGxFZGdlPiBtX3By
b2Nlc3NlZDsgLy8gUHJvY2Vzc2VkIGJ1dCBub3QgbmVjZXNzYXJpbHkgc29ydGVkLgorICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbFNwZWN0cnVtPiBtX3RlbXBvcmFyeVNwZWN0cnVtOworICAg
IH07CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlY29uZGFyeT4gbV9vdGhlckNhbGxlZXM7
Cit9OworCitjbGFzcyBDYWxsRWRnZUxvZyB7CitwdWJsaWM6CisgICAgQ2FsbEVkZ2VMb2coKTsK
KyAgICB+Q2FsbEVkZ2VMb2coKTsKKworICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZCgpOworICAg
IAorI2lmIEVOQUJMRShKSVQpCisgICAgdm9pZCBlbWl0TG9nQ29kZShDQ2FsbEhlbHBlcnMmLCBD
YWxsRWRnZVByb2ZpbGUmLCBKU1ZhbHVlUmVncyBjYWxsZWVSZWdzKTsgLy8gQXNzdW1lcyB0aGF0
IHN0YWNrIGlzIGFsaWduZWQsIGFsbCB2b2xhdGlsZSByZWdpc3RlcnMgLSBvdGhlciB0aGFuIGNh
bGxlZUdQUiAtIGFyZSBjbG9iYmVyYWJsZSwgYW5kIHRoZSBwYXJhbWV0ZXIgc3BhY2UgaXMgaW4g
dXNlLgorICAgIAorICAgIC8vIFNhbWUgYXMgYWJvdmUgYnV0IGNyZWF0ZXMgYSBDYWxsRWRnZVBy
b2ZpbGUgaW5zdGFuY2UgaWYgb25lIGRpZCBub3QgYWxyZWFkeSBleGlzdC4gRG9lcworICAgIC8v
IHRoaXMgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIgYnkgY2FsbGluZyBPd25QdHI6OmNyZWF0ZVRy
YW5zYWN0aW9uYWxseS4KKyAgICB2b2lkIGVtaXRMb2dDb2RlKENDYWxsSGVscGVycyYsIE93blB0
cjxDYWxsRWRnZVByb2ZpbGU+JiwgSlNWYWx1ZVJlZ3MgY2FsbGVlUmVncyk7CisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKKyAgICAKKyAgICB2b2lkIHByb2Nlc3NMb2coKTsKKyAgICAKK3ByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBsb2dTaXplID0gMTAwMDA7CisgICAgCisgICAgc3RydWN0IEVudHJ5IHsK
KyAgICAgICAgSlNWYWx1ZSBtX3ZhbHVlOworICAgICAgICBDYWxsRWRnZVByb2ZpbGUqIG1fcHJv
ZmlsZTsKKyAgICB9OworICAgIAorICAgIHVuc2lnbmVkIG1fc2NhbGVkTG9nSW5kZXg7CisgICAg
RW50cnkgbV9sb2dbbG9nU2l6ZV07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIENhbGxFZGdlUHJvZmlsZV9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsRWRnZVByb2ZpbGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2ZWEzMjBm
OTVmZTg3MzU3ZmQxODI0MGZlMTE0MjdjY2NhNTk4MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbEVkZ2VQcm9maWxlSW5saW5lcy5oCkBAIC0w
LDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBDYWxsRWRnZVByb2ZpbGVJbmxpbmVzX2gKKyNkZWZpbmUgQ2FsbEVkZ2VQcm9m
aWxlSW5saW5lc19oCisKKyNpbmNsdWRlICJDYWxsRWRnZVByb2ZpbGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2lubGluZSBDYWxsRWRnZVByb2ZpbGU6OkNhbGxFZGdlUHJvZmlsZSgpCisgICAg
OiBtX2Nsb3N1cmVzQXJlRGVzcGVjaWZpZWQoZmFsc2UpCisgICAgLCBtX251bUNhbGxzVG9Qcmlt
YXJ5KDApCisgICAgLCBtX251bUNhbGxzVG9Ob3RDZWxsKDApCisgICAgLCBtX251bUNhbGxzVG9V
bmtub3duQ2VsbCgwKQorICAgICwgbV90b3RhbENvdW50KDApCisgICAgLCBtX3ByaW1hcnlDYWxs
ZWUobnVsbHB0cikKK3sKK30KKworQUxXQVlTX0lOTElORSB2b2lkIENhbGxFZGdlUHJvZmlsZTo6
YWRkKEpTVmFsdWUgdmFsdWUsIENhbGxFZGdlUHJvZmlsZVZlY3RvciYgbWVyZ2VCYWNrTG9nKQor
eworICAgIHVuc2lnbmVkIG5ld1RvdGFsQ291bnQgPSBtX3RvdGFsQ291bnQgKyAxOworICAgIGlm
IChVTkxJS0VMWSghbmV3VG90YWxDb3VudCkpIHsKKyAgICAgICAgZmFkZUJ5SGFsZigpOyAvLyBU
YWNrbGUgb3ZlcmZsb3dzIGJ5IGRpdmlkaW5nIGFsbCBjb3VudHMgYnkgdHdvLgorICAgICAgICBu
ZXdUb3RhbENvdW50ID0gbV90b3RhbENvdW50ICsgMTsKKyAgICB9CisgICAgQVNTRVJUKG5ld1Rv
dGFsQ291bnQpOworICAgIG1fdG90YWxDb3VudCA9IG5ld1RvdGFsQ291bnQ7CisgICAgCisgICAg
aWYgKFVOTElLRUxZKCF2YWx1ZS5pc0NlbGwoKSkpIHsKKyAgICAgICAgbV9udW1DYWxsc1RvTm90
Q2VsbCsrOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ2FsbFZhcmlhbnQgY2FsbGVl
ID0gQ2FsbFZhcmlhbnQodmFsdWUuYXNDZWxsKCkpOworICAgIAorICAgIGlmIChtX2Nsb3N1cmVz
QXJlRGVzcGVjaWZpZWQpCisgICAgICAgIGNhbGxlZSA9IGNhbGxlZS5kZXNwZWNpZmllZENsb3N1
cmUoKTsKKyAgICAKKyAgICBpZiAoVU5MSUtFTFkoIW1fcHJpbWFyeUNhbGxlZSkpIHsKKyAgICAg
ICAgbV9wcmltYXJ5Q2FsbGVlID0gY2FsbGVlOworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5
ID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgaWYgKExJS0VMWSht
X3ByaW1hcnlDYWxsZWUgPT0gY2FsbGVlKSkgeworICAgICAgICBtX251bUNhbGxzVG9QcmltYXJ5
Kys7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChVTkxJS0VMWSgh
bV9vdGhlckNhbGxlZXMpKSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBtZXJnZUJhY2tMb2cp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBDYWxsU3BlY3RydW0qIHNl
Y29uZGFyeSA9IG1fb3RoZXJDYWxsZWVzLT5tX3RlbXBvcmFyeVNwZWN0cnVtLmdldCgpOworICAg
IGlmICghc2Vjb25kYXJ5KSB7CisgICAgICAgIGFkZFNsb3coY2FsbGVlLCBtZXJnZUJhY2tMb2cp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBzZWNvbmRhcnktPmFkZChj
YWxsZWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENhbGxFZGdlUHJv
ZmlsZUlubGluZXNfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwCmluZGV4IGFkODg5MDU5MDk2ZDkyMmJmYjMyOGFhNWFjMzMyMjljZDQzYzQ1
MjYuLmMyODRjNWJiMTM1NDZhMmYxOWM0ZDQ3NzU2ZGJhNjEzNjdjZDkxYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3BwCkBAIC0yOSw5ICsy
OSw3IEBACiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkRGR1RodW5rcy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRlICJSZXBhdGNoLmgiCiAjaW5jbHVk
ZSAiUmVwYXRjaEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTM5LDE3ICszNywy
MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9pZCBDYWxsTGlua0luZm86OnVubGluayhSZXBhdGNo
QnVmZmVyJiByZXBhdGNoQnVmZmVyKQogewotICAgIGlmICghaXNMaW5rZWQoKSkgewotICAgICAg
ICAvLyBXZSBjb3VsZCBiZSBjYWxsZWQgZXZlbiBpZiB3ZSdyZSBub3QgbGlua2VkIGFueW1vcmUg
YmVjYXVzZSBvZiBob3cgcG9seW1vcnBoaWMgY2FsbHMKLSAgICAgICAgLy8gd29yay4gRWFjaCBj
YWxsc2l0ZSB3aXRoaW4gdGhlIHBvbHltb3JwaGljIGNhbGwgc3R1YiBtYXkgc2VwYXJhdGVseSBh
c2sgdXMgdG8gdW5saW5rKCkuCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc09uTGlzdCgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQoaXNMaW5rZWQoKSk7CiAgICAgCi0g
ICAgdW5saW5rRm9yKAotICAgICAgICByZXBhdGNoQnVmZmVyLCAqdGhpcywKLSAgICAgICAgKGNh
bGxUeXBlID09IENvbnN0cnVjdCB8fCBjYWxsVHlwZSA9PSBDb25zdHJ1Y3RWYXJhcmdzKT8gQ29k
ZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsLAotICAgICAgICBpc0ZUTCA/IE11c3RQcmVzZXJ2
ZVJlZ2lzdGVycyA6IFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQpOworICAgIGlmIChP
cHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSkKKyAgICAgICAgZGF0YUxvZygiVW5saW5raW5nIGNh
bGwgZnJvbSAiLCBjYWxsUmV0dXJuTG9jYXRpb24sICIgdG8gIiwgcG9pbnRlckR1bXAocmVwYXRj
aEJ1ZmZlci5jb2RlQmxvY2soKSksICJcbiIpOworCisgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChSZXBhdGNoQnVmZmVyOjpzdGFydE9m
QnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3Rlcihob3RQYXRoQmVnaW4pLCBzdGF0aWNfY2FzdDxN
YWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oY2FsbGVlR1BSKSwgMCk7CisgICAgcmVwYXRjaEJ1
ZmZlci5yZWxpbmsoCisgICAgICAgIGNhbGxSZXR1cm5Mb2NhdGlvbiwKKyAgICAgICAgcmVwYXRj
aEJ1ZmZlci5jb2RlQmxvY2soKS0+dm0oKS0+Z2V0Q1RJU3R1YihsaW5rVGh1bmtHZW5lcmF0b3JG
b3IoCisgICAgICAgICAgICAoY2FsbFR5cGUgPT0gQ29uc3RydWN0IHx8IGNhbGxUeXBlID09IENv
bnN0cnVjdFZhcmFyZ3MpPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwsCisgICAgICAg
ICAgICBpc0ZUTCA/IE11c3RQcmVzZXJ2ZVJlZ2lzdGVycyA6IFJlZ2lzdGVyUHJlc2VydmF0aW9u
Tm90UmVxdWlyZWQpKS5jb2RlKCkpOworICAgIGhhc1NlZW5TaG91bGRSZXBhdGNoID0gZmFsc2U7
CisgICAgY2FsbGVlLmNsZWFyKCk7CisgICAgc3R1Yi5jbGVhcigpOwogCiAgICAgLy8gSXQgd2ls
bCBiZSBvbiBhIGxpc3QgaWYgdGhlIGNhbGxlZSBoYXMgYSBjb2RlIGJsb2NrLgogICAgIGlmIChp
c09uTGlzdCgpKQpAQCAtNjAsMTIgKzYxLDEyIEBAIHZvaWQgQ2FsbExpbmtJbmZvOjp2aXNpdFdl
YWsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKIHsKICAgICBpZiAoaXNMaW5rZWQoKSkg
ewogICAgICAgICBpZiAoc3R1YikgewotICAgICAgICAgICAgaWYgKCFzdHViLT52aXNpdFdlYWso
cmVwYXRjaEJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmICghSGVhcDo6aXNNYXJrZWQoc3R1Yi0+
ZXhlY3V0YWJsZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NS
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAgICAg
ICAgICJDbGVhcmluZyBjbG9zdXJlIGNhbGwgZnJvbSAiLCAqcmVwYXRjaEJ1ZmZlci5jb2RlQmxv
Y2soKSwgIiB0byAiLAotICAgICAgICAgICAgICAgICAgICAgICAgbGlzdER1bXAoc3R1Yi0+dmFy
aWFudHMoKSksICIsIHN0dWIgcm91dGluZSAiLCBSYXdQb2ludGVyKHN0dWIuZ2V0KCkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIi5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc3R1
Yi0+ZXhlY3V0YWJsZSgpLT5oYXNoRm9yKHNwZWNpYWxpemF0aW9uS2luZCgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICIsIHN0dWIgcm91dGluZSAiLCBSYXdQb2ludGVyKHN0dWIuZ2V0KCkp
LCAiLlxuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHVubGluayhyZXBh
dGNoQnVmZmVyKTsKICAgICAgICAgICAgIH0KQEAgLTgyLDYgKzgzLDExIEBAIHZvaWQgQ2FsbExp
bmtJbmZvOjp2aXNpdFdlYWsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKICAgICB9CiAg
ICAgaWYgKCEhbGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKGxhc3RTZWVuQ2FsbGVl
LmdldCgpKSkKICAgICAgICAgbGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAKKyAgICBpZiAo
Y2FsbEVkZ2VQcm9maWxlKSB7CisgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOworICAgICAg
ICBjYWxsRWRnZVByb2ZpbGUtPnZpc2l0V2VhaygpOworICAgIH0KIH0KIAogQ2FsbExpbmtJbmZv
JiBDYWxsTGlua0luZm86OmR1bW15KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uaAppbmRleCA4MjlhMDc2ZTM2OGNjYWI4MWI1NDU5Nzc2NTVhYmQ3OTYy
OTlkMzcwLi4zYTY1ZWY1Y2Q5ZGQwMzgwOGJlZjUxYWQ3YzMzNjU0N2VjNGM4ZDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiwxMiArMjYsMTMgQEAKICNpZm5kZWYgQ2FsbExpbmtJbmZvX2gKICNkZWZpbmUgQ2FsbExp
bmtJbmZvX2gKIAorI2luY2x1ZGUgIkNhbGxFZGdlUHJvZmlsZS5oIgorI2luY2x1ZGUgIkNsb3N1
cmVDYWxsU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgotI2luY2x1ZGUg
IlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgi
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExp
c3QuaD4KQEAgLTgxLDE0ICs4MiwxNSBAQCBzdHJ1Y3QgQ2FsbExpbmtJbmZvIDogcHVibGljIEJh
c2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gewogICAgIENvZGVMb2NhdGlvbk5lYXJD
YWxsIGhvdFBhdGhPdGhlcjsKICAgICBKSVRXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVl
OwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKLSAgICBSZWZQ
dHI8UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU+IHN0dWI7CisgICAgUmVmUHRyPENsb3N1cmVD
YWxsU3R1YlJvdXRpbmU+IHN0dWI7CiAgICAgYm9vbCBpc0ZUTCA6IDE7CiAgICAgYm9vbCBoYXNT
ZWVuU2hvdWxkUmVwYXRjaCA6IDE7CiAgICAgYm9vbCBoYXNTZWVuQ2xvc3VyZSA6IDE7CiAgICAg
dW5zaWduZWQgY2FsbFR5cGUgOiA1OyAvLyBDYWxsVHlwZQogICAgIHVuc2lnbmVkIGNhbGxlZUdQ
UiA6IDg7Ci0gICAgdWludDMyX3Qgc2xvd1BhdGhDb3VudDsKKyAgICB1bnNpZ25lZCBzbG93UGF0
aENvdW50OwogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKKyAgICBPd25QdHI8Q2FsbEVkZ2VQ
cm9maWxlPiBjYWxsRWRnZVByb2ZpbGU7CiAKICAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4g
c3R1YiB8fCBjYWxsZWU7IH0KICAgICB2b2lkIHVubGluayhSZXBhdGNoQnVmZmVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRl
eCBjODI3MWUwYWEzYTcxMTljOTQ3MjQyMWQ0OTEyNGQ4Yzc0ZTY4YzYyLi5iOTcxYTYwMDBmN2Vl
ZTdlMzNkMjg0NmIyMTNiODVkOWE2ZWI5MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNyArNDcsNyBA
QCBDYWxsTGlua1N0YXR1czo6Q2FsbExpbmtTdGF0dXMoSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBtX3ZhcmlhbnRzLmFwcGVuZChDYWxsVmFyaWFudCh2
YWx1ZS5hc0NlbGwoKSkpOworICAgIG1fZWRnZXMuYXBwZW5kKENhbGxFZGdlKENhbGxWYXJpYW50
KHZhbHVlLmFzQ2VsbCgpKSwgMSkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZyb21MTEludChjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKQEAgLTEyOSw2
ICsxMjksMjMgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAg
ICAgLy8gV2UgZG9uJ3QgcmVhbGx5IG5lZWQgdGhpcywgYnV0IGFueXRpbWUgd2UgaGF2ZSB0byBk
ZWJ1ZyB0aGlzIGNvZGUsIGl0IGJlY29tZXMgaW5kaXNwZW5zYWJsZS4KICAgICBVTlVTRURfUEFS
QU0ocHJvZmlsZWRCbG9jayk7CiAgICAgCisgICAgaWYgKE9wdGlvbnM6OmNhbGxTdGF0dXNTaG91
bGRVc2VDYWxsRWRnZVByb2ZpbGUoKSkgeworICAgICAgICAvLyBBbHdheXMgdHJ1c3QgdGhlIGNh
bGwgZWRnZSBwcm9maWxlIG92ZXIgYW55dGhpbmcgZWxzZSBzaW5jZSB0aGlzIGhhcyBwcmVjaXNl
IGNvdW50cy4KKyAgICAgICAgLy8gSXQgY2FuIG1ha2UgdGhlIGJlc3QgcG9zc2libGUgZGVjaXNp
b24gYmVjYXVzZSBpdCBuZXZlciAiZm9yZ2V0cyIgd2hhdCBoYXBwZW5lZCBmb3IgYW55CisgICAg
ICAgIC8vIGNhbGwsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBmYWRpbmcgb3V0IHRoZSBjb3VudHMg
b2Ygb2xkIGNhbGxzIChmb3IgZXhhbXBsZSBpZiB0aGUKKyAgICAgICAgLy8gY291bnRlciB0eXBl
IGlzIDE2LWJpdCB0aGVuIGNhbGxzIHRoYXQgaGFwcGVuZWQgbW9yZSB0aGFuIDJeMTYgY2FsbHMg
YWdvIGFyZSBnaXZlbiBoYWxmCisgICAgICAgIC8vIHdlaWdodCwgYW5kIHRoaXMgY29tcG91bmRz
IGZvciBldmVyeSAyXjE1IFtzaWNdIGNhbGxzIGFmdGVyIHRoYXQpLiBUaGUgY29tYmluYXRpb24g
b2YKKyAgICAgICAgLy8gaGlnaCBmaWRlbGl0eSBmb3IgcmVjZW50IGNhbGxzIGFuZCBmYWRpbmcg
Zm9yIG9sZGVyIGNhbGxzIG1ha2VzIHRoaXMgdGhlIG1vc3QgdXNlZnVsCisgICAgICAgIC8vIG1l
Y2hhbWlzbSBvZiBjaG9vc2luZyBob3cgdG8gb3B0aW1pemUgZnV0dXJlIGNhbGxzLgorICAgICAg
ICBDYWxsRWRnZVByb2ZpbGUqIGVkZ2VQcm9maWxlID0gY2FsbExpbmtJbmZvLmNhbGxFZGdlUHJv
ZmlsZS5nZXQoKTsKKyAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CisgICAgICAgIGlmIChl
ZGdlUHJvZmlsZSkgeworICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0
ZUZyb21DYWxsRWRnZVByb2ZpbGUoZWRnZVByb2ZpbGUpOworICAgICAgICAgICAgaWYgKCEhcmVz
dWx0KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCiAgICAgcmV0dXJuIGNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKGxvY2tlciwgY2FsbExpbmtJ
bmZvKTsKIH0KIApAQCAtMTQ4LDY4ICsxNjUsMTIgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAogICAgIC8vIHRoYXQgaXMgc3RpbGwgbWFy
Z2luYWxseSB2YWxpZCAoaS5lLiB0aGUgcG9pbnRlcnMgYWluJ3Qgc3RhbGUpLiBUaGlzIGtpbmQg
b2YgcmFjaW5lc3MKICAgICAvLyBpcyBwcm9iYWJseSBPSyBmb3Igbm93LgogICAgIAotICAgIC8v
IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIGlzIGEgR0NBd2FyZUpJVFN0dWJSb3V0aW5lLCBz
byBpZiBub24tbnVsbCwgaXQgd2lsbCBzdGF5IGFsaXZlCi0gICAgLy8gdW50aWwgbmV4dCBHQyBl
dmVuIGlmIHRoZSBDYWxsTGlua0luZm8gaXMgY29uY3VycmVudGx5IGNsZWFyZWQuIEFsc28sIHRo
ZSB2YXJpYW50cyBsaXN0IGlzCi0gICAgLy8gbmV2ZXIgbXV0YXRlZCBhZnRlciB0aGUgUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUgaXMgaW5zdGFudGlhdGVkLiBXZSBoYXZlIHNvbWUgY29uc2Vy
dmF0aXZlCi0gICAgLy8gZmVuY2luZyBpbiBwbGFjZSB0byBtYWtlIHN1cmUgdGhhdCB3ZSBzZWUg
dGhlIHZhcmlhbnRzIGxpc3QgYWZ0ZXIgY29uc3RydWN0aW9uLgotICAgIGlmIChQb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZSogc3R1YiA9IGNhbGxMaW5rSW5mby5zdHViLmdldCgpKSB7Ci0gICAg
ICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwotICAgICAgICAKLSAgICAgICAgQ2FsbEVkZ2VMaXN0
IGVkZ2VzID0gc3R1Yi0+ZWRnZXMoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIE5vdyB0aGF0IHdl
J3ZlIGxvYWRlZCB0aGUgZWRnZXMgbGlzdCwgdGhlcmUgYXJlIG5vIGZ1cnRoZXIgY29uY3VycmVu
Y3kgY29uY2VybnMuIFdlIHdpbGwKLSAgICAgICAgLy8ganVzdCBtYW5pcHVsYXRlIGFuZCBwcnVu
ZSB0aGlzIGxpc3QgdG8gb3VyIGxpa2luZyAtIG1vc3RseSByZW1vdmluZyBlbnRyaWVzIHRoYXQg
YXJlIHRvbwotICAgICAgICAvLyBpbmZyZXF1ZW50IGFuZCBlbnN1cmluZyB0aGF0IGl0J3Mgc29y
dGVkIGluIGRlc2NlbmRpbmcgb3JkZXIgb2YgZnJlcXVlbmN5LgotICAgICAgICAKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoZWRnZXMuc2l6ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6c29y
dCgKLSAgICAgICAgICAgIGVkZ2VzLmJlZ2luKCksIGVkZ2VzLmVuZCgpLAotICAgICAgICAgICAg
W10gKENhbGxFZGdlIGEsIENhbGxFZGdlIGIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYS5j
b3VudCgpID4gYi5jb3VudCgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKGVkZ2VzLmZpcnN0KCkuY291bnQoKSA+PSBlZGdlcy5sYXN0KCkuY291bnQoKSk7Ci0gICAg
ICAgIAotICAgICAgICBkb3VibGUgdG90YWxDYWxsc1RvS25vd24gPSAwOwotICAgICAgICBkb3Vi
bGUgdG90YWxDYWxsc1RvVW5rbm93biA9IGNhbGxMaW5rSW5mby5zbG93UGF0aENvdW50OwotICAg
ICAgICBDYWxsVmFyaWFudExpc3QgdmFyaWFudHM7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZWRnZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIENhbGxFZGdlIGVkZ2UgPSBl
ZGdlc1tpXTsKLSAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsIGlzIGF0IHRoZSB0YWlsIG9mIHRo
ZSBkaXN0cmlidXRpb24sIHRoZW4gd2UgZG9uJ3Qgb3B0aW1pemUgaXQgYW5kIHdlCi0gICAgICAg
ICAgICAvLyB0cmVhdCBpdCBhcyBpZiBpdCB3YXMgYSBjYWxsIHRvIHNvbWV0aGluZyB1bmtub3du
LiBXZSBkZWZpbmUgdGhlIHRhaWwgYXMgYmVpbmcgZWl0aGVyCi0gICAgICAgICAgICAvLyBhIGNh
bGwgdGhhdCBkb2Vzbid0IGJlbG9uZyB0byB0aGUgTiBtb3N0IGZyZXF1ZW50IGNhbGxlZXMgKE4g
PQotICAgICAgICAgICAgLy8gbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudHNGb3JJbmxpbmluZykg
b3IgdGhhdCBoYXMgYSB0b3RhbCBjYWxsIGNvdW50IHRoYXQgaXMgdG9vCi0gICAgICAgICAgICAv
LyBzbWFsbC4KLSAgICAgICAgICAgIGlmIChpID49IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQ2Fs
bFZhcmlhbnRzRm9ySW5saW5pbmcoKQotICAgICAgICAgICAgICAgIHx8IGVkZ2UuY291bnQoKSA8
IE9wdGlvbnM6OmZyZXF1ZW50Q2FsbFRocmVzaG9sZCgpKQotICAgICAgICAgICAgICAgIHRvdGFs
Q2FsbHNUb1Vua25vd24gKz0gZWRnZS5jb3VudCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgdG90YWxDYWxsc1RvS25vd24gKz0gZWRnZS5jb3VudCgpOwotICAgICAgICAg
ICAgICAgIHZhcmlhbnRzLmFwcGVuZChlZGdlLmNhbGxlZSgpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gQmFpbCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnkg
Y2FsbHMgdGhhdCBxdWFsaWZpZWQuCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCEhdG90YWxDYWxs
c1RvS25vd24gPT0gISF2YXJpYW50cy5zaXplKCkpOwotICAgICAgICBpZiAodmFyaWFudHMuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKLSAgICAgICAgCi0g
ICAgICAgIC8vIFdlIHJlcXVpcmUgdGhhdCB0aGUgZGlzdHJpYnV0aW9uIG9mIGNhbGxlZXMgaXMg
c2tld2VkIHRvd2FyZHMgYSBoYW5kZnVsIG9mIGNvbW1vbiBvbmVzLgotICAgICAgICBpZiAodG90
YWxDYWxsc1RvS25vd24gLyB0b3RhbENhbGxzVG9Vbmtub3duIDwgT3B0aW9uczo6bWluaW11bUNh
bGxUb0tub3duUmF0ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsKLSAg
ICAgICAgCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHRvdGFsQ2FsbHNUb0tub3duKTsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodmFyaWFudHMuc2l6ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIENh
bGxMaW5rU3RhdHVzIHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdmFyaWFudHMgPSB2YXJpYW50
czsKLSAgICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSAhIXRvdGFsQ2FsbHNUb1Vu
a25vd247Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAogICAgIGlmIChjYWxs
TGlua0luZm8uc2xvd1BhdGhDb3VudCA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmlt
dW1Db3VudCgpKQogICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwogICAgIAorICAgIGlm
IChDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKiBzdHViID0gY2FsbExpbmtJbmZvLnN0dWIuZ2V0KCkp
CisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhzdHViLT5leGVjdXRhYmxlKCkpOworICAg
IAogICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGNhbGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZS5n
ZXQoKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuIHRha2VzU2xvd1BhdGgoKTsK
QEAgLTIyMCw2ICsxODEsMzQgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGcm9tQ2FsbExpbmtJbmZvKAogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQpOwog
fQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21DYWxsRWRnZVBy
b2ZpbGUoQ2FsbEVkZ2VQcm9maWxlKiBlZGdlUHJvZmlsZSkKK3sKKyAgICAvLyBJbiBjYXNlcyB3
aGVyZSB0aGUgY2FsbCBlZGdlIHByb2ZpbGUgc2F3IG5vdGhpbmcsIHVzZSB0aGUgQ2FsbExpbmtJ
bmZvIGluc3RlYWQuCisgICAgaWYgKCFlZGdlUHJvZmlsZS0+dG90YWxDYWxscygpKQorICAgICAg
ICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKKyAgICAvLyBUbyBkbyBhbnl0aGluZyBt
ZWFuaW5nZnVsLCB3ZSByZXF1aXJlIHRoYXQgdGhlIG1ham9yaXR5IG9mIGNhbGxzIGFyZSB0byBz
b21ldGhpbmcgd2UKKyAgICAvLyBrbm93IGhvdyB0byBoYW5kbGUuCisgICAgdW5zaWduZWQgbnVt
Q2FsbHNUb0tub3duID0gZWRnZVByb2ZpbGUtPm51bUNhbGxzVG9Lbm93bkNlbGxzKCk7CisgICAg
dW5zaWduZWQgbnVtQ2FsbHNUb1Vua25vd24gPSBlZGdlUHJvZmlsZS0+bnVtQ2FsbHNUb05vdENl
bGwoKSArIGVkZ2VQcm9maWxlLT5udW1DYWxsc1RvVW5rbm93bkNlbGwoKTsKKyAgICAKKyAgICAv
LyBXZSByZXF1aXJlIHRoYXQgdGhlIG1ham9yaXR5IG9mIGNhbGxzIHdlcmUgdG8gc29tZXRoaW5n
IHRoYXQgd2UgY291bGQgcG9zc2libHkgaW5saW5lLgorICAgIGlmIChudW1DYWxsc1RvS25vd24g
PD0gbnVtQ2FsbHNUb1Vua25vd24pCisgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7Cisg
ICAgCisgICAgLy8gV2UgcmVxdWlyZSB0aGF0IHRoZSBudW1iZXIgb2Ygc3VjaCBjYWxscyBpcyBn
cmVhdGVyIHRoYW4gc29tZSBtaW5pbWFsIHRocmVzaG9sZCwgc28gdGhhdCB3ZQorICAgIC8vIGF2
b2lkIGlubGluaW5nIGNvbXBsZXRlbHkgY29sZCBjYWxscy4KKyAgICBpZiAobnVtQ2FsbHNUb0tu
b3duIDwgT3B0aW9uczo6ZnJlcXVlbnRDYWxsVGhyZXNob2xkKCkpCisgICAgICAgIHJldHVybiB0
YWtlc1Nsb3dQYXRoKCk7CisgICAgCisgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0OworICAgIHJl
c3VsdC5tX2VkZ2VzID0gZWRnZVByb2ZpbGUtPmNhbGxFZGdlcygpOworICAgIHJlc3VsdC5tX2Nv
dWxkVGFrZVNsb3dQYXRoID0gISFudW1DYWxsc1RvVW5rbm93bjsKKyAgICByZXN1bHQubV9jYW5U
cnVzdENvdW50cyA9IHRydWU7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgY29uc3QgQ29uY3VycmVu
dEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIENhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvLAogICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEpCkBAIC0yOTMs
OCArMjgyLDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAK
IGJvb2wgQ2FsbExpbmtTdGF0dXM6OmlzQ2xvc3VyZUNhbGwoKSBjb25zdAogewotICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fdmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIGlmIChtX3Zh
cmlhbnRzW2ldLmlzQ2xvc3VyZUNhbGwoKSkKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2VkZ2Vz
LnNpemUoKTsgaS0tOykgeworICAgICAgICBpZiAobV9lZGdlc1tpXS5jYWxsZWUoKS5pc0Nsb3N1
cmVDYWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzAyLDcgKzI5MSwxOCBAQCBib29sIENhbGxMaW5rU3RhdHVzOjppc0Nsb3N1cmVD
YWxsKCkgY29uc3QKIAogdm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKIHsK
LSAgICBtX3ZhcmlhbnRzID0gZGVzcGVjaWZpZWRWYXJpYW50TGlzdChtX3ZhcmlhbnRzKTsKKyAg
ICBBU1NFUlQoIW1faXNQcm92ZWQpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fZWRnZXMuc2l6
ZSgpOyBpLS07KQorICAgICAgICBtX2VkZ2VzW2ldID0gbV9lZGdlc1tpXS5kZXNwZWNpZmllZENs
b3N1cmUoKTsKKyAgICAKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAvLyBE
b2luZyB0aGlzIHNob3VsZCBub3QgaGF2ZSBjcmVhdGVkIGR1cGxpY2F0ZXMsIGJlY2F1c2UgdGhl
IENhbGxFZGdlUHJvZmlsZQorICAgICAgICAvLyBzaG91bGQgZGVzcGVjaWZ5IGNsb3N1cmVzIGlm
IGRvaW5nIHNvIHdvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGtub3duIGNhbGxlZXMuCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IG1fZWRnZXMuc2l6ZSgpOyArK2op
CisgICAgICAgICAgICAgICAgQVNTRVJUKG1fZWRnZXNbaV0uY2FsbGVlKCkgIT0gbV9lZGdlc1tq
XS5jYWxsZWUoKSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgQ2FsbExpbmtTdGF0dXM6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKQEAgLTMyMCw4ICszMjAsNyBAQCB2b2lkIENh
bGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgaWYgKG1fY291
bGRUYWtlU2xvd1BhdGgpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIkNvdWxkIFRha2UgU2xv
dyBQYXRoIik7CiAgICAgCi0gICAgaWYgKCFtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCBsaXN0RHVtcChtX3ZhcmlhbnRzKSk7CisgICAgb3V0LnByaW50KGxp
c3REdW1wKG1fZWRnZXMpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCmluZGV4IDU0NWMxYmMzMjRj
MDI4ZWFhYjc1ZWViNjg0MWRkOTRkZjk0OWM0NjUuLjZhM2QzODgzZDdhNTYzZWNlYzAyNjUyZGQ0
NWJiODI3OWM0Y2NmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgQ2FsbExp
bmtTdGF0dXNfaAogCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCi0jaW5jbHVkZSAiQ2FsbFZh
cmlhbnQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKSVRMb2NrLmgiCkBAIC00OSw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBDYWxsTGlua1N0YXR1cygpCiAgICAgICAgIDogbV9jb3VsZFRh
a2VTbG93UGF0aChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvdmVkKGZhbHNlKQorICAgICAgICAs
IG1fY2FuVHJ1c3RDb3VudHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYyLDkgKzYy
LDEwIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBDYWxsTGlua1N0YXR1cyhKU1ZhbHVlKTsKICAg
ICAKICAgICBDYWxsTGlua1N0YXR1cyhDYWxsVmFyaWFudCB2YXJpYW50KQotICAgICAgICA6IG1f
dmFyaWFudHMoMSwgdmFyaWFudCkKKyAgICAgICAgOiBtX2VkZ2VzKDEsIENhbGxFZGdlKHZhcmlh
bnQsIDEpKQogICAgICAgICAsIG1fY291bGRUYWtlU2xvd1BhdGgoZmFsc2UpCiAgICAgICAgICwg
bV9pc1Byb3ZlZChmYWxzZSkKKyAgICAgICAgLCBtX2NhblRydXN0Q291bnRzKGZhbHNlKQogICAg
IHsKICAgICB9CiAgICAgCkBAIC0xMDgsMTggKzEwOSwxOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmln
aW4sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYsIGNvbnN0IENvbnRleHRNYXAmKTsKICAgICAKLSAg
ICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fdmFyaWFudHMuaXNFbXB0eSgpIHx8IG1f
Y291bGRUYWtlU2xvd1BhdGg7IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1f
ZWRnZXMuaXNFbXB0eSgpIHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBj
b3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0K
ICAgICAKLSAgICBDYWxsVmFyaWFudExpc3QgdmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3Zh
cmlhbnRzOyB9Ci0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHMu
c2l6ZSgpOyB9Ci0gICAgQ2FsbFZhcmlhbnQgYXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4g
bV92YXJpYW50c1tpXTsgfQotICAgIENhbGxWYXJpYW50IG9wZXJhdG9yW10odW5zaWduZWQgaSkg
Y29uc3QgeyByZXR1cm4gYXQoaSk7IH0KKyAgICBDYWxsRWRnZUxpc3QgZWRnZXMoKSBjb25zdCB7
IHJldHVybiBtX2VkZ2VzOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZWRnZXMuc2l6ZSgpOyB9CisgICAgQ2FsbEVkZ2UgYXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1
cm4gbV9lZGdlc1tpXTsgfQorICAgIENhbGxFZGdlIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29u
c3QgeyByZXR1cm4gYXQoaSk7IH0KICAgICBib29sIGlzUHJvdmVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Byb3ZlZDsgfQotICAgIGJvb2wgY2FuT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiAhbV92
YXJpYW50cy5pc0VtcHR5KCk7IH0KKyAgICBib29sIGNhbk9wdGltaXplKCkgY29uc3QgeyByZXR1
cm4gIW1fZWRnZXMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5UcnVzdENvdW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuVHJ1c3RDb3VudHM7IH0KICAgICAKICAgICBib29sIGlzQ2xvc3VyZUNh
bGwoKSBjb25zdDsgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBjYWxsZWUgaXMgYSBjbG9zdXJlIGNh
bGwuCiAgICAgCkBAIC0xMzAsMTMgKzEzMiwxNSBAQCBwcml2YXRlOgogICAgIAogICAgIHN0YXRp
YyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KGNvbnN0IENvbmN1cnJlbnRKSVRMb2Nr
ZXImLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklU
KQorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUNhbGxFZGdlUHJvZmlsZShD
YWxsRWRnZVByb2ZpbGUqKTsKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21D
YWxsTGlua0luZm8oCiAgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDYWxsTGlu
a0luZm8mKTsKICNlbmRpZgogICAgIAotICAgIENhbGxWYXJpYW50TGlzdCBtX3ZhcmlhbnRzOwor
ICAgIENhbGxFZGdlTGlzdCBtX2VkZ2VzOwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsK
ICAgICBib29sIG1faXNQcm92ZWQ7CisgICAgYm9vbCBtX2NhblRydXN0Q291bnRzOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxWYXJpYW50LmNwcAppbmRleCBkN2I3MzZhNzhkZTRiOTM1ZTk5ODBhM2JhMmI2Yzg3N2VlYjk0
YTQzLi41ZmUwZjc0M2ZlMmUxM2UyNTY4MmYzY2NkYmJiODU1Yjg4NDRjM2I5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDM0ICs1MCw1
IEBAIHZvaWQgQ2FsbFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBv
dXQucHJpbnQoIkV4ZWN1dGFibGU6ICIsICpleGVjdXRhYmxlKCkpOwogfQogCi1DYWxsVmFyaWFu
dExpc3QgdmFyaWFudExpc3RXaXRoVmFyaWFudChjb25zdCBDYWxsVmFyaWFudExpc3QmIGxpc3Qs
IENhbGxWYXJpYW50IHZhcmlhbnRUb0FkZCkKLXsKLSAgICBBU1NFUlQodmFyaWFudFRvQWRkKTsK
LSAgICBDYWxsVmFyaWFudExpc3QgcmVzdWx0OwotICAgIGZvciAoQ2FsbFZhcmlhbnQgdmFyaWFu
dCA6IGxpc3QpIHsKLSAgICAgICAgQVNTRVJUKHZhcmlhbnQpOwotICAgICAgICBpZiAoISF2YXJp
YW50VG9BZGQpIHsKLSAgICAgICAgICAgIGlmICh2YXJpYW50ID09IHZhcmlhbnRUb0FkZCkKLSAg
ICAgICAgICAgICAgICB2YXJpYW50VG9BZGQgPSBDYWxsVmFyaWFudCgpOwotICAgICAgICAgICAg
ZWxzZSBpZiAodmFyaWFudC5kZXNwZWNpZmllZENsb3N1cmUoKSA9PSB2YXJpYW50VG9BZGQuZGVz
cGVjaWZpZWRDbG9zdXJlKCkpIHsKLSAgICAgICAgICAgICAgICB2YXJpYW50ID0gdmFyaWFudC5k
ZXNwZWNpZmllZENsb3N1cmUoKTsKLSAgICAgICAgICAgICAgICB2YXJpYW50VG9BZGQgPSBDYWxs
VmFyaWFudCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQodmFyaWFudCk7Ci0gICAgfQotICAgIGlmICghIXZhcmlhbnRUb0FkZCkKLSAgICAgICAgcmVz
dWx0LmFwcGVuZCh2YXJpYW50VG9BZGQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUNhbGxW
YXJpYW50TGlzdCBkZXNwZWNpZmllZFZhcmlhbnRMaXN0KGNvbnN0IENhbGxWYXJpYW50TGlzdCYg
bGlzdCkKLXsKLSAgICBDYWxsVmFyaWFudExpc3QgcmVzdWx0OwotICAgIGZvciAoQ2FsbFZhcmlh
bnQgdmFyaWFudCA6IGxpc3QpCi0gICAgICAgIHJlc3VsdCA9IHZhcmlhbnRMaXN0V2l0aFZhcmlh
bnQocmVzdWx0LCB2YXJpYW50LmRlc3BlY2lmaWVkQ2xvc3VyZSgpKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAppbmRleCAyNTE0ZjcyYjgwNWNmNDdlNTkxZjFkYzY5YzZm
ZDkzNzViY2ZiMzkzLi4zNjU3OTE4MGNjNzljMzIwNGYyOTVhNWIxMzNiMjJiODYzODBmMzY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsOCAr
NTYsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAvLyAgICAgdGhhbiB0aGUgZmFjdCB0aGF0IHRoZXkg
ZG9uJ3QgZmFsbCBpbnRvIGFueSBvZiB0aGUgYWJvdmUgY2F0ZWdvcmllcy4KIC8vCiAvLyBUaGlz
IGNsYXNzIHNlcnZlcyBhcyBhIGtpbmQgb2YgdW5pb24gb3ZlciB0aGVzZSBmb3VyIHRoaW5ncy4g
SXQgZG9lcyBzbyBieSBqdXN0IGhvbGRpbmcgYQotLy8gSlNDZWxsKi4gV2UgZGV0ZXJtaW5lIHdo
aWNoIG9mIHRoZSBtb2RlcyBpdHMgaW4gYnkgZG9pbmcgdHlwZSBjaGVja3Mgb24gdGhlIGNlbGwu
IE5vdGUgdGhhdCB3ZQotLy8gY2Fubm90IHVzZSBXcml0ZUJhcnJpZXI8PiBoZXJlIGJlY2F1c2Ug
dGhpcyBnZXRzIHVzZWQgaW5zaWRlIHRoZSBjb21waWxlci4KKy8vIEpTQ2VsbCouIFdlIGRldGVy
bWluZSB3aGljaCBvZiB0aGUgbW9kZXMgaXRzIGluIGJ5IGRvaW5nIHR5cGUgY2hlY2tzIG9uIHRo
ZSBjZWxsLiBOb3RlIHRoYXQgdGhlcmUKKy8vIGlzIG5vIGxpZmVjeWNsZSBtYW5hZ2VtZW50IGZv
ciB0aGUgY2VsbCBiZWNhdXNlIHRoaXMgY2xhc3MgaXMgYWx3YXlzIHVzZWQgaW4gY29udGV4dHMg
d2hlcmUgd2UKKy8vIGVpdGhlciBkbyBjdXN0b20gd2VhayByZWZlcmVuY2UgbG9naWMgb3ZlciBp
bnN0YW5jZXMgb2YgdGhpcyBjbGFzcyAoc2VlIENhbGxFZGdlUHJvZmlsZSksIG9yIHdlCisvLyBh
cmUgaW5zaWRlIHRoZSBjb21waWxlciBhbmQgd2UgYXNzdW1lIHRoYXQgdGhlIGNvbXBpbGVyIHJ1
bnMgaW4gYmV0d2VlbiBjb2xsZWN0aW9ucyBhbmQgc28gY2FuCisvLyB0b3VjaCB0aGUgaGVhcCB3
aXRob3V0IG5vdGlmeWluZyBhbnlvbmUuCiAKIGNsYXNzIENhbGxWYXJpYW50IHsKIHB1YmxpYzoK
QEAgLTE3OCwxMyArMTgxLDYgQEAgc3RydWN0IENhbGxWYXJpYW50SGFzaCB7CiAKIHR5cGVkZWYg
VmVjdG9yPENhbGxWYXJpYW50LCAxPiBDYWxsVmFyaWFudExpc3Q7CiAKLS8vIFJldHVybnMgYSBu
ZXcgdmFyaWFudCBsaXN0IGJ5IGF0dGVtcHRpbmcgdG8gZWl0aGVyIGFwcGVuZCB0aGUgZ2l2ZW4g
dmFyaWFudCBvciBtZXJnZSBpdCB3aXRoIG9uZQotLy8gb2YgdGhlIHZhcmlhbnRzIHdlIGFscmVh
ZHkgaGF2ZSBieSBkZXNwZWNpZnlpbmcgY2xvc3VyZXMuCi1DYWxsVmFyaWFudExpc3QgdmFyaWFu
dExpc3RXaXRoVmFyaWFudChjb25zdCBDYWxsVmFyaWFudExpc3QmLCBDYWxsVmFyaWFudCk7Ci0K
LS8vIFJldHVybnMgYSBuZXcgbGlzdCB3aGVyZSBldmVyeSBlbGVtZW50IGlzIGRlc3BlY2lmaWVk
LCBhbmQgdGhlIGxpc3QgaXMgZGVkdXBsaWNhdGVkLgotQ2FsbFZhcmlhbnRMaXN0IGRlc3BlY2lm
aWVkVmFyaWFudExpc3QoY29uc3QgQ2FsbFZhcmlhbnRMaXN0Jik7Ci0KIH0gLy8gbmFtZXNwYWNl
IEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggMGVkYWZjMzg4MjQ5Y2Q1Y2I4Y2NmZTM1MTc5NDNkZDc5NDZj
NWE2Ni4uZTIxNzI1NjVjNWIxMTMxMTUyZmE0YmY0NjJmYzkwZWE3OGI3NTE2YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTAsIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTIxNzQsOCArMjE3NCw2IEBAIENvZGVCbG9jazo6fkNvZGVCbG9j
aygpCiAgICAgLy8gZGVzdHJ1Y3RvciB3aWxsIHRyeSB0byByZW1vdmUgbm9kZXMgZnJvbSBvdXIg
KG5vIGxvbmdlciB2YWxpZCkgbGlua2VkIGxpc3QuCiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxs
cy5iZWdpbigpICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0Nh
bGxzLmJlZ2luKCktPnJlbW92ZSgpOwotICAgIHdoaWxlIChtX2luY29taW5nUG9seW1vcnBoaWND
YWxscy5iZWdpbigpICE9IG1faW5jb21pbmdQb2x5bW9ycGhpY0NhbGxzLmVuZCgpKQotICAgICAg
ICBtX2luY29taW5nUG9seW1vcnBoaWNDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKICAgICAKICAg
ICAvLyBOb3RlIHRoYXQgb3VyIG91dGdvaW5nIGNhbGxzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIG90
aGVyIENvZGVCbG9ja3MnCiAgICAgLy8gbV9pbmNvbWluZ0NhbGxzIGxpbmtlZCBsaXN0cyB0aHJv
dWdoIHRoZSBleGVjdXRpb24gb2YgdGhlIH5DYWxsTGlua0luZm8KQEAgLTMwNDIsMTIgKzMwNDAs
NiBAQCB2b2lkIENvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbChFeGVjU3RhdGUqIGNhbGxlckZy
YW1lLCBDYWxsTGlua0luZm8qIGluY29taW5nKQogICAgIG5vdGljZUluY29taW5nQ2FsbChjYWxs
ZXJGcmFtZSk7CiAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogfQotCi12b2lk
IENvZGVCbG9jazo6bGlua0luY29taW5nUG9seW1vcnBoaWNDYWxsKEV4ZWNTdGF0ZSogY2FsbGVy
RnJhbWUsIFBvbHltb3JwaGljQ2FsbE5vZGUqIGluY29taW5nKQotewotICAgIG5vdGljZUluY29t
aW5nQ2FsbChjYWxsZXJGcmFtZSk7Ci0gICAgbV9pbmNvbWluZ1BvbHltb3JwaGljQ2FsbHMucHVz
aChpbmNvbWluZyk7Ci19CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogdm9pZCBDb2RlQmxvY2s6
OnVubGlua0luY29taW5nQ2FsbHMoKQpAQCAtMzA1NSwxMyArMzA0NywxMSBAQCB2b2lkIENvZGVC
bG9jazo6dW5saW5rSW5jb21pbmdDYWxscygpCiAgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENh
bGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5j
b21pbmdMTEludENhbGxzLmJlZ2luKCktPnVubGluaygpOwogI2lmIEVOQUJMRShKSVQpCi0gICAg
aWYgKG1faW5jb21pbmdDYWxscy5pc0VtcHR5KCkgJiYgbV9pbmNvbWluZ1BvbHltb3JwaGljQ2Fs
bHMuaXNFbXB0eSgpKQorICAgIGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdo
aWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAg
ICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsocmVwYXRjaEJ1ZmZlcik7Ci0g
ICAgd2hpbGUgKG1faW5jb21pbmdQb2x5bW9ycGhpY0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWlu
Z1BvbHltb3JwaGljQ2FsbHMuZW5kKCkpCi0gICAgICAgIG1faW5jb21pbmdQb2x5bW9ycGhpY0Nh
bGxzLmJlZ2luKCktPnVubGluayhyZXBhdGNoQnVmZmVyKTsKICNlbmRpZiAvLyBFTkFCTEUoSklU
KQogfQogCkBAIC0zMjU1LDE5ICszMjQ1LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpY2VJbmNv
bWluZ0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSkKICAgICBDb2RlQmxvY2sqIGNhbGxlckNv
ZGVCbG9jayA9IGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAKICAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZUNhbGxMaW5rKCkpCi0gICAgICAgIGRhdGFMb2coIk5vdGljaW5nIGNhbGwgbGlu
ayBmcm9tICIsIHBvaW50ZXJEdW1wKGNhbGxlckNvZGVCbG9jayksICIgdG8gIiwgKnRoaXMsICJc
biIpOworICAgICAgICBkYXRhTG9nKCJOb3RpY2luZyBjYWxsIGxpbmsgZnJvbSAiLCAqY2FsbGVy
Q29kZUJsb2NrLCAiIHRvICIsICp0aGlzLCAiXG4iKTsKICAgICAKLSNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICBpZiAoIW1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkKQogICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgaWYgKCFjYWxsZXJDb2RlQmxvY2spIHsKLSAgICAgICAgbV9zaG91bGRBbHdheXNC
ZUlubGluZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDYWxsTGluaygp
KQotICAgICAgICAgICAgZGF0YUxvZygiICAgIENsZWFyaW5nIFNBQkkgYmVjYXVzZSBjYWxsZXIg
aXMgbmF0aXZlLlxuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKKyNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBpZiAoIWhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMzI5NSwxMyArMzI3OCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpY2VJbmNvbWlu
Z0NhbGwoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNhbGxlckNvZGVCbG9jay0+aml0
VHlwZSgpKSkgewotICAgICAgICBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwotICAg
ICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNhbGxMaW5rKCkpCi0gICAgICAgICAgICBkYXRhTG9n
KCIgICAgQ2xlYXJpbmcgU0FCSSBiY2F1c2UgY2FsbGVyIHdhcyBhbHJlYWR5IG9wdGltaXplZC5c
biIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAogICAgIGlmIChjYWxsZXJDb2RlQmxv
Y2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlKSB7CiAgICAgICAgIC8vIElmIHRoZSBjYWxs
ZXIgaXMgZWl0aGVyIGV2YWwgb3IgZ2xvYmFsIGNvZGUsIGFzc3VtZSB0aGF0IHRoYXQgd29uJ3Qg
YmUKICAgICAgICAgLy8gb3B0aW1pemVkIGFueXRpbWUgc29vbi4gRm9yIGV2YWwgY29kZSB0aGlz
IGlzIHBhcnRpY3VsYXJseSB0cnVlIHNpbmNlIHdlCkBAIC0zMzIyLDExICszMjk4LDggQEAgdm9p
ZCBDb2RlQmxvY2s6Om5vdGljZUluY29taW5nQ2FsbChFeGVjU3RhdGUqIGNhbGxlckZyYW1lKQog
ICAgICAgICBtX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIAotICAgIGlmIChjYWxsZXJDb2RlQmxvY2stPm1fY2FwYWJpbGl0eUxldmVs
U3RhdGUgPT0gREZHOjpDYXBhYmlsaXR5TGV2ZWxOb3RTZXQpIHsKLSAgICAgICAgZGF0YUxvZygi
SW4gY2FsbCBmcm9tICIsICpjYWxsZXJDb2RlQmxvY2ssICIgIiwgY2FsbGVyRnJhbWUtPmNvZGVP
cmlnaW4oKSwgIiB0byAiLCAqdGhpcywgIjogY2FsbGVyJ3MgREZHIGNhcGFiaWxpdHkgbGV2ZWwg
aXMgbm90IHNldC5cbiIpOwotICAgICAgICBDUkFTSCgpOwotICAgIH0KKworICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxlckNvZGVCbG9jay0+bV9jYXBhYmlsaXR5TGV2ZWxTdGF0ZSAhPSBERkc6OkNh
cGFiaWxpdHlMZXZlbE5vdFNldCk7CiAgICAgCiAgICAgaWYgKGNhbkNvbXBpbGUoY2FsbGVyQ29k
ZUJsb2NrLT5tX2NhcGFiaWxpdHlMZXZlbFN0YXRlKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDY1ODA1NTdmMTczYWNi
Mzc1ZDk5OTMxMGZlNTBmZWRlODFhMDVlNTcuLjVmM2QzYzYzMWZiNjU5Njg4MDQxZjI3NzQ3YmNi
ZDAxMGI0NWMyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKQEAgLTIyOSw3ICsyMjksMTEgQEAgcHVibGljOgogICAgIHZvaWQgdW5saW5rQ2FsbHMoKTsK
ICAgICAgICAgCiAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKEV4ZWNTdGF0ZSogY2FsbGVyRnJh
bWUsIENhbGxMaW5rSW5mbyopOwotICAgIHZvaWQgbGlua0luY29taW5nUG9seW1vcnBoaWNDYWxs
KEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUsIFBvbHltb3JwaGljQ2FsbE5vZGUqKTsKKyAgICAgICAg
CisgICAgYm9vbCBpc0luY29taW5nQ2FsbEFscmVhZHlMaW5rZWQoQ2FsbExpbmtJbmZvKiBpbmNv
bWluZykKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luY29taW5nQ2FsbHMuaXNPbkxpc3QoaW5j
b21pbmcpOworICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiAgICAgdm9pZCBsaW5rSW5j
b21pbmdDYWxsKEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUsIExMSW50Q2FsbExpbmtJbmZvKik7CkBA
IC0xMDczLDcgKzEwNzcsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxCeVZhbEluZm8+IG1fYnlW
YWxJbmZvczsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAgICAgU2Vu
dGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExp
bmtJbmZvPj4gbV9pbmNvbWluZ0NhbGxzOwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxQb2x5bW9y
cGhpY0NhbGxOb2RlLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxQb2x5bW9ycGhpY0NhbGxOb2RlPj4g
bV9pbmNvbWluZ1BvbHltb3JwaGljQ2FsbHM7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKICNpZiBFTkFCTEUoREZHX0pJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAppbmRleCAyYzhhM2FiZTQ4MDFlMTc4Y2U1YTk2Y2UzMDFiYTgyOWJmZDk3
YzNlLi5jN2U2YTQ2OTllYzk3ZTU3N2VkZGQ3Y2UyMzU3NWZmNmE2MTUwNmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCkBAIC0xOTY4LDYgKzE5NjgsMTQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKIAor
ICAgIGNhc2UgUHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CisgICAg
ICAgIGlmIChmb3JOb2RlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCkpLm1fdmFsdWUpCisg
ICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOworICAgICAgICBjbG9i
YmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBm
b3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBG
b3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0
SXNWYWxpZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IDYwZTYxYmU3M2Y2MDY5NjFiYmZlNzlkM2RkOTQ3MTlmNjNhMGFl
ZTEuLmVkODA5ZjI0ZGNjMjZhOTViMzA0YzAxMmUxN2M5Y2QzZTE5NDg2YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC02NzUsNyArNjc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHBhcmFtZXRlclNs
b3RzID4gbV9wYXJhbWV0ZXJTbG90cykKICAgICAgICAgICAgIG1fcGFyYW1ldGVyU2xvdHMgPSBw
YXJhbWV0ZXJTbG90czsKIAotICAgICAgICBpbnQgZHVtbXlUaGlzQXJndW1lbnQgPSBvcCA9PSBD
YWxsIHx8IG9wID09IE5hdGl2ZUNhbGwgPyAwIDogMTsKKyAgICAgICAgaW50IGR1bW15VGhpc0Fy
Z3VtZW50ID0gb3AgPT0gQ2FsbCB8fCBvcCA9PSBOYXRpdmVDYWxsIHx8IG9wID09IFByb2ZpbGVk
Q2FsbCA/IDAgOiAxOwogICAgICAgICBmb3IgKGludCBpID0gMCArIGR1bW15VGhpc0FyZ3VtZW50
OyBpIDwgYXJnQ291bnQ7ICsraSkKICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpLCByZWdpc3Rlck9mZnNldCkpKTsKIApAQCAtMTA0NCw4
ICsxMDQ0LDE3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgaWYgKGNh
bGxUYXJnZXQtPmhhc0NvbnN0YW50KCkpCiAgICAgICAgIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExp
bmtTdGF0dXMoY2FsbFRhcmdldC0+YXNKU1ZhbHVlKCkpLnNldElzUHJvdmVkKHRydWUpOwogICAg
IAotICAgIGlmIChPcHRpb25zOjp2ZXJib3NlREZHQnl0ZUNvZGVQYXJzaW5nKCkpCi0gICAgICAg
IGRhdGFMb2coIiAgICBIYW5kbGluZyBjYWxsIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICI6
ICIsIGNhbGxMaW5rU3RhdHVzLCAiXG4iKTsKKyAgICBpZiAoKCFjYWxsTGlua1N0YXR1cy5jYW5P
cHRpbWl6ZSgpIHx8IGNhbGxMaW5rU3RhdHVzLnNpemUoKSAhPSAxKQorICAgICAgICAmJiAhaXNG
VEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgT3B0aW9uczo6dXNlRlRMSklUKCkKKyAgICAgICAg
JiYgSW5saW5lQ2FsbEZyYW1lOjppc05vcm1hbENhbGwoa2luZCkKKyAgICAgICAgJiYgQ2FsbEVk
Z2VMb2c6OmlzRW5hYmxlZCgpCisgICAgICAgICYmIE9wdGlvbnM6OmRmZ0RvZXNDYWxsRWRnZVBy
b2ZpbGluZygpKSB7CisgICAgICAgIEFTU0VSVChvcCA9PSBDYWxsIHx8IG9wID09IENvbnN0cnVj
dCk7CisgICAgICAgIGlmIChvcCA9PSBDYWxsKQorICAgICAgICAgICAgb3AgPSBQcm9maWxlZENh
bGw7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wID0gUHJvZmlsZWRDb25zdHJ1Y3Q7Cisg
ICAgfQogICAgIAogICAgIGlmICghY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSkgewogICAg
ICAgICAvLyBPZGRseSwgdGhpcyBjb25mbGF0ZXMgY2FsbHMgdGhhdCBoYXZlbid0IGV4ZWN1dGVk
IHdpdGggY2FsbHMgdGhhdCBiZWhhdmVkIHN1ZmZpY2llbnRseSBwb2x5bW9ycGhpY2FsbHkKQEAg
LTEwNjcsMTcgKzEwNzYsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAg
ICAKICNpZiBFTkFCTEUoRlRMX05BVElWRV9DQUxMX0lOTElOSU5HKQogICAgIGlmIChpc0ZUTCht
X2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBPcHRpb25zOjpvcHRpbWl6ZU5hdGl2ZUNhbGxzKCkgJiYg
Y2FsbExpbmtTdGF0dXMuc2l6ZSgpID09IDEgJiYgIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNs
b3dQYXRoKCkpIHsKLSAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbGVlID0gY2FsbExpbmtTdGF0dXNb
MF07CisgICAgICAgIENhbGxWYXJpYW50IGNhbGxlZSA9IGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxl
ZSgpOwogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS5mdW5jdGlvbigpOwog
ICAgICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCA9IElubGlu
ZUNhbGxGcmFtZTo6c3BlY2lhbGl6YXRpb25LaW5kRm9yKGtpbmQpOwogICAgICAgICBpZiAoZnVu
Y3Rpb24gJiYgZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpIHsKICAgICAgICAgICAgIGVtaXRG
dW5jdGlvbkNoZWNrcyhjYWxsZWUsIGNhbGxUYXJnZXQsIHJlZ2lzdGVyT2Zmc2V0LCBzcGVjaWFs
aXphdGlvbktpbmQpOwogICAgICAgICAgICAgY2FsbE9wSW5mbyA9IE9wSW5mbyhtX2dyYXBoLmZy
ZWV6ZShmdW5jdGlvbikpOwogCi0gICAgICAgICAgICBpZiAob3AgPT0gQ2FsbCkKKyAgICAgICAg
ICAgIGlmIChvcCA9PSBDYWxsIHx8IG9wID09IFByb2ZpbGVkQ2FsbCkKICAgICAgICAgICAgICAg
ICBvcCA9IE5hdGl2ZUNhbGw7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQob3AgPT0gQ29uc3RydWN0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3AgPT0gQ29u
c3RydWN0IHx8IG9wID09IFByb2ZpbGVkQ29uc3RydWN0KTsKICAgICAgICAgICAgICAgICBvcCA9
IE5hdGl2ZUNvbnN0cnVjdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQxNywxMyAr
MTQyNiwxMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbgogICAgIC8vIHRoaXMgaW4gY2FzZXMg
d2hlcmUgd2UgZG9uJ3QgbmVlZCBjb250cm9sIGZsb3cgZGlhbW9uZHMgdG8gY2hlY2sgdGhlIGNh
bGxlZS4KICAgICBpZiAoIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkgJiYgY2Fs
bExpbmtTdGF0dXMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgZW1pdEZ1bmN0aW9uQ2hlY2tzKAot
ICAgICAgICAgICAgY2FsbExpbmtTdGF0dXNbMF0sIGNhbGxUYXJnZXROb2RlLCByZWdpc3Rlck9m
ZnNldCwgc3BlY2lhbGl6YXRpb25LaW5kKTsKKyAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzWzBd
LmNhbGxlZSgpLCBjYWxsVGFyZ2V0Tm9kZSwgcmVnaXN0ZXJPZmZzZXQsIHNwZWNpYWxpemF0aW9u
S2luZCk7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gYXR0ZW1wdFRvSW5saW5lQ2FsbCgKLSAgICAg
ICAgICAgIGNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1swXSwg
cmVnaXN0ZXJPZmZzZXQsCisgICAgICAgICAgICBjYWxsVGFyZ2V0Tm9kZSwgcmVzdWx0T3BlcmFu
ZCwgY2FsbExpbmtTdGF0dXNbMF0uY2FsbGVlKCksIHJlZ2lzdGVyT2Zmc2V0LAogICAgICAgICAg
ICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG5leHRPZmZzZXQsIGtpbmQsIENhbGxlckRv
ZXNOb3JtYWxMaW5raW5nLCBwcmVkaWN0aW9uLAogICAgICAgICAgICAgaW5saW5pbmdCYWxhbmNl
KTsKICAgICAgICAgaWYgKCFyZXN1bHQgJiYgIWNhbGxMaW5rU3RhdHVzLmlzUHJvdmVkKCkpCi0g
ICAgICAgICAgICB1bmRvRnVuY3Rpb25DaGVja3MoY2FsbExpbmtTdGF0dXNbMF0pOworICAgICAg
ICAgICAgdW5kb0Z1bmN0aW9uQ2hlY2tzKGNhbGxMaW5rU3RhdHVzWzBdLmNhbGxlZSgpKTsKICAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkRvbmUgaW5saW5pbmcg
KHNpbXBsZSkuXG4iKTsKICAgICAgICAgICAgIGRhdGFMb2coIlN0YWNrOiAiLCBjdXJyZW50Q29k
ZU9yaWdpbigpLCAiXG4iKTsKQEAgLTE0NTMsNyArMTQ2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFu
ZCwgY29uCiAgICAgYm9vbCBhbGxBcmVDbG9zdXJlQ2FsbHMgPSB0cnVlOwogICAgIGJvb2wgYWxs
QXJlRGlyZWN0Q2FsbHMgPSB0cnVlOwogICAgIGZvciAodW5zaWduZWQgaSA9IGNhbGxMaW5rU3Rh
dHVzLnNpemUoKTsgaS0tOykgewotICAgICAgICBpZiAoY2FsbExpbmtTdGF0dXNbaV0uaXNDbG9z
dXJlQ2FsbCgpKQorICAgICAgICBpZiAoY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuaXNDbG9z
dXJlQ2FsbCgpKQogICAgICAgICAgICAgYWxsQXJlRGlyZWN0Q2FsbHMgPSBmYWxzZTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgYWxsQXJlQ2xvc3VyZUNhbGxzID0gZmFsc2U7CkBAIC0xNDY2
LDggKzE0NzUsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbgogICAgICAgICB0aGluZ1RvU3dp
dGNoT24gPSBhZGRUb0dyYXBoKEdldEV4ZWN1dGFibGUsIGNhbGxUYXJnZXROb2RlKTsKICAgICBl
bHNlIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGhhbmRsZSB0aGlz
IGNhc2UsIGJ1dCBpdCdzIHRyaWNreSBhbmQgd2UgZG9uJ3Qga25vdyBvZiBjYXNlcwotICAgICAg
ICAvLyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBJdCBtaWdodCBiZSBiZXN0IHRvIGhh
bmRsZSB0aGVzZSBjYXNlcyBhcyBpZiBhbGwgY2FsbHMgd2VyZQotICAgICAgICAvLyBjbG9zdXJl
IGNhbGxzLgorICAgICAgICAvLyB3aGVyZSBpdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBBbHNvLCBD
YWxsTGlua1N0YXR1cyB3b3VsZCBtYWtlIGFsbCBjYWxsZWVzIGFwcGVhciBsaWtlCisgICAgICAg
IC8vIGNsb3N1cmUgY2FsbHMgaWYgYW55IGNhbGxzIHdlcmUgY2xvc3VyZSBjYWxscyAtIGV4Y2Vw
dCBmb3IgY2FsbHMgdG8gaW50ZXJuYWwgZnVuY3Rpb25zLgorICAgICAgICAvLyBTbyB0aGlzIHdp
bGwgb25seSBhcmlzZSBpZiBzb21lIGNhbGxlZXMgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBhbmQg
b3RoZXJzIGFyZSBjbG9zdXJlcy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNjAyMAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAg
ICAgZGF0YUxvZygiQmFpbGluZyBpbmxpbmluZyAobWl4KS5cbiIpOwpAQCAtMTUwNyw3ICsxNTE3
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdl
dE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb24KICAgICAvLyB0byB0aGUgY29udGludWF0aW9u
IGJsb2NrLCB3aGljaCB3ZSBjcmVhdGUgbGFzdC4KICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGxh
bmRpbmdCbG9ja3M7CiAgICAgCi0gICAgLy8gV2UgbWF5IGZvcmNlIHRoaXMgdHJ1ZSBpZiB3ZSBn
aXZlIHVwIG9uIGlubGluaW5nIGFueSBvZiB0aGUgZWRnZXMuCisgICAgLy8gV2UgbWFrZSBmb3Jj
ZSB0aGlzIHRydWUgaWYgd2UgZ2l2ZSB1cCBvbiBpbmxpbmluZyBhbnkgb2YgdGhlIGVkZ2VzLgog
ICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGggPSBjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93
UGF0aCgpOwogICAgIAogICAgIGlmICh2ZXJib3NlKQpAQCAtMTUyMyw3ICsxNTMzLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoTm9kZSogY2FsbFRhcmdldE5vZGUsIGlu
dCByZXN1bHRPcGVyYW5kLCBjb24KICAgICAgICAgTm9kZSogbXlDYWxsVGFyZ2V0Tm9kZSA9IGdl
dERpcmVjdChjYWxsZWVSZWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBpbmxpbmluZ1Jlc3Vs
dCA9IGF0dGVtcHRUb0lubGluZUNhbGwoCi0gICAgICAgICAgICBteUNhbGxUYXJnZXROb2RlLCBy
ZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1tpXSwgcmVnaXN0ZXJPZmZzZXQsCisgICAgICAg
ICAgICBteUNhbGxUYXJnZXROb2RlLCByZXN1bHRPcGVyYW5kLCBjYWxsTGlua1N0YXR1c1tpXS5j
YWxsZWUoKSwgcmVnaXN0ZXJPZmZzZXQsCiAgICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgbmV4dE9mZnNldCwga2luZCwgQ2FsbGVyTGlua3NNYW51YWxseSwgcHJlZGljdGlv
biwKICAgICAgICAgICAgIGlubGluaW5nQmFsYW5jZSk7CiAgICAgICAgIApAQCAtMTU0MiwxMCAr
MTU1MiwxMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIGNvbgogICAgICAgICAKICAgICAgICAgSlND
ZWxsKiB0aGluZ1RvQ2FzZU9uOwogICAgICAgICBpZiAoYWxsQXJlRGlyZWN0Q2FsbHMpCi0gICAg
ICAgICAgICB0aGluZ1RvQ2FzZU9uID0gY2FsbExpbmtTdGF0dXNbaV0ubm9uRXhlY3V0YWJsZUNh
bGxlZSgpOworICAgICAgICAgICAgdGhpbmdUb0Nhc2VPbiA9IGNhbGxMaW5rU3RhdHVzW2ldLmNh
bGxlZSgpLm5vbkV4ZWN1dGFibGVDYWxsZWUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBBU1NFUlQoYWxsQXJlQ2xvc3VyZUNhbGxzKTsKLSAgICAgICAgICAgIHRoaW5nVG9DYXNlT24g
PSBjYWxsTGlua1N0YXR1c1tpXS5leGVjdXRhYmxlKCk7CisgICAgICAgICAgICB0aGluZ1RvQ2Fz
ZU9uID0gY2FsbExpbmtTdGF0dXNbaV0uY2FsbGVlKCkuZXhlY3V0YWJsZSgpOwogICAgICAgICB9
CiAgICAgICAgIGRhdGEuY2FzZXMuYXBwZW5kKFN3aXRjaENhc2UobV9ncmFwaC5mcmVlemUodGhp
bmdUb0Nhc2VPbiksIGJsb2NrLmdldCgpKSk7CiAgICAgICAgIG1fY3VycmVudEluZGV4ID0gbmV4
dE9mZnNldDsKQEAgLTE1NTcsNyArMTU2Nyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZCwgY29uCiAg
ICAgICAgIGxhbmRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKIAogICAgICAgICBp
ZiAodmVyYm9zZSkKLSAgICAgICAgICAgIGRhdGFMb2coIkZpbmlzaGVkIGlubGluaW5nICIsIGNh
bGxMaW5rU3RhdHVzW2ldLCAiIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKKyAg
ICAgICAgICAgIGRhdGFMb2coIkZpbmlzaGVkIGlubGluaW5nICIsIGNhbGxMaW5rU3RhdHVzW2ld
LmNhbGxlZSgpLCAiIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICIuXG4iKTsKICAgICB9CiAg
ICAgCiAgICAgUmVmUHRyPEJhc2ljQmxvY2s+IHNsb3dQYXRoQmxvY2sgPSBhZG9wdFJlZigKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggM2I0ZDQ4ZTZlNTli
MjgwNjYzOGViYTViMmNhNTMyNGVmZmUwNjQ2NC4uNmM2OTI3YjRlY2UxOTkwMjgwNzRhMjIxNTNm
YTg3ZjNmYzhjNzhjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTM2Myw2ICszNjMsOCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2Ug
QXJyYXlQb3A6CiAgICAgY2FzZSBDYWxsOgogICAgIGNhc2UgQ29uc3RydWN0OgorICAgIGNhc2Ug
UHJvZmlsZWRDYWxsOgorICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgY2FzZSBOYXRp
dmVDYWxsOgogICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgIGNhc2UgVG9QcmltaXRpdmU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCmluZGV4IDMxOTE2ZDgwMTliYTQ2ZjE4MTg2NzJjNTA3ODlkMmYzZDFjYTkwNDMu
LjYzMGYzMGNkMjk0NzljMzc2NTc3YjEzOWQ5NzI1MzJkZjNhNjAxMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBA
IC00MjAsNiArNDIwLDIwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFByb2ZpbGVkQ2Fs
bDoKKyAgICAgICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6IHsKKyAgICAgICAgICAgICAg
ICBpZiAoIW1fc3RhdGUuZm9yTm9kZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKS5tX3Zh
bHVlKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGFibGUgdG8gcHJvdmUgdGhhdCB0aGUgY2FsbGVlIGlz
IGEgY29uc3RhbnQgdGhlbiB0aGUgbm9ybWFsIGNhbGwKKyAgICAgICAgICAgICAgICAvLyBpbmxp
bmUgY2FjaGUgd2lsbCByZWNvcmQgdGhpcyBjYWxsZWUuIFRoaXMgbWVhbnMgdGhhdCB0aGVyZSBp
cyBubyBuZWVkIHRvIGRvIGFueQorICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgcHJvZmls
aW5nLgorICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2sp
OworICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wKG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDYWxs
ID8gQ2FsbCA6IENvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggN2M2MDkwYTc4MmQ0MjA4NGYzZGM2OTE4
NTZhZjgxZmRkMWQ2ZmQyNC4uZDYzNTc3NTg5MzNhZDg4YzY4ZjA2MzhhNjI4YWM0MzNiMWUyZWFj
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMTE4LDYgKzEx
OCw4IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENv
bnN0cnVjdDoKICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6
CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAg
ICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAgICAgY2FzZSBQ
cm9maWxlRGlkQ2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RHJpdmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAppbmRl
eCBhODIyMDc5YWU4ODA5MDFlYWQ2YjA2Nzc5ZDkzYTIwYzJjZDRjOTk0Li5lNmM4ZThiYjI2MDYz
YTFkY2FjZTU5NzMyYWQ5ODI2N2RlOTkwMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RyaXZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEcml2ZXIuY3BwCkBAIC03OSwxNyArNzksMjAgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVzdWx0
IGNvbXBpbGVJbXBsKAogICAgIGlmIChtb2RlID09IERGR01vZGUpIHsKICAgICAgICAgdm0uZ2V0
Q1RJU3R1YihsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKTsKICAgICAgICAgdm0uZ2V0Q1RJU3R1Yihs
aW5rQ29uc3RydWN0VGh1bmtHZW5lcmF0b3IpOwotICAgICAgICB2bS5nZXRDVElTdHViKGxpbmtQ
b2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcik7CisgICAgICAgIHZtLmdldENUSVN0dWIobGlu
a0Nsb3N1cmVDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgICAgICB2bS5nZXRDVElTdHViKHZpcnR1
YWxDYWxsVGh1bmtHZW5lcmF0b3IpOwogICAgICAgICB2bS5nZXRDVElTdHViKHZpcnR1YWxDb25z
dHJ1Y3RUaHVua0dlbmVyYXRvcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdm0uZ2V0Q1RJU3R1
YihsaW5rQ2FsbFRoYXRQcmVzZXJ2ZXNSZWdzVGh1bmtHZW5lcmF0b3IpOwogICAgICAgICB2bS5n
ZXRDVElTdHViKGxpbmtDb25zdHJ1Y3RUaGF0UHJlc2VydmVzUmVnc1RodW5rR2VuZXJhdG9yKTsK
LSAgICAgICAgdm0uZ2V0Q1RJU3R1YihsaW5rUG9seW1vcnBoaWNDYWxsVGhhdFByZXNlcnZlc1Jl
Z3NUaHVua0dlbmVyYXRvcik7CisgICAgICAgIHZtLmdldENUSVN0dWIobGlua0Nsb3N1cmVDYWxs
VGhhdFByZXNlcnZlc1JlZ3NUaHVua0dlbmVyYXRvcik7CiAgICAgICAgIHZtLmdldENUSVN0dWIo
dmlydHVhbENhbGxUaGF0UHJlc2VydmVzUmVnc1RodW5rR2VuZXJhdG9yKTsKICAgICAgICAgdm0u
Z2V0Q1RJU3R1Yih2aXJ0dWFsQ29uc3RydWN0VGhhdFByZXNlcnZlc1JlZ3NUaHVua0dlbmVyYXRv
cik7CiAgICAgfQogICAgIAorICAgIGlmIChDYWxsRWRnZUxvZzo6aXNFbmFibGVkKCkpCisgICAg
ICAgIHZtLmVuc3VyZUNhbGxFZGdlTG9nKCkucHJvY2Vzc0xvZygpOworCiAgICAgaWYgKHZtLnR5
cGVQcm9maWxlcigpKQogICAgICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0Vu
dHJpZXMoQVNDSUlMaXRlcmFsKCJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iKSk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBm
NTBjYjY5ZGRhYjM2Mjk0YTFiMDk0YzNlZjJlNTAxZmQzMDU3YTM5Li41MjA4YjUyNjVkNGE2MmNj
YjM3N2ZiOTBkNDkwYjU1NjAyMzY0ZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKQEAgLTEyMDIsNiArMTIwMiw4IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OgogICAgICAgICBjYXNlIENhbGw6CiAg
ICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIFByb2ZpbGVkQ2FsbDoKKyAgICAg
ICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZs
b3c6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1
Y3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDE4NWIxNTZkZjUwNDI1NTY3
MGViNDdmOGFkZGJiMjgzNDViY2RmOGYuLjA0ZWVlNTBhNDA3NGIyYTc2NjNhNThjY2I0NzFmMjll
YmRhNWVmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0xMDU3LDYgKzEw
NTcsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsU2Fm
ZToKICAgICAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAg
Y2FzZSBQcm9maWxlZENhbGw6CisgICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAg
ICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAg
ICAgIGNhc2UgR2V0QnlPZmZzZXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgKaW5kZXggZjRjZmU3NTk1YmYyZGYxOTViNTIzOGY0MWI0MmE5YTU0NDNhNDk3Yi4uOGU3OTU2
NDY5MDI5N2Q4ZTEyZDkwZWY3NzMxYzE2MzM0NzIzYzc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMjE3LDYgKzIxNyw4IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKICAgICAvKiBDYWxscy4gKi9cCiAgICAgbWFjcm8oQ2FsbCwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJz
V29ybGQpIFwKICAgICBtYWNybyhDb25zdHJ1Y3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCisgICAgbWFjcm8o
UHJvZmlsZWRDYWxsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1Zh
ckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKFByb2ZpbGVkQ29uc3RydWN0
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2Rl
Q2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKE5hdGl2ZUNhbGwsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCiAg
ICAgbWFjcm8oTmF0aXZlQ29uc3RydWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUhhc1ZhckFyZ3MgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDU0OWFiYTkyYmRkNWI3
YmJhMjdiOGViODVhOTljN2ZkYzdmNTNmMWIuLjc5NWU2MDU4MzUyNmMzNzYwM2MzMTg3Mjg3NzUy
MmI4ZmQ4Yjc4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcApAQCAtMTIxOSwxMSArMTIxOSw2IEBAIHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyVGll
clVwTm93KEV4ZWNTdGF0ZSogZXhlYykKICAgICBEZWZlckdDIGRlZmVyR0Modm0tPmhlYXApOwog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgCi0gICAg
aWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkgewotICAgICAgICBk
YXRhTG9nKCJVbmV4cGVjdGVkIGNvZGUgYmxvY2sgaW4gREZHLT5GVEwgdGllci11cDogIiwgKmNv
ZGVCbG9jaywgIlxuIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgfQotICAgIAogICAgIEpJVENvZGUqIGppdENvZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+
ZGZnKCk7CiAgICAgCiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgewpAQCAtMTI0Mywx
MSArMTIzOCw2IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gdHJpZ2dlck9TUkVudHJ5Tm93KAogICAg
IERlZmVyR0MgZGVmZXJHQyh2bS0+aGVhcCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKICAgICAKLSAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0g
SklUQ29kZTo6REZHSklUKSB7Ci0gICAgICAgIGRhdGFMb2coIlVuZXhwZWN0ZWQgY29kZSBibG9j
ayBpbiBERkctPkZUTCB0aWVyLXVwOiAiLCAqY29kZUJsb2NrLCAiXG4iKTsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0gICAgCiAgICAgSklUQ29kZSogaml0
Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKICAgICAKICAgICBpZiAoT3B0aW9u
czo6dmVyYm9zZU9TUigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGI1YjNhYjVmYmE4
YWVhOTZiNTcxNjQ2Y2Q1MjEzODhkYjdiZjEzNWQuLjlkNTJkNGY5ZTFlOTAzNjM3M2E4OTVlMGZh
MjFkNTY1MjBhMDMxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xODgsNiArMTg4LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKICAgICAgICAgY2FzZSBD
YWxsOgogICAgICAgICBjYXNlIENvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6
CisgICAgICAgIGNhc2UgUHJvZmlsZWRDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgTmF0aXZlQ2Fs
bDoKICAgICAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgICAgIGNhc2UgR2V0R2xvYmFs
VmFyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRl
eCA4ZThhZTA3N2Q2M2IwZTYwMGU2ODY2ZGNhYTI3MWVmYWJjODczNzgxLi4zMmMzYTJiNTNmM2Yx
OTVhOTg2YTFiMjM2Y2UzNjM1OTIyMGFjOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTg5LDYgKzE4OSw4IEBAIGJvb2wgc2FmZVRvRXhl
Y3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBDb25z
dHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0cnVj
dDoKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3
QXJyYXlXaXRoU2l6ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDAyMTg2ZjhlMjc1M2IzZTVjZDgxYTU5YjJjZTRl
NWI0MjM0MjI4OGYuLjdhNTA0ZGQ1OTBjMmJlOWNkM2U1OWVhMWE1YjAwZmM2MzdiZTU0NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcApAQCAtNjM4LDkgKzYzOCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVN
aXNjU3RyaWN0RXEoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZSkKIHsKLSAgICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbDsKKyAg
ICBib29sIGlzQ2FsbCA9IG5vZGUtPm9wKCkgPT0gQ2FsbCB8fCBub2RlLT5vcCgpID09IFByb2Zp
bGVkQ2FsbDsKICAgICBpZiAoIWlzQ2FsbCkKLSAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0g
Q29uc3RydWN0KTsKKyAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0IHx8IG5v
ZGUtPm9wKCkgPT0gUHJvZmlsZWRDb25zdHJ1Y3QpOwogCiAgICAgLy8gRm9yIGNvbnN0cnVjdG9y
cywgdGhlIHRoaXMgYXJndW1lbnQgaXMgbm90IHBhc3NlZCBidXQgd2UgaGF2ZSB0byBtYWtlIHNw
YWNlCiAgICAgLy8gZm9yIGl0LgpAQCAtNjg5LDYgKzY4OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgIAogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9
IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKIAorICAgIGlmIChub2RlLT5v
cCgpID09IFByb2ZpbGVkQ2FsbCB8fCBub2RlLT5vcCgpID09IFByb2ZpbGVkQ29uc3RydWN0KSB7
CisgICAgICAgIG1faml0LnZtKCktPmNhbGxFZGdlTG9nLT5lbWl0TG9nQ29kZSgKKyAgICAgICAg
ICAgIG1faml0LCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIGNhbGxlZS5qc1ZhbHVlUmVncygpKTsK
KyAgICB9CisgICAgCiAgICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaE5vdENlbGwoY2FsbGVlLmpz
VmFsdWVSZWdzKCkpKTsKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0aFBh
dGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlUGF5bG9hZEdQUiwgdGFyZ2V0VG9D
aGVjaykpOwogCkBAIC00MTY0LDYgKzQxNjksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6Cisg
ICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICAg
ICAgZW1pdENhbGwobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCA4MDNkNmM1YTQzYzQw
ZmJmYjFiZTBmMzA2MTRlZmU4ZTVlMmNiNDJkLi42YmZhNTYyYjlmNGRlOTI0ODZhZGNhZTgyN2I0
YThhMjc2M2NiYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTYyNCw5ICs2MjQsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTWlzY1N0cmljdEVxKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiB7Ci0gICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09
IENhbGw7CisgICAgYm9vbCBpc0NhbGwgPSBub2RlLT5vcCgpID09IENhbGwgfHwgbm9kZS0+b3Ao
KSA9PSBQcm9maWxlZENhbGw7CiAgICAgaWYgKCFpc0NhbGwpCi0gICAgICAgIERGR19BU1NFUlQo
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgbm9kZS0+b3AoKSA9PSBDb25zdHJ1Y3QpOworICAgICAgICBE
RkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIG5vZGUtPm9wKCkgPT0gQ29uc3RydWN0IHx8
IG5vZGUtPm9wKCkgPT0gUHJvZmlsZWRDb25zdHJ1Y3QpOwogICAgIAogICAgIC8vIEZvciBjb25z
dHJ1Y3RvcnMsIHRoZSB0aGlzIGFyZ3VtZW50IGlzIG5vdCBwYXNzZWQgYnV0IHdlIGhhdmUgdG8g
bWFrZSBzcGFjZQogICAgIC8vIGZvciBpdC4KQEAgLTY2OSw2ICs2NjksMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAKICAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IG1faml0LmNvZGVCbG9jaygpLT5hZGRDYWxsTGlua0luZm8oKTsKICAg
ICAKKyAgICBpZiAobm9kZS0+b3AoKSA9PSBQcm9maWxlZENhbGwgfHwgbm9kZS0+b3AoKSA9PSBQ
cm9maWxlZENvbnN0cnVjdCkgeworICAgICAgICBtX2ppdC52bSgpLT5jYWxsRWRnZUxvZy0+ZW1p
dExvZ0NvZGUoCisgICAgICAgICAgICBtX2ppdCwgY2FsbExpbmtJbmZvLT5jYWxsRWRnZVByb2Zp
bGUsIEpTVmFsdWVSZWdzKGNhbGxlZUdQUikpOworICAgIH0KKwogICAgIHNsb3dQYXRoID0gbV9q
aXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BS
LCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CiAKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBmYXN0Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CkBAIC00MjMx
LDYgKzQyMzYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAK
ICAgICBjYXNlIENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgY2FzZSBQcm9maWxlZENh
bGw6CisgICAgY2FzZSBQcm9maWxlZENvbnN0cnVjdDoKICAgICAgICAgZW1pdENhbGwobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCmluZGV4IDA5YzIy
YjhjMDRmZjk2YjFjMWU1MzBkZDY4ZGM5Y2JmZWIwMjdlYzkuLmQxYjZlN2FkZDVhMWJkZmFmMjIx
M2QzYjg4YjYxNTRkNDYzM2RlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcApAQCAtNTAsMTMgKzUw
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VGVExKSVQoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmIChtX2dyYXBoLm1fcHJv
ZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24pCisgICAgICAgIGlmIChtX2dyYXBo
Lm1fcHJvZmlsZWRCbG9jay0+bV9kaWRGYWlsRlRMQ29tcGlsYXRpb24pIHsKKyAgICAgICAgICAg
IHJlbW92ZUZUTFByb2ZpbGluZygpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CiAgICAgICAgIAogI2lmIEVOQUJMRShGVExfSklUKQogICAgICAgICBGVEw6OkNhcGFiaWxp
dHlMZXZlbCBsZXZlbCA9IEZUTDo6Y2FuQ29tcGlsZShtX2dyYXBoKTsKLSAgICAgICAgaWYgKGxl
dmVsID09IEZUTDo6Q2Fubm90Q29tcGlsZSkKKyAgICAgICAgaWYgKGxldmVsID09IEZUTDo6Q2Fu
bm90Q29tcGlsZSkgeworICAgICAgICAgICAgcmVtb3ZlRlRMUHJvZmlsaW5nKCk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICghT3B0
aW9uczo6ZW5hYmxlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNh
bkNvbXBpbGU7CkBAIC0xMTgsNiArMTIyLDMyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogICAgIH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIHJlbW92ZUZUTFByb2ZpbGluZygpCisgICAgeworICAgICAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKKyAg
ICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4
IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPnNldE9wKENhbGwpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBQcm9maWxlZENvbnN0
cnVjdDoKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3AoQ29uc3RydWN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH07CiAKIGJvb2wgcGVyZm9ybVRp
ZXJVcENoZWNrSW5qZWN0aW9uKEdyYXBoJiBncmFwaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA2ZDkwZDY5MWEzODQzOWZlMzRkNTViNjUw
NTc2ODhiMWUzMjIzMjZiLi42MWIzMWRiM2I0OGRkZjZjZjAxNGVlNjliYWViNmQzNWM4ZTBjZWY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBA
IC0xNzYsNiArMTc2LDExIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgIC8vIFRoZXNl
IGFyZSBPSy4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQcm9maWxlZENhbGw6CisgICAgY2Fz
ZSBQcm9maWxlZENvbnN0cnVjdDoKKyAgICAgICAgLy8gVGhlc2UgYXJlIE9LIG5vdCBiZWNhdXNl
IHRoZSBGVEwgY2FuIHN1cHBvcnQgdGhlbSwgYnV0IGJlY2F1c2UgaWYgdGhlIERGRyBzZWVzIG9u
ZSBvZgorICAgICAgICAvLyB0aGVzZSB0aGVuIHRoZSBGVEwgd2lsbCBzZWUgYSBub3JtYWwgQ2Fs
bC9Db25zdHJ1Y3QuCisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSWRlbnRpdHk6CiAgICAgICAg
IC8vIE5vIGJhY2tlbmQgaGFuZGxlcyB0aGlzIGJlY2F1c2UgaXQgd2lsbCBiZSBvcHRpbWl6ZWQg
b3V0LiBCdXQgd2UgbWF5IGNoZWNrCiAgICAgICAgIC8vIGZvciBjYXBhYmlsaXRpZXMgYmVmb3Jl
IG9wdGltaXphdGlvbi4gSXQgd291bGQgYmUgYSBkZWVwIGVycm9yIHRvIHJlbW92ZSB0aGlzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDAzNWRjNzg2OTI0YmQxMzJhYzFkZmE1
OGVjMmY2MmYwZWIwODkxOGMuLjEzNDIzMmFhNjdhNmFkNmRjNDllM2RiNjI1NTU1YjJhNWIwMTc0
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC05OTIsNiArOTkyLDExIEBA
IHZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQogICAgICAg
ICB2bSgpLT50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFs
KCJHQyIpKTsKICAgICB9CiAgICAgCisgICAgaWYgKHZtKCktPmNhbGxFZGdlTG9nKSB7CisgICAg
ICAgIERlZmVyR0NGb3JBV2hpbGUgYXdoaWxlKCp0aGlzKTsKKyAgICAgICAgdm0oKS0+Y2FsbEVk
Z2VMb2ctPnByb2Nlc3NMb2coKTsKKyAgICB9CisgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
ZGVmZXJyYWxEZXB0aCk7CiAgICAgQVNTRVJUKHZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtKCktPmF0b21pY1N0cmluZ1RhYmxlKCkg
PT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmgKaW5kZXggZjZhNDk2N2JjZWYyNWFlMGIxMGMzODI2ZGE0
ZjRmNjI1NzFhYjA4Yy4uZTY1ZWQwYTE5MWFhMGE2YzM5MGFhOTMwNTczZGYyNzAwNjM5Mjc0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5oCkBAIC01NCw3ICs1NCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogLy8gICAgIGludCB2YWx1ZSA9IHN3aXRjaC5jYXNlVmFsdWUo
KTsKIC8vICAgICB1bnNpZ25lZCBpbmRleCA9IHN3aXRjaC5jYXNlSW5kZXgoKTsgLy8gaW5kZXgg
aW50byBjYXNlc1ZlY3RvciwgYWJvdmUKIC8vICAgICAuLi4gLy8gZ2VuZXJhdGUgY29kZSBmb3Ig
dGhpcyBjYXNlCi0vLyAgICAgLi4uID0gaml0Lmp1bXAoKTsgLy8geW91IGhhdmUgdG8ganVtcCBv
dXQgeW91cnNlbGY7IGZhbGxpbmcgdGhyb3VnaCBjYXVzZXMgdW5kZWZpbmVkIGJlaGF2aW9yCiAv
LyB9CiAvLyBzd2l0Y2guZmFsbFRocm91Z2goKS5saW5rKCZqaXQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNGIzMzUyZmNjNmM4YTAzYWMxYjM0MGU5YjU1YmY5ODQzNjM0YjRmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5l
LmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
bG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmgiCisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAi
RXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJWTS5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQ2xvc3VyZUNhbGxTdHViUm91dGluZTo6
Q2xvc3VyZUNhbGxTdHViUm91dGluZSgKKyAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYm
IGNvZGUsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwKKyAgICBFeGVjdXRhYmxlQmFzZSog
ZXhlY3V0YWJsZSkKKyAgICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlLCB2bSkKKyAgICAs
IG1fZXhlY3V0YWJsZSh2bSwgb3duZXIsIGV4ZWN1dGFibGUpCit7Cit9CisKK0Nsb3N1cmVDYWxs
U3R1YlJvdXRpbmU6On5DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lKCkKK3sKK30KKwordm9pZCBDbG9z
dXJlQ2FsbFN0dWJSb3V0aW5lOjptYXJrUmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRvci5hcHBlbmQoJm1fZXhlY3V0YWJsZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5lLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nsb3N1cmVDYWxsU3R1YlJvdXRpbmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZTkzYmY2MDZlNTMwNjY1ZWUxZWFjYTc2YWVmYWM5NTEzZGM5MWU2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DbG9zdXJlQ2FsbFN0dWJSb3V0aW5l
LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENsb3N1cmVDYWxsU3R1YlJvdXRpbmVfaAor
I2RlZmluZSBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lX2gKKworI2lmIEVOQUJMRShKSVQpCisKKyNp
bmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDbG9zdXJlQ2FsbFN0dWJSb3V0aW5lIDogcHVi
bGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CitwdWJsaWM6CisgICAgQ2xvc3VyZUNhbGxTdHVi
Um91dGluZSgKKyAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25z
dCBKU0NlbGwqIG93bmVyLAorICAgICAgICBFeGVjdXRhYmxlQmFzZSopOworICAgIAorICAgIHZp
cnR1YWwgfkNsb3N1cmVDYWxsU3R1YlJvdXRpbmUoKTsKKyAgICAKKyAgICBFeGVjdXRhYmxlQmFz
ZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZS5nZXQoKTsgfQorCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChT
bG90VmlzaXRvciYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFdyaXRlQmFycmllcjxFeGVj
dXRhYmxlQmFzZT4gbV9leGVjdXRhYmxlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gQ2xvc3VyZUNhbGxTdHViUm91dGluZV9o
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCmluZGV4IDIxOGQxZTZmMDI3OTUw
NWM3MmMwYmViNjJmYTgxOGQzMDg0ODFmYjYuLjBhYmRmNzg4OTVmZWVjZGJjM2ZiNDRiYTlmMTQy
Njc5NDlmMmE1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtMjE0
LDYgKzIxNCwxMCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJRCwg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIAogICAgIENhbGxMaW5r
SW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxsTGlua0luZm8oKTsKIAorICAgIGlmIChD
YWxsRWRnZUxvZzo6aXNFbmFibGVkKCkgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpCisgICAgICAg
ICYmIE9wdGlvbnM6OmJhc2VsaW5lRG9lc0NhbGxFZGdlUHJvZmlsaW5nKCkpCisgICAgICAgIG1f
dm0tPmVuc3VyZUNhbGxFZGdlTG9nKCkuZW1pdExvZ0NvZGUoKnRoaXMsIGluZm8tPmNhbGxFZGdl
UHJvZmlsZSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9j
YWxsX2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCmlu
ZGV4IDcxMzgwM2ZiMzIwZjQ2NjU1OWI5OGMwMGFkZDk2ZDlhYjFiY2JjNDIuLjVjNWUwZTc1NjY0
ZDE4MDYzODYyMjY1NDA3OWRiMzNlZjg5YzQ1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTI3OCw2ICsyNzgsMTIgQEAgdm9pZCBKSVQ6OmNvbXBp
bGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5z
aWduZWQgY2EKIAogICAgIENhbGxMaW5rSW5mbyogaW5mbyA9IG1fY29kZUJsb2NrLT5hZGRDYWxs
TGlua0luZm8oKTsKIAorICAgIGlmIChDYWxsRWRnZUxvZzo6aXNFbmFibGVkKCkgJiYgc2hvdWxk
RW1pdFByb2ZpbGluZygpCisgICAgICAgICYmIE9wdGlvbnM6OmJhc2VsaW5lRG9lc0NhbGxFZGdl
UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgbV92bS0+ZW5zdXJlQ2FsbEVkZ2VMb2coKS5lbWl0TG9n
Q29kZSgKKyAgICAgICAgICAgICp0aGlzLCBpbmZvLT5jYWxsRWRnZVByb2ZpbGUsIEpTVmFsdWVS
ZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIH0KKwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxs
X2V2YWwpIHsKICAgICAgICAgY29tcGlsZUNhbGxFdmFsKGluc3RydWN0aW9uKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5k
ZXggYWUxNWI1MDI2ZmFkZTA3NTgyZTRhOWRmZTU1Y2MzMTkzZWViOGYzNS4uMzdhYTQ1ZDUzNjM5
MTFhNTk2M2YwYzkwYzBkMWNlZGZiYmUzMjJkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3NiwxMiArNzc2LDQ3IEBAIGlubGluZSBjaGFy
KiB2aXJ0dWFsRm9yKAogICAgIHJldHVybiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKGV4ZWNDYWxs
ZWUsIGtpbmQsIHJlZ2lzdGVycywgY2FsbGVlQXNGdW5jdGlvbkNlbGxJZ25vcmVkKTsKIH0KIAot
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rUG9seW1vcnBoaWNDYWxsKEV4ZWNTdGF0
ZSogZXhlY0NhbGxlZSwgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pCitzdGF0aWMgYm9vbCBh
dHRlbXB0VG9PcHRpbWl6ZUNsb3N1cmVDYWxsKAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwg
UmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHJlZ2lzdGVycywgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0
aW9uQ2VsbCwKKyAgICBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbykKK3sKKyAgICBpZiAoIWNh
bGxlZUFzRnVuY3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgSlNG
dW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2Vs
bCk7CisgICAgSlNGdW5jdGlvbiogb2xkQ2FsbGVlID0gY2FsbExpbmtJbmZvLmNhbGxlZS5nZXQo
KTsKKyAgICAKKyAgICBpZiAoIW9sZENhbGxlZSB8fCBvbGRDYWxsZWUtPmV4ZWN1dGFibGUoKSAh
PSBjYWxsZWUtPmV4ZWN1dGFibGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IEFTU0VSVChjYWxsZWUtPmV4ZWN1dGFibGUoKS0+aGFzSklUQ29kZUZvckNhbGwoKSk7CisgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIgPQorICAgICAgICBjYWxsZWUtPmV4ZWN1dGFi
bGUoKS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+YWRkcmVzc0ZvckNhbGwoCisgICAgICAg
ICAgICAqZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCktPnZtKCksIGNhbGxl
ZS0+ZXhlY3V0YWJsZSgpLAorICAgICAgICAgICAgQXJpdHlDaGVja05vdFJlcXVpcmVkLCByZWdp
c3RlcnMpOworICAgIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrOworICAgIGlmIChjYWxsZWUt
PmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZUJsb2NrID0gMDsK
KyAgICBlbHNlIHsKKyAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNhbGxlZS0+ZXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrRm9yQ2FsbCgpOworICAgICAgICBp
ZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0
PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpIHx8IGNhbGxMaW5rSW5mby5jYWxs
VHlwZSA9PSBDYWxsTGlua0luZm86OkNhbGxWYXJhcmdzIHx8IGNhbGxMaW5rSW5mby5jYWxsVHlw
ZSA9PSBDYWxsTGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3MpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIAorICAgIGxpbmtDbG9zdXJlQ2FsbCgKKyAgICAgICAgZXhlY0Nh
bGxlZSwgY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNhbGxlZS0+ZXhlY3V0YWJsZSgpLCBjb2Rl
UHRyLCByZWdpc3RlcnMpOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKQogewogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5j
dGlvbkNlbGw7CiAgICAgY2hhciogcmVzdWx0ID0gdmlydHVhbEZvcldpdGhGdW5jdGlvbihleGVj
Q2FsbGVlLCBDb2RlRm9yQ2FsbCwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZCwgY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOwogCi0gICAgbGlua1BvbHltb3JwaGljQ2FsbChleGVjQ2FsbGVl
LCAqY2FsbExpbmtJbmZvLCBDYWxsVmFyaWFudChjYWxsZWVBc0Z1bmN0aW9uQ2VsbCksIFJlZ2lz
dGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQpOworICAgIGlmICghYXR0ZW1wdFRvT3B0aW1pemVD
bG9zdXJlQ2FsbChleGVjQ2FsbGVlLCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkLCBj
YWxsZWVBc0Z1bmN0aW9uQ2VsbCwgKmNhbGxMaW5rSW5mbykpCisgICAgICAgIGxpbmtTbG93Rm9y
KGV4ZWNDYWxsZWUsICpjYWxsTGlua0luZm8sIENvZGVGb3JDYWxsLCBSZWdpc3RlclByZXNlcnZh
dGlvbk5vdFJlcXVpcmVkKTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNzk2LDEy
ICs4MzEsMTMgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25WaXJ0dWFsQ29uc3RydWN0
KEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ2FsbExpbmtJbmYKICAgICByZXR1cm4gdmlydHVhbEZv
cihleGVjQ2FsbGVlLCBDb2RlRm9yQ29uc3RydWN0LCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJl
cXVpcmVkKTsKIH0KIAotY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rUG9seW1vcnBo
aWNDYWxsVGhhdFByZXNlcnZlc1JlZ3MoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbykKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0Nsb3N1
cmVDYWxsVGhhdFByZXNlcnZlc1JlZ3MoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbykKIHsKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsOwog
ICAgIGNoYXIqIHJlc3VsdCA9IHZpcnR1YWxGb3JXaXRoRnVuY3Rpb24oZXhlY0NhbGxlZSwgQ29k
ZUZvckNhbGwsIE11c3RQcmVzZXJ2ZVJlZ2lzdGVycywgY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwog
Ci0gICAgbGlua1BvbHltb3JwaGljQ2FsbChleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZvLCBDYWxs
VmFyaWFudChjYWxsZWVBc0Z1bmN0aW9uQ2VsbCksIE11c3RQcmVzZXJ2ZVJlZ2lzdGVycyk7Cisg
ICAgaWYgKCFhdHRlbXB0VG9PcHRpbWl6ZUNsb3N1cmVDYWxsKGV4ZWNDYWxsZWUsIE11c3RQcmVz
ZXJ2ZVJlZ2lzdGVycywgY2FsbGVlQXNGdW5jdGlvbkNlbGwsICpjYWxsTGlua0luZm8pKQorICAg
ICAgICBsaW5rU2xvd0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZvLCBDb2RlRm9yQ2FsbCwg
TXVzdFByZXNlcnZlUmVnaXN0ZXJzKTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
OTk3LDEwICsxMDMzLDYgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IGJ5dGUKICAgICBEZWZlckdDRm9y
QVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpIHsKLSAgICAgICAgZGF0YUxvZygiVW5leHBlY3RlZCBjb2RlIGJs
b2NrIGluIEJhc2VsaW5lLT5ERkcgdGllci11cDogIiwgKmNvZGVCbG9jaywgIlxuIik7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQogICAgIAogICAgIGlmIChi
eXRlY29kZUluZGV4KSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGF0dGVtcHRpbmcgdG8gT1NSIGZy
b20gYSBsb29wLCBhc3N1bWUgdGhhdCB0aGlzIHNob3VsZCBiZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBjNDNiZjdiNjlmNjA5YTEyY2U3Y2NiNTU2MmI4
NmQ1ZTg5MjdiZDkwLi44MDQyOTFlMzcxMjgwMDNiZWEzZTljZWZiMWU2N2EyNDM1NDYxZTVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjQ2LDEyICsy
NDYsMTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEoKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChFeGVjU3RhdGUqLCBFeGVjU3RhdGUq
KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsKEV4
ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKLWNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbChFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8q
KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDbG9zdXJl
Q2FsbChFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDYWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyop
IFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmlydHVhbENvbnN0
cnVjdChFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDb25zdHJ1Y3QoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZv
KikgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ2FsbFRo
YXRQcmVzZXJ2ZXNSZWdzKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsK
LWNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbFRoYXRQcmVz
ZXJ2ZXNSZWdzKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKK2NoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0Nsb3N1cmVDYWxsVGhhdFByZXNlcnZlc1JlZ3Mo
RXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKikgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25WaXJ0dWFsQ2FsbFRoYXRQcmVzZXJ2ZXNSZWdzKEV4ZWNTdGF0ZSosIENh
bGxMaW5rSW5mbyopIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VmlydHVhbENvbnN0cnVjdFRoYXRQcmVzZXJ2ZXNSZWdzKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5m
byopIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0
cnVjdFRoYXRQcmVzZXJ2ZXNSZWdzKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopIFdURl9JTlRF
Uk5BTDsKQEAgLTM5MSwxMyArMzkxLDEzIEBAIGlubGluZSBQX0pJVE9wZXJhdGlvbl9FQ2xpIG9w
ZXJhdGlvblZpcnR1YWxGb3IoCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlubGluZSBQX0pJVE9wZXJh
dGlvbl9FQ2xpIG9wZXJhdGlvbkxpbmtQb2x5bW9ycGhpY0NhbGxGb3IoUmVnaXN0ZXJQcmVzZXJ2
YXRpb25Nb2RlIHJlZ2lzdGVycykKK2lubGluZSBQX0pJVE9wZXJhdGlvbl9FQ2xpIG9wZXJhdGlv
bkxpbmtDbG9zdXJlQ2FsbEZvcihSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcmVnaXN0ZXJzKQog
ewogICAgIHN3aXRjaCAocmVnaXN0ZXJzKSB7CiAgICAgY2FzZSBSZWdpc3RlclByZXNlcnZhdGlv
bk5vdFJlcXVpcmVkOgotICAgICAgICByZXR1cm4gb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2Fs
bDsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkxpbmtDbG9zdXJlQ2FsbDsKICAgICBjYXNlIE11
c3RQcmVzZXJ2ZVJlZ2lzdGVyczoKLSAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkxpbmtQb2x5bW9y
cGhpY0NhbGxUaGF0UHJlc2VydmVzUmVnczsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkxpbmtD
bG9zdXJlQ2FsbFRoYXRQcmVzZXJ2ZXNSZWdzOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHViUm91dGluZS5oCmluZGV4IDg0OTQ5MmIzNGQ4NWRhODZjNjk1Mzg3NTM0OWYwNjY1MjZl
NjI0YTEuLjE2MzcwNWQyZGM3MDQyM2U1OTg1MDZhOTBhYzM3ZWNjMWI0YmNjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YlJvdXRpbmUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJSb3V0aW5lLmgKQEAgLTE0MSw5ICsxNDEsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICAvLyBSZXR1
cm4gdHJ1ZSBpZiB5b3UgYXJlIHN0aWxsIHZhbGlkIGFmdGVyLiBSZXR1cm4gZmFsc2UgaWYgeW91
IGFyZSBub3cgaW52YWxpZC4gSWYgeW91IHJldHVybgotICAgIC8vIGZhbHNlLCB5b3Ugd2lsbCB1
c3VhbGx5IG5vdCBkbyBhbnkgY2xlYXJpbmcgYmVjYXVzZSB0aGUgaWRlYSBpcyB0aGF0IHlvdSB3
aWxsIHNpbXBseSBiZQotICAgIC8vIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRX
ZWFrKFJlcGF0Y2hCdWZmZXImKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRXcml0ZUJhcnJpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUV3JpdGVCYXJyaWVyLmgKaW5kZXggYjlkYTQ5ODI4YTdjZTcxYjQwZTc5MjBlZjI1
MjFmOTZhMGEyODU5MC4uMzRjMjBkYjY2ZDQ5NWY2NTUyODM1MDBmZmRhODhiOTFhNjljZDkxNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXcml0ZUJhcnJpZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdyaXRlQmFycmllci5oCkBAIC0zMSw3
ICszMSw2IEBACiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJTbG90Vmlz
aXRvci5oIgogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIKLSNpbmNsdWRlICJWTS5oIgogI2lu
Y2x1ZGUgIldyaXRlQmFycmllci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MzgyZGFhYjJkOTM2YTIzYmQ4YTkxODEx
YTBkZGJmMzA1MGRjNmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCIKLQotI2lmIEVOQUJMRShKSVQpCi0KLSNp
bmNsdWRlICJDYWxsTGlua0luZm8uaCIKLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiTGlua0J1ZmZlci5oIgotCi1uYW1lc3BhY2UgSlND
IHsKLQotUG9seW1vcnBoaWNDYWxsTm9kZTo6flBvbHltb3JwaGljQ2FsbE5vZGUoKQotewotICAg
IGlmIChpc09uTGlzdCgpKQotICAgICAgICByZW1vdmUoKTsKLX0KLQotdm9pZCBQb2x5bW9ycGhp
Y0NhbGxOb2RlOjp1bmxpbmsoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlcikKLXsKLSAgICBp
ZiAoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFMb2coIlVubGlua2lu
ZyBwb2x5bW9ycGhpYyBjYWxsIGF0ICIsIG1fY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRp
b24sICIsICIsIG1fY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luLCAiXG4iKTsKLSAgICAKLSAgICBt
X2NhbGxMaW5rSW5mby0+dW5saW5rKHJlcGF0Y2hCdWZmZXIpOwotICAgIAotICAgIGlmIChpc09u
TGlzdCgpKQotICAgICAgICByZW1vdmUoKTsKLX0KLQotdm9pZCBQb2x5bW9ycGhpY0NhbGxDYXNl
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci17Ci0gICAgb3V0LnByaW50KCI8dmFyaWFu
dCA9ICIsIG1fdmFyaWFudCwgIiwgY29kZUJsb2NrID0gIiwgcG9pbnRlckR1bXAobV9jb2RlQmxv
Y2spLCAiPiIpOwotfQotCi1Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUoCi0gICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlUmVm
LCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUsCi0g
ICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4m
IGNhc2VzLAotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBmYXN0Q291bnRzKQotICAg
IDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQotICAgICwgbV9mYXN0Q291bnRz
KFdURjo6bW92ZShmYXN0Q291bnRzKSkKLXsKLSAgICBmb3IgKFBvbHltb3JwaGljQ2FsbENhc2Ug
Y2FsbENhc2UgOiBjYXNlcykgewotICAgICAgICBtX3ZhcmlhbnRzLmFwcGVuZChXcml0ZUJhcnJp
ZXI8SlNDZWxsPih2bSwgb3duZXIsIGNhbGxDYXNlLnZhcmlhbnQoKS5yYXdDYWxsZWVDZWxsKCkp
KTsKLSAgICAgICAgaWYgKHNob3VsZFNob3dEaXNhc3NlbWJseUZvcihjYWxsZXJGcmFtZS0+Y29k
ZUJsb2NrKCkpKQotICAgICAgICAgICAgZGF0YUxvZygiTGlua2luZyBwb2x5bW9ycGhpYyBjYWxs
IGluICIsICpjYWxsZXJGcmFtZS0+Y29kZUJsb2NrKCksICIgYXQgIiwgY2FsbGVyRnJhbWUtPmNv
ZGVPcmlnaW4oKSwgIiB0byAiLCBjYWxsQ2FzZS52YXJpYW50KCksICIsIGNvZGVCbG9jayA9ICIs
IHBvaW50ZXJEdW1wKGNhbGxDYXNlLmNvZGVCbG9jaygpKSwgIlxuIik7Ci0gICAgICAgIGlmIChD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxDYXNlLmNvZGVCbG9jaygpKQotICAgICAgICAgICAg
Y29kZUJsb2NrLT5saW5rSW5jb21pbmdQb2x5bW9ycGhpY0NhbGwoY2FsbGVyRnJhbWUsIG1fY2Fs
bE5vZGVzLmFkZCgmaW5mbykpOwotICAgIH0KLSAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7
Ci0gICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLX0KLQotUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmU6On5Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgpIHsgfQotCi1DYWxsVmFyaWFudExp
c3QgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OnZhcmlhbnRzKCkgY29uc3QKLXsKLSAgICBD
YWxsVmFyaWFudExpc3QgcmVzdWx0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJp
YW50cy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsVmFyaWFudChtX3Zh
cmlhbnRzW2ldLmdldCgpKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotQ2FsbEVkZ2VMaXN0
IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjplZGdlcygpIGNvbnN0Ci17Ci0gICAgLy8gV2Ug
d291bGRuJ3QgaGF2ZSB0aGVzZSBpZiB0aGlzIHdhcyBhbiBGVEwgc3R1YiByb3V0aW5lLiBXZSBz
aG91bGRuJ3QgYmUgYXNraW5nIGZvciBwcm9maWxpbmcKLSAgICAvLyBmcm9tIHRoZSBGVEwuCi0g
ICAgUkVMRUFTRV9BU1NFUlQobV9mYXN0Q291bnRzKTsKLSAgICAKLSAgICBDYWxsRWRnZUxpc3Qg
cmVzdWx0OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJpYW50cy5zaXplKCk7ICsr
aSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChDYWxsRWRnZShDYWxsVmFyaWFudChtX3ZhcmlhbnRz
W2ldLmdldCgpKSwgbV9mYXN0Q291bnRzW2ldKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
Ym9vbCBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6dmlzaXRXZWFrKFJlcGF0Y2hCdWZmZXIm
KQotewotICAgIGZvciAoYXV0byYgdmFyaWFudCA6IG1fdmFyaWFudHMpIHsKLSAgICAgICAgaWYg
KCFIZWFwOjppc01hcmtlZCh2YXJpYW50LmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmU6Om1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYgdmlzaXRv
cikKLXsKLSAgICBmb3IgKGF1dG8mIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQotICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmdmFyaWFudCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDVhYjU3ODU4YTJjNWJmYjg1NDRkNGU3MmM5MjlhMTAyMDNkMDZjYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lX2gKLSNkZWZpbmUgUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmVfaAotCi0jaWYgRU5BQkxFKEpJVCkKLQotI2luY2x1ZGUgIkNhbGxFZGdlLmgi
Ci0jaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKLSNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCi0jaW5j
bHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1zdHJ1Y3QgQ2FsbExpbmtJbmZvOwotCi1jbGFzcyBQb2x5
bW9ycGhpY0NhbGxOb2RlIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGlj
Q2FsbE5vZGU+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQb2x5bW9ycGhpY0NhbGxOb2Rl
KTsKLXB1YmxpYzoKLSAgICBQb2x5bW9ycGhpY0NhbGxOb2RlKENhbGxMaW5rSW5mbyogaW5mbykK
LSAgICAgICAgOiBtX2NhbGxMaW5rSW5mbyhpbmZvKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAg
flBvbHltb3JwaGljQ2FsbE5vZGUoKTsKLSAgICAKLSAgICB2b2lkIHVubGluayhSZXBhdGNoQnVm
ZmVyJik7Ci0gICAgCi1wcml2YXRlOgotICAgIENhbGxMaW5rSW5mbyogbV9jYWxsTGlua0luZm87
Ci19OwotCi1jbGFzcyBQb2x5bW9ycGhpY0NhbGxDYXNlIHsKLXB1YmxpYzoKLSAgICBQb2x5bW9y
cGhpY0NhbGxDYXNlKCkKLSAgICAgICAgOiBtX2NvZGVCbG9jayhudWxscHRyKQotICAgIHsKLSAg
ICB9Ci0gICAgCi0gICAgUG9seW1vcnBoaWNDYWxsQ2FzZShDYWxsVmFyaWFudCB2YXJpYW50LCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICAgICAgOiBtX3ZhcmlhbnQodmFyaWFudCkKLSAgICAg
ICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCi0gICAgewotICAgIH0KLSAgICAKLSAgICBDYWxs
VmFyaWFudCB2YXJpYW50KCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50OyB9Ci0gICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jazsgfQotICAgIAotICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotICAgIAotcHJpdmF0ZToKLSAgICBDYWxs
VmFyaWFudCBtX3ZhcmlhbnQ7Ci0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLX07Ci0KLWNs
YXNzIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91
dGluZSB7Ci1wdWJsaWM6Ci0gICAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCi0gICAgICAg
IGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwK
LSAgICAgICAgRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSwgQ2FsbExpbmtJbmZvJiwgY29uc3QgVmVj
dG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQz
Ml90W10+IGZhc3RDb3VudHMpOwotICAgIAotICAgIHZpcnR1YWwgflBvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lKCk7Ci0gICAgCi0gICAgQ2FsbFZhcmlhbnRMaXN0IHZhcmlhbnRzKCkgY29uc3Q7
Ci0gICAgQ2FsbEVkZ2VMaXN0IGVkZ2VzKCkgY29uc3Q7Ci0gICAgCi0gICAgYm9vbCB2aXNpdFdl
YWsoUmVwYXRjaEJ1ZmZlciYpIG92ZXJyaWRlOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2
b2lkIG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpIG92ZXJyaWRlOwot
Ci1wcml2YXRlOgotICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPiwgMj4gbV92YXJpYW50
czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4gbV9mYXN0Q291bnRzOwotICAgIEJh
ZzxQb2x5bW9ycGhpY0NhbGxOb2RlPiBtX2NhbGxOb2RlczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwotCi0jZW5kaWYgLy8gRU5BQkxFKEpJVCkKLQotI2VuZGlmIC8vIFBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXgg
YTc4N2JkMWI5YWFhM2UxZTlmODE3MDliODI0NmU4YmYyNDM4MDkwMi4uZDk0YjllM2FjM2ExNGM5
NTJiNDY1NTZlZTE2YzA4MzUxMTVkMWE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkFj
Y2Vzc29yQ2FsbEpJVFN0dWJSb3V0aW5lLmgiCi0jaW5jbHVkZSAiQmluYXJ5U3dpdGNoLmgiCiAj
aW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCkBAIC0xNTc2LDE3ICsxNTc1LDEyIEBAIHZvaWQg
cmVwYXRjaEluKAogfQogCiBzdGF0aWMgdm9pZCBsaW5rU2xvd0ZvcigKLSAgICBSZXBhdGNoQnVm
ZmVyJiByZXBhdGNoQnVmZmVyLCBWTSogdm0sIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBU
aHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCi17Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoCi0g
ICAgICAgIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIHZtLT5nZXRDVElTdHViKGdl
bmVyYXRvcikuY29kZSgpKTsKLX0KLQotc3RhdGljIHZvaWQgbGlua1Nsb3dGb3IoCiAgICAgUmVw
YXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5r
SW5mbywKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFJlZ2lzdGVyUHJlc2VydmF0
aW9uTW9kZSByZWdpc3RlcnMpCiB7Ci0gICAgbGlua1Nsb3dGb3IocmVwYXRjaEJ1ZmZlciwgdm0s
IGNhbGxMaW5rSW5mbywgdmlydHVhbFRodW5rR2VuZXJhdG9yRm9yKGtpbmQsIHJlZ2lzdGVycykp
OworICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKAorICAgICAgICBjYWxsTGlua0luZm8uY2FsbFJl
dHVybkxvY2F0aW9uLAorICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih2aXJ0dWFsVGh1bmtHZW5lcmF0
b3JGb3Ioa2luZCwgcmVnaXN0ZXJzKSkuY29kZSgpKTsKIH0KIAogdm9pZCBsaW5rRm9yKApAQCAt
MTU5OCw2ICsxNTkyLDEwIEBAIHZvaWQgbGlua0ZvcigKICAgICAKICAgICBDb2RlQmxvY2sqIGNh
bGxlckNvZGVCbG9jayA9IGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpOwogCisgICAg
Ly8gSWYgeW91J3JlIGJlaW5nIGNhbGwtbGlua2VkIGZyb20gYSBERkcgY2FsbGVyIHRoZW4geW91
IG9idmlvdXNseSBkaWRuJ3QgZ2V0IGlubGluZWQuCisgICAgaWYgKGNhbGxlZUNvZGVCbG9jayAm
JiBKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkpKQor
ICAgICAgICBjYWxsZWVDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7
CisgICAgCiAgICAgVk0qIHZtID0gY2FsbGVyQ29kZUJsb2NrLT52bSgpOwogICAgIAogICAgIFJl
cGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjYWxsZXJDb2RlQmxvY2spOwpAQCAtMTYxMyw4ICsx
NjExLDcgQEAgdm9pZCBsaW5rRm9yKAogICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmxpbmtJbmNv
bWluZ0NhbGwoZXhlYy0+Y2FsbGVyRnJhbWUoKSwgJmNhbGxMaW5rSW5mbyk7CiAgICAgCiAgICAg
aWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKLSAgICAgICAgbGlua1Nsb3dGb3IoCi0gICAgICAg
ICAgICByZXBhdGNoQnVmZmVyLCB2bSwgY2FsbExpbmtJbmZvLCBsaW5rUG9seW1vcnBoaWNDYWxs
VGh1bmtHZW5lcmF0b3JGb3IocmVnaXN0ZXJzKSk7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rKGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIHZtLT5nZXRDVElTdHViKGxpbmtD
bG9zdXJlQ2FsbFRodW5rR2VuZXJhdG9yRm9yKHJlZ2lzdGVycykpLmNvZGUoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xNjM0LDEyMiArMTYzMSwxNiBAQCB2b2lkIGxpbmtT
bG93Rm9yKAogICAgIGxpbmtTbG93Rm9yKHJlcGF0Y2hCdWZmZXIsIHZtLCBjYWxsTGlua0luZm8s
IGtpbmQsIHJlZ2lzdGVycyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJldmVydENhbGwoCi0gICAgUmVw
YXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgVk0qIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5r
SW5mbywgVGh1bmtHZW5lcmF0b3IgZ2VuZXJhdG9yKQotewotICAgIHJlcGF0Y2hCdWZmZXIucmV2
ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goCi0gICAgICAgIFJlcGF0Y2hC
dWZmZXI6OnN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGNhbGxMaW5rSW5mby5o
b3RQYXRoQmVnaW4pLAotICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0
ZXJJRD4oY2FsbExpbmtJbmZvLmNhbGxlZUdQUiksIDApOwotICAgIGxpbmtTbG93Rm9yKHJlcGF0
Y2hCdWZmZXIsIHZtLCBjYWxsTGlua0luZm8sIGdlbmVyYXRvcik7Ci0gICAgY2FsbExpbmtJbmZv
Lmhhc1NlZW5TaG91bGRSZXBhdGNoID0gZmFsc2U7Ci0gICAgY2FsbExpbmtJbmZvLmNhbGxlZS5j
bGVhcigpOwotICAgIGNhbGxMaW5rSW5mby5zdHViLmNsZWFyKCk7Ci0gICAgaWYgKGNhbGxMaW5r
SW5mby5pc09uTGlzdCgpKQotICAgICAgICBjYWxsTGlua0luZm8ucmVtb3ZlKCk7Ci19Ci0KLXZv
aWQgdW5saW5rRm9yKAotICAgIFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIENhbGxMaW5r
SW5mbyYgY2FsbExpbmtJbmZvLAotICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgUmVn
aXN0ZXJQcmVzZXJ2YXRpb25Nb2RlIHJlZ2lzdGVycykKLXsKLSAgICBpZiAoT3B0aW9uczo6c2hv
d0Rpc2Fzc2VtYmx5KCkpCi0gICAgICAgIGRhdGFMb2coIlVubGlua2luZyBjYWxsIGZyb20gIiwg
Y2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgIiBpbiByZXF1ZXN0IGZyb20gIiwgcG9p
bnRlckR1bXAocmVwYXRjaEJ1ZmZlci5jb2RlQmxvY2soKSksICJcbiIpOwotICAgIAotICAgIHJl
dmVydENhbGwoCi0gICAgICAgIHJlcGF0Y2hCdWZmZXIsIHJlcGF0Y2hCdWZmZXIuY29kZUJsb2Nr
KCktPnZtKCksIGNhbGxMaW5rSW5mbywKLSAgICAgICAgbGlua1RodW5rR2VuZXJhdG9yRm9yKGtp
bmQsIHJlZ2lzdGVycykpOwotfQotCi12b2lkIGxpbmtWaXJ0dWFsRm9yKAotICAgIEV4ZWNTdGF0
ZSogZXhlYywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCi0gICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcmVnaXN0ZXJzKQotewotICAg
IC8vIEZJWE1FOiBXZSBjb3VsZCBnZW5lcmF0ZSBhIHZpcnR1YWwgY2FsbCBzdHViIGhlcmUuIFRo
aXMgd291bGQgbGVhZCB0byBmYXN0ZXIgdmlydHVhbCBjYWxscwotICAgIC8vIGJ5IGVsaW1pbmF0
aW5nIHRoZSBicmFuY2ggcHJlZGljdGlvbiBib3R0bGVuZWNrIGluc2lkZSB0aGUgc2hhcmVkIHZp
cnR1YWwgY2FsbCB0aHVuay4KLSAgICAKLSAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9
IGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpOwotICAgIFZNKiB2bSA9IGNhbGxlckNv
ZGVCbG9jay0+dm0oKTsKLSAgICAKLSAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5Rm9yKGNh
bGxlckNvZGVCbG9jaykpCi0gICAgICAgIGRhdGFMb2coIkxpbmtpbmcgdmlydHVhbCBjYWxsIGF0
ICIsICpjYWxsZXJDb2RlQmxvY2ssICIgIiwgZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZU9yaWdp
bigpLCAiXG4iKTsKLSAgICAKLSAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2FsbGVy
Q29kZUJsb2NrKTsKLSAgICByZXZlcnRDYWxsKHJlcGF0Y2hCdWZmZXIsIHZtLCBjYWxsTGlua0lu
Zm8sIHZpcnR1YWxUaHVua0dlbmVyYXRvckZvcihraW5kLCByZWdpc3RlcnMpKTsKLX0KLQotbmFt
ZXNwYWNlIHsKLXN0cnVjdCBDYWxsVG9Db2RlUHRyIHsKLSAgICBDQ2FsbEhlbHBlcnM6OkNhbGwg
Y2FsbDsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKLX07Ci19IC8vIGFubm9u
eW1vdXMgbmFtZXNwYWNlCi0KLXZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKLSAgICBFeGVjU3Rh
dGUqIGV4ZWMsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLCBDYWxsVmFyaWFudCBuZXdWYXJp
YW50LAordm9pZCBsaW5rQ2xvc3VyZUNhbGwoCisgICAgRXhlY1N0YXRlKiBleGVjLCBDYWxsTGlu
a0luZm8mIGNhbGxMaW5rSW5mbywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIAorICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciwK
ICAgICBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUgcmVnaXN0ZXJzKQogewotICAgIC8vIEN1cnJl
bnRseSB3ZSBjYW4ndCBkbyBhbnl0aGluZyBmb3Igbm9uLWZ1bmN0aW9uIGNhbGxlZXMuCi0gICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDY4NQotICAgIGlm
ICghbmV3VmFyaWFudCB8fCAhbmV3VmFyaWFudC5leGVjdXRhYmxlKCkpIHsKLSAgICAgICAgbGlu
a1ZpcnR1YWxGb3IoZXhlYywgY2FsbExpbmtJbmZvLCBDb2RlRm9yQ2FsbCwgcmVnaXN0ZXJzKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby5zdHViKTsK
ICAgICAKICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4ZWMtPmNhbGxlckZyYW1l
KCktPmNvZGVCbG9jaygpOwogICAgIFZNKiB2bSA9IGNhbGxlckNvZGVCbG9jay0+dm0oKTsKICAg
ICAKLSAgICBDYWxsVmFyaWFudExpc3QgbGlzdDsKLSAgICBpZiAoUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUqIHN0dWIgPSBjYWxsTGlua0luZm8uc3R1Yi5nZXQoKSkKLSAgICAgICAgbGlzdCA9
IHN0dWItPnZhcmlhbnRzKCk7Ci0gICAgZWxzZSBpZiAoSlNGdW5jdGlvbiogb2xkQ2FsbGVlID0g
Y2FsbExpbmtJbmZvLmNhbGxlZS5nZXQoKSkKLSAgICAgICAgbGlzdCA9IENhbGxWYXJpYW50TGlz
dHsgQ2FsbFZhcmlhbnQob2xkQ2FsbGVlKSB9OwotICAgIAotICAgIGxpc3QgPSB2YXJpYW50TGlz
dFdpdGhWYXJpYW50KGxpc3QsIG5ld1ZhcmlhbnQpOwotCi0gICAgLy8gSWYgdGhlcmUgYXJlIGFu
eSBjbG9zdXJlIGNhbGxzIHRoZW4gaXQgbWFrZXMgc2Vuc2UgdG8gdHJlYXQgYWxsIG9mIHRoZW0g
YXMgY2xvc3VyZSBjYWxscy4KLSAgICAvLyBUaGlzIG1ha2VzIHN3aXRjaGluZyBvbiBjYWxsZWUg
Y2hlYXBlci4gSXQgYWxzbyBwcm9kdWNlcyBwcm9maWxpbmcgdGhhdCdzIGVhc2llciBvbiB0aGUg
REZHOwotICAgIC8vIHRoZSBERkcgZG9lc24ndCByZWFsbHkgd2FudCB0byBkZWFsIHdpdGggYSBj
b21iaW5hdGlvbiBvZiBjbG9zdXJlIGFuZCBub24tY2xvc3VyZSBjYWxsZWVzLgotICAgIGJvb2wg
aXNDbG9zdXJlQ2FsbCA9IGZhbHNlOwotICAgIGZvciAoQ2FsbFZhcmlhbnQgdmFyaWFudCA6IGxp
c3QpICB7Ci0gICAgICAgIGlmICh2YXJpYW50LmlzQ2xvc3VyZUNhbGwoKSkgewotICAgICAgICAg
ICAgbGlzdCA9IGRlc3BlY2lmaWVkVmFyaWFudExpc3QobGlzdCk7Ci0gICAgICAgICAgICBpc0Ns
b3N1cmVDYWxsID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQot
ICAgIAotICAgIFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiBjYWxsQ2FzZXM7Ci0gICAgCi0g
ICAgLy8gRmlndXJlIG91dCB3aGF0IG91ciBjYXNlcyBhcmUuCi0gICAgZm9yIChDYWxsVmFyaWFu
dCB2YXJpYW50IDogbGlzdCkgewotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jazsKLSAgICAg
ICAgaWYgKHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAgICAg
ICAgY29kZUJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb2Rl
QmxvY2sgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4odmFyaWFudC5leGVjdXRhYmxlKCkp
LT5jb2RlQmxvY2tGb3JDYWxsKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIElmIHdl
IGNhbm5vdCBoYW5kbGUgYSBjYWxsZWUsIGFzc3VtZSB0aGF0IGl0J3MgYmV0dGVyIGZvciB0aGlz
IHdob2xlIHRoaW5nIHRvIGJlIGEKLSAgICAgICAgICAgIC8vIHZpcnR1YWwgY2FsbC4KLSAgICAg
ICAgICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkgfHwgY2FsbExpbmtJbmZvLmNh
bGxUeXBlID09IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3MgfHwgY2FsbExpbmtJbmZvLmNhbGxU
eXBlID09IENhbGxMaW5rSW5mbzo6Q29uc3RydWN0VmFyYXJncykgewotICAgICAgICAgICAgICAg
IGxpbmtWaXJ0dWFsRm9yKGV4ZWMsIGNhbGxMaW5rSW5mbywgQ29kZUZvckNhbGwsIHJlZ2lzdGVy
cyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBjYWxsQ2FzZXMuYXBwZW5kKFBvbHltb3JwaGljQ2FsbENhc2UodmFy
aWFudCwgY29kZUJsb2NrKSk7Ci0gICAgfQotICAgIAotICAgIC8vIElmIHdlIGFyZSBvdmVyIHRo
ZSBsaW1pdCwganVzdCB1c2UgYSBub3JtYWwgdmlydHVhbCBjYWxsLgotICAgIHVuc2lnbmVkIG1h
eFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZTsKLSAgICBpZiAoY2FsbGVyQ29kZUJsb2Nr
LT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6dG9wVGllckpJVCgpKQotICAgICAgICBtYXhQb2x5bW9y
cGhpY0NhbGxWYXJpYW50TGlzdFNpemUgPSBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0NhbGxWYXJp
YW50TGlzdFNpemVGb3JUb3BUaWVyKCk7Ci0gICAgZWxzZQotICAgICAgICBtYXhQb2x5bW9ycGhp
Y0NhbGxWYXJpYW50TGlzdFNpemUgPSBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50
TGlzdFNpemUoKTsKLSAgICBpZiAobGlzdC5zaXplKCkgPiBtYXhQb2x5bW9ycGhpY0NhbGxWYXJp
YW50TGlzdFNpemUpIHsKLSAgICAgICAgbGlua1ZpcnR1YWxGb3IoZXhlYywgY2FsbExpbmtJbmZv
LCBDb2RlRm9yQ2FsbCwgcmVnaXN0ZXJzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAK
ICAgICBHUFJSZWcgY2FsbGVlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihjYWxsTGlua0luZm8u
Y2FsbGVlR1BSKTsKICAgICAKICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdCh2bSwgY2FsbGVyQ29k
ZUJsb2NrKTsKQEAgLTE3NjQsODIgKzE2NTUsMzMgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxs
KAogICAgICAgICBzdHViSml0LmFib3J0V2l0aFJlYXNvbihSZXBhdGNoSW5zYW5lQXJndW1lbnRD
b3VudCk7CiAgICAgICAgIG9rQXJndW1lbnRDb3VudC5saW5rKCZzdHViSml0KTsKICAgICB9Ci0g
ICAgCi0gICAgR1BSUmVnIHNjcmF0Y2ggPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hH
UFIoY2FsbGVlR1BSKTsKLSAgICBHUFJSZWcgY29tcGFyaXNvblZhbHVlR1BSOwotICAgIAotICAg
IGlmIChpc0Nsb3N1cmVDYWxsKSB7Ci0gICAgICAgIC8vIFZlcmlmeSB0aGF0IHdlIGhhdmUgYSBm
dW5jdGlvbiBhbmQgc3Rhc2ggdGhlIGV4ZWN1dGFibGUgaW4gc2NyYXRjaC4KIAogI2lmIFVTRShK
U1ZBTFVFNjQpCi0gICAgICAgIC8vIFdlIGNhbiBzYWZlbHkgY2xvYmJlciBldmVyeXRoaW5nIGV4
Y2VwdCB0aGUgY2FsbGVlR1BSLiBXZSBjYW4ndCByZWx5IG9uIHRhZ01hc2tSZWdpc3RlcgotICAg
ICAgICAvLyBiZWluZyBzZXQuIFNvIHdlIGRvIHRoaXMgdGhlIGhhcmQgd2F5LgotICAgICAgICBz
dHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChUYWdNYXNrKSwgc2NyYXRj
aCk7Ci0gICAgICAgIHNsb3dQYXRoLmFwcGVuZChzdHViSml0LmJyYW5jaFRlc3Q2NChDQ2FsbEhl
bHBlcnM6Ok5vblplcm8sIGNhbGxlZUdQUiwgc2NyYXRjaCkpOworICAgIC8vIFdlIGNhbiBzYWZl
bHkgY2xvYmJlciBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgY2FsbGVlR1BSLiBXZSBjYW4ndCByZWx5
IG9uIHRhZ01hc2tSZWdpc3RlcgorICAgIC8vIGJlaW5nIHNldC4gU28gd2UgZG8gdGhpcyB0aGUg
aGFyZCB3YXkuCisgICAgR1BSUmVnIHNjcmF0Y2ggPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNj
cmF0Y2hHUFIoY2FsbGVlR1BSKTsKKyAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW02NChUYWdNYXNrKSwgc2NyYXRjaCk7CisgICAgc2xvd1BhdGguYXBwZW5kKHN0dWJK
aXQuYnJhbmNoVGVzdDY0KENDYWxsSGVscGVyczo6Tm9uWmVybywgY2FsbGVlR1BSLCBzY3JhdGNo
KSk7CiAjZWxzZQotICAgICAgICAvLyBXZSB3b3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0
IHRoZSBjYWxsZWUgaXMgYSBjZWxsLgorICAgIC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBjaGVj
a2VkIHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNlbGwuCiAjZW5kaWYKICAgICAKLSAgICAgICAgc2xv
d1BhdGguYXBwZW5kKAotICAgICAgICAgICAgc3R1YkppdC5icmFuY2g4KAotICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCi0gICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvblR5cGUpKSk7
CisgICAgc2xvd1BhdGguYXBwZW5kKAorICAgICAgICBzdHViSml0LmJyYW5jaDgoCisgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKGNhbGxlZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAg
ICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uVHlwZSkpKTsKICAgICAK
LSAgICAgICAgc3R1YkppdC5sb2FkUHRyKAorICAgIHNsb3dQYXRoLmFwcGVuZCgKKyAgICAgICAg
c3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAog
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6
b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLAotICAgICAgICAgICAgc2NyYXRjaCk7Ci0gICAgICAgIAot
ICAgICAgICBjb21wYXJpc29uVmFsdWVHUFIgPSBzY3JhdGNoOwotICAgIH0gZWxzZQotICAgICAg
ICBjb21wYXJpc29uVmFsdWVHUFIgPSBjYWxsZWVHUFI7Ci0gICAgCi0gICAgVmVjdG9yPGludDY0
X3Q+IGNhc2VWYWx1ZXMoY2FsbENhc2VzLnNpemUoKSk7Ci0gICAgVmVjdG9yPENhbGxUb0NvZGVQ
dHI+IGNhbGxzKGNhbGxDYXNlcy5zaXplKCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJf
dFtdPiBmYXN0Q291bnRzOworICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGV4ZWN1dGFibGUpKSk7CiAgICAgCi0gICAgaWYgKGNhbGxlckNvZGVCbG9jay0+aml0VHlwZSgp
ICE9IEpJVENvZGU6OnRvcFRpZXJKSVQoKSkKLSAgICAgICAgZmFzdENvdW50cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8dWludDMyX3RbXT4oY2FsbENhc2VzLnNpemUoKSk7Ci0gICAgCi0gICAgZm9yIChz
aXplX3QgaSA9IGNhbGxDYXNlcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgaWYgKGZhc3RDb3Vu
dHMpCi0gICAgICAgICAgICBmYXN0Q291bnRzW2ldID0gMDsKLSAgICAgICAgCi0gICAgICAgIENh
bGxWYXJpYW50IHZhcmlhbnQgPSBjYWxsQ2FzZXNbaV0udmFyaWFudCgpOwotICAgICAgICBpZiAo
aXNDbG9zdXJlQ2FsbCkKLSAgICAgICAgICAgIGNhc2VWYWx1ZXNbaV0gPSBiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KHZhcmlhbnQuZXhlY3V0YWJsZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgY2FzZVZhbHVlc1tpXSA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odmFyaWFudC5mdW5jdGlv
bigpKTsKLSAgICB9Ci0gICAgCi0gICAgR1BSUmVnIGZhc3RDb3VudHNCYXNlR1BSID0KLSAgICAg
ICAgQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGNhbGxlZUdQUiwgY29tcGFyaXNv
blZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMyk7Ci0gICAgc3R1YkppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihmYXN0Q291bnRzLmdldCgpKSwgZmFzdENvdW50c0Jhc2VHUFIpOwot
ICAgIAotICAgIEJpbmFyeVN3aXRjaCBiaW5hcnlTd2l0Y2goY29tcGFyaXNvblZhbHVlR1BSLCBj
YXNlVmFsdWVzLCBCaW5hcnlTd2l0Y2g6OkludFB0cik7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCBkb25lOwotICAgIHdoaWxlIChiaW5hcnlTd2l0Y2guYWR2YW5jZShzdHViSml0KSkgewot
ICAgICAgICBzaXplX3QgY2FzZUluZGV4ID0gYmluYXJ5U3dpdGNoLmNhc2VJbmRleCgpOwotICAg
ICAgICAKLSAgICAgICAgQ2FsbFZhcmlhbnQgdmFyaWFudCA9IGNhbGxDYXNlc1tjYXNlSW5kZXhd
LnZhcmlhbnQoKTsKLSAgICAgICAgCi0gICAgICAgIEFTU0VSVCh2YXJpYW50LmV4ZWN1dGFibGUo
KS0+aGFzSklUQ29kZUZvckNhbGwoKSk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBj
b2RlUHRyID0KLSAgICAgICAgICAgIHZhcmlhbnQuZXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yQ2FsbCgpLT5hZGRyZXNzRm9yQ2FsbCgKLSAgICAgICAgICAgICAgICAqdm0sIHZhcmlh
bnQuZXhlY3V0YWJsZSgpLCBBcml0eUNoZWNrTm90UmVxdWlyZWQsIHJlZ2lzdGVycyk7Ci0gICAg
ICAgIAotICAgICAgICBpZiAoZmFzdENvdW50cykgewotICAgICAgICAgICAgc3R1YkppdC5hZGQz
MigKLSAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwKLSAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoZmFzdENvdW50c0Jhc2VHUFIsIGNhc2VJ
bmRleCAqIHNpemVvZih1aW50MzJfdCkpKTsKLSAgICAgICAgfQotICAgICAgICBjYWxsc1tjYXNl
SW5kZXhdLmNhbGwgPSBzdHViSml0Lm5lYXJDYWxsKCk7Ci0gICAgICAgIGNhbGxzW2Nhc2VJbmRl
eF0uY29kZVB0ciA9IGNvZGVQdHI7Ci0gICAgICAgIGRvbmUuYXBwZW5kKHN0dWJKaXQuanVtcCgp
KTsKLSAgICB9CisgICAgQXNzZW1ibHlIZWxwZXJzOjpDYWxsIGNhbGwgPSBzdHViSml0Lm5lYXJD
YWxsKCk7CisgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRvbmUgPSBzdHViSml0Lmp1bXAoKTsK
ICAgICAKICAgICBzbG93UGF0aC5saW5rKCZzdHViSml0KTsKLSAgICBiaW5hcnlTd2l0Y2guZmFs
bFRocm91Z2goKS5saW5rKCZzdHViSml0KTsKICAgICBzdHViSml0Lm1vdmUoY2FsbGVlR1BSLCBH
UFJJbmZvOjpyZWdUMCk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICBzdHViSml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEdQUkluZm86OnJl
Z1QxKTsKQEAgLTE4NDksNDUgKzE2OTEsMzQgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAog
ICAgIAogICAgIHN0dWJKaXQucmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oR1BSSW5m
bzo6cmVnVDQpOwogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBzbG93ID0gc3R1YkppdC5qdW1w
KCk7Ci0gICAgICAgIAorICAgIAogICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKnZtLCBzdHVi
Sml0LCBjYWxsZXJDb2RlQmxvY2spOwogICAgIAotICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxDYXNl
cy5zaXplKCkgPT0gY2FsbHMuc2l6ZSgpKTsKLSAgICBmb3IgKENhbGxUb0NvZGVQdHIgY2FsbFRv
Q29kZVB0ciA6IGNhbGxzKSB7Ci0gICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoCi0gICAgICAgICAg
ICBjYWxsVG9Db2RlUHRyLmNhbGwsIEZ1bmN0aW9uUHRyKGNhbGxUb0NvZGVQdHIuY29kZVB0ci5l
eGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgfQorICAgIHBhdGNoQnVmZmVyLmxpbmsoY2FsbCwg
RnVuY3Rpb25QdHIoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAgaWYgKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChjYWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSkpCiAgICAgICAg
IHBhdGNoQnVmZmVyLmxpbmsoZG9uZSwgY2FsbExpbmtJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5s
YWJlbEF0T2Zmc2V0KDApKTsKICAgICBlbHNlCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsoZG9u
ZSwgY2FsbExpbmtJbmZvLmhvdFBhdGhPdGhlci5sYWJlbEF0T2Zmc2V0KDApKTsKLSAgICBwYXRj
aEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRDVElTdHViKGxpbmtQ
b2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvckZvcihyZWdpc3RlcnMpKS5jb2RlKCkpKTsKKyAg
ICBwYXRjaEJ1ZmZlci5saW5rKHNsb3csIENvZGVMb2NhdGlvbkxhYmVsKHZtLT5nZXRDVElTdHVi
KHZpcnR1YWxUaHVua0dlbmVyYXRvckZvcihDb2RlRm9yQ2FsbCwgcmVnaXN0ZXJzKSkuY29kZSgp
KSk7CiAgICAgCi0gICAgUmVmUHRyPFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lPiBzdHViUm91
dGluZSA9IGFkb3B0UmVmKG5ldyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKKyAgICBSZWZQ
dHI8Q2xvc3VyZUNhbGxTdHViUm91dGluZT4gc3R1YlJvdXRpbmUgPSBhZG9wdFJlZihuZXcgQ2xv
c3VyZUNhbGxTdHViUm91dGluZSgKICAgICAgICAgRklOQUxJWkVfQ09ERV9GT1IoCiAgICAgICAg
ICAgICBjYWxsZXJDb2RlQmxvY2ssIHBhdGNoQnVmZmVyLAotICAgICAgICAgICAgKCJQb2x5bW9y
cGhpYyBjYWxsIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAsIHRhcmdldHMgJXMiLAorICAg
ICAgICAgICAgKCJDbG9zdXJlIGNhbGwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCwgdGFy
Z2V0ICVwICglcykiLAogICAgICAgICAgICAgICAgIHRvQ1N0cmluZygqY2FsbGVyQ29kZUJsb2Nr
KS5kYXRhKCksIGNhbGxMaW5rSW5mby5jYWxsUmV0dXJuTG9jYXRpb24ubGFiZWxBdE9mZnNldCgw
KS5leGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhsaXN0RHVt
cChjYWxsQ2FzZXMpKS5kYXRhKCkpKSwKLSAgICAgICAgKnZtLCBjYWxsZXJDb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBjYWxsTGlua0luZm8sIGNhbGxD
YXNlcywKLSAgICAgICAgV1RGOjptb3ZlKGZhc3RDb3VudHMpKSk7CisgICAgICAgICAgICAgICAg
Y29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpLCB0b0NTdHJpbmcocG9pbnRlckR1bXAoY2FsbGVl
Q29kZUJsb2NrKSkuZGF0YSgpKSksCisgICAgICAgICp2bSwgY2FsbGVyQ29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgZXhlY3V0YWJsZSkpOwogICAgIAogICAgIFJlcGF0Y2hCdWZmZXIgcmVw
YXRjaEJ1ZmZlcihjYWxsZXJDb2RlQmxvY2spOwogICAgIAogICAgIHJlcGF0Y2hCdWZmZXIucmVw
bGFjZVdpdGhKdW1wKAogICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mQnJhbmNoUHRyV2l0
aFBhdGNoT25SZWdpc3RlcihjYWxsTGlua0luZm8uaG90UGF0aEJlZ2luKSwKICAgICAgICAgQ29k
ZUxvY2F0aW9uTGFiZWwoc3R1YlJvdXRpbmUtPmNvZGUoKS5jb2RlKCkpKTsKLSAgICAvLyBUaGlz
IGlzIHdlaXJkLiBUaGUgb3JpZ2luYWwgc2xvdyBwYXRoIHNob3VsZCBubyBsb25nZXIgYmUgcmVh
Y2hhYmxlLgogICAgIGxpbmtTbG93Rm9yKHJlcGF0Y2hCdWZmZXIsIHZtLCBjYWxsTGlua0luZm8s
IENvZGVGb3JDYWxsLCByZWdpc3RlcnMpOwogICAgIAotICAgIC8vIElmIHRoZXJlIGhhZCBiZWVu
IGEgcHJldmlvdXMgc3R1YiByb3V0aW5lLCB0aGF0IG9uZSB3aWxsIGRpZSBhcyBzb29uIGFzIHRo
ZSBHQyBydW5zIGFuZCBzZWVzCi0gICAgLy8gdGhhdCBpdCdzIG5vIGxvbmdlciBvbiBzdGFjay4K
ICAgICBjYWxsTGlua0luZm8uc3R1YiA9IHN0dWJSb3V0aW5lLnJlbGVhc2UoKTsKICAgICAKLSAg
ICAvLyBUaGUgY2FsbCBsaW5rIGluZm8gbm8gbG9uZ2VyIGhhcyBhIGNhbGwgY2FjaGUgYXBhcnQg
ZnJvbSB0aGUganVtcCB0byB0aGUgcG9seW1vcnBoaWMgY2FsbAotICAgIC8vIHN0dWIuCi0gICAg
aWYgKGNhbGxMaW5rSW5mby5pc09uTGlzdCgpKQotICAgICAgICBjYWxsTGlua0luZm8ucmVtb3Zl
KCk7CisgICAgQVNTRVJUKCFjYWxsZWVDb2RlQmxvY2sgfHwgY2FsbGVlQ29kZUJsb2NrLT5pc0lu
Y29taW5nQ2FsbEFscmVhZHlMaW5rZWQoJmNhbGxMaW5rSW5mbykpOwogfQogCiB2b2lkIHJlc2V0
R2V0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCmluZGV4IGRkZDAwOGIzZWQ5
YTIxZWNhYWE3MWYyYjI0OWZhMzcwNmFlMjE2NzcuLmYzN2FjN2I0YjgzN2UxNzRlNzBhMWI5NDg2
NDhmOGViODBkYTgzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICsy
OSw2IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgotI2lu
Y2x1ZGUgIkNhbGxWYXJpYW50LmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTQyLDkgKzQxLDcgQEAgdm9pZCBidWlsZFB1dEJ5SWRMaXN0KEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdAogdm9p
ZCByZXBhdGNoSW4oRXhlY1N0YXRlKiwgSlNDZWxsKiwgY29uc3QgSWRlbnRpZmllciYsIGJvb2wg
d2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IGxpbmtGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ29kZUJsb2NrKiwgSlNGdW5jdGlv
biogY2FsbGVlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIsIENvZGVTcGVjaWFsaXphdGlvbktpbmQs
IFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSk7CiB2b2lkIGxpbmtTbG93Rm9yKEV4ZWNTdGF0ZSos
IENhbGxMaW5rSW5mbyYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIFJlZ2lzdGVyUHJlc2VydmF0
aW9uTW9kZSk7Ci12b2lkIHVubGlua0ZvcihSZXBhdGNoQnVmZmVyJiwgQ2FsbExpbmtJbmZvJiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKTsKLXZvaWQg
bGlua1ZpcnR1YWxGb3IoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvJiwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Nb2RlKTsKLXZvaWQgbGlua1BvbHltb3JwaGlj
Q2FsbChFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudCwgUmVnaXN0ZXJQcmVz
ZXJ2YXRpb25Nb2RlKTsKK3ZvaWQgbGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSosIENhbGxMaW5r
SW5mbyYsIENvZGVCbG9jayosIEV4ZWN1dGFibGVCYXNlKiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
LCBSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpOwogdm9pZCByZXNldEdldEJ5SUQoUmVwYXRjaEJ1
ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0UHV0QnlJRChSZXBhdGNoQnVm
ZmVyJiwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRJbihSZXBhdGNoQnVmZmVyJiwg
U3RydWN0dXJlU3R1YkluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAppbmRleCA3YjBjZGE2ODZjYzQ3MjdlY2YyOGFmN2E1N2E1ZTA3NTExMzVj
M2E1Li5iZTg3NjNiZTM1NTFkYjdkZmY0ZDE5YmYwM2JlNWIwM2I3YTRlNDc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCkBAIC0xMzcsMjcgKzEz
NywyNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua0NvbnN0cnVjdFRoYXRQcmVzZXJ2ZXNS
ZWdzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogICAgIHJldHVybiBsaW5rRm9yVGh1bmtHZW5lcmF0
b3Iodm0sIENvZGVGb3JDb25zdHJ1Y3QsIE11c3RQcmVzZXJ2ZVJlZ2lzdGVycyk7CiB9CiAKLXN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbGlua1BvbHltb3JwaGljQ2FsbEZvclRodW5rR2Vu
ZXJhdG9yKAorc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rQ2xvc3VyZUNhbGxGb3JU
aHVua0dlbmVyYXRvcigKICAgICBWTSogdm0sIFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSByZWdp
c3RlcnMpCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdCh2bSk7CiAgICAgCi0gICAgc2xvd1BhdGhG
b3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbEZvcihyZWdpc3RlcnMpKTsK
KyAgICBzbG93UGF0aEZvcihqaXQsIHZtLCBvcGVyYXRpb25MaW5rQ2xvc3VyZUNhbGxGb3IocmVn
aXN0ZXJzKSk7CiAgICAgCiAgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqdm0sIGppdCwgR0xP
QkFMX1RIVU5LX0lEKTsKLSAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgKCJM
aW5rIHBvbHltb3JwaGljIGNhbGwgJXMgc2xvdyBwYXRoIHRodW5rIiwgcmVnaXN0ZXJzID09IE11
c3RQcmVzZXJ2ZVJlZ2lzdGVycyA/ICIgdGhhdCBwcmVzZXJ2ZXMgcmVnaXN0ZXJzIiA6ICIiKSk7
CisgICAgcmV0dXJuIEZJTkFMSVpFX0NPREUocGF0Y2hCdWZmZXIsICgiTGluayBjbG9zdXJlIGNh
bGwgJXMgc2xvdyBwYXRoIHRodW5rIiwgcmVnaXN0ZXJzID09IE11c3RQcmVzZXJ2ZVJlZ2lzdGVy
cyA/ICIgdGhhdCBwcmVzZXJ2ZXMgcmVnaXN0ZXJzIiA6ICIiKSk7CiB9CiAKIC8vIEZvciBjbG9z
dXJlIG9wdGltaXphdGlvbnMsIHdlIG9ubHkgaW5jbHVkZSBjYWxscywgc2luY2UgaWYgeW91J3Jl
IHVzaW5nIGNsb3N1cmVzIGZvcgogLy8gb2JqZWN0IGNvbnN0cnVjdGlvbiB0aGVuIHlvdSdyZSBn
b2luZyB0byBsb3NlIGJpZyB0aW1lIGFueXdheS4KLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5r
UG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGxpbmtDbG9zdXJlQ2FsbFRodW5rR2VuZXJhdG9yKFZNKiB2bSkKIHsKLSAgICByZXR1cm4g
bGlua1BvbHltb3JwaGljQ2FsbEZvclRodW5rR2VuZXJhdG9yKHZtLCBSZWdpc3RlclByZXNlcnZh
dGlvbk5vdFJlcXVpcmVkKTsKKyAgICByZXR1cm4gbGlua0Nsb3N1cmVDYWxsRm9yVGh1bmtHZW5l
cmF0b3Iodm0sIFJlZ2lzdGVyUHJlc2VydmF0aW9uTm90UmVxdWlyZWQpOwogfQogCi1NYWNyb0Fz
c2VtYmxlckNvZGVSZWYgbGlua1BvbHltb3JwaGljQ2FsbFRoYXRQcmVzZXJ2ZXNSZWdzVGh1bmtH
ZW5lcmF0b3IoVk0qIHZtKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGxpbmtDbG9zdXJlQ2FsbFRo
YXRQcmVzZXJ2ZXNSZWdzVGh1bmtHZW5lcmF0b3IoVk0qIHZtKQogewotICAgIHJldHVybiBsaW5r
UG9seW1vcnBoaWNDYWxsRm9yVGh1bmtHZW5lcmF0b3Iodm0sIE11c3RQcmVzZXJ2ZVJlZ2lzdGVy
cyk7CisgICAgcmV0dXJuIGxpbmtDbG9zdXJlQ2FsbEZvclRodW5rR2VuZXJhdG9yKHZtLCBNdXN0
UHJlc2VydmVSZWdpc3RlcnMpOwogfQogCiBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZp
cnR1YWxGb3JUaHVua0dlbmVyYXRvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5oCmluZGV4IDI0NmRhMmVhNjQ1NGI5ZTMwMjc2YWQyMTc3NGI1NWMyNTNkNDEw
YzYuLjBhYmUxYWY1MzY4OTE0OGM1OGJhNDkzM2RjYTVhZTVmZjE0MTNiN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaApAQCAtNjUsMTYgKzY1LDE2IEBA
IGlubGluZSBUaHVua0dlbmVyYXRvciBsaW5rVGh1bmtHZW5lcmF0b3JGb3IoCiAgICAgcmV0dXJu
IDA7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rUG9seW1vcnBoaWNDYWxsVGh1bmtH
ZW5lcmF0b3IoVk0qKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZiBsaW5rUG9seW1vcnBoaWNDYWxs
VGhhdFByZXNlcnZlc1JlZ3NUaHVua0dlbmVyYXRvcihWTSopOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGxpbmtDbG9zdXJlQ2FsbFRodW5rR2VuZXJhdG9yKFZNKik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgbGlua0Nsb3N1cmVDYWxsVGhhdFByZXNlcnZlc1JlZ3NUaHVua0dlbmVyYXRvcihWTSop
OwogCi1pbmxpbmUgVGh1bmtHZW5lcmF0b3IgbGlua1BvbHltb3JwaGljQ2FsbFRodW5rR2VuZXJh
dG9yRm9yKFJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSByZWdpc3RlcnMpCitpbmxpbmUgVGh1bmtH
ZW5lcmF0b3IgbGlua0Nsb3N1cmVDYWxsVGh1bmtHZW5lcmF0b3JGb3IoUmVnaXN0ZXJQcmVzZXJ2
YXRpb25Nb2RlIHJlZ2lzdGVycykKIHsKICAgICBzd2l0Y2ggKHJlZ2lzdGVycykgewogICAgIGNh
c2UgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZDoKLSAgICAgICAgcmV0dXJuIGxpbmtQ
b2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcjsKKyAgICAgICAgcmV0dXJuIGxpbmtDbG9zdXJl
Q2FsbFRodW5rR2VuZXJhdG9yOwogICAgIGNhc2UgTXVzdFByZXNlcnZlUmVnaXN0ZXJzOgotICAg
ICAgICByZXR1cm4gbGlua1BvbHltb3JwaGljQ2FsbFRoYXRQcmVzZXJ2ZXNSZWdzVGh1bmtHZW5l
cmF0b3I7CisgICAgICAgIHJldHVybiBsaW5rQ2xvc3VyZUNhbGxUaGF0UHJlc2VydmVzUmVnc1Ro
dW5rR2VuZXJhdG9yOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKaW5kZXggMGI1MTE5MzdlZThmOTA3MjJkMDgwZjVjY2M2MTBkN2ViMzYyNGIxZS4u
ODViYWMyNjAzYTdiMjE1N2I5NTU5YjJmZTE4NWE2Nzc2NTJkMmQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0zMzIsNyArMzMyLDYg
QEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgfQogICAgIH0KICAgICBkZWZhdWx0Ogot
ICAgICAgICBkYXRhTG9nKCJVbmV4cGVjdGVkIGNvZGUgYmxvY2sgaW4gTExJbnQ6ICIsICpjb2Rl
QmxvY2ssICJcbiIpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCmluZGV4IDM4MWYyNDZjOTRhNjIwNjc0MDJhYmUzMTU3YTc1YjA1NDgwMGUxMDMuLmQ3
ZjBlMDFmMjZlYjVkZDUxMGM0MDQ2MzE1MjA2YTc3YTkwMTAzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTE3MCwxMSArMTcwLDEyIEBAIHR5cGVkZWYgY29u
c3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAgIHYoYm9vbCwgZW5hYmxlUG9seXZhcmlhbnREZXZp
cnR1YWxpemF0aW9uLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nLCB0cnVlKSBcCiAgICAgdihib29sLCBlbmFibGVQb2x5bW9ycGhpY0NhbGxJbmxp
bmluZywgdHJ1ZSkgXAotICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRM
aXN0U2l6ZSwgMTUpIFwKLSAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50
TGlzdFNpemVGb3JUb3BUaWVyLCA1KSBcCi0gICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWND
YWxsVmFyaWFudHNGb3JJbmxpbmluZywgNSkgXAorICAgIHYoYm9vbCwgY2FsbFN0YXR1c1Nob3Vs
ZFVzZUNhbGxFZGdlUHJvZmlsZSwgdHJ1ZSkgXAorICAgIHYoYm9vbCwgY2FsbEVkZ2VQcm9maWxl
UmVhbGx5UHJvY2Vzc2VzTG9nLCB0cnVlKSBcCisgICAgdihib29sLCBiYXNlbGluZURvZXNDYWxs
RWRnZVByb2ZpbGluZywgZmFsc2UpIFwKKyAgICB2KGJvb2wsIGRmZ0RvZXNDYWxsRWRnZVByb2Zp
bGluZywgdHJ1ZSkgXAorICAgIHYoYm9vbCwgZW5hYmxlQ2FsbEVkZ2VQcm9maWxpbmcsIHRydWUp
IFwKICAgICB2KHVuc2lnbmVkLCBmcmVxdWVudENhbGxUaHJlc2hvbGQsIDIpIFwKLSAgICB2KGRv
dWJsZSwgbWluaW11bUNhbGxUb0tub3duUmF0ZSwgMC41MSkgXAogICAgIHYoYm9vbCwgb3B0aW1p
emVOYXRpdmVDYWxscywgZmFsc2UpIFwKICAgICB2KGJvb2wsIGVuYWJsZU9iamVjdEFsbG9jYXRp
b25TaW5raW5nLCB0cnVlKSBcCiAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CmluZGV4IDU5Nzg1YjQzNDdkMjY5MzczN2QyZTg1YjcxZDY0N2U5YjYwNTkxY2MuLjdhODgzNDQ2
MDc4MTg1YTE5ZTg2YjZlYzkwNTVlOWU1NzM0NDQ4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKQEAgLTM2OSw2ICszNjksMTMgQEAgVk0qJiBWTTo6c2hhcmVkSW5zdGFuY2VJ
bnRlcm5hbCgpCiAgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOwogfQogCitDYWxsRWRnZUxvZyYg
Vk06OmVuc3VyZUNhbGxFZGdlTG9nKCkKK3sKKyAgICBpZiAoIWNhbGxFZGdlTG9nKQorICAgICAg
ICBjYWxsRWRnZUxvZyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEVkZ2VMb2c+KCk7CisgICAgcmV0
dXJuICpjYWxsRWRnZUxvZzsKK30KKwogI2lmIEVOQUJMRShKSVQpCiBzdGF0aWMgVGh1bmtHZW5l
cmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIHsK
QEAgLTQ1Miw2ICs0NTksOSBAQCB2b2lkIFZNOjpzdG9wU2FtcGxpbmcoKQogCiB2b2lkIFZNOjpw
cmVwYXJlVG9EaXNjYXJkQ29kZSgpCiB7CisgICAgaWYgKGNhbGxFZGdlTG9nKQorICAgICAgICBj
YWxsRWRnZUxvZy0+cHJvY2Vzc0xvZygpOworICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAg
IGZvciAodW5zaWduZWQgaSA9IERGRzo6bnVtYmVyT2ZXb3JrbGlzdHMoKTsgaS0tOykgewogICAg
ICAgICBpZiAoREZHOjpXb3JrbGlzdCogd29ya2xpc3QgPSBERkc6OndvcmtsaXN0Rm9ySW5kZXhP
ck51bGwoaSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBkOGY5YzlkNzc0ZDk5
MTY2YTNkMDk0M2NiZDQ3MmU2MTY1N2I2MDZhLi5mODg0MjgyMTc2MWY2YWQ4YWJlYTA5OGQyOGFh
NzZiMDk0MmI2ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTczLDYgKzcz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtz
OwogY2xhc3MgQnVpbHRpbkV4ZWN1dGFibGVzOworY2xhc3MgQ2FsbEVkZ2VMb2c7CiBjbGFzcyBD
b2RlQmxvY2s7CiBjbGFzcyBDb2RlQ2FjaGU7CiBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKQEAg
LTIzNyw2ICsyMzgsOSBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPERGRzo6TG9uZ0xp
dmVkU3RhdGU+IGRmZ1N0YXRlOwogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENhbGxFZGdlTG9nPiBjYWxsRWRnZUxvZzsKKyAgICBDYWxsRWRnZUxvZyYg
ZW5zdXJlQ2FsbEVkZ2VMb2coKTsKKwogICAgIFZNVHlwZSB2bVR5cGU7CiAgICAgQ2xpZW50RGF0
YSogY2xpZW50RGF0YTsKICAgICBWTUVudHJ5RnJhbWUqIHRvcFZNRW50cnlGcmFtZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>