diff --git a/README.md b/README.md
index 1ce7a818..0dcce340 100644
--- a/README.md
+++ b/README.md
@@ -95,7 +95,6 @@ The next question is:
## Configuration - First Run
-- duplicate `config/autoload/debugbar.local.php.dist` as `config/autoload/debugbar.local.php`
- duplicate `config/autoload/development.local.php.dist` as `config/autoload/development.local.php`
- duplicate `config/autoload/local.php.dist` as `config/autoload/local.php`
- duplicate `config/autoload/mail.local.php.dist` as `config/autoload/mail.local.php`
@@ -173,22 +172,6 @@ composer development-enable
- If not already done, remove the `.dist` extension from `config/autoload/development.global.php.dist`.
-## Using DebugBar
-
-DotKernel comes with its own DebugBar already installed and configured. It was enabled when you cloned the config file `config/autoload/debugbar.local.php.dist` as `config/autoload/debugbar.local.php`. You can disable the tool by going into its config file `config/autoload/debugbar.local.php` and changing
-
-```php
-'enabled' => true
-```
-
-to
-
-```php
-'enabled' => false
-```
-
-More about DebugBar [here](https://github.com/dotkernel/dot-debugbar).
-
## NPM Commands
To install dependencies into the `node_modules` directory run this command.
diff --git a/composer.json b/composer.json
index b8295924..d68c29d9 100644
--- a/composer.json
+++ b/composer.json
@@ -51,7 +51,6 @@
"dotkernel/dot-authorization": "^3.4.1",
"dotkernel/dot-controller": "^3.4.3",
"dotkernel/dot-data-fixtures": "^1.1.3",
- "dotkernel/dot-debugbar": "^1.1.5",
"dotkernel/dot-errorhandler": "^3.3.2",
"dotkernel/dot-flashmessenger": "^3.4.2",
"dotkernel/dot-mail": "~3.4 || ^4.1.1",
diff --git a/config/autoload/debugbar.local.php.dist b/config/autoload/debugbar.local.php.dist
deleted file mode 100644
index 740bd931..00000000
--- a/config/autoload/debugbar.local.php.dist
+++ /dev/null
@@ -1,37 +0,0 @@
- [
- /**
- * Enable/Disable DebugBar
- */
- 'enabled' => true,
-
- /**
- * Enable DebugBar by whitelisting your IPV4 address
- */
- 'ipv4Whitelist' => [
- '127.0.0.1',
- ],
-
- /**
- * Enable DebugBar by whitelisting your IPV6 address
- */
- 'ipv6Whitelist' => [
- '::1',
- ],
-
- /**
- * @see \DebugBar\JavascriptRenderer::setOptions()
- */
- 'javascript_renderer' => [
- 'base_url' => '',
- 'base_path' => '',
- 'disable_jquery' => true,
- 'disable_fontawesome' => false,
- 'disable_highlightjs' => false,
- ],
- ],
-];
diff --git a/config/autoload/templates.global.php b/config/autoload/templates.global.php
index 3bb3df07..9a047419 100644
--- a/config/autoload/templates.global.php
+++ b/config/autoload/templates.global.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-use Dot\DebugBar\Extension\DebugBarExtension;
use Dot\Twig\Extension\DateExtension;
use Dot\Twig\Extension\TranslationExtension;
use Laminas\ServiceManager\Factory\InvokableFactory;
@@ -33,7 +32,6 @@
'extensions' => [
DateExtension::class,
TranslationExtension::class,
- DebugBarExtension::class,
],
'optimizations' => -1,
'runtime_loaders' => [],
diff --git a/config/config.php b/config/config.php
index e6e298ff..3d872b3a 100644
--- a/config/config.php
+++ b/config/config.php
@@ -33,7 +33,6 @@ class_exists(\Mezzio\Swoole\ConfigProvider::class)
// DotKernel packages
\Dot\Session\ConfigProvider::class,
- \Dot\DebugBar\ConfigProvider::class,
\Dot\Mail\ConfigProvider::class,
\Laminas\Form\ConfigProvider::class,
\Dot\Log\ConfigProvider::class,
diff --git a/config/pipeline.php b/config/pipeline.php
index 9f17e1cb..aae1a7a4 100644
--- a/config/pipeline.php
+++ b/config/pipeline.php
@@ -2,7 +2,6 @@
declare(strict_types=1);
-use Dot\DebugBar\Middleware\DebugBarMiddleware;
use Dot\ErrorHandler\ErrorHandlerInterface;
use Dot\Rbac\Guard\Middleware\ForbiddenHandler;
use Dot\Rbac\Guard\Middleware\RbacGuardMiddleware;
@@ -27,7 +26,6 @@
return function (Application $app, MiddlewareFactory $factory, ContainerInterface $container): void {
// The error handler should be the first (most outer) middleware to catch
// all Exceptions.
- $app->pipe(DebugBarMiddleware::class);
$app->pipe(ErrorHandlerInterface::class);
$app->pipe(SessionMiddleware::class);
$app->pipe(ServerUrlMiddleware::class);
diff --git a/public/debugbar/debugbar.css b/public/debugbar/debugbar.css
deleted file mode 100644
index 502d2482..00000000
--- a/public/debugbar/debugbar.css
+++ /dev/null
@@ -1,314 +0,0 @@
-/* Hide debugbar when printing a page */
-@media print {
- div.phpdebugbar {
- display: none;
- }
-}
-
-div.phpdebugbar {
- position: fixed;
- bottom: 0;
- left: 0;
- width: 100%;
- border-top: 0;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
- background: #fff;
- z-index: 10000;
- font-size: 14px;
- color: #000;
- text-align: left;
- line-height: 1;
- letter-spacing: normal;
- direction: ltr;
-}
-
-div.phpdebugbar a,
-div.phpdebugbar-openhandler {
- cursor: pointer;
-}
-
-div.phpdebugbar-drag-capture {
- position: fixed;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- z-index: 10001;
- background: none;
- display: none;
- cursor: ns-resize;
-}
-
-div.phpdebugbar-closed {
- width: auto;
-}
-
-div.phpdebugbar * {
- margin: 0;
- padding: 0;
- border: 0;
- font-weight: normal;
- text-decoration: none;
- clear: initial;
- width: auto;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
-}
-
-div.phpdebugbar ol, div.phpdebugbar ul {
- list-style: none;
-}
-
-div.phpdebugbar table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-
-div.phpdebugbar input[type='text'], div.phpdebugbar input[type='password'] {
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
- background: #fff;
- font-size: 14px;
- color: #000;
- border: 0;
- padding: 0;
- margin: 0;
-}
-
-div.phpdebugbar code, div.phpdebugbar pre, div.phpdebugbar samp {
- background: none;
- font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
- font-size: 1em;
- border: 0;
- padding: 0;
- margin: 0;
-}
-
-div.phpdebugbar code, div.phpdebugbar pre {
- color: #000;
-}
-
-div.phpdebugbar pre.sf-dump {
- color: #a0a000;
- outline: 0;
-}
-
-a.phpdebugbar-restore-btn {
- float: left;
- padding: 5px 8px;
- font-size: 14px;
- color: #555;
- text-decoration: none;
- border-right: 1px solid #ddd;
-}
-
-div.phpdebugbar-resize-handle {
- display: none;
- height: 4px;
- margin-top: -4px;
- width: 100%;
- background: none;
- border-bottom: 1px solid #ccc;
- cursor: ns-resize;
-}
-
-div.phpdebugbar-closed, div.phpdebugbar-minimized{
- border-top: 1px solid #ccc;
-}
-/* -------------------------------------- */
-
-div.phpdebugbar-header, a.phpdebugbar-restore-btn {
- background: #efefef url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Ccircle%20fill%3D%22%23000%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22M6.039%208.342c.463%200%20.772.084.927.251.154.168.191.455.11.862-.084.424-.247.727-.487.908-.241.182-.608.272-1.1.272h-.743l.456-2.293h.837zm-2.975%204.615h1.22l.29-1.457H5.62c.461%200%20.84-.047%201.139-.142.298-.095.569-.254.812-.477.205-.184.37-.387.497-.608.127-.222.217-.466.27-.734.13-.65.032-1.155-.292-1.518-.324-.362-.84-.543-1.545-.543H4.153l-1.089%205.479zM9.235%206.02h1.21l-.289%201.458h1.079c.679%200%201.147.115%201.405.347.258.231.335.607.232%201.125l-.507%202.55h-1.23l.481-2.424c.055-.276.035-.464-.06-.565-.095-.1-.298-.15-.608-.15H9.98L9.356%2011.5h-1.21l1.089-5.48M15.566%208.342c.464%200%20.773.084.928.251.154.168.19.455.11.862-.084.424-.247.727-.488.908-.24.182-.607.272-1.1.272h-.742l.456-2.293h.836zm-2.974%204.615h1.22l.29-1.457h1.046c.461%200%20.84-.047%201.139-.142.298-.095.569-.254.812-.477.205-.184.37-.387.497-.608.127-.222.217-.466.27-.734.129-.65.032-1.155-.292-1.518-.324-.362-.84-.543-1.545-.543H13.68l-1.089%205.479z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fsvg%3E) no-repeat 5px 4px / 20px 20px;
-}
-div.phpdebugbar-header {
- padding-left: 29px;
- min-height: 26px;
- line-height: 16px;
-}
-div.phpdebugbar-header:before, div.phpdebugbar-header:after {
- display: table;
- line-height: 0;
- content: "";
-}
-div.phpdebugbar-header:after {
- clear: both;
-}
-div.phpdebugbar-header-left {
- float: left;
-}
-div.phpdebugbar-header-right {
- float: right;
-}
-div.phpdebugbar-header > div > * {
- padding: 5px 5px;
- font-size: 14px;
- color: #555;
- text-decoration: none;
-}
-div.phpdebugbar-header-left > * {
- float: left;
-}
-div.phpdebugbar-header-right > * {
- float: right;
-}
-div.phpdebugbar-header-right > select {
- padding: 0;
-}
-
-/* -------------------------------------- */
-
-span.phpdebugbar-indicator,
-a.phpdebugbar-indicator,
-a.phpdebugbar-close-btn {
- border-right: 1px solid #ddd;
-}
-
-a.phpdebugbar-tab.phpdebugbar-active {
- background: #ccc;
- color: #444;
- background-image: linear-gradient(bottom, rgb(173,173,173) 41%, rgb(209,209,209) 71%);
- background-image: -o-linear-gradient(bottom, rgb(173,173,173) 41%, rgb(209,209,209) 71%);
- background-image: -moz-linear-gradient(bottom, rgb(173,173,173) 41%, rgb(209,209,209) 71%);
- background-image: -webkit-linear-gradient(bottom, rgb(173,173,173) 41%, rgb(209,209,209) 71%);
- background-image: -ms-linear-gradient(bottom, rgb(173,173,173) 41%, rgb(209,209,209) 71%);
- background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.41, rgb(173,173,173)), color-stop(0.71, rgb(209,209,209)));
-}
- a.phpdebugbar-tab span.phpdebugbar-badge {
- display: none;
- margin-left: 5px;
- font-size: 11px;
- line-height: 14px;
- padding: 0 6px;
- background: #ccc;
- border-radius: 4px;
- color: #555;
- font-weight: normal;
- text-shadow: none;
- vertical-align: middle;
- }
- a.phpdebugbar-tab i {
- display: none;
- vertical-align: middle;
- }
- a.phpdebugbar-tab span.phpdebugbar-badge.phpdebugbar-visible {
- display: inline;
- }
- a.phpdebugbar-tab span.phpdebugbar-badge.phpdebugbar-important {
- background: #ed6868;
- color: white;
- }
-
-a.phpdebugbar-close-btn, a.phpdebugbar-open-btn, a.phpdebugbar-restore-btn, a.phpdebugbar-minimize-btn , a.phpdebugbar-maximize-btn {
- width: 16px;
- height: 16px;
-}
-
-a.phpdebugbar-minimize-btn , a.phpdebugbar-maximize-btn {
- padding-right: 0 !important;
-}
-
-a.phpdebugbar-maximize-btn { display: none}
-
-a.phpdebugbar-minimize-btn { display: block}
-
-div.phpdebugbar-minimized a.phpdebugbar-maximize-btn { display: block}
-
-div.phpdebugbar-minimized a.phpdebugbar-minimize-btn { display: none}
-
-a.phpdebugbar-minimize-btn {
- background:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201792%201792%22%20id%3D%22chevron-down%22%3E%3Cpath%20d%3D%22M1683%20808l-742%20741q-19%2019-45%2019t-45-19l-742-741q-19-19-19-45.5t19-45.5l166-165q19-19%2045-19t45%2019l531%20531%20531-531q19-19%2045-19t45%2019l166%20165q19%2019%2019%2045.5t-19%2045.5z%22%2F%3E%3C%2Fsvg%3E) no-repeat 6px 6px / 14px 14px;
-}
-
-a.phpdebugbar-maximize-btn {
- background:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201792%201792%22%20id%3D%22chevron-up%22%3E%3Cpath%20d%3D%22M1683%201331l-166%20165q-19%2019-45%2019t-45-19l-531-531-531%20531q-19%2019-45%2019t-45-19l-166-165q-19-19-19-45.5t19-45.5l742-741q19-19%2045-19t45%2019l742%20741q19%2019%2019%2045.5t-19%2045.5z%22%2F%3E%3C%2Fsvg%3E) no-repeat 6px 6px / 14px 14px;
-}
-
-a.phpdebugbar-close-btn {
- background: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201792%201792%22%20id%3D%22close%22%3E%3Cpath%20d%3D%22M1490%201322q0%2040-28%2068l-136%20136q-28%2028-68%2028t-68-28l-294-294-294%20294q-28%2028-68%2028t-68-28l-136-136q-28-28-28-68t28-68l294-294-294-294q-28-28-28-68t28-68l136-136q28-28%2068-28t68%2028l294%20294%20294-294q28-28%2068-28t68%2028l136%20136q28%2028%2028%2068t-28%2068l-294%20294%20294%20294q28%2028%2028%2068z%22%2F%3E%3C%2Fsvg%3E) no-repeat 9px 6px / 14px 14px;
-}
-
-a.phpdebugbar-open-btn {
- background: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201792%201792%22%20id%3D%22folder-open%22%3E%3Cpath%20d%3D%22M1815%20952q0%2031-31%2066l-336%20396q-43%2051-120.5%2086.5t-143.5%2035.5h-1088q-34%200-60.5-13t-26.5-43q0-31%2031-66l336-396q43-51%20120.5-86.5t143.5-35.5h1088q34%200%2060.5%2013t26.5%2043zm-343-344v160h-832q-94%200-197%2047.5t-164%20119.5l-337%20396-5%206q0-4-.5-12.5t-.5-12.5v-960q0-92%2066-158t158-66h320q92%200%20158%2066t66%20158v32h544q92%200%20158%2066t66%20158z%22%2F%3E%3C%2Fsvg%3E) no-repeat 8px 6px / 14px 14px;
-}
-
-.phpdebugbar-indicator {
- position: relative;
- cursor: pointer;
-}
- .phpdebugbar-indicator span.phpdebugbar-text {
- margin-left: 5px;
- }
- .phpdebugbar-indicator span.phpdebugbar-tooltip {
- display: none;
- position: absolute;
- top: -30px;
- background: #efefef;
- opacity: .7;
- border: 1px solid #ccc;
- color: #555;
- font-size: 11px;
- padding: 2px 3px;
- z-index: 1000;
- text-align: center;
- width: 200%;
- right: 0;
- }
- .phpdebugbar-indicator:hover span.phpdebugbar-tooltip:not(.phpdebugbar-disabled) {
- display: block;
- }
-
-select.phpdebugbar-datasets-switcher {
- float: right;
- display: none;
- margin: 2px 0 0 7px;
- max-width: 200px;
- max-height: 23px;
- padding: 0;
-}
-
-/* -------------------------------------- */
-
-div.phpdebugbar-body {
- border-top: 1px solid #ccc;
- display: none;
- position: relative;
- height: 300px;
-}
-
-/* -------------------------------------- */
-
-div.phpdebugbar-panel {
- display: none;
- height: 100%;
- overflow: auto;
- width: 100%;
-}
-div.phpdebugbar-panel.phpdebugbar-active {
- display: block;
-}
-
-/* -------------------------------------- */
-
-div.phpdebugbar-mini-design a.phpdebugbar-tab {
- position: relative;
- border-right: 1px solid #ddd;
-}
- div.phpdebugbar-mini-design a.phpdebugbar-tab span.phpdebugbar-text {
- display: none;
- }
- div.phpdebugbar-mini-design a.phpdebugbar-tab:hover span.phpdebugbar-text {
- display: block;
- position: absolute;
- top: -30px;
- background: #efefef;
- opacity: .7;
- border: 1px solid #ccc;
- color: #555;
- font-size: 11px;
- padding: 2px 3px;
- z-index: 1000;
- text-align: center;
- right: 0;
- }
- div.phpdebugbar-mini-design a.phpdebugbar-tab i {
- display:inline-block;
- }
diff --git a/public/debugbar/debugbar.js b/public/debugbar/debugbar.js
deleted file mode 100644
index 144b3f58..00000000
--- a/public/debugbar/debugbar.js
+++ /dev/null
@@ -1,1216 +0,0 @@
-if (typeof(PhpDebugBar) == 'undefined') {
- // namespace
- var PhpDebugBar = {};
- PhpDebugBar.$ = jQuery;
-}
-
-(function($) {
-
- if (typeof(localStorage) == 'undefined') {
- // provide mock localStorage object for dumb browsers
- localStorage = {
- setItem: function(key, value) {},
- getItem: function(key) { return null; }
- };
- }
-
- if (typeof(PhpDebugBar.utils) == 'undefined') {
- PhpDebugBar.utils = {};
- }
-
- /**
- * Returns the value from an object property.
- * Using dots in the key, it is possible to retrieve nested property values
- *
- * @param {Object} dict
- * @param {String} key
- * @param {Object} default_value
- * @return {Object}
- */
- var getDictValue = PhpDebugBar.utils.getDictValue = function(dict, key, default_value) {
- var d = dict, parts = key.split('.');
- for (var i = 0; i < parts.length; i++) {
- if (!d[parts[i]]) {
- return default_value;
- }
- d = d[parts[i]];
- }
- return d;
- }
-
- /**
- * Counts the number of properties in an object
- *
- * @param {Object} obj
- * @return {Integer}
- */
- var getObjectSize = PhpDebugBar.utils.getObjectSize = function(obj) {
- if (Object.keys) {
- return Object.keys(obj).length;
- }
- var count = 0;
- for (var k in obj) {
- if (obj.hasOwnProperty(k)) {
- count++;
- }
- }
- return count;
- }
-
- /**
- * Returns a prefixed css class name
- *
- * @param {String} cls
- * @return {String}
- */
- PhpDebugBar.utils.csscls = function(cls, prefix) {
- if (cls.indexOf(' ') > -1) {
- var clss = cls.split(' '), out = [];
- for (var i = 0, c = clss.length; i < c; i++) {
- out.push(PhpDebugBar.utils.csscls(clss[i], prefix));
- }
- return out.join(' ');
- }
- if (cls.indexOf('.') === 0) {
- return '.' + prefix + cls.substr(1);
- }
- return prefix + cls;
- };
-
- /**
- * Creates a partial function of csscls where the second
- * argument is already defined
- *
- * @param {string} prefix
- * @return {Function}
- */
- PhpDebugBar.utils.makecsscls = function(prefix) {
- var f = function(cls) {
- return PhpDebugBar.utils.csscls(cls, prefix);
- };
- return f;
- }
-
- var csscls = PhpDebugBar.utils.makecsscls('phpdebugbar-');
-
-
- // ------------------------------------------------------------------
-
- /**
- * Base class for all elements with a visual component
- *
- * @param {Object} options
- * @constructor
- */
- var Widget = PhpDebugBar.Widget = function(options) {
- this._attributes = $.extend({}, this.defaults);
- this._boundAttributes = {};
- this.$el = $('<' + this.tagName + ' />');
- if (this.className) {
- this.$el.addClass(this.className);
- }
- this.initialize.apply(this, [options || {}]);
- this.render.apply(this);
- };
-
- $.extend(Widget.prototype, {
-
- tagName: 'div',
-
- className: null,
-
- defaults: {},
-
- /**
- * Called after the constructor
- *
- * @param {Object} options
- */
- initialize: function(options) {
- this.set(options);
- },
-
- /**
- * Called after the constructor to render the element
- */
- render: function() {},
-
- /**
- * Sets the value of an attribute
- *
- * @param {String} attr Can also be an object to set multiple attributes at once
- * @param {Object} value
- */
- set: function(attr, value) {
- if (typeof(attr) != 'string') {
- for (var k in attr) {
- this.set(k, attr[k]);
- }
- return;
- }
-
- this._attributes[attr] = value;
- if (typeof(this._boundAttributes[attr]) !== 'undefined') {
- for (var i = 0, c = this._boundAttributes[attr].length; i < c; i++) {
- this._boundAttributes[attr][i].apply(this, [value]);
- }
- }
- },
-
- /**
- * Checks if an attribute exists and is not null
- *
- * @param {String} attr
- * @return {[type]} [description]
- */
- has: function(attr) {
- return typeof(this._attributes[attr]) !== 'undefined' && this._attributes[attr] !== null;
- },
-
- /**
- * Returns the value of an attribute
- *
- * @param {String} attr
- * @return {Object}
- */
- get: function(attr) {
- return this._attributes[attr];
- },
-
- /**
- * Registers a callback function that will be called whenever the value of the attribute changes
- *
- * If cb is a jQuery element, text() will be used to fill the element
- *
- * @param {String} attr
- * @param {Function} cb
- */
- bindAttr: function(attr, cb) {
- if ($.isArray(attr)) {
- for (var i = 0, c = attr.length; i < c; i++) {
- this.bindAttr(attr[i], cb);
- }
- return;
- }
-
- if (typeof(this._boundAttributes[attr]) == 'undefined') {
- this._boundAttributes[attr] = [];
- }
- if (typeof(cb) == 'object') {
- var el = cb;
- cb = function(value) { el.text(value || ''); };
- }
- this._boundAttributes[attr].push(cb);
- if (this.has(attr)) {
- cb.apply(this, [this._attributes[attr]]);
- }
- }
-
- });
-
-
- /**
- * Creates a subclass
- *
- * Code from Backbone.js
- *
- * @param {Array} props Prototype properties
- * @return {Function}
- */
- Widget.extend = function(props) {
- var parent = this;
-
- var child = function() { return parent.apply(this, arguments); };
- $.extend(child, parent);
-
- var Surrogate = function() { this.constructor = child; };
- Surrogate.prototype = parent.prototype;
- child.prototype = new Surrogate;
- $.extend(child.prototype, props);
-
- child.__super__ = parent.prototype;
-
- return child;
- };
-
- // ------------------------------------------------------------------
-
- /**
- * Tab
- *
- * A tab is composed of a tab label which is always visible and
- * a tab panel which is visible only when the tab is active.
- *
- * The panel must contain a widget. A widget is an object which has
- * an element property containing something appendable to a jQuery object.
- *
- * Options:
- * - title
- * - badge
- * - widget
- * - data: forward data to widget data
- */
- var Tab = Widget.extend({
-
- className: csscls('panel'),
-
- render: function() {
- this.$tab = $('').addClass(csscls('tab'));
-
- this.$icon = $('').appendTo(this.$tab);
- this.bindAttr('icon', function(icon) {
- if (icon) {
- this.$icon.attr('class', 'phpdebugbar-fa phpdebugbar-fa-' + icon);
- } else {
- this.$icon.attr('class', '');
- }
- });
-
- this.bindAttr('title', $('').addClass(csscls('text')).appendTo(this.$tab));
-
- this.$badge = $('').addClass(csscls('badge')).appendTo(this.$tab);
- this.bindAttr('badge', function(value) {
- if (value !== null) {
- this.$badge.text(value);
- this.$badge.addClass(csscls('visible'));
- } else {
- this.$badge.removeClass(csscls('visible'));
- }
- });
-
- this.bindAttr('widget', function(widget) {
- this.$el.empty().append(widget.$el);
- });
-
- this.bindAttr('data', function(data) {
- if (this.has('widget')) {
- this.get('widget').set('data', data);
- }
- })
- }
-
- });
-
- // ------------------------------------------------------------------
-
- /**
- * Indicator
- *
- * An indicator is a text and an icon to display single value information
- * right inside the always visible part of the debug bar
- *
- * Options:
- * - icon
- * - title
- * - tooltip
- * - data: alias of title
- */
- var Indicator = Widget.extend({
-
- tagName: 'span',
-
- className: csscls('indicator'),
-
- render: function() {
- this.$icon = $('').appendTo(this.$el);
- this.bindAttr('icon', function(icon) {
- if (icon) {
- this.$icon.attr('class', 'phpdebugbar-fa phpdebugbar-fa-' + icon);
- } else {
- this.$icon.attr('class', '');
- }
- });
-
- this.bindAttr(['title', 'data'], $('').addClass(csscls('text')).appendTo(this.$el));
-
- this.$tooltip = $('').addClass(csscls('tooltip disabled')).appendTo(this.$el);
- this.bindAttr('tooltip', function(tooltip) {
- if (tooltip) {
- this.$tooltip.text(tooltip).removeClass(csscls('disabled'));
- } else {
- this.$tooltip.addClass(csscls('disabled'));
- }
- });
- }
-
- });
-
- // ------------------------------------------------------------------
-
- /**
- * Dataset title formater
- *
- * Formats the title of a dataset for the select box
- */
- var DatasetTitleFormater = PhpDebugBar.DatasetTitleFormater = function(debugbar) {
- this.debugbar = debugbar;
- };
-
- $.extend(DatasetTitleFormater.prototype, {
-
- /**
- * Formats the title of a dataset
- *
- * @this {DatasetTitleFormater}
- * @param {String} id
- * @param {Object} data
- * @param {String} suffix
- * @return {String}
- */
- format: function(id, data, suffix) {
- if (suffix) {
- suffix = ' ' + suffix;
- } else {
- suffix = '';
- }
-
- var nb = getObjectSize(this.debugbar.datasets) + 1;
-
- if (typeof(data['__meta']) === 'undefined') {
- return "#" + nb + suffix;
- }
-
- var uri = data['__meta']['uri'], filename;
- if (uri.length && uri.charAt(uri.length - 1) === '/') {
- // URI ends in a trailing /: get the portion before then to avoid returning an empty string
- filename = uri.substr(0, uri.length - 1); // strip trailing '/'
- filename = filename.substr(filename.lastIndexOf('/') + 1); // get last path segment
- filename += '/'; // add the trailing '/' back
- } else {
- filename = uri.substr(uri.lastIndexOf('/') + 1);
- }
-
- // truncate the filename in the label, if it's too long
- var maxLength = 150;
- if (filename.length > maxLength) {
- filename = filename.substr(0, maxLength) + '...';
- }
-
- var label = "#" + nb + " " + filename + suffix + ' (' + data['__meta']['datetime'].split(' ')[1] + ')';
- return label;
- }
-
- });
-
- // ------------------------------------------------------------------
-
-
- /**
- * DebugBar
- *
- * Creates a bar that appends itself to the body of your page
- * and sticks to the bottom.
- *
- * The bar can be customized by adding tabs and indicators.
- * A data map is used to fill those controls with data provided
- * from datasets.
- */
- var DebugBar = PhpDebugBar.DebugBar = Widget.extend({
-
- className: "phpdebugbar " + csscls('minimized'),
-
- options: {
- bodyMarginBottom: true,
- bodyMarginBottomHeight: 0
- },
-
- initialize: function() {
- this.controls = {};
- this.dataMap = {};
- this.datasets = {};
- this.firstTabName = null;
- this.activePanelName = null;
- this.datesetTitleFormater = new DatasetTitleFormater(this);
- this.options.bodyMarginBottomHeight = parseInt($('body').css('margin-bottom'));
- this.registerResizeHandler();
- },
-
- /**
- * Register resize event, for resize debugbar with reponsive css.
- *
- * @this {DebugBar}
- */
- registerResizeHandler: function() {
- if (typeof this.resize.bind == 'undefined') return;
-
- var f = this.resize.bind(this);
- this.respCSSSize = 0;
- $(window).resize(f);
- setTimeout(f, 20);
- },
-
- /**
- * Resizes the debugbar to fit the current browser window
- */
- resize: function() {
- var contentSize = this.respCSSSize;
- if (this.respCSSSize == 0) {
- this.$header.find("> div > *:visible").each(function () {
- contentSize += $(this).outerWidth();
- });
- }
-
- var currentSize = this.$header.width();
- var cssClass = "phpdebugbar-mini-design";
- var bool = this.$header.hasClass(cssClass);
-
- if (currentSize <= contentSize && !bool) {
- this.respCSSSize = contentSize;
- this.$header.addClass(cssClass);
- } else if (contentSize < currentSize && bool) {
- this.respCSSSize = 0;
- this.$header.removeClass(cssClass);
- }
-
- // Reset height to ensure bar is still visible
- this.setHeight(this.$body.height());
- },
-
- /**
- * Initialiazes the UI
- *
- * @this {DebugBar}
- */
- render: function() {
- var self = this;
- this.$el.appendTo('body');
- this.$dragCapture = $('
').addClass(csscls('drag-capture')).appendTo(this.$el);
- this.$resizehdle = $('').addClass(csscls('resize-handle')).appendTo(this.$el);
- this.$header = $('').addClass(csscls('header')).appendTo(this.$el);
- this.$headerLeft = $('').addClass(csscls('header-left')).appendTo(this.$header);
- this.$headerRight = $('').addClass(csscls('header-right')).appendTo(this.$header);
- var $body = this.$body = $('').addClass(csscls('body')).appendTo(this.$el);
- this.recomputeBottomOffset();
-
- // dragging of resize handle
- var pos_y, orig_h;
- this.$resizehdle.on('mousedown', function(e) {
- orig_h = $body.height(), pos_y = e.pageY;
- $body.parents().on('mousemove', mousemove).on('mouseup', mouseup);
- self.$dragCapture.show();
- e.preventDefault();
- });
- var mousemove = function(e) {
- var h = orig_h + (pos_y - e.pageY);
- self.setHeight(h);
- };
- var mouseup = function() {
- $body.parents().off('mousemove', mousemove).off('mouseup', mouseup);
- self.$dragCapture.hide();
- };
-
- // close button
- this.$closebtn = $('').addClass(csscls('close-btn')).appendTo(this.$headerRight);
- this.$closebtn.click(function() {
- self.close();
- });
-
- // minimize button
- this.$minimizebtn = $('').addClass(csscls('minimize-btn') ).appendTo(this.$headerRight);
- this.$minimizebtn.click(function() {
- self.minimize();
- });
-
- // maximize button
- this.$maximizebtn = $('').addClass(csscls('maximize-btn') ).appendTo(this.$headerRight);
- this.$maximizebtn.click(function() {
- self.restore();
- });
-
- // restore button
- this.$restorebtn = $('').addClass(csscls('restore-btn')).hide().appendTo(this.$el);
- this.$restorebtn.click(function() {
- self.restore();
- });
-
- // open button
- this.$openbtn = $('').addClass(csscls('open-btn')).appendTo(this.$headerRight).hide();
- this.$openbtn.click(function() {
- self.openHandler.show(function(id, dataset) {
- self.addDataSet(dataset, id, "(opened)");
- self.showTab();
- });
- });
-
- // select box for data sets
- this.$datasets = $('').addClass(csscls('datasets-switcher')).appendTo(this.$headerRight);
- this.$datasets.change(function() {
- self.dataChangeHandler(self.datasets[this.value]);
- self.showTab();
- });
- },
-
- /**
- * Sets the height of the debugbar body section
- * Forces the height to lie within a reasonable range
- * Stores the height in local storage so it can be restored
- * Resets the document body bottom offset
- *
- * @this {DebugBar}
- */
- setHeight: function(height) {
- var min_h = 40;
- var max_h = $(window).innerHeight() - this.$header.height() - 10;
- height = Math.min(height, max_h);
- height = Math.max(height, min_h);
- this.$body.css('height', height);
- localStorage.setItem('phpdebugbar-height', height);
- this.recomputeBottomOffset();
- },
-
- /**
- * Restores the state of the DebugBar using localStorage
- * This is not called by default in the constructor and
- * needs to be called by subclasses in their init() method
- *
- * @this {DebugBar}
- */
- restoreState: function() {
- // bar height
- var height = localStorage.getItem('phpdebugbar-height');
- this.setHeight(height || this.$body.height());
-
- // bar visibility
- var open = localStorage.getItem('phpdebugbar-open');
- if (open && open == '0') {
- this.close();
- } else {
- var visible = localStorage.getItem('phpdebugbar-visible');
- if (visible && visible == '1') {
- var tab = localStorage.getItem('phpdebugbar-tab');
- if (this.isTab(tab)) {
- this.showTab(tab);
- }
- }
- }
- },
-
- /**
- * Creates and adds a new tab
- *
- * @this {DebugBar}
- * @param {String} name Internal name
- * @param {Object} widget A widget object with an element property
- * @param {String} title The text in the tab, if not specified, name will be used
- * @return {Tab}
- */
- createTab: function(name, widget, title) {
- var tab = new Tab({
- title: title || (name.replace(/[_\-]/g, ' ').charAt(0).toUpperCase() + name.slice(1)),
- widget: widget
- });
- return this.addTab(name, tab);
- },
-
- /**
- * Adds a new tab
- *
- * @this {DebugBar}
- * @param {String} name Internal name
- * @param {Tab} tab Tab object
- * @return {Tab}
- */
- addTab: function(name, tab) {
- if (this.isControl(name)) {
- throw new Error(name + ' already exists');
- }
-
- var self = this;
- tab.$tab.appendTo(this.$headerLeft).click(function() {
- if (!self.isMinimized() && self.activePanelName == name) {
- self.minimize();
- } else {
- self.showTab(name);
- }
- });
- tab.$el.appendTo(this.$body);
-
- this.controls[name] = tab;
- if (this.firstTabName == null) {
- this.firstTabName = name;
- }
- return tab;
- },
-
- /**
- * Creates and adds an indicator
- *
- * @this {DebugBar}
- * @param {String} name Internal name
- * @param {String} icon
- * @param {String} tooltip
- * @param {String} position "right" or "left", default is "right"
- * @return {Indicator}
- */
- createIndicator: function(name, icon, tooltip, position) {
- var indicator = new Indicator({
- icon: icon,
- tooltip: tooltip
- });
- return this.addIndicator(name, indicator, position);
- },
-
- /**
- * Adds an indicator
- *
- * @this {DebugBar}
- * @param {String} name Internal name
- * @param {Indicator} indicator Indicator object
- * @return {Indicator}
- */
- addIndicator: function(name, indicator, position) {
- if (this.isControl(name)) {
- throw new Error(name + ' already exists');
- }
-
- if (position == 'left') {
- indicator.$el.insertBefore(this.$headerLeft.children().first());
- } else {
- indicator.$el.appendTo(this.$headerRight);
- }
-
- this.controls[name] = indicator;
- return indicator;
- },
-
- /**
- * Returns a control
- *
- * @param {String} name
- * @return {Object}
- */
- getControl: function(name) {
- if (this.isControl(name)) {
- return this.controls[name];
- }
- },
-
- /**
- * Checks if there's a control under the specified name
- *
- * @this {DebugBar}
- * @param {String} name
- * @return {Boolean}
- */
- isControl: function(name) {
- return typeof(this.controls[name]) != 'undefined';
- },
-
- /**
- * Checks if a tab with the specified name exists
- *
- * @this {DebugBar}
- * @param {String} name
- * @return {Boolean}
- */
- isTab: function(name) {
- return this.isControl(name) && this.controls[name] instanceof Tab;
- },
-
- /**
- * Checks if an indicator with the specified name exists
- *
- * @this {DebugBar}
- * @param {String} name
- * @return {Boolean}
- */
- isIndicator: function(name) {
- return this.isControl(name) && this.controls[name] instanceof Indicator;
- },
-
- /**
- * Removes all tabs and indicators from the debug bar and hides it
- *
- * @this {DebugBar}
- */
- reset: function() {
- this.minimize();
- var self = this;
- $.each(this.controls, function(name, control) {
- if (self.isTab(name)) {
- control.$tab.remove();
- }
- control.$el.remove();
- });
- this.controls = {};
- },
-
- /**
- * Open the debug bar and display the specified tab
- *
- * @this {DebugBar}
- * @param {String} name If not specified, display the first tab
- */
- showTab: function(name) {
- if (!name) {
- if (this.activePanelName) {
- name = this.activePanelName;
- } else {
- name = this.firstTabName;
- }
- }
-
- if (!this.isTab(name)) {
- throw new Error("Unknown tab '" + name + "'");
- }
-
- this.$resizehdle.show();
- this.$body.show();
- this.recomputeBottomOffset();
-
- $(this.$header).find('> div > .' + csscls('active')).removeClass(csscls('active'));
- $(this.$body).find('> .' + csscls('active')).removeClass(csscls('active'));
-
- this.controls[name].$tab.addClass(csscls('active'));
- this.controls[name].$el.addClass(csscls('active'));
- this.activePanelName = name;
-
- this.$el.removeClass(csscls('minimized'));
- localStorage.setItem('phpdebugbar-visible', '1');
- localStorage.setItem('phpdebugbar-tab', name);
- this.resize();
- },
-
- /**
- * Hide panels and minimize the debug bar
- *
- * @this {DebugBar}
- */
- minimize: function() {
- this.$header.find('> div > .' + csscls('active')).removeClass(csscls('active'));
- this.$body.hide();
- this.$resizehdle.hide();
- this.recomputeBottomOffset();
- localStorage.setItem('phpdebugbar-visible', '0');
- this.$el.addClass(csscls('minimized'));
- this.resize();
- },
-
- /**
- * Checks if the panel is minimized
- *
- * @return {Boolean}
- */
- isMinimized: function() {
- return this.$el.hasClass(csscls('minimized'));
- },
-
- /**
- * Close the debug bar
- *
- * @this {DebugBar}
- */
- close: function() {
- this.$resizehdle.hide();
- this.$header.hide();
- this.$body.hide();
- this.$restorebtn.show();
- localStorage.setItem('phpdebugbar-open', '0');
- this.$el.addClass(csscls('closed'));
- this.recomputeBottomOffset();
- },
-
- /**
- * Checks if the panel is closed
- *
- * @return {Boolean}
- */
- isClosed: function() {
- return this.$el.hasClass(csscls('closed'));
- },
-
- /**
- * Restore the debug bar
- *
- * @this {DebugBar}
- */
- restore: function() {
- this.$resizehdle.show();
- this.$header.show();
- this.$restorebtn.hide();
- localStorage.setItem('phpdebugbar-open', '1');
- var tab = localStorage.getItem('phpdebugbar-tab');
- if (this.isTab(tab)) {
- this.showTab(tab);
- } else {
- this.showTab();
- }
- this.$el.removeClass(csscls('closed'));
- this.resize();
- },
-
- /**
- * Recomputes the margin-bottom css property of the body so
- * that the debug bar never hides any content
- */
- recomputeBottomOffset: function() {
- if (this.options.bodyMarginBottom) {
- if (this.isClosed()) {
- return $('body').css('margin-bottom', this.options.bodyMarginBottomHeight || '');
- }
-
- var offset = parseInt(this.$el.height()) + (this.options.bodyMarginBottomHeight || 0);
- $('body').css('margin-bottom', offset);
- }
- },
-
- /**
- * Sets the data map used by dataChangeHandler to populate
- * indicators and widgets
- *
- * A data map is an object where properties are control names.
- * The value of each property should be an array where the first
- * item is the name of a property from the data object (nested properties
- * can be specified) and the second item the default value.
- *
- * Example:
- * {"memory": ["memory.peak_usage_str", "0B"]}
- *
- * @this {DebugBar}
- * @param {Object} map
- */
- setDataMap: function(map) {
- this.dataMap = map;
- },
-
- /**
- * Same as setDataMap() but appends to the existing map
- * rather than replacing it
- *
- * @this {DebugBar}
- * @param {Object} map
- */
- addDataMap: function(map) {
- $.extend(this.dataMap, map);
- },
-
- /**
- * Resets datasets and add one set of data
- *
- * For this method to be usefull, you need to specify
- * a dataMap using setDataMap()
- *
- * @this {DebugBar}
- * @param {Object} data
- * @return {String} Dataset's id
- */
- setData: function(data) {
- this.datasets = {};
- return this.addDataSet(data);
- },
-
- /**
- * Adds a dataset
- *
- * If more than one dataset are added, the dataset selector
- * will be displayed.
- *
- * For this method to be usefull, you need to specify
- * a dataMap using setDataMap()
- *
- * @this {DebugBar}
- * @param {Object} data
- * @param {String} id The name of this set, optional
- * @param {String} suffix
- * @param {Bool} show Whether to show the new dataset, optional (default: true)
- * @return {String} Dataset's id
- */
- addDataSet: function(data, id, suffix, show) {
- var label = this.datesetTitleFormater.format(id, data, suffix);
- id = id || (getObjectSize(this.datasets) + 1);
- this.datasets[id] = data;
-
- this.$datasets.append($(''));
- if (this.$datasets.children().length > 1) {
- this.$datasets.show();
- }
-
- if (typeof(show) == 'undefined' || show) {
- this.showDataSet(id);
- }
- return id;
- },
-
- /**
- * Loads a dataset using the open handler
- *
- * @param {String} id
- * @param {Bool} show Whether to show the new dataset, optional (default: true)
- */
- loadDataSet: function(id, suffix, callback, show) {
- if (!this.openHandler) {
- throw new Error('loadDataSet() needs an open handler');
- }
- var self = this;
- this.openHandler.load(id, function(data) {
- self.addDataSet(data, id, suffix, show);
- self.resize();
- callback && callback(data);
- });
- },
-
- /**
- * Returns the data from a dataset
- *
- * @this {DebugBar}
- * @param {String} id
- * @return {Object}
- */
- getDataSet: function(id) {
- return this.datasets[id];
- },
-
- /**
- * Switch the currently displayed dataset
- *
- * @this {DebugBar}
- * @param {String} id
- */
- showDataSet: function(id) {
- this.dataChangeHandler(this.datasets[id]);
- this.$datasets.val(id);
- },
-
- /**
- * Called when the current dataset is modified.
- *
- * @this {DebugBar}
- * @param {Object} data
- */
- dataChangeHandler: function(data) {
- var self = this;
- $.each(this.dataMap, function(key, def) {
- var d = getDictValue(data, def[0], def[1]);
- if (key.indexOf(':') != -1) {
- key = key.split(':');
- self.getControl(key[0]).set(key[1], d);
- } else {
- self.getControl(key).set('data', d);
- }
- });
- },
-
- /**
- * Sets the handler to open past dataset
- *
- * @this {DebugBar}
- * @param {object} handler
- */
- setOpenHandler: function(handler) {
- this.openHandler = handler;
- if (handler !== null) {
- this.$openbtn.show();
- } else {
- this.$openbtn.hide();
- }
- },
-
- /**
- * Returns the handler to open past dataset
- *
- * @this {DebugBar}
- * @return {object}
- */
- getOpenHandler: function() {
- return this.openHandler;
- }
-
- });
-
- DebugBar.Tab = Tab;
- DebugBar.Indicator = Indicator;
-
- // ------------------------------------------------------------------
-
- /**
- * AjaxHandler
- *
- * Extract data from headers of an XMLHttpRequest and adds a new dataset
- *
- * @param {Bool} autoShow Whether to immediately show new datasets, optional (default: true)
- */
- var AjaxHandler = PhpDebugBar.AjaxHandler = function(debugbar, headerName, autoShow) {
- this.debugbar = debugbar;
- this.headerName = headerName || 'phpdebugbar';
- this.autoShow = typeof(autoShow) == 'undefined' ? true : autoShow;
- };
-
- $.extend(AjaxHandler.prototype, {
-
- /**
- * Handles a Fetch API Response or an XMLHttpRequest
- *
- * @this {AjaxHandler}
- * @param {Response|XMLHttpRequest} response
- * @return {Bool}
- */
- handle: function(response) {
- // Check if the debugbar header is available
- if (this.isFetch(response) && !response.headers.has(this.headerName + '-id')) {
- return true;
- } else if (this.isXHR(response) && response.getAllResponseHeaders().indexOf(this.headerName) === -1) {
- return true;
- }
- if (!this.loadFromId(response)) {
- return this.loadFromData(response);
- }
- return true;
- },
-
- getHeader: function(response, header) {
- if (this.isFetch(response)) {
- return response.headers.get(header)
- }
-
- return response.getResponseHeader(header)
- },
-
- isFetch: function(response) {
- return Object.prototype.toString.call(response) == '[object Response]'
- },
-
- isXHR: function(response) {
- return Object.prototype.toString.call(response) == '[object XMLHttpRequest]'
- },
-
- /**
- * Checks if the HEADER-id exists and loads the dataset using the open handler
- *
- * @param {Response|XMLHttpRequest} response
- * @return {Bool}
- */
- loadFromId: function(response) {
- var id = this.extractIdFromHeaders(response);
- if (id && this.debugbar.openHandler) {
- this.debugbar.loadDataSet(id, "(ajax)", undefined, this.autoShow);
- return true;
- }
- return false;
- },
-
- /**
- * Extracts the id from the HEADER-id
- *
- * @param {Response|XMLHttpRequest} response
- * @return {String}
- */
- extractIdFromHeaders: function(response) {
- return this.getHeader(response, this.headerName + '-id');
- },
-
- /**
- * Checks if the HEADER exists and loads the dataset
- *
- * @param {Response|XMLHttpRequest} response
- * @return {Bool}
- */
- loadFromData: function(response) {
- var raw = this.extractDataFromHeaders(response);
- if (!raw) {
- return false;
- }
-
- var data = this.parseHeaders(raw);
- if (data.error) {
- throw new Error('Error loading debugbar data: ' + data.error);
- } else if(data.data) {
- this.debugbar.addDataSet(data.data, data.id, "(ajax)", this.autoShow);
- }
- return true;
- },
-
- /**
- * Extract the data as a string from headers of an XMLHttpRequest
- *
- * @this {AjaxHandler}
- * @param {Response|XMLHttpRequest} response
- * @return {string}
- */
- extractDataFromHeaders: function(response) {
- var data = this.getHeader(response, this.headerName);
- if (!data) {
- return;
- }
- for (var i = 1;; i++) {
- var header = this.getHeader(response, this.headerName + '-' + i);
- if (!header) {
- break;
- }
- data += header;
- }
- return decodeURIComponent(data);
- },
-
- /**
- * Parses the string data into an object
- *
- * @this {AjaxHandler}
- * @param {string} data
- * @return {string}
- */
- parseHeaders: function(data) {
- return JSON.parse(data);
- },
-
- /**
- * Attaches an event listener to fetch
- *
- * @this {AjaxHandler}
- */
- bindToFetch: function() {
- var self = this;
- var proxied = window.fetch;
-
- if (proxied !== undefined && proxied.polyfill !== undefined) {
- return;
- }
-
- window.fetch = function () {
- var promise = proxied.apply(this, arguments);
-
- promise.then(function (response) {
- self.handle(response);
- });
-
- return promise;
- };
- },
-
- /**
- * Attaches an event listener to jQuery.ajaxComplete()
- *
- * @this {AjaxHandler}
- * @param {jQuery} jq Optional
- */
- bindToJquery: function(jq) {
- var self = this;
- jq(document).ajaxComplete(function(e, xhr, settings) {
- if (!settings.ignoreDebugBarAjaxHandler) {
- self.handle(xhr);
- }
- });
- },
-
- /**
- * Attaches an event listener to XMLHttpRequest
- *
- * @this {AjaxHandler}
- */
- bindToXHR: function() {
- var self = this;
- var proxied = XMLHttpRequest.prototype.open;
- XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
- var xhr = this;
- this.addEventListener("readystatechange", function() {
- var skipUrl = self.debugbar.openHandler ? self.debugbar.openHandler.get('url') : null;
- if (xhr.readyState == 4 && url.indexOf(skipUrl) !== 0) {
- self.handle(xhr);
- }
- }, false);
- proxied.apply(this, Array.prototype.slice.call(arguments));
- };
- }
-
- });
-
-})(PhpDebugBar.$);
diff --git a/public/debugbar/dotkernel.css b/public/debugbar/dotkernel.css
deleted file mode 100644
index ca79a5b1..00000000
--- a/public/debugbar/dotkernel.css
+++ /dev/null
@@ -1,50 +0,0 @@
-.phpdebugbar-header {
- background-color: #C60B31 !important;
-}
-
-.phpdebugbar-tab, .phpdebugbar-indicator {
- color: #FFFFFF !important;
-}
-
-.phpdebugbar-badge {
- vertical-align: baseline !important;
-}
-
-.phpdebugbar-active {
- color: #000000 !important;
-}
-
-.phpdebugbar-panel {
- background-color: #F8F8F8 !important;
-}
-
-.phpdebugbar-widgets-kvlist {
- font-size: .75rem !important;
-}
-
-.phpdebugbar-widgets-sql {
- font-size: .75rem !important;
-}
-
-.phpdebugbar-widgets-key {
- text-align: right !important;
-}
-
-.phpdebugbar-widgets-value {
- border-left: 1px solid #DDDDDD !important;
- background-color: #FFFFFF !important;
-}
-
-.phpdebugbar-widgets-list-item {
- background-color: #FFFFFF !important;
- padding: .75rem .5rem !important;
-}
-
-.phpdebugbar-widgets-params tr > td:nth-child(1) {
- background-color: #F8F8F8 !important;
- text-align: right !important;
-}
-
-.phpdebugbar-widgets-params tr > td:nth-child(2) {
- background-color: #FFFFFF !important;
-}
diff --git a/public/debugbar/openhandler.css b/public/debugbar/openhandler.css
deleted file mode 100644
index 863a8bd5..00000000
--- a/public/debugbar/openhandler.css
+++ /dev/null
@@ -1,70 +0,0 @@
-div.phpdebugbar-openhandler-overlay {
- position: fixed;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- background: #000;
- opacity: .3;
- z-index: 20000;
-}
-
-div.phpdebugbar-openhandler {
- position: fixed;
- margin: auto;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- width: 70%;
- height: 70%;
- background: #fff;
- color: #000;
- border: 2px solid #888;
- overflow: auto;
- z-index: 20001;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- padding-bottom: 10px;
-}
- div.phpdebugbar-openhandler a {
- color: #555;
- }
- div.phpdebugbar-openhandler .phpdebugbar-openhandler-header {
- background: #efefef url(data:image/png;base64,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) no-repeat 5px 4px;
- padding-left: 29px;
- min-height: 26px;
- line-height: 25px;
- color: #555;
- margin-bottom: 10px;
- }
- div.phpdebugbar-openhandler .phpdebugbar-openhandler-header a {
- font-size: 14px;
- color: #555;
- text-decoration: none;
- float: right;
- padding: 5px 8px;
- }
- div.phpdebugbar-openhandler table {
- width: 100%;
- table-layout: fixed;
- font-size: 14px;
- }
- div.phpdebugbar-openhandler table td {
- padding: 6px 3px;
- border-bottom: 1px solid #ddd;
- }
- div.phpdebugbar-openhandler table td a{
- display: block;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions {
- text-align: center;
- padding: 7px 0;
- }
- div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions a {
- margin: 0 10px;
- color: #555;
- }
diff --git a/public/debugbar/openhandler.js b/public/debugbar/openhandler.js
deleted file mode 100644
index 5633043f..00000000
--- a/public/debugbar/openhandler.js
+++ /dev/null
@@ -1,202 +0,0 @@
-if (typeof(PhpDebugBar) == 'undefined') {
- // namespace
- var PhpDebugBar = {};
- PhpDebugBar.$ = jQuery;
-}
-
-(function($) {
-
- var csscls = function(cls) {
- return PhpDebugBar.utils.csscls(cls, 'phpdebugbar-openhandler-');
- };
-
- PhpDebugBar.OpenHandler = PhpDebugBar.Widget.extend({
-
- className: 'phpdebugbar-openhandler',
-
- defaults: {
- items_per_page: 20
- },
-
- render: function() {
- var self = this;
-
- this.$el.appendTo('body').hide();
- this.$closebtn = $('');
- this.$table = $('');
- $('PHP DebugBar | Open
').addClass(csscls('header')).append(this.$closebtn).appendTo(this.$el);
- $('Date | Method | URL | IP | Filter data |
---|
').append(this.$table).appendTo(this.$el);
- this.$actions = $('').addClass(csscls('actions')).appendTo(this.$el);
-
- this.$closebtn.on('click', function() {
- self.hide();
- });
-
- this.$loadmorebtn = $('Load more')
- .appendTo(this.$actions)
- .on('click', function() {
- self.find(self.last_find_request, self.last_find_request.offset + self.get('items_per_page'), self.handleFind.bind(self));
- });
-
- this.$showonlycurrentbtn = $('Show only current URL')
- .appendTo(this.$actions)
- .on('click', function() {
- self.$table.empty();
- self.find({uri: window.location.pathname}, 0, self.handleFind.bind(self));
- });
-
- this.$showallbtn = $('Show all')
- .appendTo(this.$actions)
- .on('click', function() {
- self.refresh();
- });
-
- this.$clearbtn = $('Delete all')
- .appendTo(this.$actions)
- .on('click', function() {
- self.clear(function() {
- self.hide();
- });
- });
-
- this.addSearch();
-
- this.$overlay = $('').addClass(csscls('overlay')).hide().appendTo('body');
- this.$overlay.on('click', function() {
- self.hide();
- });
- },
-
- refresh: function() {
- this.$table.empty();
- this.$loadmorebtn.show();
- this.find({}, 0, this.handleFind.bind(this));
- },
-
- addSearch: function(){
- var self = this;
- var searchBtn = $('')
- .text('Search')
- .attr('type', 'submit')
- .on('click', function(e) {
- self.$table.empty();
- var search = {};
- var a = $(this).parent().serializeArray();
- $.each(a, function() {
- if(this.value){
- search[this.name] = this.value;
- }
- });
-
- self.find(search, 0, self.handleFind.bind(self));
- e.preventDefault();
- });
-
- $('')
- .append('
Filter results
')
- .append('Method:
')
- .append('Uri:
')
- .append('IP:
')
- .append(searchBtn)
- .appendTo(this.$actions);
- },
-
- handleFind: function(data) {
- var self = this;
- $.each(data, function(i, meta) {
- var a = $('')
- .text('Load dataset')
- .on('click', function(e) {
- self.hide();
- self.load(meta['id'], function(data) {
- self.callback(meta['id'], data);
- });
- e.preventDefault();
- });
-
- var method = $('')
- .text(meta['method'])
- .on('click', function(e) {
- self.$table.empty();
- self.find({method: meta['method']}, 0, self.handleFind.bind(self));
- e.preventDefault();
- });
-
- var uri = $('')
- .text(meta['uri'])
- .on('click', function(e) {
- self.hide();
- self.load(meta['id'], function(data) {
- self.callback(meta['id'], data);
- });
- e.preventDefault();
- });
-
- var ip = $('')
- .text(meta['ip'])
- .on('click', function(e) {
- self.$table.empty();
- self.find({ip: meta['ip']}, 0, self.handleFind.bind(self));
- e.preventDefault();
- });
-
- var search = $('')
- .text('Show URL')
- .on('click', function(e) {
- self.$table.empty();
- self.find({uri: meta['uri']}, 0, self.handleFind.bind(self));
- e.preventDefault();
- });
-
- $('
')
- .append('' + meta['datetime'] + ' | ')
- .append('' + meta['method'] + ' | ')
- .append($(' | ').append(uri))
- .append($(' | ').append(ip))
- .append($(' | ').append(search))
- .appendTo(self.$table);
- });
- if (data.length < this.get('items_per_page')) {
- this.$loadmorebtn.hide();
- }
- },
-
- show: function(callback) {
- this.callback = callback;
- this.$el.show();
- this.$overlay.show();
- this.refresh();
- },
-
- hide: function() {
- this.$el.hide();
- this.$overlay.hide();
- },
-
- find: function(filters, offset, callback) {
- var data = $.extend({}, filters, {max: this.get('items_per_page'), offset: offset || 0});
- this.last_find_request = data;
- this.ajax(data, callback);
- },
-
- load: function(id, callback) {
- this.ajax({op: "get", id: id}, callback);
- },
-
- clear: function(callback) {
- this.ajax({op: "clear"}, callback);
- },
-
- ajax: function(data, callback) {
- $.ajax({
- dataType: 'json',
- url: this.get('url'),
- data: data,
- success: callback,
- ignoreDebugBarAjaxHandler: true
- });
- }
-
- });
-
-})(PhpDebugBar.$);
diff --git a/public/debugbar/vendor/font-awesome/css/font-awesome.min.css b/public/debugbar/vendor/font-awesome/css/font-awesome.min.css
deleted file mode 100644
index 3559d52d..00000000
--- a/public/debugbar/vendor/font-awesome/css/font-awesome.min.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*!
- * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
- * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:'PhpDebugbarFontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.phpdebugbar-fa{display:inline-block;font:normal normal normal 14px/1 PhpDebugbarFontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.phpdebugbar-fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.phpdebugbar-fa-2x{font-size:2em}.phpdebugbar-fa-3x{font-size:3em}.phpdebugbar-fa-4x{font-size:4em}.phpdebugbar-fa-5x{font-size:5em}.phpdebugbar-fa-fw{width:1.28571429em;text-align:center}.phpdebugbar-fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.phpdebugbar-fa-ul>li{position:relative}.phpdebugbar-fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.phpdebugbar-fa-li.phpdebugbar-fa-lg{left:-1.85714286em}.phpdebugbar-fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.phpdebugbar-fa-pull-left{float:left}.phpdebugbar-fa-pull-right{float:right}.phpdebugbar-fa.phpdebugbar-fa-pull-left{margin-right:.3em}.phpdebugbar-fa.phpdebugbar-fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.phpdebugbar-fa.pull-left{margin-right:.3em}.phpdebugbar-fa.pull-right{margin-left:.3em}.phpdebugbar-fa-spin{-webkit-animation:phpdebugbar-fa-spin 2s infinite linear;animation:phpdebugbar-fa-spin 2s infinite linear}.phpdebugbar-fa-pulse{-webkit-animation:phpdebugbar-fa-spin 1s infinite steps(8);animation:phpdebugbar-fa-spin 1s infinite steps(8)}@-webkit-keyframes phpdebugbar-fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes phpdebugbar-fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.phpdebugbar-fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.phpdebugbar-fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.phpdebugbar-fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.phpdebugbar-fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.phpdebugbar-fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .phpdebugbar-fa-rotate-90,:root .phpdebugbar-fa-rotate-180,:root .phpdebugbar-fa-rotate-270,:root .phpdebugbar-fa-flip-horizontal,:root .phpdebugbar-fa-flip-vertical{filter:none}.phpdebugbar-fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.phpdebugbar-fa-stack-1x,.phpdebugbar-fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.phpdebugbar-fa-stack-1x{line-height:inherit}.phpdebugbar-fa-stack-2x{font-size:2em}.phpdebugbar-fa-inverse{color:#fff}.phpdebugbar-fa-glass:before{content:"\f000"}.phpdebugbar-fa-music:before{content:"\f001"}.phpdebugbar-fa-search:before{content:"\f002"}.phpdebugbar-fa-envelope-o:before{content:"\f003"}.phpdebugbar-fa-heart:before{content:"\f004"}.phpdebugbar-fa-star:before{content:"\f005"}.phpdebugbar-fa-star-o:before{content:"\f006"}.phpdebugbar-fa-user:before{content:"\f007"}.phpdebugbar-fa-film:before{content:"\f008"}.phpdebugbar-fa-th-large:before{content:"\f009"}.phpdebugbar-fa-th:before{content:"\f00a"}.phpdebugbar-fa-th-list:before{content:"\f00b"}.phpdebugbar-fa-check:before{content:"\f00c"}.phpdebugbar-fa-remove:before,.phpdebugbar-fa-close:before,.phpdebugbar-fa-times:before{content:"\f00d"}.phpdebugbar-fa-search-plus:before{content:"\f00e"}.phpdebugbar-fa-search-minus:before{content:"\f010"}.phpdebugbar-fa-power-off:before{content:"\f011"}.phpdebugbar-fa-signal:before{content:"\f012"}.phpdebugbar-fa-gear:before,.phpdebugbar-fa-cog:before{content:"\f013"}.phpdebugbar-fa-trash-o:before{content:"\f014"}.phpdebugbar-fa-home:before{content:"\f015"}.phpdebugbar-fa-file-o:before{content:"\f016"}.phpdebugbar-fa-clock-o:before{content:"\f017"}.phpdebugbar-fa-road:before{content:"\f018"}.phpdebugbar-fa-download:before{content:"\f019"}.phpdebugbar-fa-arrow-circle-o-down:before{content:"\f01a"}.phpdebugbar-fa-arrow-circle-o-up:before{content:"\f01b"}.phpdebugbar-fa-inbox:before{content:"\f01c"}.phpdebugbar-fa-play-circle-o:before{content:"\f01d"}.phpdebugbar-fa-rotate-right:before,.phpdebugbar-fa-repeat:before{content:"\f01e"}.phpdebugbar-fa-refresh:before{content:"\f021"}.phpdebugbar-fa-list-alt:before{content:"\f022"}.phpdebugbar-fa-lock:before{content:"\f023"}.phpdebugbar-fa-flag:before{content:"\f024"}.phpdebugbar-fa-headphones:before{content:"\f025"}.phpdebugbar-fa-volume-off:before{content:"\f026"}.phpdebugbar-fa-volume-down:before{content:"\f027"}.phpdebugbar-fa-volume-up:before{content:"\f028"}.phpdebugbar-fa-qrcode:before{content:"\f029"}.phpdebugbar-fa-barcode:before{content:"\f02a"}.phpdebugbar-fa-tag:before{content:"\f02b"}.phpdebugbar-fa-tags:before{content:"\f02c"}.phpdebugbar-fa-book:before{content:"\f02d"}.phpdebugbar-fa-bookmark:before{content:"\f02e"}.phpdebugbar-fa-print:before{content:"\f02f"}.phpdebugbar-fa-camera:before{content:"\f030"}.phpdebugbar-fa-font:before{content:"\f031"}.phpdebugbar-fa-bold:before{content:"\f032"}.phpdebugbar-fa-italic:before{content:"\f033"}.phpdebugbar-fa-text-height:before{content:"\f034"}.phpdebugbar-fa-text-width:before{content:"\f035"}.phpdebugbar-fa-align-left:before{content:"\f036"}.phpdebugbar-fa-align-center:before{content:"\f037"}.phpdebugbar-fa-align-right:before{content:"\f038"}.phpdebugbar-fa-align-justify:before{content:"\f039"}.phpdebugbar-fa-list:before{content:"\f03a"}.phpdebugbar-fa-dedent:before,.phpdebugbar-fa-outdent:before{content:"\f03b"}.phpdebugbar-fa-indent:before{content:"\f03c"}.phpdebugbar-fa-video-camera:before{content:"\f03d"}.phpdebugbar-fa-photo:before,.phpdebugbar-fa-image:before,.phpdebugbar-fa-picture-o:before{content:"\f03e"}.phpdebugbar-fa-pencil:before{content:"\f040"}.phpdebugbar-fa-map-marker:before{content:"\f041"}.phpdebugbar-fa-adjust:before{content:"\f042"}.phpdebugbar-fa-tint:before{content:"\f043"}.phpdebugbar-fa-edit:before,.phpdebugbar-fa-pencil-square-o:before{content:"\f044"}.phpdebugbar-fa-share-square-o:before{content:"\f045"}.phpdebugbar-fa-check-square-o:before{content:"\f046"}.phpdebugbar-fa-arrows:before{content:"\f047"}.phpdebugbar-fa-step-backward:before{content:"\f048"}.phpdebugbar-fa-fast-backward:before{content:"\f049"}.phpdebugbar-fa-backward:before{content:"\f04a"}.phpdebugbar-fa-play:before{content:"\f04b"}.phpdebugbar-fa-pause:before{content:"\f04c"}.phpdebugbar-fa-stop:before{content:"\f04d"}.phpdebugbar-fa-forward:before{content:"\f04e"}.phpdebugbar-fa-fast-forward:before{content:"\f050"}.phpdebugbar-fa-step-forward:before{content:"\f051"}.phpdebugbar-fa-eject:before{content:"\f052"}.phpdebugbar-fa-chevron-left:before{content:"\f053"}.phpdebugbar-fa-chevron-right:before{content:"\f054"}.phpdebugbar-fa-plus-circle:before{content:"\f055"}.phpdebugbar-fa-minus-circle:before{content:"\f056"}.phpdebugbar-fa-times-circle:before{content:"\f057"}.phpdebugbar-fa-check-circle:before{content:"\f058"}.phpdebugbar-fa-question-circle:before{content:"\f059"}.phpdebugbar-fa-info-circle:before{content:"\f05a"}.phpdebugbar-fa-crosshairs:before{content:"\f05b"}.phpdebugbar-fa-times-circle-o:before{content:"\f05c"}.phpdebugbar-fa-check-circle-o:before{content:"\f05d"}.phpdebugbar-fa-ban:before{content:"\f05e"}.phpdebugbar-fa-arrow-left:before{content:"\f060"}.phpdebugbar-fa-arrow-right:before{content:"\f061"}.phpdebugbar-fa-arrow-up:before{content:"\f062"}.phpdebugbar-fa-arrow-down:before{content:"\f063"}.phpdebugbar-fa-mail-forward:before,.phpdebugbar-fa-share:before{content:"\f064"}.phpdebugbar-fa-expand:before{content:"\f065"}.phpdebugbar-fa-compress:before{content:"\f066"}.phpdebugbar-fa-plus:before{content:"\f067"}.phpdebugbar-fa-minus:before{content:"\f068"}.phpdebugbar-fa-asterisk:before{content:"\f069"}.phpdebugbar-fa-exclamation-circle:before{content:"\f06a"}.phpdebugbar-fa-gift:before{content:"\f06b"}.phpdebugbar-fa-leaf:before{content:"\f06c"}.phpdebugbar-fa-fire:before{content:"\f06d"}.phpdebugbar-fa-eye:before{content:"\f06e"}.phpdebugbar-fa-eye-slash:before{content:"\f070"}.phpdebugbar-fa-warning:before,.phpdebugbar-fa-exclamation-triangle:before{content:"\f071"}.phpdebugbar-fa-plane:before{content:"\f072"}.phpdebugbar-fa-calendar:before{content:"\f073"}.phpdebugbar-fa-random:before{content:"\f074"}.phpdebugbar-fa-comment:before{content:"\f075"}.phpdebugbar-fa-magnet:before{content:"\f076"}.phpdebugbar-fa-chevron-up:before{content:"\f077"}.phpdebugbar-fa-chevron-down:before{content:"\f078"}.phpdebugbar-fa-retweet:before{content:"\f079"}.phpdebugbar-fa-shopping-cart:before{content:"\f07a"}.phpdebugbar-fa-folder:before{content:"\f07b"}.phpdebugbar-fa-folder-open:before{content:"\f07c"}.phpdebugbar-fa-arrows-v:before{content:"\f07d"}.phpdebugbar-fa-arrows-h:before{content:"\f07e"}.phpdebugbar-fa-bar-chart-o:before,.phpdebugbar-fa-bar-chart:before{content:"\f080"}.phpdebugbar-fa-twitter-square:before{content:"\f081"}.phpdebugbar-fa-facebook-square:before{content:"\f082"}.phpdebugbar-fa-camera-retro:before{content:"\f083"}.phpdebugbar-fa-key:before{content:"\f084"}.phpdebugbar-fa-gears:before,.phpdebugbar-fa-cogs:before{content:"\f085"}.phpdebugbar-fa-comments:before{content:"\f086"}.phpdebugbar-fa-thumbs-o-up:before{content:"\f087"}.phpdebugbar-fa-thumbs-o-down:before{content:"\f088"}.phpdebugbar-fa-star-half:before{content:"\f089"}.phpdebugbar-fa-heart-o:before{content:"\f08a"}.phpdebugbar-fa-sign-out:before{content:"\f08b"}.phpdebugbar-fa-linkedin-square:before{content:"\f08c"}.phpdebugbar-fa-thumb-tack:before{content:"\f08d"}.phpdebugbar-fa-external-link:before{content:"\f08e"}.phpdebugbar-fa-sign-in:before{content:"\f090"}.phpdebugbar-fa-trophy:before{content:"\f091"}.phpdebugbar-fa-github-square:before{content:"\f092"}.phpdebugbar-fa-upload:before{content:"\f093"}.phpdebugbar-fa-lemon-o:before{content:"\f094"}.phpdebugbar-fa-phone:before{content:"\f095"}.phpdebugbar-fa-square-o:before{content:"\f096"}.phpdebugbar-fa-bookmark-o:before{content:"\f097"}.phpdebugbar-fa-phone-square:before{content:"\f098"}.phpdebugbar-fa-twitter:before{content:"\f099"}.phpdebugbar-fa-facebook-f:before,.phpdebugbar-fa-facebook:before{content:"\f09a"}.phpdebugbar-fa-github:before{content:"\f09b"}.phpdebugbar-fa-unlock:before{content:"\f09c"}.phpdebugbar-fa-credit-card:before{content:"\f09d"}.phpdebugbar-fa-feed:before,.phpdebugbar-fa-rss:before{content:"\f09e"}.phpdebugbar-fa-hdd-o:before{content:"\f0a0"}.phpdebugbar-fa-bullhorn:before{content:"\f0a1"}.phpdebugbar-fa-bell:before{content:"\f0f3"}.phpdebugbar-fa-certificate:before{content:"\f0a3"}.phpdebugbar-fa-hand-o-right:before{content:"\f0a4"}.phpdebugbar-fa-hand-o-left:before{content:"\f0a5"}.phpdebugbar-fa-hand-o-up:before{content:"\f0a6"}.phpdebugbar-fa-hand-o-down:before{content:"\f0a7"}.phpdebugbar-fa-arrow-circle-left:before{content:"\f0a8"}.phpdebugbar-fa-arrow-circle-right:before{content:"\f0a9"}.phpdebugbar-fa-arrow-circle-up:before{content:"\f0aa"}.phpdebugbar-fa-arrow-circle-down:before{content:"\f0ab"}.phpdebugbar-fa-globe:before{content:"\f0ac"}.phpdebugbar-fa-wrench:before{content:"\f0ad"}.phpdebugbar-fa-tasks:before{content:"\f0ae"}.phpdebugbar-fa-filter:before{content:"\f0b0"}.phpdebugbar-fa-briefcase:before{content:"\f0b1"}.phpdebugbar-fa-arrows-alt:before{content:"\f0b2"}.phpdebugbar-fa-group:before,.phpdebugbar-fa-users:before{content:"\f0c0"}.phpdebugbar-fa-chain:before,.phpdebugbar-fa-link:before{content:"\f0c1"}.phpdebugbar-fa-cloud:before{content:"\f0c2"}.phpdebugbar-fa-flask:before{content:"\f0c3"}.phpdebugbar-fa-cut:before,.phpdebugbar-fa-scissors:before{content:"\f0c4"}.phpdebugbar-fa-copy:before,.phpdebugbar-fa-files-o:before{content:"\f0c5"}.phpdebugbar-fa-paperclip:before{content:"\f0c6"}.phpdebugbar-fa-save:before,.phpdebugbar-fa-floppy-o:before{content:"\f0c7"}.phpdebugbar-fa-square:before{content:"\f0c8"}.phpdebugbar-fa-navicon:before,.phpdebugbar-fa-reorder:before,.phpdebugbar-fa-bars:before{content:"\f0c9"}.phpdebugbar-fa-list-ul:before{content:"\f0ca"}.phpdebugbar-fa-list-ol:before{content:"\f0cb"}.phpdebugbar-fa-strikethrough:before{content:"\f0cc"}.phpdebugbar-fa-underline:before{content:"\f0cd"}.phpdebugbar-fa-table:before{content:"\f0ce"}.phpdebugbar-fa-magic:before{content:"\f0d0"}.phpdebugbar-fa-truck:before{content:"\f0d1"}.phpdebugbar-fa-pinterest:before{content:"\f0d2"}.phpdebugbar-fa-pinterest-square:before{content:"\f0d3"}.phpdebugbar-fa-google-plus-square:before{content:"\f0d4"}.phpdebugbar-fa-google-plus:before{content:"\f0d5"}.phpdebugbar-fa-money:before{content:"\f0d6"}.phpdebugbar-fa-caret-down:before{content:"\f0d7"}.phpdebugbar-fa-caret-up:before{content:"\f0d8"}.phpdebugbar-fa-caret-left:before{content:"\f0d9"}.phpdebugbar-fa-caret-right:before{content:"\f0da"}.phpdebugbar-fa-columns:before{content:"\f0db"}.phpdebugbar-fa-unsorted:before,.phpdebugbar-fa-sort:before{content:"\f0dc"}.phpdebugbar-fa-sort-down:before,.phpdebugbar-fa-sort-desc:before{content:"\f0dd"}.phpdebugbar-fa-sort-up:before,.phpdebugbar-fa-sort-asc:before{content:"\f0de"}.phpdebugbar-fa-envelope:before{content:"\f0e0"}.phpdebugbar-fa-linkedin:before{content:"\f0e1"}.phpdebugbar-fa-rotate-left:before,.phpdebugbar-fa-undo:before{content:"\f0e2"}.phpdebugbar-fa-legal:before,.phpdebugbar-fa-gavel:before{content:"\f0e3"}.phpdebugbar-fa-dashboard:before,.phpdebugbar-fa-tachometer:before{content:"\f0e4"}.phpdebugbar-fa-comment-o:before{content:"\f0e5"}.phpdebugbar-fa-comments-o:before{content:"\f0e6"}.phpdebugbar-fa-flash:before,.phpdebugbar-fa-bolt:before{content:"\f0e7"}.phpdebugbar-fa-sitemap:before{content:"\f0e8"}.phpdebugbar-fa-umbrella:before{content:"\f0e9"}.phpdebugbar-fa-paste:before,.phpdebugbar-fa-clipboard:before{content:"\f0ea"}.phpdebugbar-fa-lightbulb-o:before{content:"\f0eb"}.phpdebugbar-fa-exchange:before{content:"\f0ec"}.phpdebugbar-fa-cloud-download:before{content:"\f0ed"}.phpdebugbar-fa-cloud-upload:before{content:"\f0ee"}.phpdebugbar-fa-user-md:before{content:"\f0f0"}.phpdebugbar-fa-stethoscope:before{content:"\f0f1"}.phpdebugbar-fa-suitcase:before{content:"\f0f2"}.phpdebugbar-fa-bell-o:before{content:"\f0a2"}.phpdebugbar-fa-coffee:before{content:"\f0f4"}.phpdebugbar-fa-cutlery:before{content:"\f0f5"}.phpdebugbar-fa-file-text-o:before{content:"\f0f6"}.phpdebugbar-fa-building-o:before{content:"\f0f7"}.phpdebugbar-fa-hospital-o:before{content:"\f0f8"}.phpdebugbar-fa-ambulance:before{content:"\f0f9"}.phpdebugbar-fa-medkit:before{content:"\f0fa"}.phpdebugbar-fa-fighter-jet:before{content:"\f0fb"}.phpdebugbar-fa-beer:before{content:"\f0fc"}.phpdebugbar-fa-h-square:before{content:"\f0fd"}.phpdebugbar-fa-plus-square:before{content:"\f0fe"}.phpdebugbar-fa-angle-double-left:before{content:"\f100"}.phpdebugbar-fa-angle-double-right:before{content:"\f101"}.phpdebugbar-fa-angle-double-up:before{content:"\f102"}.phpdebugbar-fa-angle-double-down:before{content:"\f103"}.phpdebugbar-fa-angle-left:before{content:"\f104"}.phpdebugbar-fa-angle-right:before{content:"\f105"}.phpdebugbar-fa-angle-up:before{content:"\f106"}.phpdebugbar-fa-angle-down:before{content:"\f107"}.phpdebugbar-fa-desktop:before{content:"\f108"}.phpdebugbar-fa-laptop:before{content:"\f109"}.phpdebugbar-fa-tablet:before{content:"\f10a"}.phpdebugbar-fa-mobile-phone:before,.phpdebugbar-fa-mobile:before{content:"\f10b"}.phpdebugbar-fa-circle-o:before{content:"\f10c"}.phpdebugbar-fa-quote-left:before{content:"\f10d"}.phpdebugbar-fa-quote-right:before{content:"\f10e"}.phpdebugbar-fa-spinner:before{content:"\f110"}.phpdebugbar-fa-circle:before{content:"\f111"}.phpdebugbar-fa-mail-reply:before,.phpdebugbar-fa-reply:before{content:"\f112"}.phpdebugbar-fa-github-alt:before{content:"\f113"}.phpdebugbar-fa-folder-o:before{content:"\f114"}.phpdebugbar-fa-folder-open-o:before{content:"\f115"}.phpdebugbar-fa-smile-o:before{content:"\f118"}.phpdebugbar-fa-frown-o:before{content:"\f119"}.phpdebugbar-fa-meh-o:before{content:"\f11a"}.phpdebugbar-fa-gamepad:before{content:"\f11b"}.phpdebugbar-fa-keyboard-o:before{content:"\f11c"}.phpdebugbar-fa-flag-o:before{content:"\f11d"}.phpdebugbar-fa-flag-checkered:before{content:"\f11e"}.phpdebugbar-fa-terminal:before{content:"\f120"}.phpdebugbar-fa-code:before{content:"\f121"}.phpdebugbar-fa-mail-reply-all:before,.phpdebugbar-fa-reply-all:before{content:"\f122"}.phpdebugbar-fa-star-half-empty:before,.phpdebugbar-fa-star-half-full:before,.phpdebugbar-fa-star-half-o:before{content:"\f123"}.phpdebugbar-fa-location-arrow:before{content:"\f124"}.phpdebugbar-fa-crop:before{content:"\f125"}.phpdebugbar-fa-code-fork:before{content:"\f126"}.phpdebugbar-fa-unlink:before,.phpdebugbar-fa-chain-broken:before{content:"\f127"}.phpdebugbar-fa-question:before{content:"\f128"}.phpdebugbar-fa-info:before{content:"\f129"}.phpdebugbar-fa-exclamation:before{content:"\f12a"}.phpdebugbar-fa-superscript:before{content:"\f12b"}.phpdebugbar-fa-subscript:before{content:"\f12c"}.phpdebugbar-fa-eraser:before{content:"\f12d"}.phpdebugbar-fa-puzzle-piece:before{content:"\f12e"}.phpdebugbar-fa-microphone:before{content:"\f130"}.phpdebugbar-fa-microphone-slash:before{content:"\f131"}.phpdebugbar-fa-shield:before{content:"\f132"}.phpdebugbar-fa-calendar-o:before{content:"\f133"}.phpdebugbar-fa-fire-extinguisher:before{content:"\f134"}.phpdebugbar-fa-rocket:before{content:"\f135"}.phpdebugbar-fa-maxcdn:before{content:"\f136"}.phpdebugbar-fa-chevron-circle-left:before{content:"\f137"}.phpdebugbar-fa-chevron-circle-right:before{content:"\f138"}.phpdebugbar-fa-chevron-circle-up:before{content:"\f139"}.phpdebugbar-fa-chevron-circle-down:before{content:"\f13a"}.phpdebugbar-fa-html5:before{content:"\f13b"}.phpdebugbar-fa-css3:before{content:"\f13c"}.phpdebugbar-fa-anchor:before{content:"\f13d"}.phpdebugbar-fa-unlock-alt:before{content:"\f13e"}.phpdebugbar-fa-bullseye:before{content:"\f140"}.phpdebugbar-fa-ellipsis-h:before{content:"\f141"}.phpdebugbar-fa-ellipsis-v:before{content:"\f142"}.phpdebugbar-fa-rss-square:before{content:"\f143"}.phpdebugbar-fa-play-circle:before{content:"\f144"}.phpdebugbar-fa-ticket:before{content:"\f145"}.phpdebugbar-fa-minus-square:before{content:"\f146"}.phpdebugbar-fa-minus-square-o:before{content:"\f147"}.phpdebugbar-fa-level-up:before{content:"\f148"}.phpdebugbar-fa-level-down:before{content:"\f149"}.phpdebugbar-fa-check-square:before{content:"\f14a"}.phpdebugbar-fa-pencil-square:before{content:"\f14b"}.phpdebugbar-fa-external-link-square:before{content:"\f14c"}.phpdebugbar-fa-share-square:before{content:"\f14d"}.phpdebugbar-fa-compass:before{content:"\f14e"}.phpdebugbar-fa-toggle-down:before,.phpdebugbar-fa-caret-square-o-down:before{content:"\f150"}.phpdebugbar-fa-toggle-up:before,.phpdebugbar-fa-caret-square-o-up:before{content:"\f151"}.phpdebugbar-fa-toggle-right:before,.phpdebugbar-fa-caret-square-o-right:before{content:"\f152"}.phpdebugbar-fa-euro:before,.phpdebugbar-fa-eur:before{content:"\f153"}.phpdebugbar-fa-gbp:before{content:"\f154"}.phpdebugbar-fa-dollar:before,.phpdebugbar-fa-usd:before{content:"\f155"}.phpdebugbar-fa-rupee:before,.phpdebugbar-fa-inr:before{content:"\f156"}.phpdebugbar-fa-cny:before,.phpdebugbar-fa-rmb:before,.phpdebugbar-fa-yen:before,.phpdebugbar-fa-jpy:before{content:"\f157"}.phpdebugbar-fa-ruble:before,.phpdebugbar-fa-rouble:before,.phpdebugbar-fa-rub:before{content:"\f158"}.phpdebugbar-fa-won:before,.phpdebugbar-fa-krw:before{content:"\f159"}.phpdebugbar-fa-bitcoin:before,.phpdebugbar-fa-btc:before{content:"\f15a"}.phpdebugbar-fa-file:before{content:"\f15b"}.phpdebugbar-fa-file-text:before{content:"\f15c"}.phpdebugbar-fa-sort-alpha-asc:before{content:"\f15d"}.phpdebugbar-fa-sort-alpha-desc:before{content:"\f15e"}.phpdebugbar-fa-sort-amount-asc:before{content:"\f160"}.phpdebugbar-fa-sort-amount-desc:before{content:"\f161"}.phpdebugbar-fa-sort-numeric-asc:before{content:"\f162"}.phpdebugbar-fa-sort-numeric-desc:before{content:"\f163"}.phpdebugbar-fa-thumbs-up:before{content:"\f164"}.phpdebugbar-fa-thumbs-down:before{content:"\f165"}.phpdebugbar-fa-youtube-square:before{content:"\f166"}.phpdebugbar-fa-youtube:before{content:"\f167"}.phpdebugbar-fa-xing:before{content:"\f168"}.phpdebugbar-fa-xing-square:before{content:"\f169"}.phpdebugbar-fa-youtube-play:before{content:"\f16a"}.phpdebugbar-fa-dropbox:before{content:"\f16b"}.phpdebugbar-fa-stack-overflow:before{content:"\f16c"}.phpdebugbar-fa-instagram:before{content:"\f16d"}.phpdebugbar-fa-flickr:before{content:"\f16e"}.phpdebugbar-fa-adn:before{content:"\f170"}.phpdebugbar-fa-bitbucket:before{content:"\f171"}.phpdebugbar-fa-bitbucket-square:before{content:"\f172"}.phpdebugbar-fa-tumblr:before{content:"\f173"}.phpdebugbar-fa-tumblr-square:before{content:"\f174"}.phpdebugbar-fa-long-arrow-down:before{content:"\f175"}.phpdebugbar-fa-long-arrow-up:before{content:"\f176"}.phpdebugbar-fa-long-arrow-left:before{content:"\f177"}.phpdebugbar-fa-long-arrow-right:before{content:"\f178"}.phpdebugbar-fa-apple:before{content:"\f179"}.phpdebugbar-fa-windows:before{content:"\f17a"}.phpdebugbar-fa-android:before{content:"\f17b"}.phpdebugbar-fa-linux:before{content:"\f17c"}.phpdebugbar-fa-dribbble:before{content:"\f17d"}.phpdebugbar-fa-skype:before{content:"\f17e"}.phpdebugbar-fa-foursquare:before{content:"\f180"}.phpdebugbar-fa-trello:before{content:"\f181"}.phpdebugbar-fa-female:before{content:"\f182"}.phpdebugbar-fa-male:before{content:"\f183"}.phpdebugbar-fa-gittip:before,.phpdebugbar-fa-gratipay:before{content:"\f184"}.phpdebugbar-fa-sun-o:before{content:"\f185"}.phpdebugbar-fa-moon-o:before{content:"\f186"}.phpdebugbar-fa-archive:before{content:"\f187"}.phpdebugbar-fa-bug:before{content:"\f188"}.phpdebugbar-fa-vk:before{content:"\f189"}.phpdebugbar-fa-weibo:before{content:"\f18a"}.phpdebugbar-fa-renren:before{content:"\f18b"}.phpdebugbar-fa-pagelines:before{content:"\f18c"}.phpdebugbar-fa-stack-exchange:before{content:"\f18d"}.phpdebugbar-fa-arrow-circle-o-right:before{content:"\f18e"}.phpdebugbar-fa-arrow-circle-o-left:before{content:"\f190"}.phpdebugbar-fa-toggle-left:before,.phpdebugbar-fa-caret-square-o-left:before{content:"\f191"}.phpdebugbar-fa-dot-circle-o:before{content:"\f192"}.phpdebugbar-fa-wheelchair:before{content:"\f193"}.phpdebugbar-fa-vimeo-square:before{content:"\f194"}.phpdebugbar-fa-turkish-lira:before,.phpdebugbar-fa-try:before{content:"\f195"}.phpdebugbar-fa-plus-square-o:before{content:"\f196"}.phpdebugbar-fa-space-shuttle:before{content:"\f197"}.phpdebugbar-fa-slack:before{content:"\f198"}.phpdebugbar-fa-envelope-square:before{content:"\f199"}.phpdebugbar-fa-wordpress:before{content:"\f19a"}.phpdebugbar-fa-openid:before{content:"\f19b"}.phpdebugbar-fa-institution:before,.phpdebugbar-fa-bank:before,.phpdebugbar-fa-university:before{content:"\f19c"}.phpdebugbar-fa-mortar-board:before,.phpdebugbar-fa-graduation-cap:before{content:"\f19d"}.phpdebugbar-fa-yahoo:before{content:"\f19e"}.phpdebugbar-fa-google:before{content:"\f1a0"}.phpdebugbar-fa-reddit:before{content:"\f1a1"}.phpdebugbar-fa-reddit-square:before{content:"\f1a2"}.phpdebugbar-fa-stumbleupon-circle:before{content:"\f1a3"}.phpdebugbar-fa-stumbleupon:before{content:"\f1a4"}.phpdebugbar-fa-delicious:before{content:"\f1a5"}.phpdebugbar-fa-digg:before{content:"\f1a6"}.phpdebugbar-fa-pied-piper-pp:before{content:"\f1a7"}.phpdebugbar-fa-pied-piper-alt:before{content:"\f1a8"}.phpdebugbar-fa-drupal:before{content:"\f1a9"}.phpdebugbar-fa-joomla:before{content:"\f1aa"}.phpdebugbar-fa-language:before{content:"\f1ab"}.phpdebugbar-fa-fax:before{content:"\f1ac"}.phpdebugbar-fa-building:before{content:"\f1ad"}.phpdebugbar-fa-child:before{content:"\f1ae"}.phpdebugbar-fa-paw:before{content:"\f1b0"}.phpdebugbar-fa-spoon:before{content:"\f1b1"}.phpdebugbar-fa-cube:before{content:"\f1b2"}.phpdebugbar-fa-cubes:before{content:"\f1b3"}.phpdebugbar-fa-behance:before{content:"\f1b4"}.phpdebugbar-fa-behance-square:before{content:"\f1b5"}.phpdebugbar-fa-steam:before{content:"\f1b6"}.phpdebugbar-fa-steam-square:before{content:"\f1b7"}.phpdebugbar-fa-recycle:before{content:"\f1b8"}.phpdebugbar-fa-automobile:before,.phpdebugbar-fa-car:before{content:"\f1b9"}.phpdebugbar-fa-cab:before,.phpdebugbar-fa-taxi:before{content:"\f1ba"}.phpdebugbar-fa-tree:before{content:"\f1bb"}.phpdebugbar-fa-spotify:before{content:"\f1bc"}.phpdebugbar-fa-deviantart:before{content:"\f1bd"}.phpdebugbar-fa-soundcloud:before{content:"\f1be"}.phpdebugbar-fa-database:before{content:"\f1c0"}.phpdebugbar-fa-file-pdf-o:before{content:"\f1c1"}.phpdebugbar-fa-file-word-o:before{content:"\f1c2"}.phpdebugbar-fa-file-excel-o:before{content:"\f1c3"}.phpdebugbar-fa-file-powerpoint-o:before{content:"\f1c4"}.phpdebugbar-fa-file-photo-o:before,.phpdebugbar-fa-file-picture-o:before,.phpdebugbar-fa-file-image-o:before{content:"\f1c5"}.phpdebugbar-fa-file-zip-o:before,.phpdebugbar-fa-file-archive-o:before{content:"\f1c6"}.phpdebugbar-fa-file-sound-o:before,.phpdebugbar-fa-file-audio-o:before{content:"\f1c7"}.phpdebugbar-fa-file-movie-o:before,.phpdebugbar-fa-file-video-o:before{content:"\f1c8"}.phpdebugbar-fa-file-code-o:before{content:"\f1c9"}.phpdebugbar-fa-vine:before{content:"\f1ca"}.phpdebugbar-fa-codepen:before{content:"\f1cb"}.phpdebugbar-fa-jsfiddle:before{content:"\f1cc"}.phpdebugbar-fa-life-bouy:before,.phpdebugbar-fa-life-buoy:before,.phpdebugbar-fa-life-saver:before,.phpdebugbar-fa-support:before,.phpdebugbar-fa-life-ring:before{content:"\f1cd"}.phpdebugbar-fa-circle-o-notch:before{content:"\f1ce"}.phpdebugbar-fa-ra:before,.phpdebugbar-fa-resistance:before,.phpdebugbar-fa-rebel:before{content:"\f1d0"}.phpdebugbar-fa-ge:before,.phpdebugbar-fa-empire:before{content:"\f1d1"}.phpdebugbar-fa-git-square:before{content:"\f1d2"}.phpdebugbar-fa-git:before{content:"\f1d3"}.phpdebugbar-fa-y-combinator-square:before,.phpdebugbar-fa-yc-square:before,.phpdebugbar-fa-hacker-news:before{content:"\f1d4"}.phpdebugbar-fa-tencent-weibo:before{content:"\f1d5"}.phpdebugbar-fa-qq:before{content:"\f1d6"}.phpdebugbar-fa-wechat:before,.phpdebugbar-fa-weixin:before{content:"\f1d7"}.phpdebugbar-fa-send:before,.phpdebugbar-fa-paper-plane:before{content:"\f1d8"}.phpdebugbar-fa-send-o:before,.phpdebugbar-fa-paper-plane-o:before{content:"\f1d9"}.phpdebugbar-fa-history:before{content:"\f1da"}.phpdebugbar-fa-circle-thin:before{content:"\f1db"}.phpdebugbar-fa-header:before{content:"\f1dc"}.phpdebugbar-fa-paragraph:before{content:"\f1dd"}.phpdebugbar-fa-sliders:before{content:"\f1de"}.phpdebugbar-fa-share-alt:before{content:"\f1e0"}.phpdebugbar-fa-share-alt-square:before{content:"\f1e1"}.phpdebugbar-fa-bomb:before{content:"\f1e2"}.phpdebugbar-fa-soccer-ball-o:before,.phpdebugbar-fa-futbol-o:before{content:"\f1e3"}.phpdebugbar-fa-tty:before{content:"\f1e4"}.phpdebugbar-fa-binoculars:before{content:"\f1e5"}.phpdebugbar-fa-plug:before{content:"\f1e6"}.phpdebugbar-fa-slideshare:before{content:"\f1e7"}.phpdebugbar-fa-twitch:before{content:"\f1e8"}.phpdebugbar-fa-yelp:before{content:"\f1e9"}.phpdebugbar-fa-newspaper-o:before{content:"\f1ea"}.phpdebugbar-fa-wifi:before{content:"\f1eb"}.phpdebugbar-fa-calculator:before{content:"\f1ec"}.phpdebugbar-fa-paypal:before{content:"\f1ed"}.phpdebugbar-fa-google-wallet:before{content:"\f1ee"}.phpdebugbar-fa-cc-visa:before{content:"\f1f0"}.phpdebugbar-fa-cc-mastercard:before{content:"\f1f1"}.phpdebugbar-fa-cc-discover:before{content:"\f1f2"}.phpdebugbar-fa-cc-amex:before{content:"\f1f3"}.phpdebugbar-fa-cc-paypal:before{content:"\f1f4"}.phpdebugbar-fa-cc-stripe:before{content:"\f1f5"}.phpdebugbar-fa-bell-slash:before{content:"\f1f6"}.phpdebugbar-fa-bell-slash-o:before{content:"\f1f7"}.phpdebugbar-fa-trash:before{content:"\f1f8"}.phpdebugbar-fa-copyright:before{content:"\f1f9"}.phpdebugbar-fa-at:before{content:"\f1fa"}.phpdebugbar-fa-eyedropper:before{content:"\f1fb"}.phpdebugbar-fa-paint-brush:before{content:"\f1fc"}.phpdebugbar-fa-birthday-cake:before{content:"\f1fd"}.phpdebugbar-fa-area-chart:before{content:"\f1fe"}.phpdebugbar-fa-pie-chart:before{content:"\f200"}.phpdebugbar-fa-line-chart:before{content:"\f201"}.phpdebugbar-fa-lastfm:before{content:"\f202"}.phpdebugbar-fa-lastfm-square:before{content:"\f203"}.phpdebugbar-fa-toggle-off:before{content:"\f204"}.phpdebugbar-fa-toggle-on:before{content:"\f205"}.phpdebugbar-fa-bicycle:before{content:"\f206"}.phpdebugbar-fa-bus:before{content:"\f207"}.phpdebugbar-fa-ioxhost:before{content:"\f208"}.phpdebugbar-fa-angellist:before{content:"\f209"}.phpdebugbar-fa-cc:before{content:"\f20a"}.phpdebugbar-fa-shekel:before,.phpdebugbar-fa-sheqel:before,.phpdebugbar-fa-ils:before{content:"\f20b"}.phpdebugbar-fa-meanpath:before{content:"\f20c"}.phpdebugbar-fa-buysellads:before{content:"\f20d"}.phpdebugbar-fa-connectdevelop:before{content:"\f20e"}.phpdebugbar-fa-dashcube:before{content:"\f210"}.phpdebugbar-fa-forumbee:before{content:"\f211"}.phpdebugbar-fa-leanpub:before{content:"\f212"}.phpdebugbar-fa-sellsy:before{content:"\f213"}.phpdebugbar-fa-shirtsinbulk:before{content:"\f214"}.phpdebugbar-fa-simplybuilt:before{content:"\f215"}.phpdebugbar-fa-skyatlas:before{content:"\f216"}.phpdebugbar-fa-cart-plus:before{content:"\f217"}.phpdebugbar-fa-cart-arrow-down:before{content:"\f218"}.phpdebugbar-fa-diamond:before{content:"\f219"}.phpdebugbar-fa-ship:before{content:"\f21a"}.phpdebugbar-fa-user-secret:before{content:"\f21b"}.phpdebugbar-fa-motorcycle:before{content:"\f21c"}.phpdebugbar-fa-street-view:before{content:"\f21d"}.phpdebugbar-fa-heartbeat:before{content:"\f21e"}.phpdebugbar-fa-venus:before{content:"\f221"}.phpdebugbar-fa-mars:before{content:"\f222"}.phpdebugbar-fa-mercury:before{content:"\f223"}.phpdebugbar-fa-intersex:before,.phpdebugbar-fa-transgender:before{content:"\f224"}.phpdebugbar-fa-transgender-alt:before{content:"\f225"}.phpdebugbar-fa-venus-double:before{content:"\f226"}.phpdebugbar-fa-mars-double:before{content:"\f227"}.phpdebugbar-fa-venus-mars:before{content:"\f228"}.phpdebugbar-fa-mars-stroke:before{content:"\f229"}.phpdebugbar-fa-mars-stroke-v:before{content:"\f22a"}.phpdebugbar-fa-mars-stroke-h:before{content:"\f22b"}.phpdebugbar-fa-neuter:before{content:"\f22c"}.phpdebugbar-fa-genderless:before{content:"\f22d"}.phpdebugbar-fa-facebook-official:before{content:"\f230"}.phpdebugbar-fa-pinterest-p:before{content:"\f231"}.phpdebugbar-fa-whatsapp:before{content:"\f232"}.phpdebugbar-fa-server:before{content:"\f233"}.phpdebugbar-fa-user-plus:before{content:"\f234"}.phpdebugbar-fa-user-times:before{content:"\f235"}.phpdebugbar-fa-hotel:before,.phpdebugbar-fa-bed:before{content:"\f236"}.phpdebugbar-fa-viacoin:before{content:"\f237"}.phpdebugbar-fa-train:before{content:"\f238"}.phpdebugbar-fa-subway:before{content:"\f239"}.phpdebugbar-fa-medium:before{content:"\f23a"}.phpdebugbar-fa-yc:before,.phpdebugbar-fa-y-combinator:before{content:"\f23b"}.phpdebugbar-fa-optin-monster:before{content:"\f23c"}.phpdebugbar-fa-opencart:before{content:"\f23d"}.phpdebugbar-fa-expeditedssl:before{content:"\f23e"}.phpdebugbar-fa-battery-4:before,.phpdebugbar-fa-battery:before,.phpdebugbar-fa-battery-full:before{content:"\f240"}.phpdebugbar-fa-battery-3:before,.phpdebugbar-fa-battery-three-quarters:before{content:"\f241"}.phpdebugbar-fa-battery-2:before,.phpdebugbar-fa-battery-half:before{content:"\f242"}.phpdebugbar-fa-battery-1:before,.phpdebugbar-fa-battery-quarter:before{content:"\f243"}.phpdebugbar-fa-battery-0:before,.phpdebugbar-fa-battery-empty:before{content:"\f244"}.phpdebugbar-fa-mouse-pointer:before{content:"\f245"}.phpdebugbar-fa-i-cursor:before{content:"\f246"}.phpdebugbar-fa-object-group:before{content:"\f247"}.phpdebugbar-fa-object-ungroup:before{content:"\f248"}.phpdebugbar-fa-sticky-note:before{content:"\f249"}.phpdebugbar-fa-sticky-note-o:before{content:"\f24a"}.phpdebugbar-fa-cc-jcb:before{content:"\f24b"}.phpdebugbar-fa-cc-diners-club:before{content:"\f24c"}.phpdebugbar-fa-clone:before{content:"\f24d"}.phpdebugbar-fa-balance-scale:before{content:"\f24e"}.phpdebugbar-fa-hourglass-o:before{content:"\f250"}.phpdebugbar-fa-hourglass-1:before,.phpdebugbar-fa-hourglass-start:before{content:"\f251"}.phpdebugbar-fa-hourglass-2:before,.phpdebugbar-fa-hourglass-half:before{content:"\f252"}.phpdebugbar-fa-hourglass-3:before,.phpdebugbar-fa-hourglass-end:before{content:"\f253"}.phpdebugbar-fa-hourglass:before{content:"\f254"}.phpdebugbar-fa-hand-grab-o:before,.phpdebugbar-fa-hand-rock-o:before{content:"\f255"}.phpdebugbar-fa-hand-stop-o:before,.phpdebugbar-fa-hand-paper-o:before{content:"\f256"}.phpdebugbar-fa-hand-scissors-o:before{content:"\f257"}.phpdebugbar-fa-hand-lizard-o:before{content:"\f258"}.phpdebugbar-fa-hand-spock-o:before{content:"\f259"}.phpdebugbar-fa-hand-pointer-o:before{content:"\f25a"}.phpdebugbar-fa-hand-peace-o:before{content:"\f25b"}.phpdebugbar-fa-trademark:before{content:"\f25c"}.phpdebugbar-fa-registered:before{content:"\f25d"}.phpdebugbar-fa-creative-commons:before{content:"\f25e"}.phpdebugbar-fa-gg:before{content:"\f260"}.phpdebugbar-fa-gg-circle:before{content:"\f261"}.phpdebugbar-fa-tripadvisor:before{content:"\f262"}.phpdebugbar-fa-odnoklassniki:before{content:"\f263"}.phpdebugbar-fa-odnoklassniki-square:before{content:"\f264"}.phpdebugbar-fa-get-pocket:before{content:"\f265"}.phpdebugbar-fa-wikipedia-w:before{content:"\f266"}.phpdebugbar-fa-safari:before{content:"\f267"}.phpdebugbar-fa-chrome:before{content:"\f268"}.phpdebugbar-fa-firefox:before{content:"\f269"}.phpdebugbar-fa-opera:before{content:"\f26a"}.phpdebugbar-fa-internet-explorer:before{content:"\f26b"}.phpdebugbar-fa-tv:before,.phpdebugbar-fa-television:before{content:"\f26c"}.phpdebugbar-fa-contao:before{content:"\f26d"}.phpdebugbar-fa-500px:before{content:"\f26e"}.phpdebugbar-fa-amazon:before{content:"\f270"}.phpdebugbar-fa-calendar-plus-o:before{content:"\f271"}.phpdebugbar-fa-calendar-minus-o:before{content:"\f272"}.phpdebugbar-fa-calendar-times-o:before{content:"\f273"}.phpdebugbar-fa-calendar-check-o:before{content:"\f274"}.phpdebugbar-fa-industry:before{content:"\f275"}.phpdebugbar-fa-map-pin:before{content:"\f276"}.phpdebugbar-fa-map-signs:before{content:"\f277"}.phpdebugbar-fa-map-o:before{content:"\f278"}.phpdebugbar-fa-map:before{content:"\f279"}.phpdebugbar-fa-commenting:before{content:"\f27a"}.phpdebugbar-fa-commenting-o:before{content:"\f27b"}.phpdebugbar-fa-houzz:before{content:"\f27c"}.phpdebugbar-fa-vimeo:before{content:"\f27d"}.phpdebugbar-fa-black-tie:before{content:"\f27e"}.phpdebugbar-fa-fonticons:before{content:"\f280"}.phpdebugbar-fa-reddit-alien:before{content:"\f281"}.phpdebugbar-fa-edge:before{content:"\f282"}.phpdebugbar-fa-credit-card-alt:before{content:"\f283"}.phpdebugbar-fa-codiepie:before{content:"\f284"}.phpdebugbar-fa-modx:before{content:"\f285"}.phpdebugbar-fa-fort-awesome:before{content:"\f286"}.phpdebugbar-fa-usb:before{content:"\f287"}.phpdebugbar-fa-product-hunt:before{content:"\f288"}.phpdebugbar-fa-mixcloud:before{content:"\f289"}.phpdebugbar-fa-scribd:before{content:"\f28a"}.phpdebugbar-fa-pause-circle:before{content:"\f28b"}.phpdebugbar-fa-pause-circle-o:before{content:"\f28c"}.phpdebugbar-fa-stop-circle:before{content:"\f28d"}.phpdebugbar-fa-stop-circle-o:before{content:"\f28e"}.phpdebugbar-fa-shopping-bag:before{content:"\f290"}.phpdebugbar-fa-shopping-basket:before{content:"\f291"}.phpdebugbar-fa-hashtag:before{content:"\f292"}.phpdebugbar-fa-bluetooth:before{content:"\f293"}.phpdebugbar-fa-bluetooth-b:before{content:"\f294"}.phpdebugbar-fa-percent:before{content:"\f295"}.phpdebugbar-fa-gitlab:before{content:"\f296"}.phpdebugbar-fa-wpbeginner:before{content:"\f297"}.phpdebugbar-fa-wpforms:before{content:"\f298"}.phpdebugbar-fa-envira:before{content:"\f299"}.phpdebugbar-fa-universal-access:before{content:"\f29a"}.phpdebugbar-fa-wheelchair-alt:before{content:"\f29b"}.phpdebugbar-fa-question-circle-o:before{content:"\f29c"}.phpdebugbar-fa-blind:before{content:"\f29d"}.phpdebugbar-fa-audio-description:before{content:"\f29e"}.phpdebugbar-fa-volume-control-phone:before{content:"\f2a0"}.phpdebugbar-fa-braille:before{content:"\f2a1"}.phpdebugbar-fa-assistive-listening-systems:before{content:"\f2a2"}.phpdebugbar-fa-asl-interpreting:before,.phpdebugbar-fa-american-sign-language-interpreting:before{content:"\f2a3"}.phpdebugbar-fa-deafness:before,.phpdebugbar-fa-hard-of-hearing:before,.phpdebugbar-fa-deaf:before{content:"\f2a4"}.phpdebugbar-fa-glide:before{content:"\f2a5"}.phpdebugbar-fa-glide-g:before{content:"\f2a6"}.phpdebugbar-fa-signing:before,.phpdebugbar-fa-sign-language:before{content:"\f2a7"}.phpdebugbar-fa-low-vision:before{content:"\f2a8"}.phpdebugbar-fa-viadeo:before{content:"\f2a9"}.phpdebugbar-fa-viadeo-square:before{content:"\f2aa"}.phpdebugbar-fa-snapchat:before{content:"\f2ab"}.phpdebugbar-fa-snapchat-ghost:before{content:"\f2ac"}.phpdebugbar-fa-snapchat-square:before{content:"\f2ad"}.phpdebugbar-fa-pied-piper:before{content:"\f2ae"}.phpdebugbar-fa-first-order:before{content:"\f2b0"}.phpdebugbar-fa-yoast:before{content:"\f2b1"}.phpdebugbar-fa-themeisle:before{content:"\f2b2"}.phpdebugbar-fa-google-plus-circle:before,.phpdebugbar-fa-google-plus-official:before{content:"\f2b3"}.phpdebugbar-fa-fa:before,.phpdebugbar-fa-font-awesome:before{content:"\f2b4"}.phpdebugbar-fa-handshake-o:before{content:"\f2b5"}.phpdebugbar-fa-envelope-open:before{content:"\f2b6"}.phpdebugbar-fa-envelope-open-o:before{content:"\f2b7"}.phpdebugbar-fa-linode:before{content:"\f2b8"}.phpdebugbar-fa-address-book:before{content:"\f2b9"}.phpdebugbar-fa-address-book-o:before{content:"\f2ba"}.phpdebugbar-fa-vcard:before,.phpdebugbar-fa-address-card:before{content:"\f2bb"}.phpdebugbar-fa-vcard-o:before,.phpdebugbar-fa-address-card-o:before{content:"\f2bc"}.phpdebugbar-fa-user-circle:before{content:"\f2bd"}.phpdebugbar-fa-user-circle-o:before{content:"\f2be"}.phpdebugbar-fa-user-o:before{content:"\f2c0"}.phpdebugbar-fa-id-badge:before{content:"\f2c1"}.phpdebugbar-fa-drivers-license:before,.phpdebugbar-fa-id-card:before{content:"\f2c2"}.phpdebugbar-fa-drivers-license-o:before,.phpdebugbar-fa-id-card-o:before{content:"\f2c3"}.phpdebugbar-fa-quora:before{content:"\f2c4"}.phpdebugbar-fa-free-code-camp:before{content:"\f2c5"}.phpdebugbar-fa-telegram:before{content:"\f2c6"}.phpdebugbar-fa-thermometer-4:before,.phpdebugbar-fa-thermometer:before,.phpdebugbar-fa-thermometer-full:before{content:"\f2c7"}.phpdebugbar-fa-thermometer-3:before,.phpdebugbar-fa-thermometer-three-quarters:before{content:"\f2c8"}.phpdebugbar-fa-thermometer-2:before,.phpdebugbar-fa-thermometer-half:before{content:"\f2c9"}.phpdebugbar-fa-thermometer-1:before,.phpdebugbar-fa-thermometer-quarter:before{content:"\f2ca"}.phpdebugbar-fa-thermometer-0:before,.phpdebugbar-fa-thermometer-empty:before{content:"\f2cb"}.phpdebugbar-fa-shower:before{content:"\f2cc"}.phpdebugbar-fa-bathtub:before,.phpdebugbar-fa-s15:before,.phpdebugbar-fa-bath:before{content:"\f2cd"}.phpdebugbar-fa-podcast:before{content:"\f2ce"}.phpdebugbar-fa-window-maximize:before{content:"\f2d0"}.phpdebugbar-fa-window-minimize:before{content:"\f2d1"}.phpdebugbar-fa-window-restore:before{content:"\f2d2"}.phpdebugbar-fa-times-rectangle:before,.phpdebugbar-fa-window-close:before{content:"\f2d3"}.phpdebugbar-fa-times-rectangle-o:before,.phpdebugbar-fa-window-close-o:before{content:"\f2d4"}.phpdebugbar-fa-bandcamp:before{content:"\f2d5"}.phpdebugbar-fa-grav:before{content:"\f2d6"}.phpdebugbar-fa-etsy:before{content:"\f2d7"}.phpdebugbar-fa-imdb:before{content:"\f2d8"}.phpdebugbar-fa-ravelry:before{content:"\f2d9"}.phpdebugbar-fa-eercast:before{content:"\f2da"}.phpdebugbar-fa-microchip:before{content:"\f2db"}.phpdebugbar-fa-snowflake-o:before{content:"\f2dc"}.phpdebugbar-fa-superpowers:before{content:"\f2dd"}.phpdebugbar-fa-wpexplorer:before{content:"\f2de"}.phpdebugbar-fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
diff --git a/public/debugbar/vendor/font-awesome/fonts/FontAwesome.otf b/public/debugbar/vendor/font-awesome/fonts/FontAwesome.otf
deleted file mode 100644
index 401ec0f3..00000000
Binary files a/public/debugbar/vendor/font-awesome/fonts/FontAwesome.otf and /dev/null differ
diff --git a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.eot b/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.eot
deleted file mode 100644
index e9f60ca9..00000000
Binary files a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.eot and /dev/null differ
diff --git a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.svg b/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.svg
deleted file mode 100644
index 855c845e..00000000
--- a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.svg
+++ /dev/null
@@ -1,2671 +0,0 @@
-
-
-
diff --git a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.ttf b/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.ttf
deleted file mode 100644
index 35acda2f..00000000
Binary files a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.ttf and /dev/null differ
diff --git a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.woff b/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.woff
deleted file mode 100644
index 400014a4..00000000
Binary files a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.woff and /dev/null differ
diff --git a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.woff2 b/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.woff2
deleted file mode 100644
index 4d13fc60..00000000
Binary files a/public/debugbar/vendor/font-awesome/fonts/fontawesome-webfont.woff2 and /dev/null differ
diff --git a/public/debugbar/vendor/highlightjs/highlight.pack.js b/public/debugbar/vendor/highlightjs/highlight.pack.js
deleted file mode 100644
index cf7215a6..00000000
--- a/public/debugbar/vendor/highlightjs/highlight.pack.js
+++ /dev/null
@@ -1 +0,0 @@
-var hljs=new function(){function k(v){return v.replace(/&/gm,"&").replace(//gm,">")}function t(v){return v.nodeName.toLowerCase()}function i(w,x){var v=w&&w.exec(x);return v&&v.index==0}function d(v){return Array.prototype.map.call(v.childNodes,function(w){if(w.nodeType==3){return b.useBR?w.nodeValue.replace(/\n/g,""):w.nodeValue}if(t(w)=="br"){return"\n"}return d(w)}).join("")}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^language-/,"")});return v.filter(function(x){return j(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset"}function E(G){F+=""+t(G)+">"}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=k(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+k(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};function E(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})}if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b=D.bK.split(" ").join("|")}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?\\b("+F.b+")\\b\\.?":F.b}).concat([D.tE]).concat([D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T";U+=Z+'">';return U+X+Y}function N(){var U=k(C);if(!I.k){return U}var T="";var X=0;I.lR.lastIndex=0;var V=I.lR.exec(U);while(V){T+=U.substr(X,V.index-X);var W=E(I,V);if(W){H+=W[1];T+=w(W[0],V[0])}else{T+=V[0]}X=I.lR.lastIndex;V=I.lR.exec(U)}return T+U.substr(X)}function F(){if(I.sL&&!f[I.sL]){return k(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):g(C);if(I.r>0){H+=T.r}if(I.subLanguageMode=="continuous"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,"",true):"";if(V.rB){D+=T;C=""}else{if(V.eB){D+=k(U)+T;C=""}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+=""}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=k(X)}C="";if(W.starts){P(W.starts,"")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme "'+X+'" for mode "'+(I.cN||"")+'"')}C+=X;return X.length||1}var M=j(S);if(!M){throw new Error('Unknown language: "'+S+'"')}m(M);var I=R||M;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D=w(K.cN,D,true)}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+=""}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:k(L)}}else{throw O}}}function g(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:k(y)};var w=v;x.forEach(function(z){if(!j(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function h(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g,"
")}return v}function p(z){var y=d(z);var A=r(z);if(A=="no-highlight"){return}var v=A?c(A,y,true):g(y);var w=u(z);if(w.length){var x=document.createElementNS("http://www.w3.org/1999/xhtml","pre");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=h(v.value);z.innerHTML=v.value;z.className+=" hljs "+(!A&&v.language||"");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function e(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function j(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=g;this.fixMarkup=h;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=e;this.getLanguage=j;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("scilab",function(a){var b=[a.CNM,{cN:"string",b:"'|\"",e:"'|\"",c:[a.BE,{b:"''"}]}];return{k:{keyword:"abort break case clear catch continue do elseif else endfunction end for functionglobal if pause return resume select try then while%f %F %t %T %pi %eps %inf %nan %e %i %z %s",built_in:"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp errorexec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isemptyisinfisnan isvector lasterror length load linspace list listfiles log10 log2 logmax min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand realround sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tantype typename warning zeros matrix"},i:'("|#|/\\*|\\s+/\\w+)',c:[{cN:"function",bK:"function endfunction",e:"$",k:"function endfunction|10",c:[a.UTM,{cN:"params",b:"\\(",e:"\\)"},],},{cN:"transposed_variable",b:"[a-zA-Z_][a-zA-Z_0-9]*('+[\\.']*|[\\.']+)",e:"",r:0},{cN:"matrix",b:"\\[",e:"\\]'*[\\.']*",r:0,c:b},{cN:"comment",b:"//",e:"$"}].concat(b)}});hljs.registerLanguage("xml",function(a){var c="[A-Za-z0-9\\._:-]+";var d={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"};var b={eW:true,i:/,r:0,c:[d,{cN:"attribute",b:c,r:0},{b:"=",r:0,c:[{cN:"value",v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html"],cI:true,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"",rE:true,sL:"css"}},{cN:"tag",b:"
{% block javascript %}{% endblock %}
- {{ debugBarJs()|raw }}