Changeset 2124102
- Timestamp:
- 07/16/2019 05:23:13 PM (7 years ago)
- Location:
- wordfence
- Files:
-
- 118 added
- 112 deleted
- 40 edited
- 1 copied
-
assets/banner-1544x500.jpg (modified) (previous)
-
assets/banner-772x250.jpg (modified) (previous)
-
tags/7.3.5 (copied) (copied from wordfence/trunk)
-
tags/7.3.5/css/activity-report-widget.1560795818.css (deleted)
-
tags/7.3.5/css/activity-report-widget.1563297204.css (added)
-
tags/7.3.5/css/diff.1560795818.css (deleted)
-
tags/7.3.5/css/diff.1563297204.css (added)
-
tags/7.3.5/css/dt_table.1560795818.css (deleted)
-
tags/7.3.5/css/dt_table.1563297204.css (added)
-
tags/7.3.5/css/fullLog.1560795818.css (deleted)
-
tags/7.3.5/css/fullLog.1563297204.css (added)
-
tags/7.3.5/css/iptraf.1560795818.css (deleted)
-
tags/7.3.5/css/iptraf.1563297204.css (added)
-
tags/7.3.5/css/jquery-ui-timepicker-addon.1560795818.css (deleted)
-
tags/7.3.5/css/jquery-ui-timepicker-addon.1563297204.css (added)
-
tags/7.3.5/css/jquery-ui.min.1560795818.css (deleted)
-
tags/7.3.5/css/jquery-ui.min.1563297204.css (added)
-
tags/7.3.5/css/jquery-ui.structure.min.1560795818.css (deleted)
-
tags/7.3.5/css/jquery-ui.structure.min.1563297204.css (added)
-
tags/7.3.5/css/jquery-ui.theme.min.1560795818.css (deleted)
-
tags/7.3.5/css/jquery-ui.theme.min.1563297204.css (added)
-
tags/7.3.5/css/main.1560795818.css (deleted)
-
tags/7.3.5/css/main.1563297204.css (added)
-
tags/7.3.5/css/phpinfo.1560795818.css (deleted)
-
tags/7.3.5/css/phpinfo.1563297204.css (added)
-
tags/7.3.5/css/wf-adminbar.1560795818.css (deleted)
-
tags/7.3.5/css/wf-adminbar.1563297204.css (added)
-
tags/7.3.5/css/wf-colorbox.1560795818.css (deleted)
-
tags/7.3.5/css/wf-colorbox.1563297204.css (added)
-
tags/7.3.5/css/wf-font-awesome.1560795818.css (deleted)
-
tags/7.3.5/css/wf-font-awesome.1563297204.css (added)
-
tags/7.3.5/css/wf-global.1560795818.css (deleted)
-
tags/7.3.5/css/wf-global.1563297204.css (added)
-
tags/7.3.5/css/wf-ionicons.1560795818.css (deleted)
-
tags/7.3.5/css/wf-ionicons.1563297204.css (added)
-
tags/7.3.5/css/wf-onboarding.1560795818.css (deleted)
-
tags/7.3.5/css/wf-onboarding.1563297204.css (added)
-
tags/7.3.5/css/wf-roboto-font.1560795818.css (deleted)
-
tags/7.3.5/css/wf-roboto-font.1563297204.css (added)
-
tags/7.3.5/css/wfselect2.min.1560795818.css (deleted)
-
tags/7.3.5/css/wfselect2.min.1563297204.css (added)
-
tags/7.3.5/css/wordfenceBox.1560795818.css (deleted)
-
tags/7.3.5/css/wordfenceBox.1563297204.css (added)
-
tags/7.3.5/images/logo.png (modified) (previous)
-
tags/7.3.5/images/wf-horizontal.svg (modified) (1 diff)
-
tags/7.3.5/js/Chart.bundle.min.1560795818.js (deleted)
-
tags/7.3.5/js/Chart.bundle.min.1563297204.js (added)
-
tags/7.3.5/js/admin.1560795818.js (deleted)
-
tags/7.3.5/js/admin.1563297204.js (added)
-
tags/7.3.5/js/admin.ajaxWatcher.1560795818.js (deleted)
-
tags/7.3.5/js/admin.ajaxWatcher.1563297204.js (added)
-
tags/7.3.5/js/admin.liveTraffic.1560795818.js (deleted)
-
tags/7.3.5/js/admin.liveTraffic.1563297204.js (added)
-
tags/7.3.5/js/date.1560795818.js (deleted)
-
tags/7.3.5/js/date.1563297204.js (added)
-
tags/7.3.5/js/jquery-ui-timepicker-addon.1560795818.js (deleted)
-
tags/7.3.5/js/jquery-ui-timepicker-addon.1563297204.js (added)
-
tags/7.3.5/js/jquery.colorbox-min.1560795818.js (deleted)
-
tags/7.3.5/js/jquery.colorbox-min.1563297204.js (added)
-
tags/7.3.5/js/jquery.colorbox.1560795818.js (deleted)
-
tags/7.3.5/js/jquery.colorbox.1563297204.js (added)
-
tags/7.3.5/js/jquery.dataTables.min.1560795818.js (deleted)
-
tags/7.3.5/js/jquery.dataTables.min.1563297204.js (added)
-
tags/7.3.5/js/jquery.qrcode.min.1560795818.js (deleted)
-
tags/7.3.5/js/jquery.qrcode.min.1563297204.js (added)
-
tags/7.3.5/js/jquery.tmpl.min.1560795818.js (deleted)
-
tags/7.3.5/js/jquery.tmpl.min.1563297204.js (added)
-
tags/7.3.5/js/jquery.tools.min.1560795818.js (deleted)
-
tags/7.3.5/js/jquery.tools.min.1563297204.js (added)
-
tags/7.3.5/js/knockout-3.3.0.1560795818.js (deleted)
-
tags/7.3.5/js/knockout-3.3.0.1563297204.js (added)
-
tags/7.3.5/js/wfdashboard.1560795818.js (deleted)
-
tags/7.3.5/js/wfdashboard.1563297204.js (added)
-
tags/7.3.5/js/wfdropdown.1560795818.js (deleted)
-
tags/7.3.5/js/wfdropdown.1563297204.js (added)
-
tags/7.3.5/js/wfglobal.1560795818.js (deleted)
-
tags/7.3.5/js/wfglobal.1563297204.js (added)
-
tags/7.3.5/js/wfpopover.1560795818.js (deleted)
-
tags/7.3.5/js/wfpopover.1563297204.js (added)
-
tags/7.3.5/js/wfselect2.min.1560795818.js (deleted)
-
tags/7.3.5/js/wfselect2.min.1563297204.js (added)
-
tags/7.3.5/lib/wfActivityReport.php (modified) (1 diff)
-
tags/7.3.5/lib/wfConfig.php (modified) (4 diffs)
-
tags/7.3.5/lib/wordfenceClass.php (modified) (10 diffs)
-
tags/7.3.5/modules/login-security/classes/controller/ajax.php (modified) (3 diffs)
-
tags/7.3.5/modules/login-security/classes/controller/captcha.php (modified) (1 diff)
-
tags/7.3.5/modules/login-security/classes/controller/db.php (modified) (1 diff)
-
tags/7.3.5/modules/login-security/classes/controller/settings.php (modified) (7 diffs)
-
tags/7.3.5/modules/login-security/classes/controller/time.php (modified) (1 diff)
-
tags/7.3.5/modules/login-security/classes/controller/users.php (modified) (1 diff)
-
tags/7.3.5/modules/login-security/classes/controller/wordfencels.php (modified) (7 diffs)
-
tags/7.3.5/modules/login-security/css/admin-global.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/admin-global.1563297204.css (added)
-
tags/7.3.5/modules/login-security/css/admin.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/admin.1563297204.css (added)
-
tags/7.3.5/modules/login-security/css/colorbox.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/colorbox.1563297204.css (added)
-
tags/7.3.5/modules/login-security/css/font-awesome.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/font-awesome.1563297204.css (added)
-
tags/7.3.5/modules/login-security/css/ionicons.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/ionicons.1563297204.css (added)
-
tags/7.3.5/modules/login-security/css/jquery-ui-timepicker-addon.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/jquery-ui-timepicker-addon.1563297204.css (added)
-
tags/7.3.5/modules/login-security/css/jquery-ui.min.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/jquery-ui.min.1563297204.css (added)
-
tags/7.3.5/modules/login-security/css/jquery-ui.structure.min.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/jquery-ui.structure.min.1563297204.css (added)
-
tags/7.3.5/modules/login-security/css/jquery-ui.theme.min.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/jquery-ui.theme.min.1563297204.css (added)
-
tags/7.3.5/modules/login-security/css/login.1560795818.css (deleted)
-
tags/7.3.5/modules/login-security/css/login.1563297204.css (added)
-
tags/7.3.5/modules/login-security/js/admin-global.1560795818.js (deleted)
-
tags/7.3.5/modules/login-security/js/admin-global.1563297204.js (added)
-
tags/7.3.5/modules/login-security/js/admin.1560795818.js (deleted)
-
tags/7.3.5/modules/login-security/js/admin.1563297204.js (added)
-
tags/7.3.5/modules/login-security/js/jquery-ui-timepicker-addon.1560795818.js (deleted)
-
tags/7.3.5/modules/login-security/js/jquery-ui-timepicker-addon.1563297204.js (added)
-
tags/7.3.5/modules/login-security/js/jquery.colorbox.1560795818.js (deleted)
-
tags/7.3.5/modules/login-security/js/jquery.colorbox.1563297204.js (added)
-
tags/7.3.5/modules/login-security/js/jquery.colorbox.min.1560795818.js (deleted)
-
tags/7.3.5/modules/login-security/js/jquery.colorbox.min.1563297204.js (added)
-
tags/7.3.5/modules/login-security/js/jquery.qrcode.min.1560795818.js (deleted)
-
tags/7.3.5/modules/login-security/js/jquery.qrcode.min.1563297204.js (added)
-
tags/7.3.5/modules/login-security/js/jquery.tmpl.min.1560795818.js (deleted)
-
tags/7.3.5/modules/login-security/js/jquery.tmpl.min.1563297204.js (added)
-
tags/7.3.5/modules/login-security/js/login.1560795818.js (deleted)
-
tags/7.3.5/modules/login-security/js/login.1563297204.js (added)
-
tags/7.3.5/modules/login-security/views/options/option-captcha-threshold.php (added)
-
tags/7.3.5/modules/login-security/views/options/option-captcha.php (modified) (2 diffs)
-
tags/7.3.5/modules/login-security/views/options/option-require-2fa.php (modified) (1 diff)
-
tags/7.3.5/modules/login-security/views/settings/options.php (modified) (3 diffs)
-
tags/7.3.5/modules/login-security/wordfence-login-security.php (modified) (1 diff)
-
tags/7.3.5/readme.txt (modified) (2 diffs)
-
tags/7.3.5/vendor/composer/038918d7 (added)
-
tags/7.3.5/vendor/geoip2/geoip2/maxmind-db (added)
-
tags/7.3.5/views/dashboard/options-group-general.php (modified) (1 diff)
-
tags/7.3.5/wordfence.php (modified) (2 diffs)
-
trunk/css/activity-report-widget.1560795818.css (deleted)
-
trunk/css/activity-report-widget.1563297204.css (added)
-
trunk/css/diff.1560795818.css (deleted)
-
trunk/css/diff.1563297204.css (added)
-
trunk/css/dt_table.1560795818.css (deleted)
-
trunk/css/dt_table.1563297204.css (added)
-
trunk/css/fullLog.1560795818.css (deleted)
-
trunk/css/fullLog.1563297204.css (added)
-
trunk/css/iptraf.1560795818.css (deleted)
-
trunk/css/iptraf.1563297204.css (added)
-
trunk/css/jquery-ui-timepicker-addon.1560795818.css (deleted)
-
trunk/css/jquery-ui-timepicker-addon.1563297204.css (added)
-
trunk/css/jquery-ui.min.1560795818.css (deleted)
-
trunk/css/jquery-ui.min.1563297204.css (added)
-
trunk/css/jquery-ui.structure.min.1560795818.css (deleted)
-
trunk/css/jquery-ui.structure.min.1563297204.css (added)
-
trunk/css/jquery-ui.theme.min.1560795818.css (deleted)
-
trunk/css/jquery-ui.theme.min.1563297204.css (added)
-
trunk/css/main.1560795818.css (deleted)
-
trunk/css/main.1563297204.css (added)
-
trunk/css/phpinfo.1560795818.css (deleted)
-
trunk/css/phpinfo.1563297204.css (added)
-
trunk/css/wf-adminbar.1560795818.css (deleted)
-
trunk/css/wf-adminbar.1563297204.css (added)
-
trunk/css/wf-colorbox.1560795818.css (deleted)
-
trunk/css/wf-colorbox.1563297204.css (added)
-
trunk/css/wf-font-awesome.1560795818.css (deleted)
-
trunk/css/wf-font-awesome.1563297204.css (added)
-
trunk/css/wf-global.1560795818.css (deleted)
-
trunk/css/wf-global.1563297204.css (added)
-
trunk/css/wf-ionicons.1560795818.css (deleted)
-
trunk/css/wf-ionicons.1563297204.css (added)
-
trunk/css/wf-onboarding.1560795818.css (deleted)
-
trunk/css/wf-onboarding.1563297204.css (added)
-
trunk/css/wf-roboto-font.1560795818.css (deleted)
-
trunk/css/wf-roboto-font.1563297204.css (added)
-
trunk/css/wfselect2.min.1560795818.css (deleted)
-
trunk/css/wfselect2.min.1563297204.css (added)
-
trunk/css/wordfenceBox.1560795818.css (deleted)
-
trunk/css/wordfenceBox.1563297204.css (added)
-
trunk/images/logo.png (modified) (previous)
-
trunk/images/wf-horizontal.svg (modified) (1 diff)
-
trunk/js/Chart.bundle.min.1560795818.js (deleted)
-
trunk/js/Chart.bundle.min.1563297204.js (added)
-
trunk/js/admin.1560795818.js (deleted)
-
trunk/js/admin.1563297204.js (added)
-
trunk/js/admin.ajaxWatcher.1560795818.js (deleted)
-
trunk/js/admin.ajaxWatcher.1563297204.js (added)
-
trunk/js/admin.liveTraffic.1560795818.js (deleted)
-
trunk/js/admin.liveTraffic.1563297204.js (added)
-
trunk/js/date.1560795818.js (deleted)
-
trunk/js/date.1563297204.js (added)
-
trunk/js/jquery-ui-timepicker-addon.1560795818.js (deleted)
-
trunk/js/jquery-ui-timepicker-addon.1563297204.js (added)
-
trunk/js/jquery.colorbox-min.1560795818.js (deleted)
-
trunk/js/jquery.colorbox-min.1563297204.js (added)
-
trunk/js/jquery.colorbox.1560795818.js (deleted)
-
trunk/js/jquery.colorbox.1563297204.js (added)
-
trunk/js/jquery.dataTables.min.1560795818.js (deleted)
-
trunk/js/jquery.dataTables.min.1563297204.js (added)
-
trunk/js/jquery.qrcode.min.1560795818.js (deleted)
-
trunk/js/jquery.qrcode.min.1563297204.js (added)
-
trunk/js/jquery.tmpl.min.1560795818.js (deleted)
-
trunk/js/jquery.tmpl.min.1563297204.js (added)
-
trunk/js/jquery.tools.min.1560795818.js (deleted)
-
trunk/js/jquery.tools.min.1563297204.js (added)
-
trunk/js/knockout-3.3.0.1560795818.js (deleted)
-
trunk/js/knockout-3.3.0.1563297204.js (added)
-
trunk/js/wfdashboard.1560795818.js (deleted)
-
trunk/js/wfdashboard.1563297204.js (added)
-
trunk/js/wfdropdown.1560795818.js (deleted)
-
trunk/js/wfdropdown.1563297204.js (added)
-
trunk/js/wfglobal.1560795818.js (deleted)
-
trunk/js/wfglobal.1563297204.js (added)
-
trunk/js/wfpopover.1560795818.js (deleted)
-
trunk/js/wfpopover.1563297204.js (added)
-
trunk/js/wfselect2.min.1560795818.js (deleted)
-
trunk/js/wfselect2.min.1563297204.js (added)
-
trunk/lib/wfActivityReport.php (modified) (1 diff)
-
trunk/lib/wfConfig.php (modified) (4 diffs)
-
trunk/lib/wordfenceClass.php (modified) (10 diffs)
-
trunk/modules/login-security/classes/controller/ajax.php (modified) (3 diffs)
-
trunk/modules/login-security/classes/controller/captcha.php (modified) (1 diff)
-
trunk/modules/login-security/classes/controller/db.php (modified) (1 diff)
-
trunk/modules/login-security/classes/controller/settings.php (modified) (7 diffs)
-
trunk/modules/login-security/classes/controller/time.php (modified) (1 diff)
-
trunk/modules/login-security/classes/controller/users.php (modified) (1 diff)
-
trunk/modules/login-security/classes/controller/wordfencels.php (modified) (7 diffs)
-
trunk/modules/login-security/css/admin-global.1560795818.css (deleted)
-
trunk/modules/login-security/css/admin-global.1563297204.css (added)
-
trunk/modules/login-security/css/admin.1560795818.css (deleted)
-
trunk/modules/login-security/css/admin.1563297204.css (added)
-
trunk/modules/login-security/css/colorbox.1560795818.css (deleted)
-
trunk/modules/login-security/css/colorbox.1563297204.css (added)
-
trunk/modules/login-security/css/font-awesome.1560795818.css (deleted)
-
trunk/modules/login-security/css/font-awesome.1563297204.css (added)
-
trunk/modules/login-security/css/ionicons.1560795818.css (deleted)
-
trunk/modules/login-security/css/ionicons.1563297204.css (added)
-
trunk/modules/login-security/css/jquery-ui-timepicker-addon.1560795818.css (deleted)
-
trunk/modules/login-security/css/jquery-ui-timepicker-addon.1563297204.css (added)
-
trunk/modules/login-security/css/jquery-ui.min.1560795818.css (deleted)
-
trunk/modules/login-security/css/jquery-ui.min.1563297204.css (added)
-
trunk/modules/login-security/css/jquery-ui.structure.min.1560795818.css (deleted)
-
trunk/modules/login-security/css/jquery-ui.structure.min.1563297204.css (added)
-
trunk/modules/login-security/css/jquery-ui.theme.min.1560795818.css (deleted)
-
trunk/modules/login-security/css/jquery-ui.theme.min.1563297204.css (added)
-
trunk/modules/login-security/css/login.1560795818.css (deleted)
-
trunk/modules/login-security/css/login.1563297204.css (added)
-
trunk/modules/login-security/js/admin-global.1560795818.js (deleted)
-
trunk/modules/login-security/js/admin-global.1563297204.js (added)
-
trunk/modules/login-security/js/admin.1560795818.js (deleted)
-
trunk/modules/login-security/js/admin.1563297204.js (added)
-
trunk/modules/login-security/js/jquery-ui-timepicker-addon.1560795818.js (deleted)
-
trunk/modules/login-security/js/jquery-ui-timepicker-addon.1563297204.js (added)
-
trunk/modules/login-security/js/jquery.colorbox.1560795818.js (deleted)
-
trunk/modules/login-security/js/jquery.colorbox.1563297204.js (added)
-
trunk/modules/login-security/js/jquery.colorbox.min.1560795818.js (deleted)
-
trunk/modules/login-security/js/jquery.colorbox.min.1563297204.js (added)
-
trunk/modules/login-security/js/jquery.qrcode.min.1560795818.js (deleted)
-
trunk/modules/login-security/js/jquery.qrcode.min.1563297204.js (added)
-
trunk/modules/login-security/js/jquery.tmpl.min.1560795818.js (deleted)
-
trunk/modules/login-security/js/jquery.tmpl.min.1563297204.js (added)
-
trunk/modules/login-security/js/login.1560795818.js (deleted)
-
trunk/modules/login-security/js/login.1563297204.js (added)
-
trunk/modules/login-security/views/options/option-captcha-threshold.php (added)
-
trunk/modules/login-security/views/options/option-captcha.php (modified) (2 diffs)
-
trunk/modules/login-security/views/options/option-require-2fa.php (modified) (1 diff)
-
trunk/modules/login-security/views/settings/options.php (modified) (3 diffs)
-
trunk/modules/login-security/wordfence-login-security.php (modified) (1 diff)
-
trunk/readme.txt (modified) (1 diff)
-
trunk/vendor/composer/038918d7 (added)
-
trunk/vendor/geoip2/geoip2/maxmind-db (added)
-
trunk/views/dashboard/options-group-general.php (modified) (1 diff)
-
trunk/wordfence.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wordfence/tags/7.3.5/images/wf-horizontal.svg
r1928218 r2124102 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'> 3 <svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.4142" version="1.1" viewBox="0 0 2230 399" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m764.54 369.3l4.3-1.8c1.4 3.8 3.3 6.6 5.5 8.4 2.3 1.8 5 2.7 8.3 2.7 3.4 0 6.1-0.9 8.1-2.8 2.1-1.9 3.1-4.4 3.1-7.5 0-2.5-0.7-4.5-2-6.1s-3.6-3.1-6.8-4.4c-1.8-0.7-4.1-1.5-7-2.5s-4.8-1.7-5.6-2.2c-2.6-1.5-4.4-3.1-5.5-4.8s-1.6-3.8-1.6-6.2c0-4.4 1.4-7.9 4.1-10.5 2.7-2.5 6.5-3.8 11.2-3.8 4.2 0 7.7 1 10.5 3.1 2.7 2.1 4.8 5.3 6.3 9.6l-4.2 1.3c-1.3-3.3-3-5.8-5.1-7.4s-4.6-2.4-7.7-2.4c-3 0-5.4 0.9-7.2 2.6s-2.8 3.9-2.8 6.7c0 2.1 0.6 3.8 1.8 5.2s3 2.6 5.5 3.5c1 0.4 2.4 0.9 4.2 1.5 5.2 1.8 8.6 3.2 10.1 4.2 2.4 1.6 4.2 3.3 5.3 5.2s1.6 4.1 1.6 6.7c0 4.7-1.5 8.4-4.4 11.2-3 2.8-6.9 4.1-12 4.1-4.5 0-8.2-1.1-11.2-3.3-2.7-2.2-5.1-5.6-6.8-10.3z" fill="#2d2d2d"/><path d="m839.04 370.9l3.4 1.8c-1.7 3.5-3.7 6-6 7.6s-5.1 2.4-8.5 2.4c-4.8 0-8.6-1.8-11.5-5.3-2.8-3.6-4.3-8.3-4.3-14.4 0-6.2 1.4-11.2 4.2-14.9s6.6-5.5 11.4-5.5c4.7 0 8.3 1.6 10.7 4.8 2.5 3.2 3.7 7.8 3.7 13.9v1.2h-25.5c0 5.3 1 9.3 3 12.1s4.8 4.2 8.5 4.2c2.4 0 4.5-0.6 6.2-1.9 1.8-1 3.3-3.1 4.7-6zm-1.1-11.6c-0.1-4.1-1-7.2-2.8-9.5-1.8-2.2-4.2-3.4-7.3-3.4s-5.6 1.1-7.6 3.4-3.1 5.4-3.5 9.5h21.2z" fill="#2d2d2d"/><path d="m880.74 370.9l3.5 1.9c-1.7 3.5-3.6 6-5.8 7.5-2.2 1.6-4.8 2.3-8 2.3-4.8 0-8.7-1.8-11.5-5.3s-4.2-8.3-4.2-14.4c0-6.2 1.4-11.2 4.2-14.9s6.5-5.5 11.1-5.5c3.3 0 6.2 0.9 8.5 2.6s4.1 4.3 5.5 7.8l-4 1.6c-1-2.8-2.4-4.8-4-6.1s-3.6-2-5.9-2c-3.4 0-6 1.4-7.9 4.3-1.9 2.8-2.8 6.8-2.8 11.9 0 5.3 1 9.3 2.9 12.2 1.9 2.8 4.7 4.3 8.2 4.3 2.3 0 4.3-0.6 5.9-1.9 1.4-1.3 2.9-3.4 4.3-6.3z" fill="#2d2d2d"/><path d="m927.84 343.4v38.6h-4.6v-6.1c-2.3 2.2-4.5 3.9-6.7 5s-4.4 1.7-6.6 1.7c-3.5 0-6.1-1-7.8-3.1s-2.6-5.2-2.6-9.3v-26.9h4.6v25.3c0 3.8 0.5 6.4 1.6 7.9 1.1 1.4 2.9 2.2 5.6 2.2 1.9 0 3.9-0.6 5.9-1.8s4.1-3 6.1-5.4v-28.1h4.5z" fill="#2d2d2d"/><path d="m947.64 382.1v-38.6h4.6v6.7h0.4c1.3-2.6 2.9-4.4 4.6-5.6 1.8-1.2 3.9-1.8 6.4-1.8h0.2v4.4h-0.6c-2.7 0-5 0.9-6.8 2.5-1.8 1.7-3.2 4.3-4.3 7.9v24.5h-4.5z" fill="#2d2d2d"/><path d="m977.64 335.3v-6.5h5.5v6.5h-5.5zm0.5 46.8v-38.6h4.6v38.6h-4.6z" fill="#2d2d2d"/><path d="m1002.8 382.1v-38.6h4.6v6.1c2.3-2.2 4.5-3.9 6.7-5.1 2.2-1.1 4.4-1.7 6.6-1.7 3.5 0 6.1 1 7.8 3.1s2.6 5.2 2.6 9.3v26.9h-4.6v-25.2c0-3.9-0.5-6.5-1.6-7.9s-2.9-2.1-5.6-2.1c-1.9 0-3.9 0.6-5.9 1.8s-4 3-6.1 5.4v28.1h-4.5v-0.1z" fill="#2d2d2d"/><path d="m1052.8 366.9v-0.4c-1.6-1.4-2.7-3-3.5-4.7s-1.1-3.6-1.1-5.7c0-3.9 1.3-7.1 3.9-9.7s5.9-3.9 9.9-3.9c1.8 0 3.5 0.3 5 0.7 1.5 0.5 2.9 1.2 4.3 2.2 1.2-1.2 2.4-2 3.7-2.6s2.6-0.9 4.1-0.9v4.3h-0.9c-1 0-1.9 0.1-2.7 0.3s-1.5 0.6-2.1 1.1c0.8 1.2 1.4 2.5 1.8 3.8s0.6 2.7 0.6 4.2c0 4.2-1.2 7.5-3.7 10.1s-5.7 3.9-9.6 3.9c-0.9 0-1.9-0.1-2.8-0.2-1-0.2-2-0.4-3-0.8-1.4 0.4-2.5 0.8-3.2 1.4-0.8 0.6-1.1 1.3-1.1 2 0 1.7 3.2 2.8 9.5 3.1 2 0.1 3.5 0.2 4.7 0.3 4.2 0.3 7.3 1.3 9.5 2.9 2.2 1.7 3.3 4 3.3 6.9 0 3.5-1.4 6.2-4.3 8.1-2.9 1.8-7.1 2.8-12.5 2.8-5 0-8.9-0.9-11.8-2.6-2.8-1.7-4.2-4-4.2-7.1 0-1.6 0.5-3 1.4-4.2s2.4-2.4 4.3-3.5v-0.8c-1.3-0.4-2.3-1-3-1.8-0.7-0.9-1.1-1.9-1.1-3s0.4-2.2 1.2-3.2c0.6-0.9 1.8-1.9 3.4-3zm4.4 12.3c-2.2 1-3.8 2-4.9 3.2s-1.6 2.5-1.6 3.9c0 2 1 3.6 3.2 4.7 2.1 1.1 5 1.7 8.8 1.7 3.9 0 7-0.6 9.2-1.9s3.3-3 3.3-5.2c0-2.3-1.3-4-3.9-5-2.8-0.9-7.4-1.4-14.1-1.4zm-4.7-23.1c0 2.8 0.9 5.2 2.8 7.2s4.1 3 6.7 3c2.7 0 5-1 6.8-2.9s2.7-4.3 2.7-7.3c0-2.9-0.9-5.3-2.7-7.2s-4-2.8-6.8-2.8c-2.6 0-4.9 1-6.7 2.9-1.9 2-2.8 4.3-2.8 7.1z" fill="#2d2d2d"/><path d="m1131 381.9l-13.4-38.4h4.6l11.4 32.9 11.3-32.9h4.4l-14.5 41.7c-1.4 4-3 6.9-4.9 8.5s-4.4 2.4-7.5 2.4c-0.7 0-1.4 0-2-0.1-0.7 0-1.3-0.1-2-0.2v-3.7c0.5 0.1 1.1 0.2 1.6 0.3 0.5 0 1.1 0.1 1.6 0.1 2.7 0 4.8-0.8 6.2-2.4 1.4-1.8 2.5-4.5 3.2-8.2z" fill="#2d2d2d"/><path d="m1160.3 362.7c0-6.1 1.4-11 4.3-14.5 2.9-3.6 6.7-5.4 11.5-5.4s8.6 1.8 11.5 5.4 4.3 8.4 4.3 14.5-1.4 11-4.3 14.6-6.7 5.4-11.5 5.4-8.6-1.8-11.5-5.4c-2.8-3.6-4.3-8.5-4.3-14.6zm4.6 0c0 5.1 1 9.1 2.9 12 2 2.9 4.7 4.3 8.3 4.3 3.5 0 6.2-1.4 8.2-4.3 2-2.8 2.9-6.8 2.9-12 0-5.1-1-9.1-2.9-11.9-2-2.8-4.7-4.2-8.2-4.2s-6.3 1.4-8.3 4.3c-1.9 2.7-2.9 6.7-2.9 11.8z" fill="#2d2d2d"/><path d="m1236.2 343.4v38.6h-4.6v-6.1c-2.3 2.2-4.5 3.9-6.7 5s-4.4 1.7-6.6 1.7c-3.5 0-6.1-1-7.8-3.1-1.8-2.1-2.6-5.2-2.6-9.3v-26.9h4.6v25.3c0 3.8 0.5 6.4 1.6 7.9 1.1 1.4 2.9 2.2 5.5 2.2 1.9 0 3.9-0.6 6-1.8 2-1.2 4.1-3 6.1-5.4v-28.1h4.5z" fill="#2d2d2d"/><path d="m1256 382.1v-38.6h4.6v6.7h0.4c1.3-2.6 2.9-4.4 4.6-5.6 1.8-1.2 3.9-1.8 6.4-1.8h0.2v4.4h-0.6c-2.7 0-5 0.9-6.8 2.5-1.8 1.7-3.2 4.3-4.3 7.9v24.5h-4.5z" fill="#2d2d2d"/><path d="m1324.1 382.1l-13.8-53.7h9.9l7.7 30.9c0.3 1.2 0.6 2.8 1 4.9s0.8 4.4 1.1 7.1c0.2-2.7 0.8-6.1 1.8-10.2 0.2-0.7 0.3-1.2 0.4-1.5l7.8-31.2h8.7l7.4 30.9c0.3 1.2 0.6 2.8 1 4.9s0.8 4.5 1.2 7.2c0.1-1.7 0.4-3.6 0.7-5.5s0.8-4 1.3-6.2l7.8-31.2h9.9l-13.8 53.7h-11.2l-6.7-26.9c-0.6-2.5-1.1-4.7-1.4-6.6-0.4-1.9-0.6-3.7-0.8-5.4-0.3 2.5-0.7 4.7-1 6.7-0.4 2-0.7 3.7-1 5.1l-6.9 27h-11.1z" fill="#00719e"/><path d="m1385.4 362.7c0-6.3 1.5-11.2 4.4-14.8s7-5.3 12.2-5.3 9.3 1.8 12.2 5.3 4.4 8.5 4.4 14.8-1.5 11.2-4.4 14.8c-2.9 3.5-7 5.3-12.2 5.3s-9.2-1.8-12.2-5.4c-2.9-3.5-4.4-8.4-4.4-14.7zm9.3 0c0 4.1 0.6 7.2 1.8 9.2s3 3 5.5 3 4.3-1 5.5-3 1.8-5.1 1.8-9.2-0.6-7.2-1.8-9.2-3-3-5.5-3c-2.4 0-4.3 1-5.5 3-1.2 2.1-1.8 5.1-1.8 9.2z" fill="#00719e"/><path d="m1432.9 382.1v-38.7h8.7v6.4c1.3-2.3 2.7-4.1 4.3-5.3s3.4-1.8 5.3-1.8h0.7c0.2 0 0.3 0.1 0.4 0.1v9.5h-0.4c-2.1 0-3.9 0.5-5.6 1.6-1.7 1-3.1 2.5-4.2 4.5v23.7h-9.2z" fill="#00719e"/><path d="m1488.7 377.9c-1.4 1.7-2.9 2.9-4.6 3.7s-3.6 1.2-5.8 1.2c-4.4 0-8.1-1.9-10.9-5.6s-4.2-8.6-4.2-14.5c0-6 1.4-10.8 4.1-14.5s6.3-5.6 10.7-5.6c1.9 0 3.7 0.4 5.2 1 1.5 0.7 2.9 1.8 4.3 3.4v-18.7h8.9v44.7c0 0.9 0 2.2 0.1 3.7s0.2 3.3 0.3 5.3h-7.1l-1-4.1zm-1.3-6.1v-18.4c-1.3-1.2-2.5-2-3.5-2.5-1.1-0.5-2.2-0.8-3.3-0.8-2.6 0-4.6 1.1-6 3.3s-2.2 5.3-2.2 9.2c0 4 0.7 7 2.2 9.2 1.4 2.2 3.5 3.2 6.1 3.2 1.2 0 2.3-0.2 3.4-0.8 0.9-0.4 2-1.2 3.3-2.4z" fill="#00719e"/><path d="m1514.6 382.1v-53.7h19.2c6.3 0 11 1.3 14.1 4 3.1 2.6 4.6 6.6 4.6 12 0 5.2-1.5 9.2-4.5 12-3 2.7-7.5 4.1-13.3 4.1h-10v21.7h-10.1v-0.1zm10.2-30.3h7.5c3.7 0 6.3-0.6 7.9-1.7 1.5-1.2 2.3-3.1 2.3-5.8s-0.8-4.7-2.3-5.8c-1.5-1.2-4.1-1.7-7.9-1.7h-7.5v15z" fill="#00719e"/><path d="m1566.4 382.1v-38.7h8.7v6.4c1.3-2.3 2.7-4.1 4.3-5.3s3.4-1.8 5.3-1.8h0.7c0.2 0 0.3 0.1 0.4 0.1v9.5h-0.4c-2.1 0-3.9 0.5-5.6 1.6-1.7 1-3.1 2.5-4.2 4.5v23.7h-9.2z" fill="#00719e"/><path d="m1628.3 374.5c-1.5 2.7-3.5 4.8-6.1 6.2s-5.7 2.1-9.3 2.1c-5.2 0-9.2-1.8-12.1-5.3s-4.3-8.4-4.3-14.8c0-6.3 1.4-11.3 4.3-14.8 2.9-3.6 6.9-5.3 12-5.3s9 1.7 11.8 5.2c2.8 3.4 4.2 8.3 4.2 14.5v2h-23.2c0.1 3.7 0.8 6.4 2.1 8.2 1.4 1.8 3.4 2.8 6.1 2.8 1.7 0 3.1-0.4 4.4-1.2 1.2-0.8 2.4-2.1 3.5-3.8l6.6 4.2zm-22.7-16.8h14.2c0-2.6-0.6-4.6-1.9-6s-3-2.2-5.2-2.2c-2.1 0-3.7 0.7-5 2.1-1.2 1.5-1.9 3.5-2.1 6.1z" fill="#00719e"/><path d="m1639.9 375l6.2-4.9c1.5 1.9 2.9 3.3 4.4 4.2 1.4 0.9 2.9 1.4 4.5 1.4s3-0.4 3.9-1.1c1-0.8 1.4-1.8 1.4-3.1 0-1.9-2-3.7-6.1-5.2-0.4-0.2-0.8-0.3-1-0.4-4.8-1.8-8.1-3.6-9.7-5.3s-2.4-3.9-2.4-6.6c0-3.3 1.2-6 3.7-8.2 2.5-2.1 5.7-3.2 9.6-3.2 2.6 0 5 0.5 7.2 1.4 2.1 1 4.1 2.5 5.9 4.5l-5.8 5c-1.2-1.3-2.5-2.3-3.7-2.9s-2.5-0.9-3.8-0.9c-1.5 0-2.7 0.3-3.6 1s-1.3 1.6-1.3 2.8c0 1.4 2 2.9 6.1 4.4 1.1 0.4 1.9 0.7 2.6 1 4.1 1.6 6.9 3.3 8.4 5 1.5 1.8 2.2 4.1 2.2 7.1 0 3.6-1.2 6.5-3.7 8.6-2.5 2.2-5.7 3.3-9.8 3.3-3.2 0-6-0.6-8.4-1.9-2.5-1.3-4.8-3.2-6.8-6z" fill="#00719e"/><path d="m1679.8 375l6.2-4.9c1.5 1.9 2.9 3.3 4.4 4.2 1.4 0.9 3 1.4 4.5 1.4 1.7 0 3-0.4 3.9-1.1 1-0.8 1.4-1.8 1.4-3.1 0-1.9-2-3.7-6.1-5.2-0.4-0.2-0.8-0.3-1-0.4-4.8-1.8-8.1-3.6-9.7-5.3s-2.4-3.9-2.4-6.6c0-3.3 1.2-6 3.7-8.2 2.5-2.1 5.7-3.2 9.6-3.2 2.6 0 5 0.5 7.2 1.4 2.1 1 4.1 2.5 5.9 4.5l-5.8 5c-1.2-1.3-2.5-2.3-3.7-2.9s-2.5-0.9-3.8-0.9c-1.5 0-2.7 0.3-3.6 1s-1.3 1.6-1.3 2.8c0 1.4 2 2.9 6.1 4.4 1.1 0.4 1.9 0.7 2.6 1 4.1 1.6 6.9 3.3 8.4 5 1.5 1.8 2.2 4.1 2.2 7.1 0 3.6-1.2 6.5-3.7 8.6-2.5 2.2-5.7 3.3-9.8 3.3-3.2 0-6-0.6-8.4-1.9-2.5-1.3-4.8-3.2-6.8-6z" fill="#00719e"/><path d="m1760.3 382.1l-11.3-38.6h4.5l9.3 31.5 9.3-31.5h4.1l9.3 32 9.2-32h4.4l-11.3 38.6h-4.4l-9.2-31-9.4 31h-4.5z" fill="#2d2d2d"/><path d="m1838 370.9l3.4 1.8c-1.7 3.5-3.7 6-6 7.6s-5.2 2.4-8.5 2.4c-4.8 0-8.6-1.8-11.5-5.3-2.8-3.6-4.3-8.3-4.3-14.4 0-6.2 1.4-11.2 4.2-14.9s6.6-5.5 11.3-5.5 8.3 1.6 10.8 4.8 3.7 7.8 3.7 13.9v1.2h-25.5c0 5.3 1 9.3 3 12.1s4.8 4.2 8.5 4.2c2.5 0 4.5-0.6 6.2-1.9 1.8-1 3.3-3.1 4.7-6zm-1.1-11.6c-0.1-4.1-1-7.2-2.8-9.5-1.8-2.2-4.2-3.4-7.3-3.4s-5.6 1.1-7.6 3.4-3.1 5.4-3.5 9.5h21.2z" fill="#2d2d2d"/><path d="m1856.8 382.1c0.1-0.6 0.2-1.3 0.2-2s0.1-1.9 0.1-3.6v-47.7h4.6v19.7h0.4c1.8-1.9 3.6-3.4 5.5-4.3s3.9-1.4 6.1-1.4c4.2 0 7.5 1.8 10 5.4s3.8 8.4 3.8 14.5-1.3 11-3.8 14.6-5.9 5.4-10 5.4c-2.2 0-4.2-0.5-6.1-1.4s-3.7-2.3-5.5-4.3h-0.4l-1.2 5h-3.7v0.1zm4.9-10.4c1.9 2.5 3.8 4.4 5.6 5.5s3.7 1.7 5.7 1.7c3.2 0 5.6-1.4 7.3-4.2s2.6-6.8 2.6-12-0.9-9.2-2.6-12-4.2-4.3-7.3-4.3c-1.9 0-3.8 0.6-5.6 1.8s-3.7 3-5.6 5.5v18h-0.1z" fill="#2d2d2d"/><path d="m1902.5 372.4c1.7 2.2 3.5 3.9 5.5 5 1.9 1.1 4 1.7 6.2 1.7 2.4 0 4.3-0.7 5.8-2s2.2-3 2.2-5.1c0-2.9-2.9-5.5-8.8-7.6-0.5-0.2-0.9-0.3-1.1-0.4-4.8-1.8-8-3.4-9.6-5-1.5-1.5-2.3-3.6-2.3-6 0-3 1.1-5.5 3.4-7.4s5.3-2.9 9-2.9c2.5 0 4.9 0.6 7 1.8 2.2 1.2 4.1 3 5.8 5.3l-3.2 2.4c-1.5-2-3.1-3.5-4.8-4.4s-3.5-1.4-5.7-1.4c-2.1 0-3.7 0.6-5 1.8-1.3 1.1-1.9 2.7-1.9 4.6 0 2.5 2.8 4.8 8.4 6.9 0.8 0.3 1.4 0.5 1.8 0.7 4.6 1.7 7.7 3.4 9.2 5 1.6 1.6 2.3 3.7 2.3 6.3 0 3.3-1.2 5.9-3.6 8s-5.6 3.1-9.5 3.1c-3 0-5.7-0.6-8.1-1.9-2.4-1.2-4.5-3.1-6.5-5.8l3.5-2.7z" fill="#2d2d2d"/><path d="m1942.8 335.3v-6.5h5.6v6.5h-5.6zm0.5 46.8v-38.6h4.6v38.6h-4.6z" fill="#2d2d2d"/><path d="m1973.3 374.8c0 1.5 0.3 2.6 1 3.3s1.7 1.1 3.2 1.1c0.5 0 1 0 1.6-0.1s1.4-0.3 2.5-0.6v3.7c-1 0.3-1.9 0.4-2.7 0.6-0.9 0.1-1.7 0.2-2.5 0.2-2.6 0-4.6-0.7-5.8-2s-1.9-3.4-1.9-6.3v-27.4h-5.7v-3.7h5.7v-11.5h4.6v11.5h8.1v3.7h-8.1v27.5z" fill="#2d2d2d"/><path d="m2019.1 370.9l3.4 1.8c-1.7 3.5-3.7 6-6 7.6s-5.1 2.4-8.5 2.4c-4.8 0-8.6-1.8-11.5-5.3-2.8-3.6-4.3-8.3-4.3-14.4 0-6.2 1.4-11.2 4.2-14.9s6.6-5.5 11.3-5.5 8.3 1.6 10.8 4.8 3.7 7.8 3.7 13.9v1.2h-25.5c0 5.3 1 9.3 3 12.1s4.8 4.2 8.5 4.2c2.5 0 4.5-0.6 6.2-1.9 1.7-1 3.3-3.1 4.7-6zm-1.2-11.6c-0.1-4.1-1-7.2-2.8-9.5-1.8-2.2-4.2-3.4-7.3-3.4s-5.6 1.1-7.6 3.4-3.1 5.4-3.5 9.5h21.2z" fill="#2d2d2d"/><path d="m1440.3 254.3v34.2h-92.2v-34.2h21.5v-80.1h-19.9v-34.2h19.9v-13.7c0-15.6 4.8-28.7 14.5-39.2s24-15.7 43.2-15.7c23.2 0 39.7 7 49.5 20.9l-34.4 26.8c-3.1-10.6-7.5-16-13.2-16-8.2 0-12.3 6.9-12.3 20.6v16.3h23.3v34.2h-23.3v80.1h23.4zm140-10.6l36.8 11.8c-15.4 24.2-39.6 36.3-72.4 36.3-26.2 0-46.6-6.9-61.3-20.7s-22-32-22-54.5c0-22.9 7.6-42 22.7-57.4 15.1-15.3 34.4-23 57.8-23 17 0 31.7 4.3 44 12.9 12.4 8.6 21 19.3 25.8 32.1s7.2 27 7.2 42.8h-110.6c0.7 13.5 5 23.1 12.8 28.7s16.1 8.4 24.8 8.4c11.4 0.1 22.9-5.8 34.4-17.4zm-9-46c-1.1-8.3-4.3-15.3-9.7-21.2-5.4-5.8-12.7-8.7-22-8.7-17.4 0-27.5 10-30.4 29.9h62.1zm69.5-23.5v-34.2h70.1v13.8c14.3-10.7 28.8-16.1 43.6-16.1 30 0 44.9 19.1 44.9 57.4v59.2h22.4v34.2h-69.8v-89.9c0-8.1-1.1-13.6-3.3-16.6s-5.8-4.4-10.8-4.4c-8.8 0-17.8 3.2-27 9.7v67h22.8v34.2h-92.9v-34.2h22.7v-80.1h-22.7zm349.7-34.2v60.3h-33.7c-7.7-16.6-19.7-24.8-36-24.8-10.4 0-18.7 3.5-24.9 10.4s-9.3 16.1-9.3 27.7c0 14 3.3 24.4 9.8 31.1s14.6 10 24.1 10c7.6 0 14.7-2.2 21.5-6.5 6.7-4.3 12.2-10.1 16.3-17.3l36.8 16.2c-13.7 29.9-37.7 44.9-72.1 44.9-25.9 0-46.5-7.1-61.9-21.2s-23.1-33-23.1-56.6 7.5-42.3 22.6-55.9c15.1-13.7 32.6-20.5 52.7-20.5 16.1 0 31 4.9 44.9 14.6v-12.3h32.3v-0.1zm143.1 103.7l36.8 11.8c-15.4 24.2-39.6 36.3-72.4 36.3-26.2 0-46.6-6.9-61.3-20.7s-22-32-22-54.5c0-22.9 7.6-42 22.7-57.4 15.1-15.3 34.4-23 57.8-23 17 0 31.7 4.3 44 12.9 12.4 8.6 21 19.3 25.8 32.1s7.2 27 7.2 42.8h-110.6c0.7 13.5 5 23.1 12.8 28.7s16.1 8.4 24.8 8.4c11.4 0.1 22.8-5.8 34.4-17.4zm-9-46c-1.1-8.3-4.3-15.3-9.7-21.2-5.4-5.8-12.7-8.7-22-8.7-17.4 0-27.5 10-30.4 29.9h62.1z" fill="#2d2d2d"/><path d="m639.74 289.8l-60.9-178.7h-22.5v-36h96.2v36h-22.1l34.7 102.5 32.5-102.5h-19.3v-36h76.7v36h-19.8l35 102.5 33.6-102.5h-21.3v-36h85.4v36h-23.2l-58.9 178.7h-39.9l-33.6-97.4-31.8 97.4h-40.8zm286.5 2c-21.9 0-40.4-6.9-55.4-20.8-15.1-13.9-22.6-32.8-22.6-57 0-24.1 7.5-43.1 22.6-57s33.6-20.8 55.4-20.8c22 0 40.5 6.9 55.5 20.8s22.5 32.9 22.5 57c0 23.8-7.4 42.7-22.3 56.8-14.8 14-33.4 21-55.7 21zm-0.1-36.8c8.8 0 15.9-3.4 21.4-10.1s8.2-17.3 8.2-31.8c0-12.7-2.7-22.6-8-29.7s-12.5-10.7-21.6-10.7c-19.5 0-29.3 14.1-29.3 42.3 0 11.6 2.4 21.1 7.3 28.6 4.8 7.7 12.2 11.4 22 11.4zm203.1-0.7v34.2h-104.5v-34.2h27.4v-80.1h-25.8v-34.2h69.2v37.7c2.7-10.8 8.7-20.2 18.2-28.1s20.6-11.9 33.5-11.9c2.1 0 4.7 0.1 7.7 0.2v44.8c-12 0-21.7 1.3-29.3 4s-13.8 8.5-18.7 17.5-7.4 19.6-7.4 31.9v18.2h29.7zm218.7 0v34.2h-71.8v-17.7c-13.2 13.2-27.5 19.8-42.9 19.8-18.5 0-33.9-7.5-46-22.5-12.2-15-18.3-33.2-18.3-54.6 0-21.7 6.2-40 18.7-54.8 12.5-14.9 27.7-22.3 45.7-22.3 17.3 0 31.5 6.7 42.8 20.2v-47.3h-23.2v-34.2h70.6v179.2h24.4zm-71.3-40.4c0-14.2-3.1-24.3-9.1-30.4-6.1-6-13-9.1-20.8-9.1-9.3 0-16.5 3.6-21.6 10.8s-7.6 16.7-7.6 28.5c0 11.1 2.5 20.5 7.5 28.1s12.3 11.4 21.8 11.4c7.9 0 14.8-3.1 20.8-9.3 6-6 9-16.1 9-30z" fill="#00719e"/></g><g fill="#2d2d2d" fill-rule="nonzero"><path d="m2179.9 165.6v-27.2h-8.6v-5.4h23.3v5.4h-8.6v27.2h-6.1z"/><path d="m2199.2 165.6v-32.6h8.8l4.7 15.8c0.4 1.4 0.8 2.8 1.1 4.2s0.5 2.7 0.7 4c0.3-1.2 0.6-2.5 0.9-3.7 0.3-1.3 0.7-2.7 1.2-4.3l4.8-15.9h8.4v32.6h-5.3v-27.4l-0.9 3.6c-0.3 1.2-0.7 2.4-1 3.6l-5.9 20.1h-4.5l-5.8-20.1c-0.6-2.1-1-3.6-1.3-4.6-0.2-1-0.5-1.8-0.6-2.6v27.3h-5.3z"/></g><clipPath id="b"><path d="m488.74 70.6c-119.9-3.9-226.9-65.2-235.4-70.2v-0.4s-111.1 66.5-236 70.6c0 0-43.5 163 7.3 327.9h456.9c50.7-164.9 7.2-327.9 7.2-327.9z"/></clipPath><g clip-path="url(#b)" fill-rule="nonzero"><path d="m24.539 398.6h228.8v-398.6s-111.1 66.5-236 70.6c-0.1 0-43.6 163 7.2 328z" fill="#00719e"/><path d="m488.74 70.6c-119.9-3.9-226.9-65.2-235.4-70.2v398.1h228.1c50.8-164.9 7.3-327.9 7.3-327.9z" fill="#008dc2"/></g><clipPath id="a"><path d="m488.74 70.6c-119.9-3.9-226.9-65.2-235.4-70.2v-0.4s-111.1 66.5-236 70.6c0 0-43.5 163 7.3 327.9h456.9c50.7-164.9 7.2-327.9 7.2-327.9z"/></clipPath><g clip-path="url(#a)" fill="#fff" fill-rule="nonzero"><path d="m537.94 363.5c-135.5-83.6-283.1-78.1-284.6-78l-0.3-6c0.4 0 38-1.6 92.1 7.4 49.8 8.2 124.3 27.3 196 71.5l-3.2 5.1z"/><path d="m543.04 338.2c-138-85.1-288.1-79.5-289.6-79.4l-0.4-9.2c1.6-0.1 39-1.6 94.3 7.5 51 8.4 127.2 28 200.6 73.2l-4.9 7.9z"/><path d="m-32.061 363.5c135.5-83.6 283.1-78.1 284.6-78l0.3-6c-0.4 0-38-1.6-92.1 7.4-49.8 8.2-124.3 27.3-196 71.5l3.2 5.1z"/><path d="m-37.161 338.2c138-85.1 288.1-79.5 289.6-79.4l0.4-9.2c-1.6-0.1-39-1.6-94.3 7.5-51 8.4-127.2 28-200.6 73.2l4.9 7.9z"/><path d="m326.14 530.9c-67.8-219.6-60.2-369.5-58.8-389.9 2.9-3.3 4.7-7.7 4.7-12.4 0-0.9-0.1-2.6-0.2-2.6h9.5l-28.1-68-27.9 68h9.3c-0.1 0-0.2 1.7-0.2 2.6 0 4.8 1.8 9.3 4.9 12.6 1.5 21.1 8.9 170.7-58.8 389.8-4.1 13.4 34.3 20.1 72.7 20.1 39.1-0.1 77-6.8 72.9-20.2z"/><path d="m181.04 163.9l-16.9-36.6-17.2 36.6h10v252h14v-252h10.1z"/><path d="m113.04 189.9l-12.8-32.8-13.3 32.8h7v223h12v-223h7.1z"/><path d="m47.939 212.9l-11.8-28.9-12.2 28.9h7v198h10v-198h7z"/><path d="m324.94 163.9l16.9-36.6 17.1 36.6h-10v252h-14v-252h-10z"/><path d="m392.94 189.9l12.8-32.8 13.2 32.8h-7v223h-12v-223h-7z"/><path d="m458.04 212.9l11.7-28.9 12.3 28.9h-7.1v198h-10v-198h-6.9z"/></g></svg> 1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 3 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 4 viewBox="0 0 2230 399" style="enable-background:new 0 0 2230 399;" xml:space="preserve"> 5 <style type="text/css"> 6 .st0{fill:#00719E;} 7 .st1{fill:#2E2E2E;} 8 .st2{fill:#FFFFFF;} 9 .st3{fill:#218DC1;} 10 .st4{fill:#1A719D;} 11 .st5{fill:#2B2C2B;} 12 </style> 13 <g> 14 <path d="M772.6,373.8l2.6-2.9c5.8,5.3,11.1,7.8,18.8,7.8c7.9,0,13.3-4.4,13.3-10.4v-0.2c0-5.6-2.9-8.8-14.9-11.2 15 c-12.6-2.6-17.7-6.8-17.7-14.8V342c0-7.8,7.1-13.8,16.9-13.8c7.7,0,12.7,2.1,18,6.4l-2.5,3.1c-5-4.3-9.9-5.9-15.7-5.9 16 c-7.7,0-12.8,4.4-12.8,9.9v0.2c0,5.6,2.9,8.9,15.3,11.5c12.2,2.5,17.3,6.8,17.3,14.5v0.2c0,8.5-7.3,14.3-17.4,14.3 17 C785.3,382.3,778.9,379.5,772.6,373.8"/> 18 <path d="M853,360.6c-0.5-7.7-5-14.9-13.7-14.9c-7.6,0-13.4,6.4-14.1,14.9H853z M821.3,362.4v-0.2c0-11.1,7.8-20,18.2-20 19 c10.7,0,17.6,8.7,17.6,20c0,0.7,0,0.9-0.1,1.5h-31.7c0.7,9.5,7.5,15.1,15,15.1c5.9,0,10-2.6,13.1-6l2.6,2.3 20 c-3.9,4.2-8.5,7.2-15.8,7.2C830,382.4,821.3,374.4,821.3,362.4"/> 21 <path d="M865.8,362.5v-0.2c0-10.7,8.6-20,19.5-20c7.2,0,11.7,3.3,15.3,7.1l-2.6,2.7c-3.3-3.4-7.1-6.3-12.8-6.3 22 c-8.7,0-15.5,7.3-15.5,16.4v0.2c0,9.2,7,16.6,15.8,16.6c5.4,0,9.6-2.8,12.8-6.4l2.6,2.3c-3.9,4.4-8.6,7.6-15.6,7.6 23 C874.3,382.4,865.8,373.2,865.8,362.5"/> 24 <path d="M911.3,366.6v-23.4h3.7V366c0,7.9,4.4,13.1,12.2,13.1c7.5,0,13.3-5.7,13.3-13.7v-22.1h3.7v38.3h-3.7v-7.1 25 c-2.6,4.5-6.8,8-13.8,8C916.9,382.4,911.3,375.8,911.3,366.6"/> 26 <path d="M958.8,343.2h3.7v10.9c3-6.8,9.4-11.8,17-11.5v4.1h-0.4c-8.9,0-16.6,6.7-16.6,19.1v15.7h-3.7V343.2z"/> 27 <path d="M990.1,343.2h3.7v38.3h-3.7V343.2z M989.6,328.2h4.6v5h-4.6V328.2z"/> 28 <path d="M1009,343.2h3.7v7.1c2.6-4.5,6.8-8,13.8-8c9.7,0,15.3,6.6,15.3,15.8v23.4h-3.7v-22.7c0-7.9-4.4-13.1-12.2-13.1 29 c-7.5,0-13.3,5.7-13.3,13.7v22.1h-3.7V343.2z"/> 30 <path d="M1087.9,360.6v-0.2c0-8.9-7.9-14.6-15.8-14.6c-8,0-14.8,5.6-14.8,14.5v0.2c0,8.6,6.9,14.6,14.8,14.6 31 C1080,375.1,1087.9,369.3,1087.9,360.6 M1055,387.8l2.2-3c4.6,3.5,9.8,5.4,15.5,5.4c8.8,0,15-5,15-14.9v-5.6 32 c-3.3,4.7-8.4,8.9-16,8.9c-9.2,0-18.4-7.1-18.4-18v-0.1c0-11,9.2-18.2,18.4-18.2c7.7,0,12.8,4.1,16,8.6v-7.7h3.7v32.3 33 c0,5.6-1.8,9.9-4.9,13c-3.3,3.3-8.3,5.1-13.9,5.1C1066.2,393.7,1060.2,391.7,1055,387.8"/> 34 <path d="M1126.3,392.1l1.3-3.2c2,1,3.7,1.4,6.5,1.4c4,0,6.6-2.3,9.5-9l-18.4-38.1h4.3l15.9,34.2l13.8-34.2h4.1l-16.6,39.6 35 c-3.4,8-7.3,10.9-12.8,10.9C1131,393.7,1128.9,393.2,1126.3,392.1"/> 36 <path d="M1204.6,362.5v-0.2c0-9.2-6.9-16.6-15.8-16.6c-9.1,0-15.6,7.4-15.6,16.4v0.2c0,9.2,6.9,16.6,15.8,16.6 37 C1198.1,379,1204.6,371.5,1204.6,362.5 M1169.3,362.5v-0.2c0-10.7,8.3-20,19.7-20c11.3,0,19.6,9.2,19.6,19.9v0.2 38 c0,10.7-8.3,20-19.7,20C1177.5,382.4,1169.3,373.2,1169.3,362.5"/> 39 <path d="M1219.9,366.6v-23.4h3.7V366c0,7.9,4.4,13.1,12.2,13.1c7.5,0,13.3-5.7,13.3-13.7v-22.1h3.7v38.3h-3.7v-7.1 40 c-2.6,4.5-6.8,8-13.8,8C1225.5,382.4,1219.9,375.8,1219.9,366.6"/> 41 <path d="M1267.4,343.2h3.7v10.9c3-6.8,9.4-11.8,17-11.5v4.1h-0.4c-8.9,0-16.6,6.7-16.6,19.1v15.7h-3.7V343.2z"/> 42 <polygon class="st0" points="1317.2,329 1327.1,329 1339.7,367.9 1352.6,328.8 1360.4,328.8 1373.3,367.9 1385.8,329 1395.5,329 43 1377.2,381.9 1369.3,381.9 1356.3,344.1 1343.4,381.9 1335.5,381.9 "/> 44 <path class="st0" d="M1430.8,361.9v-0.2c0-7-5-12.8-12.2-12.8c-7.3,0-11.9,5.7-11.9,12.6v0.2c0,6.9,5,12.8,12.1,12.8 45 C1426.1,374.5,1430.8,368.7,1430.8,361.9 M1397.6,361.9v-0.2c0-11.3,9-20.7,21.2-20.7c12.2,0,21.1,9.2,21.1,20.6v0.2 46 c0,11.3-9,20.6-21.2,20.6C1406.5,382.4,1397.6,373.2,1397.6,361.9"/> 47 <path class="st0" d="M1449.8,341.9h9.1v8.9c2.5-5.9,7.1-10,14-9.7v9.6h-0.5c-8,0-13.5,5.2-13.5,15.7v15.1h-9.1V341.9z"/> 48 <path class="st0" d="M1510.5,361.8v-0.2c0-7.7-5.4-12.7-11.5-12.7c-6.2,0-11.4,4.8-11.4,12.7v0.2c0,7.7,5.3,12.7,11.4,12.7 49 C1505.1,374.4,1510.5,369.3,1510.5,361.8 M1478.4,361.8v-0.2c0-13.1,8.9-20.6,18.4-20.6c6.5,0,10.7,3.3,13.5,7v-21.3h9.1v54.8h-9.1 50 v-6.6c-2.9,4.1-7.1,7.4-13.5,7.4C1487.5,382.3,1478.4,374.9,1478.4,361.8"/> 51 <path class="st0" d="M1552.5,356.3c7,0,11.3-3.9,11.3-9.4v-0.1c0-6.2-4.4-9.4-11.3-9.4h-10.7v18.9H1552.5z M1532.5,329h20.7 52 c12.2,0,20,7,20,17.6v0.2c0,11.8-9.5,17.9-21,17.9h-10.4v16.9h-9.2V329z"/> 53 <path class="st0" d="M1582.3,341.9h9.1v8.9c2.5-5.9,7.1-10,14-9.7v9.6h-0.5c-8,0-13.5,5.2-13.5,15.7v15.1h-9.1V341.9z"/> 54 <path class="st0" d="M1639.9,358.9c-0.6-5.9-4.1-10.4-10.1-10.4c-5.6,0-9.5,4.3-10.3,10.4H1639.9z M1610.6,361.8v-0.2 55 c0-11.3,8-20.6,19.4-20.6c12.6,0,19,9.9,19,21.3c0,0.8-0.1,1.7-0.2,2.6h-29.1c1,6.5,5.6,10.1,11.4,10.1c4.4,0,7.6-1.7,10.7-4.7 56 l5.3,4.7c-3.8,4.5-8.9,7.4-16.2,7.4C1619.4,382.4,1610.6,374.1,1610.6,361.8"/> 57 <path class="st0" d="M1655.6,376.3l4.1-6.2c4.3,3.2,8.9,4.9,13,4.9c3.9,0,6.2-1.7,6.2-4.3v-0.2c0-3.1-4.2-4.1-8.9-5.6 58 c-5.9-1.7-12.4-4.1-12.4-11.6v-0.2c0-7.5,6.2-12.1,14.1-12.1c5,0,10.4,1.7,14.6,4.5l-3.6,6.5c-3.8-2.3-7.9-3.8-11.2-3.8 59 c-3.5,0-5.6,1.6-5.6,4v0.2c0,2.9,4.3,4.1,8.9,5.6c5.8,1.8,12.3,4.4,12.3,11.6v0.2c0,8.3-6.5,12.5-14.7,12.5 60 C1666.8,382.3,1660.5,380.2,1655.6,376.3"/> 61 <path class="st0" d="M1693.1,376.3l4.1-6.2c4.3,3.2,8.9,4.9,13,4.9c3.9,0,6.2-1.7,6.2-4.3v-0.2c0-3.1-4.2-4.1-8.9-5.6 62 c-5.9-1.7-12.4-4.1-12.4-11.6v-0.2c0-7.5,6.2-12.1,14.1-12.1c5,0,10.4,1.7,14.6,4.5l-3.6,6.5c-3.8-2.3-7.9-3.8-11.2-3.8 63 c-3.5,0-5.6,1.6-5.6,4v0.2c0,2.9,4.3,4.1,8.9,5.6c5.8,1.8,12.3,4.4,12.3,11.6v0.2c0,8.3-6.5,12.5-14.7,12.5 64 C1704.3,382.3,1698.1,380.2,1693.1,376.3"/> 65 <polygon points="1755.8,343.2 1760,343.2 1771.5,376.9 1783.1,343.1 1786,343.1 1797.6,376.9 1809.1,343.2 1813.1,343.2 66 1799.1,381.8 1795.9,381.8 1784.5,349 1773,381.8 1769.9,381.8 "/> 67 <path d="M1851.7,360.6c-0.5-7.7-5-14.9-13.7-14.9c-7.6,0-13.4,6.4-14.1,14.9H1851.7z M1820,362.4v-0.2c0-11.1,7.8-20,18.2-20 68 c10.7,0,17.6,8.7,17.6,20c0,0.7,0,0.9-0.1,1.5h-31.7c0.7,9.5,7.5,15.1,15,15.1c5.9,0,10-2.6,13.1-6l2.6,2.3 69 c-3.9,4.2-8.5,7.2-15.8,7.2C1828.7,382.4,1820,374.4,1820,362.4"/> 70 <path d="M1901.3,362.5v-0.2c0-10.1-7-16.5-15-16.5c-8,0-15.6,6.7-15.6,16.4v0.2c0,9.8,7.7,16.4,15.6,16.4 71 C1894.6,378.9,1901.3,372.8,1901.3,362.5 M1870.9,373.2v8.3h-3.7v-54.8h3.7v25.1c3.3-5,8.2-9.5,15.8-9.5c9.2,0,18.6,7.4,18.6,19.9 72 v0.2c0,12.5-9.4,20-18.6,20C1879,382.4,1874,378.1,1870.9,373.2"/> 73 <path d="M1914.2,376.7l2.2-2.9c4.2,3.2,8.9,5,13.7,5c5.2,0,9.2-2.9,9.2-7.3v-0.2c0-4.5-4.8-6.2-10.1-7.7 74 c-6.2-1.8-13.1-3.7-13.1-10.5v-0.2c0-6.2,5.2-10.6,12.6-10.6c4.6,0,9.8,1.7,13.6,4.2l-2,3.1c-3.5-2.3-7.7-3.8-11.8-3.8 75 c-5.3,0-8.7,2.9-8.7,6.7v0.2c0,4.3,5.2,5.9,10.7,7.4c6.2,1.7,12.6,4,12.6,10.7v0.2c0,6.8-5.9,11.2-13.2,11.2 76 C1924.3,382.3,1918.2,380,1914.2,376.7"/> 77 <path d="M1956,343.2h3.7v38.3h-3.7V343.2z M1955.6,328.2h4.6v5h-4.6V328.2z"/> 78 <path d="M1977,371.7v-25.1h-5.6v-3.4h5.6V331h3.7v12.2h13.4v3.4h-13.4v24.7c0,5.5,3.2,7.4,7.7,7.4c1.9,0,3.5-0.4,5.6-1.4v3.5 79 c-2,0.9-3.8,1.4-6.2,1.4C1981.8,382.2,1977,379,1977,371.7"/> 80 <path d="M2033.7,360.6c-0.5-7.7-5-14.9-13.7-14.9c-7.6,0-13.4,6.4-14.1,14.9H2033.7z M2001.9,362.4v-0.2c0-11.1,7.8-20,18.2-20 81 c10.7,0,17.6,8.7,17.6,20c0,0.7,0,0.9-0.1,1.5h-31.7c0.7,9.5,7.5,15.1,15,15.1c5.9,0,10-2.6,13.1-6l2.6,2.3 82 c-3.9,4.2-8.5,7.2-15.8,7.2C2010.7,382.4,2001.9,374.4,2001.9,362.4"/> 83 <path class="st1" d="M2141.5,196.9c-1.1-8.3-4.4-15.4-9.8-21.3c-5.4-5.9-12.8-8.8-22.2-8.8c-17.5,0-27.7,10-30.6,30.1H2141.5z 84 M2150.6,243.3l37.1,11.9c-15.5,24.4-39.8,36.6-72.9,36.6c-26.4,0-46.9-6.9-61.7-20.9c-14.8-13.9-22.2-32.2-22.2-54.8 85 c0-23.1,7.6-42.3,22.9-57.8c15.2-15.4,34.6-23.2,58.2-23.2c17.1,0,31.9,4.3,44.3,13c12.5,8.6,21.1,19.4,25.9,32.3 86 c4.8,12.9,7.3,27.2,7.3,43.1h-111.4c0.7,13.6,5,23.2,12.9,28.9c7.9,5.7,16.2,8.5,24.9,8.5C2127.4,260.9,2139,255,2150.6,243.3 87 M2006.5,138.8v60.7h-34c-7.7-16.7-19.8-25-36.3-25c-10.5,0-18.9,3.5-25.1,10.4c-6.2,7-9.3,16.2-9.3,27.9c0,14.1,3.3,24.5,9.9,31.3 88 c6.6,6.7,14.7,10.1,24.2,10.1c7.6,0,14.8-2.2,21.6-6.6c6.8-4.4,12.2-10.2,16.4-17.4l37.1,16.3c-13.8,30.1-38,45.2-72.6,45.2 89 c-26.1,0-46.8-7.1-62.3-21.3c-15.5-14.2-23.2-33.2-23.2-57c0-23.8,7.6-42.5,22.8-56.3c15.2-13.8,32.9-20.6,53.1-20.6 90 c16.2,0,31.3,4.9,45.3,14.7v-12.4H2006.5z M1654.3,173.3v-34.4h70.6v13.9c14.4-10.8,29-16.2,43.9-16.2c30.2,0,45.3,19.3,45.3,57.8 91 v59.6h22.6v34.4h-70.3v-90.5c0-8.1-1.1-13.7-3.3-16.7c-2.2-3-5.8-4.5-10.9-4.5c-8.9,0-17.9,3.2-27.2,9.7v67.5h23v34.4h-93.6v-34.4 92 h22.9v-80.6H1654.3z M1584.4,196.9c-1.1-8.3-4.4-15.4-9.8-21.3c-5.4-5.9-12.8-8.8-22.2-8.8c-17.5,0-27.7,10-30.6,30.1H1584.4z 93 M1593.5,243.3l37.1,11.9c-15.5,24.4-39.8,36.6-72.9,36.6c-26.4,0-46.9-6.9-61.7-20.9c-14.8-13.9-22.2-32.2-22.2-54.8 94 c0-23.1,7.6-42.3,22.9-57.8c15.2-15.4,34.6-23.2,58.2-23.2c17.1,0,31.9,4.3,44.3,13c12.5,8.6,21.1,19.4,25.9,32.3 95 c4.8,12.9,7.3,27.2,7.3,43.1H1521c0.7,13.6,5,23.2,12.9,28.9c7.9,5.7,16.2,8.5,24.9,8.5C1570.3,260.9,1581.8,255,1593.5,243.3 96 M1452.5,253.9v34.4h-92.8v-34.4h21.6v-80.6h-20.1v-34.4h20.1v-13.7c0-15.8,4.9-28.9,14.6-39.5c9.7-10.6,24.2-15.8,43.5-15.8 97 c23.4,0,40,7,49.9,21l-34.6,27c-3.1-10.7-7.5-16.1-13.3-16.1c-8.2,0-12.4,6.9-12.4,20.7v16.4h23.5v34.4H1429v80.6H1452.5z"/> 98 <path class="st0" d="M1287.6,213.3c0-14.3-3.1-24.5-9.2-30.6c-6.1-6.1-13.1-9.1-20.9-9.1c-9.4,0-16.6,3.6-21.7,10.9 99 c-5.1,7.3-7.6,16.8-7.6,28.7c0,11.2,2.5,20.7,7.6,28.3c5,7.7,12.4,11.5,21.9,11.5c7.9,0,14.9-3.1,20.9-9.3 100 C1284.6,237.4,1287.6,227.3,1287.6,213.3 M1359.4,253.9v34.4h-72.3v-17.8c-13.3,13.3-27.7,20-43.3,20c-18.6,0-34.1-7.6-46.3-22.7 101 c-12.3-15.1-18.4-33.5-18.4-55c0-21.8,6.3-40.2,18.8-55.2c12.6-15,27.9-22.5,46-22.5c17.4,0,31.8,6.8,43.1,20.3v-47.5h-23.3V73.5 102 h71.1v180.4H1359.4z M1139.2,253.9v34.4H1034v-34.4h27.6v-80.6h-25.9v-34.4h69.7v38c2.7-10.9,8.8-20.4,18.3-28.3 103 c9.5-8,20.8-12,33.8-12c2.2,0,4.7,0.1,7.7,0.2v45.1c-12,0-21.9,1.3-29.5,4c-7.6,2.7-13.9,8.6-18.8,17.6c-4.9,9.1-7.4,19.8-7.4,32.1 104 v18.4H1139.2z M934.7,254.7c8.9,0,16-3.4,21.5-10.2c5.5-6.8,8.3-17.5,8.3-32c0-12.8-2.7-22.7-8-29.9c-5.3-7.2-12.6-10.7-21.8-10.7 105 c-19.7,0-29.5,14.2-29.5,42.6c0,11.6,2.4,21.2,7.3,28.8C917.4,250.9,924.8,254.7,934.7,254.7 M934.8,291.7c-22,0-40.6-7-55.8-20.9 106 c-15.2-14-22.8-33.1-22.8-57.4c0-24.3,7.6-43.4,22.8-57.4c15.2-14,33.8-20.9,55.8-20.9c22.1,0,40.8,7,55.9,20.9 107 c15.1,14,22.7,33.1,22.7,57.4c0,24-7.5,43-22.5,57.1C976,284.7,957.3,291.7,934.8,291.7 M646.3,289.7L585,109.8h-22.7V73.5h96.8 108 v36.3h-22.2L671.8,213l32.7-103.2h-19.5V73.5h77.2v36.3h-19.9L777.6,213l33.8-103.2h-21.5V73.5h86v36.3h-23.3l-59.3,179.9h-40.2 109 l-33.8-98.1l-32,98.1H646.3z"/> 110 <g> 111 <path class="st2" d="M238.5,280.2C238.5,280.2,238.6,280.2,238.5,280.2C238.6,280.2,238.5,280.2,238.5,280.2L238.5,280.2z"/> 112 <path class="st3" d="M257.4,79.6L257.4,79.6l26,57.2l0.2,0.5l-8.9,0c0,0.1,0,0.1,0,0.2c0.1,0.8,0.3,1.7,0.3,2.6 113 c0,2.8-0.7,5.4-2,7.7c-0.6,1.1-1.2,2.1-2,3c0,0-1.2,12.5-1,35.7c0,0,0,0.1,0,0.1c0.1,13.9,0.8,34.5,2.5,56.9 114 c27.2,1.5,52.5,4.6,75.7,8.7l0-97l-6.8,0l17.4-38.1l16.7,38.3l-6.8,0l0,100.9c24.8,5.1,46.8,11.3,65.8,17.5l0-84.5l-6.8,0 115 l17.4-38.1l16.7,38.3l-6.8,0l0,91.5c22.5,8.3,39.3,16.2,49.7,21.6c13-122.2-13.6-228.2-13.6-228.2c-123.7-4-233.7-69.8-233.7-69.8 116 V79.6z"/> 117 <path class="st3" d="M455,302.5l0,95.5h12.1v0h2.9h7.5v0h6.5c4.1-13.2,7.6-26.9,10.6-40.2l0,0c3.7-13.3,5.9-24.3,7.3-32.2 118 c0,0,0.1-0.3,0.1-0.4c0.1-0.5,0.2-1,0.2-1.5C494.8,319.8,478.7,311.6,455,302.5z"/> 119 <path class="st3" d="M368.7,276.8l0,121.2h12.1v0h22.3v0h11.7h19.7l0-103C415.8,288.7,393.7,282.3,368.7,276.8z"/> 120 <path class="st3" d="M348.3,398V272.7c-22.7-4.1-47.5-7.3-74.1-9c0,0.1,0,0.2,0,0.3c0.1,0.5,1.7,13.9,2,16.1 121 c4.1,30.9,12.5,79.7,21.1,117.7h-0.4c0,0,0,0,0,0.1v0h42.2v0l0,0H348.3z"/> 122 <path class="st4" d="M217.5,397.9c8.6-38,16.9-86.8,21.1-117.7c0,0-0.1,0-0.1,0l0,0c0,0,0.1,0,0.1,0c0.3-2.2,2-15.6,2-16.1 123 c0-0.1,0-0.2,0-0.3c-26.8,1.7-51.6,4.9-74.1,9V398v0h9.2v0h42.2c0,0,0,0,0,0c0,0,0,0,0-0.1H217.5z"/> 124 <path class="st4" d="M59.8,280.8l0-91.5l-6.8,0L69.7,151l17.4,38.1l-6.8,0l0,84.5c19-6.2,41-12.3,65.8-17.5l0-100.9l-6.8,0 125 l16.7-38.3l17.4,38.1l-6.8,0l0,97c23.2-4,48.5-7.2,75.7-8.7c1.6-22.5,2.4-43,2.5-56.9c0,0,0-0.1,0-0.1c0.1-23.2-1-35.7-1-35.7 126 c-0.8-0.9-1.4-1.9-2-3c-1.2-2.3-2-4.9-2-7.7c0-0.9,0.1-1.7,0.3-2.6c0-0.1,0-0.1,0-0.2l-8.9,0l0.2-0.5l26-57.1l0,0V4.3 127 c0,0-110,65.8-233.7,69.8c0,0-26.5,106-13.6,228.2C20.5,297.1,37.3,289.2,59.8,280.8z"/> 128 <path class="st4" d="M80.3,294.9l0,103.1H100h11.7v0H134v0v0h12.1v0l0-121.2C120.2,282.4,98,288.9,80.3,294.9z"/> 129 <path class="st4" d="M12.8,323.7C12.8,323.7,12.7,323.7,12.8,323.7c0.1,0.5,0.1,1,0.2,1.5c0,0.1,0,0.3,0.1,0.4c0,0,0,0,0,0 130 c1.4,7.9,3.6,18.9,7.3,32.2l0,0c3,13.3,6.5,26.9,10.6,40.2h6.5v0h10.3v0h12.1l0-95.6C36.2,311.5,20,319.7,12.8,323.7z"/> 131 </g> 132 <g> 133 <path class="st5" d="M2206.7,132.5c9.4,0,16.7,7.3,16.7,16.4c0,9.3-7.3,16.5-16.8,16.5c-9.4,0-16.9-7.2-16.9-16.5 134 c0-9.1,7.5-16.4,16.9-16.4H2206.7z M2206.5,135.8c-7.2,0-12.6,5.9-12.6,13.1c0,7.3,5.4,13.1,12.8,13.1c7.2,0.1,12.5-5.8,12.5-13.1 135 C2219.2,141.7,2213.9,135.8,2206.5,135.8L2206.5,135.8z M2204,157.4h-3.8v-16.3c1.5-0.3,3.6-0.6,6.3-0.6c3.1,0,4.5,0.5,5.7,1.3 136 c0.9,0.7,1.6,2,1.6,3.5c0,1.9-1.4,3.3-3.4,3.9v0.2c1.6,0.5,2.5,1.8,3,4c0.5,2.5,0.8,3.5,1.2,4h-4.1c-0.5-0.6-0.8-2-1.3-3.9 137 c-0.3-1.8-1.3-2.6-3.4-2.6h-1.8V157.4z M2204.1,148.2h1.8c2.1,0,3.8-0.7,3.8-2.4c0-1.5-1.1-2.5-3.5-2.5c-1,0-1.7,0.1-2.1,0.2 138 V148.2z"/> 139 </g> 140 </g> 141 </svg> -
wordfence/tags/7.3.5/lib/wfActivityReport.php
r1949784 r2124102 590 590 $paramValue = base64_decode($actionData['paramValue']); 591 591 if (strlen($paramValue) > 100) { 592 $paramValue = substr($paramValue, 0, 100) . chr(2026);592 $paramValue = substr($paramValue, 0, 100) . '...'; 593 593 } 594 594 -
wordfence/tags/7.3.5/lib/wfConfig.php
r2107617 r2124102 1409 1409 { 1410 1410 $wafConfig->setConfig($key, wfUtils::truthyToInt($value)); 1411 if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { 1412 wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); 1413 } 1411 1414 $saved = true; 1412 1415 break; … … 1457 1460 } 1458 1461 1462 if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { 1463 wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); 1464 } 1465 1459 1466 $saved = true; 1460 1467 break; … … 1470 1477 1471 1478 $wafConfig->setConfig('whitelistedServiceIPs', @json_encode(wfUtils::whitelistedServiceIPs())); 1479 1480 if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { 1481 wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); 1482 } 1483 1472 1484 $saved = true; 1473 1485 break; … … 1667 1679 } 1668 1680 else if (WFWAF_DEBUG) { 1669 //TODO: remove me when done with QA1670 1681 error_log("*** DEBUG: Config option '{$key}' missing save handler."); 1671 1682 } -
wordfence/tags/7.3.5/lib/wordfenceClass.php
r2107617 r2124102 3265 3265 $type = 2; 3266 3266 } 3267 else if (defined('DOING_AJAX') && DOING_AJAX) { 3268 $type = 3; 3269 if (isset($_REQUEST['action']) && ($_REQUEST['action'] == 'wordfence_ls_authenticate' || $_REQUEST['action'] == 'nopriv_wordfence_ls_authenticate')) { 3270 $type = 301; 3271 } 3272 } 3267 3273 else if (isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == $wploginPath) { 3268 3274 $type = 1; … … 5754 5760 } 5755 5761 5762 wp_register_script('chart-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/Chart.bundle.min.js'), array('jquery'), '2.4.0'); 5763 wp_register_script('wordfence-select2-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery'), WORDFENCE_VERSION); 5764 wp_register_style('wordfence-select2-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION); 5756 5765 wp_register_style('wordfence-font-awesome-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-font-awesome.css'), '', WORDFENCE_VERSION); 5757 5766 … … 6246 6255 } 6247 6256 public static function menu_tools() { 6248 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6249 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery'), WORDFENCE_VERSION);6257 wp_enqueue_style('wordfence-select2-css'); 6258 wp_enqueue_script('wordfence-select2-js'); 6250 6259 6251 6260 $subpage = filter_input(INPUT_GET, 'subpage', FILTER_SANITIZE_STRING); … … 6332 6341 wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION); 6333 6342 wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION); 6334 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6343 wp_enqueue_style('wordfence-select2-css'); 6335 6344 6336 6345 wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION); 6337 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);6346 wp_enqueue_script('wordfence-select2-js'); 6338 6347 6339 6348 try { … … 6385 6394 wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION); 6386 6395 wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION); 6387 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6396 wp_enqueue_style('wordfence-select2-css'); 6388 6397 6389 6398 wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION); 6390 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);6391 wp_enqueue_script('chart-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/Chart.bundle.min.js'), array('jquery'), '2.4.0');6399 wp_enqueue_script('wordfence-select2-js'); 6400 wp_enqueue_script('chart-js'); 6392 6401 6393 6402 try { … … 6448 6457 } 6449 6458 public static function menu_dashboard() { 6450 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6451 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);6452 wp_enqueue_script('chart-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/Chart.bundle.min.js'), array('jquery'), '2.4.0');6459 wp_enqueue_style('wordfence-select2-css'); 6460 wp_enqueue_script('wordfence-select2-js'); 6461 wp_enqueue_script('chart-js'); 6453 6462 6454 6463 if (wfConfig::get('keyType') == wfAPI::KEY_TYPE_PAID_EXPIRED || (wfConfig::get('keyType') == wfAPI::KEY_TYPE_PAID_CURRENT && wfConfig::get('keyExpDays') < 30)) { … … 6470 6479 } 6471 6480 public static function menu_scan() { 6472 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6473 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);6481 wp_enqueue_style('wordfence-select2-css'); 6482 wp_enqueue_script('wordfence-select2-js'); 6474 6483 6475 6484 if (isset($_GET['subpage']) && $_GET['subpage'] == 'scan_options') { … … 6486 6495 6487 6496 public static function menu_support() { 6488 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6489 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery'), WORDFENCE_VERSION);6497 wp_enqueue_style('wordfence-select2-css'); 6498 wp_enqueue_script('wordfence-select2-js'); 6490 6499 6491 6500 require('menu_support.php'); … … 6495 6504 wfConfig::set('showWfCentralUI', 1); 6496 6505 6497 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6498 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery'), WORDFENCE_VERSION);6506 wp_enqueue_style('wordfence-select2-css'); 6507 wp_enqueue_script('wordfence-select2-js'); 6499 6508 6500 6509 require('menu_wordfence_central.php'); … … 7863 7872 $paramValue = base64_decode($actionData['paramValue']); 7864 7873 if (strlen($paramValue) > 100) { 7865 $paramValue = substr($paramValue, 0, 100) . chr(2026);7874 $paramValue = substr($paramValue, 0, 100) . '...'; 7866 7875 } 7867 7876 -
wordfence/tags/7.3.5/modules/login-security/classes/controller/ajax.php
r2087795 r2124102 73 73 'required_parameters' => array('nonce', 'id'), 74 74 ), 75 'reset_recaptcha_stats' => array( 76 'handler' => array($this, '_ajax_reset_recaptcha_stats_callback'), 77 'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => __('You do not have permission to reset reCAPTCHA statistics.', 'wordfence-2fa')), 78 'required_parameters' => array('nonce'), 79 ), 75 80 ); 76 81 … … 400 405 foreach ($admins as $a) { 401 406 /** @var \WP_User $a */ 402 if ( !Controller_Users::shared()->has_2fa_active($a)) {407 if (Controller_Users::shared()->has_2fa_active($a)) { 403 408 continue; 404 409 } … … 447 452 Controller_Notices::shared()->remove_notice($_POST['id'], false, wp_get_current_user()); 448 453 } 454 455 public function _ajax_reset_recaptcha_stats_callback() { 456 Controller_Settings::shared()->set_array(Controller_Settings::OPTION_CAPTCHA_STATS, array('counts' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 'avg' => 0)); 457 $response = array('success' => true); 458 return die(json_encode($response)); 459 } 449 460 } -
wordfence/tags/7.3.5/modules/login-security/classes/controller/captcha.php
r2087795 r2124102 112 112 */ 113 113 public function is_human($score) { 114 if (Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_CAPTCHA_TEST_MODE)) { 115 return true; 116 } 117 114 118 $threshold = $this->threshold(); 115 119 return ($score >= $threshold || abs($score - $threshold) < 0.0001); -
wordfence/tags/7.3.5/modules/login-security/classes/controller/db.php
r2087795 r2124102 59 59 } 60 60 61 public function uninstall() { 62 $tables = array(self::TABLE_2FA_SECRETS, self::TABLE_SETTINGS); 63 foreach ($tables as $table) { 64 global $wpdb; 65 $wpdb->query('DROP TABLE IF EXISTS `' . self::network_table($table) . '`'); 66 } 67 } 68 61 69 protected function _create_schema() { 62 70 $tables = array( -
wordfence/tags/7.3.5/modules/login-security/classes/controller/settings.php
r2104182 r2124102 19 19 const OPTION_ALLOW_XML_RPC = 'allow-xml-rpc'; 20 20 const OPTION_ENABLE_AUTH_CAPTCHA = 'enable-auth-captcha'; 21 const OPTION_CAPTCHA_TEST_MODE = 'recaptcha-test-mode'; 21 22 const OPTION_RECAPTCHA_SITE_KEY = 'recaptcha-site-key'; 22 23 const OPTION_RECAPTCHA_SECRET = 'recaptcha-secret'; 23 24 const OPTION_RECAPTCHA_THRESHOLD = 'recaptcha-threshold'; 25 const OPTION_DELETE_ON_DEACTIVATION = 'delete-deactivation'; 24 26 25 27 //Internal … … 31 33 const OPTION_SHARED_SYMMETRIC_SECRET_KEY = 'shared-symmetric-secret'; 32 34 const OPTION_DISMISSED_FRESH_INSTALL_MODAL = 'dismissed-fresh-install-modal'; 35 const OPTION_CAPTCHA_STATS = 'captcha-stats'; 33 36 34 37 protected $_settingsStorage; … … 67 70 self::OPTION_ALLOW_XML_RPC => array('value' => true, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 68 71 self::OPTION_ENABLE_AUTH_CAPTCHA => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 72 self::OPTION_CAPTCHA_STATS => array('value' => '{"counts":[0,0,0,0,0,0,0,0,0,0,0],"avg":0}', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 69 73 self::OPTION_RECAPTCHA_THRESHOLD => array('value' => 0.5, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 70 74 self::OPTION_LAST_SECRET_REFRESH => array('value' => 0, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 75 self::OPTION_DELETE_ON_DEACTIVATION => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 71 76 )); 72 77 } … … 130 135 case self::OPTION_ALLOW_XML_RPC: 131 136 case self::OPTION_ENABLE_AUTH_CAPTCHA: 137 case self::OPTION_CAPTCHA_TEST_MODE: 132 138 case self::OPTION_DISMISSED_FRESH_INSTALL_MODAL: 139 case self::OPTION_DELETE_ON_DEACTIVATION: 133 140 return true; 134 141 … … 139 146 //Array 140 147 case self::OPTION_GLOBAL_NOTICES: 148 case self::OPTION_CAPTCHA_STATS: 141 149 return preg_match('/^\[.*\]$/', $value) || preg_match('/^\{.*\}$/', $value); //Only a rough JSON validation 142 150 … … 166 174 case self::OPTION_RECAPTCHA_THRESHOLD: 167 175 return is_numeric($value) && $value >= 0 && $value <= 1; 176 case self::OPTION_RECAPTCHA_SITE_KEY: 177 if (empty($value)) { 178 return true; 179 } 180 181 $response = wp_remote_get('https://www.google.com/recaptcha/api.js?render=' . urlencode($value)); 182 183 if (!is_wp_error($response)) { 184 $status = wp_remote_retrieve_response_code($response); 185 if ($status == 200) { 186 return true; 187 } 188 189 $data = wp_remote_retrieve_body($response); 190 if (strpos($data, 'grecaptcha') === false) { 191 return __('Unable to validate the reCAPTCHA site key. Please check the key and try again.', 'wordfence-2fa'); 192 } 193 return true; 194 } 195 return sprintf(__('An error was encountered while validating the reCAPTCHA site key: %s', 'wordfence-2fa'), $response->get_error_message()); 168 196 } 169 197 return true; … … 202 230 case self::OPTION_ALLOW_XML_RPC: 203 231 case self::OPTION_ENABLE_AUTH_CAPTCHA: 232 case self::OPTION_CAPTCHA_TEST_MODE: 204 233 case self::OPTION_DISMISSED_FRESH_INSTALL_MODAL: 234 case self::OPTION_DELETE_ON_DEACTIVATION: 205 235 return $this->_truthy_to_bool($value); 206 236 -
wordfence/tags/7.3.5/modules/login-security/classes/controller/time.php
r2104182 r2124102 96 96 foreach ($servers as $s) { 97 97 $socket = @fsockopen('udp://' . $s, 123, $err_no, $err_str, 1); 98 stream_set_timeout($socket, 1);99 98 if ($socket) { 99 stream_set_timeout($socket, 1); 100 100 $remote_originate = microtime(true); 101 101 $secondsNTP = ((int) $remote_originate) + self::NTP_EPOCH_CONVERT; -
wordfence/tags/7.3.5/modules/login-security/classes/controller/users.php
r2087795 r2124102 312 312 313 313 /** 314 * Records the reCAPTCHA score for later display. 315 * 316 * This is not atomic, which means this can miscount on hits that overlap, but the overhead of being atomic is not 317 * worth it for our use. 318 * 319 * @param \WP_User $user|null 320 * @param float $score 321 */ 322 public function record_captcha_score($user, $score) { 323 if (!Controller_CAPTCHA::shared()->enabled()) { return; } 324 if ($this->has_2fa_active($user)) { return; } //2FA activated users do not retrieve a score 325 326 if ($user) { update_user_meta($user->ID, 'wfls-last-captcha-score', $score); } 327 $stats = Controller_Settings::shared()->get_array(Controller_Settings::OPTION_CAPTCHA_STATS); 328 $int_score = min(max((int) ($score * 10), 0), 10); 329 $count = array_sum($stats['counts']); 330 $stats['counts'][$int_score]++; 331 $stats['avg'] = ($stats['avg'] * $count + $int_score) / ($count + 1); 332 Controller_Settings::shared()->set_array(Controller_Settings::OPTION_CAPTCHA_STATS, $stats); 333 } 334 335 /** 314 336 * Returns the active and inactive user counts. 315 337 * -
wordfence/tags/7.3.5/modules/login-security/classes/controller/wordfencels.php
r2104182 r2124102 125 125 } 126 126 } 127 128 if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_CAPTCHA_TEST_MODE) && Controller_CAPTCHA::shared()->enabled() && Controller_Permissions::shared()->can_manage_settings()) { 129 if (is_multisite()) { 130 add_action('network_admin_notices', array($this, '_recaptcha_test_notice')); 131 } 132 else { 133 add_action('admin_notices', array($this, '_recaptcha_test_notice')); 134 } 135 } 127 136 } 128 137 … … 135 144 } 136 145 146 public function _recaptcha_test_notice() { 147 echo '<div class="notice notice-warning"><p>' . sprintf(__('reCAPTCHA test mode is enabled. While enabled, login and registration requests will be checked for their score but will not be blocked if the score is below the minimum score. <a href="%s">Manage Settings</a>', 'wordfence-2fa'), esc_url(network_admin_url('admin.php?page=WFLS#top#settings'))) . '</p></div>'; 148 } 149 137 150 /** 138 151 * Installation/Uninstallation … … 151 164 } 152 165 delete_option($opt); 166 } 167 168 if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_DELETE_ON_DEACTIVATION)) { 169 Controller_DB::shared()->uninstall(); 153 170 } 154 171 } … … 243 260 } 244 261 wp_enqueue_script('wordfence-ls-admin', Model_Asset::js('admin.js'), array('jquery'), WORDFENCE_LS_VERSION); 262 if (!WORDFENCE_LS_FROM_CORE) { 263 wp_register_script('chart-js', Model_Asset::js('Chart.bundle.min.js'), array('jquery'), '2.4.0'); 264 wp_register_script('wordfence-select2-js', Model_Asset::js('wfselect2.min.js'), array('jquery'), WORDFENCE_LS_VERSION); 265 wp_register_style('wordfence-select2-css', Model_Asset::css('wfselect2.min.css'), array(), WORDFENCE_LS_VERSION); 266 } 267 wp_enqueue_script('chart-js'); 268 wp_enqueue_script('wordfence-select2-js'); 269 wp_enqueue_style('wordfence-select2-css'); 245 270 wp_enqueue_style('wordfence-ls-admin', Model_Asset::css('admin.css'), array(), WORDFENCE_LS_VERSION); 246 271 wp_enqueue_style('wordfence-ls-colorbox', Model_Asset::css('colorbox.css'), array(), WORDFENCE_LS_VERSION); 247 272 wp_enqueue_style('wordfence-ls-ionicons', Model_Asset::css('ionicons.css'), array(), WORDFENCE_LS_VERSION); 273 if (!WORDFENCE_LS_FROM_CORE) { wp_enqueue_style('wordfence-ls-font-awesome', Model_Asset::css('font-awesome.css'), array(), WORDFENCE_LS_VERSION); } 248 274 wp_localize_script('wordfence-ls-admin', 'WFLSVars', array( 249 275 'ajaxurl' => admin_url('admin-ajax.php'), … … 400 426 } 401 427 402 update_user_meta($user->ID, 'wfls-last-captcha-score', $score);428 Controller_Users::shared()->record_captcha_score($user, $score); 403 429 404 430 if (isset($_REQUEST['wfls-email-verification']) && !empty($_REQUEST['wfls-email-verification']) && is_string($_REQUEST['wfls-email-verification'])) { … … 422 448 $encrypted = Model_Symmetric::encrypt((string) $user->ID); 423 449 if ($encrypted) { 424 $jwt = new Model_JWT(array('user' => $encrypted), Controller_Time::time() + 60 * 15 /* minutes */);450 $jwt = new Model_JWT(array('user' => $encrypted), Controller_Time::time() + 60 * WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES); 425 451 $view = new Model_View('email/login-verification', array( 426 452 'siteName' => get_bloginfo('name', 'raw'), … … 618 644 619 645 if ($requireCAPTCHA) { 646 Controller_Users::shared()->record_captcha_score(null, $score); 647 620 648 if (!Controller_CAPTCHA::shared()->is_human($score)) { //Score is below the human threshold, block the user registration 621 649 $encryptedIP = Model_Symmetric::encrypt(Model_Request::current()->ip()); -
wordfence/tags/7.3.5/modules/login-security/views/options/option-captcha.php
r2089400 r2124102 18 18 <ul class="wfls-flex-vertical wfls-flex-align-left"> 19 19 <li> 20 <strong id="wfls-enable-auth-captcha-label"><?php _e('Enable reCAPTCHA on the login and user registration pages', 'wordfence- 2fa'); ?></strong>20 <strong id="wfls-enable-auth-captcha-label"><?php _e('Enable reCAPTCHA on the login and user registration pages', 'wordfence-ls'); ?></strong> 21 21 </li> 22 <li class="wfls-option-subtitle"><?php _e('Note: This feature requires a free site key and secret for the <a href="https://www.google.com/recaptcha/intro/v3.html" target="_blank" rel="noopener noreferrer">Google reCAPTCHA v3 Service</a>.', 'wordfence-2fa'); ?></li>22 <li class="wfls-option-subtitle"><?php printf(__('reCAPTCHA v3 does not make users solve puzzles or click a checkbox like previous versions. The only visible part is the reCAPTCHA logo. If a visitor\'s browser fails the CAPTCHA, Wordfence will send an email to the user\'s address with a link they can click to verify that they are a user of your site. You can read further details <a href="%s" target="_blank" rel="noopener noreferrer">in our documentation</a>.', 'wordfence-ls'), \WordfenceLS\Controller_Support::esc_supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_CAPTCHA)); ?></li> 23 23 </ul> 24 24 </li> … … 31 31 <table> 32 32 <tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($siteKeyValue); ?>" data-text-option="<?php echo esc_attr($siteKeyOptionName); ?>"> 33 <th id="wfls-enable-captcha-site-key-label" class="wfls-padding-add-bottom"><?php _e('reCAPTCHA v3 Site Key', 'wordfence '); ?></th>33 <th id="wfls-enable-captcha-site-key-label" class="wfls-padding-add-bottom"><?php _e('reCAPTCHA v3 Site Key', 'wordfence-ls'); ?></th> 34 34 <td class="wfls-option-text wfls-padding-add-bottom"><input type="text" name="recaptchaSiteKey" id="input-recaptchaSiteKey" class="wfls-form-control" value="<?php echo esc_attr($siteKeyValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td> 35 35 </tr> 36 36 <tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($secretValue); ?>" data-text-option="<?php echo esc_attr($secretOptionName); ?>"> 37 <th id="wfls-enable-captcha-secret-label"><?php _e('reCAPTCHA v3 Secret', 'wordfence '); ?></th>37 <th id="wfls-enable-captcha-secret-label"><?php _e('reCAPTCHA v3 Secret', 'wordfence-ls'); ?></th> 38 38 <td class="wfls-option-text"><input type="text" name="recaptchaSecret" id="input-recaptchaSecret" class="wfls-form-control" value="<?php echo esc_attr($secretValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td> 39 39 </tr> 40 40 </table> 41 </li> 42 </ul> 43 <ul class="wfls-option wfls-padding-no-top"> 44 <li class="wfls-option-spacer"></li> 45 <li class="wfls-option-title"> 46 <ul class="wfls-flex-vertical wfls-flex-align-left"> 47 <li class="wfls-option-subtitle"><?php _e('Note: This feature requires a free site key and secret for the <a href="https://www.google.com/recaptcha/intro/v3.html" target="_blank" rel="noopener noreferrer">Google reCAPTCHA v3 Service</a>.', 'wordfence-ls'); ?></li> 48 </ul> 41 49 </li> 42 50 </ul> -
wordfence/tags/7.3.5/modules/login-security/views/options/option-require-2fa.php
r2087795 r2124102 54 54 <span id="wfls-require-2fa-grace-period-label" class="wfls-padding-add-left wfls-padding-add-right"><?php _e('Grace period to require 2FA', 'wordfence'); ?> </span> 55 55 <input type="text" name="require2FAGracePeriod" id="input-require2FAGracePeriod" class="wfls-datetime wfls-form-control" placeholder="Enabled on..." data-value="<?php echo $currentGracePeriodDateValue; ?>" data-original-value="<?php echo $currentGracePeriodDateValue; ?>"<?php echo $currentGracePeriodEnabledValue ? '' : ' disabled'; ?>> 56 <div class="wfls-padding-add-left"><a href="#" id="wfls-send-grace-period-notification" class="wfls-btn wfls-btn-sm wfls-btn-default<?php echo (\WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_ADMIN) && \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED) && \WordfenceLS\Controller_Time::time() < \WordfenceLS\Controller_Settings::shared()->get_int(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD)) ? '' : ' wfls-disabled'; ?>"><?php _e('Send Notification', 'wordfence-2fa'); ?></a></div>57 56 </li> 57 </ul> 58 </li> 59 <li> 60 <ul class="wfls-option wfls-padding-no-top"> 61 <li class="wfls-option-spacer"></li> 62 <li class="wfls-option-spacer"></li> 63 <li><a href="#" id="wfls-send-grace-period-notification" class="wfls-btn wfls-btn-sm wfls-btn-default<?php echo (\WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_ADMIN) && \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED) && \WordfenceLS\Controller_Time::time() < \WordfenceLS\Controller_Settings::shared()->get_int(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD)) ? '' : ' wfls-disabled'; ?>"><?php _e('Send Notification', 'wordfence-2fa'); ?></a></li> 58 64 </ul> 59 65 </li> -
wordfence/tags/7.3.5/modules/login-security/views/settings/options.php
r2087795 r2124102 10 10 </div> 11 11 <div class="wfls-block-header-action wfls-block-header-action-text wfls-nowrap wfls-padding-add-right-responsive"> 12 <a href="#" id="wfls-cancel-changes" class="wfls-btn wfls-btn-sm wfls-btn-default wfls-disabled"><?php _e('Cancel Changes', 'wordfence-2fa'); ?></a> <a href="#" id="wfls-save-changes" class="wfls-btn wfls-btn-sm wfls-btn-primary wfls-disabled"><?php _e('Save Changes', 'wordfence-2fa'); ?></a>12 <a href="#" id="wfls-cancel-changes" class="wfls-btn wfls-btn-sm wfls-btn-default wfls-disabled"><?php _e('Cancel<span class="wfls-visible-sm-inline"> Changes</span>', 'wordfence-2fa'); ?></a> <a href="#" id="wfls-save-changes" class="wfls-btn wfls-btn-sm wfls-btn-primary wfls-disabled"><?php _e('Save<span class="wfls-visible-sm-inline"> Changes</span>', 'wordfence-2fa'); ?></a> 13 13 </div> 14 14 </div> … … 114 114 ?> 115 115 </li> 116 <li> 117 <?php 118 echo \WordfenceLS\Model_View::create('options/option-captcha-threshold', array( 119 ))->render(); 120 ?> 121 </li> 122 <li> 123 <?php 124 echo \WordfenceLS\Model_View::create('options/option-toggled', array( 125 'optionName' => \WordfenceLS\Controller_Settings::OPTION_CAPTCHA_TEST_MODE, 126 'enabledValue' => '1', 127 'disabledValue' => '0', 128 'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_CAPTCHA_TEST_MODE) ? '1': '0', 129 'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . __('Run reCAPTCHA in test mode', 'wordfence-2fa') . '</strong>'), 130 'subtitle' => __('While in test mode, reCAPTCHA will score login and registration requests but not actually block them. The scores will be recorded and can be used to select a human/bot threshold value.', 'wordfence-2fa'), 131 ))->render(); 132 ?> 133 </li> 116 134 <?php if (!WORDFENCE_LS_FROM_CORE): ?> 117 135 <li> … … 121 139 </li> 122 140 <?php endif; ?> 141 <li> 142 <?php 143 echo \WordfenceLS\Model_View::create('options/option-toggled', array( 144 'optionName' => \WordfenceLS\Controller_Settings::OPTION_DELETE_ON_DEACTIVATION, 145 'enabledValue' => '1', 146 'disabledValue' => '0', 147 'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_DELETE_ON_DEACTIVATION) ? '1': '0', 148 'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . __('Delete Login Security tables and data on deactivation', 'wordfence-2fa') . '</strong>'), 149 'subtitle' => __('If enabled, all settings and 2FA records will be deleted on deactivation. If later reactivated, all users that previously had 2FA active will need to set it up again.', 'wordfence-2fa'), 150 ))->render(); 151 ?> 152 </li> 123 153 </ul> 124 154 </div> -
wordfence/tags/7.3.5/modules/login-security/wordfence-login-security.php
r2107617 r2124102 27 27 define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading)); 28 28 29 define('WORDFENCE_LS_VERSION', '1.0.2'); 30 define('WORDFENCE_LS_BUILD_NUMBER', '1560795818'); 29 define('WORDFENCE_LS_VERSION', '1.0.3'); 30 define('WORDFENCE_LS_BUILD_NUMBER', '1563297204'); 31 32 if (!defined('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES')) { define('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES', 15); } 31 33 32 34 if (!WORDFENCE_LS_FROM_CORE) { -
wordfence/tags/7.3.5/readme.txt
r2107642 r2124102 5 5 Requires PHP: 5.3 6 6 Tested up to: 5.2 7 Stable tag: 7.3. 47 Stable tag: 7.3.5 8 8 9 9 Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more. … … 185 185 186 186 == Changelog == 187 188 = 7.3.5 - July 16, 2019 = 189 * Improvement: Improved tagging of the login endpoint for brute force protection. 190 * Improvement: Added additional information about reCAPTCHA to its setting control. 191 * Improvement: Added a constant that may be overridden to customize the expiration time of login verification email links. 192 * Improvement: reCAPTCHA keys are now tested on saving to prevent accidentally inputting a v2 key. 193 * Improvement: Added a setting to control the reCAPTCHA human/bot threshold. 194 * Improvement: Added a separate option to trigger removal of Login Security tables and data on deactivation. 195 * Improvement: Reworked the reCAPTCHA implementation to trigger the token check on login/registration form submission to avoid the token expiring. 196 * Fix: Widened the reCAPTCHA key fields to allow the full keys to be visible. 197 * Fix: Fixed encoding of the ellipsis character when reporting malware finds. 198 * Fix: Disabling the IP blacklist once again correctly clears the block cache. 199 * Fix: Addressed an issue when outbound UDP connections are blocked where the NTP check could log an error. 200 * Fix: Added handling for reCAPTCHA's JavaScript failing to load, which previously blocked logging in. 201 * Fix: Fixed the functionality of the button to send 2FA grace period notifications. 202 * Fix: Fixed a missing icon for some help links when running in standalone mode. 187 203 188 204 = 7.3.4 - June 17, 2019 = -
wordfence/tags/7.3.5/views/dashboard/options-group-general.php
r2057777 r2124102 131 131 'value' => wfConfig::get('deleteTablesOnDeact') ? 1 : 0, 132 132 'title' => __('Delete Wordfence tables and data on deactivation', 'wordfence'), 133 'subtitle' => __('Note: This does not include Login Security settings and tables. An option to delete those must be selected separately on the Login Security settings page.', 'wordfence'), 133 134 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_DELETE_DEACTIVATION), 134 135 ))->render(); -
wordfence/tags/7.3.5/wordfence.php
r2107617 r2124102 5 5 Description: Wordfence Security - Anti-virus, Firewall and Malware Scan 6 6 Author: Wordfence 7 Version: 7.3. 47 Version: 7.3.5 8 8 Author URI: http://www.wordfence.com/ 9 9 Network: true … … 16 16 exit; 17 17 } 18 define('WORDFENCE_VERSION', '7.3. 4');19 define('WORDFENCE_BUILD_NUMBER', '156 0795818');18 define('WORDFENCE_VERSION', '7.3.5'); 19 define('WORDFENCE_BUILD_NUMBER', '1563297204'); 20 20 define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) : 21 21 basename(dirname(__FILE__)) . '/' . basename(__FILE__)); -
wordfence/trunk/images/wf-horizontal.svg
r1928218 r2124102 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'> 3 <svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.4142" version="1.1" viewBox="0 0 2230 399" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero"><path d="m764.54 369.3l4.3-1.8c1.4 3.8 3.3 6.6 5.5 8.4 2.3 1.8 5 2.7 8.3 2.7 3.4 0 6.1-0.9 8.1-2.8 2.1-1.9 3.1-4.4 3.1-7.5 0-2.5-0.7-4.5-2-6.1s-3.6-3.1-6.8-4.4c-1.8-0.7-4.1-1.5-7-2.5s-4.8-1.7-5.6-2.2c-2.6-1.5-4.4-3.1-5.5-4.8s-1.6-3.8-1.6-6.2c0-4.4 1.4-7.9 4.1-10.5 2.7-2.5 6.5-3.8 11.2-3.8 4.2 0 7.7 1 10.5 3.1 2.7 2.1 4.8 5.3 6.3 9.6l-4.2 1.3c-1.3-3.3-3-5.8-5.1-7.4s-4.6-2.4-7.7-2.4c-3 0-5.4 0.9-7.2 2.6s-2.8 3.9-2.8 6.7c0 2.1 0.6 3.8 1.8 5.2s3 2.6 5.5 3.5c1 0.4 2.4 0.9 4.2 1.5 5.2 1.8 8.6 3.2 10.1 4.2 2.4 1.6 4.2 3.3 5.3 5.2s1.6 4.1 1.6 6.7c0 4.7-1.5 8.4-4.4 11.2-3 2.8-6.9 4.1-12 4.1-4.5 0-8.2-1.1-11.2-3.3-2.7-2.2-5.1-5.6-6.8-10.3z" fill="#2d2d2d"/><path d="m839.04 370.9l3.4 1.8c-1.7 3.5-3.7 6-6 7.6s-5.1 2.4-8.5 2.4c-4.8 0-8.6-1.8-11.5-5.3-2.8-3.6-4.3-8.3-4.3-14.4 0-6.2 1.4-11.2 4.2-14.9s6.6-5.5 11.4-5.5c4.7 0 8.3 1.6 10.7 4.8 2.5 3.2 3.7 7.8 3.7 13.9v1.2h-25.5c0 5.3 1 9.3 3 12.1s4.8 4.2 8.5 4.2c2.4 0 4.5-0.6 6.2-1.9 1.8-1 3.3-3.1 4.7-6zm-1.1-11.6c-0.1-4.1-1-7.2-2.8-9.5-1.8-2.2-4.2-3.4-7.3-3.4s-5.6 1.1-7.6 3.4-3.1 5.4-3.5 9.5h21.2z" fill="#2d2d2d"/><path d="m880.74 370.9l3.5 1.9c-1.7 3.5-3.6 6-5.8 7.5-2.2 1.6-4.8 2.3-8 2.3-4.8 0-8.7-1.8-11.5-5.3s-4.2-8.3-4.2-14.4c0-6.2 1.4-11.2 4.2-14.9s6.5-5.5 11.1-5.5c3.3 0 6.2 0.9 8.5 2.6s4.1 4.3 5.5 7.8l-4 1.6c-1-2.8-2.4-4.8-4-6.1s-3.6-2-5.9-2c-3.4 0-6 1.4-7.9 4.3-1.9 2.8-2.8 6.8-2.8 11.9 0 5.3 1 9.3 2.9 12.2 1.9 2.8 4.7 4.3 8.2 4.3 2.3 0 4.3-0.6 5.9-1.9 1.4-1.3 2.9-3.4 4.3-6.3z" fill="#2d2d2d"/><path d="m927.84 343.4v38.6h-4.6v-6.1c-2.3 2.2-4.5 3.9-6.7 5s-4.4 1.7-6.6 1.7c-3.5 0-6.1-1-7.8-3.1s-2.6-5.2-2.6-9.3v-26.9h4.6v25.3c0 3.8 0.5 6.4 1.6 7.9 1.1 1.4 2.9 2.2 5.6 2.2 1.9 0 3.9-0.6 5.9-1.8s4.1-3 6.1-5.4v-28.1h4.5z" fill="#2d2d2d"/><path d="m947.64 382.1v-38.6h4.6v6.7h0.4c1.3-2.6 2.9-4.4 4.6-5.6 1.8-1.2 3.9-1.8 6.4-1.8h0.2v4.4h-0.6c-2.7 0-5 0.9-6.8 2.5-1.8 1.7-3.2 4.3-4.3 7.9v24.5h-4.5z" fill="#2d2d2d"/><path d="m977.64 335.3v-6.5h5.5v6.5h-5.5zm0.5 46.8v-38.6h4.6v38.6h-4.6z" fill="#2d2d2d"/><path d="m1002.8 382.1v-38.6h4.6v6.1c2.3-2.2 4.5-3.9 6.7-5.1 2.2-1.1 4.4-1.7 6.6-1.7 3.5 0 6.1 1 7.8 3.1s2.6 5.2 2.6 9.3v26.9h-4.6v-25.2c0-3.9-0.5-6.5-1.6-7.9s-2.9-2.1-5.6-2.1c-1.9 0-3.9 0.6-5.9 1.8s-4 3-6.1 5.4v28.1h-4.5v-0.1z" fill="#2d2d2d"/><path d="m1052.8 366.9v-0.4c-1.6-1.4-2.7-3-3.5-4.7s-1.1-3.6-1.1-5.7c0-3.9 1.3-7.1 3.9-9.7s5.9-3.9 9.9-3.9c1.8 0 3.5 0.3 5 0.7 1.5 0.5 2.9 1.2 4.3 2.2 1.2-1.2 2.4-2 3.7-2.6s2.6-0.9 4.1-0.9v4.3h-0.9c-1 0-1.9 0.1-2.7 0.3s-1.5 0.6-2.1 1.1c0.8 1.2 1.4 2.5 1.8 3.8s0.6 2.7 0.6 4.2c0 4.2-1.2 7.5-3.7 10.1s-5.7 3.9-9.6 3.9c-0.9 0-1.9-0.1-2.8-0.2-1-0.2-2-0.4-3-0.8-1.4 0.4-2.5 0.8-3.2 1.4-0.8 0.6-1.1 1.3-1.1 2 0 1.7 3.2 2.8 9.5 3.1 2 0.1 3.5 0.2 4.7 0.3 4.2 0.3 7.3 1.3 9.5 2.9 2.2 1.7 3.3 4 3.3 6.9 0 3.5-1.4 6.2-4.3 8.1-2.9 1.8-7.1 2.8-12.5 2.8-5 0-8.9-0.9-11.8-2.6-2.8-1.7-4.2-4-4.2-7.1 0-1.6 0.5-3 1.4-4.2s2.4-2.4 4.3-3.5v-0.8c-1.3-0.4-2.3-1-3-1.8-0.7-0.9-1.1-1.9-1.1-3s0.4-2.2 1.2-3.2c0.6-0.9 1.8-1.9 3.4-3zm4.4 12.3c-2.2 1-3.8 2-4.9 3.2s-1.6 2.5-1.6 3.9c0 2 1 3.6 3.2 4.7 2.1 1.1 5 1.7 8.8 1.7 3.9 0 7-0.6 9.2-1.9s3.3-3 3.3-5.2c0-2.3-1.3-4-3.9-5-2.8-0.9-7.4-1.4-14.1-1.4zm-4.7-23.1c0 2.8 0.9 5.2 2.8 7.2s4.1 3 6.7 3c2.7 0 5-1 6.8-2.9s2.7-4.3 2.7-7.3c0-2.9-0.9-5.3-2.7-7.2s-4-2.8-6.8-2.8c-2.6 0-4.9 1-6.7 2.9-1.9 2-2.8 4.3-2.8 7.1z" fill="#2d2d2d"/><path d="m1131 381.9l-13.4-38.4h4.6l11.4 32.9 11.3-32.9h4.4l-14.5 41.7c-1.4 4-3 6.9-4.9 8.5s-4.4 2.4-7.5 2.4c-0.7 0-1.4 0-2-0.1-0.7 0-1.3-0.1-2-0.2v-3.7c0.5 0.1 1.1 0.2 1.6 0.3 0.5 0 1.1 0.1 1.6 0.1 2.7 0 4.8-0.8 6.2-2.4 1.4-1.8 2.5-4.5 3.2-8.2z" fill="#2d2d2d"/><path d="m1160.3 362.7c0-6.1 1.4-11 4.3-14.5 2.9-3.6 6.7-5.4 11.5-5.4s8.6 1.8 11.5 5.4 4.3 8.4 4.3 14.5-1.4 11-4.3 14.6-6.7 5.4-11.5 5.4-8.6-1.8-11.5-5.4c-2.8-3.6-4.3-8.5-4.3-14.6zm4.6 0c0 5.1 1 9.1 2.9 12 2 2.9 4.7 4.3 8.3 4.3 3.5 0 6.2-1.4 8.2-4.3 2-2.8 2.9-6.8 2.9-12 0-5.1-1-9.1-2.9-11.9-2-2.8-4.7-4.2-8.2-4.2s-6.3 1.4-8.3 4.3c-1.9 2.7-2.9 6.7-2.9 11.8z" fill="#2d2d2d"/><path d="m1236.2 343.4v38.6h-4.6v-6.1c-2.3 2.2-4.5 3.9-6.7 5s-4.4 1.7-6.6 1.7c-3.5 0-6.1-1-7.8-3.1-1.8-2.1-2.6-5.2-2.6-9.3v-26.9h4.6v25.3c0 3.8 0.5 6.4 1.6 7.9 1.1 1.4 2.9 2.2 5.5 2.2 1.9 0 3.9-0.6 6-1.8 2-1.2 4.1-3 6.1-5.4v-28.1h4.5z" fill="#2d2d2d"/><path d="m1256 382.1v-38.6h4.6v6.7h0.4c1.3-2.6 2.9-4.4 4.6-5.6 1.8-1.2 3.9-1.8 6.4-1.8h0.2v4.4h-0.6c-2.7 0-5 0.9-6.8 2.5-1.8 1.7-3.2 4.3-4.3 7.9v24.5h-4.5z" fill="#2d2d2d"/><path d="m1324.1 382.1l-13.8-53.7h9.9l7.7 30.9c0.3 1.2 0.6 2.8 1 4.9s0.8 4.4 1.1 7.1c0.2-2.7 0.8-6.1 1.8-10.2 0.2-0.7 0.3-1.2 0.4-1.5l7.8-31.2h8.7l7.4 30.9c0.3 1.2 0.6 2.8 1 4.9s0.8 4.5 1.2 7.2c0.1-1.7 0.4-3.6 0.7-5.5s0.8-4 1.3-6.2l7.8-31.2h9.9l-13.8 53.7h-11.2l-6.7-26.9c-0.6-2.5-1.1-4.7-1.4-6.6-0.4-1.9-0.6-3.7-0.8-5.4-0.3 2.5-0.7 4.7-1 6.7-0.4 2-0.7 3.7-1 5.1l-6.9 27h-11.1z" fill="#00719e"/><path d="m1385.4 362.7c0-6.3 1.5-11.2 4.4-14.8s7-5.3 12.2-5.3 9.3 1.8 12.2 5.3 4.4 8.5 4.4 14.8-1.5 11.2-4.4 14.8c-2.9 3.5-7 5.3-12.2 5.3s-9.2-1.8-12.2-5.4c-2.9-3.5-4.4-8.4-4.4-14.7zm9.3 0c0 4.1 0.6 7.2 1.8 9.2s3 3 5.5 3 4.3-1 5.5-3 1.8-5.1 1.8-9.2-0.6-7.2-1.8-9.2-3-3-5.5-3c-2.4 0-4.3 1-5.5 3-1.2 2.1-1.8 5.1-1.8 9.2z" fill="#00719e"/><path d="m1432.9 382.1v-38.7h8.7v6.4c1.3-2.3 2.7-4.1 4.3-5.3s3.4-1.8 5.3-1.8h0.7c0.2 0 0.3 0.1 0.4 0.1v9.5h-0.4c-2.1 0-3.9 0.5-5.6 1.6-1.7 1-3.1 2.5-4.2 4.5v23.7h-9.2z" fill="#00719e"/><path d="m1488.7 377.9c-1.4 1.7-2.9 2.9-4.6 3.7s-3.6 1.2-5.8 1.2c-4.4 0-8.1-1.9-10.9-5.6s-4.2-8.6-4.2-14.5c0-6 1.4-10.8 4.1-14.5s6.3-5.6 10.7-5.6c1.9 0 3.7 0.4 5.2 1 1.5 0.7 2.9 1.8 4.3 3.4v-18.7h8.9v44.7c0 0.9 0 2.2 0.1 3.7s0.2 3.3 0.3 5.3h-7.1l-1-4.1zm-1.3-6.1v-18.4c-1.3-1.2-2.5-2-3.5-2.5-1.1-0.5-2.2-0.8-3.3-0.8-2.6 0-4.6 1.1-6 3.3s-2.2 5.3-2.2 9.2c0 4 0.7 7 2.2 9.2 1.4 2.2 3.5 3.2 6.1 3.2 1.2 0 2.3-0.2 3.4-0.8 0.9-0.4 2-1.2 3.3-2.4z" fill="#00719e"/><path d="m1514.6 382.1v-53.7h19.2c6.3 0 11 1.3 14.1 4 3.1 2.6 4.6 6.6 4.6 12 0 5.2-1.5 9.2-4.5 12-3 2.7-7.5 4.1-13.3 4.1h-10v21.7h-10.1v-0.1zm10.2-30.3h7.5c3.7 0 6.3-0.6 7.9-1.7 1.5-1.2 2.3-3.1 2.3-5.8s-0.8-4.7-2.3-5.8c-1.5-1.2-4.1-1.7-7.9-1.7h-7.5v15z" fill="#00719e"/><path d="m1566.4 382.1v-38.7h8.7v6.4c1.3-2.3 2.7-4.1 4.3-5.3s3.4-1.8 5.3-1.8h0.7c0.2 0 0.3 0.1 0.4 0.1v9.5h-0.4c-2.1 0-3.9 0.5-5.6 1.6-1.7 1-3.1 2.5-4.2 4.5v23.7h-9.2z" fill="#00719e"/><path d="m1628.3 374.5c-1.5 2.7-3.5 4.8-6.1 6.2s-5.7 2.1-9.3 2.1c-5.2 0-9.2-1.8-12.1-5.3s-4.3-8.4-4.3-14.8c0-6.3 1.4-11.3 4.3-14.8 2.9-3.6 6.9-5.3 12-5.3s9 1.7 11.8 5.2c2.8 3.4 4.2 8.3 4.2 14.5v2h-23.2c0.1 3.7 0.8 6.4 2.1 8.2 1.4 1.8 3.4 2.8 6.1 2.8 1.7 0 3.1-0.4 4.4-1.2 1.2-0.8 2.4-2.1 3.5-3.8l6.6 4.2zm-22.7-16.8h14.2c0-2.6-0.6-4.6-1.9-6s-3-2.2-5.2-2.2c-2.1 0-3.7 0.7-5 2.1-1.2 1.5-1.9 3.5-2.1 6.1z" fill="#00719e"/><path d="m1639.9 375l6.2-4.9c1.5 1.9 2.9 3.3 4.4 4.2 1.4 0.9 2.9 1.4 4.5 1.4s3-0.4 3.9-1.1c1-0.8 1.4-1.8 1.4-3.1 0-1.9-2-3.7-6.1-5.2-0.4-0.2-0.8-0.3-1-0.4-4.8-1.8-8.1-3.6-9.7-5.3s-2.4-3.9-2.4-6.6c0-3.3 1.2-6 3.7-8.2 2.5-2.1 5.7-3.2 9.6-3.2 2.6 0 5 0.5 7.2 1.4 2.1 1 4.1 2.5 5.9 4.5l-5.8 5c-1.2-1.3-2.5-2.3-3.7-2.9s-2.5-0.9-3.8-0.9c-1.5 0-2.7 0.3-3.6 1s-1.3 1.6-1.3 2.8c0 1.4 2 2.9 6.1 4.4 1.1 0.4 1.9 0.7 2.6 1 4.1 1.6 6.9 3.3 8.4 5 1.5 1.8 2.2 4.1 2.2 7.1 0 3.6-1.2 6.5-3.7 8.6-2.5 2.2-5.7 3.3-9.8 3.3-3.2 0-6-0.6-8.4-1.9-2.5-1.3-4.8-3.2-6.8-6z" fill="#00719e"/><path d="m1679.8 375l6.2-4.9c1.5 1.9 2.9 3.3 4.4 4.2 1.4 0.9 3 1.4 4.5 1.4 1.7 0 3-0.4 3.9-1.1 1-0.8 1.4-1.8 1.4-3.1 0-1.9-2-3.7-6.1-5.2-0.4-0.2-0.8-0.3-1-0.4-4.8-1.8-8.1-3.6-9.7-5.3s-2.4-3.9-2.4-6.6c0-3.3 1.2-6 3.7-8.2 2.5-2.1 5.7-3.2 9.6-3.2 2.6 0 5 0.5 7.2 1.4 2.1 1 4.1 2.5 5.9 4.5l-5.8 5c-1.2-1.3-2.5-2.3-3.7-2.9s-2.5-0.9-3.8-0.9c-1.5 0-2.7 0.3-3.6 1s-1.3 1.6-1.3 2.8c0 1.4 2 2.9 6.1 4.4 1.1 0.4 1.9 0.7 2.6 1 4.1 1.6 6.9 3.3 8.4 5 1.5 1.8 2.2 4.1 2.2 7.1 0 3.6-1.2 6.5-3.7 8.6-2.5 2.2-5.7 3.3-9.8 3.3-3.2 0-6-0.6-8.4-1.9-2.5-1.3-4.8-3.2-6.8-6z" fill="#00719e"/><path d="m1760.3 382.1l-11.3-38.6h4.5l9.3 31.5 9.3-31.5h4.1l9.3 32 9.2-32h4.4l-11.3 38.6h-4.4l-9.2-31-9.4 31h-4.5z" fill="#2d2d2d"/><path d="m1838 370.9l3.4 1.8c-1.7 3.5-3.7 6-6 7.6s-5.2 2.4-8.5 2.4c-4.8 0-8.6-1.8-11.5-5.3-2.8-3.6-4.3-8.3-4.3-14.4 0-6.2 1.4-11.2 4.2-14.9s6.6-5.5 11.3-5.5 8.3 1.6 10.8 4.8 3.7 7.8 3.7 13.9v1.2h-25.5c0 5.3 1 9.3 3 12.1s4.8 4.2 8.5 4.2c2.5 0 4.5-0.6 6.2-1.9 1.8-1 3.3-3.1 4.7-6zm-1.1-11.6c-0.1-4.1-1-7.2-2.8-9.5-1.8-2.2-4.2-3.4-7.3-3.4s-5.6 1.1-7.6 3.4-3.1 5.4-3.5 9.5h21.2z" fill="#2d2d2d"/><path d="m1856.8 382.1c0.1-0.6 0.2-1.3 0.2-2s0.1-1.9 0.1-3.6v-47.7h4.6v19.7h0.4c1.8-1.9 3.6-3.4 5.5-4.3s3.9-1.4 6.1-1.4c4.2 0 7.5 1.8 10 5.4s3.8 8.4 3.8 14.5-1.3 11-3.8 14.6-5.9 5.4-10 5.4c-2.2 0-4.2-0.5-6.1-1.4s-3.7-2.3-5.5-4.3h-0.4l-1.2 5h-3.7v0.1zm4.9-10.4c1.9 2.5 3.8 4.4 5.6 5.5s3.7 1.7 5.7 1.7c3.2 0 5.6-1.4 7.3-4.2s2.6-6.8 2.6-12-0.9-9.2-2.6-12-4.2-4.3-7.3-4.3c-1.9 0-3.8 0.6-5.6 1.8s-3.7 3-5.6 5.5v18h-0.1z" fill="#2d2d2d"/><path d="m1902.5 372.4c1.7 2.2 3.5 3.9 5.5 5 1.9 1.1 4 1.7 6.2 1.7 2.4 0 4.3-0.7 5.8-2s2.2-3 2.2-5.1c0-2.9-2.9-5.5-8.8-7.6-0.5-0.2-0.9-0.3-1.1-0.4-4.8-1.8-8-3.4-9.6-5-1.5-1.5-2.3-3.6-2.3-6 0-3 1.1-5.5 3.4-7.4s5.3-2.9 9-2.9c2.5 0 4.9 0.6 7 1.8 2.2 1.2 4.1 3 5.8 5.3l-3.2 2.4c-1.5-2-3.1-3.5-4.8-4.4s-3.5-1.4-5.7-1.4c-2.1 0-3.7 0.6-5 1.8-1.3 1.1-1.9 2.7-1.9 4.6 0 2.5 2.8 4.8 8.4 6.9 0.8 0.3 1.4 0.5 1.8 0.7 4.6 1.7 7.7 3.4 9.2 5 1.6 1.6 2.3 3.7 2.3 6.3 0 3.3-1.2 5.9-3.6 8s-5.6 3.1-9.5 3.1c-3 0-5.7-0.6-8.1-1.9-2.4-1.2-4.5-3.1-6.5-5.8l3.5-2.7z" fill="#2d2d2d"/><path d="m1942.8 335.3v-6.5h5.6v6.5h-5.6zm0.5 46.8v-38.6h4.6v38.6h-4.6z" fill="#2d2d2d"/><path d="m1973.3 374.8c0 1.5 0.3 2.6 1 3.3s1.7 1.1 3.2 1.1c0.5 0 1 0 1.6-0.1s1.4-0.3 2.5-0.6v3.7c-1 0.3-1.9 0.4-2.7 0.6-0.9 0.1-1.7 0.2-2.5 0.2-2.6 0-4.6-0.7-5.8-2s-1.9-3.4-1.9-6.3v-27.4h-5.7v-3.7h5.7v-11.5h4.6v11.5h8.1v3.7h-8.1v27.5z" fill="#2d2d2d"/><path d="m2019.1 370.9l3.4 1.8c-1.7 3.5-3.7 6-6 7.6s-5.1 2.4-8.5 2.4c-4.8 0-8.6-1.8-11.5-5.3-2.8-3.6-4.3-8.3-4.3-14.4 0-6.2 1.4-11.2 4.2-14.9s6.6-5.5 11.3-5.5 8.3 1.6 10.8 4.8 3.7 7.8 3.7 13.9v1.2h-25.5c0 5.3 1 9.3 3 12.1s4.8 4.2 8.5 4.2c2.5 0 4.5-0.6 6.2-1.9 1.7-1 3.3-3.1 4.7-6zm-1.2-11.6c-0.1-4.1-1-7.2-2.8-9.5-1.8-2.2-4.2-3.4-7.3-3.4s-5.6 1.1-7.6 3.4-3.1 5.4-3.5 9.5h21.2z" fill="#2d2d2d"/><path d="m1440.3 254.3v34.2h-92.2v-34.2h21.5v-80.1h-19.9v-34.2h19.9v-13.7c0-15.6 4.8-28.7 14.5-39.2s24-15.7 43.2-15.7c23.2 0 39.7 7 49.5 20.9l-34.4 26.8c-3.1-10.6-7.5-16-13.2-16-8.2 0-12.3 6.9-12.3 20.6v16.3h23.3v34.2h-23.3v80.1h23.4zm140-10.6l36.8 11.8c-15.4 24.2-39.6 36.3-72.4 36.3-26.2 0-46.6-6.9-61.3-20.7s-22-32-22-54.5c0-22.9 7.6-42 22.7-57.4 15.1-15.3 34.4-23 57.8-23 17 0 31.7 4.3 44 12.9 12.4 8.6 21 19.3 25.8 32.1s7.2 27 7.2 42.8h-110.6c0.7 13.5 5 23.1 12.8 28.7s16.1 8.4 24.8 8.4c11.4 0.1 22.9-5.8 34.4-17.4zm-9-46c-1.1-8.3-4.3-15.3-9.7-21.2-5.4-5.8-12.7-8.7-22-8.7-17.4 0-27.5 10-30.4 29.9h62.1zm69.5-23.5v-34.2h70.1v13.8c14.3-10.7 28.8-16.1 43.6-16.1 30 0 44.9 19.1 44.9 57.4v59.2h22.4v34.2h-69.8v-89.9c0-8.1-1.1-13.6-3.3-16.6s-5.8-4.4-10.8-4.4c-8.8 0-17.8 3.2-27 9.7v67h22.8v34.2h-92.9v-34.2h22.7v-80.1h-22.7zm349.7-34.2v60.3h-33.7c-7.7-16.6-19.7-24.8-36-24.8-10.4 0-18.7 3.5-24.9 10.4s-9.3 16.1-9.3 27.7c0 14 3.3 24.4 9.8 31.1s14.6 10 24.1 10c7.6 0 14.7-2.2 21.5-6.5 6.7-4.3 12.2-10.1 16.3-17.3l36.8 16.2c-13.7 29.9-37.7 44.9-72.1 44.9-25.9 0-46.5-7.1-61.9-21.2s-23.1-33-23.1-56.6 7.5-42.3 22.6-55.9c15.1-13.7 32.6-20.5 52.7-20.5 16.1 0 31 4.9 44.9 14.6v-12.3h32.3v-0.1zm143.1 103.7l36.8 11.8c-15.4 24.2-39.6 36.3-72.4 36.3-26.2 0-46.6-6.9-61.3-20.7s-22-32-22-54.5c0-22.9 7.6-42 22.7-57.4 15.1-15.3 34.4-23 57.8-23 17 0 31.7 4.3 44 12.9 12.4 8.6 21 19.3 25.8 32.1s7.2 27 7.2 42.8h-110.6c0.7 13.5 5 23.1 12.8 28.7s16.1 8.4 24.8 8.4c11.4 0.1 22.8-5.8 34.4-17.4zm-9-46c-1.1-8.3-4.3-15.3-9.7-21.2-5.4-5.8-12.7-8.7-22-8.7-17.4 0-27.5 10-30.4 29.9h62.1z" fill="#2d2d2d"/><path d="m639.74 289.8l-60.9-178.7h-22.5v-36h96.2v36h-22.1l34.7 102.5 32.5-102.5h-19.3v-36h76.7v36h-19.8l35 102.5 33.6-102.5h-21.3v-36h85.4v36h-23.2l-58.9 178.7h-39.9l-33.6-97.4-31.8 97.4h-40.8zm286.5 2c-21.9 0-40.4-6.9-55.4-20.8-15.1-13.9-22.6-32.8-22.6-57 0-24.1 7.5-43.1 22.6-57s33.6-20.8 55.4-20.8c22 0 40.5 6.9 55.5 20.8s22.5 32.9 22.5 57c0 23.8-7.4 42.7-22.3 56.8-14.8 14-33.4 21-55.7 21zm-0.1-36.8c8.8 0 15.9-3.4 21.4-10.1s8.2-17.3 8.2-31.8c0-12.7-2.7-22.6-8-29.7s-12.5-10.7-21.6-10.7c-19.5 0-29.3 14.1-29.3 42.3 0 11.6 2.4 21.1 7.3 28.6 4.8 7.7 12.2 11.4 22 11.4zm203.1-0.7v34.2h-104.5v-34.2h27.4v-80.1h-25.8v-34.2h69.2v37.7c2.7-10.8 8.7-20.2 18.2-28.1s20.6-11.9 33.5-11.9c2.1 0 4.7 0.1 7.7 0.2v44.8c-12 0-21.7 1.3-29.3 4s-13.8 8.5-18.7 17.5-7.4 19.6-7.4 31.9v18.2h29.7zm218.7 0v34.2h-71.8v-17.7c-13.2 13.2-27.5 19.8-42.9 19.8-18.5 0-33.9-7.5-46-22.5-12.2-15-18.3-33.2-18.3-54.6 0-21.7 6.2-40 18.7-54.8 12.5-14.9 27.7-22.3 45.7-22.3 17.3 0 31.5 6.7 42.8 20.2v-47.3h-23.2v-34.2h70.6v179.2h24.4zm-71.3-40.4c0-14.2-3.1-24.3-9.1-30.4-6.1-6-13-9.1-20.8-9.1-9.3 0-16.5 3.6-21.6 10.8s-7.6 16.7-7.6 28.5c0 11.1 2.5 20.5 7.5 28.1s12.3 11.4 21.8 11.4c7.9 0 14.8-3.1 20.8-9.3 6-6 9-16.1 9-30z" fill="#00719e"/></g><g fill="#2d2d2d" fill-rule="nonzero"><path d="m2179.9 165.6v-27.2h-8.6v-5.4h23.3v5.4h-8.6v27.2h-6.1z"/><path d="m2199.2 165.6v-32.6h8.8l4.7 15.8c0.4 1.4 0.8 2.8 1.1 4.2s0.5 2.7 0.7 4c0.3-1.2 0.6-2.5 0.9-3.7 0.3-1.3 0.7-2.7 1.2-4.3l4.8-15.9h8.4v32.6h-5.3v-27.4l-0.9 3.6c-0.3 1.2-0.7 2.4-1 3.6l-5.9 20.1h-4.5l-5.8-20.1c-0.6-2.1-1-3.6-1.3-4.6-0.2-1-0.5-1.8-0.6-2.6v27.3h-5.3z"/></g><clipPath id="b"><path d="m488.74 70.6c-119.9-3.9-226.9-65.2-235.4-70.2v-0.4s-111.1 66.5-236 70.6c0 0-43.5 163 7.3 327.9h456.9c50.7-164.9 7.2-327.9 7.2-327.9z"/></clipPath><g clip-path="url(#b)" fill-rule="nonzero"><path d="m24.539 398.6h228.8v-398.6s-111.1 66.5-236 70.6c-0.1 0-43.6 163 7.2 328z" fill="#00719e"/><path d="m488.74 70.6c-119.9-3.9-226.9-65.2-235.4-70.2v398.1h228.1c50.8-164.9 7.3-327.9 7.3-327.9z" fill="#008dc2"/></g><clipPath id="a"><path d="m488.74 70.6c-119.9-3.9-226.9-65.2-235.4-70.2v-0.4s-111.1 66.5-236 70.6c0 0-43.5 163 7.3 327.9h456.9c50.7-164.9 7.2-327.9 7.2-327.9z"/></clipPath><g clip-path="url(#a)" fill="#fff" fill-rule="nonzero"><path d="m537.94 363.5c-135.5-83.6-283.1-78.1-284.6-78l-0.3-6c0.4 0 38-1.6 92.1 7.4 49.8 8.2 124.3 27.3 196 71.5l-3.2 5.1z"/><path d="m543.04 338.2c-138-85.1-288.1-79.5-289.6-79.4l-0.4-9.2c1.6-0.1 39-1.6 94.3 7.5 51 8.4 127.2 28 200.6 73.2l-4.9 7.9z"/><path d="m-32.061 363.5c135.5-83.6 283.1-78.1 284.6-78l0.3-6c-0.4 0-38-1.6-92.1 7.4-49.8 8.2-124.3 27.3-196 71.5l3.2 5.1z"/><path d="m-37.161 338.2c138-85.1 288.1-79.5 289.6-79.4l0.4-9.2c-1.6-0.1-39-1.6-94.3 7.5-51 8.4-127.2 28-200.6 73.2l4.9 7.9z"/><path d="m326.14 530.9c-67.8-219.6-60.2-369.5-58.8-389.9 2.9-3.3 4.7-7.7 4.7-12.4 0-0.9-0.1-2.6-0.2-2.6h9.5l-28.1-68-27.9 68h9.3c-0.1 0-0.2 1.7-0.2 2.6 0 4.8 1.8 9.3 4.9 12.6 1.5 21.1 8.9 170.7-58.8 389.8-4.1 13.4 34.3 20.1 72.7 20.1 39.1-0.1 77-6.8 72.9-20.2z"/><path d="m181.04 163.9l-16.9-36.6-17.2 36.6h10v252h14v-252h10.1z"/><path d="m113.04 189.9l-12.8-32.8-13.3 32.8h7v223h12v-223h7.1z"/><path d="m47.939 212.9l-11.8-28.9-12.2 28.9h7v198h10v-198h7z"/><path d="m324.94 163.9l16.9-36.6 17.1 36.6h-10v252h-14v-252h-10z"/><path d="m392.94 189.9l12.8-32.8 13.2 32.8h-7v223h-12v-223h-7z"/><path d="m458.04 212.9l11.7-28.9 12.3 28.9h-7.1v198h-10v-198h-6.9z"/></g></svg> 1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 3 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 4 viewBox="0 0 2230 399" style="enable-background:new 0 0 2230 399;" xml:space="preserve"> 5 <style type="text/css"> 6 .st0{fill:#00719E;} 7 .st1{fill:#2E2E2E;} 8 .st2{fill:#FFFFFF;} 9 .st3{fill:#218DC1;} 10 .st4{fill:#1A719D;} 11 .st5{fill:#2B2C2B;} 12 </style> 13 <g> 14 <path d="M772.6,373.8l2.6-2.9c5.8,5.3,11.1,7.8,18.8,7.8c7.9,0,13.3-4.4,13.3-10.4v-0.2c0-5.6-2.9-8.8-14.9-11.2 15 c-12.6-2.6-17.7-6.8-17.7-14.8V342c0-7.8,7.1-13.8,16.9-13.8c7.7,0,12.7,2.1,18,6.4l-2.5,3.1c-5-4.3-9.9-5.9-15.7-5.9 16 c-7.7,0-12.8,4.4-12.8,9.9v0.2c0,5.6,2.9,8.9,15.3,11.5c12.2,2.5,17.3,6.8,17.3,14.5v0.2c0,8.5-7.3,14.3-17.4,14.3 17 C785.3,382.3,778.9,379.5,772.6,373.8"/> 18 <path d="M853,360.6c-0.5-7.7-5-14.9-13.7-14.9c-7.6,0-13.4,6.4-14.1,14.9H853z M821.3,362.4v-0.2c0-11.1,7.8-20,18.2-20 19 c10.7,0,17.6,8.7,17.6,20c0,0.7,0,0.9-0.1,1.5h-31.7c0.7,9.5,7.5,15.1,15,15.1c5.9,0,10-2.6,13.1-6l2.6,2.3 20 c-3.9,4.2-8.5,7.2-15.8,7.2C830,382.4,821.3,374.4,821.3,362.4"/> 21 <path d="M865.8,362.5v-0.2c0-10.7,8.6-20,19.5-20c7.2,0,11.7,3.3,15.3,7.1l-2.6,2.7c-3.3-3.4-7.1-6.3-12.8-6.3 22 c-8.7,0-15.5,7.3-15.5,16.4v0.2c0,9.2,7,16.6,15.8,16.6c5.4,0,9.6-2.8,12.8-6.4l2.6,2.3c-3.9,4.4-8.6,7.6-15.6,7.6 23 C874.3,382.4,865.8,373.2,865.8,362.5"/> 24 <path d="M911.3,366.6v-23.4h3.7V366c0,7.9,4.4,13.1,12.2,13.1c7.5,0,13.3-5.7,13.3-13.7v-22.1h3.7v38.3h-3.7v-7.1 25 c-2.6,4.5-6.8,8-13.8,8C916.9,382.4,911.3,375.8,911.3,366.6"/> 26 <path d="M958.8,343.2h3.7v10.9c3-6.8,9.4-11.8,17-11.5v4.1h-0.4c-8.9,0-16.6,6.7-16.6,19.1v15.7h-3.7V343.2z"/> 27 <path d="M990.1,343.2h3.7v38.3h-3.7V343.2z M989.6,328.2h4.6v5h-4.6V328.2z"/> 28 <path d="M1009,343.2h3.7v7.1c2.6-4.5,6.8-8,13.8-8c9.7,0,15.3,6.6,15.3,15.8v23.4h-3.7v-22.7c0-7.9-4.4-13.1-12.2-13.1 29 c-7.5,0-13.3,5.7-13.3,13.7v22.1h-3.7V343.2z"/> 30 <path d="M1087.9,360.6v-0.2c0-8.9-7.9-14.6-15.8-14.6c-8,0-14.8,5.6-14.8,14.5v0.2c0,8.6,6.9,14.6,14.8,14.6 31 C1080,375.1,1087.9,369.3,1087.9,360.6 M1055,387.8l2.2-3c4.6,3.5,9.8,5.4,15.5,5.4c8.8,0,15-5,15-14.9v-5.6 32 c-3.3,4.7-8.4,8.9-16,8.9c-9.2,0-18.4-7.1-18.4-18v-0.1c0-11,9.2-18.2,18.4-18.2c7.7,0,12.8,4.1,16,8.6v-7.7h3.7v32.3 33 c0,5.6-1.8,9.9-4.9,13c-3.3,3.3-8.3,5.1-13.9,5.1C1066.2,393.7,1060.2,391.7,1055,387.8"/> 34 <path d="M1126.3,392.1l1.3-3.2c2,1,3.7,1.4,6.5,1.4c4,0,6.6-2.3,9.5-9l-18.4-38.1h4.3l15.9,34.2l13.8-34.2h4.1l-16.6,39.6 35 c-3.4,8-7.3,10.9-12.8,10.9C1131,393.7,1128.9,393.2,1126.3,392.1"/> 36 <path d="M1204.6,362.5v-0.2c0-9.2-6.9-16.6-15.8-16.6c-9.1,0-15.6,7.4-15.6,16.4v0.2c0,9.2,6.9,16.6,15.8,16.6 37 C1198.1,379,1204.6,371.5,1204.6,362.5 M1169.3,362.5v-0.2c0-10.7,8.3-20,19.7-20c11.3,0,19.6,9.2,19.6,19.9v0.2 38 c0,10.7-8.3,20-19.7,20C1177.5,382.4,1169.3,373.2,1169.3,362.5"/> 39 <path d="M1219.9,366.6v-23.4h3.7V366c0,7.9,4.4,13.1,12.2,13.1c7.5,0,13.3-5.7,13.3-13.7v-22.1h3.7v38.3h-3.7v-7.1 40 c-2.6,4.5-6.8,8-13.8,8C1225.5,382.4,1219.9,375.8,1219.9,366.6"/> 41 <path d="M1267.4,343.2h3.7v10.9c3-6.8,9.4-11.8,17-11.5v4.1h-0.4c-8.9,0-16.6,6.7-16.6,19.1v15.7h-3.7V343.2z"/> 42 <polygon class="st0" points="1317.2,329 1327.1,329 1339.7,367.9 1352.6,328.8 1360.4,328.8 1373.3,367.9 1385.8,329 1395.5,329 43 1377.2,381.9 1369.3,381.9 1356.3,344.1 1343.4,381.9 1335.5,381.9 "/> 44 <path class="st0" d="M1430.8,361.9v-0.2c0-7-5-12.8-12.2-12.8c-7.3,0-11.9,5.7-11.9,12.6v0.2c0,6.9,5,12.8,12.1,12.8 45 C1426.1,374.5,1430.8,368.7,1430.8,361.9 M1397.6,361.9v-0.2c0-11.3,9-20.7,21.2-20.7c12.2,0,21.1,9.2,21.1,20.6v0.2 46 c0,11.3-9,20.6-21.2,20.6C1406.5,382.4,1397.6,373.2,1397.6,361.9"/> 47 <path class="st0" d="M1449.8,341.9h9.1v8.9c2.5-5.9,7.1-10,14-9.7v9.6h-0.5c-8,0-13.5,5.2-13.5,15.7v15.1h-9.1V341.9z"/> 48 <path class="st0" d="M1510.5,361.8v-0.2c0-7.7-5.4-12.7-11.5-12.7c-6.2,0-11.4,4.8-11.4,12.7v0.2c0,7.7,5.3,12.7,11.4,12.7 49 C1505.1,374.4,1510.5,369.3,1510.5,361.8 M1478.4,361.8v-0.2c0-13.1,8.9-20.6,18.4-20.6c6.5,0,10.7,3.3,13.5,7v-21.3h9.1v54.8h-9.1 50 v-6.6c-2.9,4.1-7.1,7.4-13.5,7.4C1487.5,382.3,1478.4,374.9,1478.4,361.8"/> 51 <path class="st0" d="M1552.5,356.3c7,0,11.3-3.9,11.3-9.4v-0.1c0-6.2-4.4-9.4-11.3-9.4h-10.7v18.9H1552.5z M1532.5,329h20.7 52 c12.2,0,20,7,20,17.6v0.2c0,11.8-9.5,17.9-21,17.9h-10.4v16.9h-9.2V329z"/> 53 <path class="st0" d="M1582.3,341.9h9.1v8.9c2.5-5.9,7.1-10,14-9.7v9.6h-0.5c-8,0-13.5,5.2-13.5,15.7v15.1h-9.1V341.9z"/> 54 <path class="st0" d="M1639.9,358.9c-0.6-5.9-4.1-10.4-10.1-10.4c-5.6,0-9.5,4.3-10.3,10.4H1639.9z M1610.6,361.8v-0.2 55 c0-11.3,8-20.6,19.4-20.6c12.6,0,19,9.9,19,21.3c0,0.8-0.1,1.7-0.2,2.6h-29.1c1,6.5,5.6,10.1,11.4,10.1c4.4,0,7.6-1.7,10.7-4.7 56 l5.3,4.7c-3.8,4.5-8.9,7.4-16.2,7.4C1619.4,382.4,1610.6,374.1,1610.6,361.8"/> 57 <path class="st0" d="M1655.6,376.3l4.1-6.2c4.3,3.2,8.9,4.9,13,4.9c3.9,0,6.2-1.7,6.2-4.3v-0.2c0-3.1-4.2-4.1-8.9-5.6 58 c-5.9-1.7-12.4-4.1-12.4-11.6v-0.2c0-7.5,6.2-12.1,14.1-12.1c5,0,10.4,1.7,14.6,4.5l-3.6,6.5c-3.8-2.3-7.9-3.8-11.2-3.8 59 c-3.5,0-5.6,1.6-5.6,4v0.2c0,2.9,4.3,4.1,8.9,5.6c5.8,1.8,12.3,4.4,12.3,11.6v0.2c0,8.3-6.5,12.5-14.7,12.5 60 C1666.8,382.3,1660.5,380.2,1655.6,376.3"/> 61 <path class="st0" d="M1693.1,376.3l4.1-6.2c4.3,3.2,8.9,4.9,13,4.9c3.9,0,6.2-1.7,6.2-4.3v-0.2c0-3.1-4.2-4.1-8.9-5.6 62 c-5.9-1.7-12.4-4.1-12.4-11.6v-0.2c0-7.5,6.2-12.1,14.1-12.1c5,0,10.4,1.7,14.6,4.5l-3.6,6.5c-3.8-2.3-7.9-3.8-11.2-3.8 63 c-3.5,0-5.6,1.6-5.6,4v0.2c0,2.9,4.3,4.1,8.9,5.6c5.8,1.8,12.3,4.4,12.3,11.6v0.2c0,8.3-6.5,12.5-14.7,12.5 64 C1704.3,382.3,1698.1,380.2,1693.1,376.3"/> 65 <polygon points="1755.8,343.2 1760,343.2 1771.5,376.9 1783.1,343.1 1786,343.1 1797.6,376.9 1809.1,343.2 1813.1,343.2 66 1799.1,381.8 1795.9,381.8 1784.5,349 1773,381.8 1769.9,381.8 "/> 67 <path d="M1851.7,360.6c-0.5-7.7-5-14.9-13.7-14.9c-7.6,0-13.4,6.4-14.1,14.9H1851.7z M1820,362.4v-0.2c0-11.1,7.8-20,18.2-20 68 c10.7,0,17.6,8.7,17.6,20c0,0.7,0,0.9-0.1,1.5h-31.7c0.7,9.5,7.5,15.1,15,15.1c5.9,0,10-2.6,13.1-6l2.6,2.3 69 c-3.9,4.2-8.5,7.2-15.8,7.2C1828.7,382.4,1820,374.4,1820,362.4"/> 70 <path d="M1901.3,362.5v-0.2c0-10.1-7-16.5-15-16.5c-8,0-15.6,6.7-15.6,16.4v0.2c0,9.8,7.7,16.4,15.6,16.4 71 C1894.6,378.9,1901.3,372.8,1901.3,362.5 M1870.9,373.2v8.3h-3.7v-54.8h3.7v25.1c3.3-5,8.2-9.5,15.8-9.5c9.2,0,18.6,7.4,18.6,19.9 72 v0.2c0,12.5-9.4,20-18.6,20C1879,382.4,1874,378.1,1870.9,373.2"/> 73 <path d="M1914.2,376.7l2.2-2.9c4.2,3.2,8.9,5,13.7,5c5.2,0,9.2-2.9,9.2-7.3v-0.2c0-4.5-4.8-6.2-10.1-7.7 74 c-6.2-1.8-13.1-3.7-13.1-10.5v-0.2c0-6.2,5.2-10.6,12.6-10.6c4.6,0,9.8,1.7,13.6,4.2l-2,3.1c-3.5-2.3-7.7-3.8-11.8-3.8 75 c-5.3,0-8.7,2.9-8.7,6.7v0.2c0,4.3,5.2,5.9,10.7,7.4c6.2,1.7,12.6,4,12.6,10.7v0.2c0,6.8-5.9,11.2-13.2,11.2 76 C1924.3,382.3,1918.2,380,1914.2,376.7"/> 77 <path d="M1956,343.2h3.7v38.3h-3.7V343.2z M1955.6,328.2h4.6v5h-4.6V328.2z"/> 78 <path d="M1977,371.7v-25.1h-5.6v-3.4h5.6V331h3.7v12.2h13.4v3.4h-13.4v24.7c0,5.5,3.2,7.4,7.7,7.4c1.9,0,3.5-0.4,5.6-1.4v3.5 79 c-2,0.9-3.8,1.4-6.2,1.4C1981.8,382.2,1977,379,1977,371.7"/> 80 <path d="M2033.7,360.6c-0.5-7.7-5-14.9-13.7-14.9c-7.6,0-13.4,6.4-14.1,14.9H2033.7z M2001.9,362.4v-0.2c0-11.1,7.8-20,18.2-20 81 c10.7,0,17.6,8.7,17.6,20c0,0.7,0,0.9-0.1,1.5h-31.7c0.7,9.5,7.5,15.1,15,15.1c5.9,0,10-2.6,13.1-6l2.6,2.3 82 c-3.9,4.2-8.5,7.2-15.8,7.2C2010.7,382.4,2001.9,374.4,2001.9,362.4"/> 83 <path class="st1" d="M2141.5,196.9c-1.1-8.3-4.4-15.4-9.8-21.3c-5.4-5.9-12.8-8.8-22.2-8.8c-17.5,0-27.7,10-30.6,30.1H2141.5z 84 M2150.6,243.3l37.1,11.9c-15.5,24.4-39.8,36.6-72.9,36.6c-26.4,0-46.9-6.9-61.7-20.9c-14.8-13.9-22.2-32.2-22.2-54.8 85 c0-23.1,7.6-42.3,22.9-57.8c15.2-15.4,34.6-23.2,58.2-23.2c17.1,0,31.9,4.3,44.3,13c12.5,8.6,21.1,19.4,25.9,32.3 86 c4.8,12.9,7.3,27.2,7.3,43.1h-111.4c0.7,13.6,5,23.2,12.9,28.9c7.9,5.7,16.2,8.5,24.9,8.5C2127.4,260.9,2139,255,2150.6,243.3 87 M2006.5,138.8v60.7h-34c-7.7-16.7-19.8-25-36.3-25c-10.5,0-18.9,3.5-25.1,10.4c-6.2,7-9.3,16.2-9.3,27.9c0,14.1,3.3,24.5,9.9,31.3 88 c6.6,6.7,14.7,10.1,24.2,10.1c7.6,0,14.8-2.2,21.6-6.6c6.8-4.4,12.2-10.2,16.4-17.4l37.1,16.3c-13.8,30.1-38,45.2-72.6,45.2 89 c-26.1,0-46.8-7.1-62.3-21.3c-15.5-14.2-23.2-33.2-23.2-57c0-23.8,7.6-42.5,22.8-56.3c15.2-13.8,32.9-20.6,53.1-20.6 90 c16.2,0,31.3,4.9,45.3,14.7v-12.4H2006.5z M1654.3,173.3v-34.4h70.6v13.9c14.4-10.8,29-16.2,43.9-16.2c30.2,0,45.3,19.3,45.3,57.8 91 v59.6h22.6v34.4h-70.3v-90.5c0-8.1-1.1-13.7-3.3-16.7c-2.2-3-5.8-4.5-10.9-4.5c-8.9,0-17.9,3.2-27.2,9.7v67.5h23v34.4h-93.6v-34.4 92 h22.9v-80.6H1654.3z M1584.4,196.9c-1.1-8.3-4.4-15.4-9.8-21.3c-5.4-5.9-12.8-8.8-22.2-8.8c-17.5,0-27.7,10-30.6,30.1H1584.4z 93 M1593.5,243.3l37.1,11.9c-15.5,24.4-39.8,36.6-72.9,36.6c-26.4,0-46.9-6.9-61.7-20.9c-14.8-13.9-22.2-32.2-22.2-54.8 94 c0-23.1,7.6-42.3,22.9-57.8c15.2-15.4,34.6-23.2,58.2-23.2c17.1,0,31.9,4.3,44.3,13c12.5,8.6,21.1,19.4,25.9,32.3 95 c4.8,12.9,7.3,27.2,7.3,43.1H1521c0.7,13.6,5,23.2,12.9,28.9c7.9,5.7,16.2,8.5,24.9,8.5C1570.3,260.9,1581.8,255,1593.5,243.3 96 M1452.5,253.9v34.4h-92.8v-34.4h21.6v-80.6h-20.1v-34.4h20.1v-13.7c0-15.8,4.9-28.9,14.6-39.5c9.7-10.6,24.2-15.8,43.5-15.8 97 c23.4,0,40,7,49.9,21l-34.6,27c-3.1-10.7-7.5-16.1-13.3-16.1c-8.2,0-12.4,6.9-12.4,20.7v16.4h23.5v34.4H1429v80.6H1452.5z"/> 98 <path class="st0" d="M1287.6,213.3c0-14.3-3.1-24.5-9.2-30.6c-6.1-6.1-13.1-9.1-20.9-9.1c-9.4,0-16.6,3.6-21.7,10.9 99 c-5.1,7.3-7.6,16.8-7.6,28.7c0,11.2,2.5,20.7,7.6,28.3c5,7.7,12.4,11.5,21.9,11.5c7.9,0,14.9-3.1,20.9-9.3 100 C1284.6,237.4,1287.6,227.3,1287.6,213.3 M1359.4,253.9v34.4h-72.3v-17.8c-13.3,13.3-27.7,20-43.3,20c-18.6,0-34.1-7.6-46.3-22.7 101 c-12.3-15.1-18.4-33.5-18.4-55c0-21.8,6.3-40.2,18.8-55.2c12.6-15,27.9-22.5,46-22.5c17.4,0,31.8,6.8,43.1,20.3v-47.5h-23.3V73.5 102 h71.1v180.4H1359.4z M1139.2,253.9v34.4H1034v-34.4h27.6v-80.6h-25.9v-34.4h69.7v38c2.7-10.9,8.8-20.4,18.3-28.3 103 c9.5-8,20.8-12,33.8-12c2.2,0,4.7,0.1,7.7,0.2v45.1c-12,0-21.9,1.3-29.5,4c-7.6,2.7-13.9,8.6-18.8,17.6c-4.9,9.1-7.4,19.8-7.4,32.1 104 v18.4H1139.2z M934.7,254.7c8.9,0,16-3.4,21.5-10.2c5.5-6.8,8.3-17.5,8.3-32c0-12.8-2.7-22.7-8-29.9c-5.3-7.2-12.6-10.7-21.8-10.7 105 c-19.7,0-29.5,14.2-29.5,42.6c0,11.6,2.4,21.2,7.3,28.8C917.4,250.9,924.8,254.7,934.7,254.7 M934.8,291.7c-22,0-40.6-7-55.8-20.9 106 c-15.2-14-22.8-33.1-22.8-57.4c0-24.3,7.6-43.4,22.8-57.4c15.2-14,33.8-20.9,55.8-20.9c22.1,0,40.8,7,55.9,20.9 107 c15.1,14,22.7,33.1,22.7,57.4c0,24-7.5,43-22.5,57.1C976,284.7,957.3,291.7,934.8,291.7 M646.3,289.7L585,109.8h-22.7V73.5h96.8 108 v36.3h-22.2L671.8,213l32.7-103.2h-19.5V73.5h77.2v36.3h-19.9L777.6,213l33.8-103.2h-21.5V73.5h86v36.3h-23.3l-59.3,179.9h-40.2 109 l-33.8-98.1l-32,98.1H646.3z"/> 110 <g> 111 <path class="st2" d="M238.5,280.2C238.5,280.2,238.6,280.2,238.5,280.2C238.6,280.2,238.5,280.2,238.5,280.2L238.5,280.2z"/> 112 <path class="st3" d="M257.4,79.6L257.4,79.6l26,57.2l0.2,0.5l-8.9,0c0,0.1,0,0.1,0,0.2c0.1,0.8,0.3,1.7,0.3,2.6 113 c0,2.8-0.7,5.4-2,7.7c-0.6,1.1-1.2,2.1-2,3c0,0-1.2,12.5-1,35.7c0,0,0,0.1,0,0.1c0.1,13.9,0.8,34.5,2.5,56.9 114 c27.2,1.5,52.5,4.6,75.7,8.7l0-97l-6.8,0l17.4-38.1l16.7,38.3l-6.8,0l0,100.9c24.8,5.1,46.8,11.3,65.8,17.5l0-84.5l-6.8,0 115 l17.4-38.1l16.7,38.3l-6.8,0l0,91.5c22.5,8.3,39.3,16.2,49.7,21.6c13-122.2-13.6-228.2-13.6-228.2c-123.7-4-233.7-69.8-233.7-69.8 116 V79.6z"/> 117 <path class="st3" d="M455,302.5l0,95.5h12.1v0h2.9h7.5v0h6.5c4.1-13.2,7.6-26.9,10.6-40.2l0,0c3.7-13.3,5.9-24.3,7.3-32.2 118 c0,0,0.1-0.3,0.1-0.4c0.1-0.5,0.2-1,0.2-1.5C494.8,319.8,478.7,311.6,455,302.5z"/> 119 <path class="st3" d="M368.7,276.8l0,121.2h12.1v0h22.3v0h11.7h19.7l0-103C415.8,288.7,393.7,282.3,368.7,276.8z"/> 120 <path class="st3" d="M348.3,398V272.7c-22.7-4.1-47.5-7.3-74.1-9c0,0.1,0,0.2,0,0.3c0.1,0.5,1.7,13.9,2,16.1 121 c4.1,30.9,12.5,79.7,21.1,117.7h-0.4c0,0,0,0,0,0.1v0h42.2v0l0,0H348.3z"/> 122 <path class="st4" d="M217.5,397.9c8.6-38,16.9-86.8,21.1-117.7c0,0-0.1,0-0.1,0l0,0c0,0,0.1,0,0.1,0c0.3-2.2,2-15.6,2-16.1 123 c0-0.1,0-0.2,0-0.3c-26.8,1.7-51.6,4.9-74.1,9V398v0h9.2v0h42.2c0,0,0,0,0,0c0,0,0,0,0-0.1H217.5z"/> 124 <path class="st4" d="M59.8,280.8l0-91.5l-6.8,0L69.7,151l17.4,38.1l-6.8,0l0,84.5c19-6.2,41-12.3,65.8-17.5l0-100.9l-6.8,0 125 l16.7-38.3l17.4,38.1l-6.8,0l0,97c23.2-4,48.5-7.2,75.7-8.7c1.6-22.5,2.4-43,2.5-56.9c0,0,0-0.1,0-0.1c0.1-23.2-1-35.7-1-35.7 126 c-0.8-0.9-1.4-1.9-2-3c-1.2-2.3-2-4.9-2-7.7c0-0.9,0.1-1.7,0.3-2.6c0-0.1,0-0.1,0-0.2l-8.9,0l0.2-0.5l26-57.1l0,0V4.3 127 c0,0-110,65.8-233.7,69.8c0,0-26.5,106-13.6,228.2C20.5,297.1,37.3,289.2,59.8,280.8z"/> 128 <path class="st4" d="M80.3,294.9l0,103.1H100h11.7v0H134v0v0h12.1v0l0-121.2C120.2,282.4,98,288.9,80.3,294.9z"/> 129 <path class="st4" d="M12.8,323.7C12.8,323.7,12.7,323.7,12.8,323.7c0.1,0.5,0.1,1,0.2,1.5c0,0.1,0,0.3,0.1,0.4c0,0,0,0,0,0 130 c1.4,7.9,3.6,18.9,7.3,32.2l0,0c3,13.3,6.5,26.9,10.6,40.2h6.5v0h10.3v0h12.1l0-95.6C36.2,311.5,20,319.7,12.8,323.7z"/> 131 </g> 132 <g> 133 <path class="st5" d="M2206.7,132.5c9.4,0,16.7,7.3,16.7,16.4c0,9.3-7.3,16.5-16.8,16.5c-9.4,0-16.9-7.2-16.9-16.5 134 c0-9.1,7.5-16.4,16.9-16.4H2206.7z M2206.5,135.8c-7.2,0-12.6,5.9-12.6,13.1c0,7.3,5.4,13.1,12.8,13.1c7.2,0.1,12.5-5.8,12.5-13.1 135 C2219.2,141.7,2213.9,135.8,2206.5,135.8L2206.5,135.8z M2204,157.4h-3.8v-16.3c1.5-0.3,3.6-0.6,6.3-0.6c3.1,0,4.5,0.5,5.7,1.3 136 c0.9,0.7,1.6,2,1.6,3.5c0,1.9-1.4,3.3-3.4,3.9v0.2c1.6,0.5,2.5,1.8,3,4c0.5,2.5,0.8,3.5,1.2,4h-4.1c-0.5-0.6-0.8-2-1.3-3.9 137 c-0.3-1.8-1.3-2.6-3.4-2.6h-1.8V157.4z M2204.1,148.2h1.8c2.1,0,3.8-0.7,3.8-2.4c0-1.5-1.1-2.5-3.5-2.5c-1,0-1.7,0.1-2.1,0.2 138 V148.2z"/> 139 </g> 140 </g> 141 </svg> -
wordfence/trunk/lib/wfActivityReport.php
r1949784 r2124102 590 590 $paramValue = base64_decode($actionData['paramValue']); 591 591 if (strlen($paramValue) > 100) { 592 $paramValue = substr($paramValue, 0, 100) . chr(2026);592 $paramValue = substr($paramValue, 0, 100) . '...'; 593 593 } 594 594 -
wordfence/trunk/lib/wfConfig.php
r2107617 r2124102 1409 1409 { 1410 1410 $wafConfig->setConfig($key, wfUtils::truthyToInt($value)); 1411 if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { 1412 wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); 1413 } 1411 1414 $saved = true; 1412 1415 break; … … 1457 1460 } 1458 1461 1462 if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { 1463 wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); 1464 } 1465 1459 1466 $saved = true; 1460 1467 break; … … 1470 1477 1471 1478 $wafConfig->setConfig('whitelistedServiceIPs', @json_encode(wfUtils::whitelistedServiceIPs())); 1479 1480 if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) { 1481 wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST); 1482 } 1483 1472 1484 $saved = true; 1473 1485 break; … … 1667 1679 } 1668 1680 else if (WFWAF_DEBUG) { 1669 //TODO: remove me when done with QA1670 1681 error_log("*** DEBUG: Config option '{$key}' missing save handler."); 1671 1682 } -
wordfence/trunk/lib/wordfenceClass.php
r2107617 r2124102 3265 3265 $type = 2; 3266 3266 } 3267 else if (defined('DOING_AJAX') && DOING_AJAX) { 3268 $type = 3; 3269 if (isset($_REQUEST['action']) && ($_REQUEST['action'] == 'wordfence_ls_authenticate' || $_REQUEST['action'] == 'nopriv_wordfence_ls_authenticate')) { 3270 $type = 301; 3271 } 3272 } 3267 3273 else if (isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == $wploginPath) { 3268 3274 $type = 1; … … 5754 5760 } 5755 5761 5762 wp_register_script('chart-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/Chart.bundle.min.js'), array('jquery'), '2.4.0'); 5763 wp_register_script('wordfence-select2-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery'), WORDFENCE_VERSION); 5764 wp_register_style('wordfence-select2-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION); 5756 5765 wp_register_style('wordfence-font-awesome-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-font-awesome.css'), '', WORDFENCE_VERSION); 5757 5766 … … 6246 6255 } 6247 6256 public static function menu_tools() { 6248 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6249 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery'), WORDFENCE_VERSION);6257 wp_enqueue_style('wordfence-select2-css'); 6258 wp_enqueue_script('wordfence-select2-js'); 6250 6259 6251 6260 $subpage = filter_input(INPUT_GET, 'subpage', FILTER_SANITIZE_STRING); … … 6332 6341 wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION); 6333 6342 wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION); 6334 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6343 wp_enqueue_style('wordfence-select2-css'); 6335 6344 6336 6345 wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION); 6337 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);6346 wp_enqueue_script('wordfence-select2-js'); 6338 6347 6339 6348 try { … … 6385 6394 wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION); 6386 6395 wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION); 6387 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6396 wp_enqueue_style('wordfence-select2-css'); 6388 6397 6389 6398 wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION); 6390 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);6391 wp_enqueue_script('chart-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/Chart.bundle.min.js'), array('jquery'), '2.4.0');6399 wp_enqueue_script('wordfence-select2-js'); 6400 wp_enqueue_script('chart-js'); 6392 6401 6393 6402 try { … … 6448 6457 } 6449 6458 public static function menu_dashboard() { 6450 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6451 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);6452 wp_enqueue_script('chart-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/Chart.bundle.min.js'), array('jquery'), '2.4.0');6459 wp_enqueue_style('wordfence-select2-css'); 6460 wp_enqueue_script('wordfence-select2-js'); 6461 wp_enqueue_script('chart-js'); 6453 6462 6454 6463 if (wfConfig::get('keyType') == wfAPI::KEY_TYPE_PAID_EXPIRED || (wfConfig::get('keyType') == wfAPI::KEY_TYPE_PAID_CURRENT && wfConfig::get('keyExpDays') < 30)) { … … 6470 6479 } 6471 6480 public static function menu_scan() { 6472 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6473 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);6481 wp_enqueue_style('wordfence-select2-css'); 6482 wp_enqueue_script('wordfence-select2-js'); 6474 6483 6475 6484 if (isset($_GET['subpage']) && $_GET['subpage'] == 'scan_options') { … … 6486 6495 6487 6496 public static function menu_support() { 6488 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6489 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery'), WORDFENCE_VERSION);6497 wp_enqueue_style('wordfence-select2-css'); 6498 wp_enqueue_script('wordfence-select2-js'); 6490 6499 6491 6500 require('menu_support.php'); … … 6495 6504 wfConfig::set('showWfCentralUI', 1); 6496 6505 6497 wp_enqueue_style('wordfence-select2-css' , wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);6498 wp_enqueue_script('wordfence-select2-js' , wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery'), WORDFENCE_VERSION);6506 wp_enqueue_style('wordfence-select2-css'); 6507 wp_enqueue_script('wordfence-select2-js'); 6499 6508 6500 6509 require('menu_wordfence_central.php'); … … 7863 7872 $paramValue = base64_decode($actionData['paramValue']); 7864 7873 if (strlen($paramValue) > 100) { 7865 $paramValue = substr($paramValue, 0, 100) . chr(2026);7874 $paramValue = substr($paramValue, 0, 100) . '...'; 7866 7875 } 7867 7876 -
wordfence/trunk/modules/login-security/classes/controller/ajax.php
r2087795 r2124102 73 73 'required_parameters' => array('nonce', 'id'), 74 74 ), 75 'reset_recaptcha_stats' => array( 76 'handler' => array($this, '_ajax_reset_recaptcha_stats_callback'), 77 'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => __('You do not have permission to reset reCAPTCHA statistics.', 'wordfence-2fa')), 78 'required_parameters' => array('nonce'), 79 ), 75 80 ); 76 81 … … 400 405 foreach ($admins as $a) { 401 406 /** @var \WP_User $a */ 402 if ( !Controller_Users::shared()->has_2fa_active($a)) {407 if (Controller_Users::shared()->has_2fa_active($a)) { 403 408 continue; 404 409 } … … 447 452 Controller_Notices::shared()->remove_notice($_POST['id'], false, wp_get_current_user()); 448 453 } 454 455 public function _ajax_reset_recaptcha_stats_callback() { 456 Controller_Settings::shared()->set_array(Controller_Settings::OPTION_CAPTCHA_STATS, array('counts' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 'avg' => 0)); 457 $response = array('success' => true); 458 return die(json_encode($response)); 459 } 449 460 } -
wordfence/trunk/modules/login-security/classes/controller/captcha.php
r2087795 r2124102 112 112 */ 113 113 public function is_human($score) { 114 if (Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_CAPTCHA_TEST_MODE)) { 115 return true; 116 } 117 114 118 $threshold = $this->threshold(); 115 119 return ($score >= $threshold || abs($score - $threshold) < 0.0001); -
wordfence/trunk/modules/login-security/classes/controller/db.php
r2087795 r2124102 59 59 } 60 60 61 public function uninstall() { 62 $tables = array(self::TABLE_2FA_SECRETS, self::TABLE_SETTINGS); 63 foreach ($tables as $table) { 64 global $wpdb; 65 $wpdb->query('DROP TABLE IF EXISTS `' . self::network_table($table) . '`'); 66 } 67 } 68 61 69 protected function _create_schema() { 62 70 $tables = array( -
wordfence/trunk/modules/login-security/classes/controller/settings.php
r2104182 r2124102 19 19 const OPTION_ALLOW_XML_RPC = 'allow-xml-rpc'; 20 20 const OPTION_ENABLE_AUTH_CAPTCHA = 'enable-auth-captcha'; 21 const OPTION_CAPTCHA_TEST_MODE = 'recaptcha-test-mode'; 21 22 const OPTION_RECAPTCHA_SITE_KEY = 'recaptcha-site-key'; 22 23 const OPTION_RECAPTCHA_SECRET = 'recaptcha-secret'; 23 24 const OPTION_RECAPTCHA_THRESHOLD = 'recaptcha-threshold'; 25 const OPTION_DELETE_ON_DEACTIVATION = 'delete-deactivation'; 24 26 25 27 //Internal … … 31 33 const OPTION_SHARED_SYMMETRIC_SECRET_KEY = 'shared-symmetric-secret'; 32 34 const OPTION_DISMISSED_FRESH_INSTALL_MODAL = 'dismissed-fresh-install-modal'; 35 const OPTION_CAPTCHA_STATS = 'captcha-stats'; 33 36 34 37 protected $_settingsStorage; … … 67 70 self::OPTION_ALLOW_XML_RPC => array('value' => true, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 68 71 self::OPTION_ENABLE_AUTH_CAPTCHA => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 72 self::OPTION_CAPTCHA_STATS => array('value' => '{"counts":[0,0,0,0,0,0,0,0,0,0,0],"avg":0}', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 69 73 self::OPTION_RECAPTCHA_THRESHOLD => array('value' => 0.5, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 70 74 self::OPTION_LAST_SECRET_REFRESH => array('value' => 0, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 75 self::OPTION_DELETE_ON_DEACTIVATION => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 71 76 )); 72 77 } … … 130 135 case self::OPTION_ALLOW_XML_RPC: 131 136 case self::OPTION_ENABLE_AUTH_CAPTCHA: 137 case self::OPTION_CAPTCHA_TEST_MODE: 132 138 case self::OPTION_DISMISSED_FRESH_INSTALL_MODAL: 139 case self::OPTION_DELETE_ON_DEACTIVATION: 133 140 return true; 134 141 … … 139 146 //Array 140 147 case self::OPTION_GLOBAL_NOTICES: 148 case self::OPTION_CAPTCHA_STATS: 141 149 return preg_match('/^\[.*\]$/', $value) || preg_match('/^\{.*\}$/', $value); //Only a rough JSON validation 142 150 … … 166 174 case self::OPTION_RECAPTCHA_THRESHOLD: 167 175 return is_numeric($value) && $value >= 0 && $value <= 1; 176 case self::OPTION_RECAPTCHA_SITE_KEY: 177 if (empty($value)) { 178 return true; 179 } 180 181 $response = wp_remote_get('https://www.google.com/recaptcha/api.js?render=' . urlencode($value)); 182 183 if (!is_wp_error($response)) { 184 $status = wp_remote_retrieve_response_code($response); 185 if ($status == 200) { 186 return true; 187 } 188 189 $data = wp_remote_retrieve_body($response); 190 if (strpos($data, 'grecaptcha') === false) { 191 return __('Unable to validate the reCAPTCHA site key. Please check the key and try again.', 'wordfence-2fa'); 192 } 193 return true; 194 } 195 return sprintf(__('An error was encountered while validating the reCAPTCHA site key: %s', 'wordfence-2fa'), $response->get_error_message()); 168 196 } 169 197 return true; … … 202 230 case self::OPTION_ALLOW_XML_RPC: 203 231 case self::OPTION_ENABLE_AUTH_CAPTCHA: 232 case self::OPTION_CAPTCHA_TEST_MODE: 204 233 case self::OPTION_DISMISSED_FRESH_INSTALL_MODAL: 234 case self::OPTION_DELETE_ON_DEACTIVATION: 205 235 return $this->_truthy_to_bool($value); 206 236 -
wordfence/trunk/modules/login-security/classes/controller/time.php
r2104182 r2124102 96 96 foreach ($servers as $s) { 97 97 $socket = @fsockopen('udp://' . $s, 123, $err_no, $err_str, 1); 98 stream_set_timeout($socket, 1);99 98 if ($socket) { 99 stream_set_timeout($socket, 1); 100 100 $remote_originate = microtime(true); 101 101 $secondsNTP = ((int) $remote_originate) + self::NTP_EPOCH_CONVERT; -
wordfence/trunk/modules/login-security/classes/controller/users.php
r2087795 r2124102 312 312 313 313 /** 314 * Records the reCAPTCHA score for later display. 315 * 316 * This is not atomic, which means this can miscount on hits that overlap, but the overhead of being atomic is not 317 * worth it for our use. 318 * 319 * @param \WP_User $user|null 320 * @param float $score 321 */ 322 public function record_captcha_score($user, $score) { 323 if (!Controller_CAPTCHA::shared()->enabled()) { return; } 324 if ($this->has_2fa_active($user)) { return; } //2FA activated users do not retrieve a score 325 326 if ($user) { update_user_meta($user->ID, 'wfls-last-captcha-score', $score); } 327 $stats = Controller_Settings::shared()->get_array(Controller_Settings::OPTION_CAPTCHA_STATS); 328 $int_score = min(max((int) ($score * 10), 0), 10); 329 $count = array_sum($stats['counts']); 330 $stats['counts'][$int_score]++; 331 $stats['avg'] = ($stats['avg'] * $count + $int_score) / ($count + 1); 332 Controller_Settings::shared()->set_array(Controller_Settings::OPTION_CAPTCHA_STATS, $stats); 333 } 334 335 /** 314 336 * Returns the active and inactive user counts. 315 337 * -
wordfence/trunk/modules/login-security/classes/controller/wordfencels.php
r2104182 r2124102 125 125 } 126 126 } 127 128 if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_CAPTCHA_TEST_MODE) && Controller_CAPTCHA::shared()->enabled() && Controller_Permissions::shared()->can_manage_settings()) { 129 if (is_multisite()) { 130 add_action('network_admin_notices', array($this, '_recaptcha_test_notice')); 131 } 132 else { 133 add_action('admin_notices', array($this, '_recaptcha_test_notice')); 134 } 135 } 127 136 } 128 137 … … 135 144 } 136 145 146 public function _recaptcha_test_notice() { 147 echo '<div class="notice notice-warning"><p>' . sprintf(__('reCAPTCHA test mode is enabled. While enabled, login and registration requests will be checked for their score but will not be blocked if the score is below the minimum score. <a href="%s">Manage Settings</a>', 'wordfence-2fa'), esc_url(network_admin_url('admin.php?page=WFLS#top#settings'))) . '</p></div>'; 148 } 149 137 150 /** 138 151 * Installation/Uninstallation … … 151 164 } 152 165 delete_option($opt); 166 } 167 168 if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_DELETE_ON_DEACTIVATION)) { 169 Controller_DB::shared()->uninstall(); 153 170 } 154 171 } … … 243 260 } 244 261 wp_enqueue_script('wordfence-ls-admin', Model_Asset::js('admin.js'), array('jquery'), WORDFENCE_LS_VERSION); 262 if (!WORDFENCE_LS_FROM_CORE) { 263 wp_register_script('chart-js', Model_Asset::js('Chart.bundle.min.js'), array('jquery'), '2.4.0'); 264 wp_register_script('wordfence-select2-js', Model_Asset::js('wfselect2.min.js'), array('jquery'), WORDFENCE_LS_VERSION); 265 wp_register_style('wordfence-select2-css', Model_Asset::css('wfselect2.min.css'), array(), WORDFENCE_LS_VERSION); 266 } 267 wp_enqueue_script('chart-js'); 268 wp_enqueue_script('wordfence-select2-js'); 269 wp_enqueue_style('wordfence-select2-css'); 245 270 wp_enqueue_style('wordfence-ls-admin', Model_Asset::css('admin.css'), array(), WORDFENCE_LS_VERSION); 246 271 wp_enqueue_style('wordfence-ls-colorbox', Model_Asset::css('colorbox.css'), array(), WORDFENCE_LS_VERSION); 247 272 wp_enqueue_style('wordfence-ls-ionicons', Model_Asset::css('ionicons.css'), array(), WORDFENCE_LS_VERSION); 273 if (!WORDFENCE_LS_FROM_CORE) { wp_enqueue_style('wordfence-ls-font-awesome', Model_Asset::css('font-awesome.css'), array(), WORDFENCE_LS_VERSION); } 248 274 wp_localize_script('wordfence-ls-admin', 'WFLSVars', array( 249 275 'ajaxurl' => admin_url('admin-ajax.php'), … … 400 426 } 401 427 402 update_user_meta($user->ID, 'wfls-last-captcha-score', $score);428 Controller_Users::shared()->record_captcha_score($user, $score); 403 429 404 430 if (isset($_REQUEST['wfls-email-verification']) && !empty($_REQUEST['wfls-email-verification']) && is_string($_REQUEST['wfls-email-verification'])) { … … 422 448 $encrypted = Model_Symmetric::encrypt((string) $user->ID); 423 449 if ($encrypted) { 424 $jwt = new Model_JWT(array('user' => $encrypted), Controller_Time::time() + 60 * 15 /* minutes */);450 $jwt = new Model_JWT(array('user' => $encrypted), Controller_Time::time() + 60 * WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES); 425 451 $view = new Model_View('email/login-verification', array( 426 452 'siteName' => get_bloginfo('name', 'raw'), … … 618 644 619 645 if ($requireCAPTCHA) { 646 Controller_Users::shared()->record_captcha_score(null, $score); 647 620 648 if (!Controller_CAPTCHA::shared()->is_human($score)) { //Score is below the human threshold, block the user registration 621 649 $encryptedIP = Model_Symmetric::encrypt(Model_Request::current()->ip()); -
wordfence/trunk/modules/login-security/views/options/option-captcha.php
r2089400 r2124102 18 18 <ul class="wfls-flex-vertical wfls-flex-align-left"> 19 19 <li> 20 <strong id="wfls-enable-auth-captcha-label"><?php _e('Enable reCAPTCHA on the login and user registration pages', 'wordfence- 2fa'); ?></strong>20 <strong id="wfls-enable-auth-captcha-label"><?php _e('Enable reCAPTCHA on the login and user registration pages', 'wordfence-ls'); ?></strong> 21 21 </li> 22 <li class="wfls-option-subtitle"><?php _e('Note: This feature requires a free site key and secret for the <a href="https://www.google.com/recaptcha/intro/v3.html" target="_blank" rel="noopener noreferrer">Google reCAPTCHA v3 Service</a>.', 'wordfence-2fa'); ?></li>22 <li class="wfls-option-subtitle"><?php printf(__('reCAPTCHA v3 does not make users solve puzzles or click a checkbox like previous versions. The only visible part is the reCAPTCHA logo. If a visitor\'s browser fails the CAPTCHA, Wordfence will send an email to the user\'s address with a link they can click to verify that they are a user of your site. You can read further details <a href="%s" target="_blank" rel="noopener noreferrer">in our documentation</a>.', 'wordfence-ls'), \WordfenceLS\Controller_Support::esc_supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_CAPTCHA)); ?></li> 23 23 </ul> 24 24 </li> … … 31 31 <table> 32 32 <tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($siteKeyValue); ?>" data-text-option="<?php echo esc_attr($siteKeyOptionName); ?>"> 33 <th id="wfls-enable-captcha-site-key-label" class="wfls-padding-add-bottom"><?php _e('reCAPTCHA v3 Site Key', 'wordfence '); ?></th>33 <th id="wfls-enable-captcha-site-key-label" class="wfls-padding-add-bottom"><?php _e('reCAPTCHA v3 Site Key', 'wordfence-ls'); ?></th> 34 34 <td class="wfls-option-text wfls-padding-add-bottom"><input type="text" name="recaptchaSiteKey" id="input-recaptchaSiteKey" class="wfls-form-control" value="<?php echo esc_attr($siteKeyValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td> 35 35 </tr> 36 36 <tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($secretValue); ?>" data-text-option="<?php echo esc_attr($secretOptionName); ?>"> 37 <th id="wfls-enable-captcha-secret-label"><?php _e('reCAPTCHA v3 Secret', 'wordfence '); ?></th>37 <th id="wfls-enable-captcha-secret-label"><?php _e('reCAPTCHA v3 Secret', 'wordfence-ls'); ?></th> 38 38 <td class="wfls-option-text"><input type="text" name="recaptchaSecret" id="input-recaptchaSecret" class="wfls-form-control" value="<?php echo esc_attr($secretValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td> 39 39 </tr> 40 40 </table> 41 </li> 42 </ul> 43 <ul class="wfls-option wfls-padding-no-top"> 44 <li class="wfls-option-spacer"></li> 45 <li class="wfls-option-title"> 46 <ul class="wfls-flex-vertical wfls-flex-align-left"> 47 <li class="wfls-option-subtitle"><?php _e('Note: This feature requires a free site key and secret for the <a href="https://www.google.com/recaptcha/intro/v3.html" target="_blank" rel="noopener noreferrer">Google reCAPTCHA v3 Service</a>.', 'wordfence-ls'); ?></li> 48 </ul> 41 49 </li> 42 50 </ul> -
wordfence/trunk/modules/login-security/views/options/option-require-2fa.php
r2087795 r2124102 54 54 <span id="wfls-require-2fa-grace-period-label" class="wfls-padding-add-left wfls-padding-add-right"><?php _e('Grace period to require 2FA', 'wordfence'); ?> </span> 55 55 <input type="text" name="require2FAGracePeriod" id="input-require2FAGracePeriod" class="wfls-datetime wfls-form-control" placeholder="Enabled on..." data-value="<?php echo $currentGracePeriodDateValue; ?>" data-original-value="<?php echo $currentGracePeriodDateValue; ?>"<?php echo $currentGracePeriodEnabledValue ? '' : ' disabled'; ?>> 56 <div class="wfls-padding-add-left"><a href="#" id="wfls-send-grace-period-notification" class="wfls-btn wfls-btn-sm wfls-btn-default<?php echo (\WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_ADMIN) && \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED) && \WordfenceLS\Controller_Time::time() < \WordfenceLS\Controller_Settings::shared()->get_int(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD)) ? '' : ' wfls-disabled'; ?>"><?php _e('Send Notification', 'wordfence-2fa'); ?></a></div>57 56 </li> 57 </ul> 58 </li> 59 <li> 60 <ul class="wfls-option wfls-padding-no-top"> 61 <li class="wfls-option-spacer"></li> 62 <li class="wfls-option-spacer"></li> 63 <li><a href="#" id="wfls-send-grace-period-notification" class="wfls-btn wfls-btn-sm wfls-btn-default<?php echo (\WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_ADMIN) && \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED) && \WordfenceLS\Controller_Time::time() < \WordfenceLS\Controller_Settings::shared()->get_int(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD)) ? '' : ' wfls-disabled'; ?>"><?php _e('Send Notification', 'wordfence-2fa'); ?></a></li> 58 64 </ul> 59 65 </li> -
wordfence/trunk/modules/login-security/views/settings/options.php
r2087795 r2124102 10 10 </div> 11 11 <div class="wfls-block-header-action wfls-block-header-action-text wfls-nowrap wfls-padding-add-right-responsive"> 12 <a href="#" id="wfls-cancel-changes" class="wfls-btn wfls-btn-sm wfls-btn-default wfls-disabled"><?php _e('Cancel Changes', 'wordfence-2fa'); ?></a> <a href="#" id="wfls-save-changes" class="wfls-btn wfls-btn-sm wfls-btn-primary wfls-disabled"><?php _e('Save Changes', 'wordfence-2fa'); ?></a>12 <a href="#" id="wfls-cancel-changes" class="wfls-btn wfls-btn-sm wfls-btn-default wfls-disabled"><?php _e('Cancel<span class="wfls-visible-sm-inline"> Changes</span>', 'wordfence-2fa'); ?></a> <a href="#" id="wfls-save-changes" class="wfls-btn wfls-btn-sm wfls-btn-primary wfls-disabled"><?php _e('Save<span class="wfls-visible-sm-inline"> Changes</span>', 'wordfence-2fa'); ?></a> 13 13 </div> 14 14 </div> … … 114 114 ?> 115 115 </li> 116 <li> 117 <?php 118 echo \WordfenceLS\Model_View::create('options/option-captcha-threshold', array( 119 ))->render(); 120 ?> 121 </li> 122 <li> 123 <?php 124 echo \WordfenceLS\Model_View::create('options/option-toggled', array( 125 'optionName' => \WordfenceLS\Controller_Settings::OPTION_CAPTCHA_TEST_MODE, 126 'enabledValue' => '1', 127 'disabledValue' => '0', 128 'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_CAPTCHA_TEST_MODE) ? '1': '0', 129 'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . __('Run reCAPTCHA in test mode', 'wordfence-2fa') . '</strong>'), 130 'subtitle' => __('While in test mode, reCAPTCHA will score login and registration requests but not actually block them. The scores will be recorded and can be used to select a human/bot threshold value.', 'wordfence-2fa'), 131 ))->render(); 132 ?> 133 </li> 116 134 <?php if (!WORDFENCE_LS_FROM_CORE): ?> 117 135 <li> … … 121 139 </li> 122 140 <?php endif; ?> 141 <li> 142 <?php 143 echo \WordfenceLS\Model_View::create('options/option-toggled', array( 144 'optionName' => \WordfenceLS\Controller_Settings::OPTION_DELETE_ON_DEACTIVATION, 145 'enabledValue' => '1', 146 'disabledValue' => '0', 147 'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_DELETE_ON_DEACTIVATION) ? '1': '0', 148 'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . __('Delete Login Security tables and data on deactivation', 'wordfence-2fa') . '</strong>'), 149 'subtitle' => __('If enabled, all settings and 2FA records will be deleted on deactivation. If later reactivated, all users that previously had 2FA active will need to set it up again.', 'wordfence-2fa'), 150 ))->render(); 151 ?> 152 </li> 123 153 </ul> 124 154 </div> -
wordfence/trunk/modules/login-security/wordfence-login-security.php
r2107617 r2124102 27 27 define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading)); 28 28 29 define('WORDFENCE_LS_VERSION', '1.0.2'); 30 define('WORDFENCE_LS_BUILD_NUMBER', '1560795818'); 29 define('WORDFENCE_LS_VERSION', '1.0.3'); 30 define('WORDFENCE_LS_BUILD_NUMBER', '1563297204'); 31 32 if (!defined('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES')) { define('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES', 15); } 31 33 32 34 if (!WORDFENCE_LS_FROM_CORE) { -
wordfence/trunk/readme.txt
r2107642 r2124102 185 185 186 186 == Changelog == 187 188 = 7.3.5 - July 16, 2019 = 189 * Improvement: Improved tagging of the login endpoint for brute force protection. 190 * Improvement: Added additional information about reCAPTCHA to its setting control. 191 * Improvement: Added a constant that may be overridden to customize the expiration time of login verification email links. 192 * Improvement: reCAPTCHA keys are now tested on saving to prevent accidentally inputting a v2 key. 193 * Improvement: Added a setting to control the reCAPTCHA human/bot threshold. 194 * Improvement: Added a separate option to trigger removal of Login Security tables and data on deactivation. 195 * Improvement: Reworked the reCAPTCHA implementation to trigger the token check on login/registration form submission to avoid the token expiring. 196 * Fix: Widened the reCAPTCHA key fields to allow the full keys to be visible. 197 * Fix: Fixed encoding of the ellipsis character when reporting malware finds. 198 * Fix: Disabling the IP blacklist once again correctly clears the block cache. 199 * Fix: Addressed an issue when outbound UDP connections are blocked where the NTP check could log an error. 200 * Fix: Added handling for reCAPTCHA's JavaScript failing to load, which previously blocked logging in. 201 * Fix: Fixed the functionality of the button to send 2FA grace period notifications. 202 * Fix: Fixed a missing icon for some help links when running in standalone mode. 187 203 188 204 = 7.3.4 - June 17, 2019 = -
wordfence/trunk/views/dashboard/options-group-general.php
r2057777 r2124102 131 131 'value' => wfConfig::get('deleteTablesOnDeact') ? 1 : 0, 132 132 'title' => __('Delete Wordfence tables and data on deactivation', 'wordfence'), 133 'subtitle' => __('Note: This does not include Login Security settings and tables. An option to delete those must be selected separately on the Login Security settings page.', 'wordfence'), 133 134 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_DELETE_DEACTIVATION), 134 135 ))->render(); -
wordfence/trunk/wordfence.php
r2107617 r2124102 5 5 Description: Wordfence Security - Anti-virus, Firewall and Malware Scan 6 6 Author: Wordfence 7 Version: 7.3. 47 Version: 7.3.5 8 8 Author URI: http://www.wordfence.com/ 9 9 Network: true … … 16 16 exit; 17 17 } 18 define('WORDFENCE_VERSION', '7.3. 4');19 define('WORDFENCE_BUILD_NUMBER', '156 0795818');18 define('WORDFENCE_VERSION', '7.3.5'); 19 define('WORDFENCE_BUILD_NUMBER', '1563297204'); 20 20 define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) : 21 21 basename(dirname(__FILE__)) . '/' . basename(__FILE__));
Note: See TracChangeset
for help on using the changeset viewer.